JavaFX. EJB-3.1-Architektur Ein Leichtgewicht in Design und Technologie 57. Embedded-Datenbanken Alles unter einem Dach 86. ... lernt das Twittern 44



Ähnliche Dokumente
Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Integration mit. Wie AristaFlow Sie in Ihrem Unternehmen unterstützen kann, zeigen wir Ihnen am nachfolgenden Beispiel einer Support-Anfrage.

Einleitung: Frontend Backend

INFORMATION MONITOR HSM SOFTWARE GMBH CLIENT-INSTALLATION

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Java-Tutorium WS 09/10

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

SDD System Design Document

Urlaubsregel in David

OpenCms jbpm Workflow Engine. OpenCms und jbpm Workflow Engine

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Durchführung der Datenübernahme nach Reisekosten 2011

Eine Anwendung mit InstantRails 1.7

Artikel Schnittstelle über CSV

Internet online Update (Internet Explorer)

Erstellen eines Screenshot

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

! " # $ " % & Nicki Wruck worldwidewruck

Lokale Installation von DotNetNuke 4 ohne IIS

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Windows 10 > Fragen über Fragen

Speicher in der Cloud

Informationen zum neuen Studmail häufige Fragen

Was ist neu in Sage CRM 6.1

Tipps & Tricks Neuerungen Nr. 5/ Externe Web-Shops im UniKat für Laborverbrauchsmaterial & Chemikalien

Leitfaden zur Installation von Bitbyters.WinShutdown

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Beschreibung des MAP-Tools

mysoftfolio360 Handbuch

Geld Verdienen im Internet leicht gemacht

Die Captimizer BTZ-Datei 2015

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

ICS-Addin. Benutzerhandbuch. Version: 1.0

Java Entwicklung für Embedded Devices Best & Worst Practices!

virtuos Leitfaden für die virtuelle Lehre

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

.. für Ihre Business-Lösung

Windows 8 Lizenzierung in Szenarien

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

3. GLIEDERUNG. Aufgabe:

Die Dateiablage Der Weg zur Dateiablage

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Die Lernumgebung des Projekts Informationskompetenz

Java Script für die Nutzung unseres Online-Bestellsystems

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Systemen im Wandel. Autor: Dr. Gerd Frenzen Coromell GmbH Seite 1 von 5

Grundlagen für den erfolgreichen Einstieg in das Business Process Management SHD Professional Service

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

OP-LOG

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Installation SQL- Server 2012 Single Node

Updatehinweise für die Version forma 5.5.5

Leichte-Sprache-Bilder

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Internet online Update (Mozilla Firefox)

Task: Nmap Skripte ausführen

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Datensicherung. Beschreibung der Datensicherung


Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Aber mancher braucht diese Funktionalität halt, doch wo ist sie unter Windows 8 zu finden?

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

white sheep GmbH Unternehmensberatung Schnittstellen Framework

Professionelle Seminare im Bereich MS-Office

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Hilfedatei der Oden$-Börse Stand Juni 2014

SJ OFFICE - Update 3.0

Drägerware.ZMS/FLORIX Hessen

Anleitung für die Registrierung und das Einstellen von Angeboten

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

Zwischenablage (Bilder, Texte,...)

Einrichtung -Account

Schritt 1 - Registrierung und Anmeldung

Anmeldung bei einem registrierten Konto (Account)

MWSoko Erste Schritte

Sybase Central Dokumentation Aktivierung der Monitoringfunktion

Der Kalender im ipad

Stand vr bank Südthüringen eg 1 von 10. Smart TAN plus Umstellungsanleitung VR-NetWorld Software

STRATO Mail Einrichtung Mozilla Thunderbird

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Dealer Management Systeme. Bedienungsanleitung. Freicon Software Logistik (FSL) für Updates

SICHERN DER FAVORITEN

INSTALLATION VON INSTANTRAILS 1.7

Transkript:

