<!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>Guided Control Flow Unfolding for Workflow Graphs Using Value Range Information</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>
        <contrib contrib-type="author">
          <string-name>Kai Gebhardt</string-name>
          <email>Kai.Gebhardt@uni-jena.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Friedrich Schiller University of Jena</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>IBM Software Laboratory B ̈oblingen</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>In our previous work, we have introduced a technique to unfold the control flow in workflow graphs based upon static information about constant data values. Using this technique allowed us to safely transform certain kinds of conditional into unconditional control flow, and thus to support a usually data-unaware verification of business processes by more accurate process models. In this paper, a generalisation of this technique is discussed which can be employed in combination with arbitrary information about data values. This way, we show how statically derived value range information is beneficial for unfolding and therefore eliminating conditional control flow in a wider range of cases.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Verification of business processes today is often done using a Petri-net-based
process model in which data aspects are being neglected. Prominent examples
are the verification of soundness [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], and the verification of its counterpart
controllability [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] in case of distributed business processes. The advantage of these
data-unaware approaches lies in the feasible and often efficient analysis that is
possible when process data is not considered. However, while such a verification
is supposed to provide correct results in most cases, in certain circumstances,
false-positive as well as false-negative verification results may occur [
        <xref ref-type="bibr" rid="ref10 ref4">4, 10</xref>
        ].
      </p>
      <p>
        Given that properties like soundness or controllability relate to control flow,
