SlideShare una empresa de Scribd logo
1 de 65
Vorstellung JBoss jBPM und Drools
 Geschäftsprozesse und Regeln mit
                Open Source Java
     Java User Group Berlin Brandenburg
                      Berlin, 04.02.2009
           bernd.ruecker@camunda.com
Bernd Rücker
  Wer bin ich?

      •     Berater, Trainer, Coach
      •     Softwareentwickler
      •     Committer im JBoss jBPM-Projekt
      •     Themen:
              –   BPM & SOA
              –   Process Execution (jPDL, BPEL, XPDL, …)
              –   JBoss SOA Platform (jBPM, ESB, Drools, …)
              –   Enterprise Anwendungen mit Java EE


      • Siehe                       www.camunda.com
      • Blog                        www.bpm-guide.de
Bernd Rücker / bernd.ruecker@camunda.com / 2
Eckdaten zum Unternehmen
  Einleitung

  camunda GmbH                                       Unsere Themen
  Gegründet:  November 2002                          • Ganzheitliches BPM
                                                     • Prozessautomatisierung
  camunda services GmbH
  Gegründet:    März 2008                            • SOA, BPEL, XPDL,
                                                     • JBoss SOA Platform (jBPM,
  Mitarbeiter:                  6                      Drools, ESB)
  Sitz:                         Berlin / Stuttgart   • BPMN
                                                     • BPM-Toolauswahl
  Unsere Leistungen
  • Beratung
  • Seminare
  • Process Hosting




Bernd Rücker / bernd.ruecker@camunda.com / 3
Was ist ein Prozess?
  Begriffsdefinition

      „Ein Prozess ist eine Struktur, deren Elemente Aufgaben,
      Aufgabenträger, Sachmittel und Informationen sind, die durch logische
      Folgebeziehungen verknüpft sind. Darüber hinaus werden deren zeitliche,
      räumliche und mengenmäßige Dimensionen konkretisiert. Ein Prozess
      hat ein definiertes Startereignis (Input) und ein Ergebnis (Output) und
      dient dazu, einen Wert für Kunden zu schaffen.“

      Synonyme: Geschäftsprozess, Business Process


                                                 Logische
                Kunde               Input                         Output          Kunde
                                               Aufgabenfolge




                                                                             Fischermanns, Guido:
                                                               Praxishandbuch Prozessmanagement
Bernd Rücker / bernd.ruecker@camunda.com / 4
Einfaches Prozessmodell
  Begriffsdefinition




                                                  Rechnung-
                                                   stellung
                  Bestel-              Bestell-
   Kunde                              annahme
                                                              Versand
                                                                        Lieferung   Kunde
                   lung
                                                   Waren-
                                                  entnahme




Bernd Rücker / bernd.ruecker@camunda.com / 5
Ein „digitaler“ Prozess
  mit Business Process Engine



                                               ∆ Durchlaufzeit




                                    Task           Service            Task
                                  Zuweisung        Aufruf           Zuweisung



                Process Engine
                                                      IT

                          Human Workflow            EAI          Human Workflow
                                                    SOA




Bernd Rücker / bernd.ruecker@camunda.com / 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 / 7
Business Process Engine
  Middleware für Geschäftsprozesse




                              Business Analyst            Sachbearbeiter
                                                                                      Aufgaben-
                                                                                      Verwaltung
                         Simulation



                                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
JBoss jBPM
  Open Source Process Execution

      • Business Process Engine
      • „Library“
      • POJO-Kern: Interne Prozessrepräsentation durch
        Java-Modelle
      • Persistenz über Hibernate (DB-Unabhängigkeit)
      • Lauffähig mit oder ohne Application-Server
      • Klein und flexibel, leicht erweiterbar
      • Aktuell Version 3.2, Version 4 in der Entwicklung
      • Open Source (LGPL)


Bernd Rücker / bernd.ruecker@camunda.com / 9
„Graph oriented programming“
  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 / 10
Implementierung Verhalten




      • Execute Methode implementiert Verhalten
      • Konfiguration der Node-Typen per XML

Bernd Rücker / bernd.ruecker@camunda.com / 11
Token-Hierarchie




Bernd Rücker / bernd.ruecker@camunda.com / 12
Business Process Engine in Java
  Architektur

      • Process Engine ist eigene Architekturschicht
      • Domänenobjekte oder Referenzen als
        Prozessvariablen
      • Ansteuerung ext.
        Services
                                                EJB-Container (oder Tomcat oder Java SE)
                                                                            jBPM (jPDL)
                                                                                           Human
                                                    Session                                 Task
                                                     Bean                                  Mgmnt




                                                                EJB      JCA     JMS
                                                                                           WS


Bernd Rücker / bernd.ruecker@camunda.com / 13
Prozess: Grafik / XML                         Java       DB




                                                            deploy
                                                  XML                jBPM API

                                                                         Neue
                                                  .class
                                                                         Version

                                                                       DB

Bernd Rücker / bernd.ruecker@camunda.com / 14
Verschiedene Node-Typen
  jBPM in a nutshell

      •     Task-Node: Human Tasks / Aufgaben
      •     State: Wait-States
      •     Fork / Join: Parallelisierung
      •     Decision: Automatische Entscheidung
      •     Start-State / End-State
      •     Super-State
      •     Process-State
      •     …
      •     Eigene Node-Typen mit
            Verhalten können
            implementiert werden
Bernd Rücker / bernd.ruecker@camunda.com / 15
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 / 16
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 / 17
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 / 18
Beispiel: EJB3 + Swing




  Swing-GUI                                      EJB-Container
                                                                       BPM-Engine
                            Commands                Command                                          Command
                                                     Service                                          Service
                                                      SLSB                                             MDB


                                    Webcontainer                                                            Message
                                                                                                            Mit
                                       Web-GUI
                                                                                                            Commands
                                                                 EJB       JCA      JMS   …
                                                                                                    Korrelation


                                                                                          Fremd-
                                                                                          systeme




Bernd Rücker / bernd.ruecker@camunda.com / 19
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 / 20
Sprachen heute: Was nehmen?
  Komplexität, LOC, Mächtigkeit, Standards?

                                                              Generierte Artefakte (WSDL & Schema)
                                                              Deployment-Deskriptor
                                    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 / 21
JBoss Process Virtual Machine
  JBoss PVM

      • Es existieren verschiedenste Prozessausführungs-
        sprachen (Process Execution Language)
              – BPEL, XPDL, jPDL, DSL‘s, …
      • Es gibt nicht die perfekte Sprache
      • Koexistenz von verschiedenen Sprachen erlauben
      • Sprache nach Problem auswählen

             Grundfunktionalität Prozessmaschine in PVM




