SlideShare une entreprise Scribd logo
1  sur  49
Die Process Virtual Machine
   Das Hibernate des BPM?

      Matheman Herbstcampus
           Nürnberg, 17.09.2008
           Nürnberg 17 09 2008
   bernd.ruecker@camunda.com
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
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
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
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
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
Integration: BPM & SOA




                                               Quelle: Nicolai Josuttis
                                                 e        o        t
Bernd Rücker / bernd.ruecker@camunda.com / 7
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
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
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
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
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
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
Konzepte & Kernabstraktionen
  Prozesse als Zustandsautomat




                                                Verhalten über
                                                Sprache definiert
Bernd Rücker / bernd.ruecker@camunda.com / 14
Laufzeitverhalten
  Prozesse als Zustandsautomat




Bernd Rücker / bernd.ruecker@camunda.com / 15
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
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
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
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
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
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
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
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 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
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
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
      • 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
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
„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
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
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
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
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
            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
Kurzer Demoprozess
  Einfacher Ticketprozess



                        Actions


                                                        Task-Node
                                                        T kN d




                      Node


                              Transition



                                                State



Bernd Rücker / bernd.ruecker@camunda.com / 37
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
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
DEMO


Bernd Rücker / bernd.ruecker@camunda.com / 40
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
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
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
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
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
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
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
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
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

Contenu connexe

Tendances

BPMN - eine Sprache für Business und IT?
BPMN - eine Sprache für Business und IT?BPMN - eine Sprache für Business und IT?
BPMN - eine Sprache für Business und IT?camunda services GmbH
 
BPMN - Eine Sprache für Business und IT?
BPMN - Eine Sprache für Business und IT?BPMN - Eine Sprache für Business und IT?
BPMN - Eine Sprache für Business und IT?camunda services GmbH
 
Open Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMNOpen Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMNcamunda services GmbH
 
Camunda Community Day_Wiener BPM Offensive
Camunda Community Day_Wiener BPM OffensiveCamunda Community Day_Wiener BPM Offensive
Camunda Community Day_Wiener BPM Offensivecamunda services GmbH
 
20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools
20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools
20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Droolscamunda services GmbH
 
Community Meeting Wien - Camunda Intro
Community Meeting Wien - Camunda IntroCommunity Meeting Wien - Camunda Intro
Community Meeting Wien - Camunda Introcamunda services GmbH
 
20110505 doag bpm_workshop_4
20110505 doag bpm_workshop_420110505 doag bpm_workshop_4
20110505 doag bpm_workshop_4Jens Hündling
 
Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...
Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...
Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...camunda services GmbH
 
201100927 doag sig_bpm_slideshare
201100927 doag sig_bpm_slideshare201100927 doag sig_bpm_slideshare
201100927 doag sig_bpm_slideshareJens Hündling
 

Tendances (20)

Camunda BPM 7.2 - Deutsch
Camunda BPM 7.2 - DeutschCamunda BPM 7.2 - Deutsch
Camunda BPM 7.2 - Deutsch
 
BPMN - eine Sprache für Business und IT?
BPMN - eine Sprache für Business und IT?BPMN - eine Sprache für Business und IT?
BPMN - eine Sprache für Business und IT?
 
20100118 BPMN 2.0 auf der OOP
20100118 BPMN 2.0 auf der OOP20100118 BPMN 2.0 auf der OOP
20100118 BPMN 2.0 auf der OOP
 
20070705 JFS BPM mit JBoss jBPM
20070705 JFS BPM mit JBoss jBPM20070705 JFS BPM mit JBoss jBPM
20070705 JFS BPM mit JBoss jBPM
 
BPMN - Eine Sprache für Business und IT?
BPMN - Eine Sprache für Business und IT?BPMN - Eine Sprache für Business und IT?
BPMN - Eine Sprache für Business und IT?
 
Process Monitoring mit Camunda
Process Monitoring mit Camunda Process Monitoring mit Camunda
Process Monitoring mit Camunda
 
