Your SlideShare is downloading. ×
  • Like
community day 2013 - Consulting talks about camunda BPM Best Practices
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

community day 2013 - Consulting talks about camunda BPM Best Practices

  • 935 views
Published

 

Published in Technology , News & Politics
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
935
On SlideShare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
14
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Best Practices from Real-Life falko.menge@camunda.com bernd.ruecker@camunda.com
  • 2. Who we are What we do: • Trainings • Proof of Concepts • Pre-Sales • Coaching • Consulting • ... Consulting
  • 3. Real-Life @docs.camunda.org
  • 4. Examples
  • 5. Check out github
  • 6. And Tutorials and How-Tos
  • 7. Online Working Group Best Practices  Once a month  Always Mondays, 17.00 – 18.30  Hosted via WebEx  Currently in German
  • 8. Organization via Meetings and Confluence https://app.camunda.com/confluence/display/BestPractices/
  • 9. One example: Data in Processes
  • 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. 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. Patterns
  • 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. Imagine a Process Application my-application.war my-process MyClass.java task-form.xhtml some-library.jar Process Engine Container
  • 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. 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. 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. 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. 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. Now a couple of quickies We show different examples one minute each with automatic slide changes
  • 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. 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. 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. 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. 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. JMS
  • 27. Businss-IT-Alignment the process model a joined artifact!
  • 28. Incidents IncidentEntity newIncident = IncidentEntity.createAndInsertIncident( "myCustomIncidentType", execution.getId(), "my-incident-data", "A custom incident message."); newIncident.createRecursiveIncidents();
  • 29. cockpit PlugIns https://github.com/camunda/camunda-bpm-examples/ Showing: • Running • Incidents • Started in last 2 hours • Running longer than 24 hours
  • 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. done. now get going have fun in your projects and join the online working group