Your SlideShare is downloading. ×
0
Best Practices from Real-Life
falko.menge@camunda.com
bernd.ruecker@camunda.com
Who we are

What we do:
• Trainings
• Proof of Concepts
• Pre-Sales
• Coaching
• Consulting
• ...

Consulting
Real-Life @docs.camunda.org
Examples
Check out github
And Tutorials and How-Tos
Online Working Group Best Practices
 Once a month
 Always Mondays, 17.00 – 18.30

 Hosted via WebEx
 Currently in Germ...
Organization via Meetings and Confluence

https://app.camunda.com/confluence/display/BestPractices/
One example: Data in Processes
Normally: References

UI
Process Id

666

Name

camunda

Zossener Str.

Zip

10961

City

Berlin

Country

…

do something...
External Data
Process Variable

External Data
(Reference and Service Call)

VARIABLE
orderId
...

19
...

VARIABLE
var1
Va...
Patterns
Process Versioning
Default Behavior:

1. New version created in DB upon each change in BPMN XML
2. New process instances s...
Imagine a Process Application

my-application.war
my-process
MyClass.java
task-form.xhtml

some-library.jar

Process Engin...
Small Changes: Bugfixes or Minor Feature Additions
 Add version number to affected artifacts:

my-application.war
my-proc...
Running Multiple Versions in Parallel

my-application-v1.0.war

my-application-v2.0.war

my-process-v1.0

my-process-v2.0
...
Running Multiple Versions in Parallel
 Maven Resource Filtering for getting major and minor version
number into BPMN proc...
Alternative: Multiple Apps register for same Process
<process id="my-process" version="1.0" …

my-application-v1.0.war

my...
Process Application registers for selected Process Versions
<process id="my-process" version="1.0" …

@ProcessApplication
...
Now a couple of quickies

We show

different examples

one minute each
with automatic slide changes
Liferay

Variant 3
1 Portlet per Task Form

Variant 1
Task Form = simple HTML snippet

load HTML

tasklist.war
pa1.war

ge...
Liferay

Variant 3
1 Portlet per Task Form

Variant 1
Task Form = simple HTML snippet

load HTML

tasklist.war
pa1.war

ge...
Liferay

Variant 3
1 Portlet per Task Form

Variant 1
Task Form = simple HTML snippet

load HTML

tasklist.war
pa1.war

ge...
Asynchronous Continuation & Error Handling
camunda BPM Job Executor
Thread

Application / Client Thread
taskService.comple...
Remove the need for an ESB

Sched.

Input
Management
BPMN

Entities

Deleg.

UI

Rules

Business
Mandanten
Mandanten
Deplo...
JMS
Businss-IT-Alignment

