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...
Upcoming SlideShare
Loading in...5
×

20080421 JAX Geschaeftsprozesse und Regeln mit jBPM und Drools

1,428

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,428
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×