Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und relevantere Anzeigen zu schalten. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Bernd Rücker | camunda services GmbH | bernd.ruecker@camunda.com


Geschäftsprozesse und Regeln mit
jBPM und Drools
ein un...
Bernd Rücker

• Berater, Trainer, Coach
• Softwareentwickler
• Committer im jBPM-Projekt
  – Commands
  – Simulation (BPS)...
Agenda

• Business Process Management (BPM)
• Business Rules Management (BRM)
• Einsatzgebiete, Abgrenzung und
  Kombinati...
Was ist ein Geschäftsprozess?

• Erzeugt einen definierten Output aus einem
  gegebenen Input
• Geordnete Aktivitäten
• Er...
Werden Prozesse durch Software
unterstützt?


    GUI
                             Paper            Email

               ...
Softwareintegration
 Prozesse
               Activity 1           Activity 2      Activity 3
                             ...
Ein „digitaler“ Prozess

                       ∆ Durchlaufzeit



         Execution Engine

           Task             ...
Business Process Engine

 Business Analyst               Sachbearbeiter
                                                  ...
Das Versprechen der Anbieter: „It‘s All
Magic!“
              Modeling          Monitoring




 Business
 IT
             ...
Gemeinsame Sprache




                     Quelle: Tom Baeyens, JBoss
Was leistet die Business Process Engine
• Versionierung, Persistenz & Interpretation
  von Prozessmodellen
• Steuerung & P...
Business Process Engine in Java

• Process Engine ist eigene
  Architekturschicht
• Domänenobjekte oder Referenzen als
  P...
JBoss jBPM
• Business Process Engine
• POJO-Kern: Interne Prozessrepräsentation
  durch Java-Modelle
• Persistenz über Hib...
„Graph oriented programming“
                            Node           1
                                                ...
Verschiedene Node-Typen

•   Task-Node: Human Tasks / Aufgaben
•   State: Wait-States
•   Fork / Join
•   Decision: Automa...
Ablaufsteuerung durch Token




               Bernd Rücker | camunda services GmbH
                                 23.04...
jBPM & Java

• Einfache Java-API zur Steuerung der
  Engine
  – Prozessstart
  – Aufgabenliste
  –…
• Aufrufen von „User-C...
jBPM & Java
JbpmConfiguration conf = JbpmConfiguration.getInstance();
JbpmContext context = conf. createJbpmContext();

Pr...
Gemeinsame Sprache, Beispiel jBPM




               Bernd Rücker | camunda services GmbH
                                ...
Tooling: Eclipse




                   Bernd Rücker | camunda services GmbH
                                     23.04.20...
Was sind Regeln?
• „Wenn ich müde bin, dann gehe ich ins Bett!“

