I've being working with the Human Task module since I've started with my first steps in the jBPM community more than 3 years ago. Now it's time to take this component to the next level.
This wiki page describes the features and improvements that I will be tackling down on the next few months. If you have feedaback about this roadmap please leave a comment here or contact me.
Most of the changes and new features comes from people that is using jBPM or Drools and the Human Task module to handle Human Interactions, so feel free to drop a your suggestions or features that you would like to see in the short term.
I've divided the work into two different sides:
- External Improvements :
- Starting from the Local Task Service I will be focused in the following topics
- Transport improvements (probably using apache camel) and integration with different environments (Application Server, Servlet Containers)
- Internal Refactorings
Notice that the External Changes will happen gradually and in parallel with the internal reviews.
I've added my personal priority, but feel free to leave a comment if you have another topics or if you feel that one of these bullets needs to be prioritized.
(10 is Top Priority and 1 Low)
Review Task, TaskData and I18N structures and queries
A deep process of documentation and review of the core data structures that are being used by the module will be done. The main focus
of this revision is to improve these structures to be easily accessed and work in the best way possible. The queries associated to these entities
will be reviewed, extended and documented as necessary. Migration scripts should be provided for migrating the old structures to the new ones in case that new structures
modifies core fields.
A detailed documentation about these structures and the generated tables should be provided by this revision.
A categorization about the provided queries should also be included to identify missing bits.
A set of mock task structures and tests for the queries should be provided to guarrantee the expected results.
Update: Based on revisions to the WS-HT specification and the current structures, I've started to belive that including the concept of
TaskDefinition will help us to create a simplier API, a simple deployment and instantiation mechanism and the relationship between the
different pieces of information that are kept.
This will help us to create simple queries on TaskInstances and more straight forward mechanisms.
All the Presentation, Assignment and delegation related fields can be extracted from the task itself and query only when an operation is executed.
For rendering the only information that matters is the one related with each particular task instance. We can avoid the need of querying for all the
other bits of information.
Update 2: https://community.jboss.org/wiki/HumanTaskAPIAndDataStructuresProposal
Salaboy Priority: 9
Admin Operations and Queries Improvements
All the administrative operations will be centralized in one place. Removing, archiving and querying finished tasks, and all the associated data.
These operations will include:
- Archive Finished Tasks
- Delete Finished Tasks
- Get all the finished tasks by Process instance
- Get all the finished tasks by Process Definition
- Etc.
Salaboy Priority: 7
Task Events and Queries
Provide a mechanisms to record all the events derived by the Task interactions.
The WS-HT Specification defines 30 events that will be emited by the Human Task component depending on the different interactions against a human task instance.
A mechanism to record and query these events will be implemented.
Salaboy Priority: 7
Callbacks Mechanisms Review
The main focus of this review is to extend and abstract the current methods that are being used for registering callabacks from third party components that wants to
keep track of the tasks' lifecycle.
Having different strategies for setting up callbacks will decouple the responsability for this module to decide how to contact the interested components. Providing
an interface to implement these callbacks in an application dependant way will allow us to describe best practices depending on the third party application requirements.
Salaboy Priority: 6
Topic included here also: https://community.jboss.org/wiki/HumanTaskAPIAndDataStructuresProposal
Task Definition Deployment and Instantiation mechanisms
The WS-HT specification defines to phases to Deploy a task definition and then to create an instance for a specific task definition.
This feature will allow us to have global tasks definitions that can be instantiated multiple times once we get a definition deployed. This mechanism
will give us a fine grained control about who creates a task and how the interactions are done.
Salaboy Priority: 4
Topic included here also: https://community.jboss.org/wiki/HumanTaskAPIAndDataStructuresProposal
LifeCycle Hooks
A flexible mechanism to define and plug your own task lifecycles will be provided, increasing the flexibility of the Human Task module to fit more simpler and more complex scenarios.
Salaboy Priority: 4
Sub Tasks and Ad Hoc Sub Tasks Creation
Having a good and flexible mechanisms for creating sub tasks is a very important feature to have and to show. It will allows us to have new tasks defined on the fly depending on
a parent User Task defined in our business processes.
Salaboy Priority: 6