+ All Categories
Home > Technology > JBoss jBPM

JBoss jBPM

Date post: 05-Dec-2014
Category:
Upload: camunda-services-gmbh
View: 7,627 times
Download: 5 times
Share this document with a friend
Description:
Vortrag auf W-Jax 2008
45
JBoss jBPM Die Open Source Business Process Engine JavaConferenceMünchen 12.09.2008 [email protected]
Transcript
Page 1: JBoss jBPM

JBoss jBPM

Die Open Source

Business Process Engine

JavaConferenceMünchen

12.09.2008

[email protected]

Page 2: JBoss jBPM

• 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

Bernd RückerWer bin ich?

Page 3: JBoss jBPM

• Einführung BPM (Business Process Management)

• JBoss jBPM jPDL

• Prozessbeispiel

• Simulation & Erweiterung

• Process Virtual Machine (PVM) & jBPM 4

AgendaJBoss jBPM

Page 4: JBoss jBPM

Geschäftsprozesse & SoftwareDer Status Quo in manchen Unternehmen

Software

GUI

EAI-ToolWeb-Service

Kunden

KomponenteSAP

Server

Gui 1 Gui 2 Gui 3

Paper Email

Page 5: JBoss jBPM

Ein „digitaler“ Prozessmit Business Process Engine

Task

Zuweisung

Service

Aufruf

Task

Zuweisung

IT

Δ Durchlaufzeit

Process Engine

Human Workflow Human WorkflowEAI

SOA

Page 6: JBoss jBPM

Process ExecutionBusiness Process Engine

Task

Zuweisung

Service

Aufruf

Task

Zuweisung

Tasklist Externes

System

Transaction / Request

process execution

Zeit

Process Execution Engine

Client

1.) Aufgabe erzeugen

2.) Aufgabe abschließen

1.) System aufrufen / Message

2.) Asynchrone Antwort als Message

Page 7: JBoss jBPM

Integration: BPM & SOAQ

uelle

: Nic

ola

i Josuttis

Page 8: JBoss jBPM

Business Process Engine (BPM-Engine)

Definition Laufzeit

Business Process EngineMiddleware für Geschäftsprozesse

Persistenz

Prozess-

Ausführung

Prozess-

definitionen

AdministrationProzess-

Logs

Aufgaben-

Verwaltung

Sachbearbeiter

Fremd-

Anwendungen

Business Analyst

Administrator

Entwickler

Simulation

Page 9: JBoss jBPM

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

• …

Was leistet die Business Process EngineFeatures

Page 10: JBoss jBPM

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

JBoss jBPMOpen Source Process Execution

Page 11: JBoss jBPM

„Graph oriented programming“Der Prozess als gerichteter Graph

Node

Transition

from to

**leaving

Transitions

arriving

Transitions

Token

current

Node

1

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

Page 12: JBoss jBPM

Beispielprozess mit jPDLEinfacher Ticketprozess

Page 13: JBoss jBPM

jBPM-VokabularjPDL

Task-Node

Transition

Actions

State

Node

Page 14: JBoss jBPM

• 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

Verschiedene Node-TypenjBPM in a nutshell

Page 15: JBoss jBPM

• Einfache Java-API zur Steuerung der Engine

– Prozessstart

– Aufgabenliste

– …

• Aufrufen von „User-Code“

– definierte Stellen im Prozess

– Interface & Java-Klassen

jBPM & JavajBPM in a nutshell

Page 16: JBoss jBPM

public class MyAction implements ActionHandler {

public void execute(ExecutionContext ctx) {

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

result = service.doSomething(var);

ctx.setVariable("result", result);

}

}

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

context.close();

Page 17: JBoss jBPM

Nodes & StatesjPDL

<node name="Kunde anlegen">

<event type="node-enter">

<action name="Kunde anlegen" class="...CreateCustomerAction"/>

</event>

<transition to="Bearbeiter bekannt?" />

</node>

<state name="Ticket geschlossen">

<transition name="wieder öffnen" to="Ticket bearbeiten">

<action class="de.ejbbuch.jbpm.actions.ReopenTicketAction" />

</transition>

<transition name="schliessen ok" to="Mail versenden" />

</state>

Page 18: JBoss jBPM

jPDL – DecisionsjPDL