• „WENN .. DANN ..“-Struktur
• Bedingung und Konseqenz (P...
Wie werden Regeln umgesetzt?
• Direkte Programmierung im Quellcode:

  if ( person.istMuede() == true ) {
    person.putze...
Probleme programmierter Regeln
• Wartbarkeit und Validierbarkeit nicht
  gegeben
• Regeln müssen durch Entwickler in
  Que...
Lösung: Rule Engines
• Explizite Formulierung der Regeln als Regeln
• Deklarativ: Welche Regeln wann wie
  ausgeführt werd...
Rule Engines in Java

• Fakten (Wissen) = Domänenobjekte
  (POJOs)
• Rule Engine wird generisch in die
  Architektur integ...
JBoss Drools

• Java Rule Engine (RETE-Implementierung)
• „JBoss Drools“ / „JBoss Rules“
• Lauffähig mit oder ohne Applica...
Beispiel einer Drools-Regel
package com.camunda.demo

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

globa...
Wie funktioniert es?
                                                                  Regeln




                        ...
Drools

•   In-memory Knowledge-Repository
•   Basiert auf Rete Algorithm
•   Forward chaining
•   Backward
    chaining i...
Für den Fachbereich: Decision Tables
DSL-Support

[when]Versicherter unter {MindestAlter} Jahre alt=
    Person( age >= {MindestAlter} )
[when]Mehr als {Anzahl...
DSL-Support




                         Bernd Rücker | camunda services GmbH
              bernd.ruecker@camunda.com | 23...
Regeleditor ohne DSL




                       Bernd Rücker | camunda services GmbH
            bernd.ruecker@camunda.com...
Guided Rule Editor


Verfügbar in
Eclipse &
BRMS




                          Bernd Rücker | camunda services GmbH
      ...
Rule Flow

• Regel-Reihenfolge
• Parallelität
• Bedingungen ob Regeln
  ausgeführt werden




                       Bernd...
Tooling: Eclipse




                   Bernd Rücker | camunda services GmbH
                                     23.04.20...
BPM vs. BRM | BPM + BRM




              Bernd Rücker | camunda services GmbH
                                23.04.2008,...
Geschäftsprozesse mit Regeln
umsetzen?
• Möglich!
• Vorteil: Maximale Flexibilität
• Nachteile
  – Keine Visualisierung / ...
Einsatzmöglichkeiten

• BPM (Prozesse)
  – Geschäftsprozesse / Workflows
  – Fachliche Modellierung
  – Hoher Standardisie...
Wann benutze ich was?




                      Bernd Rücker | camunda services GmbH
           bernd.ruecker@camunda.com ...
Kombinationsmöglichkeiten


                     Regeln treffen Entscheidungen


                     Regeln steuern Zuwei...
Entscheidungen
<node name="drools decision">
  <action class="org.jbpm.action.RulesActionHandler“>
    <ruleFile>/com/.../...
Schließen von neuem Wissen
           rule "Special Discount"
           when
              o : Order( customerName == "Be...
Actor-Assignment (Wer ist zuständig?)
<assignment class="org.jbpm.assignment.RulesAssignmentHandler">
  <group>underwritin...
Beeinflussung des Prozessablaufs
         rule "Order gets cancelled"
         when
            evt : Event( type == "canc...
Fazit
• jBPM & Drools integrieren sehr gut
• Benutzen Sie das richtige Tool für den Job
• Kombinieren Sie!
• jBPM ist eine...
Fazit




                                                            Quelle:
                                            ...
JAX Innovation Award?




Heute:
Halle 1
19:30

Ihre Stimme zählt….
                      Bernd Rücker | camunda services ...
Fragen & Antworten
                                      Bernd Rücker
                                      Geschäftsführe...
Nächste SlideShare
Wird geladen in …5
×

20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools

2.301 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, Business
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools

  1. 1. Bernd Rücker | camunda services GmbH | bernd.ruecker@camunda.com Geschäftsprozesse und Regeln mit jBPM und Drools ein unschlagbares Team
  2. 2. Bernd Rücker • Berater, Trainer, Coach • Softwareentwickler • Committer im jBPM-Projekt – Commands – Simulation (BPS) • Themen: BPM, SOA, Process Execution [jBPM, BPEL, XPDL, …], Verbindung mit Java EE Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 2
  3. 3. Agenda • Business Process Management (BPM) • Business Rules Management (BRM) • Einsatzgebiete, Abgrenzung und Kombinationsmöglichkeiten • Konkretes Beispiel – JBoss jBPM – JBoss Drools Bernd Rücker | camunda services GmbH 23.04.2008, Folie 3
  4. 4. Was ist ein Geschäftsprozess? • Erzeugt einen definierten Output aus einem gegebenen Input • Geordnete Aktivitäten • Erzeugt Wert („business value“) • Lang laufend (bis zu Monaten oder Jahren) • Enthält Wartezustände • Aktivitäten können automatisiert (EAI/SOA) oder durch Menschen (Human-Task-Management) ausgeführt werden
  5. 5. Werden Prozesse durch Software unterstützt? GUI Paper Email Gui 1 Gui 2 Gui 3 Software Kunden SAP Komponente Server EAI-Tool Web-Service
  6. 6. Softwareintegration Prozesse Activity 1 Activity 2 Activity 3 Prozess- integration Services Anwendungen App 1 App 2 Funktions- integration Middleware Daten Logische Datenbank Daten- integration DB 1 DB 2
  7. 7. Ein „digitaler“ Prozess ∆ Durchlaufzeit Execution Engine Task Service Task Zuweisung Aufruf Zuweisung IT IT IT Human Workflow SOA Human Workflow
  8. 8. Business Process Engine Business Analyst Sachbearbeiter Aufgaben- Verwaltung Prozess- Fremd- Ausführung Anwendungen Prozess- definitionen Administration Administrator Prozess- Logs Persistenz Business Process Engine (BPM-Engine) Entwickler
  9. 9. Das Versprechen der Anbieter: „It‘s All Magic!“ Modeling Monitoring Business IT Magic Process Engine Human Workflow EAI / SOA
  10. 10. Gemeinsame Sprache Quelle: Tom Baeyens, JBoss
  11. 11. Was leistet die Business Process Engine • Versionierung, Persistenz & Interpretation von Prozessmodellen • Steuerung & Persistenz von Prozessinstanzen • Task-Management & Wait-States • Prozesskontext (Variablen zu Prozess speichern) • Einbindung externer Services • Verwalten von Ereignissen (wie Timeouts, …) Bernd Rücker | camunda services GmbH 23.04.2008, Folie 11
  12. 12. Business Process Engine in Java • Process Engine ist eigene Architekturschicht • Domänenobjekte oder Referenzen als Prozessvariablen EJB-Container • Ansteuerung ext. BPM-Engine Services Session Bean EJB JCA JMS … Bernd Rücker | camunda services GmbH 23.04.2008, Folie 12
  13. 13. JBoss jBPM • 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 Entw. • Open Source (LGPL) Bernd Rücker | camunda services GmbH 23.04.2008, Folie 13
  14. 14. „Graph oriented programming“ Node 1 Token current Node from to leaving arriving Transitions * * Transitions Transition <process-definition> ... <node-type-x name=“serve client”> <transition name=“ok” to=“order” /> <transition name=“nok” to=“joke” /> </node-type-x> <node-type-y name=“take order” /> <node-type-z name=“make joke” /> ... </process-definition> Bernd Rücker | camunda services GmbH 23.04.2008, Folie 14
  15. 15. Verschiedene Node-Typen • Task-Node: Human Tasks / Aufgaben • State: Wait-States • Fork / Join • Decision: Automatische Entscheidung • Start-State / End-State • … • Eigene Node-Typen mit Verhalten können implementiert werden Bernd Rücker | camunda services GmbH 23.04.2008, Folie 15
  16. 16. Ablaufsteuerung durch Token Bernd Rücker | camunda services GmbH 23.04.2008, Folie 16
  17. 17. jBPM & Java • Einfache Java-API zur Steuerung der Engine – Prozessstart – Aufgabenliste –… • Aufrufen von „User-Code“ – definierte Stellen im Prozess – Interface & Java-Klassen Bernd Rücker | camunda services GmbH 23.04.2008, Folie 17
  18. 18. jBPM & Java 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 | camunda services GmbH 23.04.2008, Folie 18
  19. 19. Gemeinsame Sprache, Beispiel jBPM Bernd Rücker | camunda services GmbH 23.04.2008, Folie 19
  20. 20. Tooling: Eclipse Bernd Rücker | camunda services GmbH 23.04.2008, Folie 20
  21. 21. 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
  22. 22. Wie werden Regeln umgesetzt? • Direkte Programmierung im Quellcode: if ( person.istMuede() == true ) { person.putzeZaehne(); person.geheInsBett(); } • Spezifische Lösungen (Codegenerierung, DSL, Speziallösungen, …) • Regelmaschine / Rule Engine
  23. 23. Probleme programmierter Regeln • 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
  24. 24. Lösung: Rule Engines • 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();
  25. 25. Rule Engines in Java • Fakten (Wissen) = Domänenobjekte (POJOs) • Rule Engine wird generisch in die Architektur integriert (Interceptoren, …) Client Anwendung / Server Interceptor Fachlogik Bernd Rücker | camunda services GmbH 23.04.2008, Folie 25
  26. 26. JBoss Drools • Java Rule Engine (RETE-Implementierung) • „JBoss Drools“ / „JBoss Rules“ • Lauffähig mit oder ohne Application-Server • „Library“ • Business Rules Management System (BRMS) in der Entwicklung • Aktuell Version 4.0 • Open Source (ASL) Bernd Rücker | camunda services GmbH 23.04.2008, Folie 26
  27. 27. Beispiel einer Drools-Regel 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 a.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
  28. 28. Wie funktioniert es? 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 | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 28
  29. 29. Drools • In-memory Knowledge-Repository • Basiert auf Rete Algorithm • Forward chaining • Backward chaining ist geplant (Drools 5)
  30. 30. Für den Fachbereich: Decision Tables
  31. 31. DSL-Support [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 | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 31
  32. 32. DSL-Support Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 32
  33. 33. Regeleditor ohne DSL Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 33
  34. 34. Guided Rule Editor Verfügbar in Eclipse & BRMS Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 34
  35. 35. Rule Flow • Regel-Reihenfolge • Parallelität • Bedingungen ob Regeln ausgeführt werden Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 35
  36. 36. Tooling: Eclipse Bernd Rücker | camunda services GmbH 23.04.2008, Folie 36
  37. 37. BPM vs. BRM | BPM + BRM Bernd Rücker | camunda services GmbH 23.04.2008, Folie 37
  38. 38. Geschäftsprozesse mit Regeln umsetzen? • Möglich! • Vorteil: Maximale Flexibilität • Nachteile – Keine Visualisierung / Modellierung des Prozessflusses – Nicht immer offensichtlich, warum was passiert – Keine „Grenzen“ durch Prozessstruktur – Evtl. Performance Bernd Rücker | camunda services GmbH 23.04.2008, Folie 38
  39. 39. Einsatzmöglichkeiten • 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) Bernd Rücker | camunda services GmbH 23.04.2008, Folie 39
  40. 40. Wann benutze ich was? Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 40
  41. 41. 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 | camunda services GmbH 23.04.2008, Folie 41
  42. 42. Entscheidungen <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> rule "Conspicuous Order" when Order( price > 500) then System.out.println("signal conspicuous order"); executionContext.getNode(). leave(executionContext, "conspicuous"); end
  43. 43. Schließen von neuem Wissen 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>
  44. 44. 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()); end
  45. 45. Beeinflussung des Prozessablaufs rule "Order gets cancelled" when evt : Event( type == "cancel" ) then token.setNode( "end2" ); end Token
  46. 46. Fazit • jBPM & Drools integrieren sehr gut • Benutzen Sie das richtige Tool für den Job • Kombinieren Sie! • jBPM ist eine kleine, flexible Process Engine. Bewährt auch in großen Projekten • Drools ist cool ☺ Steht teuren Rule Engines in nichts nach • BPM & BRM sind Themen der Zukunft! • Ausblick: Integration in den JBoss ESB
  47. 47. Fazit Quelle: Lary Ward & Jordan Masanga Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 47
  48. 48. JAX Innovation Award? Heute: Halle 1 19:30 Ihre Stimme zählt…. Bernd Rücker | camunda services GmbH bernd.ruecker@camunda.com | 23.04.2008 | Folie 48
  49. 49. Fragen & Antworten Bernd Rücker Geschäftsführer Berater, Trainer & Coach bernd.ruecker@camunda.com +49 711 3278645 Unsere Themen • Ganzheitliches BPM • Prozessautomatisierung • SOA, BPEL, XPDL, jBPM, Drools, ESB • BPMN • BPM-Toolauswahl Unsere Leistungen • Beratung • Seminare • Process as a Service (Hosting) Bernd Rücker | camunda services GmbH 23.04.2008, Folie 49

×