Successfully reported this slideshow.

jBPM 4 BeJUG Event March 20 2009

3,715 views

Published on

An introduction to jBPM

Published in: Technology
  • Be the first to comment

jBPM 4 BeJUG Event March 20 2009

  1. 1. 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>Embeddability </li></ul><ul><li>Modelling </li></ul><ul><li>jBPM Key Values </li></ul><ul><li>Status & Roadmap </li></ul>
  2. 2. 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>
  3. 3. BPM as a Discipline <ul><li>Management discipline </li></ul><ul><li>“They all seem very busy” </li></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><ul><li>Unrelated to software architecture </li></ul></ul><ul><li>Often include diagrams </li></ul>
  4. 4. 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>Execute 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>
  5. 5. Traditional BPM Vendors <ul><li>Stack Integrators </li></ul><ul><ul><li>Oracle, IBM, SAP </li></ul></ul><ul><ul><li>BPEL is integration technology </li></ul></ul><ul><ul><li>Atomic operation is WSDL service invocations </li></ul></ul><ul><ul><li>Service orchestration as solution for BPM ? </li></ul></ul><ul><ul><ul><li> Lost of tooling required to hide clumsy basics </li></ul></ul></ul><ul><li>Pure plays </li></ul><ul><ul><li>Top down </li></ul></ul><ul><ul><ul><li> Automagical </li></ul></ul></ul><ul><ul><li>BPM Suite has its own software architecture </li></ul></ul><ul><ul><ul><li> Doesn’t embed within user’s software architecture </li></ul></ul></ul><ul><ul><ul><li>Monolithic server </li></ul></ul></ul><ul><ul><ul><li>Hard to integrate </li></ul></ul></ul>
  6. 6. 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>
  7. 7. jBPM’s Modelling Advantage <ul><li>Typical user story </li></ul><ul><ul><li>Order entry </li></ul></ul><ul><li>Business person goes </li></ul><ul><ul><li>“ Click on the button in the screen” </li></ul></ul><ul><ul><li>“ Clerk gets an email” </li></ul></ul><ul><ul><li>“ Escalate if it takes too long” </li></ul></ul><ul><li>Developer goes </li></ul><ul><ul><li>GWT gives me browser </li></ul></ul><ul><ul><li>RESTfull webservice communication with server </li></ul></ul><ul><ul><li>SEAM can invoke my ejb 3 beans </li></ul></ul><ul><ul><li>EJB 3 beans have required transaction demarcation </li></ul></ul><ul><ul><li>SEAM integrates with my business process layer </li></ul></ul><ul><ul><li>Sending email must be done asynchronous </li></ul></ul>
  8. 8. jBPM’s Modelling Advantage <ul><li>No forced link between graph and transaction </li></ul><ul><ul><li>Embeddable </li></ul></ul><ul><ul><li>Flexible transaction demarcation </li></ul></ul><ul><li>Hidden event listeners </li></ul>
  9. 9. jBPM’s Modelling Advantage Your App Your Architecture jBPM Business Analyst Developer
  10. 10. jBPM’s Modelling Advantage Your App Your Architecture jBPM Business Analyst Developer
  11. 11. jBPM’s Embeddable Advantage <ul><li>Structure your software </li></ul><ul><li>Software is a combination of </li></ul><ul><ul><li>Process </li></ul></ul><ul><ul><li>Domain model </li></ul></ul><ul><ul><li>UI </li></ul></ul><ul><li>Process inside your architecture </li></ul><ul><ul><li>Binds to user’s transaction (JEE, JSE, SEAM, Spring,…) </li></ul></ul><ul><ul><li>Stores data in user’s database </li></ul></ul><ul><ul><li>Links to domain model objects </li></ul></ul><ul><ul><li>Test inside user’s test suite </li></ul></ul>
  12. 12. jBPM’s Embeddable Advantage <ul><li>E.g. plain webapp </li></ul><ul><ul><li>Spring, hibernate </li></ul></ul><ul><ul><li>Deployed on Tomcat </li></ul></ul><ul><li>jBPM has Job executor </li></ul><ul><ul><li>Transactional timers </li></ul></ul><ul><ul><li>Asynchronous continuations </li></ul></ul>Transaction 1 Transaction 2
  13. 13. jBPM’s Embeddable Advantage <ul><li>Works with plain Java code </li></ul><ul><li>High level asynchronous transactional modelling </li></ul><ul><ul><li>Standard Java thanks to jobexecutor </li></ul></ul><ul><ul><li>Enterprise Java without deployment descriptor hell </li></ul></ul><ul><ul><li>Seam </li></ul></ul><ul><ul><li>Spring </li></ul></ul>
  14. 14. jBPM’s Use Cases <ul><li>Orchestrating Human Tasks </li></ul><ul><li>Transactional Script </li></ul><ul><ul><li>EJB orchestration </li></ul></ul><ul><ul><li>Service orchestration </li></ul></ul><ul><li>Pageflow </li></ul>
  15. 15. <ul><li>< process name = &quot;TaskCandidateGroups&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-users = &quot;johndoe, joesmoe&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>
  16. 16. <ul><ul><ul><ul><li>deployJpdlResource( </li></ul></ul></ul></ul><ul><ul><ul><ul><li>“… /process.jpdl.xml“ </li></ul></ul></ul></ul><ul><ul><ul><ul><li>); </li></ul></ul></ul></ul><ul><li>Execution execution = executionService </li></ul><ul><li>.startProcessInstanceByKey( &quot;TaskCandidates&quot; ); </li></ul><ul><li>String executionId = execution.getId(); </li></ul><ul><li>List<Task> taskList = </li></ul><ul><li>taskService.getGroupTaskList( &quot;johndoe&quot; , 0, 10); </li></ul><ul><li>assertEquals(1, taskList.size()); </li></ul><ul><li>Task task = taskList.get(0); </li></ul><ul><li>assertEquals( &quot;review&quot; , task.getName()); </li></ul><ul><li>taskList = </li></ul><ul><li>taskService.getGroupTaskList( &quot;joesmoe&quot; , 0, 10); </li></ul><ul><li>assertEquals(1, taskList.size()); </li></ul><ul><li>task = taskList.get(0); </li></ul><ul><li>assertEquals( &quot;review&quot; , task.getName()); </li></ul>
  17. 17. Multiple Process Languages
  18. 18. jBPM Key Business Values <ul><li>Step away from </li></ul><ul><ul><li>Business analysts can work with our tool :-) </li></ul></ul><ul><li>Real bridge </li></ul><ul><ul><li>Based on good communication </li></ul></ul><ul><ul><li>Leaves tech things with developers </li></ul></ul><ul><ul><li>Creates a common language </li></ul></ul><ul><li>First generally applicable solution for ‘BPM as a discipline’ </li></ul>
  19. 19. jBPM Key Technical Values <ul><li>No hokus pokus </li></ul><ul><li>Take away the TX plumbing </li></ul><ul><li>Structure software </li></ul><ul><ul><li>Get overview beyond transactions </li></ul></ul><ul><li>Learn 1 workflow/BPM technology </li></ul><ul><ul><li>Leverage that knowledge investment it in all your projects </li></ul></ul><ul><ul><li>The one-stop-shop argument </li></ul></ul><ul><li>Simple & lightweight </li></ul>
  20. 20. jBPM Evolution <ul><li>jBPM 1 </li></ul><ul><li>EJB state machine </li></ul><ul><li>jBPM 2 </li></ul><ul><li>Std Java Embeddable </li></ul><ul><li>Hibernate state machine </li></ul><ul><li>jBPM 3 </li></ul><ul><li>First Activity Pluggability </li></ul><ul><li>First Multiple Languages </li></ul><ul><li>First Enterprise Embeddability </li></ul><ul><li>jBPM 4 </li></ul><ul><li>Activity Pluggability API </li></ul><ul><li>Command Based Services </li></ul><ul><li>Multiple Languages </li></ul><ul><li>Many Execution modes </li></ul><ul><li>DB Partitioning </li></ul><ul><li>DB Evolution </li></ul><ul><li>Full Embeddability </li></ul>Product Project
  21. 21. Current Status <ul><li>jBPM 3.2.6 </li></ul><ul><ul><li>Stable </li></ul></ul><ul><ul><li>Productization being finished </li></ul></ul><ul><li>jBPM 4.0.0.Alpha2 is released </li></ul><ul><li>jBPM 4.0.0.GA planned for July </li></ul><ul><li>First scope for jBPM 4 is jBPM 3 functionality </li></ul><ul><li>Then </li></ul><ul><ul><li>Improved node pluggability (easy extension) </li></ul></ul><ul><ul><li>More integrated language coverage </li></ul></ul>
  22. 22. jBPM Roadmap <ul><li>jBPM 4.0.0.Alpha1 released on time </li></ul><ul><li>Deadlines fixed </li></ul><ul><li>4.0.0.GA minimal scope jBPM 3 </li></ul>1 January 1 March 1 May 1 July 1 September 1 April 1 June 4.0.0.Alpha1 4.0.0.Alpha2 4.0.0.Beta1 4.0.0.Beta2 4.0.0.CR1 4.0.0.GA
  23. 23. jBPM Improvements <ul><li>QA : From Community To Our Lab </li></ul>
  24. 24. jBPM Improvements <ul><li>Documentation </li></ul><ul><ul><li>User guide </li></ul></ul><ul><ul><li>Developer guide </li></ul></ul><ul><li>API </li></ul><ul><ul><li>Basic usage </li></ul></ul><ul><ul><li>Stable </li></ul></ul><ul><ul><li>Supported </li></ul></ul><ul><li>Advanced pluggability </li></ul><ul><ul><li>Separated </li></ul></ul><ul><ul><li>Easier to get started </li></ul></ul>
  25. 25. jBPM Improvements <ul><li>DB evolution </li></ul><ul><ul><li>More flexibility inbetween minor releases </li></ul></ul><ul><ul><li>Process language partitioning </li></ul></ul><ul><ul><li>Simplifications </li></ul></ul><ul><ul><li>Performance improvements </li></ul></ul>
  26. 26. Designer
  27. 27. Console
  28. 28. Console
  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

×