9.09 Plus CD! Stellenmarkt S. 64 Portlets und JavaServer Faces S. 11 Deutschland 7,50 Österreich 8,60 Schweiz sfr 15,80 Java Magazin Java Architekturen SOA Agile www.javamagazin.de ALLE INFOS ZUR FRAMEWORKS Spring Framework 3.0 M3 Google Guice GUI-TESTING-TOOLS FlexUnit FlexMonkey DATENBANKEN H2 (Hypersonic 2) CD-INHALT CD-INHALT Apache Derby Berkeley DB Java Edition HSQLDB JDBM Klaus Alfert: Fette Maschinen brauchen schlanke Software JavaFX... lernt das Twittern 44 AB SEITE 25 KEYNOTE VON DER JAX 2009 Java Core Scala-DSL für OSGi Projekt BindForge 13 Alle CD-Infos 3 Java-Memory-Modell Vorteile von Atomic Scalars 18 Enterprise Business Process Modeling Notation Vermittler zwischen den Welten 72 Prozessverwaltung mit PIS Prozesse außer Kontrolle? 92 D 45 86 7 EJB-3.1-Architektur Ein Leichtgewicht in Design und Technologie 57 Embedded-Datenbanken Alles unter einem Dach 86 JBoss ESB Was ist was beim Service Bus? 80

Prozessinformationssystem Prozesse außer Kontrolle? Mithilfe der quelloffenen Prozessverwaltung JBoss jbpm lassen sich Abläufe im Unternehmen modellieren und deren Steuerung automatisieren. In ernsthaften Projekten im größeren Unternehmenskontext ist jedoch auch die Verwaltung laufender Prozessinstanzen eine wichtige Funktionalität, die in jbpm aktuell leider kaum adressiert wird. PIS (Prozessinformationssystem) ist daher eine eigene Prozessverwaltung, mit der die jbpm-prozesse auch zur Laufzeit im Zaum gehalten werden können. von Bernd Rücker und Dr. Jörg Moldenhauer pricht man heute von einer SOA, so werden oft im gleichen Atemzug die Begriffe Enterprise Service Bus (ESB) und Business Process Management (BPM) genannt. In der Tat sind beide wichtige Komponenten zum Aufbau einer SOA in einem Unternehmen. Über den ESB können auf bestimmte Aufgaben zugeschnittene Services flexibel zur Verfügung gestellt und über BPM orchestriert werden, d. h. entsprechend der Geschäftsprozesse zusammengeschaltet und angesteuert werden. Auch innerhalb der frei verfügbaren Produktfamilie von JBoss werden diese zwei Komponenten einer SOA in Form von JBossESB [1] und jbpm [2] angeboten, eine Einführung dazu ist unter [3] zu finden. Generell kann man JBossESB und jbpm als ein Gespann betrachten, mit dem sich eine SOA im Unternehmen etablieren lässt. Aus diesem Grund hat sich auch die 1&1 Internet AG für deren Einsatz entschieden. Beim täglichen Betrieb wird man sich aber schnell bewusst, dass allein die Entwicklung von Services und deren Verschaltung über Prozesse nicht ausreichend ist, um Abläufe im Unternehmen wie Vertragsanlage, Einrichtung von Diensten oder Tarifumstellung damit realisieren zu können. Viel mehr braucht es Unterstützung für Monitoring, Betrieb und Governance. In diesem Artikel wenden wir uns daher jbpm zu, zeigen die Möglichkeiten aber auch die Grenzen auf und stellen mit PIS eine Erweiterung vor, die benötigte Features für die tägliche Arbeit nachliefert. Grundlagen zu JBoss jbpm JBoss jbpm ist eine leichtgewichtige Prozessmaschine, die zum Zeitpunkt des Verfassens dieses Artikels in der Version 3.2.6 vorliegt (Version 3.3.x ist dabei irreführenderweise älter als 3.2.6). Zum Zeitpunkt des Drucks wird bereits Version 4 veröffentlicht sein. Die neue Version ist eine deutlich verbesserte Neuimplementierung der Engine, die im Bereich der Modellierung die standardisierte Notation BPMN nutzt. Ein detaillierter Artikel zu jbpm 4 folgt in einer der folgenden Ausgaben des Java Magazins. jbpm ist rein POJO-basiert implementiert, Persistenz wird durch Hibernate umgesetzt. Das ermöglicht den Einsatz ohne Persistenz oder mit allen von Hibernate unterstützen Datenbanken, mit oder ohne Application-Server. In den meisten größeren Anwendungen jedoch, so auch bei 1&1, wird jbpm im JBoss- Application-Server betrieben und lebt in einer transaktionalen Umgebung. Die Hauptaufgabe der Engine ist die Abbildung eines Zustandsautomaten mit Wartezuständen, in denen die Engine den jeweils aktuellen Prozesszustand persistiert. Dabei gibt es, wie in Abbildung 1 gezeigt, Nodes und Transitionen, wobei letztere zwei Nodes miteinander verbinden. Dieses Grundprinzip ermöglicht es bereits, Prozesse als Grafen zu beschreiben. Es gibt unterschiedliche Arten von Nodes, die das Prozessverhalten beeinflussen können. Die Prozessausführung wird durch ein Token-Objekt gesteuert, das durch den Prozessgrafen wandert es entspricht also einer Prozessinstanz (Hinweis: In jbpm 4 wird das Token durch den Begriff Execution ersetzt). Während des Prozessdurchlaufs kann die Engine Aktionen anstoßen, z. B. das Versenden einer E-Mail oder den Aufruf eines Web Service. Manche Knotentypen fungieren dabei als Wartezustände, in denen das Token stehen bleibt, bevor der Zustand in die Datenbank geschrieben wird. Wozu eine Prozessverwaltung? jbpm eignet sich gut zur Orchestrierung von Prozessen, auch bei Verwendung des JBossESB. Allerdings bietet die Open Source Process Engine zurzeit nur ein sehr rudimentäres Tooling in Form einer Webkonsole an, um Prozess-Monitoring oder das aktive Eingreifen in den Prozessablauf durch den Betrieb zu gewährleisten. Für einen ernsthaften Betrieb im unternehmensweiten Kontext mit großen Mengen von Prozessinstanzen ist das bei Weitem nicht ausreichend. Bei 1&1 war 92 javamagazin 9 2009

