jBPM 4 Tom Baeyens  JBoss, Red Hat
Agenda What is jBPM jBPM 4 Goals jBPM 4 Use Cases
Tom Baeyens Lead and founder of JBoss jBPM Consulting for numerous BPM projects Bringing BPM mainstream Articles InfoQ, TSS, Dzone, OnJava,… Blogs http://processdevelopments.blogspot.com/ Talks JavaOne, JBossWorld, JAOO, TSS,…
What is jBPM Business Process Management BPM as a discipline BPM as software engineering jBPM  BPM for Java Developer Manage task lists for people Orchestrate POJO code Transactional state machine library Graphical
What is jBPM Your App Your Architecture jBPM
What is jBPM Model process Declare tasks Bind to your  POJO Java code Decorate Asynchronous  continuations Timers
jBPM 4 Goals Improve supportability  Grow to next level of adoption Raise 'ability to execute'  Implementation improvements
Improve Supportability Separation between normal usage from bleeding edge usage public API vs internal packages Userguide vs devguide More stable database / process definition caching Migration between 4.x releases (plan) Automatic JBoss installation No messing with configs and libs Tested configurations
Improve Supportability Continuous integration Ability to reproduce bugs Collect community knowledge in test suite  Ability to keep improving over longer time Longer lifespan of jBPM 4 Config import system  Less error prone Imports for hibernate tx, jta tx, spring tx Allows for default updates in default imports
Grow to Next Level of Adoption Lowering the treshold to get started Simpler API Split normal usage from bleeding edge API based queries Better container and app pluggability Much! improved docs Examples Automatic installations  Remove need for messing on your own Easier configuration abstraction through imports
Increase ‘Ability to Execute' Historical data separated from runtime data Queryable history information Keeps runtime data healthy Improved transaction mappings Proper handling of timers and external triggers More stable database  DB data migration becomes possible Improved job executor
Implementation Improvements Improved pluggable architecture Changed composition to inheritence.   Direct variable access Interfaces for activity implementations   Only exposing the methods that can be invoked. Changed recursion with iteration  Dealing with automatic long loops.
Use Case 1: Rapid Prototyping Model the process Include tasks Generate forms Deploy Show live demo
Use Cases 2: Transactional Script Model the script process Delegate activities  To POJO user code EJBeans SEAM beans Demarcate  Asynchonous continuations Timers Update control flow Hot redeploy Changed logic
Use Cases 3: Pageflow Pages are activities Navigations are transitions Persistence in HTTP session SEAM
jPDL Activities Control flow transition  start  end  end-cancel  end-error  decision  fork  join  super-state sub-process Functional state  sub-process  task  java  script  esb  hql  sql
jPDL Features Lots of functional activities mail, java, esb, task,… Concurrency Event listeners Timers Asynchronous continuations Transactional exception handlers
State Choice
State Choice < process   name = &quot;StateChoice&quot; > < start > < transition   to = &quot;wait for response&quot; /> </ start > < state   name = &quot;wait for response&quot;   > < transition   name = &quot;accept&quot;   to = &quot;submit document&quot;   /> < transition   name = &quot;reject&quot;   to = &quot;try again&quot;   /> </ state > < state   name = &quot;submit document&quot;   /> < state   name = &quot;try again&quot;   /> </ process >
State Choice // create a configuration Configuration configuration =  new  Configuration(); // build a process engine from a configuration ProcessEngine processEngine = configuration.buildProcessEngine(); // Obtain the services from the process engine // ProcessEngine and Services are to be used as singletons.  // ( ie  they are  threadsafe ) RepositoryService  repositoryService  =    processEngine.getRepositoryService(); ExecutionService  executionService  =    processEngine.getExecutionService(); TaskService  taskService  = processEngine.getTaskService();
State Choice repositoryService .createDeployment() .addResourceFromClasspath( &quot;org/jbpm/examples/state/choice/process.jpdl.xml“ ) .deploy();
State Choice ProcessInstance processInstance =  executionService .startProcessInstanceByKey( &quot;StateChoice&quot; ); String executionId = processInstance .findActiveExecutionIn( &quot;wait for response&quot; ) .getId(); processInstance =  executionService .signalExecutionById(executionId,  &quot;accept&quot; ); assertEquals( &quot;submit document&quot; , processInstance.getActivityName());
Designer
Console
Conclusion jBPM provides overview of application External triggers Wait states Business view jBPM adds a layer on top of TX basics Transactional timers Asynchronous messages Integrates with  Standard & Enterprise Java JBoss and other app servers SEAM Spring
Q&A
Process Concurrency

