camelone 2012 - bpm beyond web services

55
www.mwea.de BPM beyond Web Services Kai Wähner +

Upload: kai-waehner

Post on 11-Nov-2014

6.453 views

Category:

Technology


0 download

DESCRIPTION

Business Process Management (BPM) beyond Web Services with Apache Camel and Activiti at CamelOne 2012 in Boston.

TRANSCRIPT

Page 1: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPM beyond Web Services

Kai Wähner

+

Page 2: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Kai Wähner

16.05.2012 Seite 2 Kai Wähner

Main Tasks Evaluation of Technologies and Products

Requirements Engineering Enterprise Architecture Management

Business Process Management Architecture and Development of Applications

Planning and Introduction of SOA Integration of Legacy Applications

Cloud Computing

Contact Email: [email protected] Blog: www.kai-waehner.de/blog

Twitter: @KaiWaehner Social Networks: Xing, LinkedIn

Consulting Developing Speaking Coaching Writing

Page 3: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

What is the Key Message?

16.05.2012 Seite 3 Kai Wähner

Page 4: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPM should be used for optimizing business processes!

Key Messages

16.05.2012 Seite 4 Kai Wähner

Page 5: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPM should be used for optimizing business processes!

BPM should NOT be used for systems integration!

Key Messages

16.05.2012 Seite 5 Kai Wähner

Page 6: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPM should be used for optimizing business processes!

BPM should NOT be used for systems integration!

Activiti and Apache Camel are a perfect combination!

Key Messages

16.05.2012 Seite 6 Kai Wähner

Page 7: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

1)  Business Process Management (BPM)

2)  Activiti

3)  Apache Camel

4)  Combination of Activiti and Apache Camel

Agenda

16.05.2012 Seite 7 Kai Wähner

Page 8: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

1)   Business Process Management (BPM)

2)  Activiti

3)  Apache Camel

4)  Combination of Activiti and Apache Camel

Agenda

16.05.2012 Seite 8 Kai Wähner

Page 9: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPM attempts to improve processes continuously. It can therefore be described as a "process optimization process.“

Wikipedia

What is Business Process Management (BPM)?

16.05.2012 Seite 9 Kai Wähner

Page 10: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

increase efficiency better quality reduce costs

enable new business models

Why BPM?

16.05.2012 Seite 10 Kai Wähner

Business-IT-Alignment

Page 11: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

How to do BPM?

16.05.2012 Seite 11 Kai Wähner

Page 12: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Standards

16.05.2012 Seite 12 Kai Wähner

BPM

BPEL BPMN

XPDL WF-XML

BPEL4People

jPDL

ARIS EPC

Page 13: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Standards

16.05.2012 Seite 13 Kai Wähner

BPM

BPEL BPMN

XPDL WF-XML

BPEL4People

jPDL

ARIS EPC

Page 14: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPMN

16.05.2012 Seite 14 Kai Wähner

Business Process Model and Notation (BPMN) is a graphical representation for specifying business processes in a business process model.

Wikipedia

Page 15: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

• BPMN is a standard notation for designing business processes (versus: UML is a standard modeling language best suited for designing and implementing software)

• not just flow charts! sufficient restrictions / constraints => executable!

• standardized XML format

• orchestration and choreography

• extension points => add specific needs without breaking interoperability

• optional mapping of a BPMN subset to BPEL (restricted to block-structured flows without cycles)

BPMN 2.0

16.05.2012 Seite 15 Kai Wähner

Page 16: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPMN 2.0

16.05.2012 Seite 16 Kai Wähner

Page 17: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPMN 2.0

16.05.2012 Seite 17 Kai Wähner

20-80 rule

Page 18: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

•  long-running stateful workflows •  frequently changing processes •  human interaction

When to use BPM?

16.05.2012 Seite 18 Kai Wähner

Page 19: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

http://www.activevos.com/blog/soa/the-four-myths-of-bpm-projects-what-it-project-teams-need-to-know/2011/01/18/

16.05.2012 Seite 19 Kai Wähner

1) Business analysts will create executable process models

2) Business analysts can create executable process models

3) Business analysts want to create executable process models

4) IT wants business analysts to create executable process models

The Four Myths of BPM Projects

Page 20: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

1)  Business Process Management (BPM)