Prozessinformationssystem Abb. 1: Interner Aufbau von jbpm Abb. 2: PIS-Entitäten und Session Beans dabei auch zu berücksichtigen, dass in der SOA-Landschaft verschiedene jbpm- Instanzen betrieben werden (also jbpm mehrfach installiert ist) und eine zentrale Sicht auf die Prozesse aller Engines essenziell ist. Dabei ist es perspektivisch auch möglich, dass verschiedene Process Engines zum Einsatz kommen, ein absehbares Beispiel ist der Parallelbetrieb von jbpm in der Version 3 und 4. Ebenfalls denkbar wäre, dass auch Altsysteme ohne Process Engine Zustände an die Prozessverwaltung liefern, um an zentraler Stelle alle Prozessinformationen zusammenlaufen zu lassen. Was aktuell ebenfalls in jbpm fehlt, ist der einfache Einstieg über fachliche Informationen. Beispielsweise möchte man auf einen Blick alle laufenden Prozessinstanzen eines Kunden und deren jeweiligen Zustand einsehen können. Aus diesem Grund ist die Entscheidung gefallen, PIS als eigene Anwendung zu entwickeln und im Rahmen der 1&1-SOA-Plattform einzusetzen. Implementierung der Prozess verwaltung Die Grundlage der zentralen Prozessverwaltung PIS ist eine eigens entwickelte EJB-3-Komponente, die den Zustand aller laufenden Prozessinstanzen speichert. Den Kern bilden drei Entitäten, die Informationen zum aktuellen Prozesszustand, den Prozessvariablen (beides in ProcessStatus), aufgetretenen Fehlern (ProcessException) sowie Eingriffe des Betriebs auf Prozessinstanzen (ProcessOperationsLog) speichern. Das Design wurde bewusst einfach gehalten, um unkompliziert Abfragen auf diese Entitäten zu ermöglichen. Zum Zugriff auf die Komponente werden EJB-3-Session-Beans bereitgestellt, wobei drei Services unterschieden werden: das Melden von Prozessinformationen (EventService), Abfragen von Prozessstatus (QueryService) sowie Ausführen von Operationen zur Beeinflussung des Prozessablaufs (CommandService). Das ist in Abbildung 2 dargestellt. Anzeige

