Your SlideShare is downloading. ×
0
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

jBPM5 in action - a quickstart for developers

9,728

Published on

jBPM5 presentation at JUDCon

jBPM5 presentation at JUDCon

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,728
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
382
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1.  
  • 2. jBPM5 in Action: A Quickstart for Developers Kris Verlaenen jBPM5 Lead Engineer
  • 3. Overview
    • What is (j)BPM?
    • 4. Why BPM?
    • 5. Getting started with jBPM5
    • 6. Testing, debugging, deploying
    • 7. Integrating in your architecture
    • 8. Persistence and transactions
    • 9. Console
  • 10. What is BPM? A business process is a process that describes the order in which a series of steps need to be executed, using a flow chart. Business Process Management
  • 11. Why BPM?
    • Continuous improvement
    • 14. Speed of development
    • 15. Increased agility
  • 16. Getting started with jBPM5 !
  • 17. Key Characteristics of jBPM5
    • Open-source business process management project offering:
      • generic process engine supporting native BPMN 2.0 execution
      • 18. targeting developers and business users
      • 19. collaboration, management and monitoring using web-based consoles
      • 20. powerful rules and event integration
  • 21. From Workflow to BPM
    • Core engine is a workflow engine in pure Java
    Core Engine
  • 25. Core Engine Knowledge Base Stateful Knowledge Session Process Definition Process Instance
  • 26. BPMN 2.0 Example < definitions ... > < process id=&quot;com.sample.bpmn.hello&quot; name=&quot;Hello World&quot; > < startEvent id=&quot;_1&quot; name=&quot;StartProcess&quot; /> < sequenceFlow sourceRef=&quot;_1&quot; targetRef=&quot;_2&quot; /> < scriptTask id=&quot;_2&quot; name=&quot;Hello&quot; > < script >System.out.println(&quot;Hello World&quot;);</ script > </ scriptTask > < sequenceFlow sourceRef=&quot;_2&quot; targetRef=&quot;_3&quot; /> < endEvent id=&quot;_3&quot; name=&quot;EndProcess&quot; /> </ process > </ definitions > < definitions ... > < process id=&quot;com.sample.bpmn.hello&quot; name=&quot;Hello World&quot; > < startEvent id=&quot;_1&quot; name=&quot;StartProcess&quot; /> < sequenceFlow sourceRef=&quot;_1&quot; targetRef=&quot;_2&quot; /> < scriptTask id=&quot;_2&quot; name=&quot;Hello&quot; > < script >System.out.println(&quot;Hello World&quot;);</ script > </ scriptTask > < sequenceFlow sourceRef=&quot;_2&quot; targetRef=&quot;_3&quot; /> < endEvent id=&quot;_3&quot; name=&quot;EndProcess&quot; /> </ process > </ definitions >
  • 27. Java Interface ProcessRuntime interface
    • startProcess(processId)
    • 28. startProcess(processId, parameters)
    • 29. signalEvent(type, event)
    • 30. signalEvent(type, event, instanceId)
    • 31. abortProcessInstance(instanceId)
    • 32. getProcessInstance(instanceId)
    • 33.
  • 34. Java Example // (1) Create knowledge base and add process definition KnowledgeBuilder kbuilder = ... kbuilder.add( ..., &quot;sample.bpmn&quot;, ResourceType.BPMN2); KnowledgeBase kbase = kbuilder.newKnowledgeBase(); // (2) Create new stateful knowledge session StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); // (3) Start a new process instance ksession.startProcess(“com.sample.bpmn.hello”);
  • 35. TITLE SLIDE: HEADLINE Presenter name Title, Red Hat Date Demo
  • 36. Domain-specific Processes
    • Extend palette with domain-specific, declarative service nodes
      • define input / output parameters
      • 37. runtime binding
  • 38. Example: Notification [ [ &quot; name &quot; : &quot;Notification&quot;, &quot; parameters &quot; : [ &quot;Message&quot; : new StringDataType(), &quot;From&quot; : new StringDataType(), &quot;To&quot; : new StringDataType(), &quot;Priority&quot; : new StringDataType(), ], &quot; displayName &quot; : &quot;Notification&quot;, &quot; icon &quot; : &quot;icons/notification.gif&quot; ] ]
  • 39. Example: Notification class NotificationHandler implements WorkItemHandler { public void executeWorkItem(WorkItem wI, WorkItemManager manager) { String from = (String) wI. getParameter (&quot;From&quot;); String to = (String) wI. getParameter (&quot;To&quot;); String m = (String) wI. getParameter (&quot;Message&quot;); // send email EmailService service = ...; service.sendEmail(from, to, &quot;Notification&quot;, m); manager. completeWorkItem (wI.getId(), null); } }
  • 40. Human task service
    • User task
    • 41. Human task service (WS-HT)
      • Task lists
      • 42. Task life cycle
    • Task clients
      • Task forms
  • 43. Human Task Service public void start( long taskId, String userId, .. ) public void stop( long taskId, String userId, .. ) public void release( long taskId, String userId, .. ) public void suspend( long taskId, String userId, .. ) public void resume( long taskId, String userId, .. ) public void skip( long taskId, String userId, .. ) public void delegate( long taskId, String userId,  String targetUserId, .. ) public void complete( long taskId, String userId,  ContentData outputData, .. )
  • 44. Testing, debugging, deploying, etc.
  • 45. Model Deploy Execute Monitor Analyze Life Cycle Mining Analysis Optimization Simulation Testing Design Monitoring Reporting Execution Integration Deployment Management Audit Human Interaction Collaboration
  • 46. JUnit Testing public class MyProcessTest extends JbpmJUnitTestCase { public void testProcess() { StatefulKnowledgeSession ksession = createKnowledgeSession (&quot;sample.bpmn&quot;); ProcessInstance pI = ksession. startProcess (&quot;com.sample.bpmn.hello&quot;); assertProcessInstanceCompleted (pI.getId(), ksession); assertNodeTriggered (pI.getId(), &quot;StartProcess&quot;, &quot;Hello&quot;, &quot;EndProcess&quot;); } }
  • 47. Debugging
  • 48. TITLE SLIDE: HEADLINE Presenter name Title, Red Hat Date Demo
  • 49. Guvnor
    • Guvnor as knowledge repository
      • BPMN2 processes
      • 50. Task and process forms
      • 51. Model
    • Web-based process editor (Oryx)
    • 52. Build, deploy, test, manage and collaboration features
  • 53. TITLE SLIDE: HEADLINE Presenter name Title, Red Hat Date Demo
  • 54. Integrating in your Architecture
  • 55. Architecture
    • From “embedded” to “as a service”
    • 56. Command-based
    • 57. Different underlying technologies
    • # of (independent) session
  • 61. REST API
  • 62. Integration
  • 63. Integration
  • 64. Integration
  • 65. Integration
  • 66. Persistence and Transactions
  • 67. Persistence and Transactions
    • Persistence (JPA, pluggable)
      • Runtime persistence
      • 68. History logging
      • 69. Services
    • Transactions (JTA, pluggable)
      • Command-scoped
      • 70. User-defined
  • 71. Persistence
    • Create a persistent knowledge session
    EntityManagerFactory emf = Persistence.createEntityManagerFactory( &quot;...&quot; ); Environment env = KnowledgeBaseFactory.newEnvironment(); env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf ); StatefulKnowledgeSession ksession = JPAKnowledgeService . newStatefulKnowledgeSession( kbase, null, env ); JPAWorkingMemoryDbLogger logger = new JPAWorkingMemoryDbLogger (ksession);
  • 72. Persistence ProcessInstanceInfo ProcessInstanceLog NodeInstanceLog
  • 73. User Transactions Environment env = KnowledgeBaseFactory.newEnvironment(); env.set( EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager() ); UserTransaction ut = (UserTransaction) new InitialContext().lookup(&quot;java:comp/UserTransaction&quot;); ut.begin(); // do stuff here, e.g. ksession.startProcess(..) ut.commit();
  • 74. Console
  • 75. Console
    • Web-based management
    • 76. Business user
    • 77. Features
      • Process instance management
      • 78. User task lists / forms
      • 79. Reporting
  • 80. TITLE SLIDE: HEADLINE Presenter name Title, Red Hat Date Demo
  • 81. jBPM5: What, where?
    • jBPM home page
    • 82. Source http://github.com/droolsjbpm/jbpm
    • 83. Hudson http://hudson.jboss.org/hudson/job/jBPM
    • 84. Blog http://kverlaen.blogspot.com/
    • 85. #jbpm on irc.codehaus.org
    • 86. [email_address]
    • 87. jBPM user forum
  • 88. jBPM5 in Action: A Quickstart for Developers Kris Verlaenen jBPM5 Lead Engineer

×