i've done some work to refactor the task component:
1) i've unified the resource loading of wire bindings and other resources in task component as i did previously in pvm and other components (nothing to worry about)
2) i've extracted variables and timers from pvm ExecutionImpl into a new ScopeInstanceImpl class. Now ExecutionImpl and TaskImpl both inherit from ScopeInstanceImpl. That way the strategy to deal with variables and timers is unified/leveraged between executions and tasks.
The clue will be to map the variables and timers in the task entity with a join-table.
In case the task component is not used, that means that the task mappings are not included. That should not change the schema of the PVM tables. Suppose that you would map the variables and timers related to a task without a join-table, then this would result in an extra column in the JBPM_VARIABLE and JBPM_JOB tables. That column would disappear in case the task mappings are not present.
So all of this is to make sure that the PVM schema remains as is when we add/remove optional components like the task component.