Devoxx Activiti in Action

Preview:

DESCRIPTION

 

Citation preview

Activiti in ActionTom Baeyens & Joram Barrez

Alfresco

1

Last year…• We talked about jBPM

• JBoss

• Things change

• BPMN 2.0

• Consolidating efforts

• Liberal license required

• Alfresco

• Warm heart

2

33

4

ECM + BPM

BPMN 2.0• OMG standard

–Shapes

–Execution semantics

–File format

• Membership

• First pure play BPM standard

• General endorsement

5

Activiti In Evolution

6

DSLs

Activiti & Java• Out-of-the-box

–Control flow

–Functional activity types

–Everything you exect in a typical BPM System

• But…–Not limited to out of the box

7

Activiti is an Embeddable Process Engine

8

Oracle || MySQL || PostgreSQL || Any DB…

Executions

History

.jar

Processes

Your Domain Tables

Any JavaEnvironment

Activiti Embeds In Your App• Embeds in

• Your database• Your transaction• Your domain model• Your tests• Your Spring configuration

9

TomcatJDK 5JBoss…

Oracle, MySQL, PostgreSQL

Activiti YourApp

Spring

Community

10

Community

11

12

Last year…

12

jBPM 3

jBPM 4

13

Today

13

14

What do you get?• World-class rock-solid BPM and workflow engine

14

Not only the engine?

15

Activiti ModelerActiviti

Modeler

Activiti CycleActiviti Cycle

Activiti ExplorerActiviti

Explorer

Activiti ProbeActiviti Probe

Activiti Designer

Activiti Designer

REST interfaceREST interface

iPhoneExploreriPhone

Explorer

Activiti EngineActiviti Engine

AndroidExplorerAndroidExplorer

Java ApplicationsJava Applications

16

Activiti Modeler• Webbased BPMN 2.0 graphical editor

16

17

Activiti Explorer• Task management

• Process instance inspection, reporting

17

18

Activiti Probe• System admin functionality

• Status overview, stuck jobs, exception inspection, logs, etc

18

19

Activiti Cycle• BPM collaboration … done right

19

Driven by

The Community!

Activiti REST API

20

• Remote communication regarless of the technology

• Activiti extension support, BPMN 2.0 validation, hierarchical modeling

Activiti Eclipse designer

21

Driven by

The Community!

• Pluggable activity support

Activiti Eclipse designer

22

Driven by

The Community!

• Mobile BPM == natural evolution of doing work

• Android client coming up!

Activiti & IPhone

23

Driven by

The Community!

• Grails convience capabilities• Typical configuration• Easy business archive deployment• Generate controllers/view/example app

Activiti Grails integration

24

Driven by

The Community!

Hello World

25

<process id=”helloWorldProcess" name=“My first process"> <startEvent id="theStart" /> <sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask" /> <userTask id="theTask" name="my task" /> <sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd" /> <endEvent id="theEnd" /> </process>

Activiti Modeler, MS Visio,Aris, (Oracle)

ProcessEngine engine= new ProcessEngineBuilder() .configureFromResource(“activiti.cfg.xml”) .buildProcessEngine();engine.getRuntimeService().startProcessInstanceByKey(“helloWorldProcess”);Task task = engine.getTaskService().createTaskQuery().singleResult();Engine.getTaskService().complete(task.getId());

Real-life demo

26

• Use case: banks shouldn’t lend money to just anybody• Thorough analysis is needed• All steps needs to be recorded in official documents• Decisions are done based on Excel decision tables

The mortgage process

27

The mortgage process

28

The mortgage process

29

= CMIS call

The power of Java

30

Out-of-the-box

Custom Java

The power of Java

31

public class CreateLoanApplicationDocument implements JavaDelegation {

public void execute(DelegateExecution execution) {

Session session = CmisUtil.createCmisSession("admin", "admin", Constants.ALFRESCO_URL); Folder folder = CmisUtil.getFolder(session, Constants.LOAN_APPLICATION_STORAGE_FOLDER); Document document = createWordDocument(session, folder, execution); storeDocumentReferencesAsProcessVariables(execution, folder, document); session.save(); }

The cool stuff

32

• That didn’t make it in the demo

• But is just too cool not to show you

• Unit test support

• Query API

• Spring integration

• Method expressions

• JPA integration

Unit testing your processes

33

• With Activiti, business processes

• Live and breath along your regular app code

• Should be tested just the same!

• Typical BPM vendor & testing

• Activiti supports Junit 3 & 4 and offers lots of convience while testing

Query API• No need to learn the intern data model • Powerful and uniform query API

• Deployments and process definitions

• Process instances and executions

• History

• Variables

• Tasks, jobs, users, groups, historic activities/process instances/variables, …

repositoryService.createProcessDefinitionQuery.keyLike(“%mortgage%”).latest();

runtimeService.createProcessInstanceQuery .processDefinitionKey(“mortgage-process)”.orderByProcessInstanceId().desc();

historyService.createHistoricActivityQuery().processDefinitionId(procDefId) .activityType(“userTask”).orderByDuration().asc();

runtimeService.createProcessInstanceQuery() .variableValueGreaterThan(“amount”, 50000);

Spring integration• ProcessEngine as a Spring bean

• Delegate to Spring beans

35

<bean id=“printer” …

Method expressions & JPA

36

Process variables

Spring bean

Decision based on JPA entity property

The Activiti Experience

37

• Satisfy your Activiti itch

• One-stop-shop download• http://activiti.org

• Demo: “The Activiti Experience”• Do you have an excuse for

not trying out Activiti tonight?

Did you like what you saw?

38

• We keep making Activiti better, every day.

• Help us today and tweet your enthousiasm!

• @johnpowell996 I saw #activiti on #devoxx and I like it!

John Powell

CEO Alfresco