Slide 1

Slide 1 text

Object–Business Process Mapping Frameworks: Abstractions, Architecture, and Implementation Rógel Garcia de Oliveira Marco Túlio Valente {rogelgarcia,mtov}@dcc.ufmg.br APPLIED SOFTWARE ENGINEERING RESEARCH GROUP

Slide 2

Slide 2 text

1. Overview 2. Abstractions 3. Architecture 4. Implementation 5. Evaluation 6. Conclusion Agenda EDOC, 2014 2

Slide 3

Slide 3 text

1. Overview

Slide 4

Slide 4 text

Information System BPMS Overview • Proprietary library. Lock in BPMS tool. • API expose low-level abstractions. • High learning curve. Challenges EDOC, 2014 4

Slide 5

Slide 5 text

void createProcessAndExecuteTask() { StatefulKnowledgeSession ks = createJbpmSession(" loanprocess . jbpm "); WorkflowProcessInstance pi = (WorkflowProcessInstance) ks.startProcess("process"); WorkItemNodeInstance wi = getWorkItem(pi, "approve transaction"); TransactionInfo ti = executeApproveTransaction(ks, wi, 1000); } WorkItemNodeInstance getWorkItem(WorkflowProcessInstance pi, String nodeName) { for (NodeInstance nodeInstance : pi.getNodeInstances()) if (nodeInstance.getNode().getName().equals(nodeName)) return (WorkItemNodeInstance) nodeInstance; return null; } TransactionInfo executeApproveTransaction(StatefulKnowledgeSession kSession, WorkItemNodeInstance wi, int value) { TransactionInfo ti = Application.approveTransaction(value); Map results = new HashMap(); results.put("transactionInfo", ti); kSession.getWorkItemManager().completeWorkItem(wi.getNodeId(), results); return ti; } Example – jBPM API EDOC, 2014 5

Slide 6

Slide 6 text

Proposed Solution Information System BPMS Object-Business Process Mapping Analogous to ORM (e. g. Hibernate) EDOC, 2014 6

Slide 7

Slide 7 text

Objectives • Standard integration to various BPMSs • Decouple IS from proprietary BPMS APIs • Reduce accidental complexity EDOC, 2014 7

Slide 8

Slide 8 text

2. Abstractions

Slide 9

Slide 9 text

Lifecycle Information System BPMS Object-Business Process Mapping 1 – Build the process 2 – Create the mapped interface 3 – Calls are intercepted and delegated to the BPMS EDOC, 2014 9

Slide 10

Slide 10 text

Lifecycle Information System BPMS 4 –Data is syncronized Object-Business Process Mapping Object-Business Process Mapping EDOC, 2014 10

Slide 11

Slide 11 text

Lifecycle Information System BPMS 5 – When a taks is executed, callbacks may be triggered in the information system Object-Business Process Mapping EDOC, 2014 11

Slide 12

Slide 12 text

Lifecycle Information System BPMS Object-Business Process Mapping EDOC, 2014 12

Slide 13

Slide 13 text

Modeling Business Processes with OO • Process – ID: bankLoanProcess EDOC, 2014 13

Slide 14

Slide 14 text

Mapped Interface @Process("bankLoanProcess") interface BankProcess { void approveTransaction(); } EDOC, 2014 14

Slide 15

Slide 15 text

Mapped Interface • Reveals process semantics • Accidental complexity is reduced • Independency of BPMS bankProcess.approveTransaction(); EDOC, 2014 15

Slide 16

Slide 16 text

Data • A process can have associated data – Process Dataset • Key-Value pairs – Process Attribute • Bank Loan Process – clientID Key Value clientID 456d EDOC, 2014 16

Slide 17

Slide 17 text

