SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Geschäftsprozesse und Regeln
          mit jBPM und Drools
    – ein unschlagbares Team
                  JavaConference
             München, 12.09.2008
     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
Agenda
Geschäftsprozess und Regeln

  •   Business Process Management (BPM)
  •   JBoss jBPM
  •   Business Rules Management (BRM)
  •   JBoss Drools
  •   Einsatzgebiete, Abgrenzung und
      Kombinationsmöglichkeiten
Ein „digitaler“ Prozess
mit Business Process Engine



                               Δ Durchlaufzeit




                     Task          Service            Task
                   Zuweisung       Aufruf           Zuweisung



       Process Engine
                                      IT

              Human Workflow        EAI          Human Workflow
                                    SOA
JBoss jBPM
Open Source Process Execution

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




                                  deploy
                         XML               jBPM API

                                               Neue
                         .class
                                               Version

                                             DB
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
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
jBPM & Java
jBPM in a nutshell

  JbpmConfiguration conf = JbpmConfiguration.getInstance();
  JbpmContext context = conf. createJbpmContext();

  ProcessInstance pi = context.getGraphSession().
            findLatestProcessDefinition(quot;Ticketquot;).createProcessInstance();
  pi.getRootToken().signal();

  List<TaskInstance> tasks = context.getTaskMgmtSession().
            findTaskInstances(quot;Vertriebquot;);
  tasks.get(0).end(quot;Ticket schliessenquot;);

  context.close();



  public class MyAction implements ActionHandler {
   public void execute(ExecutionContext ctx) {
    Object var = ctx.getVariable(quot;varquot;);
    result = service.doSomething(var);
    ctx.setVariable(quot;resultquot;, result);
   }
  }
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
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
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
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();
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
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 (bald Version 5)
  •   Open Source (ASL)
Drools-Regeln
Beispiel


 package com.camunda.demo

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

 global ErrorList errors;

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

 rule quot;Nachnahme nur bis 2500 € möglichquot;
 when
    o: Order( value>2500, shippingType=quot;CODquot; )
 then
    errors.addError(quot;Nachname nicht möglich bei Auftragswert quot; + o.getValue()
 );
 end
Drools im Einsatz
API

                                                          Regeln




                                  POJO„s
                                                     WorkingMemory

                               fireAllRules


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

      WorkingMemory wm = ruleBase.newStatefulSession();

      wm.insert(meldung);

      wm.fireAllRules();
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
Regelbeispiel
Example: Golfer Riddle
rule quot;find solution“

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

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

    ...

then
  System.out.println(    quot;Fred quot; + $fred.getPosition()   +   quot;   quot;   + $fred.getColor() );
  System.out.println(    quot;Joe quot; + $joe.getPosition() +   quot;   quot;   +   $joe.getColor() );
  System.out.println(    quot;Bob quot; + $bob.getPosition() +   quot;   quot;   +   $bob.getColor() );
  System.out.println(    quot;Tom quot; + $tom.getPosition() +   quot;   quot;   +   $tom.getColor() );
end
Drools im Einsatz
Wie funktioniert es intern?

  •   In-memory Knowledge-Repository
  •   Basiert auf Rete Algorithm
  •   Forward chaining
  •   Backward
      chaining ist
      geplant
      (Drools 5)
Für den Fachbereich: Decision Tables
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(quot;Police kann nicht ausgestellt werdenquot;);

  rule quot;Abmeldung - Check mit DSLquot;
  when
    Versicherter unter 25 Jahre alt
    and
    Mehr als 3 Unfälle gebaut
  then
    Police nicht möglich
  end
DSL-Support
Drools
Regeleditor ohne DSL
Drools
Guided Rule Editor




  Verfügbar in
  Eclipse &
  BRMS
RuleFlow
Grahpical representation

  • Welche Regeln sollen in welcher Reihenfolge
  • Parallel oder
  • unter welchen Bedingungen ausgeführt werden
Tooling: Eclipse
Drools
Business Rules Management System
Drools BRMS




 Web-GUI
              Anwendung
 Drools

 Rule-Repository
          (JCR)




Server
BPM vs. BRM | BPM + BRM
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
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!
Kombinationsmöglichkeiten




                        Regeln treffen Entscheidungen


                        Regeln steuern Zuweisung von
                        Aufgaben

                        Regeln schließen neues Wissen




                                      Und: Beeinflussung des
                                           Prozessablaufs in
                                                Sonderfällen