Bernd Rücker / bernd.ruecker@camunda.com / 22
Konzepte & Kernabstraktionen
  Prozesse als Zustandsautomat




                                                Verhalten über
                                                Sprache definiert
Bernd Rücker / bernd.ruecker@camunda.com / 23
Just an API
  PVM definiert keine Sprache




  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 / 24
Prozesssprachen
  Die PVM unterstützt verschiedene Sprachen

      • Graphen / Blockstruktur
      • Sprache kann durch
        entsprechendes Node-Verhalten
        implementiert werden
      • Es wird geben
              – XPDL: Nova Bonita
              – jPDL: JBoss jBPM JPDL 4
              – BPEL: Orchestra
      • Sprachen sind in XML umgesetzt



Bernd Rücker / bernd.ruecker@camunda.com / 25
Was ist BPM?
  Begriffsproblem


         Organisationslehre



                                                 Business Process             (Orga-) Geschäftsprozess-
            Ablauforganisation
                                                Reengineering - BPR              Management - GPM
                          bis 1990
                                                        1990 - 2000                              ab 2000



  Business
                                                                                Business Process Management - BPM
  IT
                                                                                                                  ab 2004
                                                                                 Prozessautomatisierung
                                                                                                        ab 2006

                                                   Human                      Serviceorientierte
                                            Workflow Management              Architekturen (SOA)
                                                             ab 2000                        ab 2005

                             Dokumenten-Management –              Enterprise Appliation Integration –
                               Systeme – DMS (u.a.)                              EAI


Bernd Rücker / bernd.ruecker@camunda.com / 26
Aktuelle Ambitionen
  Der BPM-Kreislauf




                                                   Prozess-
                                                   Strategie


                          Prozess-                                 Prozess-     KVP

                           entwurf                                controlling
    Business
     IT                                             Prozess-
                                                implementierung



Bernd Rücker / bernd.ruecker@camunda.com / 27
Der Traum der Magic BPM-Suite
  Der BPM-Kreislauf




                                       Modelling      Monitoring




       Business
       IT
                                                   Magic BPM-Suite




                                  Human Workflow      EAI / SOA


Bernd Rücker / bernd.ruecker@camunda.com / 28
JBoss jBPM 4
  jBPM die Vierte

      •     Aufbauend auf PVM
      •     Persistenz über JPA geplant
      •     Unterstützung BPMN
      •     siehe http://www.bpm-guide.de/2009/01/26/ein-
            erster-blick-auf-jbpm-4/




Bernd Rücker / bernd.ruecker@camunda.com / 38
Weitere Änderungen in jBPM 4
  jBPM die Vierte

      • Allgemeingültige API
              –   ProcessService
              –   ExecutionService
              –   TaskService
              –   ManagementService
              –   CommandService
      • Grafische Informationen im gleichen XML
      • Deployment in AS/ESB wird verbessert




Bernd Rücker / bernd.ruecker@camunda.com / 39
Beispielprozess im neuen Designer
  jBPM die Vierte




Bernd Rücker / bernd.ruecker@camunda.com / 40
Und das Beispiel als Quellcode
  BPM die Vierte


            <process xmlns="http://jbpm.org/4/jpdl" name="TicketProcess">
             <start name="Start" g="15,146,48,48">
               <flow to="Kundenbetreuer bekannt?"/>
             </start>
             <exclusive name="Kundenbetreuer bekannt?" g="84,144,48,48">
               <flow to="Kundenbetreuer festlegen" g="108,24">
                     <condition expr="#{false}"/>
               </flow>
               <flow to="join">
                     <condition expr="#{true}"/>
               </flow>
             </exclusive>
             <task name="Kundenbetreuer festlegen" g="168,0,153,51"
                 assignee="bernd">
               <flow to="CRM aktualisieren"/>
             </task>


Bernd Rücker / bernd.ruecker@camunda.com / 44
Nicht gut: Regeln im Prozess
  Prozessmodelle und Geschäftsregeln


      Preiskalkulation

                                                              Auftragswert < 50 TEUR




                         Normalpreis                                         3% Rabatt
                                                     50k <= AW < 100k
                         kalkulieren                                          abziehen




                                                                             5% Rabatt
                                                100k <= AW < 250k
                                                                              abziehen



                                                                           Verhandelten
                                                 Rabatt individuell
                                                   verhandelt                 Rabatt
                                                                             abziehen




Bernd Rücker / bernd.ruecker@camunda.com / 45
Regeln sinnvoll abbilden
  Prozessmodelle und Geschäftsregeln




    Auftragswert                                Rabatt verhandelt?   Rabatt (%)
    AW < 50 T€                                  Nein                 0
    50 T€ <= AW < 100 T€                        Nein                 3
    100 T€ <= AW < 250 T€                       Nein                 5
    <egal>                                      Ja                   <individuell>




Bernd Rücker / bernd.ruecker@camunda.com / 46
Was sind Regeln?

      • „Wenn ich müde bin, dann gehe ich ins Bett!“

      • „WENN .. DANN ..“-Struktur
      • Bedingung und Konseqenz (Prämisse und
        Konklusion; Left-Hand-Side LHS und Right-Hand-
        Side RHS)
      • Konsequenz wird häufig als „Aktion“ bezeichnet
      • Bedingungen prüfen „Fakten“
      • Regeln „feuern“, wenn deren Bedingung eintrifft


Bernd Rücker / bernd.ruecker@camunda.com / 47
Wie werden Regeln umgesetzt?
  Alternativen

      • Direkte Programmierung im Quellcode:

              if ( person.istMuede() == true ) {
                person.putzeZaehne();
                person.geheInsBett();
              }



      • Spezifische Lösungen (Codegenerierung, DSL,
        Speziallösungen, …)
      • Regelmaschine / Rule Engine


Bernd Rücker / bernd.ruecker@camunda.com / 48
Probleme programmierter Regeln
  Wie werden Regeln umgesetzt?

      • Wartbarkeit und Validierbarkeit nicht gegeben
      • Regeln müssen durch Entwickler in Quellcode
        übersetzt werden
      • Fachliche Regeln werden über verschiedene
        Klassen verteilt
      • Keine Lesbarkeit der Regeln für den Fachbereich
      • Konflikt-Lösung muss realisiert werden




Bernd Rücker / bernd.ruecker@camunda.com / 49
Vorteile der Rule-Engine
  Wie werden Regeln umgesetzt?

      • Explizite Formulierung der Regeln als Regeln
      • Deklarativ: Welche Regeln wann wie ausgeführt
        werden entscheidet die Regelmaschine
      • Regeln für Fachbereich verständlich


                                                Bedingung:
                                                  Person.muede = true

                                                Konsequenz:
                                                 person.putzeZaehne();
                                                 person.geheInsBett();