this kind of wrong verification results is mainly due to an imprecise modelling
of business processes’ control flow. Reasoned by the ommitance of data aspects
within the Petri-net-based process model, conditional control flow is therein
overapproximated by nondeterminism, resulting in an abstraction too coarse. In [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
we advocated the use of static analysis and a process restructuring technique
to safely transform certain types of a process’s conditional control flow into
unconditional control flow, before translating the process into its Petri net model.
Consequently, over-approximating the such resolved conditional control flow can
be avoided, which yields a more precise process model and thus verification.
      </p>
      <p>
        The restructuring technique presented in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is based on the observation, that
a branching or loop condition can be statically evaluated if therein referenced
variables are assigned constant values only. Since the values of variables, and
therefore the value of the condition, correlate with the control flow path taken
Receive
Exchange
Claim
$total2=Φ($total1, $total4)
      </p>
      <p>else
$balance1= 0</p>
      <p>Acknowledge</p>
      <p>Order
at process runtime, separating and duplicating the control flow for each
combination of assigned values then allows for the evaluation and substitution of the
condition with unconditional control flow in each duplicate. Since the
restructuring technique in its current form is thus restricted to analysis information
about constant values, only conditions with variables defined over constants, or
single messages, can be resolved. In this paper, we discuss a generalisation of the
technique to relax this limitation. For that purpose, the generalised technique is
enabled to be used in combination with an arbitrary static analysis which yields
an abstraction for the values of process data. In particular, we will show how
a value range analysis helps in resolving branching or loop conditions in cases
condition variables are not necessarily restricted to constant values.</p>
      <p>In principle, our restructuring technique can be seen as an unfolding of a
process’s control flow. However, existing unfolding techniques restructure the
entire process with all variables, though, it is only necessary to unfold those parts
and variables related to a branching or loop condition. Further, unfolding at the
value level is infeasible in case of infinite data domain such that an abstraction for
variables’ values is required. Our restructuring approach overcomes these issues
by guiding the control flow unfolding based on static analysis information.</p>
      <p>The remainder of the paper is structured as follows: The next section
introduces the process representation format and analysis used to derive value range
information. In Section 3, we describe our generalised technique for guided
control flow unfolding and its use in combination with value range information.
Related work is discussed in Section 4. Finally, Section 5 concludes the paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Workflow Graphs and Value Range Analysis</title>
      <p>
        In order to allow for the static derivation of information essential to our guided
control flow unfolding approach, a process representation format is required
which is capable of representing both, control as well as data aspects of a
business process. We therefore use an extension of workflow graphs [
        <xref ref-type="bibr" rid="ref4 ref8">4, 8</xref>
        ]. Workflow
Claim
      </p>
      <p>Order
Exit</p>
      <p>Entry</p>
      <p>
        InvalidOrder
Settlement
graphs support a simple and flexible modelling of a process’s control structure.
However, since workflow graphs only map control flow, we augment them with a
notation of process data. Thus, nodes and edges of a workflow graph are
annotated with data manipulation statements in Concurrent Static Single Assignment
(CSSA-)Form [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], which yields an easy to analyse model for a business process’s
control and data flow. Since we here refer to the verification of fully-specified,
i.e., executable, business processes, processes can be translated into their process
representation through extended workflow graphs in an automated fashion [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>In Figure 1, an example process is shown in its representation as extended
workflow graph (whose visualisation here closely follows the Business Process
Model and Notation). The depicted process models the action of item exchange.
A customer therein first specifies the item for exchange by sending message
Claim. Afterwards, the customer is allowed to order exchange items via message
Order, where each is acknowledged by message Acknowledgement, as long as
the total value of orders does not exceed the value of the item for exchange.
Otherwise, the last order is rejected, indicated via message InvalidOrder. In
case the total value of ordered items eventually equals the value of the item for
exchange, the claim is settled and message Settlement is sent to the customer.</p>
      <p>For its realisation, the process is based on a loop whose execution is
conditioned. In the Petri-net-based process model, as shown in Figure 2, the loop
is mapped to the nondeterministic choice of transitions Entry and Exit, such
that the loop condition is not precisely represented. In consequence, verifying
the process using this Petri net model yields erroneous results for properties like
controllability, e.g., the process is verified to be non-controllable although it is.</p>
      <p>In contrast, the extended workflow graph explicitly models the loop
condition: Loop execution is controlled by an integer variable $total2, representing
the difference of the value of the item for exchange and the total value of all
already ordered exchange items. Accordingly, if the value of the variable is greater
than zero, the loop is executed, and otherwise exited. Therefore, the value of
$total2 is initially set to the value of the item for exchange (message part
$claim1.value), and afterwards updated for each loop iteration with the
difference of its current value and the value of an accepted exchange item (message
part $order1.value). As can be seen, all variables are statically only defined
once, as is indicated by the variables’ subscripts. This is the main characteristic
of CSSA-Form and vitally supports analysis since variables then coincide with
their definition statements. Although, special handling is required if multiple
variable definitions have to be joined at a single node of the extended workflow
graph. In these cases, statements with so-called Φ-functions are used to merge
the confluent definitions into a single value, as is done for the definitions of
variables $total1 and $total4 by statement $total2 = Φ($total1,$total4).</p>
      <p>To further improve analysis, the implications of branching and loop
conditions are annotated in terms of assertion statements. For instance, since the loop
in the example process is only executed if the value of variable $total2 exceeds
zero, we know that the variable must be a positive integer within the body of the
loop. Therefore, uses of $total2 in the loop body are substituted with a reference
to a new variable which is defined by $total3 = assert($total2,$total2 &gt; 0),
indicating that $total3 equals $total2 and has a value greater than zero.</p>
      <p>
        Based on the representation of business processes through extended workflow
graphs, various static analysis become available. In particular, the use of
CSSAForm facilitates the transfer of analysis techniques from the area of compiler
optimisation, like, e.g., constant propagation, global value numbering [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], or
value range analysis. Especially the latter analysis provides an abstraction for
the values of process data which benefits a guided control flow unfolding.
      </p>
      <p>
        Value range analysis is a textbook data flow analysis technique which can be
used to derive an interval for each integer or floating-point variable and point of
a program, such that the variable is guaranteed to take a value in the interval
at the given program point. In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], we have implemented such an analysis for
extended workflow graphs and show how it can be used to derive value range
information for processes of a small subset of the WS-BPEL language.
      </p>
      <p>
        An application of the analysis to the example process of Figure 1 yields the
value range information shown in Table 1. Note that, therein, each variable is
assigned a single interval which is valid at each point of the process, due to the
static single definition of variables in CSSA-Form. Further, the analysis defined
in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is able to exploit data type definitions in business processes for deriving
more precise value range information. In case of the example process, the derived
intervals for $claim1.value and $order1.value therefore only comprise positive
integers since the corresponding message types are set to xsd:positiveInteger.
// let eW F G be an extended workflow graph and let loop denote a loop therein
inf = analyse(eW F G); // inf : V ariables → AnalysisInf ormation
normalise loop in eW F G and derive instance pattern as is explained in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ];
while (∃ guard ∈ eW F G such that guard is an instance guard) do
assertion = ∅; // assertion: V ariables → AnalysisInf ormation
let values be the assignment of condition variables valid at guard;
foreach single assignment (variablecondition ← variable) in values do
      </p>
      <p>
        assertion = assertion ∪ {variablecondition 7→ inf(variable)};
