<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Umstrukturierung von WS-BPEL-Prozessen zur Verbesserung des Validierungsverhaltens</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thomas S. Heinze</string-name>
          <email>T.Heinze@uni-jena.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Wolfram Amme</string-name>
          <email>Wolfram.Amme@uni-jena.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Simon Moser</string-name>
          <email>smoser@de.ibm.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Friedrich-Schiller-Universita ̈t Jena</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>IBM Entwicklungslabor Bo ̈blingen</institution>
        </aff>
      </contrib-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Innerhalb der letzten Jahre wurde eine Vielzahl von Methoden zur Analyse von
verteilten Gescha¨ftsprozessen der Sprache Web Services Business Process
Execution Language (WS-BPEL) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] entwickelt [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Mit Ausnahme einzelner Ansa¨tze
konzentrieren sich die meisten der Techniken auf die Analyse des Kontrollflusses
und ignorieren die Datenabha¨ngigkeiten der untersuchten Prozesse. Ein solches
Vorgehen birgt aber die Gefahr der Verfa¨lschung von Analyseergebnissen in sich.
Insbesondere fu¨r die Analyse von Eigenschaften wie der (Verhaltens-)
Kompatibilit¨at [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] ist die Beru¨cksichtigung der Datenabha¨ngigkeiten von Bedeutung.
      </p>
      <p>
        Ein Prozessfragment dass nicht fehlerfrei analysiert werden kann, falls
Datenabha¨ngigkeiten ignoriert werden, ist in Abbildung 1 dargestellt. Die
abgebildete Aktivita¨t OrderingSequence ist mo¨glicherweise Bestandteil eines gro¨ßeren
Gescha¨ftsprozesses zur Realisierung eines Online-Shop. Darin kann ein Kunde
mehrere Bestellungen aufgeben (Nachricht Order), und so die
Auftragsabwicklung (Aktivita¨t OrderProcessing) zu jeder Bestellung einleiten. Nachdem der
Kunde alle Bestellungen u¨bertragen hat, kann er den Bestellvorgang beenden
(Nachricht Complete). Zur Umsetzung entha¨lt die Aktivita¨t OrderingSequence
eine Schleife (While), deren Ausfu¨hrung durch die boolesche Variable doOrder
gesteuert wird. Anfangs wird die Variable mit dem Wert true belegt und die
Schleife daher durchlaufen. Die Pick-Aktivita¨t innerhalb der Schleife fu¨hrt dann
entweder die Sequenz OrderProcessing aus, falls Nachricht Order empfangen
wird, oder die Sequenz Termination, falls der Kunde die Nachricht Complete
u¨bermittelt. Im letzten Fall wird der Wert von doOrder auf false gesetzt und so
die Schleife beendet. Der Schleifenabbruch wird demzufolge durch Empfang der
Nachricht Complete ausgelo¨st, entsprechend nennen wir das verallgemeinernde
Muster auch nachrichtengesteuerter Schleifenabbruch. Da im Sprachumfang von
WS-BPEL derzeit kein Gegenstu¨ck zur break-Anweisung aus Sprachen wie Java
enthalten ist [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], kann dieses Muster nur unter Verwendung einer Schleife mit
einer booleschen Variablen als Schleifenbedingung realisiert werden.
      </p>
      <p>
        Die in der Arbeit [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] angegebene und auf Petrinetzen basierende
Kompatibilita¨tsanalyse fu¨hrt fu¨r Prozesse, die Fragmente dieses Muster enthalten, zu
fehlerhaften Ergebnissen. Dazu kann beispielsweise ein Partner zur Aktivita¨t
OnMessage Order
OrderProcessing
Invoke Shipment
$index = $index + 1
$orderList[$index] = $order
      </p>
      <p>Reply Confirmation</p>
      <p>OrderingSequence
$doOrder = true()
$index = 0
While($doOrder)</p>
      <p>Pick</p>
      <p>OnMessage Complete</p>
      <p>Termination
$doOrder = false()
Reply OrderList
ng inkLShipment
ip r
p e
ihS tra
n
P</p>
      <p>Order
k
inConfirmation
L
trrean
irregndPOOrCdoemrLpilsetitneg</p>
      <p>pLoop
tLoopExit</p>
      <p>While
tLoopEnter</p>
      <p>Pick
... ...</p>
      <p>
        Order
OrderingSequence betrachtet werden, der genau eine Bestellung aufgibt. Die
Kommunikation besteht dann aus den aufeinanderfolgenden Nachrichten Order,
Confirmation, Complete und OrderList. Offensichtlich sind die beiden
Fragmente kompatibel [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], da es zu keiner Verklemmung kommen kann. Die
Kompatibilita¨tsanalyse kommt aber zum gegenteiligen Schluss. Um die
Analysierbarkeit des darin verwendeten Petrinetzmodells zu gewa¨hrleisten, werden bedingte
Schleifen und Verzweigungen durch Nichtdeterminismus modelliert. Die Schleife
in OrderingSequence wird demnach auf die in Konflikt stehenden Transitionen
tLoopEnter und tLoopExit, zur Repra¨sentation des Schleifenein- und -austritts,
abgebildet (siehe auch Abbildung 1). Da der Konflikt willku¨rlich zu lo¨sen ist,
kann die Schleife beliebig oft durchlaufen werden. In der Folge ist mo¨glich, dass
die Aktivita¨t OrderingSequence weitere Bestellungen erwartet, obwohl
Nachricht Complete bereits empfangen wurde. Es kommt zu einer Verklemmung und
die Analyse zum Ergebnis, dass die beiden Fragmente nicht kompatibel sind.
      </p>
      <p>
        Zusammenfassend ist die Kompatibilita¨tsanalyse in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] im Hinblick auf das
