4. Geschäftsprozesse & Software
Der Status Quo in manchen Unternehmen
GUI
Paper Email
Gui 1 Gui 2 Gui 3
Software
Kunden SAP
Komponente Server
EAI-Tool
Web-Service
5. Ein „digitaler“ Prozess
mit Business Process Engine
Δ Durchlaufzeit
Task Service Task
Zuweisung Aufruf Zuweisung
Process Engine
IT
Human Workflow EAI Human Workflow
SOA
6. Process Execution
Business Process Engine
1.) Aufgabe erzeugen 1.) System aufrufen / Message
2.) Aufgabe abschließen 2.) Asynchrone Antwort als Message
Client Tasklist Externes
System
Process Execution Engine
Transaction / Request
… Zeit
process execution
Task Service Task
Zuweisung Aufruf Zuweisung
8. Business Process Engine
Middleware für Geschäftsprozesse
Business Analyst Sachbearbeiter
Aufgaben-
Verwaltung
Simulation
Prozess- Prozess- Fremd-
definitionen Ausführung Anwendungen
Entwickler
Prozess-
Administration
Logs
Administrator
Persistenz
Definition Laufzeit
Business Process Engine (BPM-Engine)
9. Was leistet die Business Process Engine
Features
• Versionierung, Persistenz & Interpretation von
Prozessmodellen
• Steuerung & Persistenz von Prozessinstanzen
• Task-Management
• Wait-States
• Prozesskontext (Variablen zu Prozess speichern)
• Einbindung externer Services
• Verwalten von Ereignissen (z.B. Timeouts)
• …
10. JBoss jBPM
Open Source Process Execution
• Business Process Engine
• „Library“
• POJO-Kern: Interne Prozessrepräsentation durch
Java-Modelle
• Persistenz über Hibernate (DB-Unabhängigkeit)
• Lauffähig mit oder ohne Application-Server
• Klein und flexibel, leicht erweiterbar
• Aktuell Version 3.2, Version 4 in der Entwicklung
• Open Source (LGPL)
11. „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>
19. jBPM-Descision
Automatische Entscheidungen als Java-Code
public class CustomerExistDecision implements DecisionHandler {
public String decide(ExecutionContext ctx) throws Exception {
// get variable quot;customerIdquot; out of process context
String customerId = (String)ctx.getVariable(quot;customerIdquot;);
...
if (...)
return quot;truequot;;
else
return quot;falsequot;;
}
}
20. jBPM in der Architektur
Einbettung in eigene Anwendung
• jBPM kann in eigene Java-Architektur integriert
werden
• Process Engine ist eigene Architekturschicht
• Domänenobjekte oder Referenzen als
Prozessvariablen
• Ansteuerung ext. EJB-Container (oder Tomcat oder Java SE)
jBPM (jPDL)
Services im Prozess Session
Human
Task
Bean Mgmnt
EJB JCA JMS
WS
21. Command-Pattern
Remote-Zugriffe und Asynchronität
public class TaskInstanceEndCommand
implements Command {
...
public Object execute(JbpmContext jbpmContext) {
TaskInstance taskInstance =
getTaskInstance(jbpmContext);
if (transitionName == null) {
taskInstance.end();
} else {
taskInstance.end(transitionName);
}
return taskInstance;
}
...
}
22. Beispiel: EJB3 + Swing
Swing-GUI EJB-Container
BPM-Engine
Commands Command Command
Service Service
SLSB MDB
Webcontainer Message
Mit
Web-GUI
Commands
EJB JCA JMS …
Korrelation
Fremd-
systeme
25. Prozess Deployment
Den Prozess zum Leben erwecken
• Java API
• Ant
• Eclipse-Designer XML
deploy
jBPM API
• Web-Console Neue
.class
• AdminClient Version
• MBean DB
• …
• Prozessversionierung
• Action-Klassen können mit deployed und
versioniert werden
26. Demoanwendung
Architektur
Browser
jBPM Web-Console (JSF)
Geschäftsprozess
Action Action
JBoss jBPM (Webanwendung)
Zur Vereinfachung in
der Übung: Pure Java!
CRM
System Ticket
System
Tomcat
29. Vision Geschäftsprozesssimulation
Business Process Simulation (BPS)
Same model as
process model & for process
additional info execution
benchmarks,
(stochastic) KPI, …
simulation
alternative
process
structures
Analysis
Control Design
BAM
Iterative Improvement
Life data
Execution Implementation
from
history
30. Beispiel
Warenrücknahme-Prozess
Fragestellungen: process runs: 195 Swimlane
• Wie viele Mitarbeiter benötige Avg, duration (standard
derivation)
ich für eine bestimmte
Arbeitslast? 100 95
• Wo Accounta optimale Punkt
liegt der
zwischen zu vielen und zu
nt
wenigen Leuten?
180 (30)
195
Clerk
180 (60)
165
Tester
30 732,25 (448)
145 20
Accounta dispatcher
nt 325.50 (182)
180 (30) 175 20
31. Simulation input
Business Process Simulation (BPS)
distribution of start events (amount and time)
distribution of waiting time
resource pools
distribution of duration/processing time for task
distribution of duration/processing time for task
32. jBPM Simulationskomponente
Business Process Simulation (BPS)
• Entwicklelt als Master Thesis
• JBoss jBPM
• DESMO-J
– Java Simulation Framework
– Discrete Event Simulation (DES)
– Entwickelt von der Uni Hamburg
– Open Source (Apache License)
33. Combination of BPM & DES
?
Business
DES- Process
Framework: Engine:
DESMO-J JBoss
jBPM
34. Combination of BPM & DES in action
21:33 21:33
Eventlist
21:40 start process
Distributions
Counters &
data
collectors
35. Combination of BPM & DES in action
21:40 21:40
21:33
Eventlist
21:40 start process
21:40 start process
22:07 start process
22:55 parcel arrived
Distributions
Counters &
data
collectors
36. Combination of BPM & DES in action
22:55 22:55
Eventlist
22:55 parcel arrived
22:55 parcel arrived
Distributions
Counters &
data
collectors
39. Ausblick: Process Virtual Machine
JBoss PVM
• Es existieren verschiedenste Prozessausführungs-
sprachen (Process Execution Language)
– BPEL, XPDL, jPDL, DSL‘s, …
• Es gibt nicht die perfekte Sprache
• Koexistenz von verschiedenen Sprachen erlauben
• Sprache nach Problem auswählen
Grundfunktionalität Prozessmaschine in PVM
42. Just an API
PVM definiert keine Sprache
ProcessDefinition processDefinition = ProcessFactory.build()
.node(quot;accept loan requestquot;).initial().behaviour(new WaitState())
.transition().to(quot;loan evaluationquot;)
.node(quot;loan evaluationquot;).behaviour(new WaitState())
.transition(quot;approvequot;).to(quot;wire the moneyquot;)
.transition(quot;rejectquot;).to(quot;endquot;)
.node(quot;wire the moneyquot;).behaviour(new Display(quot;automatic paymentquot;))
.transition().to(quot;endquot;)
.node(quot;endquot;).behaviour(new WaitState())
.done();
43. Prozesssprachen
Die PVM unterstützt verschiedene Sprachen
• Graphen / Blockstruktur
• Sprache kann durch
entsprechendes Node-Verhalten
implementiert werden
• Es wird geben
– XPDL: Nova Bonita (Ende 2008)
– jPDL: JBoss jBPM JPDL 4 (Anfang
2009)
– BPEL
• Sprachen sind in XML umgesetzt
44. Fazit
JBoss jBPM
• Im Java Umfeld ist JBoss jBPM sehr interessant
• „Leichtgewichtig“ und in verschiedensten Umgebungen
Lauffähig
• Erweiterbar und flexibel
• PVM bildet Grundlage für verschiedenste Engines
• Modelgetriebene Ansätze denkbar
• Vision und Roadmap vorhanden!
2 Antworten auf Standardfragen:
• Performance und Skalierbarkeit bei korrektem Einsatz
kein Problem
• Ja, Tooling (Designer und Webconsole) ist
verbesserungsbedürftig ;-)