business process simulation with jboss jbpm · • business process engine • pojo-kern: interne...

Post on 01-Jun-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Java User Group Stuttgart, 05.06.2008

bernd.ruecker@camunda.com

Business Process Simulationwith JBoss jBPM

• Consultant, Trainer, Coach

• Software Developer

• Committer of the JBoss jBPM-Project

– Commands

– Simulation (BPS)

Bernd RückerThat‘s me…

Bernd Rücker / bernd.ruecker@camunda.com / 2

– Simulation (BPS)

– …

• Topics: BPM, SOA, Process Execution (jBPM,

BPEL, XPDL, …), Integration with Java EE

• Expert in the Software Experts Network

Stuttgart (SENS)

Basics

• Business Process Management (BPM)

• JBoss jBPM

• Business Process Simulation (BPS)

• Typical Simulation goals

Agenda

Bernd Rücker / bernd.ruecker@camunda.com / 3

• Typical Simulation goals

• Discrete Event Simulation

The jBPM Simulation component

• Used Open Source components

• Combine BPM & Simulation

• Example & Demo

• Erzeugt einen definierten Output aus einem

gegebenen Input

• Geordnete Aktivitäten

• Erzeugt Wert („business value“)

• Lang laufend (bis zu Monaten oder Jahren)

Was ist ein Geschäftsprozess?Definition

Bernd Rücker / bernd.ruecker@camunda.com / 4

• 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

Prozesse und SoftwareWerden Prozesse durch Software unterstützt?

GUI

Gui 1 Gui 2 Gui 3

Paper Email

Bernd Rücker / bernd.ruecker@camunda.com / 5

Software

EAI-ToolWeb-Service

KundenKomponente

SAPServer

SoftwareintegrationVerschiedene Ebenen der Integration

Prozesse

Activity 1 Activity 2 Activity 3

Anwendungen

App 1 App 2

Prozess-integration

Services

Bernd Rücker / bernd.ruecker@camunda.com / 6

Daten

DB 2DB 1

Logische Datenbank

Middleware

Funktions-integration

Daten-integration

Ein „digitaler“ ProzessDie Business Process Engine / Process Execution

TaskZuweisung

ServiceAufruf

TaskZuweisung

∆ Durchlaufzeit

Execution Engine

Bernd Rücker / bernd.ruecker@camunda.com / 7

Zuweisung Aufruf Zuweisung

IT

Human Workflow Human WorkflowSOA

IT IT

Business Process EngineKomponenten & Features

Prozess-

Aufgaben-Verwaltung

Sachbearbeiter

Fremd-

Business Analyst

Bernd Rücker / bernd.ruecker@camunda.com / 8

Business Process Engine

Persistenz

Ausführung

Prozess-definitionen Administration

Prozess-Logs

Anwendungen

Administrator

Entwickler

Das Versprechen der Anbieter: MagieDie magische Prozessmaschine?

Modeling Monitoring

Bernd Rücker / bernd.ruecker@camunda.com / 9

EAI / SOAHuman Workflow

Business

IT

Magic Process Engine

Gemeinsame SpracheWas leistet die Business Process Engine

Bernd Rücker / bernd.ruecker@camunda.com / 10

Quelle: Tom Baeyens, JBoss

• 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 / bernd.ruecker@camunda.com / 11

• Prozesskontext (Variablen zu Prozess speichern)

• Einbindung externer Services

• Verwalten von Ereignissen (wie Timeouts, …)

• Process Engine ist eigene Architekturschicht

• Domänenobjekte oder Referenzen als

Prozessvariablen

• Ansteuerung ext.

Services

Business Process Engine in JavaArchitektur

Bernd Rücker / bernd.ruecker@camunda.com / 12

ServicesEJB-Container

BPM-Engine

Session

Bean

JCA JMS …EJB

• 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 / bernd.ruecker@camunda.com / 13

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

„Graph oriented programming“jBPM in a nutshell

Node

Transition

from to

**leaving

Transitions

arriving

Transitions

Token

current

Node

1

<process-definition>

Bernd Rücker / bernd.ruecker@camunda.com / 14

