• Keine Ergebnisse gefunden

6 Implementierung

6.1 EWFN Markup Language (EML)

6.1.2 Tuple

Ein EWFN-Tuple hat einen Bezeichner und wird mit einer Werte-Menge initialisiert. Diese Werte werden in seinen Feldern gespeichert. Die Definition dieser Felder wird anhand des tupleType-Elementss festgelegt. Dieses Element muss auf ein bereits definierten TupleType (vgl. Abschnitt 6.1.1) referenzieren und die spezifizierten Werte der field-Elemente müssen dem Typ des gleichen field-Elemntes in der entsprechenden TupleType-Definition entsprechen. Listing 27 zeigt das EML-Format für ein Variable-Tuple. Listing 28 zeigt das

<tuple id=”tu2”>

Ein EWFN-Platz hat einen Bezeichner und wird mit einer Tuple-Menge initialisiert.

Deswegen muss die Initialisierung im EML-Code des EWFN-Modells beibehalten werden.

Listing 29 zeigt das EML-Format für den EWFN-Platz Variables. Die in dem id-Attribut des field-Elements spezifizierten Tuples müssen auf bereits definierten EML-Tuples (vgl.

Abschnitt 6.1.2) referenzieren. Listing 29 zeigt das EML-Format für das Variables-Place.

<place id="p1">

Eine EWFN-Transition hat einen Bezeichner und kann eine speziell ausgewiesene Transition (durch das Attribut incoming bzw. outgoing), die keine eingehenden bzw. ausgehenden Kanten besitzt [MWL08a]. Listing 30 und Listing 31 zeigen zwei Beispiele für

6.1.5 Arc

Eine EWFN-Kante hat einen Bezeichner und einen Typ (CF_TAKE, CF_READ, CF_WRITE, DATA_TAKE, DATA_READ, DATA_WRITE). Der Typ ist im value-Attribut des type-Elements abgebildet. Zusätlich verbindet jede Kante einen Platz mit einer EWFN-Transition (read-/take-Kante) oder eine EWFN-EWFN-Transition mit einem EWFN-Platz (write-Kante). Die Quelle und das Ziel einer Transition sind in dem source- bzw. target-Attribut definiert. Dabei müssen das source-Attribut bei einer read-/take-Kante auf ein vorher definiertes EML-Place (vgl. Abschnitt 6.1.3) und das target-Attribut auf eine vorher definierte EML-Transition (vgl. Abschnitt 6.1.4) referenzieren. Bei einer write-Kante ist das umgekehrt. Jede Arc spezifiziert einen Tuples-Container, der eine Menge an EML-Tuples (vgl. Abschnitt 6.1.2) enthält. Diese repräsentieren bei einer read-/take-Kante die Tuples (anhand des id-Attributes), die gelesen werden. Zusätzlich werden für jedes Tuple mehrere field-Elemente, deren Anzahl sowie Typ dem Tuple-Type (vgl. Abschnitt 6.1.1) entsprechen muss, spezifiziert. Für jedes dieser field-Elemente kann anhand des formal-Attributes festgelegt werden, ob das Feld formal oder actual ist (vgl. Abschnitt 2.2).

Zusätzlich kann eine write-Kante ein value-Element zu einem field-Element spezifizieren, das den Wert eines actual-Parameters darstellt. Das id-Attribut referenziert auf ein vorher definiertes EML-Tuple und das field-Attribut auf ein Feld, das den Wert enthält. Listing 32

6.2 Transformation

Für die Transformation von BPEL nach EML wurde ein Java-Tool entwickelt, das das Eclipse BPEL Project [bpe] als BPEL-Objektmodell benutzt. Abbildung 27 zeigt das Klassendiagramm mit den unterschiedlichen Objekten, die für die Transformation implementiert wurden.

Abbildung 27: Klassendiagramm: Implementierungsobjekte

Im Folgenden werden die einzelnen implementierten Klassen aus Abbildung 27 kurz vorgestellt.

EMLElement: diese Klasse wurde als abstract deklariert und bildet die Basisklasse für die Klassenhierachie aus Abbildung 27.

EMLTupleType: diese Klasse repräsentiert ein EML-TupleType (vgl. Abschnitt 6.1.1).

EMLTuple: diese Klasse stellt ein EML-Tuple (vgl. Abschnitt 6.1.2) dar.

EMLPlace: diese Klasse repräsentiert ein EML-Place (vgl. Abschnitt 6.1.3).

EMLTransition: diese Klasse stellt eine EML-Transition (vgl. Abschnitt 6.1.4) dar.

EMLArc: diese Klasse implementiert eine EML-Arc (vgl. Abschnitt 6.1.5).

EML: die EML-Klasse repräsentiert die gesamte EML-Struktur dar. Diese Klasse deklariert für jede der obigen Klassen eine ArrayList, die eine Liste von Objektinstanzen dieser Klassen speichert.