20080716 BPMN – Kurzeinfuehrung
20080716 BPMN – Kurzeinfuehrung20080716 BPMN – Kurzeinfuehrung
20080716 BPMN – Kurzeinfuehrung
 
WJAX 2012: BPMN in der Praxis
WJAX 2012: BPMN in der PraxisWJAX 2012: BPMN in der Praxis
WJAX 2012: BPMN in der Praxis
 
Open Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMNOpen Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMN
 
Camunda Community Day_Wiener BPM Offensive
Camunda Community Day_Wiener BPM OffensiveCamunda Community Day_Wiener BPM Offensive
Camunda Community Day_Wiener BPM Offensive
 
20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools
20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools
20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools
 
Sneak Preview: Camunda Optimize
Sneak Preview: Camunda OptimizeSneak Preview: Camunda Optimize
Sneak Preview: Camunda Optimize
 
JBoss jBPM
JBoss jBPMJBoss jBPM
JBoss jBPM
 
1&1 de
1&1 de1&1 de
1&1 de
 
Community Meeting Wien - Camunda Intro
Community Meeting Wien - Camunda IntroCommunity Meeting Wien - Camunda Intro
Community Meeting Wien - Camunda Intro
 
20110505 doag bpm_workshop_4
20110505 doag bpm_workshop_420110505 doag bpm_workshop_4
20110505 doag bpm_workshop_4
 
2012 04-18 bpmn 2
2012 04-18 bpmn 22012 04-18 bpmn 2
2012 04-18 bpmn 2
 
Iteratec: Vom Dokument zum Workflow
Iteratec: Vom Dokument zum WorkflowIteratec: Vom Dokument zum Workflow
Iteratec: Vom Dokument zum Workflow
 
Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...
Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...
Vortrag auf der SEACON 2013 in Hamburg: Prozessautomatisierung mit BPMN 2.0 u...
 
201100927 doag sig_bpm_slideshare
201100927 doag sig_bpm_slideshare201100927 doag sig_bpm_slideshare
201100927 doag sig_bpm_slideshare
 

En vedette

People–Power-Process
People–Power-ProcessPeople–Power-Process
People–Power-ProcessRainer Sax
 
Infografiken erstellen – mit Powerpoint und anderen Tools
Infografiken erstellen – mit Powerpoint und anderen ToolsInfografiken erstellen – mit Powerpoint und anderen Tools
Infografiken erstellen – mit Powerpoint und anderen ToolsKatja Evertz
 
#LeanInTogether: How to Be a Workplace MVP
#LeanInTogether: How to Be a Workplace MVP#LeanInTogether: How to Be a Workplace MVP
#LeanInTogether: How to Be a Workplace MVPLean In
 
Guided Reading: Making the Most of It
Guided Reading: Making the Most of ItGuided Reading: Making the Most of It
Guided Reading: Making the Most of ItJennifer Jones
 
Mobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalMobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalAleyda Solís
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 

En vedette (6)

People–Power-Process
People–Power-ProcessPeople–Power-Process
People–Power-Process
 
Infografiken erstellen – mit Powerpoint und anderen Tools
Infografiken erstellen – mit Powerpoint und anderen ToolsInfografiken erstellen – mit Powerpoint und anderen Tools
Infografiken erstellen – mit Powerpoint und anderen Tools
 
#LeanInTogether: How to Be a Workplace MVP
#LeanInTogether: How to Be a Workplace MVP#LeanInTogether: How to Be a Workplace MVP
#LeanInTogether: How to Be a Workplace MVP
 
Guided Reading: Making the Most of It
Guided Reading: Making the Most of ItGuided Reading: Making the Most of It
Guided Reading: Making the Most of It
 
Mobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalMobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigital
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

Similaire à 20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM

JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Javacamunda services GmbH
 
20080421 JAX BPM und SOA - Prozesse sind keine Workflows
20080421 JAX BPM und SOA - Prozesse sind keine Workflows20080421 JAX BPM und SOA - Prozesse sind keine Workflows
20080421 JAX BPM und SOA - Prozesse sind keine Workflowscamunda services GmbH
 