...

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

• 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 / bernd.ruecker@camunda.com / 15

• Start-State / End-State

• …

• Eigene Node-Typen mit

Verhalten können

implementiert werden

• Einfache Java-API zur Steuerung der Engine

– Prozessstart

– Aufgabenliste

– …

• Aufrufen von „User-Code“

jBPM & JavajBPM in a nutshell

Bernd Rücker / bernd.ruecker@camunda.com / 16

• Aufrufen von „User-Code“

– definierte Stellen im Prozess

– Interface & Java-Klassen

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 / bernd.ruecker@camunda.com / 17

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

Gemeinsame Sprache, Beispiel jBPM

Bernd Rücker / bernd.ruecker@camunda.com / 18

Tooling: EclipsejBPM in a nutshell

Bernd Rücker / bernd.ruecker@camunda.com / 19

The BPM life-cycle

Analysis

DesignControl

Bernd Rücker / bernd.ruecker@camunda.com / 20

ImplementationExecution

Iterative Improvement

The problem with process changes

• The future is hard to predict

• Unintuitive results, especially if different processes

are involved

• Changes in processes are

– Expensive

Bernd Rücker / bernd.ruecker@camunda.com / 21

– Expensive

– Explosive, e.g. for “team spirit” in companies

• Lots of risks

Simulation

Simulation is the process of describing

a real system and using this model for

experimentation, with the goal of

understanding the system’s behavior

Bernd Rücker / bernd.ruecker@camunda.com / 22

understanding the system’s behavior

or to explore alternative strategies for

its operation.

Shannon

Business Process Simulation (BPS)

• Model of reality = business process + additional

information

• Helps to predict outcome without putting new

processes into production

Bernd Rücker / bernd.ruecker@camunda.com / 23

Use cases:

• Process changes

• New processes (“Business Process

Reengineering”)

• Changed environment

BPS vision

process model & additional info

alternative process

(stochastic)simulation

benchmarks,KPI, …

Same model as for process execution

Bernd Rücker / bernd.ruecker@camunda.com / 24

BAM

process structures

Life data from

history

Analysis

Design

ImplementationExecution

Control

Iterative Improvement

Typical Simulation Goals

• Identify cycle times for new or changed processes

• Identify process costs

• Benchmark alternative process structures

• Forecast effects of changing amount of input events

(for example the double amount of orders)

Bernd Rücker / bernd.ruecker@camunda.com / 25

(for example the double amount of orders)

• Support capacity or staff planning

• Benchmark different parameter configurations

Example: Returned Goods

process runs: 195

100 95

195

Accountant180 (30)

SwimlaneAvg, duration (standard

derivation)

Bernd Rücker / bernd.ruecker@camunda.com / 26

30

165

145 20

175 20

Clerk180 (60)

Accountant180 (30)

Tester732,25 (448)

dispatcher325.50 (182)

Example

process runs: 195

100 95

195

Accountant

180 (30)

SwimlaneAvg, duration (standard

derivation)

Questions:• How many people do I need for

a special amount of work?

• What is the best tradeoff

between too much and too less

people?

Bernd Rücker / bernd.ruecker@camunda.com / 27

30

165

145 20

175 20

Clerk180 (60)

Accountant

180 (30)

Tester732,25 (448)

dispatcher325.50 (182)

Example

process runs: 195

100 95

195

Accountant180 (30)

SwimlaneAvg, duration (standard

derivation)

Questions:• Is it maybe cheaper to skip the

extended tests and so also

refund some not defect goods

• Is it maybe cheaper to skip all

tests?

Bernd Rücker / bernd.ruecker@camunda.com / 28

30

165

145 20

175 20

Clerk180 (60)

Accountant

180 (30)

Tester732,25 (448)

dispatcher325.50 (182)

Simulation input

distribution of waiting time

distribution of start events (amount and time)

resource pools

Bernd Rücker / bernd.ruecker@camunda.com / 29

distribution of waiting time

distribution of duration/processing time for task

distribution of duration/processing time for task

resource pools

Simulation

discrete simulation

Discrete Event