BPEL2EML: die BPEL2EML-Klasse verwendet das Eclipse BPEL Project um den BPEL-Prozess zu parsen. Diese Klasse enthält noch die main-Methode und instanziert die EML-Klasse.

7 Zusammenfassung

In der vorliegenden Arbeit wurde ein pattern-basiertes Verfahren zur Transformation von BPEL-Prozessen in semantisch äquivalente EWFNs vorgestellt. Zusätzlich wurde ein XML-basiertes Datenformat (EML) für die Darstellung von EWFNs in einer maschinenlesbaren Form definiert und ein Tool implementiert, das die Transformation von BPEL nach EML vornimmt. Die Motivation für das Spezifizieren dieses Verfahrens liegt in der heutzutage zentralisierten Art bei der Ausführung der Orchestrierungslogik von einem Navigator, der ein wesentlicher Teil einer Workflow-Engine darstellt.

Grundlage für die Arbeit bildete neben einer Einarbeitung in die Thematik dezentralisierte Workflow-Ausführung eine Vorarbeit bei der Klärung der BPEL-Semantik. Auf dieser Basis wurde dann eine Spezifikation erstellt, die das Navigieren durch einen BPEL-Prozess dadurch effizient ermöglicht, dass Teile der Orchestrierungslogik verteilt auf mehreren Knoten ausgeführt werden können, ohne eine zentralisierte Komponente zu benötigen, die die Ausführung der Kontrollflusslogik dirigiert. Dadurch wird es erst möglich, dass diejenigen Teile der Orchestrierungslogik, die auf die Daten eines bestimmten Services zugreifen, auf dem gleichen Knoten, wie der Service selbst, ausgelagert werden können und dadurch eine unnötige Übertragung der Daten zwischen dem Service und dem Navigator erspart bleibt.

Ein wesentlicher Bestandteil dieser Spezifikation bildet der generelle Ansatz bei der Übersetzung eines BPEL-Prozesses in ein semantisch äquivalentes EWFN. Dazu wurde die Struktur eines BPEL-Prozesses genau in Betracht gezogen und einzelne EWFNs für alle BPEL-Aktivitäten spezifiziert, die dann zu einem Prozess-EWFN verknüpft werden können.

Das Zusammenspiel der einzelnen Aktivitäten wurde dabei über definierte Interface-Places ermöglicht.

Das in [MWL08a] vorgestellte Modell zur dezentralisierten Ausführung von Workflows wurde aufgrund seiner geeigneten Eigenschaften für eine effiziente Ausführung von Workflows als Basismodell bei der Übersetzung benutzt. Allerdings wurden weitere Anforderungen an dieses Modell im Laufe der Arbeit formuliert, die eine Grundlage für Erweiterungen und Ergänzungen des zugrunde liegenden Modells bilden können.

Auf Grundlage der Arbeit ergibt sich die Möglichkeit für zukünftige Erweiterungen und Ergänzungen. Dazu zählt man die Untersuchung für ein mögliches Zusammenlegen von Plätzen, um eine Reduzierung deren Anzahl und dadurch eine noch effizientere Ausführung zu bewirken. Eine weitere Ergänzungsmöglichkeit sieht man in der Spezifikation eines Transformationsverfahrens von Isolated Scopes, um dadurch eine komplette BPEL-Semantik basierend auf EWFNs zu erreichen.

Literaturverzeichnis

[Ben06] Ben-Ari, Mordechai: Principles of Concurrent and Distributed Programming, Second Edition. Addison-Wesley, February 24, 2006. – ISBN 0-321-31283-X

[bpe] BPEL Project

http://www.eclipse.org/bpel/index.php

[bpm] BPMI.org

http://www.bpmi.org/

[BPM08] BPMN. Business Process Modeling Notation, V1.1, OMG Available Specification.

http://www.bpmn.org/Documents/BPMN%201-1%20Specification.pdf. 2008

[BW02] Bishop, Philip; Warren, Nigel: JavaSpaces™ in Practice. Addison Wesley Professional, September 20, 2002. – ISBN 0-321-11231-8

[CG90] Carriero, Nicholas; Gelernter, David: How to Write Parallel Programs: A First Course. Cambridge, MA, USA: MIT Press, 1990. – ISBN 0-262-03171-X

[CW03] Chatterjee, Sandeep; Webber, James: Developing Enterprise Web Services: An Architect's Guide. Prentice Hall, November 14, 2003. – ISBN 0-13-140160-2

[EAA+04] Endrei, Mark; Ang, Jenny; Arsanjani, Ali; Chua, Sook; Comte, Philippe;

Krogdahl, PŒl; Luo, Dr Min; Newling, Tony: Patterns: Service-Oriented Architecture and Web Services. IBM Redbooks, April 29, 2004. – ISBN 0-7384-5317-X