end for;
if (evaluate(guard, assertion) == true) then
let instance be the loop instance for assertion;
if (instance * eW F G) then eW F G = eW F G ∪ instance;
end if;
replace guard with a control flow edge to instance;
else replace guard with a control flow edge to the exit node of loop;
end if;
end while;
We now describe how the derived analysis information is used to guide control
flow unfolding in such a way that conditional control flow can be effectively
resolved. In our previous work [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], we only considered branching or loop conditions
whose condition variables could be analysed to be only defined by constant
values. As a result, it was always possible to resolve conditions using our technique
since knowing the constant value for each condition variable allows for inferring
the value of the condition. This may not hold true if arbitrary analysis
information is used instead. For instance, it is not possible to infer the value of condition
x &gt; 10 if, e.g., an interval (0, +∞] has been derived for x. However, using a
conservative criteria we are able to check beforehand whether the derived analysis
information is sufficient to completely resolve a branching or loop condition.
      </p>
      <p>
        In principle, unfolding a loop or branching so that conditional control flow is
transformed into unconditional control flow is done using two steps. First, the
loop or branching is converted into a normal form [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], which is characterised
by the separation of all static paths of the control flow, ending in the
respective loop header or branching node, that convey distinct values for condition
variables. To this end, nodes with Φ-functions merging alternative definitions of
condition variables are resolved by duplicating these nodes and their successors
for each definition. Thus, after normalisation, definitions of condition variables
only converge at the loop header or branching node. Second, in case of a
conditional branching, splitting the branching node for each of its predecessors allows
for evaluating the branching condition based on derived analysis information.
According to the result, the branching is replaced with unconditional control
flow leading either to the then- or to the else-part of the branching. For loops,
a further step is needed to also separate the remaining paths of the control flow
$balance12= assert($balance11, $balance11&gt; 0)
$total16= $balance12
$total13= assert($total12, $total12&gt; 0)
$balance11= $total13− $order11.value
which define distinct values for condition variables, in particular, the dynamic
paths coalesced in the loop header node. For that purpose, a loop is divided
into duplicates of its loop body, i.e., loop instances, where the execution of each
instance is guarded by a copy of the loop condition, i.e., an instance guard. An
instance thereby represents a loop iteration for a certain assertion for the values
of condition variables. In our previous work [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], assertions constrained condition
variables to constant values or messages. However, for a generalised unfolding,
we now basically allow arbitrary assertions about variables’ values. Eventually,
in an iterative procedure, all instance guards are evaluated based on the
derived analysis information and, like is done in case of a branching, replaced with
unconditional control flow leading either to an instance or to the loop exit node.
      </p>
      <p>
        In Figure 3, a consolidated view of unfolding a loop is given in terms of an
algorithm. Therein, having derived static analysis information for a process’s
variables using function analyse, the loop is first converted into its normal form
as explained in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Afterwards, instance guards are iteratively processed by
creating an assertion assertion for the values of condition variables valid at
an instance guard guard based on the derived analysis information inf . This
assertion is then used to evaluate the guard with function evaluate and to replace
it with unconditional control flow according to the result of the evaluation.
      </p>
      <p>
        Note that, in the algorithm, the use of analysis information is parameterised
