Die Process Virtual Machine
   Das Hibernate des BPM?

      Matheman Herbstcampus
           Nürnberg, 17.09.2008
       ...
Bernd Rücker
  Wer bin ich?

      • Berater, Trainer, Coach
      • Softwareentwickler
      • Committer im JBoss jBPM-Pr...
Agenda
  Geschäftsprozess und Regeln

      •     Einführung BPM (Business Process Management)
      •     Die Process Vir...
Geschäftsprozesse & Software
  Der Status Quo in manchen Unternehmen




                      GUI
                       ...
Ein „digitaler“ Prozess
  mit Business Process Engine



                                               Δ Durchlaufzeit


...
Process Execution
  Business Process Engine

                               1.) Aufgabe erzeugen         1.) System aufruf...
Integration: BPM & SOA




                                               Quelle: Nicolai Josuttis
                       ...
Business Process Engine
  Middleware für Geschäftsprozesse




                              Business Analyst            S...
Was leistet die Business Process Engine
  Features

      • Versionierung, Persistenz & Interpretation von
        Prozess...
Process Execution Languages
  Welche Sprache spricht BPM?




                                          Standards
        ...
Sprachen heute: Was nehmen?
  Komplexität, LOC, Mächtigkeit,
  Komplexität LOC Mächtigkeit Standards?

                   ...
Motivation Process Virtual Machine
  JBoss PVM

      • Es existieren verschiedenste Prozessausführungs-
        sprachen ...