JBUG.Jbpm.2009

  • 1.
    jBPM 4 TomBaeyens JBoss, Red Hat
  • 2.
    Agenda What isjBPM jBPM 4 Goals jBPM 4 Use Cases
  • 3.
    Tom Baeyens Leadand founder of JBoss jBPM Consulting for numerous BPM projects Bringing BPM mainstream Articles InfoQ, TSS, Dzone, OnJava,… Blogs http://processdevelopments.blogspot.com/ Talks JavaOne, JBossWorld, JAOO, TSS,…
  • 4.
    What is jBPMBusiness Process Management BPM as a discipline BPM as software engineering jBPM BPM for Java Developer Manage task lists for people Orchestrate POJO code Transactional state machine library Graphical
  • 5.
    What is jBPMYour App Your Architecture jBPM
  • 6.
    What is jBPMModel process Declare tasks Bind to your POJO Java code Decorate Asynchronous continuations Timers
  • 7.
    jBPM 4 GoalsImprove supportability Grow to next level of adoption Raise 'ability to execute' Implementation improvements
  • 8.
    Improve Supportability Separationbetween normal usage from bleeding edge usage public API vs internal packages Userguide vs devguide More stable database / process definition caching Migration between 4.x releases (plan) Automatic JBoss installation No messing with configs and libs Tested configurations
  • 9.
    Improve Supportability Continuousintegration Ability to reproduce bugs Collect community knowledge in test suite Ability to keep improving over longer time Longer lifespan of jBPM 4 Config import system Less error prone Imports for hibernate tx, jta tx, spring tx Allows for default updates in default imports
  • 10.
    Grow to NextLevel of Adoption Lowering the treshold to get started Simpler API Split normal usage from bleeding edge API based queries Better container and app pluggability Much! improved docs Examples Automatic installations Remove need for messing on your own Easier configuration abstraction through imports
  • 11.
    Increase ‘Ability toExecute' Historical data separated from runtime data Queryable history information Keeps runtime data healthy Improved transaction mappings Proper handling of timers and external triggers More stable database DB data migration becomes possible Improved job executor
  • 12.
    Implementation Improvements Improvedpluggable architecture Changed composition to inheritence.  Direct variable access Interfaces for activity implementations  Only exposing the methods that can be invoked. Changed recursion with iteration Dealing with automatic long loops.
  • 13.
    Use Case 1:Rapid Prototyping Model the process Include tasks Generate forms Deploy Show live demo
  • 14.
    Use Cases 2:Transactional Script Model the script process Delegate activities To POJO user code EJBeans SEAM beans Demarcate Asynchonous continuations Timers Update control flow Hot redeploy Changed logic
  • 15.
    Use Cases 3:Pageflow Pages are activities Navigations are transitions Persistence in HTTP session SEAM
  • 16.
    jPDL Activities Controlflow transition start end end-cancel end-error decision fork join super-state sub-process Functional state sub-process task java script esb hql sql
  • 17.
    jPDL Features Lotsof functional activities mail, java, esb, task,… Concurrency Event listeners Timers Asynchronous continuations Transactional exception handlers
  • 18.
  • 19.
    State Choice <process name = &quot;StateChoice&quot; > < start > < transition to = &quot;wait for response&quot; /> </ start > < state name = &quot;wait for response&quot; > < transition name = &quot;accept&quot; to = &quot;submit document&quot; /> < transition name = &quot;reject&quot; to = &quot;try again&quot; /> </ state > < state name = &quot;submit document&quot; /> < state name = &quot;try again&quot; /> </ process >
  • 20.
    State Choice //create a configuration Configuration configuration = new Configuration(); // build a process engine from a configuration ProcessEngine processEngine = configuration.buildProcessEngine(); // Obtain the services from the process engine // ProcessEngine and Services are to be used as singletons. // ( ie they are threadsafe ) RepositoryService repositoryService = processEngine.getRepositoryService(); ExecutionService executionService = processEngine.getExecutionService(); TaskService taskService = processEngine.getTaskService();
  • 21.
    State Choice repositoryService.createDeployment() .addResourceFromClasspath( &quot;org/jbpm/examples/state/choice/process.jpdl.xml“ ) .deploy();
  • 22.
    State Choice ProcessInstanceprocessInstance = executionService .startProcessInstanceByKey( &quot;StateChoice&quot; ); String executionId = processInstance .findActiveExecutionIn( &quot;wait for response&quot; ) .getId(); processInstance = executionService .signalExecutionById(executionId, &quot;accept&quot; ); assertEquals( &quot;submit document&quot; , processInstance.getActivityName());
  • 23.
  • 24.
  • 25.
    Conclusion jBPM providesoverview of application External triggers Wait states Business view jBPM adds a layer on top of TX basics Transactional timers Asynchronous messages Integrates with Standard & Enterprise Java JBoss and other app servers SEAM Spring
  • 26.
  • 27.

Editor's Notes

  • #21 This shows the client API Indicate the transactions
  • #22 This shows the client API Indicate the transactions
  • #23 This shows the client API Indicate the transactions