2)   Activiti

3)  Apache Camel

4)  Combination of Activiti and Apache Camel

Agenda

16.05.2012 Seite 20 Kai Wähner

Page 21: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Alternatives for BPM

16.05.2012 Seite 21 Kai Wähner

Complexity of Orchestration

Low High

BPM Framework

BPM Suite

No Tool

Page 22: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Alternatives for BPM

16.05.2012 Seite 22 Kai Wähner

Complexity of Orchestration

Low High

BPM Framework

BPM Suite

No Tool

Activiti vs. JBoss jBPM vs. Bonita vs. ProcessMaker

Page 23: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

•  open source (Apache License) •  BPMN 2.0 process engine •  lightweight •  easy to use •  Java API •  developer-focused •  embeddable

What is Activiti?

16.05.2012 Seite 23 Kai Wähner

Page 24: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Tool Stack

16.05.2012 Seite 24 Kai Wähner

Process Engine

Activiti Modeler Activiti Designer

Activiti Explorer camunda fox style

Page 25: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

How does Activiti work?

16.05.2012 Seite 25 Kai Wähner

•  BPMN 2.0 process engine •  state machine with one active state •  execution progresses via transitions •  most BPMN 2.0 elements are implemented as a state •  states are connected with leaving and arriving transitions (called sequence flows) •  every state (i.e. its corresponding BPMN 2.0 element) can have a piece of logic attached

(executed when the process instance enters the state)

Page 26: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Services RuntimeService TaskService FormService HistoryService IdentityService ManagementService RepositoryService

Actviti Engine API

16.05.2012 Seite 26 Kai Wähner

Service Tasks (BPMN Standard) Web Service Task Script Task (e.g. Groovy or JavaScript) User Task Business Rule Task

Service Tasks (Activiti Extensions) Java Tasks Spring Service Task ... more

Page 27: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

<process id="bookorder" name="Order book"> <startEvent id="startevent1" name="Start"/> <sequenceFlow id="sequenceflow1" name="Validate order"

sourceRef="startevent1" targetRef="scripttask1"/> <scriptTask id="scripttask1" name="Validate order“ scriptFormat="groovy"> <script>out:println "validating order for isbn " + isbn;</script> </scriptTask>

<sequenceFlow id="sequenceflow2" name="Ending process" sourceRef="usertask1" targetRef="endevent1"/> <endEvent id="endevent1" name="End"/> </process>

Code Example (BPMN Process)

16.05.2012 Seite 27 Kai Wähner

Page 28: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

ProcessEngine processEngine = ProcessEngineConfiguration .createStandaloneInMemProcessEngineConfiguration() .buildProcessEngine();

RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); repositoryService.createDeployment()

.addClasspathResource("bookorder.simple.bpmn20.xml") .deploy(); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey( "simplebookorder");

assertNotNull(processInstance.getId()); System.out.println("id " + processInstance.getId() + " " + processInstance.getProcessDefinitionId());

Code Example (Activiti Java API)

16.05.2012 Seite 28 Kai Wähner

Page 29: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Use Case

16.05.2012 Seite 29 Kai Wähner

Start Event

Script Task

Service Task

User Task

End Event

Automatic Automatic Manual

Page 30: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Activiti in Action

Live Demo

16.05.2012 Seite 30 Kai Wähner

Page 31: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

1)  Business Process Management (BPM)

2)  Activiti

3)   Apache Camel

4)  Combination of Activiti and Apache Camel

Agenda

16.05.2012 Seite 31 Kai Wähner

Page 32: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Apache Camel

16.05.2012 Seite 32 Kai Wähner

Page 33: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Apache Camel

16.05.2012 Seite 33 Kai Wähner

Come on, guys! We are at

Page 34: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Alternatives for Systems Integration

16.05.2012 Seite 34 Kai Wähner

Complexity of Integration

Low High

Integration-Framework

Enterprise Service Bus (ESB)

No Tool

Page 35: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Alternatives for Systems Integration

16.05.2012 Seite 35 Kai Wähner

Complexity of Integration

Low High

Integration-Framework

Enterprise Service Bus (ESB)

No Tool

Apache Camel vs. Spring Integration vs. Mule ESB http://www.kai-waehner.de/blog/2012/01/10/spoilt-for-choice-which-integration-framework-to-use-spring-integration-mule-esb-or-apache-camel

