OV SD 4.5 Notifier: Менеджер уведомлений для HP OpenView Service Desk (краткое техническое описание)
Описание программы находится на Хабрахабре.
Скачать руководство пользователя и саму программу можно с Bitbucket.
Данная статья содержит технические детали реализации программы. Она будет полезна тем, кто захочет адаптировать её для своей организации.

Необходимые библиотеки и файлы

Программа основана на web-api.
Поэтому для начала требуется его сгенерировать. Выполняем скрипт:
cd %SD_CLIENTHOME%
mkdir webapi
jview /cp lib/servicepack.jar; lib/util.jar; lib/hotfix.jar; lib/common.jar; lib/ui.jar; lib/JClark.zip com.hp.util.AppGenWebApi webapi
, где webapi - каталог для сгенерированных исходных кодов.
В появившемся окне вводите свой логин и пароль и ждете завершения операции.
Далее по инструкции itsm008292.

Для работы программы также понадобятся библиотеки: Log4j, JavaMail, SWT, Velocity.

В рабочем каталоге программы должны находится файлы:
conf/log4j.xml — настройки логирования
conf/ovsd45notifier.properties — настройки программы
conf/mail.vm — шаблон почтового уведомления
log — каталог для логирования.

Структура программы

Программу можно разделить на четыре основные части.
  1. Основной поток — это главный Shell программы. По его части - иконка в области уведомлений, хранение полученных и не просмотренных уведомлений, отображение уведомлений. Сюда можно отнести классы: TrayManager, NoticeManager, Notification.
  2. Мониторы — отвечают за получение заявок. Передают заявки для уведомления в TrayManager и в почту.
  3. Модуль работы с почтой — работает с почтой.
  4. Классы для работы с Service Desk — управление сессией, получение данных по заявке.

Запуск программы происходит в классе Notifier. Он настраивает логирование, создает TrayManager, запускает потоки мониторов.

TrayManager создает иконку в области уведомлений и ждет появления заявок. Заявки передаются от монитора с помощью статического метода

static void flash(List<ServiceCall> serviceCalls)

TrayManager сохраняет поступившие заявки и при необходимости удаляет их. Для отображения заявок он обращается к NoticeManager.