beschriebene Muster nachrichtengesteuerter Schleifenabbruch fehleranfa¨llig. Das
Weglassen der Datenabha¨ngigkeiten von bedingten Schleifen und Verzweigungen
bedeutet eine zu starke Abstraktion innerhalb der verwendeten
Petrinetzmodellierung. Um die Zahl der dadurch verursachten Analysefehler zu verringern,
schlagen wir eine Umstrukturierungsmethode fu¨r Gescha¨ftsprozesse der Sprache
WS-BPEL vor. Diese stellen wir im Folgenden anhand des nun eingefu¨hrten
Prozessfragments OrderingSequence vor. Die Methode erlaubt bedingte
Schleifen immer dann so zu transformieren, dass deren Datenabha¨ngigkeiten in
Kontrollabha¨ngigkeiten umgewandelt werden ko¨nnen, wenn deren
Schleifenbedingungen zur Laufzeit nur auf Konstanten beliebigen Typs zugreifen. Das Resultat
dieser Transformation ist ein semantisch a¨quivalenter Prozess, indem die
Datenabha¨ngigkeiten der Schleifen, dass heißt deren Bedingungen, entfernt werden
ko¨nnen. Derart la¨sst sich die Anzahl von nichtdeterministischen Strukturen im
Petrinetzmodell verringern und so diese mo¨gliche Fehlerquelle einschra¨nken.
      </p>
    </sec>
    <sec id="sec-2">
      <title>Prozessrepr¨asentation</title>
      <p>
        Um eine verlustfreie Repra¨sentation von Gescha¨ftsprozessen der Sprache
WSBPEL zu ermo¨glichen, verwenden wir eine Erweiterung von Workflow-Graphen.
Workflow-Graphen [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] werden ha¨ufig zur Analyse von Gescha¨ftsprozessen
genutzt, repra¨sentieren aber nur deren Kontrollfluss. Durch Anreicherung mit
einem weiteren Repra¨sentationsformat, der Concurrent Static Single Assignment
Form (CSSA-Form) [
        <xref ref-type="bibr" rid="ref5 ref7">5, 7</xref>
        ], lassen sich auch die Datenabha¨ngigkeiten modellierter
