45
ein unschlagbares Team Geschäftsprozesse und Regeln mit jBPM und Drools

20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Embed Size (px)

Citation preview

Page 1: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

ein unschlagbares Team

Geschäftsprozesse und Regeln mit jBPM und Drools

Page 2: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Berater, Trainer, Coach

• Softwareentwickler

• Committer im JBoss jBPM-Projekt

• Themen: BPM, SOA, Process Execution

(jBPM, BPEL, XPDL, …), Java EE

Bernd RückerWer bin ich?

Bernd Rücker / [email protected] / 2

(jBPM, BPEL, XPDL, …), Java EE

• Eigene Trainings zu Process Execution,

BPMN, BPM-Software, …

Page 3: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Business Process Management (BPM)

• JBoss jBPM

• Business Rules Management (BRM)

• JBoss Drools

• Einsatzgebiete, Abgrenzung und

AgendaGeschäftsprozess und Regeln

Bernd Rücker / [email protected] / 3

• Einsatzgebiete, Abgrenzung und

Kombinationsmöglichkeiten

Page 4: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Geschäftsprozesse & SoftwareDer Status Quo in manchen Unternehmen

Software

GUI

Gui 1 Gui 2 Gui 3

Paper Email

Bernd Rücker / [email protected] / 4

EAI-ToolWeb-Service

KundenKomponente

SAPServer

Page 5: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

SoftwareintegrationDer Prozess als Architekturschicht

Prozesse

Activity 1 Activity 2 Activity 3

Anwendungen

App 1 App 2

Prozess-integration

Services

Bernd Rücker / [email protected] / 5

Daten

App 1

DB 2DB 1

Logische Datenbank

App 2

Middleware

Funktions-integration

Daten-integration

Page 6: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Ein „digitaler“ Prozessmit Business Process Engine

TaskZuweisung

ServiceAufruf

TaskZuweisung

∆ Durchlaufzeit

Bernd Rücker / [email protected] / 6

Zuweisung Aufruf Zuweisung

IT

Process Engine

Human Workflow Human WorkflowEAI

SOA

Page 7: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Business Process EngineMiddleware für Geschäftsprozesse

Prozess-Ausführung

Aufgaben-Verwaltung

Sachbearbeiter

Fremd-Anwendungen

Business Analyst

Bernd Rücker / [email protected] / 7

Business Process Engine (BPM-Engine)

Persistenz

Prozess-definitionen Administration

Prozess-Logs

Administrator

Entwickler

Page 8: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Versionierung, Persistenz & Interpretation von

Prozessmodellen

• Steuerung & Persistenz von Prozessinstanzen

• Task-Management & Wait-States

• Prozesskontext (Variablen zu Prozess speichern)

Was leistet die Business Process EngineFeatures

Bernd Rücker / [email protected] / 8

• Prozesskontext (Variablen zu Prozess speichern)

• Einbindung externer Services

• Verwalten von Ereignissen (wie Timeouts, …)

Page 9: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Process Engine ist eigene Architekturschicht

• Domänenobjekte oder Referenzen als

Prozessvariablen

• Ansteuerung ext.

Services

Business Process Engine in JavaArchitektur

Bernd Rücker / [email protected] / 9

ServicesEJB-Container

BPM-Engine

Session

Bean

JCA JMS …EJB

Page 10: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Business Process Engine

• POJO-Kern: Interne Prozessrepräsentation durch

Java-Modelle

• Persistenz über Hibernate (DB-Unabhängigkeit)

• Lauffähig mit oder ohne Application-Server

JBoss jBPMOpen Source Process Execution

Bernd Rücker / [email protected] / 10

• 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)

Page 11: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

„Graph oriented programming“jBPM in a nutshell

Node

Transition

from to

**leaving

Transitions

arriving

Transitions

Token

current

Node

1

<process-definition>

Bernd Rücker / [email protected] / 11

...

<node name=“serve client”>

<transition name=“ok” to=“order” />

<transition name=“nok” to=“joke” />

