jBPM 4 Sneak Preview Tom Baeyens JBoss, Red Hat
JBoss jBPM <ul><li>Business Process Management </li></ul><ul><ul><li>BPM as a discipline </li></ul></ul><ul><ul><li>BPM as...
Tom Baeyens <ul><li>Lead and founder of JBoss jBPM </li></ul><ul><li>Consulting for numerous BPM projects </li></ul><ul><l...
BPM as a Discipline <ul><li>Management discipline </li></ul><ul><li>Business processes grow organic </li></ul><ul><ul><li>...
BPM as Software Engineering <ul><li>Aspect of software expressed as a graph </li></ul><ul><li>Specifies execution flow </l...
Traditional BPM Vendors <ul><li>Stack Integrators </li></ul><ul><ul><li>Oracle, IBM, SAP </li></ul></ul><ul><ul><li>XML ba...
jBPM ! <ul><li>Bottom Up </li></ul><ul><ul><li>No magic </li></ul></ul><ul><li>Server or embedded </li></ul><ul><ul><li>No...
jBPM’s Modelling Advantage Your App Your Architecture jBPM Business Analyst Developer
jBPM’s Modelling Advantage Your App Your Architecture jBPM Business Analyst Developer
jBPM Overview <ul><li>Process Virtual Machine </li></ul><ul><ul><li>Java state machine library </li></ul></ul><ul><ul><li>...
jPDL Activities <ul><li>Control flow </li></ul><ul><ul><li>transition  </li></ul></ul><ul><ul><li>start  </li></ul></ul><u...
jPDL Features <ul><li>Lots of functional activities </li></ul><ul><ul><li>mail, java, esb, task,… </li></ul></ul><ul><li>C...
State Choice
State Choice <ul><li>< process   name = &quot;StateChoice&quot; > </li></ul><ul><li>< start > </li></ul><ul><li>< transiti...
State Choice <ul><li>repositoryService .createDeployment() </li></ul><ul><li>.addResourceFromClasspath( </li></ul><ul><li>...
State Choice <ul><li>ProcessInstance processInstance =  executionService </li></ul><ul><li>.startProcessInstanceByKey( &qu...
Human Task
Human Task <ul><li>< process   name = &quot;TaskCandidates&quot; > </li></ul><ul><li>< start > </li></ul><ul><li>< transit...
Identity Component LDAP jBPM Identity Component Interface jBPM build-in JBoss IDM Your own  custom  implementation 3 10
Identity Component johndoe joesmoe sales-dept membership membership
Human Task <ul><li>executionService </li></ul><ul><li>.startProcessInstanceByKey( &quot;TaskCandidates&quot; ); </li></ul>...
Timer Transition
Timer Transition <ul><li>< process   name = &quot;TimerTransition&quot; > </li></ul><ul><li>< start > </li></ul><ul><li>< ...
Asynchronous Continuations <ul><li>Automatic activities in sequence </li></ul><ul><li>One takes a long time </li></ul><ul>...
Designer
Console
Console
Conclusion <ul><li>jBPM provides overview of application </li></ul><ul><ul><li>External triggers </li></ul></ul><ul><ul><l...
Q&A
Execution Modes
Execution Modes Processes Executions History JVM BPM Engine (1) Persistent  Dynamic
Execution Modes Executions History JVM BPM Engine Process Resources (2) Persistent  Process resource
Execution Modes Executions History JVM BPM Engine Process Resources (3) Persistent Embedded Referenced INSURANCE_CLAIMS ID...
Execution Modes History JVM BPM Engine Process Resources (4) Persistent Embedded Included “ review” INSURANCE_CLAIMS ID … ...
Execution Modes History JVM BPM Engine Process Resources Execution Objects (5) Memory With Persistent History
Execution Modes JVM BPM Engine Process Resources Execution Objects (6) Memory
Process Concurrency
Upcoming SlideShare
Loading in …5
×

Sneak Preview of jBPM 4 at JAX conference

4,386 views
4,285 views

Published on

After a general introduction to BPM and jBPM, a couple of concrete examples show what jBPM can do.

Published in: Business, Technology
1 Comment
6 Likes
Statistics
Notes
No Downloads
Views
Total views
4,386
On SlideShare
0
From Embeds
0
Number of Embeds
519
Actions
Shares
0
Downloads
188
Comments
1
Likes
6
Embeds 0
No embeds

No notes for slide
  • Sneak Preview of jBPM 4 at JAX conference

    1. 1. jBPM 4 Sneak Preview Tom Baeyens JBoss, Red Hat
    2. 2. JBoss jBPM <ul><li>Business Process Management </li></ul><ul><ul><li>BPM as a discipline </li></ul></ul><ul><ul><li>BPM as software engineering </li></ul></ul><ul><li>What is jBPM </li></ul><ul><li>jBPM 4 Overview </li></ul>
    3. 3. Tom Baeyens <ul><li>Lead and founder of JBoss jBPM </li></ul><ul><li>Consulting for numerous BPM projects </li></ul><ul><li>Bringing BPM mainstream </li></ul><ul><li>Articles </li></ul><ul><ul><li>InfoQ, TSS, Dzone, OnJava,… </li></ul></ul><ul><li>Blogs </li></ul><ul><ul><li>http://processdevelopments.blogspot.com/ </li></ul></ul><ul><li>Talks </li></ul><ul><ul><li>JavaOne, JBossWorld, JAOO, TSS,… </li></ul></ul>
    4. 4. BPM as a Discipline <ul><li>Management discipline </li></ul><ul><li>Business processes grow organic </li></ul><ul><ul><li>Understand </li></ul></ul><ul><ul><li>Describe </li></ul></ul><ul><ul><li>Optimise </li></ul></ul><ul><li>Non technical </li></ul><ul><li>People to people </li></ul><ul><ul><li>What, not how </li></ul></ul><ul><ul><li>Can be vague </li></ul></ul><ul><li>Unrelated to software architecture </li></ul><ul><li>Often include diagrams </li></ul>
    5. 5. BPM as Software Engineering <ul><li>Aspect of software expressed as a graph </li></ul><ul><li>Specifies execution flow </li></ul><ul><li>BPMS ‘runs’ process executions </li></ul><ul><li>It’s software </li></ul><ul><ul><li>DSL </li></ul></ul><ul><ul><li>Executes on one system </li></ul></ul><ul><ul><li>Central dispatcher </li></ul></ul><ul><ul><li>Multiple participants </li></ul></ul><ul><ul><li>Wait states </li></ul></ul>
    6. 6. Traditional BPM Vendors <ul><li>Stack Integrators </li></ul><ul><ul><li>Oracle, IBM, SAP </li></ul></ul><ul><ul><li>XML basis for BPM ?! </li></ul></ul><ul><ul><li>BPEL, WSDL </li></ul></ul><ul><ul><li>Lots of tooling required to hide clumsy basics </li></ul></ul><ul><ul><li>Deprecating BPEL in favour of BPMN </li></ul></ul><ul><li>Pure plays </li></ul><ul><ul><li>Monolithic server </li></ul></ul><ul><ul><li>Automagical </li></ul></ul><ul><ul><li>Hard to integrate in your project </li></ul></ul>
    7. 7. jBPM ! <ul><li>Bottom Up </li></ul><ul><ul><li>No magic </li></ul></ul><ul><li>Server or embedded </li></ul><ul><ul><li>Not monolithic </li></ul></ul><ul><ul><li>Just a library </li></ul></ul><ul><li>Freedom </li></ul><ul><ul><li>Use the most appropriate tech </li></ul></ul><ul><ul><ul><li>Java, groovy, web services, SQL </li></ul></ul></ul><ul><ul><li>Java excellent dispatcher technology </li></ul></ul>
    8. 8. jBPM’s Modelling Advantage Your App Your Architecture jBPM Business Analyst Developer
    9. 9. jBPM’s Modelling Advantage Your App Your Architecture jBPM Business Analyst Developer
    10. 10. jBPM Overview <ul><li>Process Virtual Machine </li></ul><ul><ul><li>Java state machine library </li></ul></ul><ul><ul><li>Pluggable Activities </li></ul></ul><ul><li>jPDL </li></ul><ul><ul><li>BPM as a discipline </li></ul></ul><ul><ul><li>Orchestrating Human Tasks & Services </li></ul></ul><ul><ul><li>Transactional Script </li></ul></ul><ul><ul><li>Execution modes </li></ul></ul><ul><li>SEAM Pageflow </li></ul><ul><li>… </li></ul>
    11. 11. jPDL Activities <ul><li>Control flow </li></ul><ul><ul><li>transition </li></ul></ul><ul><ul><li>start </li></ul></ul><ul><ul><li>end </li></ul></ul><ul><ul><li>end-cancel </li></ul></ul><ul><ul><li>end-error </li></ul></ul><ul><ul><li>decision </li></ul></ul><ul><ul><li>fork </li></ul></ul><ul><ul><li>join </li></ul></ul><ul><ul><li>super-state </li></ul></ul><ul><ul><li>sub-process </li></ul></ul><ul><li>Functional </li></ul><ul><ul><li>state </li></ul></ul><ul><ul><li>sub-process </li></ul></ul><ul><ul><li>task </li></ul></ul><ul><ul><li>java </li></ul></ul><ul><ul><li>script </li></ul></ul><ul><ul><li>esb </li></ul></ul><ul><ul><li>hql </li></ul></ul><ul><ul><li>sql </li></ul></ul>
    12. 12. jPDL Features <ul><li>Lots of functional activities </li></ul><ul><ul><li>mail, java, esb, task,… </li></ul></ul><ul><li>Concurrency </li></ul><ul><li>Event listeners </li></ul><ul><li>Timers </li></ul><ul><li>Asynchronous continuations </li></ul><ul><li>Transactional exception handlers </li></ul>
    13. 13. State Choice
    14. 14. State Choice <ul><li>< process name = &quot;StateChoice&quot; > </li></ul><ul><li>< start > </li></ul><ul><li>< transition to = &quot;wait for response&quot; /> </li></ul><ul><li></ start > </li></ul><ul><li>< state name = &quot;wait for response&quot; > </li></ul><ul><li>< transition name = &quot;accept&quot; to = &quot;submit document&quot; /> </li></ul><ul><li>< transition name = &quot;reject&quot; to = &quot;try again&quot; /> </li></ul><ul><li></ state > </li></ul><ul><li>< state name = &quot;submit document&quot; /> </li></ul><ul><li>< state name = &quot;try again&quot; /> </li></ul><ul><li></ process > </li></ul>
    15. 15. State Choice <ul><li>repositoryService .createDeployment() </li></ul><ul><li>.addResourceFromClasspath( </li></ul><ul><li>&quot;org/jbpm/examples/state/choice/process.jpdl.xml“ ) </li></ul><ul><li>.deploy(); </li></ul>
    16. 16. State Choice <ul><li>ProcessInstance processInstance = executionService </li></ul><ul><li>.startProcessInstanceByKey( &quot;StateChoice&quot; ); </li></ul><ul><li>String executionId = processInstance </li></ul><ul><li>.findActiveExecutionIn( &quot;wait for response&quot; ) </li></ul><ul><li>.getId(); </li></ul><ul><li>processInstance = executionService </li></ul><ul><li>.signalExecutionById(executionId, &quot;accept&quot; ); </li></ul><ul><li>assertEquals( &quot;submit document&quot; , </li></ul><ul><li>processInstance.getActivityName()); </li></ul>
    17. 17. Human Task
    18. 18. Human Task <ul><li>< process name = &quot;TaskCandidates&quot; > </li></ul><ul><li>< start > </li></ul><ul><li>< transition to = &quot;review&quot; /> </li></ul><ul><li></ start > </li></ul><ul><li>< task name = &quot;review&quot; </li></ul><ul><li>candidate-groups = &quot;sales-dept&quot; > </li></ul><ul><li>< transition to = &quot;wait&quot; /> </li></ul><ul><li></ task > </li></ul><ul><li>< state name = &quot;wait&quot; /> </li></ul><ul><li></ process > </li></ul>
    19. 19. Identity Component LDAP jBPM Identity Component Interface jBPM build-in JBoss IDM Your own custom implementation 3 10
    20. 20. Identity Component johndoe joesmoe sales-dept membership membership
    21. 21. Human Task <ul><li>executionService </li></ul><ul><li>.startProcessInstanceByKey( &quot;TaskCandidates&quot; ); </li></ul><ul><li>List<Task> johnsTakableTasks = </li></ul><ul><li>taskService .findTakableTasks( &quot;johndoe&quot; ); </li></ul><ul><li>List<Task> joesTakableTasks = </li></ul><ul><li>taskService .findTakableTasks( &quot;joesmoe&quot; ); </li></ul><ul><li>taskService .takeTask(task.getDbid(), &quot;johndoe&quot; ); </li></ul><ul><li>List<Task> johnsPersonalTasks = taskService .findAssignedTasks( &quot;johndoe&quot; ); </li></ul><ul><li>taskService .completeTask(task.getDbid()); </li></ul>
    22. 22. Timer Transition
    23. 23. Timer Transition <ul><li>< process name = &quot;TimerTransition&quot; > </li></ul><ul><li>< start > </li></ul><ul><li>< transition to = &quot;guardedWait&quot; /> </li></ul><ul><li></ start > </li></ul><ul><li>< state name = &quot;guardedWait&quot; > </li></ul><ul><li>< transition name = &quot;go on&quot; to = &quot;next step&quot; /> </li></ul><ul><li>< transition name = &quot;timeout&quot; to = &quot;escalation&quot; > </li></ul><ul><li>< timer duedate = &quot;2 business days&quot; /> </li></ul><ul><li></ transition > </li></ul><ul><li></ state > </li></ul><ul><li>< state name = &quot;next step&quot; /> </li></ul><ul><li>< state name = &quot;escalation&quot; /> </li></ul><ul><li></ process > </li></ul>
    24. 24. Asynchronous Continuations <ul><li>Automatic activities in sequence </li></ul><ul><li>One takes a long time </li></ul><ul><li>Don’t block the client thread </li></ul><ul><li>async=“true” </li></ul>Transaction 1 Transaction 2 Job Executor
    25. 25. Designer
    26. 26. Console
    27. 27. Console
    28. 28. Conclusion <ul><li>jBPM provides overview of application </li></ul><ul><ul><li>External triggers </li></ul></ul><ul><ul><li>Wait states </li></ul></ul><ul><ul><li>Business view </li></ul></ul><ul><li>jBPM adds a layer on top of TX basics </li></ul><ul><ul><li>Transactional timers </li></ul></ul><ul><ul><li>Asynchronous messages </li></ul></ul><ul><li>Integrates with </li></ul><ul><ul><li>Standard & Enterprise Java </li></ul></ul><ul><ul><li>JBoss and other app servers </li></ul></ul><ul><ul><li>SEAM </li></ul></ul><ul><ul><li>Spring </li></ul></ul>
    29. 29. Q&A
    30. 30. Execution Modes
    31. 31. Execution Modes Processes Executions History JVM BPM Engine (1) Persistent Dynamic
    32. 32. Execution Modes Executions History JVM BPM Engine Process Resources (2) Persistent Process resource
    33. 33. Execution Modes Executions History JVM BPM Engine Process Resources (3) Persistent Embedded Referenced INSURANCE_CLAIMS ID … STATE …
    34. 34. Execution Modes History JVM BPM Engine Process Resources (4) Persistent Embedded Included “ review” INSURANCE_CLAIMS ID … STATE …
    35. 35. Execution Modes History JVM BPM Engine Process Resources Execution Objects (5) Memory With Persistent History
    36. 36. Execution Modes JVM BPM Engine Process Resources Execution Objects (6) Memory
    37. 37. Process Concurrency

    ×