As you might have seen we are currently working on adding a CMMN 1.1 engine to the Flowable project. CMMN needs tasks, variables, timers, identity links etc as well, so we have been working to separate tasks, variables, jobs and identity links in separate services. This makes the BPMN Engine a lot cleaner, and separates reusable components in modules. There are no database changes needed for this.
The new modules do have new package names because each module has its own package (and to our understanding it’s needed for the OSGi support). So for example, the Task interface has moved from org.flowable.engine.Task to org.flowable.task.service. And TaskEntity has moved from org.flowable.engine.impl.persistence.entity.TaskEntity to org.flowable.task.service.impl.persistence.entity.TaskEntity.
We also needed to remove the direct dependency to Execution and ExecutionEntity in Task, VariableInstance and Job, because these modules can’t depend on a BPMN specific concept. This should not cause any major issue, because you still set a variable on a task for example, or get a process instance or execution id that you then use to get the ExecutionEntity instance via the RuntimeService or the lower level ExecutionEntityManager.
What do you think about these changes? Do you agree with the approach and strategy that is being used here? If not, what would you like to change? Looking forward to get feedback on this!