Plugins everywhere! Joget Workflow v3 provides an improved plugin architecture that supports both normal Java and dynamic OSGI plugins.
Plugin Types in v3
Process plugins
- Process tool plugins to integrate with external systems
- Process participant plugins for process related participant mapping
- Deadline plugins for handling process related deadlines
Form plugins
- Form element plugins to extend types of fields available in a form
- Form validator plugins to extends ways of validating form data
- Form data binder plugins to extend methods of loading and storing data in a form
Datalist plugins
- Datalist binder plugins to extend methods of loading data for a list e.g. querying from an external SQL database
- Datalist action plugins to extend methods of executing an action on list items e.g. deleting a record
- Datalist format plugins to extends ways of formatting column data
Userview plugins
- Userview menu plugins to extend the types of pages available in a userview
- Userview theme plugins to change the UI design for a userview
- Userview permission plugins to handle permissions and access rights in a userview
General plugins
- DirectoryManager plugins to integrate users from external systems e.g. Active Directory or LDAP
- Audit trail plugins for system-related functions eg capture reporting data
- Hash variable plugins to extend support for processing of hash variables
Compatibility with v2
Due to the major changes in the app structure in v3 compared to v2, it will be highly unlikely that v2 plugins will be directly compatible in v3.
So existing plugins written for v2 will need to be rebuilt using the v3 structure and Java API.
Development Approach
The method of developing a v3 plugin remains the same as described in Developing Plugins. However, there is an additional feature in that you now have an option of using standard Java classes which are read directly from the classpath. The following table highlights the different approaches:
Dynamic OSGI Plugin |
Standard Java Plugin |
---|---|
Build as an OSGI JAR bundle |
Build as a standard Java JAR |
Deploy JAR using the Manage Plugins in the Web Console |
Make JAR available in the Java classpath e.g. place it under WEB-INF/lib |
Supports dynamic loading/unloading/reloading without restarting |
Requires restarting the JVM for deployment or changes |
Runs in isolated mode thus prevents library version conflict with base libraries or other plugins |
May cause library version conflicts with base libraries or other plugins |
More difficult to develop and test due to OSGI configuration and isolation |
Easier to develop and test using normal Java classes and libraries |
v3 supports either type of plugin, whereas v2 only supports OSGI plugins. The type of plugin to use depends on the actual scenario and requirements.