Schließen von “neuem Wissen”
jBPM + Drools

                rule quot;Special Discountquot;
                when
                   o : Order( customerName == quot;Berndquot; )
                then
                   # 5 % discount
                   o.applyDiscount( 0.95 );
                   System.out.println(quot;Special discount grantedquot;);
                end




                   <action
                   class=quot;org.jbpm.action.RulesActionHandlerquot;>
                     <ruleFile>/...OrderPricingRules.drl</ruleFile>
                     <objectNames>
                        <element>order</element>
                     </objectNames>
                   </action>
Entscheidungen
jBPM + Drools

  <node name=quot;drools decisionquot;>
    <action class=quot;org.jbpm.action.RulesActionHandler“>
      <ruleFile>/com/.../OrderDecisionRules.drl</ruleFile>
      <objectNames>
          <element>order</element>
      </objectNames>
      <signalToken>false</signalToken>
    </action>
    <transition name=quot;conspicuousquot; to=quot;do somethingquot; />
    <transition name=quot;casualquot; to=quot;determine discountquot; />
  </node>

Besseres Design:    rule quot;Conspicuous Orderquot;
                    when
Regeln schreiben      Order( price > 500)
Ergebnis in         then
Prozessvariable       System.out.println(quot;signal conspicuous orderquot;);
und jBPM              executionContext.getNode().
                                       leave(executionContext, quot;conspicuousquot;);
„Decision“ wertet   end
diese aus
Beeinflussung des Prozessablaufs
Event getrieben reagieren / Ausnahmen


                         rule quot;Order gets cancelledquot;
                         when
                            evt : Event( type == quot;cancelquot; )
                         then
                            token.setNode( quot;end2quot; );
                         end




                                                  Token
Actor-Assignment
Wer ist zuständig?


  <assignment class=quot;org.jbpm.assignment.RulesAssignmentHandlerquot;>
    <group>underwriting</group>
    <ruleFile>/Assignment.drl</ruleFile>
    <objectNames><element>policy</element></objectNames>
  </assignment>

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

                              rule quot;Determine Actorquot;
                              salience -100
                              when
                                Role($roleName : roleName)
                                $a : Assignable()
                                $group : Group()
                                Membership( group == $group, role == $roleName,
                                            $user : user )
                              then
                                $a.setActorId($user.getName());
                              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
ESB & Content Based Routing
Vergleiche Event Driven Architecture (EDA)




                                             Quelle: JBoss
Fazit
Geschäftsprozesse und Regeln mit jBPM und Drools

  •   jBPM & Drools integrieren sehr gut
  •   Benutzen Sie das richtige Tool für den Job
  •   Kombinieren!
  •   jBPM ist eine kleine, flexible Process Engine.
      Bewährt auch in großen Projekten
  •   Drools ist cool 
  •   Drools steht teuren Rule Engines in nichts nach
  •   BPM & BRM sind Themen der Zukunft!
  •   Integration in JBoss SOA Plattform (ESB)
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

Weitere ähnliche Inhalte

Andere mochten auch

Präsentation der Bachelorarbeit
Präsentation der BachelorarbeitPräsentation der Bachelorarbeit
Präsentation der Bachelorarbeitalm13
 
коллекция Audi в миниатюре
коллекция Audi в миниатюреколлекция Audi в миниатюре
коллекция Audi в миниатюреVag-Express
 
Como fazer um comentário no Blog
Como fazer um comentário no BlogComo fazer um comentário no Blog
Como fazer um comentário no Blogmarlene_herter
 
Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)Carlos De La Ossa
 
CAP 2: SEO - Técnicas de SEO
CAP 2: SEO - Técnicas de SEOCAP 2: SEO - Técnicas de SEO
CAP 2: SEO - Técnicas de SEOGary Briceño
 
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in DortmundMaklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in DortmundCybay New Media
 
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AGWas User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AGONE Schweiz
 
Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02fabrice_TALAZAC
 
Open Source BPM - iteratec Architekturtag
Open Source BPM - iteratec ArchitekturtagOpen Source BPM - iteratec Architekturtag
Open Source BPM - iteratec Architekturtagcamunda services GmbH
 