Prozessinformationssystem Abb. 3: Funktionsweise von PIS in der Übersicht Damit die zentrale Prozessverwaltung alle notwendigen Informationen über Prozesszustände kennt, muss sie von den laufenden jbpm-instanzen stetig über Veränderungen benachrichtigt werden. Das ist über Events realisiert, die jede jbpm-instanz erzeugen und über den ESB an einen eigenen Service schicken. Dieser nimmt die Events als XML an, transformiert sie in das notwendige Java-Objekt und übergibt dieses an die Session Bean. Der gesamte Ablauf ist in Abbildung 3 visualisiert. Um die Lösung praxistauglich zu halten, war eine wichtige Anforderung, dass die Event-Erzeugung in jbpm generisch erfolgt. Anpassungen an den einzelnen Prozessdefinitionen werden somit vermieden, was nicht nur Arbeit erspart, sondern vor allem Fehlerquellen eliminiert. PIS erweitert zu diesem Zweck den in jbpm existierenden Logging-Service. Dieser ist dafür zuständig, Audit Logs während der Prozessausführung in der Datenbank abzulegen, z. B. wann welcher Prozessknoten durchlaufen wurde. Entsprechend können diese Informationen verwendet werden, um Events zu erzeugen und an PIS zu versenden. Leider ist dieser Mechanismus nicht ganz ausreichend. Wird z. B. eine Exception in einem Prozess ausgelöst, so wird der LoggingService nicht angesprochen, da eine Exception direkt zu einem Zurückrollen der aktuellen Transaktion führt. Aus diesem Grund muss eine weitere Erweiterung am Einstiegspunkt zu jbpm vorgenommen werden. In unserem Fall ist das der jbpm-command- Service. Auftretende Exceptions werden dadurch ebenfalls an PIS gemeldet. Das passiert übrigens in einer eigenen Transaktion, sodass PIS auch im Fehlerfall erfolgreich über den Fehler informiert wird. Ein Beispiel wird in Abbildung 4 gezeigt. In diesem Fall ist es ein Prozess mit parallelen Handlungssträngen, im jbpm-vokabular ein fork. Da die einzelnen Prozesspfade unabhängig voneinander ausgeführt werden, muss die Abb. 4: Beispielprozess Prozessverwaltung über alle gleichzeitig erreichten Wartezustände Bescheid wissen. Tabelle 1 veranschaulicht die Daten von PIS zu dem in der Abbildung illustrierten Zustand. Der Prozess hat das Fork durchlaufen, das linke Token wurde bereits signalisiert und ist im Join angekommen. Der rechte Pfad ist sowieso ohne Stopp zum Join gelaufen. Wir warten also aktuell auf den mittleren Pfad im Wartezustand in-fork-2. An die Prozessverwaltung werden übrigens nur Informationen über erreichte Wartezustände gesendet. Zwischenzustände sind nicht von Belang, da die Prozessmaschine dort nicht anhält. PIS speichert ebenfalls keine Historie, sondern immer nur den aktuellen Zustand der Prozessinstanzen. Aktives Eingreifen in Prozesse Neben den reinen Statusinformationen bietet PIS auch Möglichkeiten zum Eingreifen in den Prozessablauf. Dabei wurde vor allem auf ein massentaugliches Verfahren Wert gelegt, sodass problemlos auf große Mengen an Prozessinstanzen Einfluss genommen werden kann. Zum Zugriff auf Funktionalitäten der Process Engine unterstützt jbpm selbst bereits das Command-Pattern. Damit können Commands selbst implementiert und über den mitgebrachten CommandService ausgeführt werden. Glücklicherweise werden dabei zahlreiche Commands bereits mitgeliefert, z. B. zum Abbrechen einer Prozessinstanz (CancelProcessInstanceCommand), sodass nur spezifische Funktionalität als eigenes Command implementiert werden muss. Ein CommandService als EJB2.1-Session- Bean liefert jbpm ebenfalls bereits mit. Die Prozessverwaltung erweitert dieses Verhalten insofern, dass sie Commands zentral entgegennimmt und dann an die jeweiligen jbpm-instanzen weiter verteilt. Der Aufrufer braucht sich also nicht darum zu kümmern, auf welcher Instanz der angesprochene Prozess läuft. In diesem Zusammenhang können mehrere Aktionen in eine Transaktion verkettet werden, so genannte CommandChains. Des Weiteren gibt es die Möglichkeit, Batch Commands auszuführen, also z. B. das Verändern einer Prozessvariablen in allen laufenden Prozessinstanzen 94 javamagazin 9 2009

