Upload
buiquynh
View
217
Download
1
Embed Size (px)
Citation preview
Executing BPMN 2.0 with jBPM 3or (at your option) any later versionExecuting BPMN 2.0 with jBPM 3or (at your option) any later version
Falko Menge
JUDCon 2010
Berlin
• Consultant, trainer & coach forjBPM 3 & 4, Drools, BPMN
• Developer of severalOpen Source projects(Activiti, Oryx Editor, WSDL2XForms,InstantSVC, …)
• Member of BPMN specification teamat OMG
• Co-author of „BPMN 2.0 by Example“
Falko [email protected]
• Co-author of „BPMN 2.0 by Example“
Areas of Interest:
BPM, SOA & EAI with Open Standardsand Open Source Software
Process Execution(BPMN 2.0, jPDL, BPEL, XPDL, …)
Enterprise Applications with Java EE
BPMN
Mapping BPMN to jPDL
BPMN
Mapping BPMN to jPDL
OverviewOverview
Abstracting the EngineAbstracting the Engine
Why does everybody want BPMN 2.0?Why does everybody want BPMN 2.0?
InterchangeDiagram
Interchange SemanticsExecution Semantics
<XML> <XML>
BPMN 2.0: Model and NotationBPMN 2.0: Model and Notation
NotationModel
ExamplesExecution Semantics
NotationModel
XML Diagram Interchange
XML XMI
XSLT
Goal: Forward EngineeringGoal: Forward Engineering
Mapping
ProcessAnalyst
Mapping
ProcessEngineer
Or evenRoundtrip?
Does that mean there are different models?Does that mean there are different models?
??
„Call Fraud-Service“
FraudService.checkFraud(customer)
Repository in Process Engine
BusinessModel
Model in Developer
Model in Execution
Developer Repository (SVN)
BPMN Repository
(Signavio)
LogicalModel
� Pool extraction
� Transform custom elements into standard language constructs
� Custom task service
� Localization
PatternsPatterns
Process Engine Abstraction Layer (PEAL)Process Engine Abstraction Layer (PEAL)
API
Application Services
ESB
BindingBPMN Modell
ProcessEngine
Connectivity
Services Application
ESB
Binding
Mapping
BPMN Modell
Example Code with PEALExample Code with PEAL
UserTask task3 = taskService.createTaskQuery().processInstanceId(pi.getId()).potentialOwner("mike").uniqueResult();
assertEquals("Specify Advertising strategy", assertEquals("Specify Advertising strategy", task3.getActivityName());
variables = new HashMap<String, Object>();variables.put("website_name", "SetpStone");task3.complete(variables);
pi.reload();assertTrue(pi.isEnded());
Changes to the jbpm 4 API are minimal (but can be bound tojbpm 3 and other engines as well)
+getValue()
+setValue()
DataObject
+getPersistentDataObject()
+setPersistentDataObject()
+getTransientDataObject()
+setTransientDataObject()
+...()
«interface»
DataObjectAware
1
getValue()
PersistentDataObject
getValue()
TransientDataObjectExecutionContext
DataObjectAwareExecutionContext
Data Object AbstractionData Object Abstraction
API
+getValue()
+setValue()
+getValue()
+setValue()
ContextInstace
DataObjectAware
ProcessInstance
DataObjectAware-NAME : String = "MyVariable"
MyPersistentDataObject
ContextInstance
ProcessInstance
1
1
1
Binding (e.g.jBPM 3)Project specific DataObjects jBPM 3
Abstraction of Service AdaptersAbstraction of Service Adapters
jBPM 3
API
Binding (e.g. jBPM 3)
Project specific adaptors
Why so complicated? Example with asynchronous Services
TX 1: create request
<<Node>>
Invoke ESB Service
TX 2: call EJB
TX 3: process response
jBPM job
Signal from JbpmCallback
ESB
EJB-Call without sync. result
jBPM Process
TX 1: create request
<<Node>>Invoke EJB
TX 2: call EJB
TX 3: process response
jBPM job
jBPM job
EJB-Call with sync. result
Process Engine Abstraction Layer (PEAL)Process Engine Abstraction Layer (PEAL)
API
Application Services
ESB
BindingBPMN Modell
ProcessEngine
Connectivity
Services Application
ESB
Binding
Mapping
BPMN Modell
Thank You!Thank You!camunda services GmbHZossener Str. 55-5810961 Berlin
Telefon: +49 30 664 0409-00
Telefax: +49 30 664 0409-29
Email: [email protected]
www.bpm-guide.de
The BPM Blog
@camunda.com
Consultant, trainer and software developer
Falko Menge
falko.menge
JUDCon
Berlin, 8 October 2010