using functions analyse and evaluate. Thus, it is possible to instantiate this
general algorithm for exploiting information provided by an arbitrary static analysis
by merely declaring implementations for functions analyse and evaluate, with
respect to the analysis. In case of our running example, function analyse denotes
the value range analysis as described in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Function evaluate realises the
evaluation of condition expressions based on information derived by function analyse
and can be implemented using the semantic transfer functions listed in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>Claim</p>
      <p>Order</p>
      <p>InvalidOrder
Settlement</p>
      <p>An application of the algorithm to the loop contained in the example process
of Figure 1 allows us to exploit the value range information given in Table 1
for unfolding the loop such that the loop condition is finally resolved. The thus
unfolded workflow graph is shown in Figure 4. As can be seen, it was only
necessary to create a single instance for assertion $total12 ∈ (0, +∞] while
unfolding, where variable $total2 has therein been renamed to $total12.</p>
      <p>
        In Figure 5, the unfolded workflow graph is mapped to a Petri net based on
the Petri net semantics for workflow graphs stated in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In so doing, process
data, i.e., data annotations in the extended workflow graph, can be discarded
without loosing precision in representing the loop’s control flow since the loop
condition is now properly modelled by unconditional control flow. Verifying the
thus refined Petri net model with respect to controllability gives then the correct
verification result for the example process, i.e., the process is controllable.
      </p>
      <p>
        In general, our technique provides in this way a heuristics for improving
verification in that the more conditional control flow is resolved, the more precise
is the Petri-net-based process model and therefore the verification. Furthermore,
if termination can be shown, e.g., using termination analysis [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], the verification
result is guaranteed to be safe with respect to properties like controllability.
4
      </p>
    </sec>
    <sec id="sec-3">
      <title>Related Work</title>
      <p>
        Improving business process verification based on Petri nets by means of
incorporating data aspects is an ongoing research topic. In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], a termination analysis is
introduced for WS-BPEL processes to help in justifying the fairness assumption.
The use of high-level Petri nets is, e.g., advocated in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] for detecting deadlocks
in acyclic processes. However, the application of high-level nets in case of cyclic
control flow is basically hindered by undecidability, if the domain of process data
is unrestricted. This holds also true if high-level nets are unfolded into low-level
Petri nets, since infinite domains then yield infinite models. In contrast, our
guided unfolding approach is always guaranteed to result in finite models.
      </p>
      <p>
        Control flow restructuring is also utilised by other program analysis and
