Activiti in action - Tom Bayens dec 14, 2010

36
Activiti in Action Tom Baeyens & Joram Barrez Activiti in Action Tom Baeyens & Joram Barrez 14 december 2010

Transcript of Activiti in action - Tom Bayens dec 14, 2010

Activiti in Action

Tom Baeyens & Joram Barrez

Activiti in Action

Tom Baeyens & Joram Barrez

14 december 2010

22

ECM + BPM ECM + BPM

3

BPMN 2.0BPMN 2.0

● OMG standard● Shapes● Execution

semantics● File format

● Membership

● First pure play BPM standard

● General endorsement● General endorsement

4

Activiti In EvolutionActiviti In Evolution

DSLsDSLs

5

Activiti & JavaActiviti & Java

● Out-of-the-box● Control flow● Functional

activity types● Everything you

exect in a typical BPM SystemBPM System

● But…● Not limited to out of the box● Not limited to out of the box

6

Activiti is an Embeddable Process Engine

Activiti is an Embeddable Process Enginegg

.jarAny JavaEnvironmentEnvironment

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

Executions HistoryProcesses

7

Executions HistoryProcesses

Your Domain Tables

Activiti Embeds In Your AppActiviti Embeds In Your App

● Embeds in • Your database• Your transaction

Your domain model• Your domain model• Your tests• Your Spring configurationYour Spring configuration

TomcatJDK 5

Activiti YourApp

JBoss…

Oracle, MySQL, PostgreSQLpp

Spring

8

CommunityCommunity

9

CommunityCommunity

10

The past …The past …

jBPM 3

jBPM 4

1111

TodayToday

1212

What do you get?What do you get?

● World-class rock-solid BPM and workflow engine g

1313

Not only the engine?Not only the engine?

Activiti Modeler

Java ApplicationsJava Applications

Activiti Designer

Activiti Probe

Activiti EngineActiviti Engine

Activiti Explorer

EngineEngine

Activiti Cycle

p

REST interfaceCycle

iPhoneExploreriPhoneExplorer

AndroidExplorerAndroidExplorer

14

Activiti ModelerActiviti Modeler

● Webbased BPMN 2.0 graphical editor g p

1515

Activiti ExplorerActiviti Explorer

● Task management

● Process instance inspection, reporting

1616

Activiti ProbeActiviti Probe

● System admin functionality y y

● Status overview, stuck jobs, exception inspection, logs, …

1717

Activiti CycleActiviti Cycle

● BPM collaboration … done rightg

1818

Activiti REST APIActiviti REST API

• Remote communication regardless of the technology

19

Activiti Eclipse designerActiviti Eclipse designer

• Activiti extension support, BPMN 2.0 validation, hierarchical modeling

20

Activiti Eclipse designerActiviti Eclipse designer

• Pluggable activity support

21

Activiti & IPhoneActiviti & IPhone

• Mobile BPM == natural evolution of doing work• Android client coming up!

22

Activiti Grails integrationActiviti Grails integration

• Grails convience capabilitiesT i l fi i• Typical configuration

• Easy business archive deploymentG t t ll / i / l• Generate controllers/view/example app

23

Hello WorldHello World

Activiti Modeler, MS Visio,MS Visio,Aris, (Oracle)

<process id=”helloWorldProcess" name=“My first process">

<startEvent id="theStart" /><sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask" />sequenceFlow id flow1 sourceRef theStart targetRef theTask /<userTask id="theTask" name="my task" /> <sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd" /><endEvent id="theEnd" />

</process>

ProcessEngine engine= new ProcessEngineBuilder()ProcessEngine engine= new ProcessEngineBuilder().configureFromResource(“activiti.cfg.xml”).buildProcessEngine();

engine getRuntimeService() startProcessInstanceByKey(“helloWorldProcess”);

24

engine.getRuntimeService().startProcessInstanceByKey( helloWorldProcess );Task task = engine.getTaskService().createTaskQuery().singleResult();Engine.getTaskService().complete(task.getId());

Real‐life demoReal‐life demo

• 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

25

The mortgage processThe mortgage process

26

The mortgage processThe mortgage process

27

The mortgage processThe mortgage process

= CMIS call

28

The power of JavaThe power of Java

Out‐of‐the‐box

Custom Java

29

The power of JavaThe power of Java

public class CreateLoanApplicationDocument implements JavaDelegation {

public void execute(DelegateExecution execution) {p ( g ) {

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();

30

session.save();}

The cool stuffThe cool stuff

• That didn’t make it in the demo• But is just too cool not to show you

• Unit test supportUnit test support• Query API

Spring integration• Spring integration• Method expressions• JPA integration

31

Unit testing your processesUnit testing your processes

• With Activiti, business processes• Live and breath along your regular app code• Should be tested just the same!Should be tested just the same!

• Typical BPM vendor & testing

• Activiti supports Junit 3 & 4 and offers lots of ct t suppo ts Ju t 3 & a d o e s ots oconvience while testing

32

Query APIQuery API

• No need to learn the intern data model P f l d if API• Powerful and uniform query API

• Deployments and process definitionsrepositoryService createProcessDefinitionQuery keyLike(“%mortgage%”) latest();

• Process instances and executionsrepositoryService.createProcessDefinitionQuery.keyLike( %mortgage% ).latest();

runtimeService createProcessInstanceQuery

• History

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

historyService.createHistoricActivityQuery().processDefinitionId(procDefId)

• Variables

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

runtimeService.createProcessInstanceQuery()

• Tasks jobs users groups historic activities/process

Q y().variableValueGreaterThan(“amount”, 50000);

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

Spring integrationSpring integration

• ProcessEngine as a Spring bean

• Delegate to Spring beansg p g

<bean id=“printer” …

34

Method expressions & JPAMethod expressions & JPA

Decision based on JPA entity property

Spring beanJPA entity property

Process variables

35

The Activiti ExperienceThe Activiti Experience

• Satisfy your Activiti itchy y

• One‐stop‐shop downloadOne stop shop download• http://activiti.org

• Demo: “The Activiti Experience”• Do you have an excuse for not• Do you have an excuse for not trying out Activiti tonight?

36