[Erl05] Erl, Thomas: Service-Oriented Architecture: Concepts, Technology, and Design. Prentice Hall, August 02, 2005. – ISBN 0-13-185858-0

[FHA99] Freeman, Eric; Hupfer, Susanne; Arnold, Ken: JavaSpaces™ Principles, Patterns, and Practice. Prentice Hall, June 15, 1999. – ISBN 0-201-30955-6 [Fle01] Flenner, Robert: Jini™ and JavaSpaces™ Application Development. Sams,

December 05, 2001. – ISBN 0-672-32258-7

[HW03] Hohpe, Gregor; Woolf, Bobby: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison Wesley Professional, October 10, 2003. – ISBN 0-321-20068-3

[Jen92] Jensen, Kurt: Coloured Petri Nets, Vol. 1: Basic Concepts. EATCS Monographs on Theoretical Computer Science. Berlin, Heidelberg, New York:

Springer-Verlag, 1992.

[JMS06] Juric, Matjaz B.; Mathew, With Benny; Sarang, Poornachandra: Business Process Execution Language for Web Services. Packt Publishing, January 30, 2006. – ISBN 1-904811-81-7

[KST01] Kulchenko, Pavel; Snell, James; Tidwell, Doug: Programming Web Services with SOAP. O'Reilly, December 2001. – ISBN 0-596-00095-2

[Lin99] Linthicum, David S.: Enterprise Application Integration. Addison Wesley Professional, November 12, 1999. – ISBN 0-201-61583-5

[LSW97] Langner, Peter; Schneider, Criostoph; Wehler, Joachim: Prozessmodellierung mit ereignisgesteuerten Prozessketten (EPKs) und Petri-Netzen.

Wirtschaftsinformatik, 39(5):479–489, 1997.

[M05] Martin-Recuerda, F.: Towards cspaces: A new perspective for the semantic web. In 1st International IFIP WG 12.5 Working Conference on Industrial Applications of Semantic Web, Jyvaskyla, Finland, 2005. Springer IFIP Book Series.

[MSM04] Mattson, Timothy G.; Sanders, Beverly A.; Massingill Berna L.: Patterns for Parallel Programming. Addison Wesley Professional, September 15, 2004. – ISBN 0-321-22811-1

[MWL08a] Martin, Daniel; Wutke Daniel; Leymann Frank: A Novel Approach to Decentralized Workflow Enactment. 12th IEEE International EDOC Conference (EDOC 2008). Munich, Germany, September 15 - 19, 2008.

[New02] Newcomer, Eric: Understanding Web Services: XML, WSDL, SOAP, and UDDI. Addison Wesley Professional, May 13, 2002. – ISBN 0-201-75081-3

[OAS07a] OASIS. Web Services Business Process Execution Language Version 2.0, OASIS Standard, 11 April 2007.

http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html. 2007

[OAS07b] OASIS. Web Services Business Process Execution Language Version 2.0, Primer, 9 May 2007.

http://www.oasis-open.org/committees/download.php/23964/wsbpel-v2.0 primer.htm. 2007

[pnm] Pnml.org

http://www.pnml.org/

[PP05] Pilone, Dan; Pitman, Neil: UML 2.0 in a Nutshell. O'Reilly, June 2005. – ISBN 0-596-00795-7

[Rei85] Reisig, Wolfgang: Petri nets: an introduction. Springer-Verlag New York, Inc.

New York, NY, USA, 1985

[ST01] Shalloway, Alan; Trott, James R.: Design Patterns Explained: A New Perspective on Object-Oriented Design. Addison Wesley Professional, July 09, 2001. – ISBN 0-201-71594-5

[tsp] IBM: TSpaces.

http://www.almaden.ibm.com/cs/TSpaces/index.html

[Wal00] Waldo, Jim: Jini™ Specifications, The Second Edition. Prentice Hall, December 06, 2000. – ISBN 0-201-72617-3

[WCL+05] Weerawarana, Sanjiva; Curbera, Francisco; Leymann, Frank; Storey, Tony;

Ferguson, Donald F.: Web Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More.

Prentice Hall, March 22, 2005. – ISBN 0-13-148874-0

[Wes02] Wesley, Ajamu: WSFL in action, Part 1.

http://www.ibm.com/developerworks/webservices/library/ws-wsfl1/. 2002

[wmc] Workflow Management Coalition

http://www.wfmc.org/standards/xpdl.htm

[WML+98] Wyckoff, Peter; McLaughry Stephen W.; Lehman Tobin J.; Ford, Daniel A.: T spaces. In: IBM Systems Journal 37(3), 1998, S. 454–474

[WML08] Wutke, D., Martin, D., Leymann, F.: Model and Infrastructure for Decentralized Workflow Enactment. Proceedings of the 23rd ACM Symposium on Applied Computing (SAC’08). 2008

