Dokumentation
Transcription
Dokumentation
Markus Schmitt Entwurf und Implementierung einer Workflowbasierten Anwendung zur Auswertung mathematischer Formeln Vertiefung Verteilte Systeme Wintersemester 2005/06 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Inhaltsverzeichnis Einführung und Grundlagen................................................................................................................. 4 Service Oriented Architecture......................................................................................................... 5 Beschreibung...............................................................................................................................5 Services....................................................................................................................................... 5 Rollen.......................................................................................................................................... 6 Merkmale.................................................................................................................................... 6 Weiterführende Links................................................................................................................. 7 Web Services................................................................................................................................... 8 Einführung in Web Services....................................................................................................... 8 Anwendung von Web Services................................................................................................... 8 Weiterführende Links............................................................................................................... 10 Business Process Execution Language.......................................................................................... 11 Geschäftsprozesse, Workflow (Management) und BPEL........................................................ 11 Die „BPEL-Sprache“................................................................................................................ 12 Aufruf von Web Services..........................................................................................................13 BPEL Engines und Deployment............................................................................................... 13 Graphische Orchestrierung....................................................................................................... 13 Weiterführende Links............................................................................................................... 14 Analyse und Entwurf.......................................................................................................................... 15 Anforderungen............................................................................................................................... 15 Mathematische Web Services................................................................................................... 15 Workflows.................................................................................................................................15 Aufruf der Web Services und Workflows.................................................................................15 Grobentwurf...................................................................................................................................16 Mathematische Web Services................................................................................................... 16 Workflows.................................................................................................................................17 Implementierung.................................................................................................................................19 Infrastruktur und Komponenten.....................................................................................................19 Entwicklungsumgebung............................................................................................................19 JBoss......................................................................................................................................... 19 Tomcat...................................................................................................................................... 20 Umsetzung der Web Services........................................................................................................ 20 Generierung mit XDoclet..........................................................................................................20 Exceptions................................................................................................................................. 22 Packaging.................................................................................................................................. 22 Umsetzung der Workflows............................................................................................................ 23 Orchestrierung...........................................................................................................................23 BPEL Engines........................................................................................................................... 23 Beispiel: Ackermannfunktion................................................................................................... 24 Umsetzung des Clients für die Ackermannfunktion......................................................................25 Java Swing Client......................................................................................................................25 Bewertung...........................................................................................................................................26 Probleme........................................................................................................................................ 26 Markus Schmitt 2 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Java 5.........................................................................................................................................26 jBPM BPEL.............................................................................................................................. 26 Axis-generierte Stubs................................................................................................................ 26 Leistungsumfang............................................................................................................................27 jBPM BPEL.............................................................................................................................. 27 ActiveBPEL.............................................................................................................................. 27 Zusammenfassung......................................................................................................................... 28 „Viel Code – Kleine Wirkung“................................................................................................. 28 Literaturverzeichnis............................................................................................................................ 29 Abbildungsverzeichnis....................................................................................................................... 31 Anhang............................................................................................................................................... 32 Markus Schmitt 3 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Einführung und Grundlagen Im Zuge der Globalisierung und der damit verbundenen immer weitreichenderen Nutzung des Internet ist für viele Unternehmen die Service-orientierte Architektur (SOA) immer wichtiger geworden. Diese spezielle Art der Softwarearchitektur legt ihr Augenmerk auf die Applikationsintegration. Dies ist für jeder Art von Unternehmen, egal ob dienstleistungsorientiert oder produzierend, sinnvoll, da die Software des Unternehmens mit der Software eines Kunden, Zulieferers oder Partners verbunden werden kann, ohne eine "menschliche Middleware" zwischen zu schalten. Eine Implementierung einer SOA stellen Web Services dar, die sich in den letzten Jahren schlagartig in der IT-Welt verbreiten sollten. Web Services liefern einen Satz von bereits existierenden Technologien, mit deren Hilfe sich eine vollständige service-orientierte Architektur bewerkstelligen läßt. Die WS-I, die Web Services Interoperability Organization, ein Zusammenschluss zur Optimierung des Zusammenspiels verschiedener Web Service Implementierungen, sah Mitte 2004 die Zukunft noch sehr optimistisch: Abbildung 1: Einfluss von Web Services auf den (Internet-)Markt [WSI04, S.7] Doch der Erfolg der Web Services blieb weit hinter den hohen Erwartungen zurück. Einen neuen Ansatz bietet BPEL, eine XML-Sprache zur Beschreibung und Orchestrierung von Geschäftsprozessen. Dabei sind die einzelnen Aktivitäten der Prozesse durch Web Services implementiert. Daß dafür keine neuen Technologien erlernt werden müssen, sondern nur deren Einsatz, macht die Sache nur noch interessanter... Markus Schmitt 4 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Service Oriented Architecture Service Oriented Architecture, Service-orientierte Architektur, oder kurz: SOA - diese 3 Buchstaben stehen für eine spezielle Art von Softwarearchitektur, die laut Gartner Group die Client/Server-Architektur ablösen wird. In den meisten Gebieten der Softwareentwicklung hat im letzten Jahrzehnt die objektoriente die prozeduale Programmierung ersetzt, doch für das Gebiet der Applikationsintegration war dies nicht ausreichend: Es wurde eine Lösung benötigt, die Informationen und Dienste (Services) verschiedener Unternehmen oder Abteilungen in einen durchgängigen Geschäftprozess integiert. Die Idee der service-orientierten Architektur war geboren. Beschreibung Die gemeinschaftlich erstellte deutsche Definition der SOA bei der freien Enzyklopädie Wikipedia lautet: "Eine serviceorientierte Architektur ist ein Konzept für eine Systemarchitektur, in welchem Funktionen in Form von wieder verwendbaren, voneinander unabhängigen und lose gekoppelten Services implementiert werden. Services können unabhängig von zugrunde liegenden Implementierungen über Schnittstellen aufgerufen werden, deren Spezifikationen öffentlich und damit vertrauenswürdig sind. Serviceinteraktion findet über eine dafür vorgesehene Kommunikationsinfrastruktur statt. Mit einer serviceorientierten Architektur werden i. d. R. die Gestaltungsziele der Geschäftsprozessorientierung, der Wandlungsfähigkeit (Flexibilität), der Wiederverwendbarkeit und der Unterstützung verteilter Softwaresysteme verbunden." [Wiki05, „Service Oriented Architecture“] Technisch gesehen lassen sich in der SOA fachliche Dienste in Form von Services flexibel miteinander kombinieren und auch austauschen. Dies entspricht einer Menge loser gekoppelter Dienste, die voneinander völlig unabhängig sind und nur durch eine Aneinanderreihung von Aufrufen (Orchestrierung) zu einem Geschäftsprozess zusammengefasst werden. Aus verteilten Anwendungen kann dadurch eine sehr komplexe Geschäftlogik abgearbeitet werden. Die SOA beschreibt nicht die Implementierung von Prozessen und die Kommunikation zwischen diesen, sondern stellt nur ein Konzept dar, was Prozesse zur Verfügung stellen müssen. Weiter unterscheidet die SOA drei Rollen, die bei der Inanspruchnahme von Diensten miteinander agieren. Services Ein Service im Sinne der SOA ist teilweise vergleichbar mit einem Objekt in der objektorientierten Programmierung. Er besitzt eine eindeutige ID und klar definierte Schnittstelle, über die er von aussen aufgerufen werden kann. Allerdings besteht eine klare Trennung zwischen Schnittstelle und Implementierung, weshalb ein Service in dieser Hinsicht eher mit einer Enterprise Java Bean (EJB) verglichen werden kann, die ihre Schnittstellen auch in Home- bzw. Local-Interfaces veröffentlicht, ihre interne Struktur aber kapselt. Markus Schmitt 5 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Eine serviceorientierte Architektur trennt demnach einen Service in: Beschreibung: Im Wesentlichen beschreibt die Servicebeschreibung die Schnittstellen eines Service. Sie definiert, welche Operationen ein Dienst anbietet und wie diese aufgerufen werden können. Dabei ist entscheidend, dass auch das Format von Aufruf und eventueller Antwort beschrieben wird. Implementierung: Die Serviceimplementierung muss lediglich schnittstellenkonform arbeiten. In welcher Programmiersprache oder auf welchem System der Dienst ausgestaltet wird, ist völlig irrelevant, solange der Service wie in der Servicebeschreibung dargestellt in Anspruch genommen werden kann. Rollen Die SOA trennt bei der Interaktion drei verschiedene Rollen: Service Provider: Der Service Provider (Serviceanbieter) implementiert den Service und stellt ihn zur Ausführung zur Verfügung. Dabei ist der Begriff "Provider" doppeltdeutig, er bezieht sich sowohl auf die den Service anbietende Organisation als auch auf das eigentlich implementierende Programm. Service Consumer: Der Service Consumer (Servicekonsument) nimmt einen Dienst eines Service Providers in Anspruch. Wenn ihm dabei die Servicebeschreibung des Dienstes nicht bekannt ist, kann er diese über einen Service Broker in Erfahrung bringen. Service Broker: Der Service Broker (Verzeichnis) ist ein optionales Element in der SOA. Bei ihm können Servicebeschreibungen von Service Providern hinterlegt und von Service Consumern abgefragt werden. Dies ist nur dann wichtig, wenn sich Provider und Consumer nicht direkt kennen. Merkmale Zusammenfassend lassen sich folgende Merkmale serviceorientierter Architektur herausstellen: Dynamische Lokalisierung und Bindung Ein Service kann durch einen Consumer bei einem Service Broker dynamisch lokalisiert werden. Anhand von der vom Broker gelieferten Sevicebeschreibung kann dynamisch, also zur Laufzeit, eine Bindung zu dem Service hergestellt und der Dienst in Anspruch konsumiert werden. Eigenständige Module Jeder Service wird als eigeständiges Modul mit klar definierten Schnittstellen implementiert. Nur Markus Schmitt 6 Vertiefung Verteilte Systeme WS05/06 MATHworkflows die Beschreibung, nicht die Implementierung oder die interne Struktur sind für den Konsumenten sichtbar. Grobe Granularität Services sind zumeist grob granular, d.h. sie besitzen im Gegensatz zu verteilten Objekten mit feiner Granularität keine großen Abhängigkeiten, was einen guten Kompromiß zwischen Wiederverwendung und Performance darstellt. Lose Kopplung Durch die geringen Abhängigkeiten zwischen den Modulen werden Flexibilität und Wartbarkeit des Systems erhöht. Netzwerkadressierbarkeit Die Servicebeschreibung eines Dienstes enthält umfassende Informationen über die Adresse, den Transportmechanismus und das Transportformat, sodass er von Konsumenten dynamisch gebunden werden kann. Dadurch kann ein Service beispielsweise im Netzwerk ohne weiteres an einen anderen Ort verschoben werden. Interoperabilität Durch die die Verwendung von Protokollen und Formaten, die unabhängig von Programmiersprachen und Systemen sind, kann ein Service von einer großen Zahl potenzieller Konsumenten in Anspruch genommen werden. Servicekomposition Services können durch ihre Wiederverwendbarkeit als Basis für neue, größere und gröbere Services dienen. Investitionsschutz Nach einmalig hohem Entwicklungsaufwand führt die Modularität zu geringen Redundanzen und einer höheren Flexibilität, was wiederum häufig zu niedrigeren Betriebskosten führt. Durch den hohen Wiederverwendungsgrad lassen sich wiederem neue Applikationen schneller entwickeln und dadurch weitere Entwicklungskosten senken und der Entwicklungszyklus verkürzen. Weiterführende Links • http://www.soablueprints.com: SOA Blueprints – "Best Practices" für serviceorientierte Systeme Markus Schmitt 7 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Web Services Es gibt viele Definitionen, was ein Web Service eigentlich ist. Auch das World Wide Web Consortium hat sich dieser Fragestellung angenommen und definiert den Begriff so: "A Web service is a software system designed to support interoperable machine-tomachine interaction over a network. It has an interface described in a machineprocessable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards." [W3C04, „Definitions: Web Service“] Streng genommen ist der Web Service Standard eine Ausgestaltung des in der Service-orientierten Architektur eingeführten Begriffs des Service auf der Basis von offenen Standards. Einführung in Web Services Analog zur SOA finden sich auch bei der Verwendung von Web Services die drei Rollen Anbieter, Konsument und Verzeichnis wieder. Grundlage für die Interaktion zwischen den Rollen bilden bei Web Services vier festgelegte XML-basierte Standards: SOAP oder XML-RPC: Kommunikations-Protokolle zum Nachrichtenaustausch. WSDL (Web Services Description Language): Plattform-, programmiersprachen- und protokollunabhängige Metasprache zur Beschreibung von Web Services. UDDI (Universal Description, Discovery and Integration): Ein Verzeichnisdienst mit einer SOAP-Schnittstelle mit Informationen zu Unternehmen, ihren Daten und ihren Services. Dabei wird unterschieden zwischen: • "White Pages" (Unternehmensregister), • "Yellow Pages" (Branchenverzeichnis), Abbildung 2: Funktionsweise von Web • "Green Pages" (Auskunft über Geschäftsmodell Services [Wiki05, „Web Service“] und -prozesse). In der Servicebeschreibung eines Web Service wird für den entsprechenden Service eine eindeutige URI (Uniform Resource Identifier) festgelegt. Über diese URI ist ein Web Service addressierbar. Anwendung von Web Services Die bekanntesten Beispiele für Web Services sind die Anwendungen von Google und Amazon, die Dienste zur Suchmaschinenabfrage bzw. zur Information über Bücher u.a. anbieten. Dennoch konzentrieren sich Web Services hauptsächlich auf betriebswirtschaftliche Lösungen: Markus Schmitt 8 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Beispiel Darren Barefoot, ein "Technologie Papst" der vom Web-Service-Hersteller Cape Clear Software gesponsorten Entwickler Gemeinschaft Cape Science, beschreibt in seinem Web Service Primer [Bare02] eine Welt vor dem Einsatz von WebServices: Abbildung 3: Geschäftsprozess vor der Verwendung von Web Services [Bare02, S.2] Dieser Bestell-Prozess enthält viele manuelle Schritte wie Eingabe der Bestelldaten, Erstellen eines Produktionsauftrags oder die Finanz-Erfassung. Durch die manuellen Schritte ist der Prozess sehr fehleranfällig. Die Lösung lautet: Einsatz von Web Services: Abbildung 4: Geschäftsprozess mit Web Services [Bare02, S.2] Dabei werden für die jeweiligen Anwendungen wie Buchhaltung oder Produktionssystem Web Service Schnittstellen geschaffen und in einem Geschäftsprozess automatisch abgearbeitet. Das integrierte Echtzeit-Bestellsystem hat sich dabei um die Orchestrierung der Service-Aufrufe zu kümmern. Um den durch die Services implementierten Geschäftsprozess einfach zu beschreiben, wurde 2003 eine neue XML-basierte Sprache eingeführt: BPEL4WS. Markus Schmitt 9 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Weiterführende Links • • • http://www.jeckle.de/webServices/index.html#def: Web Services – Begriffsdefinitionen http://www.google.com/apis/: Google Web APIs http://www.amazon.com/gp/aws/landing.html: Amazon Web Services Markus Schmitt 10 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Business Process Execution Language Die Business Process Execution Language (BPEL) wurde 2003 als BPEL4WS (Business Process Execution Language for Web Services) eingeführt. Die Sprache basiert auf XML und dient "zur Beschreibung von Geschäftsprozessen, deren einzelne Aktivitäten durch Webservices implementiert sind." [Wiki05, „BPEL“] In der Version 1.1 wurde BPEL4WS in BPEL umbenannt, da die Sprache ausschliesslich Unterstützung für Web Services bietet und der Zusatz "für Web Services" nicht mehr notwendig erschien. Eine Version 2.0, die inkompatibel zu den 1.x Versionen sein wird, ist in Bearbeitung und wird in diesem Release allerdings in WSBPEL umbenannt werden, um mit dem Beginn mit WS in Einklang mit anderen Web Service Standards wie WSDL, WS-Security u.a. zu gelangen. Geschäftsprozesse, Workflow (Management) und BPEL Ein Geschäftsprozess ist ein Geschäftsvorfall in einer Wirtschaftseinheit. Ein Beispiel für einen Geschäftsprozess ist der Bestellvorgang aus dem Kapitel Web Services. Der Prozess hat einen klar definierten Start ("Aufgeben der Bestellung") und ein definiertes Ende ("Auslieferung"), kann aber dazwischen einen unterschiedlichen Verlauf nehmen, wenn beispielsweise für die Produktion Rohstoffe nachgeordert oder je nach Zahlungsweise auf den Geldeingang gewartet werden muss. Dieser von internen und externen Ereignissen beeinflusste Verlauf wird bei der Modellierung eines Geschäftsprozesses bestimmt. Mit der Optimierung und weitestgehenden Automatisierung eines solchen Prozesses beschäftigt sich das Business Process Management (BPM). Zum einen wird unter BPM das Managementkonzept verstanden, das sich mit der Optimierung bzw. der Automatisierung des Prozesses befasst, zum anderen aber auch die Software, die genau das leistet. Ein Workflow unterstützt technisch gesehen einen Geschäftsprozess und läuft immer nach dem selben oder einem ähnlichen Schema ab. Es gibt vier grundlegende Workflow-Typen (nach WfMC, vgl. [Muel05, S. 8] ): Ad-Hoc-Workflow: Unterstützt einmalig oder stark variierende Prozesse, die wenig strukturiert und nicht vorhersehbar sind. Collaborative Workflow: Unterstützt das gemeinsame Erarbeiten eines Ergebnisses, wird auch als Synonym für Groupware verwendet. Adminsitrative Workflow: Unterstützt strukturierte Routineabläufe, die nicht strategisch, selten zeitkritisch und von geringem Geldwert sind. Production Workflow: Unterstützt fest strukturierte und vordefinierbare Vorgänge, die zumeist zeitkritisch und von strategischer Bedeutung sind. Markus Schmitt 11 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Mit allen Aufgaben, die bei einem Workflow anfallen (Analyse, Modellierung, Ausführung und Steuerung), befasst sich das Workflow Management. Werden die einzelnen Arbeitsschritte dabei von einem IT-Werkzeug unterstützt, spricht man bei der Software von einem WorkflowManagement-System (WfMS). Im Prinzip kann also ein Workflow einen einzelnen in der SOA beschriebenen Service innerhalb eines Geschäftsprozesses darstellen. Dadurch wird auch klar, dass BPM ein um EAI (Enterprise Application Integration) erweitertes Workflow Management darstellt, da ein durch die unterschiedlichen Services bestehender Integrationsaspekt hinzukommt. Wenn in einer SOA also mittels BPEL ein Geschäftsprozess beschrieben wird und die involvierten Services Workflows darstellen, dann kommt der so genannten BPEL Engine, des zur Ausführung und Kontrolle des Prozesses zuständigen Programms, die Rolle der BPM-Software zu. Die „BPEL-Sprache“ BPEL ist blockstrukturiert und bietet damit Unterstützung für lokale Scopes. In diesen lokalen Umgebungen können lokale Variablen definiert oder Fehlerbehandlungen (Fault Handler), Kompensationsbehandlungen (Compensation Handler) und Ereignisbehandlungen (Event Handler) ausgeführt werden. Unterprozesse kennt BPEL hingegen nicht. So kann nicht sichergestellt werden, dass ein Unterprozess beendet wird, sobald der Hauptprozess terminiert. Sprachelemente BPEL unterscheidet zwischen Basic Activities, grundlegenden Aktivitäten, die nicht aus anderen Aktivitäten aufgebaut sind, und Structured Activities, die der Strukturierung von anderen Aktivitäten dienen: Basic Activities assign Wertzuweisung an eine Variable empty Leere Anweisung (z.B. um in einer Fehlerbehandlung nichts zu tun) invoke Synchroner oder asynchroner Aufruf eines Web Service receive / reply throw wait Anbieten einer (synchronen oder asynchronen) Web Service Schnittstelle Explizites "Werfen" eines Fehlers Warten (auf einen Zeitpunkt oder für eine Zeitspanne) Structured Activities flow Parallele Ausführung von Aktivitäten pick Aus Prozesssicht nicht deterministische Wahl durch externe Ereignisse sequence Sequenzielle Ausführung von Aktivitäten switch Bedingte Ausführung von Aktivitäten while Schleife (Ausführung von Aktivitäten solange eine Bedingung erfüllt ist) Tabelle 1: BPEL Sprachelemente, vgl. [Wiki05, „BPEL“] Markus Schmitt 12 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Aufruf von Web Services Ein BPEL-Prozess selber kann als Web Service beschrieben und genutzt werden. Um andere Web Services (oder sich selber) aufrufen zu können, müssen diese dem BPEL-Prozess erst als Partner-Link bekannt gemacht werden. Dabei muss der Partner-Service (Service Endpoint) zum Zeitpunkt des Deployment nicht verfügbar sein, es genügt, wenn der Ort der Service-beschreibenden WSDL-Datei angegeben wird. Natürlich muss der Service zur Laufzeit verfügbar sein und die aufgerufene Operation mit den im Prozess verwendeten Aufruf- und Rückgabeparametern übereinstimmen. BPEL Engines und Deployment BPEL Engines führen den in BPEL-Code vorliegenden Geschäftsprozess aus. Dazu muss der Prozess erst deployt, also auf dem Zielsystem installiert werden. Neben dem BPEL Code und der WDSL-Datei für den Prozess werden dazu je nach Engine in unterschiedlichen Formaten ein Deployment-Deskriptor, die Definitionen der Partner und u.U. ein Katalog der WSDL-Dateien dieser Service-Endpoints benötigt. Graphische Orchestrierung Für viele (kommerzielle) BPEL Engines existieren inzwischen Tools zur graphischen Orchestrierung eines BPEL-Prozesses. Viele davon sind Plugins für die Eclipse IDE oder fest integriert in eine eigene Eclipse-basierte IDE, beispielsweise bei IBM. Abbildung 5: Business Process Modeling Notation Elemente [WfRF04] Markus Schmitt 13 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Um eine nahezu einheitliche Gestaltung von (BPEL-)Prozessen zu gewährleisten, wurde BPMN (Business Process Modeling Notation) geschaffen. Die meisten Orchestrierungs-Werkzeuge orientieren sich bei der Darstellung an der BPMN-Spezifikation, und es gibt auch freie Schablonen für beispielsweise Microsoft Visio. Weiterführende Links • • • http://www.smartcomps.org/confluence/pages/viewpage.action?pageId=182: Twister WSBPEL Guide – Kurzes englischsprachiges BPEL-Tutorial http://www.oasis-open.org/committees/wsbpel/: OASIS Web Service Business Execution Language Technical Committee http://www.bpmn.org/: Business Process Modeling Notation (BPMN) Information Markus Schmitt 14 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Analyse und Entwurf Anforderungen Die Anforderungen an das Projekt scheinen recht gering, die Herausforderung liegt in der Implementierung. Mit JBoss jBPM mit der BPEL-Erweiterung und Apache Tomcat mit ActiveBPEL sind schon zwei (Applikations-)Server vorgegeben. Mathematische Web Services Die mathematischen Web Services für die Grundrechenarten sollen unter jBoss laufen. Da es ein Paket von JBoss mit Server, Eclipse und jBPM gibt, sollten die Web Services ohne Probleme dafür implementiert und deployt werden können. Workflows Die Workflows sollen sowohl unter JBoss als auch unter Apache Tomcat zur Ausführung gebracht werden. Für den JBoss Server sollten aufgrund der vorhandenen Entwicklungsumgebung keine Probleme auftreten, und auch für Tomcat werden kein Probleme erwartet, da es sich bei der dem jBPM-Paket beigefügten IDE um ein "normales" Eclipse handelt. Aufruf der Web Services und Workflows Da sich deployte Workflows bzw. Prozesse in den beiden BPEL Engines wie Web Services präsentieren und verhalten, ist zum Testen aller Komponenten lediglich ein Tool zum Aufrufen von Web Services nötig. Im e-Learning-Modul Web Services [WWR04] ist ein mit Java Webstart implementierter SOAP Client vorhanden, der zum Testen von Web Services völlig ausreicht. Später kann für die Workflows mittels des im jBPM-Paket vorliegenden WSDL2J auch ein eigenständiger Client entwickelt werden. Markus Schmitt 15 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Grobentwurf Mathematische Web Services Um die in der SOA auf verschiedenen Systemen laufenden Services zu simulieren, werden die Web Services für die Grundrechenarten nicht in einem Web Service mit verschiedenen Operationen, sondern als fünf verschiedene Services implementiert werden. Da alle zu implementierenden Rechenarten auch Fließkommazahlen erlauben, soll für die Über- und Rückgabewerte float oder double verwendet werden. Gegenüber einer ersten Idee, einige Grundrechenarten wiederum durch Workflows mit der Verwendung anderer Grundrechenarten zu realisieren (z.B. Subtraktion durch Addition mit Negierung oder Multiplikation durch wiederholtes Addieren), ist es völlig ausreichend, in den Web Services die jeweiligen Rechenarten auszuführen. Additions-Service float add(float x, float y) { z := x + y return z } Subraktions-Service float sub(float x, float y) { z := x - y return z } Multiplikations-Service float mul(float x, float y) { z := x * y return z } Markus Schmitt 16 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Divisions-Service Um die Implementierung entsprechend einer Beispiel-Anwendung gering zu halten, wird auf ein Abfangen einer Division durch Null verzichtet. float div(float x, float y) { z := x / y return z } Stackservice-Service Im Gegensatz zu den Grundrechenarten besitzt der Stack Web Service zwei Operationen, deren endgültige Implementierung im Entwurf allerdings substanzlos ist. void push(float x) float pop() { return x } Workflows Als Workflows wurde zum einen eine einfache mathematische Rechnung mit sequenziellen und parallelen Abläufen gewählt, zum anderen eine rekursive Funktion, die Ackermannfunktion. Bei der späteren Implementierung ist darauf zu achten, dass die Variablem jeweils temporär in die Nachrichten-Variablen der jeweiligen BPEL-Partner-Links kopiert werden müssen. Rechnung (a+b)*(c-d) Der Pseudo-Code für die einfache Rechnung ( a + b ) * ( c - d ) mit Hilfe eines BPEL-Prozesses lautet: float rechnung(float a, float b, float c, float d) { x := add(a, b) } y := sub(c, d) z := x * y return z Markus Schmitt 17 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Ackermannfunktion Für die 1926 von Wilhelm Ackermann gefundene, schnellwachsende mathematische Funktion existiert eine teilweise iterative Implementierung (vgl. [Wiki05, „Ackermannfunktion“]): function ack(m, n) while m ≠ 0 if n = 0 n := 1 else n := ack(m, n - 1) m := m - 1 return n + 1 Umgesetzt als Pseudo-Code für den BPEL-Prozess ergibt das: int ack(int m, int n) { while m ≠ 0 switch (m) case n = 0 n := 1 } otherwise t := sub(n, 1) m := ack(m, t) m := sub(m, 1) z := add(n, 1) return z Markus Schmitt 18 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Implementierung Infrastruktur und Komponenten Der Labor-Rechner, auf dem das Projekt realisiert wurde, war mit Windows XP Betriebssystem und Java 5 (JDK 1.5.0) ausgestattet. Die hier aufgezählte Software ist noch einmal im Anhang detailliert aufgelistet. Entwicklungsumgebung Als Entwicklungsumgebung bot sich Eclipse an, da von JBoss mit dem JBoss jBPM Starters Kit ein Paket verfügbar ist, das jBPM, den JBoss Application Server und die Eclipse IDE mit dem entsprechenden Prozess-Designer enthält. Für BPEL-Unterstützung muss allerdings die seperat erhätliche jBPM BPEL Extension kompiliert und installiert werden. Leider ist der jBPM Prozess Designer nicht in der Lage, BPEL Prozesse zu orchestrieren, so dass ein geeignetes Eclipse-Plugin gesucht werden musste. Mit dem frei verfügbaren Oracle BPEL Process Designer for Eclipse ist allerdings ein sehr umfangreiches und einfach zu bedienendes Tool verfügbar, das eigentlich für den Oracle BPEL Process Manager gedacht ist, aber auch ohne diesen eine Orchestrierung von BPEL-Prozessen erlaubt. JBoss Der im Starters Kit enthaltene JBoss Application Server ist ein abgespeckter JBoss, der nur eine jBPM-Konfiguration enthält. Um auch Web Services auf dem Server deployen zu können, ist daher ein Installieren eines vollständigen JBoss Servers über die Version des Pakets notwendig. Verwunderlich ist auch, dass in dem Starter Kit die JBoss IDE nicht integriert ist. Diese ermöglich u.a. ein komfortables Starten und Stoppen des Server aus Eclipse und auch das Deployment läßt sich über ein Kontextmenü auslösen. Da die JBoss IDE ein Eclipse-Plugin ist, läßt sie sich aber ohne weiteres in Eclipse durch Installation in das Plugin-Verzeichnis integrieren. Mittels XDoclet lassen sich einfach durch bestimmte Tags aus Stateless Session EJBs Web Services bauen. In der JBoss IDE ist allerdings eine etwas ältere Version integriert, so dass XDoclet den Hinweisen in [OSM05] folgend mit einer neueren Version erweitert werden muss. Markus Schmitt 19 Vertiefung Verteilte Systeme WS05/06 MATHworkflows jBPM BPEL Für die Prozess-Ausführung und das Deployment benötigt jBPM eine Datenbank. Hier bietet sich MySQL an, das auch in den JBPM BPEL Beispielen verwendet wird. Die Installation von MySQL ist bekannt einfach, für Hibernate wird nur das Anlegen eines neuen Benutzers notwendig, auch ein JDBC-Treiber muss installiert werden. Tomcat Der Apache Tomcat Application Server ist die Alternative zur Ausführung von BPEL-Prozessen. Dafür ist ActiveBPEL notwendig, das aber genauso einfach wie Tomcat zu installieren ist. Eine Datenbank ist hier nicht notwendig, könnte aber verwendet werden. Da viele Beispiele von ActiveBPEL auf der ActiveBPEL Utility Library beruhen, muss diese allerdings auch erstellt und installiert werden, um eigene Prozesse auf den Beispielen aufbauen zu lassen. Umsetzung der Web Services Die Implementierung der Web Services folgte dem Entwurf. Generierung mit XDoclet Nachdem XDoclet entsprechend erweitert wurde (vgl.Kapitel Infrastruktur und [OSM05]), konnten einfach zu programmierende Stateless Session Beans durch Einfügen von XDoclet-Tags als Web Services für JBoss erstellt werden. Die einfache Konfiguration von XDoclet in den jeweiligen Projekt-Einstellungen ermöglichte eine schnelle Anpassung der verschiedenen Web Services angepasst werden. So blieb der Quellcode für die Web Services gering, wie an einem Ausschnitt aus der AddServiceBean.java des AdditionsService zu erkennen ist: Markus Schmitt 20 Vertiefung Verteilte Systeme WS05/06 MATHworkflows package de.fhwiesbaden.informatik.vvs.mathworkflows.services.addservice.ejb; [+] import java.rmi.RemoteException; /** * @ejb.bean name="AddServiceBean" display-name="AddService" description="Add * WebService" jndi-name="ejb/AddService" type="Stateless" * view-type="service-endpoint" * * @ejb.interface service-endpoint-class="de.fhwiesbaden.informatik.vvs. ↵ mathworkflows.services.addservice.interfaces.AddServiceEndpoint" * * @wsee.port-component name="AddService" * */ public class AddServiceBean implements SessionBean { private static final Logger log = Logger.getLogger(AddServiceBean.class); public AddServiceBean() { super(); } [...] /** * Business method * @ejb.interface-method view-type = "service-endpoint" */ public double add(double x, double y) { double z = x + y; log.info("add(" + x + "," + y + ") => " + z); return z; } } /** * Create method * @ejb.create-method view-type = "local" */ public void ejbCreate() throws javax.ejb.CreateException { log.setLevel(Level.DEBUG); } Um anhand der Server-Ausgaben auf der Konsole verfolgen zu können, ob ein Web Service aufgerufen wurde bzw. was er berechnet hat, wurde in den Geschäftsmethoden der Services Logging-Ausgaben eingebaut. Die Implementierung von Subtraktions-, Multiplikations-, Divisions- und Stapelspeicher-Service erfolgte analog zu dem Additions-Service nach dem Grobentwurf in eigenen Projekten. Markus Schmitt 21 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Exceptions Ein eigenes Commons-Projekt enthält eine gemeinsam von den Web Services benutzte MathServiceException-Klasse: package de.fhwiesbaden.informatik.vvs.mathworkflows.common.exceptions; import java.rmi.RemoteException; public class MathServiceException extends RemoteException { public MathServiceException(String cause) { super(cause); } } Diese wird von den entsprechenden Web Services bei einem leeren Stack oder bei einer Division durch Null benutzt: package de.fhwiesbaden.informatik.vvs.mathworkflows.common.exceptions; public class DivDBZException extends MathServiceException { public DivDBZException() { super("Division by zero is undefined!"); } } Packaging Durch die eingebaute Packaging-Funktionalität von Eclipse wurden die einzelnen Projekte jeweils zur Java Archives (JAR) und dann in einem eigenen Projekt für das Deployment in JBoss mit dem entsprechenden Deskriptor zu einem Enterprise Application Archive (EAR) gepackt. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd"> <application> <display-name>Math WebServices</display-name> <module> <ejb>AddEJB.jar</ejb> </module> <module> <ejb>SubEJB.jar</ejb> </module> <module> <ejb>MulEJB.jar</ejb> </module> <module> <ejb>DivEJB.jar</ejb> </module> <module> <ejb>StackEJB.jar</ejb> </module> </application> Markus Schmitt 22 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Umsetzung der Workflows Orchestrierung Die Orchestrierung der Prozesse gestaltete sich unter dem Oracle BPEL Designer einfach. Auch Partner Links, also die Verbindungen zu Web Services Endpunkten, konnten zu deployten oder in WSDL-Beschreibungen vorliegenden Web Services einfach mit dem Tool erstellt werden. Dabei war es möglich, dem im Kapitel Entwurf gestalteten Pseudocode zu folgen. Der ebenfalls anzeigbare BPEL-"Code" konnte dann einfach in die BPEL-Dateien der entsprechenden Projekte für jBPM BPEL und ActiveBPEL kopiert werden. Bedingt durch den Umstand, dass BPEL eine XML-basierte Sprache ist, wurde dabei ein relativ umfangreicher Code erstellt. BPEL Engines Sowohl jBPM BPEL als auch ActiveBPEL benötigen eine Anzahl von Deskriptoren und weiteren XML-Dateien, um mit den erstellten Prozessen arbeiten zu können. Dabei sind unter anderem die für die Darstellung des BPEL-Prozesses als Web Service notwendigen WSDL-Dateien zu erstellen. ActiveBPEL benötigt dafür sogar zusätzlich noch eine konkretere Ausgestaltung des Web Services. Beide Engines bieten auf ihren Homepages eine große Zahl von Beispielen. Auf diesen konnten die beiden zu implementierenden Prozesse aufgesetzt werden. Mit kleinen Änderungen konnte dafür der in den Projekten für den Oracle BPEL Process Manager orchestrierte BPEL-Code verwendet werden. Die "Packetierung" und das Deployment gestaltete sich bei den beiden Engines durch bei den Beispielen mitgelieferte Ant-Build-Skripts entsprechend leicht. Da beide Engines die Prozesse wie erwartet nach aussen als Web Service präsentierten, lies sich die Ausführung wie geplant durch den SOAP Client testen. Die für den Web Service Aufruf notwendigen Informationen waren über WSDL-Beschreibungen zu beziehen, die beiden Engines für die auf ihnen deployten Prozesse präsentierten. Markus Schmitt 23 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Beispiel: Ackermannfunktion Alle Deskriptoren aufzuzeigen, würde den Umfang dieser Dokumentation sprengen. Daher verweise ich hier auf die entsprechenden Archive auf der Projekt-CD. Hier dennoch ein Ausschnitt aus dem erzeugten BPEL-Code: <process name="ackermann" [...]"> <partnerLinks> <partnerLink name="client" partnerLinkType="tns:mathPLT" myRole="service"/> <partnerLink name="AckPL" partnerLinkType="tns:AckServiceLink" ↵ partnerRole="AckServiceProvider"/> <partnerLink name="AddPL" partnerLinkType="tns:AddServiceLink" ↵ partnerRole="AddServiceProvider"/> [...] </partnerLinks> <variables> <variable name="input" messageType="tns:inputMessage"/> <variable name="output" messageType="tns:outputMessage"/> <variable name="ack-params" messageType="tns:inputMessage"/> <variable name="ack-result" messageType="tns:outputMessage"/> <variable messageType="ads:AddService_add" name="add-params"/> <variable messageType="ads:AddService_addResponse" name="add-result"/> [...] </variables> <sequence> <receive operation="compute" partnerLink="client" portType="tns:mathPT" ↵ variable="input" createInstance="yes" name="compute_begin"/> <assign name="assign-temp-vars"> <copy> <from variable="input" part="m"></from> <to variable="temp-m"/> </copy> <copy> <from variable="input" part="n"></from> <to variable="temp-n"/> </copy> </assign> <while name="while" condition="bpel:getVariableData('temp-m')!= '0.0'"> <sequence> <switch name="switch-recursive"> <case name="mIsNull" condition="bpel:getVariableData('temp-n')↵ = '0.0'"> <assign name="assign-n-to-one"> <copy> <from expression="1.0"></from> <to variable="temp-n"/> </copy> </assign> </case> <otherwise> [...] </otherwise> </switch> <assign name="assign-sub-for-while"> <copy> <from variable="temp-m"></from> <to variable="sub-params" part="x"/> </copy> <copy> <from expression="1.0"></from> <to variable="sub-params" part="y"/> </copy> </assign> <invoke name="invoke-sub-for-while" partnerLink="SubPL" ↵ portType="sus:SubService" operation="sub" inputVariable="sub-params" ↵ outputVariable="sub-result"/> <assign name="assign-m-to-sub-result"> <copy> <from variable="sub-result" part="result"></from> <to variable="temp-m"/> </copy> </assign> </sequence> </while> [...] <reply operation="compute" partnerLink="client" portType="tns:mathPT" ↵ variable="output" name="compute_end"> <bpeld:annotation xmlns:bpeld="http://schemas.oracle.com/bpel/eclipse/↵ designer"> <bpeld:meta map.label="compute (caller)"/> </bpeld:annotation> </reply> </sequence> </process> Markus Schmitt Abbildung 6: Prozess "Ackermannfunktion" 24 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Umsetzung des Clients für die Ackermannfunktion Ausgehend von der WSDL-Beschreibung des im Tomcat deployten Ackermann-Prozesses, wurden mittels Axis WSDL2J Stubs zum Aufruf des Prozesses generiert. Dies führte wiederholt zu Fehlern, die aber mit einer zu diesem Zeitpunkt neuen Version 4.0.3 des JBoss Application Servers behoben werden konnte. Java Swing Client Die Ausführung des Ackermann-Prozesses sollte mit einer kleinen Anwendung demonstriert werden können. Nach einem ersten Kommandozeilen-Client wurde eine Applet-Lösung erstellt, die allerdings aufgrund der Sicherheitsbeschränkungen der Internet Browser nur unter Eclipse lauffähig war. Daher wurde als dritte und endgültige Lösung ein einfacher Java Swing Client zum Aufruf des als Web Services gekapselten Workflows entwickelt. Abbildung 7: Ackermann Java Swing Client Der Client befriedigt zwar alle Ansprüche, besitzt aber keine besonders hervorzuhebende Implementierung und soll deshalb nur der Vollständigkeit halber hier erwähnt werden. Markus Schmitt 25 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Bewertung Probleme Neben dem Problem, geeignete Quellen zu finden, die in BPEL-Prozessen nicht nur das Aufrufen von Web Services aus dem gleichen Beispiel, sondern auch von entfernten Services beschreiben, sind bei der Duchrführung des Projekts vor Probleme in folgenden Punkten aufgetreten: Java 5 Ein großes Handicap war die Verwendung von Java 5. Neben dem Umstand, dass auf dem LaborRechner nur ein JDK 1.5 vorhanden war, benötigte auch XDoclet zur Generierung der Web Services für JBoss Java 5. Einige Software war damit allerdings überhaupt nicht ausführbar, andere mussten um einige Blibliotheken erweitert werden. Da Java 5 allerdings der zukünftige Standard in diesem Gebiet ist, war dessen Verwendung aus praktischen Gesichtspunkten durchaus sinnvoll. Allerdings war die jeweilige Hilfestellung nur in den entsprechenden Internet-Foren, und manchmal nur tagesaktuell, zu finden. jBPM BPEL Bis zum Ende des Projekts ließ sich jBPM BPEL nicht "überrreden", auch entfernte Web Services aufzurufen. Lediglich Prozesse ohne die Benutzung "fremder" Partner Links, also beispielsweise nur mit dem Kopieren von Variablen, liessen sich ohne Fehlermeldung ausführen. Die Fehlermeldung "unitialized partner role" wurde regelrecht zum Fluch. Ein Eintrag im JBoss JIRA (http://jira.jboss.com/jira/browse/BPEL-41?page=all) läßt allerdings vermuten, dass das Problem in der nächsten Version der BPEL Extension behoben sein wird. Axis-generierte Stubs Anfangs liessen sich die Web Services und Prozesse nicht mit dem Axis-generierten Stub aufrufen. Das betraf auch die bei Beispielen vorhandenen Clients. Zwar waren die Web Services durch Verwendung des SOAP Clients testbar, dennoch behinderte der AxisFault mit java.lang.NullPointerException die spätere Entwicklung des Test-Clients. Auch hier war ein Hinweis nur über ein Forum im JBoss JIRA (http://jira.jboss.com/jira/browse/JBWS-187?page=all) zu finden, der den – ebenfalls auf Java 5 beruhenden – Fehler behebende JBoss Application Server 4.0.3 war rechtzeitig verfügbar. Markus Schmitt 26 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Leistungsumfang Neben dem Leistungsumfang des Oracle BPEL Process Designer, der seine Hauptbestimmung, die Orchestrierung von Prozessen, meisterte und damit alle ihm anvertrauten Aufgaben erfüllte, ist vor allem ein Vergleich der beiden BPEL Engines interessant. jBPM BPEL Die jBPM BPEL Extension hat einen zwiespältigen Eindruck hinterlassen. Bis auf den bereits erwähnten Fehler beim Aufruf von Web Services – der zugebenerweise Hauptaufgabe von BPEL ist – schien jBPM BPEL die volle BPEL 1.1 Spezifikation einzuhalten und damit auch alles zu ermöglich, was der Standard erlaubt. Mehr ist eigentlich nicht notwendig. Beim Vergleich mit ActiveBPEL ist jBPM BPEL allerdings deutlich der Verlierer. Dazu tragen vor allem die umständliche Erstellung von Web Services als Prozess-Frontend, das damit verbundene aufwendigere Deployment und die ebenfalls dadurch komplizierteren Deskriptoren bei. ActiveBPEL Wie jBPM BPEL erfüllte ActiveBPEL die volle BPEL 1.1 Spezifikation. Allerdings glänzte ActiveBPEL mit einer eigenen Administrations-Oberfläche, die Fehlermeldungen beim Deployen eines Prozesses im Klartext und ohne umständliches Suchen in der Konsole anzeigt. Das Goodie, auch den aktuellen Stand eines laufenden Prozesses – allerdings auch vereinzelt mit Fehlermeldungen beim Erstellen der Grafiken –, ist ein weiterer Pluspunkt. Vor allem aber überzeugen bei ActiveBPEL die wöchentlichen Releases und der Umstand, dass BPEL-Prozesse direkt als Web Service verfügbar gemacht werden. Markus Schmitt 27 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Zusammenfassung „Viel Code – Kleine Wirkung“ Mit diesem Satz läßt sich auf den ersten Blick der gezeigte Einsatz von BPEL zusammenfassen. Für eine kleine Funktionalität war umfangreicher initialer Code notwendig. Ruft man sich aber das Beispiel im Kapitel Web Services ins Gedächtnis, wird eines klar: Für Applikationsintegration im SOA-Umfeld ist BPEL sicher eine interessante Technologie und Alternative. Auch ein Geschäftsprozess wie der angerissene Bestellvorgang besteht im Endeffekt nicht aus mehr Aktionen oder Services wie die im Projekt bearbeiteten Prozesse. Eine Meldung an die Buchhaltung, den Auftrag an das Produktionssystem und das Warten auf die Bestätigung, vielleicht noch das Warten auf einen Geldeingang, und schon ist der Prozess fast beendet. Dies zeigt mir, dass BPEL wirklich eine interessante Sache ist. Würde ich es aber selber einsetzen wollen, würde ich noch ein wenig warten. WSBPEL 2.0 steht kurz bevor und wird mit entscheidend veränderter Spezifikation verabschiedet werden. Und bis dann alle BPEL Engines diese auch voll unterstützen, wird noch einige Zeit ins Land gehen... Markus Schmitt 28 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Literaturverzeichnis [Acti05] ACTIVEBPEL, LLC (Hrsg.): ActiveBPEL Engine Documentation. http://www.activebpel.org/docs/, Stand 05.11.2005 [Back02] BACKSCHAT, Martin ; GARDON, Otto: Enterprise JavaBeans: Grundlagen - Konzepte Praxis. Berlin: Spektrum, Akad. Verlag, 2002. - ISBN 3-8274-1322-2 [Bare02] BAREFOOT, Darren: Web Services Primer. http://www.capescience.com/education/primer/, 09.09.2002. - Stand 09.12.2004 [Beng04] BENGEL, Günther: Verteilte Systeme. 3. Aufl. Wiesbaden: Vieweg, 2004. - ISBN 3-528-25738-5 [Cape02] CAPE CLEAR SOFTWARE: Salesforce.com Flash Presentation. http://www.capeclear.com/salesforce/, 2002. - Stand 09.12.2004 [CIO05] CIO ONLINE / IDG BUSINESS VERLAG GMBH (Hrsg.) ; MIEDL, Wolfgang: Dynamische Service-Architekturen. http://cio.de/index.cfm?pid=170&pk=808886, 04.04.2005. - Stand 04.11.2005 [Daum05] DAUM, Berthold ; FRANKE, Stefan ; TILLY, Marcel: Webentwicklung mit Eclipse. Heidelberg: dpunkt.verlag, 2005. - ISBN 3-89864-282-8 [dNET03] MICROSOFT .NET: See What Web Services Can Do for You. http://www.microsoft.com/net/basics/webservicesoverview.asp, 13.06.2003. [Grim05] GRIMM, Bernd: Service-orientierte Architektur - Das nächste große Ding?. http://www.it-motive.de/home.cfm?division=eci&navikey=ECI-SOAVeroeffentlichungen, 12.07.2005. [Jane01] JANETZKE, Philipp: Flexibles und Regelbasiertes Workflow-Management an Universitäten. Hamburg: Dr. Kovac Verlag, 2001. - ISBN 3-8300-0429-X [JBos05] JBOSS INC. (Hrsg.): JBoss jBPM Documentation Library. http://www.jboss.com/products/jbpm/docs, Stand 05.11.2005 [Jeck04] JECKLE, Mario: Web Services. http://www.jeckle.de/webServices/index.html, 11.06.2004. - Stand 04.11.2005 [Kroe04] KROEGER, Reinhold: Verteilte Systeme: Folien der Vorlesung. http://wwwvs.informatik.fh-wiesbaden.de/lehre/vs04ws/material.html, Wintersemester 2004/05. Markus Schmitt 29 Vertiefung Verteilte Systeme WS05/06 MATHworkflows [Kroe05] KROEGER, Reinhold: Verteilte Systeme: Folien der Vorlesung. http://wwwvs.informatik.fh-wiesbaden.de/lehre/vs05ws/material.html, Wintersemester 2005/06. [Muel05] MÜLLER, Joachim: Workflow-based Integration. Berlin: Springer, 2005. - ISBN 3-540-20439-3 [OSM05] OPERATING SYSTEMS AND MIDDLEWARE GROUP AT HPI (Hrsg.): Web Service Development with J2EE. http://www.dcl.hpi.uni-potsdam.de/research/asg/ws4ejb/, Stand 05.04.2005 [Sun05] SUN MICROSYSTEMS (Hrsg.) ; BADANI, Ashesh: Service Oriented Architecture: Sun's Pragmatic Approach. http://see.sun.com/, 01.06.2005 [W3C04] W3C (Hrsg.) ; HAAS, Hugo: Web Services Glossary. http://www.w3.org/TR/ws-gloss/, 11.02.2004. - Stand 04.11.2005 [Wang04] WANG, Dapeng (Hrsg.) BAYER, Thomas ; FROTSCHER, Thilo ; TEUFEL, Marc: Java Web Services mit Apache Axis. Frankfurt: Software & Support Verlag, 2004. - ISBN 3-935042-57-4 [WfR04] WORKFLOW RESEARCH (Hrsg.): Visio Templates for BPMN. http://www.workflow-research.de/Downloads/BPMN/, Stand 27.11.2005 [WfRF04] WORKFLOW RESEARCH FORUMS (Internet-Forum): Process Modeling. http://www.workflow-research.de/Forums/index.php?act=ST&f=2&t=30&st=0, Stand 27.11.2005 WIKIPEDIA (Hrsg.): - Ackermannfunktion. http://de.wikipedia.org/wiki/Ackermannfunktion, Stand 09.10.2005 - BPEL. http://de.wikipedia.org/wiki/BPEL, Stand 19.10.2005 - Service Oriented Architecture. http://de.wikipedia.org/wiki/Service_Oriented_Architecture, Stand 15.11.2005 - Web Service. http://de.wikipedia.org/wiki/Web_Service, Stand 26.10.2005 [Wiki05] [WSI04] WS-I (Hrsg.) ; COTTON, Paul: Ensuring Web Services Security. http://www.ws-i.org/docs/presentations/wsi_netsec_preso_final.ppt, 15.06.2004. [WWR04] WISSENSWERKSTATT RECHENSYSTEME (Hrsg.) ; WALDHART, Tina: Verteilte Systeme: Web Services. http://wwwvs.informatik.fh-wiesbaden.de/e-learning/ws.html, 12.07.2004. [ZDNet] ZDNET / CNET NETWORKS (Hrsg.) ; MCKENDRICK, Joe ; MANASCO, Britton: SOA: Service-Oriented Architecture Weblog. http://blogs.zdnet.com/service-oriented/, online seit 27.10.2004. - Stand 04.11.2005 Markus Schmitt 30 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Abbildungsverzeichnis Abbildung 1: Einfluss von Web Services auf den (Internet-)Markt [WSI04, S.7].............................. 4 Abbildung 2: Funktionsweise von Web Services [Wiki05, „Web Service“]....................................... 8 Abbildung 3: Geschäftsprozess vor der Verwendung von Web Services [Bare02, S.2]..................... 9 Abbildung 4: Geschäftsprozess mit Web Services [Bare02, S.2]........................................................ 9 Abbildung 5: Business Process Modeling Notation Elemente [WfRF04]......................................... 13 Abbildung 6: Prozess "Ackermannfunktion"..................................................................................... 24 Abbildung 7: Ackermann Java Swing Client..................................................................................... 25 Markus Schmitt 31 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Anhang – Verwendete Software – Installations- und Benutzeranleitung Markus Schmitt 32 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Verwendete Software Prozess-Design Entwicklungsumgebung und graphische Orchestrierung. • JBoss jBPM Starters Kit 3.0.1 [link] Eclipse IDE mit jBPM Process Designer Plugin und JBoss-Server in jBPM-Konfiguration, entgegen der Angaben mit Eclipse 3.1. • JBoss jBPM BPEL Extension 1.0 alpha 3 [link] JBoss jBPM BPEL Erweiterung. • Oracle BPEL Designer for Eclipse 3.0 (Version 0.9.13) [link] Graphische Orchestrierung von BPEL-Prozessen, eigentlich für Oracle BPEL Process Manager. Benötigte Update auf dem Labor-Rechner unter Windows XP: • Microsoft XML Basisdienste [link] MSXML 4.0 Service Pack 2 JBoss Server JBoss Application Server zur Ausführung der Web Services und jBPM BPEL Prozesse. • JBoss Application Server 4.0.3 SP1 [link] Ursprünglich im Projekt 4.0.2, später Update auf 4.0.3 wegen Ausführungsfehlern. • JBoss Eclipse IDE 1.5 Release Candidate 1 [link] JBoss IDE Eclipse-Plugins zur Steuerung des Application Server über Eclipse etc., Version 1.5 benötigt wegen Java 5 und Eclipse 3.1. Tomcat Server Application Server zur Ausführung der ActiveBPEL Prozesse. • Apache Tomcat 5.0.28 [link] Jakarta Tomcat Core Version. • ActiveBPEL 2.0.0_7 [link] Active BPEL Weekly Release. Um eigene Prozesse auf den Beispielen von ActiveBPEL aufbauen zu können: • ActiveBPEL Utility Library [link] ActiveBPEL Beispiel util. Markus Schmitt 33 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Sonstige Software • MySQL 4.1.14 [link] Benötigt von Hibernate für jBPM BPEL Prozesse. Dafür Anlegen eines Benutzers notwendig: Username: jbpm_user Password: hopesystems • MySQL Connector/J 3.1.11 [link] MySQL JDBC Treiber. • JWSDP 1.6 [link] Sun Java Web Services Developer Pack. • Axis 1.3 [link] Apache Axis. • XDoclet 1.2.3 [link] Erweiterung von XDoclet innerhalb der JBoss IDE zur Generierung von Web Services für JBoss aus EJB-SLSBs notwendig, siehe [OSM05]. Markus Schmitt 34 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Installations- und Benutzeranleitung Umgebungsvariablen Folgende Umgebungsvariablen müssen in der Systemsteuerung gesetzt werden: AXIS_HOME = H:\axis-1_3 AXIS_LIB = %AXIS_HOME%\lib AXISCLASSPATH = %AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; ↵ %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; ↵ %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; ↵ %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar CATALINA_HOME = C:\jakarta-tomcat-5.0.28 CLASSPATH = .;H:\jbpm-starters-kit-with-eclipse-3.0\mysql-connector-java-3.1.11\ ↵ mysql-connector-java-3.1.11-bin.jar JAVA_HOME = C:\Programme\Java\jdk1.5.0_02 JBOSS_HOME = H:\jbpm-starters-kit-with-eclipse-3.0\jbpm-server MYSQL_HOME = C:\mysql-4.1.14-win32 PATH = H:\Sun\jwsdp-1.6\jwsdp-shared\bin;H:\jbpm-starters-kit-with-eclipse-3.0\ ↵ jbpm-designer\eclipse\plugins\org.apache.ant_1.6.5\bin;%PATH% Starten der Software Ein Starten der Software und Server in der folgenden Reihenfolge hat sich als optimal erwiesen: • • • • MySQL: Start mit C:\mysql-4.1.14-win32\bin\mysql_start_nt.bat Eclipse: Start mit H:\jbpm-starters-kit-with-eclipse-3.0\jbpm-designer\start.bat JBoss: Start unter Eclipse mit: • In dem View Server Navigator • Kontextmenü (Rechtsklick) von JBoss 4.0.2 default • Start Tomcat: Start mit C:\jakarta-tomcat-5.0.28\bin\startup.bat Markus Schmitt 35 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Eclipse läßt sich wie eine normale Windows-Anwendung beenden, Tomcat mit C:\jakartatomcat-5.0.28\bin\shutdown.bat und MySQL mit C:\mysql-4.1.14win32\bin\mysql_stop_nt.bat. JBoss wird durch über gleiche Kontextmenü wie zum Starten durch Auswahl von Shutdown anstelle von Start herunter gefahren. Adressen der Application Server Nach dem Starten der Application Server befinden sich • • JBoss unter: http://localhost:8080 Tomcat unter: http://localhost:8088 Generierung und Deployment der Web Services • • Auf alle Web Service Projekte (AddService, SubService, MulService, DivService, StackService) im Kontextmenü: • Run XDoclet (Ctrl+Shift+F1) • Run Packaging (Ctrl+Shift+F2) Dann auf MathService: • Run Packaging (Ctrl+Shift+F2) • Refresh Project (F5) • Kontextmenü von MathApp.ear im Projekt-Hauptverzeichnis • Deployment → Deploy To... → JBoss 4.0.2 default Generierung und Deployment der jBPM BPEL Prozesse Wenn nicht vorhanden, im dem View Ant die build.xml des Projekts BPEL_Test_Math hinzufügen, dann: • Im dem View Ant innerhalb des zugehörigen Buildfiles • Bei erstmaliger Ausführung zum Anlegen des MySQL-Datenbankschemas für jBPM: Doppelklick auf create-schema • Doppelklick auf deploy-definition • Doppelklick auf generate-service • Doppelklick auf wscompile • Doppelklick auf deploy-application Danach Meldungen der Konsole des gestarteten JBoss im entsprechnden View von Eclipse beachten. Undeployment mit Doppelklick auf undeploy-application. Markus Schmitt 36 Vertiefung Verteilte Systeme WS05/06 MATHworkflows Generierung und Deployment der ActiveBPEL Prozesse Wenn nicht vorhanden, im dem View Ant die build.xml des jeweilige Projekts (ActiveBPEL_Test_Math oder ActiveBPEL Ackermann) hinzufügen, dann: • Im dem View Ant innerhalb des zugehörigen Buildfiles • Doppelklick auf deploy-bpel Danach Meldungen in der Konsole des gestarteten Tomcat oder im Deployment-Log unter http://localhost:8088/BpelAdmin/ beachten. Undeployment mit Doppelklick auf undeploy. Testen des Ackermann-Prozesses Zum Starten des Clients für die Ackermannfunktion aus Eclipse heraus: • • Entweder: • Kontextmenü von Projekt AckermannClient • Run as → Java Application → AckermannApp oder: • Im Projekt AckermannClient • Im Package de.fhwiesbaden.vvs.mathworkflows.ackermann.swing • Kontextmenü von AckermannApp.java • Run as → Java Application (Alt+Shift+X,J) Dann im Client Werte eingeben (Beispiele für mögliche Werte in der Wertetabelle in [Wiki05]), empfehlenswert sind m := 2 und n := 4, danach Betätigen von compute. Dann die Info-Ausgaben der Web Services in der JBoss-Konsole verfolgen und auf das Ergebnis warten... Markus Schmitt 37