Prozessinformationssystem eines bestimmten Prozesses, zu einem bestimmten Kunden oder zu einem Produkt. Das Batch kann dank der zentralen Prozessverwaltung auch Prozessinstanzen unterschiedlicher jbpm-instanzen umfassen. Beim Ausführen des Batch kann spezifiziert werden, ob alle Aktionen in einer Transaktion synchron ausgeführt werden oder eine asynchrone Ausführung via JMS erfolgt. Letzteres führt nicht zum Zurückrollen der gesamten Transaktion, wenn nur ein Command fehlschlägt, und verhindert bei großen Batches Timeouts der Transaktion. Darüber hinaus können Fehler über vorhandene JMS-Tools erkannt und Commands neu ausgeführt werden. Neben der Möglichkeit, eigene Commands in Java zu implementieren, was ein Redeploy der Prozessverwaltung erfordert, wurde noch ultimative Flexibilität eingebaut: Es gibt ein Command, das Groovy-Skripte ausführt. Die Skripte können dann zur Laufzeit mitgegeben werden. Grau ist alle Theorie, weswegen wir an dieser Stelle ein Beispiel für ein Szenario zum steuernden Eingreifen in den Prozessablauf geben möchten: Eine Prozessdefinition ist für einen aufgetretenen Problemfall unzureichend. Ein übliches Szenario bei der Prozessautomatisierung ist, dass Spezialfälle nicht modelliert wurden oder vorher nicht relevant waren. Nun wird ein verbesserter Prozess deployt. Je nachdem, wie komplex die Veränderung der Prozessdefinition aussieht, könnte man eventuell die laufende Prozessinstanz auf die neue Prozessversion updaten, wofür ein eigenes Command zur Verfügung steht. Ist die Veränderung zu komplex, so ist es aber vielleicht geeigneter, die bestehende Prozessinstanz abzubrechen, eine neue Prozessinstanz zu starten und sie in einen bestimmten Wartezustand zu versetzen. Abbildung 5 visualisiert das Vorgehen. Die notwendige Funktionalität kann anhand von mehreren Commands in einer CommandChain umgesetzt werden. Den notwendigen Code für das Beispiel zeigt Listing 1. Eigentlich gibt es für diesen Anwendungsfall sogar ein eigenes ReplaceProcessInstanceCommand, jedoch ließe sich damit die CommandChain nicht klar verdeutlichen. Gibt es eine größere Menge von Prozessinstanzen mit dem gleichen Schicksal, kann diese Aktion auch als Batch auf einer beliebig großen Menge von Prozessinstanzen ausgeführt werden. Es sei darauf hingewiesen, dass wenn eine dieser Prozessinstanzen in der Zwischenzeit weiterläuft, die CommandChain für diese Instanz einen Fehler verursachen wird, da der erwartete Zustand nicht dem im Command übergebenen entspricht. Damit landet das Command in einer Fehler-Queue, in der es ein Administrator gesondert bearbeiten kann. Somit ist dieses Vorgehen auch für Systeme mit großer Last und einer Vielzahl paralleler Prozessinstanzen geeignet. tokenid processinstanceid parenttokenid Status State Timestamp 454 232 0 WAITING the fork 2009-06-15 10:15:31 455 232 454 ENDED the join 2009-06-15 10:16:55 456 232 454 RUNNING in-fork-2 2009-06-15 10:15:31 457 232 454 ENDED the join 2009-06-15 10:15:31 Tabelle 1: Daten in PIS Abb. 5: Beispiel einer CommandChain: Eine Prozessinstanz wird durch eine neue ersetzt Wie bereits angedeutet, wollen wir an dieser Stelle noch auf die Zukunftssicherheit und Erweiterbarkeit von PIS eingehen, da aktuell bereits jbpm in der Version 4 vor der Tür steht. Der Mechanismus, den aktuellen Zustand an PIS zu melden, kann natürlich auch in der neuen Version wieder eingebaut werden. Prinzipiell könnte das auch in ganz anderen Prozessmaschinen integriert werden. Auch das Eingreifen im laufenden Betrieb kann einfach auf die neue Version umgestellt werden, da jbpm 4 wieder mit Commands arbeitet. Das geschieht hier sogar noch deutlich konsequenter als bei jbpm 3. Es ist daher auch denkbar, in der Prozessverwaltung eine Übersetzung zwischen den Welten zu Listing 1: Beispiel einer CommandChain PisCommandChainBuilder builser = PisCommandChainBuilder.create(jbpmInstanceId) PisCommand cmd = builder.expectedstatefortoken(tokenid, normal wait state ).addcommand(new CancelProcessInstanceCommand().processInstanceId(processInstanceId)).addCommand(new StartProcessInstanceCommand().processDefinitionName( OpsCancelWithReplacementProcess )).addcommand(new JumpCommand().jumpToNode( replacement wait state ).replacementprocessdefinitionname ( OpsCancelWithReplacementProcess )).addresulttoparametermappingforlastcommand (-1, result.id, processinstanceid ).addcommand(new SignalCommand().transitionName( replacementsignal )).addresulttoparametermappingforlastcommand (-1, result.id, processinstanceid ).build(); getoperationsfacade().executecommandsync(cmd); javamagazin 9 2009 95