Bernd Rücker / bernd.ruecker@camunda.com / 50
Rule Engines in Java
  Architektur

      • Fakten (Wissen) = Domänenobjekte (POJOs)
      • Rule Engine wird generisch in die Architektur
        integriert (Interceptoren, …)
      • Rule Engine wird gezielt angesprochen


                                        Client   Anwendung / Server



                                                    Interceptor




                                                                      Fachlogik




Bernd Rücker / bernd.ruecker@camunda.com / 51
JBoss Drools
  Die Open Source Rule Engine

      •     Java Rule Engine (RETE-Implementierung)
      •     „JBoss Drools“ / „JBoss Rules“
      •     Lauffähig mit oder ohne Application-Server
      •     „Library“
      •     Business Rules Management System (BRMS)
      •     Aktuell Version 4.0 (Version 5 in der Pipe)
      •     Open Source (ASL)




Bernd Rücker / bernd.ruecker@camunda.com / 52
Drools-Regeln
  Beispiel


    package com.camunda.demo

    import demo.business.*;
    import demo.infrastructure.ErrorList;

    global ErrorList errors;

    rule "Auftragsrabatt bei hohem Bestellwert"
    when
       o: Order( value>5000 )
    then
       o.setDiscount(0.05);
    end

    rule "Nachnahme nur bis 2500 € möglich"
    when
       o: Order( value>2500, shippingType="COD" )
    then
       errors.addError("Nachname nicht möglich bei Auftragswert " + o.getValue());
    end




Bernd Rücker / bernd.ruecker@camunda.com / 53
Drools im Einsatz
  API

                                                                  Regeln




                                                   POJO‘s
                                                               WorkingMemory

                                                fireAllRules


            RuleBaseLoader loader = RuleBaseLoader.getInstance();
            RuleBase ruleBase = loader.loadFromReader(
                  new InputStreamReader(this.getClass().getResourceAsStream(
                  "/demo.drl")));

            WorkingMemory wm = ruleBase.newStatefulSession();

            wm.insert(meldung);

            wm.fireAllRules();



Bernd Rücker / bernd.ruecker@camunda.com / 54
Beispiel: Golfer Riddle
  Drools

      There are four Golfers standing at a tee, in a line from
      left to right
      • The golfer to Fred’s immediate right is wearing blue
         pants
      • Joe is second in line
      • Bob is wearing plaid pants
      • Tom isn’t in position one or four, and he isn’t
         wearing the orange pants




Bernd Rücker / bernd.ruecker@camunda.com / 55
Regelbeispiel
  Example: Golfer Riddle
   rule "find solution“

          when
              // There is a golfer named Fred,
              // Whose positions is $p1
              $fred : Golfer( name == "Fred" )

                // Joe is in position 2
                $joe : Golfer( name == "Joe",
                        position == 2,
                        position != $fred.position,
                        color != $fred.color )

          ...

   then
     System.out.println(                 "Fred " + $fred.getPosition()   +   "   "   + $fred.getColor() );
     System.out.println(                 "Joe " + $joe.getPosition() +   "   "   +   $joe.getColor() );
     System.out.println(                 "Bob " + $bob.getPosition() +   "   "   +   $bob.getColor() );
     System.out.println(                 "Tom " + $tom.getPosition() +   "   "   +   $tom.getColor() );
   end




Bernd Rücker / bernd.ruecker@camunda.com / 56
Drools im Einsatz
  Wie funktioniert es intern?

      •     In-memory Knowledge-Repository
      •     Basiert auf Rete Algorithm
      •     Forward chaining
      •     Backward
            chaining ist
            geplant
            (Drools 5?)




Bernd Rücker / bernd.ruecker@camunda.com / 57
Für den Fachbereich: Decision Tables




Bernd Rücker / bernd.ruecker@camunda.com / 58
DSL-Support
  Drools



      [when]Versicherter unter {MindestAlter} Jahre alt=
          Person( age < {MindestAlter} )
      [when]Mehr als {Anzahl} Unfälle gebaut=
          Person( accidentCount > {Anzahl} )

      ...

      [then]Police nicht möglich=
          errors.addError("Police kann nicht ausgestellt werden");

     rule "Abmeldung - Check mit DSL"
     when
       Versicherter unter 25 Jahre alt
       and
       Mehr als 3 Unfälle gebaut
     then
       Police nicht möglich
     end




Bernd Rücker / bernd.ruecker@camunda.com / 59
DSL-Support
  Drools




Bernd Rücker / bernd.ruecker@camunda.com / 60
Regeleditor ohne DSL
  Drools




Bernd Rücker / bernd.ruecker@camunda.com / 61
Guided Rule Editor




       Verfügbar in
       Eclipse &
       BRMS




Bernd Rücker / bernd.ruecker@camunda.com / 62
RuleFlow
  Grahpical representation

      • Welche Regeln sollen in welcher Reihenfolge
      • Parallel oder
      • unter welchen Bedingungen ausgeführt werden




Bernd Rücker / bernd.ruecker@camunda.com / 63
Tooling: Eclipse
  Drools




Bernd Rücker / bernd.ruecker@camunda.com / 64
Business Rules Management System
  Drools BRMS




    Web-GUI
                         Anwendung
    Drools

     Rule-Repository
              (JCR)




  Server




Bernd Rücker / bernd.ruecker@camunda.com / 65
BPM + !BRM = ?
                                                !BPM + BRM = ?
                                                 BPM + BRM = ?




Bernd Rücker / bernd.ruecker@camunda.com / 66
Geschäftsprozesse mit Regeln umsetzen?
  BPM + BRM

      • Möglich!
      • Vorteil: Maximale Flexibilität
      • Nachteile
              –   Keine Visualisierung / Modellierung des Prozessflusses
              –   Nicht immer offensichtlich, warum was passiert
              –   Keine „Grenzen“ durch Prozessstruktur
              –   Keine out-of-the-box Wartezustände / Persistenz




Bernd Rücker / bernd.ruecker@camunda.com / 67
Einsatzmöglichkeiten
  BPM + BRM

      • BPM (Prozesse)
              – Geschäftsprozesse / Workflows
              – Fachliche Modellierung
              – Hoher Standardisierungs-/Wiederholungsgrad


      • BRM (Regeln)
              – Prozessunabhängige Regeln
              – Punktuelle Integration in Prozesse
              – Beeinflussung des Prozessablaufs (80/20 Regel)


      In Kombination stabilere Prozesse bei mehr Agilität!