Prozesse wiedergeben. Wir nutzen daher eine Kombination beider Formate.
      </p>
      <p>In Abbildung 2 ist der so erweiterte Workflow-Graph fu¨r das oben
beschriebene Prozessfragment OrderingSequence dargestellt. Darin modellieren
Knoten die Aktivita¨ten und Kanten verbinden die Knoten gema¨ß dem Kontrollfluss.
Elementare Aktivita¨ten (beispielsweise Reply Confirmation) werden unter
Verwendung eines einzelnen Knotens abgebildet. Sequenzen elementarer Aktivita¨ten
sind dann durch mehrere sukzessive verbundener Knoten repra¨sentiert. Im Fall
der Verzweigung Pick werden spezielle Knoten genutzt, um die Aufspaltung
(P ick) und Vereinigung (M erge) des Kontrollflusses darstellen zu ko¨nnen. Dies
gilt auch fu¨r die enthaltene Schleife While, fu¨r die der Knoten zum Aufspalten
des Kontrollflusses (Branch) die Schleifenbedingung entha¨lt und der Knoten zur
Vereinigung (Header) des Kontrollflusses als Schleifenkopf bezeichnet wird.</p>
      <p>Grundlegende Eigenschaft der CSSA-Form ist, dass Variablen (statisch) nur
einmal definiert werden du¨rfen.1 Zu diesem Zweck werden die Variablen in
OrderingSequence so umbenannt, dass jede Variablendefinition einen eigenen
Namen besitzt (beispielsweise doOrder1, . . . , doOrder4 fu¨r doOrder). Dadurch
verhalten sich alle Variablen wie konstante Werte. Insbesondere sind
Beziehungen zwischen Definition und Gebrauch einer Variablen nun explizit
wiedergegeben. Ein besonderes Vorgehen ist notwendig, falls mehrere Definitionen einer
Variablen auf verschiedenen Pfaden des Kontrollflusses in einem Knoten
zusammentreffen (so in M erge und Header). In diesem Fall werden Φ-Funktionen
eingefu¨gt, um die konkurrierenden Definitionen zusammenzufassen
(beispielsweise doOrder4 = Φ(doOrder2, doOrder3) in M erge). Die Operanden einer
ΦFunktion bilden gerade die Variablendefinitionen und der Funktionswert
entspricht der Definition, die zur Laufzeit tatsa¨chlich ausgefu¨hrt wurde.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Umstrukturierung</title>
      <p>Aufbauend auf dieser Prozessrepra¨sentation lassen sich die Bedingungen von
Verzweigungen und Schleifen analysieren. Die Bedingung der in OrderingSequence
enthaltenen Schleife entspricht genau der Variablen doOrder2. Deren Wert wird
durch eine Φ-Funktion im Schleifenkopf Header definiert. Diese fu¨hrt die
konkurrierenden Definitionen der Variablen vor Ausfu¨hrung der Schleife (doOrder1)
und nach Ausfu¨hrung eines Scheifendurchlaufs (doOrder4) zusammen. Dabei ist
die Definition nach Ausfu¨hrung eines Durchlaufs ebenfalls durch eine Φ-Funktion
angegeben, die die Werte auf den zwei mo¨glichen Pfaden innerhalb der
Schleife zusammenfasst (doOrder2, doOrder3). Da alle Definitionen entweder einer
Konstantenzuweisung oder einer Φ-Funktion entsprechen, ha¨ngt der Wert von
doOrder2 lediglich vom Pfad des Kontrollflusses zur Laufzeit ab: Wird die
Schleife zum ersten Mal ausgefu¨hrt, wird doOrder2 der Wert von doOrder1, also true,
zugewiesen und die Schleifenbedingung daher erfu¨llt. Dasselbe gilt fu¨r jeden
weiteren Durchlauf, solange bis die Zuweisung in Knoten n12 ausgefu¨hrt wird.
Danach wird doOrder2 der Wert von doOrder3, also false, zugewiesen. In der
Folge ist die Bedingung nicht mehr erfu¨llt und die Schleife wird abgebrochen.</p>
      <p>Wir nennen Schleifenbedingungen dieser Art, in denen alle Variablen