Bernd Rücker / bernd.ruecker@camunda.com / 30

continuous

simulation

Simulation (DES)

Discrete Event Simulation

• State changes happen at discrete events in time

• Nothing happens between 2 neighboring points in

time

• Finite sequence of model states

• Model time is independent of real time

Bernd Rücker / bernd.ruecker@camunda.com / 31

Event a

Event b

Event c

Event x

Event y

Event oriented modeling style

1

1

32

2

Bernd Rücker / bernd.ruecker@camunda.com / 32

3

Components of DES

• Model state

• Simulation clock

• Event list

• Central controller

Bernd Rücker / bernd.ruecker@camunda.com / 33

• Random number generator / Distributions

• Statistical counters / data collectors

Statistics

• Theoretical Distributions

Bernd Rücker / bernd.ruecker@camunda.com / 34

• Warm up period

The BPS tool – used components

• JBoss jBPM

– Business Process Engine

– Open Source (LGPL)

– Backed by RedHat / JBoss

• DESMO-J

Bernd Rücker / bernd.ruecker@camunda.com / 35

• DESMO-J

– Java Simulation Framework (DES)

– Developed & maintained by the University of Hamburg

– Open Source (Apache License)

• JasperReports as reporting generator

Business Process Engine:

DES-Framework:

Combination of BPM & DES

Bernd Rücker / bernd.ruecker@camunda.com / 36

Engine:

JBoss jBPM

Framework:

DESMO-J

Combination of BPM & DES in action

21:33

Eventlist

21:40 start process

21:33

Bernd Rücker / bernd.ruecker@camunda.com / 37

Distributions

Counters &

data

collectors

21:33

21:40 start process21:40 start process

Combination of BPM & DES in action

21:40

Eventlist

22:07 start process

22:55 parcel arrived

21:40

Bernd Rücker / bernd.ruecker@camunda.com / 38

22:55 parcel arrived

Distributions

Counters &

data

collectors

22:55 parcel arrived

Combination of BPM & DES in action

22:55

Eventlist

22:55

22:55 parcel arrived

Bernd Rücker / bernd.ruecker@camunda.com / 39

Distributions

Counters &

data

collectors

Combination of BPM & DES in action

23:41

Eventlist

23:41

Bernd Rücker / bernd.ruecker@camunda.com / 40

Distributions

Counters &

data

collectors

What was needed for combination?

• Special Events in DESMO-J

• Clock-Synchronization

• Event-Generation at special points in the process

execution

Bernd Rücker / bernd.ruecker@camunda.com / 41

Additionally:

• Resource pools

• Queues

• Automatic decision taking

• Influence on service calls

Architecture

jBPM (used for

simulation)

Production

jBPM

jBPM Designer

Configuration BAM

support planned

Bernd Rücker / bernd.ruecker@camunda.com / 42

jBPM Simulation

jBPM

DB

DESMO-JReporting

JasperReports

Data source

Event Generator & QueueIn memory objects

Simulation configuration example

<experiment name='ReturnDefectiveGoods' time-unit='second'

run-time='28800' real-start-time='30.03.1980 00:00:00:000'

currency='EUR' unutilized-time-cost-factor='0.0'>

<!-- 28800 seconds = 8 hours = 1 working day -->

<scenario name="status_quo">

<distribution name="start" sample-type="real"

type="erlang" mean="95"/>

<distribution name="parcel" sample-type="real"

type="normal" mean="28" standardDeviation="17"/>

...

<resource-pool name="tester" pool-size="5" costs-per-time-unit="0.025"/>

...

<experiment name='ReturnDefectiveGoods' time-unit='second'

run-time='28800' real-start-time='30.03.1980 00:00:00:000'

currency='EUR' unutilized-time-cost-factor='0.0'>

<!-- 28800 seconds = 8 hours = 1 working day -->

<scenario name="status_quo">

<distribution name="start" sample-type="real"

type="erlang" mean="95"/>

<distribution name="parcel" sample-type="real"

type="normal" mean="28" standardDeviation="17"/>

...

<resource-pool name="tester" pool-size="5" costs-per-time-unit="0.025"/>