20110505 doag bpm_workshop_1
20110505 doag bpm_workshop_120110505 doag bpm_workshop_1
20110505 doag bpm_workshop_1Jens Hündling
 
IT-Service Management nach ITIL
IT-Service Management nach ITILIT-Service Management nach ITIL
IT-Service Management nach ITILGFU Cyrus AG
 
20110505 doag bpm_workshop_2
20110505 doag bpm_workshop_220110505 doag bpm_workshop_2
20110505 doag bpm_workshop_2Jens Hündling
 
X days12 im- rubip_henkt
X days12 im- rubip_henktX days12 im- rubip_henkt
X days12 im- rubip_henktTorsten Henke
 
20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozesse20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozessecamunda services GmbH
 
BPMN 2.0 und die X4 BPM Suite
BPMN 2.0 und die X4 BPM SuiteBPMN 2.0 und die X4 BPM Suite
BPMN 2.0 und die X4 BPM SuiteSoftProject GmbH
 
Integrierte BPM Projektmethodik
Integrierte BPM ProjektmethodikIntegrierte BPM Projektmethodik
Integrierte BPM ProjektmethodikDirk Slama
 

Similaire à 20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM (20)

20090204 JUG BB Jbpm und Drools
20090204 JUG BB Jbpm und Drools20090204 JUG BB Jbpm und Drools
20090204 JUG BB Jbpm und Drools
 
Bpmn roundtrip
Bpmn roundtripBpmn roundtrip
Bpmn roundtrip
 
20091014 J Bpm4 Hamburg
20091014 J Bpm4 Hamburg20091014 J Bpm4 Hamburg
20091014 J Bpm4 Hamburg
 
2012 05-30 camunda fox de
2012 05-30 camunda fox  de2012 05-30 camunda fox  de
2012 05-30 camunda fox de
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
 
Bpmn2010
Bpmn2010Bpmn2010
Bpmn2010
 
20080421 JAX BPM und SOA - Prozesse sind keine Workflows
20080421 JAX BPM und SOA - Prozesse sind keine Workflows20080421 JAX BPM und SOA - Prozesse sind keine Workflows
20080421 JAX BPM und SOA - Prozesse sind keine Workflows
 
20110505 doag bpm_workshop_1
20110505 doag bpm_workshop_120110505 doag bpm_workshop_1
20110505 doag bpm_workshop_1
 
IT-Service Management nach ITIL
IT-Service Management nach ITILIT-Service Management nach ITIL
IT-Service Management nach ITIL
 
2011 11-21 BPMN_Luzern_JakobFreund
2011 11-21 BPMN_Luzern_JakobFreund2011 11-21 BPMN_Luzern_JakobFreund
2011 11-21 BPMN_Luzern_JakobFreund
 
2011 05-05 bpmn 2
2011 05-05 bpmn 22011 05-05 bpmn 2
2011 05-05 bpmn 2
 
20110505 doag bpm_workshop_2
20110505 doag bpm_workshop_220110505 doag bpm_workshop_2
20110505 doag bpm_workshop_2
 
mühlnickel beit_PechaKucha
mühlnickel beit_PechaKuchamühlnickel beit_PechaKucha
mühlnickel beit_PechaKucha
 
X days12 im- rubip_henkt
X days12 im- rubip_henktX days12 im- rubip_henkt
X days12 im- rubip_henkt
 
20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozesse20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozesse
 
20110223 agiles bpm
20110223 agiles bpm20110223 agiles bpm
20110223 agiles bpm
 
20110203 jug stuttgart
20110203 jug stuttgart20110203 jug stuttgart
20110203 jug stuttgart
 
BPMN 2.0 und die X4 BPM Suite
BPMN 2.0 und die X4 BPM SuiteBPMN 2.0 und die X4 BPM Suite
BPMN 2.0 und die X4 BPM Suite
 
20110311 activiti mathema
20110311 activiti mathema20110311 activiti mathema
20110311 activiti mathema
 
Integrierte BPM Projektmethodik
Integrierte BPM ProjektmethodikIntegrierte BPM Projektmethodik
Integrierte BPM Projektmethodik
 