ausschließlich durch ineinander geschachtelte Φ-Funktionen und
Konstantenzuweisungen definiert sind, dynamisch konstant. Da der Wert einer solchen Bedingung
nur vom zur Laufzeit ausgefu¨hrten Kontrollflusspfad abha¨ngig ist, ko¨nnen die
Datenabha¨ngigkeiten der Bedingung offenbar auch durch
Kontrollabha¨ngigkeiten repra¨sentiert werden. Durch eine geeignete Transformation der zugeho¨rigen
Schleife lassen sich die entsprechenden Kontrollabha¨ngigkeiten erzeugen.2 Auf
diese Weise wird die Schleifenbedingung redundant und kann innerhalb des
umstrukturierten Prozessfragments entfernt werden.
1 Aufgrund der statischen Betrachtungsweise werden auch Variablendefinitionen
innerhalb von Schleifen als einmalige Definitionen angesehen.
2 Als eine Einschra¨nkung der Umstrukturierungsmethode werden solche Φ-Funktionen
ausgeschlossen, die innerhalb von Schleifenko¨pfen anderer Schleifen definiert werden.
n5</p>
      <p>Vor der eigentlichen Transformation einer Schleife mit dynamisch konstanter
Schleifenbedingung, wird diese in Normalform u¨berfu¨hrt. Die Normalform ist
durch die Auftrennung aller Pfade des Kontrollflusses charakterisiert, auf denen
in einem beliebigen Schleifendurchlauf unterschiedliche Werte fu¨r die Variablen
der Schleifenbedingung definiert werden. Diese U¨berfu¨hrung ist fu¨r die Schleife
des Prozessfragments OrderingSequence in Abbildung 3 dargestellt. Die
Variable der dort vorhandenen Bedingung (doOrder2) kann, wie oben beschrieben,
fu¨r einen beliebigen Schleifendurchlauf drei verschiedene Werte annehmen. Die
Wahl des Wertes wird dabei durch den zuvor ausgefu¨hrten Kontrollflusspfad
bestimmt. Um nun die Pfade aufzutrennen, muss der Knoten M erge aufgelo¨st
werden, da er zwei der drei mo¨glichen Werte zusammenfu¨hrt (doOrder2 und
doOrder3). Da der unmittelbare Nachfolger dieses Knotens gerade dem
Schleifenkopf Header entspricht, reicht es dazu aus, die Vorga¨ngerknoten n10 und n13
direkt mit dem Kopf zu verbinden und die Operanden der darin enthaltenen
Φ-Funktionen anzupassen (Operand doOrder4 durch doOrder2 und doOrder3
ersetzen). Anschließend kann der Knoten M erge entfernt werden.</p>
      <p>Die Normalform wird dann als Blaupause im folgenden
Transformationsschritt genutzt. In diesem Schritt werden mehrere Instanzen der Blaupause
erzeugt und miteinander verbunden. Wir nennen den Schritt dementsprechend
Schleifeninstanziierung. Jede Instanz repra¨sentiert eine mo¨gliche Belegung der
in der Schleifenbedingung genutzten Variablen mit konstanten Werten. Fu¨r die
Schleife in OrderingSequence werden so zwei Instanzen erzeugt, wie in
Abbildung 4 dargestellt. In der ersten Instanz (Instance 1) wird die Variable doOrder2
durch den Wert true ersetzt, in der zweiten (Instance 2) durch den Wert false.</p>
      <p>Instance 1
...
n10
n4: Branch
?(true())</p>
      <p>True</p>
      <p>False</p>
      <p>Instance 2</p>
      <p>False