Prozessinformationssystem Abb. 6: Der Blick auf PIS nach dem Starten als RAP-Anwendung implementieren, also falls Commands an Instanzen von jbpm 3 und jbpm 4 geschickt werden müssen. Da die Parameter größtenteils gleich sind, müssten sie im besten Fall lediglich in ein anderes Command-Objekt verpackt werden. Die grafische Benutzerschnittstelle Aus der praktischen Erfahrung beim Umgang mit Geschäftsprozessen heraus hat sich sehr früh als Anforderung ergeben, dass die Prozessverwaltung nicht nur von Entwicklern, sondern auch von operativen Einheiten im Unternehmen eingesetzt werden können muss. Ohne ein geeignetes Frontend für PIS wäre kein Zugewinn erreicht worden. Zielsetzung war, über das Frontend Informationen zu laufenden Prozessinstanzen abrufen zu können, eine Möglichkeit zur Suche zu haben und über die beschriebenen Commands aktiv in die Prozesse eingreifen zu können. Als Grundlage für die Implementierung des Frontends dient RCP bzw. RAP. Basierend auf diesen Technologien lassen sich elegant Standalone-Anwendung und Eclipse-Plug-ins, aber auch Webanwendungen über nahezu identischen Code bauen. Weitere Informationen zu RAP und das so genannte Single Sourcing sind unter [4] zu finden. Durch die verschiedenen Laufzeitumgebungen des Frontends werden wir den unterschiedlichen Anforderungen der Benutzer gerecht. So wird vielleicht der Entwickler ein in seine IDE eingebettetes Plug-in bevorzugen, der Mitarbeiter im Operationsteam die eigenständige Anwendung für den häufigen Gebrauch und ein Administrator, der im Fehlerfall schnell eine Übersicht über die Prozesse braucht, den einfachen Blick auf die Anwendung im Browser. In Abbildung 6 ist ein Screenshot der Webanwendung im Browser zu sehen. Die RCP-Anwendung sieht analog aus. Das Fenster von PIS besteht im Wesentlichen aus zwei Views, um einerseits eine Übersicht über alle registrierten Prozesse und deren Instanzen (linke View) und eine Detailansicht für eine ausgewählte Prozessinstanz (rechte View) zu zeigen. Um das Navigieren in der langen Liste von Prozessinstanzen zu erleichtern, kann über ein Paging-Mechanismus darin geblättert werden. Von der tabellarischen Sicht kann zudem auch auf eine Baumansicht gewechselt werden, die z. B. eine Gruppierung nach Prozesszuständen oder Versionen von Prozessinstanzen erlaubt. Neben der Prozessliste kann auch mithilfe der Tabs oberhalb der Tabelle auf eine Übersicht mit allen aufgetretenen Fehlermeldungen und ein Protokoll mit allen durchgeführten Commands umgeschaltet werden. In der Detailansicht sind nochmals alle Informationen zu einer ausgewählten Prozessinstanz nach allgemeinen Informationen aus jbpm, technischen Informationen aus der Prozessverwaltung, aber auch ausgewählten fachlichen Informationen wie Kundenund Vertragsnummer gegliedert. Darüber hinaus bieten die Tabs oberhalb der Detailansicht die Möglichkeit, auf Log- Informationen (Exceptions, durchgeführte Commands, Audit) für die jeweilige Prozessinstanz zuzugreifen oder die aktuelle Position des Token im Prozessbild, wie man das von der jbpm Console kennt, zu visualisieren. Alternativ zum Prozessbild lässt sich auch die zugrunde liegende XML-Beschreibung anzeigen. Für operative Eingriffe kann eine Menge von Prozessinstanzen in der Lis te selektiert werden und danach Commands, z. B. Pause, Suspend oder Re sume, ausgeführt werden. Die Commands werden über die Toolbar oder das Menü aufgerufen. Ein Suspend auf allen Instanzen zu einem bestimmten Prozess ( Not-Aus ) wird ebenfalls als Command unterstützt. Dieses kann auch über ein entsprechendes, gesammeltes Re sume wieder zurückgenommen werden. In der Toolbar sind noch weitere Buttons zu finden. Unter anderem wird dadurch z. B. die Suche nach Prozessinstanzen ermöglicht. Hierzu wird ein eigener Suchdialog geöffnet, in dem komplexe Suchanfragen über logische Verknüpfungen erzeugt und durchgeführt werden können. Eine schnelle Suche lässt sich aber auch über das Suchfeld in der Toolbar erzielen, das eine Filterung der Prozessliste anhand eines Suchmusters für einen einzelnen Parameter bewirkt. Besonderes Augenmerk soll an dieser Stelle noch auf die Anwendung von Batch Commands und Command Chains gerichtet werden, da erst durch sie komplexe Eingriffe an den Prozessen durchgeführt werden können. Mithilfe des Command-Buttons in der Toolbar kann eine erweiterte Detailansicht aktiviert werden, in der auch ein Command-Editor zur Verfügung steht. Im Command-Editor lassen sich nochmals alle existierenden Commands einzeln auswählen oder diese zu einer CommandChain kombinieren. Als besonderes Command ist das Groovy Command enthalten, über das ganze Groovy-Skripte ausgeführt werden können. Spätestens hiermit stehen dem erfahrenen Operator alle Möglichkeiten zum Eingriff in aktuelle Abläufe zur Verfügung. Im gezeigten Beispiel wird zur Demonstration nach dem Suspend der 96 javamagazin 9 2009