</node>

<node name=“order” />

<node name=“joke” />

...

</process-definition>

Page 12: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Task-Node: Human Tasks / Aufgaben

• State: Wait-States

• Fork / Join

• Decision: Automatische Entscheidung

• Start-State / End-State

Verschiedene Node-TypenjBPM in a nutshell

Bernd Rücker / [email protected] / 12

• Start-State / End-State

• …

• Eigene Node-Typen mit

Verhalten können

implementiert werden

Page 13: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Einfache Java-API zur Steuerung der Engine

– Prozessstart

– Aufgabenliste

– …

jBPM & JavajBPM in a nutshell

Bernd Rücker / [email protected] / 13

• Aufrufen von „User-Code“

– definierte Stellen im Prozess

– Interface & Java-Klassen

Page 14: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

jBPM & JavajBPM in a nutshell

JbpmConfiguration conf = JbpmConfiguration.getInstance();

JbpmContext context = conf. createJbpmContext();

ProcessInstance pi = context.getGraphSession().

findLatestProcessDefinition("Ticket").createProcessInstance();

pi.getRootToken().signal();

List<TaskInstance> tasks = context.getTaskMgmtSession().

findTaskInstances("Vertrieb");

tasks.get(0).end("Ticket schliessen");

Bernd Rücker / [email protected] / 14

public class MyAction implements ActionHandler {

public void execute(ExecutionContext ctx) {

Object var = ctx.getVariable("var");

result = service.doSomething(var);

ctx.setVariable("result", result);

}

}

context.close();

Page 15: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Gemeinsame Sprache, Beispiel jBPM

Bernd Rücker / [email protected] / 15

Page 16: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Tooling: EclipsejBPM in a nutshell

Bernd Rücker / [email protected] / 16

Page 17: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Die Zukunft: Process Virtual Machine (PVM)Sprachen werden aufbauend auf der PVM entwickelt

Bernd Rücker / [email protected] / 17

Page 18: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

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-

Bernd Rücker / [email protected] / 18

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

Page 19: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Direkte Programmierung im Quellcode:

if ( person.istMuede() == true ) {

person.putzeZaehne();

person.geheInsBett();

}

Wie werden Regeln umgesetzt?Alternativen

Bernd Rücker / [email protected] / 19

}

• Spezifische Lösungen (Codegenerierung, DSL,

Speziallösungen, …)

• Regelmaschine / Rule Engine

Page 20: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Wartbarkeit und Validierbarkeit nicht gegeben

• Regeln müssen durch Entwickler in Quellcode

übersetzt werden

• Fachliche Regeln werden über verschiedene

Klassen verteilt

Probleme programmierter RegelnWie werden Regeln umgesetzt?

Bernd Rücker / [email protected] / 20

Klassen verteilt

• Keine Lesbarkeit der Regeln für den Fachbereich

• Konflikt-Lösung muss realisiert werden

Page 21: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Explizite Formulierung der Regeln als Regeln

• Deklarativ: Welche Regeln wann wie ausgeführt

werden entscheidet die Regelmaschine

• Regeln für Fachbereich verständlich

Vorteile der Rule-EngineWie werden Regeln umgesetzt?

Bernd Rücker / [email protected] / 21

Bedingung:

Person.muede = true

Konsequenz:

person.putzeZaehne();

person.geheInsBett();

Page 22: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Fakten (Wissen) = Domänenobjekte (POJOs)

• Rule Engine wird generisch in die Architektur

integriert (Interceptoren, …)

Rule Engines in JavaArchitektur

Client Anwendung / Server

Bernd Rücker / [email protected] / 22

Client Anwendung / Server

Interceptor

Fachlogik

Page 23: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• Java Rule Engine (RETE-Implementierung)

• „JBoss Drools“ / „JBoss Rules“

• Lauffähig mit oder ohne Application-Server

• „Library“

• Business Rules Management System (BRMS) in

JBoss DroolsDie Open Source Rule Engine

Bernd Rücker / [email protected] / 23