...

Bernd Rücker / bernd.ruecker@camunda.com / 43

...

<sim-process path="/.../ReturnDefectiveGoods/processdefinition.xml">

<process-overwrite start-distribution="start"/>

<state-overwrite state-name="wait for parcel" time-distribution="parcel">

<transition name="parcel arrived" probability="195"/>

</state-overwrite>

<decision-overwrite decision-name="ordered within the last two weeks?">

<transition name="YES" probability="100"/>

<transition name="NO" probability="95"/>

</decision-overwrite>

...

</sim-process>

</scenario>

...

<sim-process path="/.../ReturnDefectiveGoods/processdefinition.xml">

<process-overwrite start-distribution="start"/>

<state-overwrite state-name="wait for parcel" time-distribution="parcel">

<transition name="parcel arrived" probability="195"/>

</state-overwrite>

<decision-overwrite decision-name="ordered within the last two weeks?">

<transition name="YES" probability="100"/>

<transition name="NO" probability="95"/>

</decision-overwrite>

...

</sim-process>

</scenario>

Simulation configuration example 2

<process-definition name='FirstSteps' start-distribution='z'>

<resource-pool name='big machine' pool-size='3' />

...

<swimlane name='tester' pool-size='2' />

...

<task-node name='task one'>

<task swimlane='tester' time-distribution='time required for task one' />

<transition to='task two' />

<process-definition name='FirstSteps' start-distribution='z'>

<resource-pool name='big machine' pool-size='3' />

...

<swimlane name='tester' pool-size='2' />

...

<task-node name='task one'>

<task swimlane='tester' time-distribution='time required for task one' />

<transition to='task two' />

Bernd Rücker / bernd.ruecker@camunda.com / 44

<transition to='task two' />

</task-node>

...

<state name='automated state' time-distribution='xyz'>

<resource-needed pool='big machine' amount='2' />

<transition to='end' />

</state>

...

</process-definition>

<transition to='task two' />

</task-node>

...

<state name='automated state' time-distribution='xyz'>

<resource-needed pool='big machine' amount='2' />

<transition to='end' />

</state>

...

</process-definition>

Simulation Results SimulationResult

scenarioNamesimulationRunTime

ValueStatistics

namemeanstandardDerivation

QueueStatistics

namestrategyobservations

Distributions

name…

***

Bernd Rücker / bernd.ruecker@camunda.com / 45

standardDerivationmaximumminimumnumberOfObservations

observationsqueueLimitlengthminLengthmaxLengthaverageLengthzeroWaitsmaxWaitTimeaverageWaitTimerefusedstdDevLength

Waiting times for

resources / process

cycle times

Ressource Pool

statistics

Information

about input

distributions

Live Demo & Result

Bernd Rücker / bernd.ruecker@camunda.com / 46

Live-Demo

Further topics

• Analyzing simulation results

– Results are just “samples”

– Repetitions are needed

– Use statistical theory to calculate confidence

• Optimization

Bernd Rücker / bernd.ruecker@camunda.com / 47

• Optimization

– Not addresses by simulation itself

– Simulation only evaluate given scenarios

• Open Issues / Possible future work

– GUI, support all jBPM features, better reporting, process

animation, optimization

Conclusion

• Tool was developed and is working

• Source Code contributed to JBoss jBPM

• A showcase / tutorial was developed and is

available on camunda homepage

• A real-life case study was done with dataphone

Bernd Rücker / bernd.ruecker@camunda.com / 48

• A real-life case study was done with dataphone

(Vienna)

• Tool can leverage BPS to a wider range of people

Fragen & Antworten

Unsere Themen• Ganzheitliches BPM

Bernd Rücker

Geschäftsführer

Berater, Trainer & Coach

bernd.ruecker@camunda.com

+49 711 3278645

Bernd Rücker / bernd.ruecker@camunda.com / 49

• Ganzheitliches BPM

• Prozessautomatisierung

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

• BPMN

• BPM-Toolauswahl

Unsere Leistungen• Beratung

• Seminare

• Process as a Service

(Hosting)

top related