Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JBUG.be jBPM4

1,240 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

JBUG.be jBPM4

  1. 1. jBPM 4 Tom Baeyens JBoss, Red Hat 1
  2. 2. Agenda • What is jBPM • jBPM 4 Goals • jBPM 4 Use Cases 2
  3. 3. 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,… 3
  4. 4. 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 4
  5. 5. What is jBPM Your App Your Architecture jBPM 5
  6. 6. What is jBPM • Model process – Declare tasks – Bind to your POJO Java code • Decorate – Asynchronous continuations – Timers 6
  7. 7. jBPM 4 Goals • Improve supportability • Grow to next level of adoption • Raise 'ability to execute' • Implementation improvements 7
  8. 8. 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 8
  9. 9. 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 9
  10. 10. 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 10
  11. 11. 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 11
  12. 12. 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. 12
  13. 13. Use Case 1: Rapid Prototyping • Model the process • Include tasks • Generate forms • Deploy • Show live demo 13
  14. 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 14
  15. 15. Use Cases 3: Pageflow • Pages are activities • Navigations are transitions • Persistence in HTTP session • SEAM 15
  16. 16. jPDL Activities • Control flow • Functional transition state start sub-process end task end-cancel java end-error script decision esb fork hql join sql super-state sub-process 16
  17. 17. jPDL Features • Lots of functional activities – mail, java, esb, task,… • Concurrency • Event listeners • Timers • Asynchronous continuations • Transactional exception handlers 17
  18. 18. State Choice 18
  19. 19. State Choice <process name="StateChoice"> <start> <transition to="wait for response"/> </start> <state name="wait for response" > <transition name="accept" to="submit document" /> <transition name="reject" to="try again" /> </state> <state name="submit document" /> <state name="try again" /> </process> 19
  20. 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(); 20
  21. 21. State Choice repositoryService.createDeployment() .addResourceFromClasspath( "org/jbpm/examples/state/choice/process.jpdl.xml“) .deploy(); 21
  22. 22. State Choice ProcessInstance processInstance = executionService .startProcessInstanceByKey("StateChoice"); String executionId = processInstance .findActiveExecutionIn("wait for response") .getId(); processInstance = executionService .signalExecutionById(executionId, "accept"); assertEquals("submit document", processInstance.getActivityName()); 22
  23. 23. Designer 23
  24. 24. Console 24
  25. 25. 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 25
  26. 26. Q&A 26
  27. 27. Process Concurrency 27

×