Tecnicas SEO
Tecnicas SEOTecnicas SEO
Tecnicas SEObluekiu
 
Social Media für Unternehmen und Institutionen
Social Media für Unternehmen und InstitutionenSocial Media für Unternehmen und Institutionen
Social Media für Unternehmen und InstitutionenChristian Moeller
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Google app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the uglyGoogle app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the uglyPET Computação
 

Andere mochten auch (19)

Präsentation der Bachelorarbeit
Präsentation der BachelorarbeitPräsentation der Bachelorarbeit
Präsentation der Bachelorarbeit
 
коллекция Audi в миниатюре
коллекция Audi в миниатюреколлекция Audi в миниатюре
коллекция Audi в миниатюре
 
Como fazer um comentário no Blog
Como fazer um comentário no BlogComo fazer um comentário no Blog
Como fazer um comentário no Blog
 
SMM-SEO.SEM
SMM-SEO.SEMSMM-SEO.SEM
SMM-SEO.SEM
 
Ogre Game Engine
Ogre Game EngineOgre Game Engine
Ogre Game Engine
 
Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)
 
Aula de Risoto
Aula de Risoto Aula de Risoto
Aula de Risoto
 
Noções de Search Engine
Noções de Search EngineNoções de Search Engine
Noções de Search Engine
 
CAP 2: SEO - Técnicas de SEO
CAP 2: SEO - Técnicas de SEOCAP 2: SEO - Técnicas de SEO
CAP 2: SEO - Técnicas de SEO
 
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in DortmundMaklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
 
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AGWas User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
 
Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02
 
Open Source BPM - iteratec Architekturtag
Open Source BPM - iteratec ArchitekturtagOpen Source BPM - iteratec Architekturtag
Open Source BPM - iteratec Architekturtag
 
Tecnicas SEO
Tecnicas SEOTecnicas SEO
Tecnicas SEO
 
Social Media für Unternehmen und Institutionen
Social Media für Unternehmen und InstitutionenSocial Media für Unternehmen und Institutionen
Social Media für Unternehmen und Institutionen
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Google app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the uglyGoogle app engine para lean startups: the good, the bad and the ugly
Google app engine para lean startups: the good, the bad and the ugly
 
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
 
Communicating sustainibility
Communicating sustainibilityCommunicating sustainibility
Communicating sustainibility
 

Ähnlich wie jBPM & Drools

Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Springdenschu
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"camunda services GmbH
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsTorsten Kleiber
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsICS User Group
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
 
Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“inovex 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
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenICS User Group
 
Java Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's StapelnJava Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's Stapelngedoplan
 
JMeter + ELK - Event-basierte Daten != Logfiles in ELK
JMeter + ELK - Event-basierte Daten != Logfiles in ELKJMeter + ELK - Event-basierte Daten != Logfiles in ELK
JMeter + ELK - Event-basierte Daten != Logfiles in ELKinovex GmbH
 
Open icf (open identity connector framework) @ forgerock deutsch
Open icf (open identity connector framework) @ forgerock   deutschOpen icf (open identity connector framework) @ forgerock   deutsch
Open icf (open identity connector framework) @ forgerock deutschHanns Nolan
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Ralf Sigmund
 
Die JSTL Tag-Library
Die JSTL Tag-LibraryDie JSTL Tag-Library
Die JSTL Tag-Librarytutego
 

Ähnlich wie jBPM & Drools (20)

JBoss jBPM
JBoss jBPMJBoss jBPM
JBoss jBPM
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Spring
 
JBoss jBPM 4
JBoss jBPM 4JBoss jBPM 4
JBoss jBPM 4
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
JBoss jBPM 4 bei der JBUG München
JBoss jBPM 4 bei der JBUG MünchenJBoss jBPM 4 bei der JBUG München
JBoss jBPM 4 bei der JBUG München
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“Brownbag: Java Applikationen und die JVM für „Ops“
Brownbag: Java Applikationen und die JVM für „Ops“
 
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?
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 
Java Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's StapelnJava Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's Stapeln
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 
Spring 2.0
Spring 2.0Spring 2.0
Spring 2.0
 
