Your SlideShare is downloading. ×
0
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
jBPM & Drools
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

jBPM & Drools

5,657

Published on

Vortrag auf W-Jax 2008

Vortrag auf W-Jax 2008

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

No Downloads
Views
Total Views
5,657
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
165
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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
  • 25. DSL-Support Drools
  • 26. Regeleditor ohne DSL Drools
  • 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
  • 29. Tooling: Eclipse Drools
  • 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

×