Version 3

    JBPM Team Meeting Nov 3rd – Nov 5th


    Monday November 3rd



    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





    Thomas raises his issues:

    • Blocking call issue when creating/signalling processes

    • Deployment / ESB interaction issue

    • Real parallellism in arbitrary complex processes


    • 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



    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 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.



    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



    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.



    • 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



    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


    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
      • Inclusion of the following process constructs

        • processes (<process/>)

        • start events (<start/>)

        • states == wait tasks (<state/>)

        • exclusive gateway (<exclusive/>)

        • sequence flow (<flow/>

         <start name='A'>
           <flow to='B'/>
         <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']/>
         <state name='C'>
           <flow to='E'/>
         <exclusive name='D'>
           <handler class=''>
         <end name='E'/>
      • 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)