Page 36: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Why Apache Camel?

16.05.2012 Seite 36 Kai Wähner

•  Standardized Modeling •  Efficient Realization •  Developer-focused •  Automatic Testing •  Many Components •  Several DSLs •  Awesome Community

Page 37: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

1)  Business Process Management (BPM)

2)  Activiti

3)  Apache Camel

4)   Combination of Activiti and Apache Camel

Agenda

16.05.2012 Seite 37 Kai Wähner

Page 38: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Apache Camel + Activiti

16.05.2012 Seite 38 Kai Wähner

Page 39: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPMN Integration

16.05.2012 Seite 39 Kai Wähner

Script Task Service Task

Groovy JavaScript

etc.

Java SOAP Web Service

Everything (from Cobol to Ruby)

Page 40: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Reinventing the Wheel ...

16.05.2012 Seite 40 Kai Wähner

Page 41: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Spaghetti Solutions

16.05.2012 Seite 41 Kai Wähner

Page 42: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Separation of Concerns

16.05.2012 Seite 42 Kai Wähner

Page 43: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Both can realize processes. Both can integrate services.

Overlappings?

16.05.2012 Seite 43 Kai Wähner

Page 44: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Both can realize processes. Both can integrate services.

Overlappings?

16.05.2012 Seite 44 Kai Wähner

•  Support for long running stateful processes •  Human workflow integration

Page 45: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Both can realize processes. Both can integrate services.

Overlappings?

16.05.2012 Seite 45 Kai Wähner

•  Support for long running stateful processes •  Human workflow integration

•  Connectivity / Adaptors to connect to external systems using a variety of different protocols  •  Predefined EIP for message routing

http://www.pleus.net/blog/?p=1028

Page 46: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Both ...

•  ... are lightweight •  ... are open source •  ... are developer-focused •  ... offer combination out-of-the-box

Activiti + Apache Camel

16.05.2012 Seite 46 Kai Wähner

+

Page 47: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

<serviceTask id="myServiceTask"

activiti:delegateExpression="${camelBehaviour}" />

<sequenceFlow sourceRef="myServiceTask" targetRef="myUserTask" />

Connecting BPMN, Activiti and Camel

16.05.2012 Seite 47 Kai Wähner

<bean id="camelBehaviour" class="org.activiti.camel.CamelBehaviour"> <constructor-arg index="0"> <list> <bean class="org.activiti.camel.SimpleContextProvider"> <constructor-arg index="0" value="activitiCamelProcess" /> <constructor-arg index="1" ref="camelContext" /> </bean> </list> </constructor-arg> </bean>

BPMN - Java Service Task

Spring Bean

BPMN Process Instance

CamelContext

Page 48: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

// Producer => Call Activiti process from Camel from("direct:start")

.to("activiti:myProcess");

// Consumer => Get called from Activiti process from("activiti:myProcess:myServiceTask") .log(LoggingLevel.INFO, "Received message on service task ${property.var1}") .setProperty("var2").constant("world")

.setBody().properties();

Camel Route using Activiti Component

16.05.2012 Seite 48 Kai Wähner

Page 49: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Activiti and Apache Camel combined ...

Live Demo

16.05.2012 Seite 49 Kai Wähner

Page 50: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Did you get the Key Message?

16.05.2012 Seite 50 Kai Wähner

Page 51: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

BPM should be used for optimizing business processes!

BPM should NOT be used for systems integration!

Activiti and Apache Camel are a perfect combination!

Key Messages

16.05.2012 Seite 51 Kai Wähner

Page 52: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Did you get the Key Message?

16.05.2012 Seite 52 Kai Wähner

Page 53: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Whet your appetite?

16.05.2012 Seite 53 Kai Wähner

Page 54: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

Become a Part of the Open Source Community

16.05.2012 Seite 54 Kai Wähner

Page 55: CamelOne 2012 - BPM beyond Web Services

www.mwea.de

= BPM beyond Web Services

Thank you for your Attention. Any Questions?

Kai Wähner

Kai Wähner

MaibornWolff et al: www.mwea.de

Email: [email protected] Twitter: @KaiWaehner Blog: www.kai-waehner.de/blog

+