Process Dataset @Process("bankLoanProcess") interface BankProcess { void approveTransaction(); LoanData getLoanData(); } class LoanData { String clientID; //getter and setter omitted } bankProcess.getLoanData().getClientID(); EDOC, 2014 17

Slide 18

Slide 18 text

Callback • Allows BPMS to execute services in the Information System – Complementary to Mapped Interfaces • Tasks are represented by methods EDOC, 2014 18

Slide 19

Slide 19 text

Callback Class @Process("bankLoanProcess") class BankProcessCallback { void approveTransaction() { //extra behavior } } EDOC, 2014 19

Slide 20

Slide 20 text

Callback Class – Data access @Process("bankLoanProcess") class BankProcessCallback { LoanData loanData; void approveTransaction() { //extra behavior } } EDOC, 2014 20

Slide 21

Slide 21 text

3. Architecture

Slide 22

Slide 22 text

Architecture BPMS Workflow Connectivity Information System Object-Workflow Mapping EDOC, 2014 22

Slide 23

Slide 23 text

Workflow Connectivity – SPI BPMS X WFC API WFC Client DRIVER X String url = "jwfc:bpmsX:processFiles“; Session s = WorkflowManager.connect(url); String p = getProtocol(url); // bpmsX Driver driver = getDriver(p); Session s = driver.connect(url); class DriverX implements Driver { String getProtocol(){return “bpmsX";} SessionX connect(String url){....} } EDOC, 2014 23

Slide 24

Slide 24 text

Workflow Object Mapping Information System maps BPMS delegates Workflow Connectivity uses Object-Workflow Mapping provides EDOC, 2014 24

Slide 25

Slide 25 text

Workflow Object Mapping @Process("bankLoanProcess") interface BankProcess { void approveTransaction(); } class BankProcessImpl$$ implements BankProcess { ProcessInstance pi; void approveTransaction() { pi.getActivityByName("approveTransaction") .complete(); } } EDOC, 2014 25

Slide 26

Slide 26 text

Workflow Object Mapping @Process("bankLoanProcess") interface BankProcess { void approveTransaction(); } class BankProcessImpl$$ implements BankProcess { ProcessInstance pi; void approveTransaction() { pi.getActivityByName("approveTransaction") .complete(); } } EDOC, 2014 26

Slide 27

Slide 27 text

4. Implementation NextFlow

Slide 28

Slide 28 text

Example Configuration conf = new Configuration("jwfc:bpmsX:resources"); EDOC, 2014 28

Slide 29

Slide 29 text

Example Configuration conf = new Configuration("jwfc:bpmsX:resources"); conf.addCallbackClass(BankProcessCallback.class); EDOC, 2014 29

Slide 30

Slide 30 text

Example Configuration conf = new Configuration("jwfc:bpmsX:resources"); conf.addCallbackClass(BankProcessCallback.class); WorkflowObjectFactory factory = conf.createFactory(); EDOC, 2014 30

Slide 31

Slide 31 text

Example Configuration conf = new Configuration("jwfc:bpmsX:resources"); conf.addCallbackClass(BankProcessCallback.class); WorkflowObjectFactory factory = conf.createFactory(); BankProcess bp = factory.start(BankProcess.class); EDOC, 2014 31

Slide 32

Slide 32 text

Example Configuration conf = new Configuration("jwfc:bpmsX:resources"); conf.addCallbackClass(BankProcessCallback.class); WorkflowObjectFactory factory = conf.createFactory(); BankProcess bp = factory.start(BankProcess.class); bp.approveTransaction(); EDOC, 2014 32

Slide 33

Slide 33 text

4. Evaluation

Slide 34

Slide 34 text

Charging System • Credit transfer system • Two implementations – jBPM (native library) – NextFlow (with jBPM driver) EDOC, 2014 34

Slide 35

Slide 35 text

Charging System EDOC, 2014 35

Slide 36

Slide 36 text

Starting a new process jBPM API StatefulKnowledgeSession kSession = ...; Map params = new HashMap(); params.put("manager", (JbpmPhoneProcessManager) this); ProcessInstance p = kSession.startProcess(PROCESS_ID, params); NextFlow WorkflowObjectFactory factory = ...; ChargingProcess p = factory.start(ChargingProcess.class); EDOC, 2014 36

Slide 37

Slide 37 text

Data manipulation jBPM API WorkflowProcessInstance process = node.getProcessInstance(); Integer value = (Integer) process.getVariable("value"); String to = (String) process.getVariable("to"); Integer credit = chargingManager.getCreditFor(to); boolean enoughCredit = credit >= value; process.setVariable("enoughCredit", enoughCredit); NextFlow Integer credit = chargingManager.getCreditFor(data.getTo()); data.setEnoughtCredit(credit >= data.getValue()); EDOC, 2014 37

Slide 38

Slide 38 text

Metrics NextFlow • LOC: 330 (-30%) • Classes/Interfaces: 11 (-35%) • Char Count: 12.921 (-50%) • API Imports: 6 (-90%) jBPM API • LOC: 475 • Classes/Interfaces: 17 • Char Count: 25.500 • API Imports: 63 EDOC, 2014 38

Slide 39

Slide 39 text

5. Conclusion

Slide 40

Slide 40 text

Object-Business Process Mapping Framework • Less programming effort • Independency of BPMS • Reduction in accidental complexity • Process semantics is exposed EDOC, 2014 40

Slide 41

Slide 41 text

QUESTIONS? DANKE SCHÖN! www.nextflow.org