View
773
Download
0
Category
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
Recommended