JBPM Team Meeting Nov 3rd – Nov 5th
Monday November 3rd
Welcome
The meeting starts by Tom welcoming everybody and a proposal of the meeting for the next 3 days:
1st day:
discussing the concrete issues everybody has
broad discussion of the future of jBPM
2nd day:
jPDL 4
Task management in jBPM 4
3rd day:
Roadmap
Issues
Thomas raises his issues:
Blocking call issue when creating/signalling processes
Deployment / ESB interaction issue
Real parallellism in arbitrary complex processes
Answers:
Blocking call is tackled by using asynchronous continuations in the process definition. Asynchronous continuations could be made the default behaviour in jBPM 4.
The ESB interaction problems are acknowledged and they are solved already in the jBPM 4 codebase. Nested execution for activities solves this issue.
Real parallellism is not essential for State Machines
API
The way proposed by Thomas to work with the API is the following:
ProcessEngine engine = Configuration.getProcessEngine(); ProcessDefinitionService pdService = engine.getService(ProcessDefinitionService.class): ProcessDefinition pd = pdService.createProcessDefinition(XML);
Process definitions are immutable, stateful (contain properties) and persistent entities.
Highly debated is the inclusion of deployment:
deployment = processService.createDeployment(processDefinition);
The process factory will be the only entry point for creating processes.
Tom sais: There will not be a single jBPM API. As a matter of fact the API will consist of a number of related but different API's
Persistent API: responsible for retrieving definitions and instances and for changing both of these when needed
The Client API is responsible for bringing processes from one state to another
The Activity API offers functionality to implement activity behaviour.
The EventListener API offers functionality to hook in and listen to different events happening at process execution.
Tom decides that he will take ownership of the API and that he will provide one that takes these concepts into account and thus is conceptually equivalent with the input given now as well as later in the meeting.
Deployment
Deployment in jBPM 4 should be made more compliant to the way artifacts are deployed in the Jboss AS. For this it following issues need to be solved:
Deployers need to be able to abort a deployment if they decide that the process is already deployed.
There should be a way to compare two or more deployments: are they the same or not
Quit deployment through the console? Is this needed/necessary?
The classloading issues around deployment need to be resolved
Classes should be scoped by ProcessInstance
The focus will be on ESB style deployment
Assumption will be that there is only one process engine.
No classes in the database, versioning as in ESB.
Persistence
Tom will do a reevaluation of the Hibernate vs. JPA choice. The idea is to expose only JPA in the API.
A list of JPA showstoppers will be compiled
For these showstoppers, issues will be created to try and resolve them
Migration
The definition of a migration path is essential for our current installation base. Users will not be happy when we don't do anything for them. As for the priority, it does not need to be included with the 4.0 GA release but certainly in one of the subsequent releases. There are 3 different aspects to migration:
Code migration:
users will be prepared to migrate code when they perform a major upgrade
Migration of the XML (Process definitions)
Should be not that hard.
Maybe make use of a XSLT?
Database migration
Hardest part!
The most viable path to realize this is import/export
Action item: Check with services (Sacha/François) what our options are.
Conclusions:
starting from 4.0.0
Micro versions: database stability
Minor versions: database upgrade
Macro versions: database coversion
between 3.x and 4.0
Migration path for XML
From 4.0.x => import/export
seek approval for this with management
Tuesday November 4th
JPDL
A lot of discussion about the adoption of BPMN.
Conclusions of the discussion:
The primary goal is not try to implement executable BPMN
We will adopt BPMN terminology wherever there is a similar concept in JPDL and focus on areas where concepts are matching
The scope for the first iteration will be defined on Wednesday
GWT Console
Heiko demonstrates the new GWT console by means of a geeky projection solution ;-)
The roadmap will contain the following:
Release of Januari 1st
replace the functionality of the JSF console in jBPM 3
Release of March 1st
Inclusion of the console in jBPM 4 alpha 2
Documentation of jBPM 4
There will be two sets of documentation:
User's Guide (API guide?) : This set of docs will contain the supported concepts.
Developer's Guide (jBPM 4 guide) : This guide will contain all the advanced topics.
We need to determine if it's possible to create domentation in which we do not rely on hibernate but on JPA concepts. Ths is related to the persistence issue of Monday 3rd .
Task Management
Tom sketches his vision to include a far more powerful Task Management module. This module will include the possibility of task hierarchies and ad hoc processes.
This module has to be included in jBPM 4.0.0 GA
It will be included in the roadmap targetted for March 1st .
Wednesday November 5th
Roadmap
The roadmap will consistently be focused on bi-monthly releases.
3.x branch
3.3.0 GA release on November 10th
well defined QA matrix
predictable release cycle
inclusion of installer
bugfixes
3.3.1 on Januari 1st
new GWT console
bugfixes
3.3.2 on March 1st
bugfixes
4.x branch
4.0.0 alpha1 (Januari 1st )
Inclusion of the following API concepts:
- Configuration
ProcessEngine
ProcessDefinitionService
ProcessBuilder
ProcessInstance or Process
Execution of Token
- StartEvent with no Trigger
- EndEvent with no Result
- WaitState
- Exclusive Gateway
- Sequence Flow
- Configuration
Inclusion of the following process constructs
processes (<process/>)
start events (<start/>)
states == wait tasks (<state/>)
exclusive gateway (<exclusive/>)
sequence flow (<flow/>
<process> <start name='A'> <flow to='B'/> </start> <exclusive name='B' [expr='outcome']> <flow to='C' [expr='expr1'] [name='accept']/> <flow to='E' [expr='expr2'] [name='reject']/> <flow to='D' [default='true'] [name='unknown']/> </exclusive> <state name='C'> <flow to='E'/> </state> <exclusive name='D'> <handler class='foo.bar'> <config> any </config> </handler> </exclusive> <end name='E'/> </process>
The GPD will support the BPMN notation for these concepts and they will be documented as such in the documentation.
Definition of the Task Management component
4.0.0 alpha2 (March 1st )
Integration between GPD, runtime and new GWT console. At this point there should be a 'suite' download like there is one for 3.3.0
Task Management inclusion through task node
4.0.0 beta1 (May 1st )
Fully featured JPDL? (later)
Comments