<decision name="Kunde bekannt?">

<handler class="de.ejbbuch.jbpm.decision.CustomerExistDecision"/>

<transition name="false" to="Kunde anlegen" />

<transition name="true" to="Bearbeiter bekannt?">

<action class="de.ejbbuch.jbpm.actions.LoadCustomerAction" />

</transition>

</decision>

<decision name="Bearbeiter bekannt?" expression="#{clerk!=null}">

<transition name="false" to="Bearbeiter zuweisen"></transition>

<transition name="true" to="Ticket anlegen"></transition>

</decision>

JSF-Expression

Java

Page 19: JBoss jBPM

jBPM-DescisionAutomatische Entscheidungen als Java-Code

public class CustomerExistDecision implements DecisionHandler {

public String decide(ExecutionContext ctx) throws Exception {

// get variable "customerId" out of process context

String customerId = (String)ctx.getVariable("customerId");

...

if (...)

return "true";

else

return "false";

}

}

Page 20: JBoss jBPM

• jBPM kann in eigene Java-Architektur integriert

werden

• Process Engine ist eigene Architekturschicht

• Domänenobjekte oder Referenzen als

Prozessvariablen

• Ansteuerung ext.

Services im Prozess

jBPM in der ArchitekturEinbettung in eigene Anwendung

EJB-Container (oder Tomcat oder Java SE)

Session

Bean

JCA JMSEJB

WS

jBPM (jPDL)Human

Task

Mgmnt

Page 21: JBoss jBPM

Command-PatternRemote-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;

}

...

}

Page 22: JBoss jBPM

Beispiel: EJB3 + Swing

EJB-Container

BPM-Engine

Command

Service

SLSB

JCA JMS …EJB

Webcontainer

Command

Service

MDB

Web-GUI

Swing-GUI

Commands

Fremd-

systeme

Message

Mit

Commands

Korrelation

Page 23: JBoss jBPM

EJB-Container (oder Tomcat oder Java SE)

Session

Bean

JCA JMSEJB

WS

WS

EJB-Container

JMS, …EJB

.NET Human

Task

Mgmnt

WS WS WS

WS

Vergleich zu BPELJava beheimatet JBoss jBPM

Java

jBPM (jPDL)

BPEL-Server

Human

Task

Mgmnt

Page 24: JBoss jBPM

Business-IT-Alignment mit jBPM?

Page 25: JBoss jBPM

• Java API

• Ant

• Eclipse-Designer

• Web-Console

• AdminClient

• MBean

• …

• Prozessversionierung

• Action-Klassen können mit deployed und versioniert werden

Prozess DeploymentDen Prozess zum Leben erwecken

XML

DB

jBPM APIdeploy

.classNeue

Version

Page 26: JBoss jBPM

Tomcat

JBoss jBPM (Webanwendung)

jBPM Web-Console (JSF)

DemoanwendungArchitektur

Geschäftsprozess

Browser

Ticket

System

CRMSystem

Zur Vereinfachung in

der Übung: Pure Java!

Action Action

Page 27: JBoss jBPM

CRM- & TicketsystemEinfachste Java EE Implementierung & Prozessintegration

<<Service>>

CrmService

+ findCustomer:Customer+ existCustomer:boolean+ createCustomer:Customer

<<Entity>>Customer

+ id:int+ givenname:String+ surname:String+ email:String

<<Service>>

TicketService

+ createTicket:Ticket+ getTicket:Ticket

<<Entity>>Ticket

+ id:int+ description:String+ content:String+ open:boolean

ProzesskontextcustomerId: 0815ticketId: 007

ProzesskontextcustomerId: 0815ticketId: 007

Page 28: JBoss jBPM

DEMO

Page 29: JBoss jBPM

Vision GeschäftsprozesssimulationBusiness Process Simulation (BPS)

process model &

additional info

BAM

alternative

process

structures

(stochastic)

simulation

benchmarks,

KPI, …

Same model as

for process

execution

Life data

from

history

Analysis

Design

ImplementationExecution

Control

Iterative Improvement

Page 30: JBoss jBPM

BeispielWarenrücknahme-Prozess

process runs: 195

100 95

30

165

145 20

175 20

195

Accounta

nt

180 (30)

Clerk

180 (60)

Accounta

nt