the process model
a joined artifact!
Incidents
IncidentEntity newIncident
= IncidentEntity.createAndInsertIncident(
"myCustomIncidentType", execution.getId(),
...
cockpit PlugIns
https://github.com/camunda/camunda-bpm-examples/

Showing:
• Running
• Incidents
• Started in last 2 hours...
Process Engine Plugins e.g. Task Name Beautifier
 Dynamically modify a task during its creation in a task list
 “Task wi...
done.
now

get going

have fun

in your

projects
and

join the

online
working group
community day 2013 - Consulting talks about camunda BPM Best Practices
community day 2013 - Consulting talks about camunda BPM Best Practices
community day 2013 - Consulting talks about camunda BPM Best Practices
Upcoming SlideShare
Loading in...5
×

community day 2013 - Consulting talks about camunda BPM Best Practices

1,132

Published on

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,132
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
20
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "community day 2013 - Consulting talks about camunda BPM Best Practices"

  1. 1. Best Practices from Real-Life falko.menge@camunda.com bernd.ruecker@camunda.com
  2. 2. Who we are What we do: • Trainings • Proof of Concepts • Pre-Sales • Coaching • Consulting • ... Consulting
  3. 3. Real-Life @docs.camunda.org
  4. 4. Examples
  5. 5. Check out github
  6. 6. And Tutorials and How-Tos
  7. 7. Online Working Group Best Practices  Once a month  Always Mondays, 17.00 – 18.30  Hosted via WebEx  Currently in German
  8. 8. Organization via Meetings and Confluence https://app.camunda.com/confluence/display/BestPractices/
  9. 9. One example: Data in Processes
  10. 10. Normally: References UI Process Id 666 Name camunda Zossener Str. Zip 10961 City Berlin Country … do something Customer Id Address Current Activity 15487 DE Data in Process Context PE DB Domain Data
  11. 11. External Data Process Variable External Data (Reference and Service Call) VARIABLE orderId ... 19 ... VARIABLE var1 Var2 ... value1 18 ... Scope „Process“ ORDER 19 20 ... Scope „Process“ Process Engine Tables ... ... ... ... ... ... Scope „Data“ Process Engine Tables Entity Tables
  12. 12. Patterns
  13. 13. Process Versioning Default Behavior: 1. New version created in DB upon each change in BPMN XML 2. New process instances start with the latest version 3. Running process instances continue using the version they started with  It is normal to have multiple process versions in parallel.
  14. 14. Imagine a Process Application my-application.war my-process MyClass.java task-form.xhtml some-library.jar Process Engine Container
  15. 15. Small Changes: Bugfixes or Minor Feature Additions  Add version number to affected artifacts: my-application.war my-process Limitations MyClass.java  Doesn’t work for libraries MyClassV2.java  Complete redesign => Version 2.0 task-form.xhtml task-form-v2.xhtml some-library.jar
  16. 16. Running Multiple Versions in Parallel my-application-v1.0.war my-application-v2.0.war my-process-v1.0 my-process-v2.0 MyClass.java MyClass.java task-form.xhtml task-form.xhtml some-library-v1.0.jar some-library-v2.0.jar Process Engine JPA, EJB, JTA Container …
  17. 17. Running Multiple Versions in Parallel  Maven Resource Filtering for getting major and minor version number into BPMN process id (=process definition key)  Process Definition Isolation  Include major and minor version in final name  Class Loader Isolation  Build Helper Plugin to parse version number
  18. 18. Alternative: Multiple Apps register for same Process <process id="my-process" version="1.0" … my-application-v1.0.war my-application-v2.0.war my-process my-process MyClass.java MyClass.java task-form.xhtml task-form.xhtml some-library-v1.0.jar some-library-v2.0.jar Process Engine JPA, EJB, JTA Container …
  19. 19. Process Application registers for selected Process Versions <process id="my-process" version="1.0" … @ProcessApplication public class MyProcessAppliaction extends EjbProcessApplication { @PostDeploy public void registerProcessApplication( ProcessEngine processEngine, ProcessApplicationInfo processApplicationInfo ){ // Find Process Version based on XML attribute … // Register Process Archive for Process Version processEngine.getManagementService() .registerProcessApplication( processDefinitionDeploymentId, processApplicationReference); } }
  20. 20. Now a couple of quickies We show different examples one minute each with automatic slide changes
  21. 21. Liferay Variant 3 1 Portlet per Task Form Variant 1 Task Form = simple HTML snippet load HTML tasklist.war pa1.war generic form portlet pa2.war tasklist.war Variant 2 1 Form Portlet per Deployment … pa1.war Variant 4 Single Deployment tasklist.war generic form portlet generic form portlet pa1.war tasklist.war
  22. 22. Liferay Variant 3 1 Portlet per Task Form Variant 1 Task Form = simple HTML snippet load HTML tasklist.war pa1.war generic form portlet pa2.war tasklist.war Variant 2 1 Form Portlet per Deployment … pa1.war Variant 4 Single Deployment tasklist.war generic form portlet generic form portlet <bpmn2:userTask tasklist.war id="UserTask_2" name="Task 2„ pa1.war camunda:formKey="TaskFormPortlet,someText,datum" >
  23. 23. Liferay Variant 3 1 Portlet per Task Form Variant 1 Task Form = simple HTML snippet load HTML tasklist.war pa1.war generic form portlet pa2.war tasklist.war Variant 2 1 Form Portlet per Deployment … pa1.war Variant 4 Single Deployment tasklist.war generic form portlet generic form portlet <bpmn2:userTask tasklist.war id="UserTask_2" name="Task 2„ pa1.war camunda:formKey="TaskFormPortlet,someText,datum" >
  24. 24. Asynchronous Continuation & Error Handling camunda BPM Job Executor Thread Application / Client Thread taskService.complete(id) 2 3 1 1st TX camunda:async=‘‘true“ 2nd TX 3rd TX public class AsyncOnErrorActivityBehavior extends TaskActivityBehavior implements ActivityBehavior { public void execute(ActivityExecution execution) throws Exception { … try { executeBusinessLogic(execution); leave(execution); } catch (Exception e) { createAsynchronousContinuationJob(execution, e); } …
  25. 25. Remove the need for an ESB Sched. Input Management BPMN Entities Deleg. UI Rules Business Mandanten Mandanten Deployment Deployment Deployment Entities Sched. Deleg. BPMN Globale Processes CRM async Java EE (JPA, EJB, JTA, …) Process Engine Configuration Repository JBoss AS JBoss AS Job Execution Engine
  26. 26. JMS
  27. 27. Businss-IT-Alignment the process model a joined artifact!
  28. 28. Incidents IncidentEntity newIncident = IncidentEntity.createAndInsertIncident( "myCustomIncidentType", execution.getId(), "my-incident-data", "A custom incident message."); newIncident.createRecursiveIncidents();
  29. 29. cockpit PlugIns https://github.com/camunda/camunda-bpm-examples/ Showing: • Running • Incidents • Started in last 2 hours • Running longer than 24 hours
  30. 30. Process Engine Plugins e.g. Task Name Beautifier  Dynamically modify a task during its creation in a task list  “Task with terri- bly long name” => “Task with terribly long name”  TaskListener  BpmnParseListener  ProcessEnginePlugin
  31. 31. done. now get going have fun in your projects and join the online working group
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×