JBoss PVM
  Das Projekt

      • Gestartet 2007 durch JBoss (jBPM) und Bull
        (Bonita O h t )
        (B it & Orches...
Konzepte & Kernabstraktionen
  Prozesse als Zustandsautomat




                                                Verhalten ...
Laufzeitverhalten
  Prozesse als Zustandsautomat




Bernd Rücker / bernd.ruecker@camunda.com / 15
Verhalten von Nodes
  Activity (entspricht Executable)

     Einfaches Interface um Verhalten zu implementieren:
     publ...
Verhalten von „externen Nodes“
  External Activity

                                                                     E...
Beispiel: TaskActivity
  z.B.
  z B jPDL TaskNode oder BPEL PeopleActivity


                                             ...
Just an API – PVM definiert keine Sprache
  Ein erster kleiner Prozess




    ProcessDefinition processDefinition = Proce...
Implementierung Wartezustand
  Beispielsweise der jPDL "State"
                           State




                      ...
Events
  "Hooks" im Prozessablauf
   Hooks


                                                p
                           ...
Automatische Entscheidungen
  "Nur" eine andere Art Activities
   Nur




  public class A t
    bli   l    AutomaticCredi...
Execution
  Die Schnittstelle zur Prozessmaschine




Bernd Rücker / bernd.ruecker@camunda.com / 23
Prozessstruktur
  Komposition ermöglicht verschiedenste Prozesskonstrukte




Bernd Rücker / bernd.ruecker@camunda.com / 24
Prozessstruktur mit Ordnung
  Sequences

   public class Sequence implements ExternalActivity {

       public void execut...
Prozessstruktur mit Ordnung
  Sequences


   ProcessFactory.build( sequence )
   ProcessFactory build("sequence")
     .co...
Mehr Konzepte
  Subprozesse | Transaktionsgrenzen | Timer




Bernd Rücker / bernd.ruecker@camunda.com / 27
Persistenz
  Viele Sprachen – eine Datenbasis




Bernd Rücker / bernd.ruecker@camunda.com / 28
Prozesssprachen
  Die PVM unterstützt verschiedene Sprachen

      • Unterstützung für Graphen & Blockstruktur
      • Spr...
JBoss jBPM jPDL
  Das Projekt

      • Business Process Engine
      • Proprietäre Sprache „jBPM Process Definition
      ...
„Graph oriented programming“ in jPDL 3
  Der Prozess als gerichteter Graph

                                              ...
Sprachbeispiel jPDL
  Node-Typen

      •     Task-Node: Human Tasks / Aufgaben
      •     State: Wait-States
           ...
jBPM & Java
  jBPM in a nutshell

      • Einfache Java-API zur Steuerung der Engine
              – Prozessstart
        ...
jBPM & Java
  jBPM in a nutshell

      JbpmConfiguration conf = JbpmConfiguration.getInstance();
      JbpmContext contex...
Tooling: Eclipse
  Sprachbeispiel jPDL




Bernd Rücker / bernd.ruecker@camunda.com / 35
Prozess Deployment in jBPM 4
  jBPM in a nutshell

      •     Java API                            .class
      •     Ant
...
Kurzer Demoprozess
  Einfacher Ticketprozess



                        Actions


                                        ...
Demoanwendung
  Architektur
                                                           Browser




                       ...
CRM- & Ticketsystem
  Einfachste Java EE Implementierung & Prozessintegration


                                          ...
DEMO


Bernd Rücker / bernd.ruecker@camunda.com / 40
jBPM in der Architektur
  Einbettung in eigene Anwendung

      • jBPM kann in eigene Java-Architektur integriert
        ...
Command-Pattern
  Remote-Zugriffe und Asynchronität




                                                public class TaskI...
Beispiel: EJB3 + Swing
  jBPM jPDL in Java Systemen




  Swing-GUI                                      EJB-Container
   ...
Beispiel: JBoss ESB
  Commands in Action



                                           create
                  Event     ...
Vergleich zu BPEL
  Java beheimatet JBoss jBPM

      EJB-Container (oder Tomcat oder Java SE)
                           ...
Praxiserfahrungen jBPM jPDL 3
  Aus dem Nähkästchen

      • Performance und Skalierbarkeit bei korrektem
        Einsatz ...
Architektur
  PVM - Hibernate des BPM?



            jPDL                  BPEL               …

                        ...
Fazit & Ausblick
  JBoss PVM & jBPM 4

      • PVM stabilisiert sich
      • Sehr interessantes Konzept, Interesse auch
  ...
Fragen & Antworten

                                                          Bernd Rücker
                               ...
Nächste SlideShare
Wird geladen in …5
×

20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM

1.632 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.632
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
7
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM

  1. 1. Die Process Virtual Machine Das Hibernate des BPM? Matheman Herbstcampus Nürnberg, 17.09.2008 Nürnberg 17 09 2008 bernd.ruecker@camunda.com
  2. 2. Bernd Rücker Wer bin ich? • Berater, Trainer, Coach • Softwareentwickler • Committer im JBoss jBPM-Projekt j j • Themen: BPM, SOA, Process Execution (jBPM, BPEL, XPDL (jBPM BPEL XPDL, …), Java EE ) • Eigene Trainings zu Process Execution, BPMN, BPM-Software, BPMN BPM Software … Bernd Rücker / bernd.ruecker@camunda.com / 2
  3. 3. Agenda Geschäftsprozess und Regeln • Einführung BPM (Business Process Management) • Die Process Virtual Machine (PVM) • j jBPM jPDL 3 j • Beispielprozess mit Demo • Fazit Bernd Rücker / bernd.ruecker@camunda.com / 3
  4. 4. Geschäftsprozesse & Software Der Status Quo in manchen Unternehmen GUI Paper Email Gui 1 Gui 2 Gui G i3 Software Kunden SAP Komponente Server EAI-Tool Web-Service Bernd Rücker / bernd.ruecker@camunda.com / 4
  5. 5. Ein „digitaler“ Prozess mit Business Process Engine Δ Durchlaufzeit Task Service Task Zuweisung Aufruf Zuweisung Process Engine IT Human W kfl H Workflow EAI Human W kfl H Workflow SOA Bernd Rücker / bernd.ruecker@camunda.com / 5
  6. 6. Process Execution Business Process Engine 1.) Aufgabe erzeugen 1.) System aufrufen / Message 2.) Aufgabe abschließen 2.) Asynchrone Antwort als Message Client Tasklist Externes System Process Execution Engine Transaction / Request … Zeit process execution Task Service Task Zuweisung Aufruf Zuweisung Bernd Rücker / bernd.ruecker@camunda.com / 6
  7. 7. Integration: BPM & SOA Quelle: Nicolai Josuttis e o t Bernd Rücker / bernd.ruecker@camunda.com / 7
  8. 8. Business Process Engine Middleware für Geschäftsprozesse Business Analyst Sachbearbeiter Aufgaben- Verwaltung V lt Prozess- Prozess- Fremd- definitionen Ausführung Anwendungen Entwickler Prozess- Administration Logs Administrator Persistenz Definition Laufzeit Business Process Engine (BPM-Engine) Bernd Rücker / bernd.ruecker@camunda.com / 8
  9. 9. Was leistet die Business Process Engine Features • Versionierung, Persistenz & Interpretation von Prozessmodellen P d ll • Steuerung & Persistenz von Prozessinstanzen • Task-Management • Wait-States Wait States • Prozesskontext (Variablen zu Prozess speichern) • Ei bi d Einbindung externer S i t Services • Verwalten von Ereignissen (z.B. Timeouts) • … Bernd Rücker / bernd.ruecker@camunda.com / 9
  10. 10. Process Execution Languages Welche Sprache spricht BPM? Standards BPEL YAML UML Wissenschaftlich XPDL Fachliche Notationen jPDL Proprietär EPC DSL‘s BPMN … Bernd Rücker / bernd.ruecker@camunda.com / 10
  11. 11. Sprachen heute: Was nehmen? Komplexität, LOC, Mächtigkeit, Komplexität LOC Mächtigkeit Standards? Generierte Artefakte (WSDL & Schema) Deployment-Deskriptor p y p 1000 XSLT 900 WSDL Java-Code (Hooks/Actions) 800 Prozessbeschreibung 700 600 500 400 300 200 100 0 Quelle: Dr. Martin Bartonitz BPEL XPDL jBPM Bernd Rücker / bernd.ruecker@camunda.com / 11
  12. 12. Motivation Process Virtual Machine JBoss PVM • Es existieren verschiedenste Prozessausführungs- sprachen (P h (Process E Execution L ti Language) ) – BPEL, XPDL, jPDL, DSL‘s, … • Es gibt nicht die perfekte Sprache • Koexistenz von verschiedenen Sprachen erlauben p • Sprache nach Problem auswählen Grundfunktionalität Prozessmaschine in PVM Bernd Rücker / bernd.ruecker@camunda.com / 12
  13. 13. JBoss PVM Das Projekt • Gestartet 2007 durch JBoss (jBPM) und Bull (Bonita O h t ) (B it & Orchestra) • Gehostet bei JBoss, LGPL • POJO-Kern: Interne Prozessrepräsentation durch Java-Modelle • Persistenz austauschbar (Hibernate, EJB3) • Lauffähig mit oder ohne Application Server Application-Server • „Library“, kann eigebettet werden • Aktuell Alpha Version Bernd Rücker / bernd.ruecker@camunda.com / 13
  14. 14. Konzepte & Kernabstraktionen Prozesse als Zustandsautomat Verhalten über Sprache definiert Bernd Rücker / bernd.ruecker@camunda.com / 14
  15. 15. Laufzeitverhalten Prozesse als Zustandsautomat Bernd Rücker / bernd.ruecker@camunda.com / 15
  16. 16. Verhalten von Nodes Activity (entspricht Executable) Einfaches Interface um Verhalten zu implementieren: public interface Activity { void execute(Execution execution) throws Exception; } Beispiel: public class Display implements Activity { String message; public Display(String message) { this.message = message; } public void execute(Execution execution) { System.out.println(message); } } Bernd Rücker / bernd.ruecker@camunda.com / 16
  17. 17. Verhalten von „externen Nodes“ External Activity Externes System execute signal public class StateActivity implements ExternalActivity { public void execute(Execution execution) { execution.waitForSignal(); } public void signal(Execution execution, String signalName, Map<String, Object> parameters) { if (parameters!=null) { execution.setVariables(parameters); } execution.take(signalName); } } Bernd Rücker / bernd.ruecker@camunda.com / 17
  18. 18. Beispiel: TaskActivity z.B. z B jPDL TaskNode oder BPEL PeopleActivity Tasklist quest public class TaskActivity implements ExternalActivity { execute signal public void execute(Execution execution) { // let's use the node name as the task id String taskName = execution.getNode().getName(); TaskComponent.createTask(taskName, TaskComponent createTask(taskName execution); } public void signal(Execution execution, String signal, Map<String, Map<String Object> parameters) { execution.takeDefaultTransition(); } } Bernd Rücker / bernd.ruecker@camunda.com / 18
  19. 19. Just an API – PVM definiert keine Sprache Ein erster kleiner Prozess ProcessDefinition processDefinition = ProcessFactory.build() .node("accept loan request").initial().behaviour(new WaitState()) .transition().to("loan evaluation") .node("loan evaluation").behaviour(new WaitState()) ( ) ( ()) .transition("approve").to("wire the money") .transition("reject").to("end") .node("wire the money").behaviour(new Display("automatic payment")) .transition().to("end") () ( ) .node("end").behaviour(new WaitState()) .done(); Bernd Rücker / bernd.ruecker@camunda.com / 19
  20. 20. Implementierung Wartezustand Beispielsweise der jPDL "State" State p public class WaitState implements ExternalActivity { p y public void execute(ActivityExecution execution) { execution.waitForSignal(); } public void signal(ActivityExecution execution, String signal, Map<String, Object> p p g, j parameters) { ) execution.take(signal); } } Bernd Rücker / bernd.ruecker@camunda.com / 20
  21. 21. Events "Hooks" im Prozessablauf Hooks p public class Display implements Activity { p y p y String message; public Display(String message) { this.message = message; g g ; } public void execute(Execution execution) { System.out.println(message); } } • An Transitionen • Node-Enter / Node-Leave • Prozess-Start / Prozess-End Bernd Rücker / bernd.ruecker@camunda.com / 21
  22. 22. Automatische Entscheidungen "Nur" eine andere Art Activities Nur public class A t bli l AutomaticCreditRating i l ti C ditR ti implements A ti it { t Activity public void execute(Execution execution) { int creditRate = (Integer) execution.getVariable("creditRate"); if ( (creditRate > 5) ditR t execution.take("good"); else if (creditRate < -5) execution.take("bad"); else l execution.take("average"); } } Durch Parametrisierung (gesteuert über die Sprache) kann jPDL- oder jPDL BPEL-Entscheidung gebaut werden Bernd Rücker / bernd.ruecker@camunda.com / 22
  23. 23. Execution Die Schnittstelle zur Prozessmaschine Bernd Rücker / bernd.ruecker@camunda.com / 23
  24. 24. Prozessstruktur Komposition ermöglicht verschiedenste Prozesskonstrukte Bernd Rücker / bernd.ruecker@camunda.com / 24
  25. 25. Prozessstruktur mit Ordnung Sequences public class Sequence implements ExternalActivity { public void execute(Execution execution) { List<Node> nodes = execution.getNode().getNodes(); execution.execute(nodes.get(0)); } public void signal(Execution execution, String signal, Map<String, Object> parameters) { Node previous = execution.getPreviousNode(); List<Node> nodes = execution.getNode().getNodes(); int previousIndex = nodes.indexOf(previous); int nextIndex = previousIndex+1; if (nextIndex < nodes.size()) { Node next = nodes.get(nextIndex); execution.execute(next); } else { execution.proceed(); } } } Bernd Rücker / bernd.ruecker@camunda.com / 25
  26. 26. Prozessstruktur mit Ordnung Sequences ProcessFactory.build( sequence ) ProcessFactory build("sequence") .compositeNode("sequence").initial().behaviour(new Sequence()) .needsPrevious() .node("one").behaviour(new Display("one")) .node( wait ).behaviour(new WaitState()) node("wait") behaviour(new .node("two").behaviour(new Display("two")) .compositeEnd() .done(); ... Node previous = execution.getPreviousNode(); ... Vergleiche BPEL-Blöcke BPEL Blöcke Bernd Rücker / bernd.ruecker@camunda.com / 26
  27. 27. Mehr Konzepte Subprozesse | Transaktionsgrenzen | Timer Bernd Rücker / bernd.ruecker@camunda.com / 27
  28. 28. Persistenz Viele Sprachen – eine Datenbasis Bernd Rücker / bernd.ruecker@camunda.com / 28
  29. 29. Prozesssprachen Die PVM unterstützt verschiedene Sprachen • Unterstützung für Graphen & Blockstruktur • Sprache kann durch entsprechende Nodes definiert werden • Für Node-Typen wird Verhalten implementiert ( (Activities) ) • Es wird geben – XPDL: Nova Bonita – jPDL: JBoss jBPM JPDL – BPEL • Eigene DSL (Domain Specific Language) möglich • MDSD-Ansätze denkbar Bernd Rücker / bernd.ruecker@camunda.com / 29
  30. 30. JBoss jBPM jPDL Das Projekt • Business Process Engine • Proprietäre Sprache „jBPM Process Definition Language“ (jPDL) • Aufbauend auf PVM • Klein und flexibel, leicht erweiterbar flexibel • Aktuell in der Entwicklung (released 3.2, noch ohne PVM), PVM) Fertigstellung bis Anfang 2009 geplant • Java-Objekte als Prozessvariablen Bernd Rücker / bernd.ruecker@camunda.com / 30
  31. 31. „Graph oriented programming“ in jPDL 3 Der Prozess als gerichteter Graph Node 1 Token current Node from to leaving arriving Transitions * * Transitions Transition <process-definition> ... <node name=“serve client”> <transition name=“ok” to=“order” /> <transition name=“nok” to=“joke” /> </node> <node name=“order” /> <node name=“joke” /> ... </process-definition> Bernd Rücker / bernd.ruecker@camunda.com / 31
  32. 32. Sprachbeispiel jPDL Node-Typen • Task-Node: Human Tasks / Aufgaben • State: Wait-States St t W it St t • Fork / Join: Parallelisierung • Decision: Automatische Entscheidung • Start-State / End-State • Super-State • Process State Process-State • … • Eigene Node-Typen mit Verhalten können implementiert werden erden Bernd Rücker / bernd.ruecker@camunda.com / 32
  33. 33. jBPM & Java jBPM in a nutshell • Einfache Java-API zur Steuerung der Engine – Prozessstart – Aufgabenliste –… • Aufrufen von „User-Code“ – definierte Stellen im Prozess – Interface & Java-Klassen Bernd Rücker / bernd.ruecker@camunda.com / 33
  34. 34. jBPM & Java jBPM in a nutshell JbpmConfiguration conf = JbpmConfiguration.getInstance(); JbpmContext context = conf. createJbpmContext(); ProcessInstance pi = context.getGraphSession(). findLatestProcessDefinition("Ticket").createProcessInstance(); pi.getRootToken().signal(); List<TaskInstance> tasks = context.getTaskMgmtSession(). findTaskInstances("Vertrieb"); tasks.get(0).end("Ticket schliessen"); context.close(); public class MyAction implements ActionHandler { public void execute(ExecutionContext ctx) { Object var = ctx.getVariable("var"); result = service.doSomething(var); ctx.setVariable("result", result); } } Bernd Rücker / bernd.ruecker@camunda.com / 34
  35. 35. Tooling: Eclipse Sprachbeispiel jPDL Bernd Rücker / bernd.ruecker@camunda.com / 35
  36. 36. Prozess Deployment in jBPM 4 jBPM in a nutshell • Java API .class • Ant A t deploy XML jPDL • Eclipse-Designer PVM • Web-Console XSD • AdminClient Parser • MBean DB • … jBPM (Zugriff per API) • Alle Prozesse werden versioniert • Action-Klassen können mit deployed und versioniert werden Bernd Rücker / bernd.ruecker@camunda.com / 36
  37. 37. Kurzer Demoprozess Einfacher Ticketprozess Actions Task-Node T kN d Node Transition State Bernd Rücker / bernd.ruecker@camunda.com / 37
  38. 38. Demoanwendung Architektur Browser jBPM Web-Console (JSF) Geschäftsprozess Action Action JBoss jBPM (Webanwendung) Zur Vereinfachung in der Übung: Pure Java! CRM System Ticket System Tomcat Bernd Rücker / bernd.ruecker@camunda.com / 38
  39. 39. CRM- & Ticketsystem Einfachste Java EE Implementierung & Prozessintegration Prozesskontext Prozesskontext P k customerId 0815 :: customerId 0815 ticketId : : ticketId 007 007 <<Service>> S <<Service>> S CrmService TicketService + findCustomer:Customer + createTicket:Ticket + existCustomer:boolean + getTicket:Ticket + createCustomer:Customer <<Entity>> <<Entity>> Customer Ticket + id:int + id:int + givenname:String + description:String + surname:String + content:String + email:String + open:boolean Bernd Rücker / bernd.ruecker@camunda.com / 39
  40. 40. DEMO Bernd Rücker / bernd.ruecker@camunda.com / 40
  41. 41. jBPM in der Architektur Einbettung in eigene Anwendung • jBPM kann in eigene Java-Architektur integriert werden d • Process Engine ist eigene Architekturschicht • Domänenobjekte oder Referenzen als Prozessvariablen • Ansteuerung ext. Zum Beispiel EJB-Container Services im Prozess jBPM jPDL Human Session Task Bean Mgmnt EJB JCA JMS WS Bernd Rücker / bernd.ruecker@camunda.com / 41
  42. 42. Command-Pattern Remote-Zugriffe und Asynchronität public class TaskInstanceEndCommand implements Command { ... public Object execute(JbpmContext jbpmContext) { TaskInstance taskInstance = getTaskInstance(jbpmContext); if (transitionName == null) { taskInstance.end(); } else { taskInstance.end(transitionName); } return taskInstance; } ... } Bernd Rücker / bernd.ruecker@camunda.com / 42
  43. 43. Beispiel: EJB3 + Swing jBPM jPDL in Java Systemen Swing-GUI EJB-Container BPM-Engine Command Command Command Service Service SLSB MDB Webcontainer Command Web-GUI Message EJB JCA JMS … Korrelation Fremd- systeme Bernd Rücker / bernd.ruecker@camunda.com / 43
  44. 44. Beispiel: JBoss ESB Commands in Action create Event start message (File) process from file FilePickupService Command prepare Case call Web Paramete Management Service r CreateCaseService JMS- read signal Message message process CaseCompletionService Environment JBoss ESB JBoss jBPM Bernd Rücker / bernd.ruecker@camunda.com / 44
  45. 45. Vergleich zu BPEL Java beheimatet JBoss jBPM EJB-Container (oder Tomcat oder Java SE) j jBPM (jPDL) (j ) Human Session Task Bean Mgmnt EJB JCA JMS WS BPEL-Server WS Java WS WS WS WS EJB-Container .NET Human … Task Mgmnt EJB JMS, … Bernd Rücker / bernd.ruecker@camunda.com / 45
  46. 46. Praxiserfahrungen jBPM jPDL 3 Aus dem Nähkästchen • Performance und Skalierbarkeit bei korrektem Einsatz kein Problem Ei t k i P bl • Ohne Persistenz minimaler Overhead • Relativ „leichtgewichtig“, kleine Lernkurve • Gute Dokumentation für normale Probleme • Auch in großen Projekten und Unternehmen eingesetzt • Ach ja: Tooling (Designer und Webconsole) ist verbesserungsbedürftig ;-) Bernd Rücker / bernd.ruecker@camunda.com / 46
  47. 47. Architektur PVM - Hibernate des BPM? jPDL BPEL … PVM Hibernate / JPA JVM DB Sprache XY Eigener Code PVM Hibernate / JPA JVM DB Produkt XY Bernd Rücker / bernd.ruecker@camunda.com / 47
  48. 48. Fazit & Ausblick JBoss PVM & jBPM 4 • PVM stabilisiert sich • Sehr interessantes Konzept, Interesse auch seitens kommerzieller Tool-Hersteller • Im Java Umfeld ist JBoss jBPM sehr interessant • „Leichtgewichtig und in verschiedensten Leichtgewichtig“ Umgebungen Lauffähig • Erweiterbar und flexibel • Vision und Roadmap vorhanden! • Einige Verbesserungen in jBPM 4: Logging konfigurierbar, Persistenz austauschbar, Control- Loop, … Bernd Rücker / bernd.ruecker@camunda.com / 48
  49. 49. Fragen & Antworten Bernd Rücker Geschäftsführer Berater, Trainer & Coach bernd.ruecker@camunda.com +49 711 3278645 Unsere Themen • G Ganzheitliches BPM h itli h • Prozessautomatisierung • SOA, BPEL, XPDL, jBPM, Drools, ESB • BPMN • BPM-Toolauswahl Unsere Leistungen • Beratung • Seminare • Process as a Service (Hosting) Bernd Rücker / bernd.ruecker@camunda.com / 49

×