Prozessinformationssystem jeweiligen Prozessinstanz das einfache Groovy-Skript ausgeführt, das einige Informationen zu der jeweiligen Prozessinstanz ausliest und sie zur Ausgabe in Form einer Nachricht verwendet. Danach wird die Prozessinstanz über ein Resume wieder fortgesetzt: println "Hi, this is a message from token " + token. getid() + " in node "+ token.getnode().getname() return jbpmcontext.getprocessinstance (processinstance.getid()) Der Einsatz und die Zukunft von PIS PIS wurde bisher nur in kleinem Rahmen mit einigen exemplarischen jbpm-prozessen verwendet. In den kommenden Monaten wird der Einsatz aber deutlich zunehmen, da PIS lediglich eine von mehreren Governance-Komponenten einer vollständigen SOA-Suite darstellt, die bei der 1&1 Internet AG gerade aufgebaut und etabliert wird. Bekannterweise geht mit der konsequenten Einführung einer SOA im Unternehmen nicht nur die Umstellung von technologischen Komponenten einher, sondern auch ein Umdenken beim täglichen Arbeiten. Das wird auch beim Einsatz von PIS der Fall sein. Bisher wurden operative Eingriffe in die Geschäftsprozesse im Unternehmen direkt mit SQL auf Datenbanktabellen, die die Prozessdaten enthalten, vorgenommen. Jetzt erfolgt dies über ein Werkzeug, das einerseits Erleichterung und Unterstützung bei der täglichen Arbeit mit jbpm offeriert, aber auch die gleiche Mächtigkeit und Flexibilität bieten muss, die man für die bisherigen Systeme gehabt hat. Aus diesem Grund wurde bei der Konzeptionierung von PIS sehr viel Wert auf die Gestaltung der Benutzeroberfläche und die Bereitstellung von Commands gelegt, sodass die Anforderungen der Nutzer möglichst gut abgedeckt werden. Die tatsächliche Akzeptanz wird sich im langfristigen Betrieb zeigen. Was die Entwicklung von PIS anbelangt, so wird diese sicherlich fortgeführt. Ein Arbeitspaket für die unmittelbare Zukunft ist die Anpassung an jbpm 4. Bestimmt werden aber auch noch weitere Features integriert. Auch besteht die Idee, das System einem größeren Kreis von Entwicklern und Nutzern als wertvolle Ergänzung zu jbpm über ein Open-Source-Projekt zugänglich zu machen. Sollte bei Ihnen Interesse bestehen, so setzen Sie sich bitte mit den Autoren in Verbindung. Es gibt schließlich kein Open-Source-Projekt ohne Community. Erste Schritte dazu sind bereits getan, denn einige Ideen aus diesem Projekt sind in jbpm 4 eingeflossen die Reise mit jbpm geht also weiter. Bernd Rücker (bernd.ruecker@camunda.com) ist Berater, Trainer und Geschäftsführer bei der camunda services GmbH. Sein besonderes Interesse liegt im Bereich BPM & SOA sowie deren praktische Umsetzung. Er ist Autor eines EJB3-Buchs, zahlreicher Fachartikel, Sprecher auf Konferenzen, aber auch Committer im JBoss-jBPM-Projekt. Zurzeit schreibt er u. a. an einem Buch zur BPMN und hilft beim Aufbau der SOA-Plattform der 1&1 Internet AG. Dr. Jörg Moldenhauer ist Diplom-Informatiker und leitet das Team Technology & Infrastructure bei der 1&1 Internet AG, das für die Bereitstellung der eigenen SOA-Plattform verantwortlich ist. Er hat an der Universität Karlsruhe (TH) u. a. Softwaretechnik und Übersetzerbau studiert und dort anschließend im Bereich Anthropomatik promoviert. Links & Literatur [1] http://www.jboss.org/jbossesb/ [2] http://www.jboss.org/jbossjbpm/ [3] Demolsky, Rücker: jbpm meets ESB, in Java Magazin 09.2008 [4] http://www.eclipse.org/rap/ Anzeige