n15 :. H.eader
n16: Branch
?(false())</p>
      <p>True
n17
...
n22
...</p>
      <p>n25
n24 : doOrder6 = false()</p>
      <p>Abb. 4. Transformation unter Verwendung von Schleifeninstanzen</p>
      <p>
        Dadurch ist die Schleifenbedingung in beiden Instanzen statisch auswertbar.
In der Folge lassen sich die Bedingung und die unmo¨glichen Kontrollflusspfade
in OrderingSequence entfernen (Kanten (n4, End) und (n16, n17)). Das
Ergebnis dieser Umstrukturierung ist in Abbildung 5 angegeben. Offenbar ist darin
der Abbruch der Schleifenausfu¨hrung, nach Empfang der Nachricht Complete,
explizit durch den Kontrollfluss wiedergegeben. Innerhalb des zugeho¨rigen
Petrinetzmodells [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] kann daher auf die Verwendung nichtdeterministischer Konflikte
verzichtet, und so eine folgende Kompatibilita¨tsanalyse pra¨zisiert werden.
      </p>
    </sec>
    <sec id="sec-4">
      <title>Zusammenfassung</title>
      <p>Der vorliegende Beitrag beschreibt eine bereits vollsta¨ndig entwickelte
Umstrukturierungsmethode fu¨r verteilte Gescha¨ftsprozesse der Sprache WS-BPEL. Die
vorgestellte Methode ist in der Lage die Datenabha¨ngigkeiten einer bestimmten
Art von Schleifen in semantisch a¨quivalente Kontrollabha¨ngigkeiten zu
transformieren. Auf diese Weise ko¨nnen die Prozessmodelle bestehender Analysen
pra¨zisiert und so die Verfa¨lschungen von Analyseergebnissen verringert werden.</p>
      <p>
        Die vorgestellte Umstrukturierungsmethode kann auch auf