Bernd Rücker / bernd.ruecker@camunda.com / 68
Kombinationsmöglichkeiten




                                                Regeln treffen Entscheidungen


                                                Regeln steuern Zuweisung von
                                                Aufgaben

                                                Regeln schließen neues Wissen




                                                              Und: Beeinflussung des
                                                                   Prozessablaufs in
                                                                        Sonderfällen


Bernd Rücker / bernd.ruecker@camunda.com / 69
Schließen von “neuem Wissen”
  jBPM + Drools

                                                rule "Special Discount"
                                                when
                                                   o : Order( customerName == "Bernd" )
                                                then
                                                   # 5 % discount
                                                   o.applyDiscount( 0.95 );
                                                   System.out.println("Special discount granted");
                                                end




                                                   <action
                                                   class="org.jbpm.action.RulesActionHandler">
                                                     <ruleFile>/...OrderPricingRules.drl</ruleFile>
                                                     <objectNames>
                                                        <element>order</element>
                                                     </objectNames>
                                                   </action>



Bernd Rücker / bernd.ruecker@camunda.com / 70
Entscheidungen
  jBPM + Drools

     <node name="drools decision">
       <action class="org.jbpm.action.RulesActionHandler“>
         <ruleFile>/com/.../OrderDecisionRules.drl</ruleFile>
         <objectNames>
             <element>order</element>
         </objectNames>
         <signalToken>false</signalToken>
       </action>
       <transition name="conspicuous" to="do something" />
       <transition name="casual" to="determine discount" />
     </node>

  Besseres Design:                   rule "Conspicuous Order"
                                     when
  Regeln schreiben                     Order( price > 500)
  Ergebnis in                        then
  Prozessvariable                      System.out.println("signal conspicuous order");
  und jBPM                             executionContext.getNode().
                                                        leave(executionContext, "conspicuous");
  „Decision“ wertet                  end
  diese aus

Bernd Rücker / bernd.ruecker@camunda.com / 71
Beeinflussung des Prozessablaufs
  Event getrieben reagieren / Ausnahmen


                                                rule "Order gets cancelled"
                                                when
                                                   evt : Event( type == "cancel" )
                                                then
                                                   token.setNode( "end2" );
                                                end




                                                                         Token




Bernd Rücker / bernd.ruecker@camunda.com / 72
Actor-Assignment
  Wer ist zuständig?


     <assignment class="org.jbpm.assignment.RulesAssignmentHandler">
       <group>underwriting</group>
       <ruleFile>/Assignment.drl</ruleFile>
       <objectNames><element>policy</element></objectNames>
     </assignment>

                                                rule "Determine Junior Role“
                                                when
                                                  Policy( basePrice < 500)
                                                then
                                                  insert(new Role("junior"));
                                                end

                                                rule "Determine Actor"
                                                salience -100
                                                when
                                                  Role($roleName : roleName)
                                                  $a : Assignable()
                                                  $group : Group()
                                                  Membership( group == $group, role == $roleName,
                                                              $user : user )
                                                then
                                                  $a.setActorId($user.getName());
Bernd Rücker / bernd.ruecker@camunda.com / 73
                                                end
Ausblick: ESB / Content Based Routing
  Beispiel: JBoss jBPM jPDL + JBoss ESB




                        System 1




                        System 2




                                                Content-Based Router Service




                     Environment                        JBoss ESB              JBoss jBPM




Bernd Rücker / bernd.ruecker@camunda.com / 74
ESB & Content Based Routing
  Vergleiche Event Driven Architecture (EDA)




                                                Quelle: JBoss

Bernd Rücker / bernd.ruecker@camunda.com / 75
Fazit
  Geschäftsprozesse und Regeln mit jBPM und Drools

      • jBPM ist eine kleine, flexible Process Engine.
        Bewährt auch in großen Projekten!
      • Drools ist cool und steht teuren Rule Engines in
        wenig nach

      • Integrieren & Kombinieren!
      • siehe auch JBoss SOA Plattform (ESB)

      • BPM & BRM bleiben Thema, selbst wenn SOA Tod
        ist ;-)

Bernd Rücker / bernd.ruecker@camunda.com / 76
Fragen & Antworten

                                                          Bernd Rücker
                                                          Geschäftsführer
                                                          Berater, Trainer & Coach
                                                          bernd.ruecker@camunda.com
                                                          +49 711 3278645
                                                          +49 171 1473461
                                                Unsere Themen
                                                • Ganzheitliches BPM
                                                • Prozessautomatisierung
                                                • SOA, BPEL, XPDL, jBPM, Drools, ESB
                                                • BPMN
                                                • BPM-Toolauswahl

                                                Unsere Leistungen
                                                • Beratung
                                                • Seminare
                                                • Process Hosting


Bernd Rücker / bernd.ruecker@camunda.com / 77

Más contenido relacionado

La actualidad más candente

Testgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungTestgetriebene Geschäftsprozessmodellierung
Testgetriebene Geschäftsprozessmodellierung
Zambrovski Simon
 
20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows
20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows
20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows
camunda 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 Workflows
camunda services GmbH
 

La actualidad más candente (20)

WJAX 2012: BPMN in der Praxis
WJAX 2012: BPMN in der PraxisWJAX 2012: BPMN in der Praxis
WJAX 2012: BPMN in der Praxis
 
Testgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungTestgetriebene Geschäftsprozessmodellierung
Testgetriebene Geschäftsprozessmodellierung
 
BPMN in der Praxis
BPMN in der PraxisBPMN in der Praxis
BPMN in der Praxis
 
Camunda BPM 7.2 - Deutsch
Camunda BPM 7.2 - DeutschCamunda BPM 7.2 - Deutsch
Camunda BPM 7.2 - Deutsch
 
20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows
20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows
20071108 W-JAX BPM und SOA - Prozesse sind keine Workflows
 
BPM & SOA - Prozesse sind keine Workflows
BPM & SOA - Prozesse sind keine WorkflowsBPM & SOA - Prozesse sind keine Workflows
BPM & SOA - Prozesse sind keine Workflows
 
20080716 BPMN – Kurzeinfuehrung
20080716 BPMN – Kurzeinfuehrung20080716 BPMN – Kurzeinfuehrung
20080716 BPMN – Kurzeinfuehrung
 
Camunda Community Day_Wiener BPM Offensive
Camunda Community Day_Wiener BPM OffensiveCamunda Community Day_Wiener BPM Offensive
Camunda Community Day_Wiener BPM Offensive
 
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
 
20140304 einfuehrung-bpmn-v2-rp
20140304 einfuehrung-bpmn-v2-rp20140304 einfuehrung-bpmn-v2-rp
20140304 einfuehrung-bpmn-v2-rp
 