optimisation methods for improving analysis results [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Although, none targets
the elimination of conditional control flow or value range analysis in particular.
A similar static analysis for the derivation of value ranges to the one used here,
which is also applied to WS-BPEL processes, has already been described in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
In this paper, we presented a generalised version of our process restructuring
technique [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], which allows us to unfold conditional into unconditional control
flow. Compared to our previous work, the generalised technique is enabled to
exploit information derived by arbitrary static analysis, as is exemplified for
value range analysis, and can therefore be effectively applied in a wider range of
cases. Using the technique then helps in compiling more precise process models
for data-unaware Petri-net-based approaches to business process verification.
      </p>
      <p>
        Main issue of future work will be the thorough evaluation of our process
restructuring technique. Therefore, we want to implement the technique for
structured business processes of the WS-BPEL language. As the value range analysis
has already been realised, we currently focus on the implementation of the
restructuring algorithm itself. Building on that, we further plan to employ other
static analysis, i.e., symbolic methods [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], to our guided unfolding approach.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Fahringer</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scholz</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Advanced Symbolic Analysis for Compilers: New Techniques and Algorithms for Symbolic Program Analysis and Optimization</article-title>
          . No. 2628
          <string-name>
            <surname>in</surname>
            <given-names>LNCS</given-names>
          </string-name>
          , Springer (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Gebhardt</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Entwurf und Implementierung einer Wertebereichsanalyse fu¨r WS-BPEL-Prozesse auf Grundlage erweiterter Workflow-Graphen</article-title>
          . Diplomarbeit, Friedrich Schiller University of Jena (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. G¨orlach, K.:
          <article-title>Ein Verfahren zur abstrakten Interpretation von XPath-Ausdru¨cken in WS-BPEL-Prozessen</article-title>
          . Diplomarbeit, Humboldt University of Berlin (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Heinze</surname>
            ,
            <given-names>T.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Amme</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moser</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Process Restructuring in the Presence of Message-Dependent Variables</article-title>
          . In:
          <string-name>
            <surname>Service-Oriented Computing - ICSOC 2010 International</surname>
            <given-names>Workshops</given-names>
          </string-name>
          ,
          <string-name>
            <surname>PAASC</surname>
          </string-name>
          , WESOA, SEE,
          <source>and SOC-LOG</source>
          , San Francisco, CA, USA, December 7-
          <issue>10</issue>
          ,
          <year>2010</year>
          , Revised Selected Papers. pp.
          <fpage>121</fpage>
          -
          <lpage>132</lpage>
          . No. 6568
          <string-name>
            <surname>in</surname>
            <given-names>LNCS</given-names>
          </string-name>
          , Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Padua</surname>
            ,
            <given-names>D.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Midkiff</surname>
            ,
            <given-names>S.P.</given-names>
          </string-name>
          :
          <article-title>Basic Compiler Algorithms for Parallel Programs</article-title>
          .
          <source>ACM SIGPLAN Notices</source>
          <volume>34</volume>
          (
          <issue>8</issue>
          ),
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Lohmann</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Massuthe</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weinberg</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Analyzing interacting WSBPEL processes using flexible model generation</article-title>
          .
          <source>Data &amp; Knowledge Engineering</source>
          <volume>64</volume>
          (
          <issue>1</issue>
          ),
          <fpage>38</fpage>
          -
          <lpage>54</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Steffen</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Property-Oriented Expansion</surname>
          </string-name>
          . In: Static Analysis,
          <source>Third International Symposium, SAS'96</source>
          ,
          <string-name>
            <surname>Aachen</surname>
          </string-name>
          , Germany,
          <source>September 24-26</source>
          ,
          <year>1996</year>
          , Proceedings. pp.
          <fpage>22</fpage>
          -
          <lpage>41</lpage>
          . No. 1145
          <string-name>
            <surname>in</surname>
            <given-names>LNCS</given-names>
          </string-name>
          , Springer (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>van der Aalst</surname>
            ,
            <given-names>W.M.P.</given-names>
          </string-name>
          ,
          <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>
          .
          <source>In: Advanced Information Systems Engineering</source>
          , 14th International Conference, CAiSE
          <year>2002</year>
          , Toronto, Canada, May
          <volume>27</volume>
          -31,
          <year>2002</year>
          , Proceedings. pp.
          <fpage>535</fpage>
          -
          <lpage>552</lpage>
          . No. 2348
          <string-name>
            <surname>in</surname>
            <given-names>LNCS</given-names>
          </string-name>
          , Springer (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Partner Synthesis for Data-Dependent Services</article-title>
          .
          <source>In: Services and their Composition</source>
          ,
          <source>4th Central-European Workshop on Services and their Composition</source>
          ,
          <source>ZEUS</source>
          <year>2012</year>
          , Bamberg,
          <source>February 23-24</source>
          <year>2012</year>
          ,
          <article-title>On-Site Proceedings</article-title>
          . pp.
          <fpage>17</fpage>
          -
          <lpage>24</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Weißbach</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zimmermann</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Termination analysis of business process workflows</article-title>
          .
          <source>In: Proceedings of the 5th International Workshop on Enhanced Web Service Technologies, WEWST</source>
          <year>2010</year>
          ,
          <string-name>
            <given-names>Ayia</given-names>
            <surname>Napa</surname>
          </string-name>
          , Cyprus, December 1,
          <year>2010</year>
          . pp.
          <fpage>18</fpage>
          -
          <lpage>25</lpage>
          . ACM Press (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>