• Business Rules Management System (BRMS) in

der Entwicklung

• Aktuell Version 4.0

• Open Source (ASL)

Page 24: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Drools-RegelnBeispiel

package com.camunda.demo

import demo.business.*;

import demo.infrastructure.ErrorList;

global ErrorList errors;

rule "Auftragsrabatt bei hohem Bestellwert"

when

Bernd Rücker / [email protected] / 24

when

o: Order( value>5000 )

then

o.setDiscount(0.05);

end

rule "Nachnahme nur bis 2500 € möglich"

when

o: Order( value>2500, shippingType="COD" )

then

errors.addError("Nachname nicht möglich bei Auftragswert " + o.getValue()

);

end

Page 25: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Drools im EinsatzAPI

WorkingMemory

POJO‘s

Regeln

fireAllRules

Bernd Rücker / [email protected] / 25

RuleBaseLoader loader = RuleBaseLoader.getInstance();

RuleBase ruleBase = loader.loadFromReader(

new InputStreamReader(this.getClass().getResourceAsStream(

"/demo.drl")));

WorkingMemory wm = ruleBase.newStatefulSession();

wm.insert(meldung);

wm.fireAllRules();

Page 26: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• In-memory Knowledge-Repository

• Basiert auf Rete Algorithm

• Forward chaining

• Backward

chaining ist

Drools im EinsatzWie funktioniert es intern?

Bernd Rücker / [email protected] / 26

chaining ist

geplant

(Drools 5)

Page 27: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Für den Fachbereich: Decision Tables

Bernd Rücker / [email protected] / 27

Page 28: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

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=

Bernd Rücker / [email protected] / 28

rule "Abmeldung - Check mit DSL"

when

Versicherter unter 25 Jahre alt

and

Mehr als 3 Unfälle gebaut

then

Police nicht möglich

end

[then]Police nicht möglich=

errors.addError("Police kann nicht ausgestellt werden");

Page 29: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

DSL-Support

Bernd Rücker / [email protected] / 29

Page 30: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Regeleditor ohne DSL

Bernd Rücker / [email protected] / 30

Page 31: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Guided Rule Editor

Verfügbar in

Eclipse &

BRMS

Bernd Rücker / [email protected] / 31

Page 32: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Rule Flow

• Regel-Reihenfolge

• Parallelität

• Bedingungen ob Regeln

ausgeführt werden

Bernd Rücker / [email protected] / 32

Page 33: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Tooling: Eclipse

Bernd Rücker / [email protected] / 33

Page 34: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

BPM vs. BRM | BPM + BRM

Bernd Rücker / [email protected] / 34

Page 35: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Geschäftsprozesse mit Regeln umsetzen?

• Möglich!

• Vorteil: Maximale Flexibilität

• Nachteile

– Keine Visualisierung / Modellierung des Prozessflusses

– Nicht immer offensichtlich, warum was passiert

Bernd Rücker / [email protected] / 35

– Nicht immer offensichtlich, warum was passiert

– Keine „Grenzen“ durch Prozessstruktur

– Evtl. Performance

Page 36: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Einsatzmöglichkeiten

• BPM (Prozesse)

– Geschäftsprozesse / Workflows

– Fachliche Modellierung

– Hoher Standardisierungs-/Wiederholungsgrad

Bernd Rücker / [email protected] / 36

• BRM (Regeln)

– Prozessunabhängige Regeln

– Punktuelle Integration in Prozesse

– Beeinflussung des Prozessablaufs (80/20 Regel)

Page 37: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Wann benutze ich was?

Bernd Rücker / [email protected] / 37

Page 38: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Kombinationsmöglichkeiten

Regeln treffen EntscheidungenRegeln treffen Entscheidungen

Regeln steuern Zuweisung von

Aufgaben

Regeln steuern Zuweisung von

Aufgaben

Bernd Rücker / [email protected] / 38

Regeln schließen neues WissenRegeln schließen neues Wissen

Und: Beeinflussung des

Prozessablaufs in

