Lotus Notes + Почта России


У Почты России имеется API для отслеживания посылок, регистрация для частного лица бесплатная, но в день можно сделать только 100 запросов. Хотите больше, надо заключать договор.

Техническое описание здесь https://tracking.pochta.ru/specification

Мне необходимо было организовать отслеживание отправлений непосредственно в Lotus Notes. Для этого я разработал агента на Java и запускал его на сервере, отправлений было не очень много, по этому я укладывался в рамки 100 запросов.

Из странного, трек который отдавал сервис не всегда совпадает с треком который выдается на сайте. Объяснение только одно, базы разные.

Пример можно скачать по ссылке: Download NSF

ActiveMQ and Lotus Notes


Использование сервиса очередей в приложениях Lotus Notes и Lotus Domino значительно упрощают жизнь разработчикам.

Это позволяет изолировать приложения друг от друга, а так же интегрировать с другими платформами. Надежность и отказоустойчивость тоже играют большое значение, вы перекладываете на очереди заботу о доставке и сохранности вашего послания/транзакции или факта наступления события.

Ниже я приведу пример демонстрационного приложения которое имитирует работу универсального нумератора. Предположим, у Вас есть три приложения которым требуется уникальная нумерация своих событий (регистрация писем, событий в логе и т.д.). Приложение, делает запрос в очередь со своим идентификатором, это сообщение считывается программой нумератором, она обрабатывает запрос и выдает номер, размещая ответ в другой очереди, приложение уже ждет ответа и слушает эту очередь, как только в нее появится ответ, приложение считывает его и использует для своих нужд.

Кажется, что это все сложно, но вы изолируете друг от друга две системы, приложению не требуется права на запись в файл не надо заботиться о миграции подсистем, вы всегда можете переместить нумератор на другой сервер изменив запись в DNS.

Рецепт быстрого приготовления:

Скачайте ActiveMQ и установите на свой компьютер или сервер.

В настройках Lotus Notes необходимо разрешить выполнять java приложения в файле C:\Program Files\IBM\Lotus\Notes\jvm\lib\security\java.policy в самый конец файла добавьте:

grant { permission java.security.AllPermission; };

Скопируйте библиотеку C:\activemq\activemq-all-5.15.3.jar в C:\Program Files\IBM\Lotus\Notes\jvm\lib\ext

Перезапустите Lotus Notes, для того, чтобы заработала новая политика и загрузилась библиотека

Скачайте пример на Lotus Notes numerator

  1. Откройте приложение
  2. Перейдите в представление «Apps»
  3. Выделите настройку приложения «App2»
  4. Запустите агента «Actions->App->set app.in» для загрузки запроса номера из центрального «нумератора»
  5. Запустите агента «Actions->GetAgent» — он считывает запрос из очереди «app.in» находит по идентификатору приложения настройку в которой храниться последний выданный номер, получает следующий номер и размещает его в очереди «app.out»
  6. Выделите настройку «App2» и запустите агента «Actions->App->get app.out» который  считывает из очереди запись и записывает полученный номер в настройку.

http://activemq.apache.org/

Lotus Notes and Java and iText and cyrillic


Эта первая публикация из серии Lotus Notes и Java и посвящается, как создать PDF и вывести в него кирилический текст из документов Lotus Notes.

Для этого нам потребуется библиотека iText

Проблема с этой библиотекой в том, что шрифты используемые в этой библиотеки не содержат кириллических букв и нам потребуется шрифт с кириллицей, его можно найти в каталоге c:\windows\fonts\arial.ttf

В демонстрационной базе я создал уже готовый агент куда импортировал библиотеку и шрифт.


String FONT_LOCATION = "arial.ttf";
BaseFont baseFont = BaseFont.createFont(FONT_LOCATION, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(baseFont, Font.DEFAULTSIZE, Font.NORMAL);

DocumentCollection dc =
agentContext.getUnprocessedDocuments();
Document doc = dc.getFirstDocument();
while (doc != null) {
document.add( Chunk.NEWLINE );
document.add(new Phrase("Документ UNID:"+doc.getUniversalID(), font));
document.add( Chunk.NEWLINE );
document.add(new Phrase("форма: "+doc.getItemValueString("Form"), font));
document.add( Chunk.NEWLINE );
document.add(new Paragraph(doc.getItemValueString("Subject"), font));
document.add( Chunk.NEWLINE );
doc = dc.getNextDocument();

}

В результате выполнения агента на выделенных документах, вы получите PDF файл расположены в каталоге c:\temp

Скачать пример | Download Demo