TaskNotifier Developer guide
RUNA WFE. Task Notifier Developer’s guide.
Version 3.0
© 2004-2009, ZAO Runa. RUNA WFE is an open source system distributed under a LGPL license (http://www.gnu.org/licenses/lgpl.html).
Project structure
lib – additional libraries
nsis – build files
resources – application settings
resources/img – pictures for UI
src – project source files
Architecture
This application works with the RuneWFE system through two "channels": RMI and HTTP.
Authentication can be performed both over HTTP and RMI.
For HTTP you can use the following authentication methods: user name and password, NTLM, Kerberos (browser functionality is used).
For RMI you can use the following authentication methods: user name and password, Kerberos (Java GSS API).
For RMI the following two interfaces are used:
AuthenticationServiceDelegate (for authentication) and ExecutionServiceDelegate (to check new tasks).
This application performs two types of checking: periodic and requested. The former is performed after a timeout, the latter – on MouseOver events in the System tray.
The application is built with NSIS (NullSoft Installation System) to get an EXE file in the end.
Description of Classes
ru.runa.notifier.PlatformLoader
Start class of the application. When started, it shows a splash (a picture) in another Shell and after initialization it starts another Shell with support of system tray.
ru.runa.notifier.GUI
The main class of the application graphical shell. Creates a Browser and attaches event handlers to the three buttons in the top right corner of the screen.
ru.runa.notifier.tray.SystemTray
Provides support in system tray. Contains system tray event handlers.
ru.runa.notifier.tray.SystemTrayAlert
Implements a pop-up window near system tray. Contains functions for drawing this window. Called when it is necessary to notify the user about new tasks.
ru.runa.notifier.checker.TaskChecker
Provides periodical (TimerTask) or requested (SystemTray) checking of new tasks.
ru.runa.notifier.auth.LoginHelper
This class performs Kerberos authentification in a RuneWFE system. In case authentication fails, it displays a dialog window.
ru.runa.notifier.auth.LoginModuleResources
Used as container for kerberos_module.properties settings.
ru.runa.notifier.auth.LoginConfiguration
Configuration for authentification.
org.eclipse.swt.widgets.STrayItem
SWT message event handler class. Designed to respond to MouseOver events.
ru.runa.notifier.util.ExtendedThread
Used by the SystemTrayAlert class.
ru.runa.notifier.util.WidgetsManager
Helper class.
ru.runa.notifier.util.ResourcesManager
A class to liad and store application.property values.
ru.runa.notifier.util.LayoutsManager
A helper class, used by the SystemTrayAlert class.
ru.runa.notifier.util.ImageManager
A manager class to handle images (load, unload).
Application Configuration
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 – login module name
moduleClassName – login module class
useTicketCache – whether to use cache for Kerberos tickets
doNotPrompt – do not use user input in any situation
debug – additional logging for authentication
serverPrincipal – login from the server side (configured in AD)
application.properties
All Russian values are specified in ANSI coding.
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 – localized user messages
server.url – server URL
(Example: http://localhost:8080/wfe)
login.relative.url – a starting page of the system (an authentification page)
(Examples:
/login.do – a form for entering user name and password;
/ntlm.do – NTLM authentification;
/ntlm.do – Kerberos authentification;
)
start.relative.url – a page with tasks
(Example: /manage_tasks.do?tabForwardName=manage_tasks)
check.tasks.timeout – Timeout for checking for new tasks, ms
check.tasks.min_interval – Minimal timeout for forced checking of new tasks, ms
authentication.type – sets authentification type for RMI (possible values are userinput, kerberos)
infopath.submit.button.name – The name of the button for running InfoPath form
infopath.submit.button.name – The name of the button for InfoPath form cancellation
(Only for username and password authentification)
userinput.default.login – default login name, recommended to left blank
userinput.default.login – default password, recommended to left blank