Business Process Simulation in Action
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
SOA Center Business Process Simulation Business Process Simulation in Action In der letzten Ausgabe des Java Magazins wurden die Grundlagen zu Business Process Simulation (BPS) gelegt und gezeigt, wie ein entsprechendes Tool auf Basis von Open-Source-Komponenten entwickelt werden kann [1]. Dieser Artikel zeigt die Konfiguration und Verwendung dieses Tools anhand eines Beispiels. von Bernd Rücker m den letzten Artikel knapp zu- Bevor ein Event zur Ausführung Das Prozess-Start-Event plant sich sammenzufassen: BPS ermög- kommt, wird die Modellzeit der Si- daraufhin selbst für einen späteren licht es, für neue oder überar- mulationsuhr zu jBPM übertragen, Zeitpunkt wieder ein. Wann genau, beitete Prozesse sowie für veränderte da die Modellzeit nicht der realen entscheidet wiederum eine Vertei- Rahmenbedingungen Vorhersagen Zeit entspricht, man aber trotzdem lungsfunktion. über Kosten bzw. Leistungsparameter korrekte Logdaten in jBPM abfragen zu treffen. Dadurch ermöglicht Simu- möchte. Kurzüberblick JBoss jBPM und lation Prozesse besser zu verstehen, Das Event, implementiert als Java-Ob- jPDL bevor sie implementiert und produktiv jekt, wird ausgeführt. Dies startet eine Die Business Process Engine jBPM ent- gesetzt werden, was vielen Risiken ent- neue Prozessinstanz in jBPM und der hält innerlich keine Magie, letztendlich gegenwirkt. Das in [2] entwickelte Open Prozessgraf wird bis zum ersten War- bildet sie einen einfachen Zustands- Source Tool realisiert BPS, indem das tezustand durchlaufen. grafen ab. Dabei gibt es, wie in Abbil- bestehende Discrete Event Simulation Beim Erreichen des Wartezustands dung 2 gezeigt, Nodes und Transitions, Framework DESMO-J [3], [4] mit der wird ein Event erstellt und DESMO-J wobei Letztere zwei Nodes miteinander Business Process Engine JBoss jBPM übergeben. Dieses Event sorgt spä- verbinden. Dieses Grundprinzip er- [5] verheiratet wird. Vereinfacht gesagt, ter für die Beendigung des Warte- möglicht es, Prozesse als freie Grafen zu funktioniert dies, indem das Simulati- zustands. In diesem Fall wartet man beschreiben, ist dafür aber auch bereits ons-Framework die Prozessmaschine auf das Eintreffen des Pakets, also ein ausreichend. Es gibt unterschiedliche steuert, welche ihrerseits Events erstel- externes Event. Es könnte auch eine Arten von Nodes, ich möchte an dieser len und der Simulation übergeben kann. Aufgabe für einen Sachbearbeiter im Stelle nur Wartezustände („state“) und Zur Verdeutlichung ist in Abbil- Prozessablauf vorkommen, dann ent- Aufgaben („task-node“) gesondert er- dung 1 ein beispielhafter Ablauf ge- spräche das erstellte Event der erfolg- wähnen. In beiden muss die Ausführung zeigt. Er illustriert das Abarbeiten eines reichen Bearbeitung der Aufgabe. des Prozessgrafen unterbrochen wer- Prozess-Start-Events durch die zentrale Die Zeit, zu der das Ereignis eintreten den, im ersten Fall, weil auf ein externes Steuereinheit in DESMO-J: soll, wird durch konfigurierte stati- Ereignis gewartet wird und im zweiten stische Verteilungsfunktionen ermit- Fall, weil erst ein Bearbeiter seine Auf- telt, da Paketlaufzeiten oder auch Be- gabe erledigen muss. In Wartezuständen Den Quellcode zu diesem Artikel arbeitungszeiten immer ein Stück weit wird der Prozesszustand normalerweise finden Sie unter www.javamagazin.de zufällig sind. persistiert. Es sei aber angemerkt, dass 94 javamagazin 6|2008 www.JAXenter.de
Business Process Simulation SOA Center Persistenz in der Simulation nicht von- ist es ein Kompromiss zwischen Kosten nöten ist, da die Simulation normaler- und Durchlaufzeit. weise am Stück ausgeführt wird, ohne Statistische Zahlen zu Bearbei- den Rechner zwischendurch abzuschal- tungs- oder Wartezeiten stehen entwe- ten. Dies wirkt sich dann positiv auf die der als historische Logdaten in jBPM Performance aus. zur Verfügung oder müssen manuell Die Prozessausführung wird durch erstellt werden. In Abbildung 3 sind ein Token-Objekt gesteuert, das durch die durchschnittliche Bearbeitungszeit den Prozessgrafen „wandert“, es ent- sowie die Standardabweichung bereits spricht also einer Prozessinstanz. Sind eingetragen. mehrere ausgehende Transitions an Die Erstellung und Konfiguration einem Node vorhanden, müssen jBPM- eines Simulationsprojekts erfolgt für die Informationen vorliegen, die eine Ent- oben genannte Fragestellung etwa in fol- Abb. 1: Ablauf der Simulation scheidung ermöglichen, ansonsten wird genden Schritten: die Standard-Transition verwendet. Erstellung des Prozesses in jBPM, falls Beispielprozess und noch nicht vorhanden Simulationsziel Erstellung einer Simulationskonfigu- In der letzten Ausgabe wurde bereits ration als XML, welche die ermittelten ein Prozessbeispiel eingeführt, das als statistischen Verteilungen berücksich- Tutorial zum entwickelten Simulati- tigt ons-Tool online verfügbar ist [6]. Der Definition von Szenarien mit un- Prozess ist in Abbildung 3 grafisch dar- terschiedlichen Resource Pools und gestellt und schnell erklärt: Es handelt eventuellen anderen Unterschieden Abb. 2: Interner Aufbau von jBPM sich um die vereinfachte Abwicklung von Retouren bei einem Webshop. Der Shop prüft zurückkommende Ware in einem Schnelltest auf Funktionstüch- Listing 1: jPDL-Quellcode des Beispielprozesses tigkeit. Wird kein Fehler festgestellt, so wird die Ware von einem Techniker eingehend unter die Lupe genommen. Kann der Fehler nachvollzogen wer- den, bekommt der Kunde sein Geld zurück. Funktioniert die Ware auch nach der zweiten Prüfung problemlos, wird die Retour abgelehnt und die Wa- re zurückgesendet. Der Quellcode des Prozesses liegt als XML-Datei in der Sprache jPDL (jBPM Process Defini- tion Language) vor und ist in Listing 1 abgebildet. Erste Fragestellung an die Simu- lation ist die beste Personalplanung. So wird beispielsweise um die Weih- nachtszeit ein höheres Retouraufkom- einen stärkeren Personaleinsatz erfor- Simulation ist nun Folgende: Es wer- den Szenarien mit verschiedenen Per- sonaleinsatzstrategien entwickelt und durch die Simulation „getestet“, um so das beste Szenario zu evaluieren. Wel- Gewinners eingehen, ist von Projekt zu Projekt verschieden, normalerweise www.JAXenter.de javamagazin 6|2008 95
SOA Center Business Process Simulation Definition von Datenquellen und im Pool verfügbar, so muss der Prozess durch einen Bearbeiter in einer Aufgabe -filtern (in diesem Artikel wird dies auf sie warten. Dies entspricht der Rea- simulieren. nicht benötigt, siehe [6] für ein Bei- lität: Hat niemand zur Bearbeitung ei- Wie in [1] beschrieben, will man in spiel) ner Aufgabe Zeit, so muss der Prozess der Simulation oft nicht alle Serviceauf- Überprüfung aller Serviceaufrufe im warten. Für Ressourcen wird dabei rufe normal durchführen, man möchte Prozess und eventuelles Abschalten auch definiert, welche Kosten sie verur- sie manchmal ignorieren oder durch oder Mocking sachen (Costs-Per-Time-Unit) und wie einen Aufruf eines Mocks ersetzen. Das viel Prozent der Kosten in den Zeiten jBPM-Simulations-Tool ermöglicht dies Konfigurationsparameter anfallen, in denen eine Ressource nicht durch einige Konfigurationsparameter Für die Simulation werden zusätzliche ausgelastet ist (Unutilized-Time-Cost- (Listing 3). Informationen benötigt. Bereits ange- Factor). sprochen wurden Verteilungen für Be- Interessant sind vor allem noch Konfiguration der Simulation arbeitungs- und Wartezeiten. Ein wei- Datenquellen und Datenfilter, wie in Die Konfiguration der Simulation kann teres wichtiges Element sind Resource Listing 2 gezeigt. Datenquellen können grundsätzlich auf zwei Arten gesche- Pools. Diese geben die verfügbare An- neue Daten in den simulierten Prozess hen. Erstens kann man die benötigten zahl verschiedener Ressourcen an, jede pumpen und Datenfilter können Da- Parameter direkt im jPDL-Quellcode Ressource entspricht dann einem Pool. ten verändern. Wird beispielsweise der des Prozesses einbetten. Dies ermög- Wird während der Simulation eine Res- Retourenprozess gestartet, so könnte licht es, einfach und schnell bestehen- source beispielsweise zur Abarbeitung eine Datenquelle Informationen zur de Prozesse zu simulieren. Die zweite einer Aufgabe benötigt, so wird diese Retoure als Prozessvariablen bereit- Möglichkeit ist die Verwendung einer Ressource für die benötigte Zeit aus stellen. Ein Datenfilter könnte dagegen eigenen XML-Konfigurationsdatei. dem Pool entfernt. Ist keine Ressource das Verändern der Fehlerbeschreibung Dies hat den Vorteil, dass der Prozess Listing 2: Konfiguration von Datenquellen und Filtern ... ... Listing 3: Konfiguration von Serviceaufrufen im Prozess ... ... ... ... ... ... 96 javamagazin 6|2008 www.JAXenter.de
Business Process Simulation SOA Center selbst nicht verändert werden muss und dass in einer Simulation verschie- dene Prozesse angesprochen werden können. Auch ermöglicht es die eigene Konfiguration, unterschiedliche Szena- rien für den gleichen Prozess zu definie- ren. Dies wird im Beispiel für die unter- schiedlichen Personaleinsatzstrategien benötigt. Daher ist meist die Lösung mit einer eigenen Konfiguration vorzu- ziehen. Es ist jedoch auch eine Misch- form zulässig, wobei die Einstellungen im Prozess bei Bedarf überschrieben werden. Die Konfiguration für unseren Simulations-Use-Case ist in Listing 4 zu sehen. Es wurde ein Experiment mit drei Szenarien definiert: christmas christmas_normal_case christmas_worst_case Abb. 3: Der Beispielprozess inklusive statistischer Kennzahlen Ein Experiment kann beliebig viele Szenarien enthalten und definiert eini- Generierung der Simulationskonfiguration aus Logdaten ge globale Parameter (wie die Laufzeit über das Attribut run-time). Die Simu- Die Daten konnten in dem entwickelten Tool recht einfach aus den Logdateien lation aller Szenarien des Experiments gelesen werden, hierfür steht ein jBPM-Befehl als Command-Objekt zur Verfü- wird dabei immer als eine Einheit gung (das Command Pattern in jBPM abstrahiert Logik von der Umgebung, in der sie aufgerufen wird [7]. In diesem Fall wird die Umgebung als jbpmContext- ausgeführt. Bei den Szenarien ist zu Objekt erzeugt und übergeben): sehen, dass sie nicht zwangsläufig aus- geführt werden müssen (execute=false) BamSimulationProposal proposal = (BamSimulationProposal) und von Basisszenarien erben können new GetSimulationInputCommand(processName).execute(jbpmContext); (base-scenario=christmas). Dies ermög- proposal.createScenarioConfigurationXml(); licht eine einfache Vererbung ähnlich abstrakter Klassen in Java, ist jedoch Dieses Command erstellt einen Vorschlag für eine Simulationskonfiguration, die momentan auf eine Hierarchieebene bei statischen Eingangsdaten Werte aus der Historie erschließt. Dabei muss man in der aktuellen Version noch aufpassen, da lediglich Standardverteilungen ver- beschränkt. wendet werden, was nicht in jedem Fall die beste Lösung darstellt. Daher kann es Verteilungen und Resource Pools nicht schaden, mit einem Statistikprogramm wie GSTAT2 [8] zu arbeiten, um aus müssen einerseits definiert werden, historischen Daten Verteilungsfunktionen zu ermitteln.. wie in Listing 4 zu sehen ist (Element Das neue Portal für Java , Eclipse, Enterprise Architekturen, SOA. TM www.JAXenter.de www.jaxenter.de javamagazin 6 2008 97 |
SOA Center Business Process Simulation distribution), andererseits muss die geordnet und auch ein Resource Pool verhalten (also beispielsweise die Stan- Verwendung dieser Elemente konfigu- gleichen Namens konfiguriert, so wird dard-Transition verwenden). riert werden. Dies wird erreicht, indem dieser Pool automatisch verwendet. Im man die benannten Verteilungen dem Beispiel unterscheiden sich die zwei Ausführung der Simulation Prozess selbst (für die Zeitabstände ausgeführten Szenarien übrigens nur Hat man die Konfiguration erstellt, muss zwischen Prozessstarts), Wartezustän- durch die Konfiguration der Resource die Simulation ausgeführt werden. Bei den oder Aufgaben zuweist (z.B. 98 javamagazin 6|2008 www.JAXenter.de
SOA Center Business Process Simulation sind. Momentan muss die Ausführung der Simulation über ein Stückchen Java- Code gestartet werden: new JbpmSimulationExperimentRunner().run( “/org/jbpm/sim/tutorial/business/ simulationExperiment.xml“); Eine Möglichkeit, die Experimentkon- figuration direkt per Eclipse-Run as zu starten, ist allerdings im Rahmen des jBPM-Plug-ins geplant. Abbildung 4 und 5 zeigen beispielhaft Diagramme aus dem grafischen Report. Abb. 4: Wartezeit vor Quick Test als Simulationsergebnis Erstere zeigt die Verteilung der Warte- zeit auf freiwerdende Ressourcen (in diesem Fall der „Tester“ vor der Aufgabe Quick Test). Die zweite Abbildung zeigt dagegen die Auslastung der Resource- „Tester“ für die verschiedenen Szenari- en. Aus Platzgründen ist für das gesamte Simulationsergebnis auf [2] oder [6] ver- wiesen, am besten lädt man sich das Tu- torial herunter und spielt selbst ein biss- chen damit. Es enthält auch noch einen Abb. 5: Auslastung des Testers als Simulationsergebnis weiteren Simulations-Use-Case, in dem Prozessalternativen evaluiert werden. deutig darauf, einen ersten stabilen Kern werden später folgen, dann sollten auch Zusammenfassung zu entwickeln, der die mathematische mehr Erfahrungen mit dem Einsatz des Das gezeigte Tool ist im Rahmen einer Theorie hinter BPS korrekt abbildet. Tools vorliegen. Feedback, Kritik oder Master Thesis entstanden und nun Teil Dieses Ziel konnte erreicht werden. Erfahrungsberichte sind dabei übrigens von jBPM. Es erfüllt die grundlegenden Erweiterungen und Verbesserungen sehr willkommen! Anforderungen an ein Business Process Simulation Tool und zeigt, dass BPS auch Bernd Rücker ist Berater, Coach und Geschäftsführer bei der camunda mit einfachen Mitteln und ohne teure GmbH. Sein besonderes Interesse liegt dabei im Bereich BPM und SOA sowie deren praktische Umsetzung, gerne auch mit Open Source. Er hat Tools umgesetzt werden kann. Trotzdem berufsbegleitend sein Studium als Master of Science in Software Techno- sind BPS-Projekte leider noch kein Kin- logy erfolgreich abgeschlossen, in diesem Rahmen ist die angesprochene derspiel. Prozessoptimierung wird noch Master Thesis entstanden. Kontakt: bernd.ruecker@camunda.com nicht unterstützt. Prototypisch wurde es mit einem simplen Algorithmus aber bereits umgesetzt. Wünschenswert wäre Links & Literatur hier eine bessere Unterstützung durch [1] Bernd Rücker: Business Process Simulation selbst gemacht, in: das Tool und die Verwendung von leis- Java Magazin 05.2008, S. 20–25 tungsfähigen Algorithmen, beispiels- [2] Master Thesis Bernd Rücker: www.camunda.com/content/publikationen/ bernd-ruecker-business-process-simulation-with-jbpm.pdf weise könnten genetische Algorithmen [3] DESMO-J: www.desmoj.de zum Einsatz kommen. Für dieses Thema [4] Bernd Page and Wolfgang Kreutzer: The Java Simulation Handbook. Simulating soll eventuell eine zweite Masterarbeit Discrete Event Systems with UML and Java, Shaker Verlag, 2005 ausgeschrieben werden. [5] JBoss jBPM: labs.jboss.com/jbossjbpm/ Offiziell wird das Tool mit der nächs- [6] jBPM Simulation Tutorial: ten jBPM-Version (3.2.3) released. Mo- www.camunda.com/jbpm_simulation/jbpm_simulation_tutorial.html mentan werden noch nicht alle Features [7] JbpmCommands: wiki.jboss.org/wiki/Wiki.jsp?page=JbpmCommands von jBPM unterstützt, es fehlen bei- [8] GSTAT2: www.statoek.wiso.uni-goettingen.de/user/fred/gstat2.htm spielsweise Subprozesse, Super-States [9] JasperReports: www.jasperforge.org/jaspersoft/opensource/business_intelligence/ und Timer. Auch gibt es noch kein GUI. jasperreports/ Der Fokus lag in der ersten Version ein- 100 javamagazin 6|2008 www.JAXenter.de
Sie können auch lesen