TaskNotifier Developer guide ru
RUNA WFE. Клиент-оповещатель. Руководство разработчика.
Версия 2.3
© 2004-2009, ЗАО “Руна ”. RUNA WFE является системой с открытым кодом и распространяется в соответствии с LGPL лицензией (http://www.gnu.org/licenses/lgpl.html).
Структура проекта
lib – дополнительные библиотеки
nsis – файлы сборки
resources – настройки приложения
resources/img – картинки для UI
src – исходники проекта
Архитектура
Приложение работает с системой RuneWFE по «двум каналам» : RMI и HTTP.
Аутентификация происходит как по HTTP, так и по RMI.
В случае HTTP можно использовать: ввод логин и пароля, NTLM, Kerberos (используются возможности браузера).
В случае RMI можно использовать: ввод логин и пароля, Kerberos (Java GSS API).
При работе по RMI используются 2 интерфейса:
AuthenticationServiceDelegate (для аутентификации) и ExecutionServiceDelegate (для проверки новых задач).
Приложение осуществляет 2 типа проверки: периодическая и принудительная. Первая происходит по таймауту, вторая – по события MouseOver в System tray.
При сборке приложения используется NSIS (NullSoft Installation System), для того чтобы в итоге получить EXE файл..
Описание классов
ru.runa.notifier.PlatformLoader
Стартовый класс приложения. При старте показывает сплеш (картинку) в другом Shell’е, после инициализации запускает другой Shell с поддержкой system tray.
ru.runa.notifier.GUI
Главный класс графической оболочки приложения, создает Browser, вешает обработчики событий на 3 правые кнопки в верхнем углу экрана.
ru.runa.notifier.tray.SystemTray
Обеспечивает поддержку в system tray. Содержит обработчики событий system tray.
ru.runa.notifier.tray.SystemTrayAlert
Реализует всплывающее окно возле system tray. Содержит функции отрисовки этого окна. Вызывается при необходимости уведомить пользователя о новых задачах.
ru.runa.notifier.checker.TaskChecker
Обеспечивает периодическую (TimerTask) и принудительную (SystemTray) проверку новых задач.
ru.runa.notifier.auth.LoginHelper
Класс служит для аутентификации в системе RuneWFE по протоколу Kerberos. В случае неуспешной аутентификации умеет выводить диалоговое окно.
ru.runa.notifier.auth.LoginModuleResources
Служит контейнером для настроек kerberos_module.properties
ru.runa.notifier.auth.LoginConfiguration
Конфигурация для аутентификации
org.eclipse.swt.widgets.STrayItem
Класс для обработки сообщений SWT. Создан для возможности реагирования на события MouseOver.
ru.runa.notifier.util.ExtendedThread
Используется классом SystemTrayAlert
ru.runa.notifier.util.WidgetsManager
Класс – помощник
ru.runa.notifier.util.ResourcesManager
Класс для загрузки и хранения значений application.properties
ru.runa.notifier.util.LayoutsManager
Класс – помощник, используется классом SystemTrayAlert
ru.runa.notifier.util.ImageManager
Класс – менеджер по работе с картинками (загрузка, выгрузка)
Настройка приложения
kerberos_module.properties
appName=com.sun.security.jgss.initiate
moduleClassName=com.sun.security.auth.module.Krb5LoginModule
useTicketCache=true
doNotPrompt=true
debug=false
serverPrincipal=WFServer
appName – название логин-модуля
moduleClassName – класс логин-модуля
useTicketCache – использовать ли кеш для билетов Kerberos
doNotPrompt – не использовать пользовательский ввод в любой ситуации
debug – дополнительное логирование при аутентификации
serverPrincipal – логин с серверной стороны (конфигурируется в АД)
application.properties
Все русскоязычные значения задаются в кодировке ANSI
application.name, popup.newtasks, user.name, user.password, login.message,
retry.message, error.login, error.internal, popup.no.tasks, popup.tease,
popup.error, menu.open, menu.exit – локализованные сообщения пользователя
server.url - URL сервера (Пример: http://localhost:8080/wfe) login.relative.url – начальная страница при запуске системы (аутентификация) (Примеры: /login.do – форма для ввода логина и пароля; /ntlm.do – аутентификация по NTLM; /krblogin.do - аутентификация по Kerberos; ) start.relative.url – страница с задачами (Пример: /manage_tasks.do?tabForwardName=manage_tasks)
check.tasks.timeout – Таймаут проверки новых задач, мс
check.tasks.min_interval – Минимальный таймаут для принудительной проверки новых задач, мс
authentication.type – задает тип аутентификации по RMI (возможные значения userinput, kerberos)
infopath.submit.button.name – Название кнопки запуска формы InfoPath infopath.cancel.button.name – Название кнопки отмены формы InfoPath
(Только для аутентификации по логину и паролю) userinput.default.login – логин по умолчанию, рекомендуется оставить пустым userinput.default.password – пароль по умолчанию, рекомендуется оставить пустым