Verzweigungsbedingungen angewendet werden und ist nicht auf Bedingungen mit einer einzelnen
Variablen oder auf boolesche Variablen beschra¨nkt. Eine detaillierte Darstellung
der Methode, einschließlich der Beschreibung verwendeter Algorithmen und
einem Korrektheitsbeweis, erfolgt in einem technischen Bericht [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>Literatur</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Aalst</surname>
            ,
            <given-names>W. M. P.</given-names>
          </string-name>
          d. ;
          <string-name>
            <surname>Hirnschall</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Verbeek</surname>
            ,
            <given-names>H. M. W.:</given-names>
          </string-name>
          <article-title>An Alternative Way to Analyze Workflow Graphs</article-title>
          . In: Pidduck,
          <string-name>
            <surname>A. B.</surname>
          </string-name>
          (Hrsg.) ; Woo,
          <string-name>
            <surname>C.</surname>
          </string-name>
          (Hrsg.) ; Mylopoulos,
          <string-name>
            <surname>J.</surname>
          </string-name>
          (Hrsg.) ; Ozsu,
          <string-name>
            <surname>M. T.</surname>
          </string-name>
          (Hrsg.):
          <source>Proceedings of the 14th International Conference on Advanced Information Systems Engineering (CAiSE</source>
          <year>2002</year>
          ), May 27- 31,
          <year>2002</year>
          , Toronto, Canada, Springer-Verlag,
          <year>2002</year>
          (LNCS 2348), S.
          <fpage>535</fpage>
          -
          <lpage>552</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Alves</surname>
            , Alexandre ; Arkin, Assaf ; Askary, Sid ; Barreto, Charlton ; Bloch, Ben ; Curbera, Francisco ; Ford, Mark ; Goland, Yaron ; Gu´ızar, Alejandro ; Kartha, Neelakantan ; Liu,
            <given-names>Canyang K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Khalaf</surname>
          </string-name>
          , Rania ; Ko¨nig, Dieter ; Marin, Mike ; Mehta, Vinkesh ; Thatte, Satish ; Rijn, Danny van ; Yendluri, Prasad ; Yiu,
          <source>Alex: Web Services Business Process Execution Language Version 2.0</source>
          . 2007
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Breugel</surname>
          </string-name>
          , Franck van ; Koshkina,
          <source>Maria: Models and Verification of BPEL</source>
          .
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Heinze</surname>
          </string-name>
          , Thomas S. ; Amme, Wolfram ; Moser,
          <article-title>Simon: Resolving Conditional Branches in WS-BPEL Business Processes / Friedrich-Schiller-</article-title>
          <string-name>
            <surname>Universita¨t Jena</surname>
          </string-name>
          ,
          <source>Fakulta¨t fu¨r Mathematik und Informatik</source>
          .
          <year>2009</year>
          .
          <article-title>- noch nicht erschienen</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Lee</surname>
            , Jaejin ; Midkiff,
            <given-names>Samuel P.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Padua</surname>
            ,
            <given-names>David A.</given-names>
          </string-name>
          :
          <article-title>Concurrent Static Single Assignment Form and Constant Propagation for Explicitly Parallel Programs</article-title>
          . In: Li,
          <string-name>
            <surname>Zhiyuan</surname>
          </string-name>
          (Hrsg.) ; Yew,
          <string-name>
            <surname>Pen-Chung</surname>
          </string-name>
          (
          <year>Hrsg</year>
          .) ; Huang,
          <string-name>
            <surname>Chua-Huang</surname>
          </string-name>
          (
          <year>Hrsg</year>
          .) ; Chatterjee,
          <string-name>
            <surname>Siddharta</surname>
            (Hrsg.) ; Sadayappan,
            <given-names>P.</given-names>
          </string-name>
          (Hrsg.) ; Sehr, David (Hrsg.):
          <source>Proceedings of the 10th International Workshop on Languages and Compilers for Parallel Computing (LCPC '97), August 7-9</source>
          ,
          <year>1997</year>
          , Minneapolis, Minnesota, USA, Springer-Verlag,
          <year>1998</year>
          (LNCS 1366), S.
          <fpage>114</fpage>
          -
          <lpage>130</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Martens</surname>
          </string-name>
          , Axel ; Moser, Simon ; Gerhardt, Achim ; Funk,
          <article-title>Karoline: Analyzing Compatibility of BPEL Processes</article-title>
          .
          <source>In: Proceedings of the Advanced International Conference on Telecommunications and International Conference on Internet and Web Applications and Services (AICT/ICIW 2006), February 19-25</source>
          ,
          <year>2006</year>
          , Guadeloupe, French Caribbean, IEEE Computer Society Press,
          <year>2006</year>
          ,
          <string-name>
            <surname>S. 147</surname>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Moser</surname>
          </string-name>
          , Simon ; Martens, Axel ; Go¨rlach, Katharina ; Amme, Wolfram ; Godlinski,
          <article-title>Artur: Advanced Verification of Distributed WS-BPEL Business Processes Incorporating CSSA-based Data Flow Analysis</article-title>
          .
          <source>In: Proceedings of the 2007 IEEE International Conference on Services Computing (SCC</source>
          <year>2007</year>
          ),
          <source>July 9-13</source>
          ,
          <year>2007</year>
          , Salt Lake City, Utah, USA, IEEE Computer Society Press,
          <year>2007</year>
          , S.
          <fpage>98</fpage>
          -
          <lpage>105</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Sadiq</surname>
          </string-name>
          , Wasim ; Orlowska, Maria E.:
          <article-title>Analyzing Process Models Using Graph Reduction Techniques</article-title>
          .
          <source>In: Information Systems</source>
          <volume>25</volume>
          (
          <year>2000</year>
          ),
          <year>Nr</year>
          . 2,
          <string-name>
            <surname>S.</surname>
          </string-name>
          117-
          <fpage>134</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>