Plus de camunda services GmbH

Using Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through OperatorsUsing Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through Operatorscamunda services GmbH
 
Predictive Process Monitoring in Camunda
Predictive Process Monitoring in CamundaPredictive Process Monitoring in Camunda
Predictive Process Monitoring in Camundacamunda services GmbH
 
Camunda Product Update – The present and the future of Process Automation
Camunda Product Update – The present and the future of Process AutomationCamunda Product Update – The present and the future of Process Automation
Camunda Product Update – The present and the future of Process Automationcamunda services GmbH
 
Tips on how to build Camunda Run for production
Tips on how to build Camunda Run for productionTips on how to build Camunda Run for production
Tips on how to build Camunda Run for productioncamunda services GmbH
 
Blitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in Unternehmen
Blitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in UnternehmenBlitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in Unternehmen
Blitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in Unternehmencamunda services GmbH
 
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...camunda services GmbH
 
Extending human workflow preparing people and processes for the digital era w...
Extending human workflow preparing people and processes for the digital era w...Extending human workflow preparing people and processes for the digital era w...
Extending human workflow preparing people and processes for the digital era w...camunda services GmbH
 
[Webinar] Camunda Optimize Release 3.0
[Webinar] Camunda Optimize Release 3.0[Webinar] Camunda Optimize Release 3.0
[Webinar] Camunda Optimize Release 3.0camunda services GmbH
 
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...camunda services GmbH
 
Process Automation Forum, Processautomatisierung neu gedacht für das digitale...
Process Automation Forum, Processautomatisierung neu gedacht für das digitale...Process Automation Forum, Processautomatisierung neu gedacht für das digitale...
Process Automation Forum, Processautomatisierung neu gedacht für das digitale...camunda services GmbH
 
Process Automation Forum Zurich, finnova AG Bankware
Process Automation Forum Zurich, finnova AG BankwareProcess Automation Forum Zurich, finnova AG Bankware
Process Automation Forum Zurich, finnova AG Bankwarecamunda services GmbH
 
Process Automation Forum Munich, Swiss Life
Process Automation Forum Munich, Swiss LifeProcess Automation Forum Munich, Swiss Life
Process Automation Forum Munich, Swiss Lifecamunda services GmbH
 
Process Automation Forum Vienna, A1 & J-IT
Process Automation Forum Vienna, A1 & J-ITProcess Automation Forum Vienna, A1 & J-IT
Process Automation Forum Vienna, A1 & J-ITcamunda services GmbH
 
Process Automation Forum Vienna, Raiffeisen
Process Automation Forum Vienna, RaiffeisenProcess Automation Forum Vienna, Raiffeisen
Process Automation Forum Vienna, Raiffeisencamunda services GmbH
 
Process Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AG
Process Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AGProcess Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AG
Process Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AGcamunda services GmbH
 