JMeter + ELK - Event-basierte Daten != Logfiles in ELK
JMeter + ELK - Event-basierte Daten != Logfiles in ELKJMeter + ELK - Event-basierte Daten != Logfiles in ELK
JMeter + ELK - Event-basierte Daten != Logfiles in ELK
 
Open icf (open identity connector framework) @ forgerock deutsch
Open icf (open identity connector framework) @ forgerock   deutschOpen icf (open identity connector framework) @ forgerock   deutsch
Open icf (open identity connector framework) @ forgerock deutsch
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
 
Die JSTL Tag-Library
Die JSTL Tag-LibraryDie JSTL Tag-Library
Die JSTL Tag-Library
 

Mehr von 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
 

Mehr von 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
 

jBPM & Drools

  • 1. Geschäftsprozesse und Regeln mit jBPM und Drools – ein unschlagbares Team JavaConference München, 12.09.2008 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
  • 3. Agenda Geschäftsprozess und Regeln • Business Process Management (BPM) • JBoss jBPM • Business Rules Management (BRM) • JBoss Drools • Einsatzgebiete, Abgrenzung und Kombinationsmöglichkeiten
  • 4. Ein „digitaler“ Prozess mit Business Process Engine Δ Durchlaufzeit Task Service Task Zuweisung Aufruf Zuweisung Process Engine IT Human Workflow EAI Human Workflow SOA
  • 5. JBoss jBPM Open Source Process Execution • Business Process Engine • POJO-Kern: Interne Prozessrepräsentation durch Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig mit oder ohne Application-Server • „Library“ • Klein und flexibel, leicht erweiterbar • Aktuell Version 3.2, Version 4 in der Entwicklung • Open Source (LGPL)
  • 6. „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>
  • 7. 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
  • 8. Prozess: Grafik / XML  Java  DB deploy XML jBPM API Neue .class Version DB
  • 9. 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
  • 10. 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
  • 11. jBPM & Java jBPM in a nutshell JbpmConfiguration conf = JbpmConfiguration.getInstance(); JbpmContext context = conf. createJbpmContext(); ProcessInstance pi = context.getGraphSession(). findLatestProcessDefinition(quot;Ticketquot;).createProcessInstance(); pi.getRootToken().signal(); List<TaskInstance> tasks = context.getTaskMgmtSession(). findTaskInstances(quot;Vertriebquot;); tasks.get(0).end(quot;Ticket schliessenquot;); context.close(); public class MyAction implements ActionHandler { public void execute(ExecutionContext ctx) { Object var = ctx.getVariable(quot;varquot;); result = service.doSomething(var); ctx.setVariable(quot;resultquot;, result); } }
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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();
  • 16. 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
  • 17. 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 (bald Version 5) • Open Source (ASL)
  • 18. Drools-Regeln Beispiel package com.camunda.demo import demo.business.*; import demo.infrastructure.ErrorList; global ErrorList errors; rule quot;Auftragsrabatt bei hohem Bestellwertquot; when o: Order( value>5000 ) then o.setDiscount(0.05); end rule quot;Nachnahme nur bis 2500 € möglichquot; when o: Order( value>2500, shippingType=quot;CODquot; ) then errors.addError(quot;Nachname nicht möglich bei Auftragswert quot; + o.getValue() ); end
  • 19. Drools im Einsatz API Regeln POJO„s WorkingMemory fireAllRules RuleBaseLoader loader = RuleBaseLoader.getInstance(); RuleBase ruleBase = loader.loadFromReader( new InputStreamReader(this.getClass().getResourceAsStream( quot;/demo.drlquot;))); WorkingMemory wm = ruleBase.newStatefulSession(); wm.insert(meldung); wm.fireAllRules();
  • 20. 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
  • 21. Regelbeispiel Example: Golfer Riddle rule quot;find solution“ when // There is a golfer named Fred, // Whose positions is $p1 $fred : Golfer( name == quot;Fredquot; ) // Joe is in position 2 $joe : Golfer( name == quot;Joequot;, position == 2, position != $fred.position, color != $fred.color ) ... then System.out.println( quot;Fred quot; + $fred.getPosition() + quot; quot; + $fred.getColor() ); System.out.println( quot;Joe quot; + $joe.getPosition() + quot; quot; + $joe.getColor() ); System.out.println( quot;Bob quot; + $bob.getPosition() + quot; quot; + $bob.getColor() ); System.out.println( quot;Tom quot; + $tom.getPosition() + quot; quot; + $tom.getColor() ); end
  • 22. Drools im Einsatz Wie funktioniert es intern? • In-memory Knowledge-Repository • Basiert auf Rete Algorithm • Forward chaining • Backward chaining ist geplant (Drools 5)
  • 23. Für den Fachbereich: Decision Tables
  • 24. 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(quot;Police kann nicht ausgestellt werdenquot;); rule quot;Abmeldung - Check mit DSLquot; when Versicherter unter 25 Jahre alt and Mehr als 3 Unfälle gebaut then Police nicht möglich end
  • 27. Guided Rule Editor Verfügbar in Eclipse & BRMS
  • 28. RuleFlow Grahpical representation • Welche Regeln sollen in welcher Reihenfolge • Parallel oder • unter welchen Bedingungen ausgeführt werden
  • 30. Business Rules Management System Drools BRMS Web-GUI Anwendung Drools Rule-Repository (JCR) Server
  • 31. BPM vs. BRM | BPM + BRM
  • 32. 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
  • 33. 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!
  • 34. Kombinationsmöglichkeiten Regeln treffen Entscheidungen Regeln steuern Zuweisung von Aufgaben Regeln schließen neues Wissen Und: Beeinflussung des Prozessablaufs in Sonderfällen
  • 35. Schließen von “neuem Wissen” jBPM + Drools rule quot;Special Discountquot; when o : Order( customerName == quot;Berndquot; ) then # 5 % discount o.applyDiscount( 0.95 ); System.out.println(quot;Special discount grantedquot;); end <action class=quot;org.jbpm.action.RulesActionHandlerquot;> <ruleFile>/...OrderPricingRules.drl</ruleFile> <objectNames> <element>order</element> </objectNames> </action>
  • 36. Entscheidungen jBPM + Drools <node name=quot;drools decisionquot;> <action class=quot;org.jbpm.action.RulesActionHandler“> <ruleFile>/com/.../OrderDecisionRules.drl</ruleFile> <objectNames> <element>order</element> </objectNames> <signalToken>false</signalToken> </action> <transition name=quot;conspicuousquot; to=quot;do somethingquot; /> <transition name=quot;casualquot; to=quot;determine discountquot; /> </node> Besseres Design: rule quot;Conspicuous Orderquot; when Regeln schreiben Order( price > 500) Ergebnis in then Prozessvariable System.out.println(quot;signal conspicuous orderquot;); und jBPM executionContext.getNode(). leave(executionContext, quot;conspicuousquot;); „Decision“ wertet end diese aus
  • 37. Beeinflussung des Prozessablaufs Event getrieben reagieren / Ausnahmen rule quot;Order gets cancelledquot; when evt : Event( type == quot;cancelquot; ) then token.setNode( quot;end2quot; ); end Token
  • 38. Actor-Assignment Wer ist zuständig? <assignment class=quot;org.jbpm.assignment.RulesAssignmentHandlerquot;> <group>underwriting</group> <ruleFile>/Assignment.drl</ruleFile> <objectNames><element>policy</element></objectNames> </assignment> rule quot;Determine Junior Role“ when Policy( basePrice < 500) then insert(new Role(quot;juniorquot;)); end rule quot;Determine Actorquot; salience -100 when Role($roleName : roleName) $a : Assignable() $group : Group() Membership( group == $group, role == $roleName, $user : user ) then $a.setActorId($user.getName()); end
  • 39. Ausblick: ESB / Content Based Routing Beispiel: JBoss jBPM jPDL + JBoss ESB System 1 System 2 Content-Based Router Service Environment JBoss ESB JBoss jBPM
  • 40. ESB & Content Based Routing Vergleiche Event Driven Architecture (EDA) Quelle: JBoss
  • 41. Fazit Geschäftsprozesse und Regeln mit jBPM und Drools • jBPM & Drools integrieren sehr gut • Benutzen Sie das richtige Tool für den Job • Kombinieren! • jBPM ist eine kleine, flexible Process Engine. Bewährt auch in großen Projekten • Drools ist cool  • Drools steht teuren Rule Engines in nichts nach • BPM & BRM sind Themen der Zukunft! • Integration in JBoss SOA Plattform (ESB)
  • 42. 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