Vortrag "Prozessmanagement bei MTU Rolls Royce" | 10.10.2017 in Bochum
Vortrag "Prozessmanagement bei MTU Rolls Royce" | 10.10.2017 in BochumVortrag "Prozessmanagement bei MTU Rolls Royce" | 10.10.2017 in Bochum
Vortrag "Prozessmanagement bei MTU Rolls Royce" | 10.10.2017 in Bochum
 
BPM-Systeme für ein optimiertes Angebots- und Auftragsmanagement
BPM-Systeme für ein optimiertes Angebots-  und AuftragsmanagementBPM-Systeme für ein optimiertes Angebots-  und Auftragsmanagement
BPM-Systeme für ein optimiertes Angebots- und Auftragsmanagement
 
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
 
IT-Provider-Management: So behalten Sie die Hebel in der Hand
IT-Provider-Management: So behalten Sie die Hebel in der HandIT-Provider-Management: So behalten Sie die Hebel in der Hand
IT-Provider-Management: So behalten Sie die Hebel in der Hand
 
20100506 JAX BPMN 2.0 in der Praxis
20100506 JAX BPMN 2.0 in der Praxis20100506 JAX BPMN 2.0 in der Praxis
20100506 JAX BPMN 2.0 in der Praxis
 
2012 04-18 bpmn 2
2012 04-18 bpmn 22012 04-18 bpmn 2
2012 04-18 bpmn 2
 
BPMN in der Praxis
BPMN in der PraxisBPMN in der Praxis
BPMN in der Praxis
 
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?
 
saperion_PechaKucha
saperion_PechaKuchasaperion_PechaKucha
saperion_PechaKucha
 
Community Meeting Wien - Camunda Intro
Community Meeting Wien - Camunda IntroCommunity Meeting Wien - Camunda Intro
Community Meeting Wien - Camunda Intro
 

Similar a 20090204 JUG BB Jbpm und Drools

20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM
20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM
20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM
camunda 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 Drools
camunda services GmbH
 
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
camunda services GmbH
 
20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozesse20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozesse
camunda services GmbH
 
X days12 im- rubip_henkt
X days12 im- rubip_henktX days12 im- rubip_henkt
X days12 im- rubip_henkt
Torsten Henke
 

Similar a 20090204 JUG BB Jbpm und Drools (20)

20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM
20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM
20080917 Hernstcampus JBoss Process Virtual Machine - Hibernate des BPM
 
20070705 JFS BPM mit JBoss jBPM
20070705 JFS BPM mit JBoss jBPM20070705 JFS BPM mit JBoss jBPM
20070705 JFS BPM mit JBoss jBPM
 
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
 
20091014 J Bpm4 Hamburg
20091014 J Bpm4 Hamburg20091014 J Bpm4 Hamburg
20091014 J Bpm4 Hamburg
 
Bpmn roundtrip
Bpmn roundtripBpmn roundtrip
Bpmn roundtrip
 
Bpmn in der praxis
Bpmn in der praxisBpmn in der praxis
Bpmn in der praxis
 
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
 
20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozesse20080421 JAX BPMN - UML der Geschaeftsprozesse
20080421 JAX BPMN - UML der Geschaeftsprozesse
 
X days12 im- rubip_henkt
X days12 im- rubip_henktX days12 im- rubip_henkt
X days12 im- rubip_henkt
 
2012 05-30 camunda fox de
2012 05-30 camunda fox  de2012 05-30 camunda fox  de
2012 05-30 camunda fox de
 
Bpmn2010
Bpmn2010Bpmn2010
Bpmn2010
 
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
 
201100927 doag sig_bpm_slideshare
201100927 doag sig_bpm_slideshare201100927 doag sig_bpm_slideshare
201100927 doag sig_bpm_slideshare
 
2011 11-21 BPMN_Luzern_JakobFreund
2011 11-21 BPMN_Luzern_JakobFreund2011 11-21 BPMN_Luzern_JakobFreund
2011 11-21 BPMN_Luzern_JakobFreund
 
JBoss jBPM
JBoss jBPMJBoss jBPM
JBoss jBPM
 
20110505 doag bpm_workshop_1
20110505 doag bpm_workshop_120110505 doag bpm_workshop_1
20110505 doag bpm_workshop_1
 
Versteckte Schätze in Oracle BPM und SOA Suite - DOAG Konferenz 2011 - OPITZ...
Versteckte Schätze in Oracle BPM und SOA Suite  - DOAG Konferenz 2011 - OPITZ...Versteckte Schätze in Oracle BPM und SOA Suite  - DOAG Konferenz 2011 - OPITZ...
Versteckte Schätze in Oracle BPM und SOA Suite - DOAG Konferenz 2011 - OPITZ...
 
20101207 uni leipzig_oraclebpm_suite.slideshare
20101207 uni leipzig_oraclebpm_suite.slideshare20101207 uni leipzig_oraclebpm_suite.slideshare
20101207 uni leipzig_oraclebpm_suite.slideshare
 
DNUG2015 Frühjahrskonferenz: Prozessautomatisierung im Domino Kosmos, nicht o...
DNUG2015 Frühjahrskonferenz: Prozessautomatisierung im Domino Kosmos, nicht o...DNUG2015 Frühjahrskonferenz: Prozessautomatisierung im Domino Kosmos, nicht o...
DNUG2015 Frühjahrskonferenz: Prozessautomatisierung im Domino Kosmos, nicht o...
 

Más de camunda services GmbH

Camunda BPM 7.13 Webinar
Camunda BPM 7.13 WebinarCamunda BPM 7.13 Webinar
Camunda BPM 7.13 Webinar
camunda services GmbH
 

Más 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
 