[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native World
[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native World[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native World
[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native Worldcamunda services GmbH
 

Plus de camunda services GmbH (20)

Using Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through OperatorsUsing Camunda on Kubernetes through Operators
Using Camunda on Kubernetes through Operators
 
Predictive Process Monitoring in Camunda
Predictive Process Monitoring in CamundaPredictive Process Monitoring in Camunda
Predictive Process Monitoring in Camunda
 
Camunda Product Update – The present and the future of Process Automation
Camunda Product Update – The present and the future of Process AutomationCamunda Product Update – The present and the future of Process Automation
Camunda Product Update – The present and the future of Process Automation
 
Tips on how to build Camunda Run for production
Tips on how to build Camunda Run for productionTips on how to build Camunda Run for production
Tips on how to build Camunda Run for production
 
Process Driven Customer Interaction
Process Driven Customer InteractionProcess Driven Customer Interaction
Process Driven Customer Interaction
 
Exploring Automation in Government
Exploring Automation in GovernmentExploring Automation in Government
Exploring Automation in Government
 
The Pulse of Process Automation
The Pulse of Process AutomationThe Pulse of Process Automation
The Pulse of Process Automation
 
Blitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in Unternehmen
Blitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in UnternehmenBlitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in Unternehmen
Blitzumfrage zur aktuellen Nutzung von Prozessautomatisierung in Unternehmen
 
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
 
Extending human workflow preparing people and processes for the digital era w...
Extending human workflow preparing people and processes for the digital era w...Extending human workflow preparing people and processes for the digital era w...
Extending human workflow preparing people and processes for the digital era w...
 
Camunda BPM 7.13 Webinar
Camunda BPM 7.13 WebinarCamunda BPM 7.13 Webinar
Camunda BPM 7.13 Webinar
 
[Webinar] Camunda Optimize Release 3.0
[Webinar] Camunda Optimize Release 3.0[Webinar] Camunda Optimize Release 3.0
[Webinar] Camunda Optimize Release 3.0
 
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...
Webinar: Monitoring & Orchestrating Your Microservices Landscape using Workfl...
 
Process Automation Forum, Processautomatisierung neu gedacht für das digitale...
Process Automation Forum, Processautomatisierung neu gedacht für das digitale...Process Automation Forum, Processautomatisierung neu gedacht für das digitale...
Process Automation Forum, Processautomatisierung neu gedacht für das digitale...
 
Process Automation Forum Zurich, finnova AG Bankware
Process Automation Forum Zurich, finnova AG BankwareProcess Automation Forum Zurich, finnova AG Bankware
Process Automation Forum Zurich, finnova AG Bankware
 
Process Automation Forum Munich, Swiss Life
Process Automation Forum Munich, Swiss LifeProcess Automation Forum Munich, Swiss Life
Process Automation Forum Munich, Swiss Life
 
Process Automation Forum Vienna, A1 & J-IT
Process Automation Forum Vienna, A1 & J-ITProcess Automation Forum Vienna, A1 & J-IT
Process Automation Forum Vienna, A1 & J-IT
 
Process Automation Forum Vienna, Raiffeisen
Process Automation Forum Vienna, RaiffeisenProcess Automation Forum Vienna, Raiffeisen
Process Automation Forum Vienna, Raiffeisen
 
Process Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AG
Process Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AGProcess Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AG
Process Automation Forum Düsseldorf, Provinzial Rheinland Versicherung AG
 
[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native World
[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native World[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native World
[Webinar] BPM Renaissance: 5 Tips to Thrive in a Cloud-Native World
 

20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM

  • 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. 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. 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. 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. 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. 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. Integration: BPM & SOA Quelle: Nicolai Josuttis e o t Bernd Rücker / bernd.ruecker@camunda.com / 7
  • 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. 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. 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. 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. 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. 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. Konzepte & Kernabstraktionen Prozesse als Zustandsautomat Verhalten über Sprache definiert Bernd Rücker / bernd.ruecker@camunda.com / 14
  • 15. Laufzeitverhalten Prozesse als Zustandsautomat Bernd Rücker / bernd.ruecker@camunda.com / 15
  • 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. 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. 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. 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. 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. 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. 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. Execution Die Schnittstelle zur Prozessmaschine Bernd Rücker / bernd.ruecker@camunda.com / 23
  • 24. Prozessstruktur Komposition ermöglicht verschiedenste Prozesskonstrukte Bernd Rücker / bernd.ruecker@camunda.com / 24
  • 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. 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. Mehr Konzepte Subprozesse | Transaktionsgrenzen | Timer Bernd Rücker / bernd.ruecker@camunda.com / 27
  • 28. Persistenz Viele Sprachen – eine Datenbasis Bernd Rücker / bernd.ruecker@camunda.com / 28
  • 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. 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. „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. 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. 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. 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. Tooling: Eclipse Sprachbeispiel jPDL Bernd Rücker / bernd.ruecker@camunda.com / 35
  • 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. Kurzer Demoprozess Einfacher Ticketprozess Actions Task-Node T kN d Node Transition State Bernd Rücker / bernd.ruecker@camunda.com / 37
  • 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. 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. DEMO Bernd Rücker / bernd.ruecker@camunda.com / 40
  • 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. 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. 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. 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. 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. 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. 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. 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. 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