We are currently preparing to build a workflow capability in within our application leveraging the Activiti Process Engine API to offer the following functionality to our users:
- Ability to define their own BPMN models and upload them to our system. The idea here is users can link our process together with manual steps (e.g. approval) in anyway that matches their own internal processes. These models can be versioned over time so users can simply update a BPMN with a newer version and have it take effect at a point in time.
- Ability to include the initiation of our own processes within their BPMN models. With Activiti 6 we planned on using a Java Service Task for this purpose. The expected inputs would be things like the process name (within our system - likely injected as a field at design time) and some identifying values such as a party ID. The output would be a URL that is read by our application and used to launch the correct page for the process they defined in the task.
- Ability to initiate and progress process instances from our application (i.e. we do not leverage Activiti Forms).
- Ability to present users with their own in boxes.
- Ability to set up queues and assign users to queues so they can pick up their own tasks or have the system assign tasks to them.
With Activiti 6 implementing the above seems pretty straight forward. Point 1 is implemented by utilizing the RepositoryService.
Point 2 is implemented by implementing a JavaDelegate and publishing how the BPMN XML should look to activate it correctly (later our UI will handle this correctly under the covers).
Point 3 is all us on the UI side with calls to the REST end points Activiti 6 exposes.
Point 4 is all us on the UI side with calls to get the correct list of tasks via the Activiti 6 end points.
Point 5 we expect to map queues to groups.
With Activiti 7 the following is not so clear:
- Applications are now deployed to Runtime Bundles that are immutable. If this is the case how do we allow our users to update their BPMN models? Will we need to build a mechanism that effectively provisions a new Runtime Bundle with all the existing BPMN models and the newly updated model the user uploaded?
- It's not clear to me what will happen to Java Service Tasks. Should we migrate them to plain Service Tasks and build cloud connectors? Can we continue to use Java Service Tasks or are they being deprecated?
Points 3 - 5 look OK.
More broadly should we push out our implementation plans to when Activiti 7 is stable and to avoid any sunk costs in consuming Activiti 6 using mechanisms that will change in Activiti 7?
Thanks in advance,