20090204 JUG BB Jbpm und Drools

  • 1. Vorstellung JBoss jBPM und Drools Geschäftsprozesse und Regeln mit Open Source Java Java User Group Berlin Brandenburg Berlin, 04.02.2009 bernd.ruecker@camunda.com
  • 2. Bernd Rücker Wer bin ich? • Berater, Trainer, Coach • Softwareentwickler • Committer im JBoss jBPM-Projekt • Themen: – BPM & SOA – Process Execution (jPDL, BPEL, XPDL, …) – JBoss SOA Platform (jBPM, ESB, Drools, …) – Enterprise Anwendungen mit Java EE • Siehe www.camunda.com • Blog www.bpm-guide.de Bernd Rücker / bernd.ruecker@camunda.com / 2
  • 3. Eckdaten zum Unternehmen Einleitung camunda GmbH Unsere Themen Gegründet: November 2002 • Ganzheitliches BPM • Prozessautomatisierung camunda services GmbH Gegründet: März 2008 • SOA, BPEL, XPDL, • JBoss SOA Platform (jBPM, Mitarbeiter: 6 Drools, ESB) Sitz: Berlin / Stuttgart • BPMN • BPM-Toolauswahl Unsere Leistungen • Beratung • Seminare • Process Hosting Bernd Rücker / bernd.ruecker@camunda.com / 3
  • 4. Was ist ein Prozess? Begriffsdefinition „Ein Prozess ist eine Struktur, deren Elemente Aufgaben, Aufgabenträger, Sachmittel und Informationen sind, die durch logische Folgebeziehungen verknüpft sind. Darüber hinaus werden deren zeitliche, räumliche und mengenmäßige Dimensionen konkretisiert. Ein Prozess hat ein definiertes Startereignis (Input) und ein Ergebnis (Output) und dient dazu, einen Wert für Kunden zu schaffen.“ Synonyme: Geschäftsprozess, Business Process Logische Kunde Input Output Kunde Aufgabenfolge Fischermanns, Guido: Praxishandbuch Prozessmanagement Bernd Rücker / bernd.ruecker@camunda.com / 4
  • 5. Einfaches Prozessmodell Begriffsdefinition Rechnung- stellung Bestel- Bestell- Kunde annahme Versand Lieferung Kunde lung Waren- entnahme Bernd Rücker / bernd.ruecker@camunda.com / 5
  • 6. Ein „digitaler“ Prozess mit Business Process Engine ∆ Durchlaufzeit Task Service Task Zuweisung Aufruf Zuweisung Process Engine IT Human Workflow EAI Human Workflow SOA Bernd Rücker / bernd.ruecker@camunda.com / 6
  • 7. 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 / 7
  • 8. Business Process Engine Middleware für Geschäftsprozesse Business Analyst Sachbearbeiter Aufgaben- Verwaltung Simulation 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. JBoss jBPM Open Source Process Execution • Business Process Engine • „Library“ • POJO-Kern: Interne Prozessrepräsentation durch Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig mit oder ohne Application-Server • Klein und flexibel, leicht erweiterbar • Aktuell Version 3.2, Version 4 in der Entwicklung • Open Source (LGPL) Bernd Rücker / bernd.ruecker@camunda.com / 9
  • 10. „Graph oriented programming“ 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 / 10
  • 11. Implementierung Verhalten • Execute Methode implementiert Verhalten • Konfiguration der Node-Typen per XML Bernd Rücker / bernd.ruecker@camunda.com / 11
  • 12. Token-Hierarchie Bernd Rücker / bernd.ruecker@camunda.com / 12
  • 13. Business Process Engine in Java Architektur • Process Engine ist eigene Architekturschicht • Domänenobjekte oder Referenzen als Prozessvariablen • Ansteuerung ext. Services EJB-Container (oder Tomcat oder Java SE) jBPM (jPDL) Human Session Task Bean Mgmnt EJB JCA JMS WS Bernd Rücker / bernd.ruecker@camunda.com / 13
  • 14. Prozess: Grafik / XML Java DB deploy XML jBPM API Neue .class Version DB Bernd Rücker / bernd.ruecker@camunda.com / 14
  • 15. Verschiedene Node-Typen jBPM in a nutshell • Task-Node: Human Tasks / Aufgaben • State: Wait-States • Fork / Join: Parallelisierung • Decision: Automatische Entscheidung • Start-State / End-State • Super-State • Process-State • … • Eigene Node-Typen mit Verhalten können implementiert werden Bernd Rücker / bernd.ruecker@camunda.com / 15
  • 16. 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 / 16
  • 17. 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 / 17
  • 18. 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 / 18
  • 19. Beispiel: EJB3 + Swing Swing-GUI EJB-Container BPM-Engine Commands Command Command Service Service SLSB MDB Webcontainer Message Mit Web-GUI Commands EJB JCA JMS … Korrelation Fremd- systeme Bernd Rücker / bernd.ruecker@camunda.com / 19
  • 20. 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 / 20
  • 21. Sprachen heute: Was nehmen? Komplexität, LOC, Mächtigkeit, Standards? Generierte Artefakte (WSDL & Schema) Deployment-Deskriptor 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 / 21
  • 22. JBoss Process Virtual Machine JBoss PVM • Es existieren verschiedenste Prozessausführungs- sprachen (Process Execution Language) – BPEL, XPDL, jPDL, DSL‘s, … • Es gibt nicht die perfekte Sprache • Koexistenz von verschiedenen Sprachen erlauben • Sprache nach Problem auswählen Grundfunktionalität Prozessmaschine in PVM Bernd Rücker / bernd.ruecker@camunda.com / 22
  • 23. Konzepte & Kernabstraktionen Prozesse als Zustandsautomat Verhalten über Sprache definiert Bernd Rücker / bernd.ruecker@camunda.com / 23
  • 24. Just an API PVM definiert keine Sprache 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 / 24
  • 25. Prozesssprachen Die PVM unterstützt verschiedene Sprachen • Graphen / Blockstruktur • Sprache kann durch entsprechendes Node-Verhalten implementiert werden • Es wird geben – XPDL: Nova Bonita – jPDL: JBoss jBPM JPDL 4 – BPEL: Orchestra • Sprachen sind in XML umgesetzt Bernd Rücker / bernd.ruecker@camunda.com / 25
  • 26. Was ist BPM? Begriffsproblem Organisationslehre Business Process (Orga-) Geschäftsprozess- Ablauforganisation Reengineering - BPR Management - GPM bis 1990 1990 - 2000 ab 2000 Business Business Process Management - BPM IT ab 2004 Prozessautomatisierung ab 2006 Human Serviceorientierte Workflow Management Architekturen (SOA) ab 2000 ab 2005 Dokumenten-Management – Enterprise Appliation Integration – Systeme – DMS (u.a.) EAI Bernd Rücker / bernd.ruecker@camunda.com / 26
  • 27. Aktuelle Ambitionen Der BPM-Kreislauf Prozess- Strategie Prozess- Prozess- KVP entwurf controlling Business IT Prozess- implementierung Bernd Rücker / bernd.ruecker@camunda.com / 27
  • 28. Der Traum der Magic BPM-Suite Der BPM-Kreislauf Modelling Monitoring Business IT Magic BPM-Suite Human Workflow EAI / SOA Bernd Rücker / bernd.ruecker@camunda.com / 28
  • 29. JBoss jBPM 4 jBPM die Vierte • Aufbauend auf PVM • Persistenz über JPA geplant • Unterstützung BPMN • siehe http://www.bpm-guide.de/2009/01/26/ein- erster-blick-auf-jbpm-4/ Bernd Rücker / bernd.ruecker@camunda.com / 38
  • 30. Weitere Änderungen in jBPM 4 jBPM die Vierte • Allgemeingültige API – ProcessService – ExecutionService – TaskService – ManagementService – CommandService • Grafische Informationen im gleichen XML • Deployment in AS/ESB wird verbessert Bernd Rücker / bernd.ruecker@camunda.com / 39
  • 31. Beispielprozess im neuen Designer jBPM die Vierte Bernd Rücker / bernd.ruecker@camunda.com / 40
  • 32. Und das Beispiel als Quellcode BPM die Vierte <process xmlns="http://jbpm.org/4/jpdl" name="TicketProcess"> <start name="Start" g="15,146,48,48"> <flow to="Kundenbetreuer bekannt?"/> </start> <exclusive name="Kundenbetreuer bekannt?" g="84,144,48,48"> <flow to="Kundenbetreuer festlegen" g="108,24"> <condition expr="#{false}"/> </flow> <flow to="join"> <condition expr="#{true}"/> </flow> </exclusive> <task name="Kundenbetreuer festlegen" g="168,0,153,51" assignee="bernd"> <flow to="CRM aktualisieren"/> </task> Bernd Rücker / bernd.ruecker@camunda.com / 44
  • 33. Nicht gut: Regeln im Prozess Prozessmodelle und Geschäftsregeln Preiskalkulation Auftragswert < 50 TEUR Normalpreis 3% Rabatt 50k <= AW < 100k kalkulieren abziehen 5% Rabatt 100k <= AW < 250k abziehen Verhandelten Rabatt individuell verhandelt Rabatt abziehen Bernd Rücker / bernd.ruecker@camunda.com / 45
  • 34. Regeln sinnvoll abbilden Prozessmodelle und Geschäftsregeln Auftragswert Rabatt verhandelt? Rabatt (%) AW < 50 T€ Nein 0 50 T€ <= AW < 100 T€ Nein 3 100 T€ <= AW < 250 T€ Nein 5 <egal> Ja <individuell> Bernd Rücker / bernd.ruecker@camunda.com / 46
  • 35. Was sind Regeln? • „Wenn ich müde bin, dann gehe ich ins Bett!“ • „WENN .. DANN ..“-Struktur • Bedingung und Konseqenz (Prämisse und Konklusion; Left-Hand-Side LHS und Right-Hand- Side RHS) • Konsequenz wird häufig als „Aktion“ bezeichnet • Bedingungen prüfen „Fakten“ • Regeln „feuern“, wenn deren Bedingung eintrifft Bernd Rücker / bernd.ruecker@camunda.com / 47
  • 36. Wie werden Regeln umgesetzt? Alternativen • Direkte Programmierung im Quellcode: if ( person.istMuede() == true ) { person.putzeZaehne(); person.geheInsBett(); } • Spezifische Lösungen (Codegenerierung, DSL, Speziallösungen, …) • Regelmaschine / Rule Engine Bernd Rücker / bernd.ruecker@camunda.com / 48
  • 37. Probleme programmierter Regeln Wie werden Regeln umgesetzt? • Wartbarkeit und Validierbarkeit nicht gegeben • Regeln müssen durch Entwickler in Quellcode übersetzt werden • Fachliche Regeln werden über verschiedene Klassen verteilt • Keine Lesbarkeit der Regeln für den Fachbereich • Konflikt-Lösung muss realisiert werden Bernd Rücker / bernd.ruecker@camunda.com / 49
  • 38. Vorteile der Rule-Engine Wie werden Regeln umgesetzt? • Explizite Formulierung der Regeln als Regeln • Deklarativ: Welche Regeln wann wie ausgeführt werden entscheidet die Regelmaschine • Regeln für Fachbereich verständlich Bedingung: Person.muede = true Konsequenz: person.putzeZaehne(); person.geheInsBett(); Bernd Rücker / bernd.ruecker@camunda.com / 50
  • 39. Rule Engines in Java Architektur • Fakten (Wissen) = Domänenobjekte (POJOs) • Rule Engine wird generisch in die Architektur integriert (Interceptoren, …) • Rule Engine wird gezielt angesprochen Client Anwendung / Server Interceptor Fachlogik Bernd Rücker / bernd.ruecker@camunda.com / 51
  • 40. JBoss Drools Die Open Source Rule Engine • Java Rule Engine (RETE-Implementierung) • „JBoss Drools“ / „JBoss Rules“ • Lauffähig mit oder ohne Application-Server • „Library“ • Business Rules Management System (BRMS) • Aktuell Version 4.0 (Version 5 in der Pipe) • Open Source (ASL) Bernd Rücker / bernd.ruecker@camunda.com / 52
  • 41. Drools-Regeln Beispiel package com.camunda.demo import demo.business.*; import demo.infrastructure.ErrorList; global ErrorList errors; rule "Auftragsrabatt bei hohem Bestellwert" when o: Order( value>5000 ) then o.setDiscount(0.05); end rule "Nachnahme nur bis 2500 € möglich" when o: Order( value>2500, shippingType="COD" ) then errors.addError("Nachname nicht möglich bei Auftragswert " + o.getValue()); end Bernd Rücker / bernd.ruecker@camunda.com / 53
  • 42. Drools im Einsatz API Regeln POJO‘s WorkingMemory fireAllRules RuleBaseLoader loader = RuleBaseLoader.getInstance(); RuleBase ruleBase = loader.loadFromReader( new InputStreamReader(this.getClass().getResourceAsStream( "/demo.drl"))); WorkingMemory wm = ruleBase.newStatefulSession(); wm.insert(meldung); wm.fireAllRules(); Bernd Rücker / bernd.ruecker@camunda.com / 54
  • 43. Beispiel: Golfer Riddle Drools There are four Golfers standing at a tee, in a line from left to right • The golfer to Fred’s immediate right is wearing blue pants • Joe is second in line • Bob is wearing plaid pants • Tom isn’t in position one or four, and he isn’t wearing the orange pants Bernd Rücker / bernd.ruecker@camunda.com / 55
  • 44. Regelbeispiel Example: Golfer Riddle rule "find solution“ when // There is a golfer named Fred, // Whose positions is $p1 $fred : Golfer( name == "Fred" ) // Joe is in position 2 $joe : Golfer( name == "Joe", position == 2, position != $fred.position, color != $fred.color ) ... then System.out.println( "Fred " + $fred.getPosition() + " " + $fred.getColor() ); System.out.println( "Joe " + $joe.getPosition() + " " + $joe.getColor() ); System.out.println( "Bob " + $bob.getPosition() + " " + $bob.getColor() ); System.out.println( "Tom " + $tom.getPosition() + " " + $tom.getColor() ); end Bernd Rücker / bernd.ruecker@camunda.com / 56
  • 45. Drools im Einsatz Wie funktioniert es intern? • In-memory Knowledge-Repository • Basiert auf Rete Algorithm • Forward chaining • Backward chaining ist geplant (Drools 5?) Bernd Rücker / bernd.ruecker@camunda.com / 57
  • 46. Für den Fachbereich: Decision Tables Bernd Rücker / bernd.ruecker@camunda.com / 58
  • 47. DSL-Support Drools [when]Versicherter unter {MindestAlter} Jahre alt= Person( age < {MindestAlter} ) [when]Mehr als {Anzahl} Unfälle gebaut= Person( accidentCount > {Anzahl} ) ... [then]Police nicht möglich= errors.addError("Police kann nicht ausgestellt werden"); rule "Abmeldung - Check mit DSL" when Versicherter unter 25 Jahre alt and Mehr als 3 Unfälle gebaut then Police nicht möglich end Bernd Rücker / bernd.ruecker@camunda.com / 59
  • 48. DSL-Support Drools Bernd Rücker / bernd.ruecker@camunda.com / 60
  • 49. Regeleditor ohne DSL Drools Bernd Rücker / bernd.ruecker@camunda.com / 61
  • 50. Guided Rule Editor Verfügbar in Eclipse & BRMS Bernd Rücker / bernd.ruecker@camunda.com / 62
  • 51. RuleFlow Grahpical representation • Welche Regeln sollen in welcher Reihenfolge • Parallel oder • unter welchen Bedingungen ausgeführt werden Bernd Rücker / bernd.ruecker@camunda.com / 63
  • 52. Tooling: Eclipse Drools Bernd Rücker / bernd.ruecker@camunda.com / 64
  • 53. Business Rules Management System Drools BRMS Web-GUI Anwendung Drools Rule-Repository (JCR) Server Bernd Rücker / bernd.ruecker@camunda.com / 65
  • 54. BPM + !BRM = ? !BPM + BRM = ? BPM + BRM = ? Bernd Rücker / bernd.ruecker@camunda.com / 66
  • 55. Geschäftsprozesse mit Regeln umsetzen? BPM + BRM • Möglich! • Vorteil: Maximale Flexibilität • Nachteile – Keine Visualisierung / Modellierung des Prozessflusses – Nicht immer offensichtlich, warum was passiert – Keine „Grenzen“ durch Prozessstruktur – Keine out-of-the-box Wartezustände / Persistenz Bernd Rücker / bernd.ruecker@camunda.com / 67
  • 56. Einsatzmöglichkeiten BPM + BRM • BPM (Prozesse) – Geschäftsprozesse / Workflows – Fachliche Modellierung – Hoher Standardisierungs-/Wiederholungsgrad • BRM (Regeln) – Prozessunabhängige Regeln – Punktuelle Integration in Prozesse – Beeinflussung des Prozessablaufs (80/20 Regel) In Kombination stabilere Prozesse bei mehr Agilität! Bernd Rücker / bernd.ruecker@camunda.com / 68
  • 57. Kombinationsmöglichkeiten Regeln treffen Entscheidungen Regeln steuern Zuweisung von Aufgaben Regeln schließen neues Wissen Und: Beeinflussung des Prozessablaufs in Sonderfällen Bernd Rücker / bernd.ruecker@camunda.com / 69
  • 58. Schließen von “neuem Wissen” jBPM + Drools rule "Special Discount" when o : Order( customerName == "Bernd" ) then # 5 % discount o.applyDiscount( 0.95 ); System.out.println("Special discount granted"); end <action class="org.jbpm.action.RulesActionHandler"> <ruleFile>/...OrderPricingRules.drl</ruleFile> <objectNames> <element>order</element> </objectNames> </action> Bernd Rücker / bernd.ruecker@camunda.com / 70
  • 59. Entscheidungen jBPM + Drools <node name="drools decision"> <action class="org.jbpm.action.RulesActionHandler“> <ruleFile>/com/.../OrderDecisionRules.drl</ruleFile> <objectNames> <element>order</element> </objectNames> <signalToken>false</signalToken> </action> <transition name="conspicuous" to="do something" /> <transition name="casual" to="determine discount" /> </node> Besseres Design: rule "Conspicuous Order" when Regeln schreiben Order( price > 500) Ergebnis in then Prozessvariable System.out.println("signal conspicuous order"); und jBPM executionContext.getNode(). leave(executionContext, "conspicuous"); „Decision“ wertet end diese aus Bernd Rücker / bernd.ruecker@camunda.com / 71
  • 60. Beeinflussung des Prozessablaufs Event getrieben reagieren / Ausnahmen rule "Order gets cancelled" when evt : Event( type == "cancel" ) then token.setNode( "end2" ); end Token Bernd Rücker / bernd.ruecker@camunda.com / 72
  • 61. Actor-Assignment Wer ist zuständig? <assignment class="org.jbpm.assignment.RulesAssignmentHandler"> <group>underwriting</group> <ruleFile>/Assignment.drl</ruleFile> <objectNames><element>policy</element></objectNames> </assignment> rule "Determine Junior Role“ when Policy( basePrice < 500) then insert(new Role("junior")); end rule "Determine Actor" salience -100 when Role($roleName : roleName) $a : Assignable() $group : Group() Membership( group == $group, role == $roleName, $user : user ) then $a.setActorId($user.getName()); Bernd Rücker / bernd.ruecker@camunda.com / 73 end
  • 62. Ausblick: ESB / Content Based Routing Beispiel: JBoss jBPM jPDL + JBoss ESB System 1 System 2 Content-Based Router Service Environment JBoss ESB JBoss jBPM Bernd Rücker / bernd.ruecker@camunda.com / 74
  • 63. ESB & Content Based Routing Vergleiche Event Driven Architecture (EDA) Quelle: JBoss Bernd Rücker / bernd.ruecker@camunda.com / 75
  • 64. Fazit Geschäftsprozesse und Regeln mit jBPM und Drools • jBPM ist eine kleine, flexible Process Engine. Bewährt auch in großen Projekten! • Drools ist cool und steht teuren Rule Engines in wenig nach • Integrieren & Kombinieren! • siehe auch JBoss SOA Plattform (ESB) • BPM & BRM bleiben Thema, selbst wenn SOA Tod ist ;-) Bernd Rücker / bernd.ruecker@camunda.com / 76
  • 65. Fragen & Antworten Bernd Rücker Geschäftsführer Berater, Trainer & Coach bernd.ruecker@camunda.com +49 711 3278645 +49 171 1473461 Unsere Themen • Ganzheitliches BPM • Prozessautomatisierung • SOA, BPEL, XPDL, jBPM, Drools, ESB • BPMN • BPM-Toolauswahl Unsere Leistungen • Beratung • Seminare • Process Hosting Bernd Rücker / bernd.ruecker@camunda.com / 77