Real-Life-BPM mit Java EE: Ein Erfahrungsbericht

487
-1

Published on

My talk on BPM at IHK-GfI I held at JAX 2013, Mainz.

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
487
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Real-Life-BPM mit Java EE: Ein Erfahrungsbericht

  1. 1. Oliver Marohn, Dr. Sven Jörges | IHK-GfI mbHReal-Life-BPM mit Java EEEin Erfahrungsbericht
  2. 2. • IT-Tochtergesellschaft der deutschenIndustrie- und Handelskammern (IHKs)und des Deutschen Industrie- undHandelskammertages (DIHK)• Seit mehr als 40 Jahren
  3. 3. Kunden• Die 80 deutschen IHKs und der DIHK.• Täglich bundesweit mehr als 8.000 IHK-MitarbeiterInnen.
  4. 4. Software-Landschaft
  5. 5. Motivation: Prozesse• insbes. im ERP-System EVAgenerischer Aufbau• Prozess-Know-how beimSachbearbeiter• Idee: Führung des Sachbearbeitersdurch Prozesse – mehr Transparenz inden Prozessen
  6. 6. Prozess-Management
  7. 7. Beispiel: Guthabenerstattung(Ist-Zustand)
  8. 8. Beispiel: Guthabenerstattung(mit Prozessunterstützung)
  9. 9. BPMN 2.0SaaSMandantenfähigkeitPerformance und VerfügbarkeitSupport
  10. 10. Auswahl und PoC
  11. 11. Quelle:
  12. 12. Quelle: 
  13. 13. Quelle: 
  14. 14. Oracle BPM SuiteBonita Open SolutionActiviti / camunda foxIBM Business Process ManagerIntalioactiveVOSjBPM
  15. 15. • Native BPMN Process Engine• Open Source (Apache License 2.0)• leichtgewichtigQuelle: http://www.activiti.org/userguide/Activiti
  16. 16. • Spezielle Unterstützung für JEE• Zusätzliche Tools (Monitoring, Tasklist, …)• Support durch camundacamunda fox
  17. 17. Quelle: 
  18. 18. Quelle: fox cockpitActivitiDrools
  19. 19. Aufbau der Process Engine
  20. 20. DeploymentEJBJAX-WS, XIHK
  21. 21. Beispiel-Client: EVA
  22. 22. Stolpersteine
  23. 23. BPMN 2.0SaaSMandantenfähigkeitPerformance und VerfügbarkeitSupport
  24. 24. Mandant aus Benutzername ableitbar:101joerges
  25. 25. Mandant aus Benutzername ableitbar:101joergesLösung:Konfiguration von DB-Schema-Präfixen in Activiti (ACT-565), seitActiviti 5.10
  26. 26. <!-- Kammer 101 --><bean id="processEngineConfiguration101" class=… ><property name="processEngineName" value="101" /><property name="dataSource" ref="containerDataSource" />…<property name="databaseTablePrefix" value="ACT101_04." /></bean><!-- Kammer 106 --><bean id="processEngineConfiguration106" class=…><property name="processEngineName" value="106" /><property name="dataSource" ref="containerDataSource" />…<property name="databaseTablePrefix" value="ACT106_04." /></bean>activiti.cfg.xml:
  27. 27. ProcessEngineConfiguration config =ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration101");ProcessEngine engine101 = config.buildProcessEngine();
  28. 28. BPMN 2.0SaaSMandantenfähigkeitPerformance und VerfügbarkeitSupport
  29. 29. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()
  30. 30. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()Problem:„Query-API“ von Activitifür unsere Anforderungen unzureichend
  31. 31. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()Problem:„Query-API“ von Activitifür unsere Anforderungen unzureichend
  32. 32. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()taskService.createTaskQuery().taskOwner("101joerges").taskPriority(50).orderByDueDate().asc().list()
  33. 33. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()taskService.createTaskQuery().taskOwner("101joerges").taskPriority(50).orderByDueDate().asc().list()
  34. 34. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()taskService.createTaskQuery().taskOwner("101joerges").taskPriority(50).orderByDueDate().asc().list()
  35. 35. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()taskService.createTaskQuery().taskOwner("101joerges").taskPriority(50).orderByDueDate().asc().list()Lösung:Eigene Queries mittels MyBatis
  36. 36. taskService.createTaskQuery().taskAssignee("101joerges").taskPriority(50).orderByDueDate().asc().list()taskService.createTaskQuery().taskOwner("101joerges").taskPriority(50).orderByDueDate().asc().list()Lösung:Eigene Queries mittels MyBatis
  37. 37. BPMN 2.0SaaSMandantenfähigkeitPerformance und VerfügbarkeitSupport
  38. 38. <userTask activiti:formKey="Dummy“ …><extensionElements><activiti:formProperty id="nichtLesbaresProperty"name="Nicht lesbar" readable="false"/><activiti:formProperty id="nichtSchreibbaresProperty"name="Nicht schreibbar" writable="false"/><activiti:formProperty id="schreibbaresProperty"name="Schreibbar" writable="true"/><activiti:formProperty id="schreibbaresMussProperty"name="Schreibbar und Muss" required="true" writable="true"/></extensionElements>…</userTask>
  39. 39. <userTask activiti:formKey="Dummy“ …><extensionElements><activiti:formProperty id="nichtLesbaresProperty"name="Nicht lesbar" readable="false"/><activiti:formProperty id="nichtSchreibbaresProperty"name="Nicht schreibbar" writable="false"/><activiti:formProperty id="schreibbaresProperty"name="Schreibbar" writable="true"/><activiti:formProperty id="schreibbaresMussProperty"name="Schreibbar und Muss" required="true" writable="true"/></extensionElements>…</userTask>Quelle: http://www.activiti.org/userguide/
  40. 40. <userTask activiti:formKey="Dummy“ …><extensionElements><activiti:formProperty id="nichtLesbaresProperty"name="Nicht lesbar" readable="false"/><activiti:formProperty id="nichtSchreibbaresProperty"name="Nicht schreibbar" writable="false"/><activiti:formProperty id="schreibbaresProperty"name="Schreibbar" writable="true"/><activiti:formProperty id="schreibbaresMussProperty"name="Schreibbar und Muss" required="true" writable="true"/></extensionElements>…</userTask>
  41. 41. <userTask activiti:formKey="Dummy“ …><extensionElements><activiti:formProperty id="nichtLesbaresProperty"name="Nicht lesbar" readable="false"/><activiti:formProperty id="nichtSchreibbaresProperty"name="Nicht schreibbar" writable="false"/><activiti:formProperty id="schreibbaresProperty"name="Schreibbar" writable="true"/><activiti:formProperty id="schreibbaresMussProperty"name="Schreibbar und Muss" required="true" writable="true"/></extensionElements>…</userTask>{“actionId“ : “Bankverbindung“,“actionName“ : “Bankverbindung pflegen…“,“tabName“ : “Bankverbindung“}
  42. 42. Was kommt noch?
  43. 43. MaskengenerierungForm PropertiesUI-DescriptionDSL(s)
  44. 44. „Versionshölle“
  45. 45. Fazit
  46. 46. Activiti + JEE =Process Engineauf Enterprise-Niveau
  47. 47. Erfolgsfaktor Open SourceDo it yourself! Frage die Community!Contribute!
  48. 48. E-Mail: marohn@gfi.ihk.de, joerges@gfi.ihk.deWebsite: www.ihk-gfi.deTwitter: http://www.twitter.com/ihkgfi/Facebook: http://www.facebook.com/ihkgfiIHK Gesellschaft fürInformationsverarbeitung mbHEmil-Figge-Str. 8644227 DortmundFon: 0231 / 9746 – 0Fax: 0231 / 9746 – 111E-Mail: info@gfi.ihk.de

×