180 (30)

Tester

732,25 (448)

dispatcher

325.50 (182)

Swimlane

Avg, duration (standard

derivation)

Fragestellungen:

• Wie viele Mitarbeiter benötige

ich für eine bestimmte

Arbeitslast?

• Wo liegt der optimale Punkt

zwischen zu vielen und zu

wenigen Leuten?

Page 31: JBoss jBPM

Simulation inputBusiness Process Simulation (BPS)

distribution of waiting time

distribution of start events (amount and time)

distribution of duration/processing time for task

distribution of duration/processing time for task

resource pools

Page 32: JBoss jBPM

• Entwicklelt als Master Thesis

• JBoss jBPM

• DESMO-J

– Java Simulation Framework

– Discrete Event Simulation (DES)

– Entwickelt von der Uni Hamburg

– Open Source (Apache License)

jBPM SimulationskomponenteBusiness Process Simulation (BPS)

Page 33: JBoss jBPM

Business

Process

Engine:

JBoss

jBPM

DES-

Framework:

DESMO-J

Combination of BPM & DES

?

Page 34: JBoss jBPM

Combination of BPM & DES in action

21:33

Eventlist

21:40 start process

Distributions

Counters &

data

collectors

21:33

Page 35: JBoss jBPM

21:33

21:40 start process

21:40 start process

Combination of BPM & DES in action

21:40

Eventlist

22:07 start process

22:55 parcel arrived

Distributions

Counters &

data

collectors

21:40

Page 36: JBoss jBPM

22:55 parcel arrived

Combination of BPM & DES in action

22:55

Eventlist

Distributions

Counters &

data

collectors

22:55

22:55 parcel arrived

Page 37: JBoss jBPM

ImplementierungProzessparser & jbpm-configuration

<jbpm-configuration>

<string name="resource.action.types"

value="org/jbpm/sim/simulation.action.types.xml"/>

<string name="resource.node.types"

value="org/jbpm/sim/simulation.node.types.xml"/>

</jbpm-configuration>

Page 38: JBoss jBPM

ImplementierungÜber eigene Nodes und Actions

<node-types>

<node-type element="decision" class="org.jbpm.sim.jpdl.SimDecision" />

<node-type element="state" class="org.jbpm.sim.jpdl.SimState" />

<node-type element="start-state" class="org.jbpm.graph.node.StartState" />

<node-type element="end-state" class="org.jbpm.graph.node.EndState" />

...

<node-type element="mail-node" class="org.jbpm.graph.def.Node" />

</node-types>

<action-types>

<action-type element="action" class="org.jbpm.sim.jpdl.SimAction" />

<action-type element="simulation-action" class="org.jbpm.sim.jpdl.SimAction" />

...

<action-type element="mail" class="org.jbpm.sim.action.EmptyAction" />

</action-types>

Page 39: JBoss jBPM

• 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

Ausblick: Process Virtual MachineJBoss PVM

Page 40: JBoss jBPM

Konzepte & KernabstraktionenProzesse als Zustandsautomat

Verhalten über

Sprache definiert

Page 41: JBoss jBPM

LaufzeitverhaltenProzesse als Zustandsautomat

Page 42: JBoss jBPM

Just an APIPVM definiert keine Sprache

ProcessDefinition processDefinition = ProcessFactory.build()

.node("accept loan request").initial().behaviour(new WaitState())

.transition().to("loan evaluation")

.node("loan evaluation").behaviour(new WaitState())

.transition("approve").to("wire the money")

.transition("reject").to("end")

.node("wire the money").behaviour(new Display("automatic payment"))

.transition().to("end")

.node("end").behaviour(new WaitState())

.done();

Page 43: JBoss jBPM

• 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

ProzesssprachenDie PVM unterstützt verschiedene Sprachen

Page 44: 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 ;-)

FazitJBoss jBPM

Page 45: JBoss jBPM

Fragen & Antworten

Unsere Themen

• Ganzheitliches BPM

• Prozessautomatisierung

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

• BPMN

• BPM-Toolauswahl

Unsere Leistungen

• Beratung

• Seminare

• Process Hosting

Bernd Rücker

Geschäftsführer

Berater, Trainer & Coach

[email protected]

+49 711 3278645

+49 171 1473461


Recommended