Sonderfällen

Und: Beeinflussung des

Prozessablaufs in

Sonderfällen

Page 39: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Schließen von “neuem Wissen”jBPM + Drools

rule "Special Discount"

when

o : Order( customerName == "Bernd" )

then

# 5 % discount

o.applyDiscount( 0.95 );

System.out.println("Special discount granted");

end

rule "Special Discount"

when

o : Order( customerName == "Bernd" )

then

# 5 % discount

o.applyDiscount( 0.95 );

System.out.println("Special discount granted");

end

Bernd Rücker / [email protected] / 39

<action

class="org.jbpm.action.RulesActionHandler">

<ruleFile>/...OrderPricingRules.drl</ruleFile>

<objectNames>

<element>order</element>

</objectNames>

</action>

<action

class="org.jbpm.action.RulesActionHandler">

<ruleFile>/...OrderPricingRules.drl</ruleFile>

<objectNames>

<element>order</element>

</objectNames>

</action>

Page 40: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

EntscheidungenjBPM + Drools

<node name="drools decision">

<action class="org.jbpm.action.RulesActionHandler“>

<ruleFile>/com/.../OrderDecisionRules.drl</ruleFile>

<objectNames>

<element>order</element>

</objectNames>

<signalToken>false</signalToken>

</action>

<transition name="conspicuous" to="do something" />

<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" />

Bernd Rücker / [email protected] / 40

<transition name="conspicuous" to="do something" />

<transition name="casual" to="determine discount" />

</node>

<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

rule "Conspicuous Order"

when

Order( price > 500)

then

System.out.println("signal conspicuous order");

executionContext.getNode().

leave(executionContext, "conspicuous");

end

Besseres Design:

Regeln schreiben

Ergebnis in

Prozessvariable

und jBPM

„Decision“ wertet

diese aus

Page 41: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Beeinflussung des ProzessablaufsEvent getrieben reagieren / Ausnahmen

rule "Order gets cancelled"

when

evt : Event( type == "cancel" )

then

token.setNode( "end2" );

end

rule "Order gets cancelled"

when

evt : Event( type == "cancel" )

then

token.setNode( "end2" );

end

Bernd Rücker / [email protected] / 41

Token

Page 42: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Actor-AssignmentWer ist zuständig?

<assignment class="org.jbpm.assignment.RulesAssignmentHandler">

<group>underwriting</group>

<ruleFile>/Assignment.drl</ruleFile>

<objectNames><element>policy</element></objectNames>

</assignment>

<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)

rule "Determine Junior Role“

when

Policy( basePrice < 500)

Bernd Rücker / [email protected] / 42

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

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

Page 43: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

• 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

FazitGeschäftsprozesse und Regeln mit jBPM und Drools

Bernd Rücker / [email protected] / 43

Bewährt auch in großen Projekten

• Drools ist cool ☺

• Drools steht teuren Rule Engines in nichts nach

• BPM & BRM sind Themen der Zukunft!

• Ausblick: Integration in den JBoss ESB

Page 44: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

FazitGeschäftsprozesse und Regeln mit jBPM und Drools

Bernd Rücker / [email protected] / 44

Quelle:

Lary Ward &

Jordan Masanga

Page 45: 20080703 jbpm und Drools - alt.java-forum-stuttgart.dealt.java-forum-stuttgart.de/jfs/2008/folien/C3.pdf · Java-Modelle • Persistenz über Hibernate (DB-Unabhängigkeit) • Lauffähig

Fragen & Antworten

Unsere Themen

• Ganzheitliches BPM

Bernd Rücker

Geschäftsführer

Berater, Trainer & Coach

[email protected]

+49 711 3278645

Bernd Rücker / [email protected] / 45

• Ganzheitliches BPM

• Prozessautomatisierung

• SOA, BPEL, XPDL, jBPM, Drools, ESB

• BPMN

• BPM-Toolauswahl

Unsere Leistungen

• Beratung

• Seminare

• Process as a Service

(Hosting)