[W3C01] W3C. Web Services Description Language (WSDL) 1.1, W3C Note 15 March 2001.

http://www.w3.org/TR/wsdl. 2001

[W3C04a] W3C. XML Schema Part1: Structures Second Edition, W3C Recommendation 28 October 2004.

http://www.w3.org/TR/xmlschema-1/. 2004

[W3C07a] W3C. Web Services Description Language (WSDL) Version 2.0 Part1: Core Language, W3C Recommendation 26 June 2007.

http://www.w3.org/TR/wsdl20/. 2007

[W3C07b] W3C. XML Path Language (Xpath) 2.0, W3C Recommendation 23 January 2007.

http://www.w3.org/TR/xpath20/. 2007

[W3C08] W3C. Advanced XML Schema Patterns for Databinding Version 1.0.

http://www.w3.org/2002/ws/databinding/edcopy/advanced/advanced.html.

2008

Alle Verweise verfolgt am 26. September 2008.

Listings

Listing 1: Definition einer receive-Aktivität ... 16

Listing 2: Definition einer flow-Aktivität mit zwei receive-Aktivitäten ... 19

Listing 3: Definition einer reply-Aktivität ... 20

Listing 4: Definition einer Request-Response-Operation mit einem fault-Element ... 23

Listing 5: Definition einer invoke-Aktivität ... 23

Listing 6: Definition einer throw-Aktivität ... 25

Listing 7: Definition einer wait-Aktivität ... 27

Listing 8: Definition einer empty-Aktivität ... 28

Listing 9: Beispiel für eine sequence-Aktivität ... 30

Listing 10: Beispiel für eine while-Aktivität ... 33

Listing 11: Beispiel für eine repeatUntil-Aktivität ... 34

Listing 12: Beispiel für eine if-Aktivität ... 36

Listing 13: Beispiel für eine pick-Aktivität ... 40

Listing 14: Beispiel für eine flow-Aktivität ... 43

Listing 15: Beispiel für eine Source-Aktivität ... 46

Listing 16: Beispiel für eine Target-Aktivität ... 48

Listing 17: Beispiel für eine forEach-Aktivität ... 51

Listing 18: Definition eines Scopes ... 54

Listing 19: Beispiel für ein FaultHandler ... 60

Listing 20: Definition eines Default-FaultHandlers ... 60

Listing 21: Definition eines CompensationHandlers ... 64

Listing 22: Definition eines TerminationHandlers ... 66

Listing 23: Definition einer CompensateScope-Aktivität ... 69

Listing 24: Beispiel für ein EventHandler ... 73

Listing 25: Variable-Tuple-Type-Definition in EML ... 77

Listing 26: Message-Tuple-Type-Definition in EML ... 77

Listing 27: Variable-Tuple-Definition in EML ... 77

Listing 28: Message-Tuple-Definition in EML ... 78

Listing 29: Variables-Place-Definition in EML ... 78

Listing 30: Reply-Transition-Definition in EML ... 78

Listing 31: Receive-Transition-Definition in EML ... 78

Listing 32: Data-Read-Arc-Definition in EML ... 79

Listing 33: Data-Write-Arc-Definition in EML ... 79

Abbildungsverzeichnis

Abbildung 1: Travel Agency Process [CW03] ... 5

Abbildung 2: BPEL-Objektmodell [CW03] ... 6

Abbildung 3: One-to-One Communication Pattern ... 9

Abbildung 4: Beispiel: History-Feld ... 11

Abbildung 5: EWFN-Elemente ... 14

Abbildung 6: receive-EWFN ... 16

Abbildung 7: reply-EWFN ... 21

Abbildung 8: invoke-EWFN ... 24

Abbildung 9: throw-EWFN ... 26

Abbildung 10: wait-EWFN ... 27

Abbildung 11: empty-EWFN ... 29

Abbildung 12: sequence-EWFN ... 31

Abbildung 13: while-EWFN ... 33

Abbildung 14: repeatUntil-EWFN ... 35

Abbildung 15: if-EWFN ... 37

Abbildung 16: pick-EWFN ... 41

Abbildung 17: flow-EWFN ... 44

Abbildung 18: Source-EWFN ... 47

Abbildung 19: Target-EWFN ... 49

Abbildung 20: forEach-EWFN ... 51

Abbildung 21: Scope-EWFN ... 55

Abbildung 22: FaultHandler-EWFN ... 61

Abbildung 23: CompensationHandler-EWFN... 65

Abbildung 24: TerminationHandler-EWFN ... 67

Abbildung 25: Compensate-EWFN ... 70

Abbildung 26: EventHandlers-EWFN ... 74

Abbildung 27: Klassendiagramm: Implementierungsobjekte ... 80