<!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>FaCETa: Backward and Forward Recovery for Execution of Transactional Composite WS?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Rafael Angarita</string-name>
          <email>rangarita@ldc.usb.ve</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yudith Cardinale</string-name>
          <email>yudith@ldc.usb.ve</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marta Rukoz</string-name>
          <email>marta.rukoz@lamsade.dauphine.fr</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Departamento de Computacio ́n, Universidad Simo ́n Bol ́ıvar</institution>
          ,
          <addr-line>Caracas, Venezuela 1080</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>LAMSADE, Universit ́e Paris Dauphine Universit ́e Paris Ouest Nanterre La D ́efense Paris</institution>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <fpage>89</fpage>
      <lpage>103</lpage>
      <abstract>
        <p>In distributed software contexts, Web Services (WSs) that provide transactional properties are useful to guarantee reliable Transactional Composite WSs (TCWSs) execution and to ensure the whole system consistent state even in presence of failures. Fails during the execution of a TCWS can be repaired by forward or backward recovery processes, according to the component WSs transactional properties. In this paper, we present the architecture and an implementation of a framework, called FaCETa, for efficient, fault tolerant, and correct distributed execution of TCWSs. FaCETa relies on WSs replacement, on a compensation protocol, and on unrolling processes of Colored Petri-Nets to support fails. We implemented FaCETa in a Message Passing Interface (MPI) cluster of PCs in order to analyze and compare the behavior of the recovery techniques and the intrusiveness of the framework.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Large computing infrastructures, like Internet increase the capacity to share
information and services across organizations. For this purpose, Web Services
(WSs) have gained popularity in both research and commercial sectors. Semantic
WS technology [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] aims to provide for rich semantic specifications of WSs
through several specification languages such as OWL for Services (OWL-S), the
Web Services Modeling Ontology (WSMO), WSDL-S, and Semantic Annotations
for WSDL and XML Schema (SAWSDL) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. That technology supports WS
composition and execution allowing a user request be satisfied by a Composite
WS, in which several WSs and/or Composite WSs work together to respond
the user query.
      </p>
      <p>
        WS Composition and the related execution issues have been extensively
treated in the literature by guaranteeing user QoS requirements and fault
tolerant execution [
        <xref ref-type="bibr" rid="ref11 ref16 ref18 ref21 ref7">7, 11, 16, 18, 21</xref>
        ]. WSs that provide transactional properties
are useful to guarantee reliable Transactional Composite WSs (TCWSs)
execution, in order to ensure that the whole system remains in a consistent state
even in presence of failures. TCWS becomes a key mechanism to cope with
challenges of open-world software. Indeed, TCWS have to adapt to the open,
dynamically changing environment, and unpredictable conditions of distributed
applications, where remote services may be affected by failures and availability
of resources [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
      </p>
      <p>
        Generally, the control flow and the order of WSs execution is represented
with a structure, such as workflows, graphs, or Petri-Nets [
        <xref ref-type="bibr" rid="ref14 ref3 ref6 ref7">3, 6, 7, 14</xref>
        ]. The actual
execution of such TCWS, carried out by an Executer, could be deployed with
centralized or distributed control. The Executer is in charge of (i) invoking
actually WSs for their execution, (ii) controlling the execution flow, according to
data flow structure representing the TCWS, and (iii) applying recovery actions
in case of failures in order to ensure the whole system consistence; fails during
the execution of a TCWS can be repaired by forward or backward recovery
processes, according to the component WSs transactional properties.
      </p>
      <p>
        In previous works [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ] we formalized a fault tolerant execution control
mechanism based on Colored-Petri Nets (CPN), which represent the TCWS and
the compensation process. In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] unrolling algorithms of CPNs to control the
execution and backward recovery were presented. This work was extended in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
to consider forward recovery based on WS replacement; formal definitions for
WSs substitution process, in case of failures, were presented. In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], we also
proposed an Executer architecture, independent of its implementation, to
execute a TCWS following our proposed fault tolerant execution approach.
      </p>
      <p>In this paper, we present an implementation of our Executer framework,
called FaCETa (FAult tolerant Cws Execution based on Transactional
properties), for efficient, fault tolerant, and correct distributed execution of TCWSs.
We implemented FaCETa in a Message Passing Interface (MPI) cluster of PCs
in order to analyze and compare the efficiency and performance of the recovery
techniques and the intrusiveness of the framework. The results show that
FaCETa efficiently implements fault tolerant strategies for the execution of TCWSs
with small overhead.
2</p>
    </sec>
    <sec id="sec-2">
      <title>TCWS Fault-Tolerant Execution</title>
      <p>
        This Section recall some important issues related to transactional properties
and backward and forward recovery, presented in our previous works [
        <xref ref-type="bibr" rid="ref10 ref7 ref9">7, 9, 10</xref>
        ].
We consider that the Registry, in which all WSs are registered with their
corresponding WSDL and OWLS documents, is modeled as a Colored Petri-Net
(CPN), where WS inputs and outputs are represented by places and WSs, with
their transactional properties, are represented by colored transitions - colors
distinguish WS transactional properties [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The CPN representing the Registry
describes the data flow relation among all WSs.
      </p>
      <p>
        We define a query in terms of functional conditions, expressed as input
and output attributes; QoS constraints, expressed as weights over criteria; and
the required global transactional property as follows. A Query Q is a 4-tuple
(IQ, OQ, WQ, TQ), where:
– IQ is a set of input attributes whose values are provided by the user,
– OQ is a set of output attributes whose values have to be produced by the
system,
– WQ = {(wi, qi) | wi ∈ [
        <xref ref-type="bibr" rid="ref1">0, 1</xref>
        ] with Pi wi = 1 and qi is a QoS criterion}, and
– TQ is the required transactional property; in any case, if the execution is not
successful, nothing is changed on the system and its state is consistent.
A TCWS, which answers and satisfies a Query Q, is modeled as an acyclic
marked CPN, called CPN-T CW SQ, and it is a sub-net of the Registry CPN1. The
Initial Marking of CPN-T CW SQ is dictated by the user inputs. In this way, the
execution control is guided by a unrolling algorithm.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Transactional Properties</title>
        <p>
          The transactional property (T P ) of a WS allows to recover the system in case of
failures during the execution. The most used definition of individual WS
transactional properties (T P (ws)) is as follows [
          <xref ref-type="bibr" rid="ref13 ref8">8, 13</xref>
          ]. Let s be a WS: s is pivot (p), if
once s successfully completes, its effects remains forever and cannot be
semantically undone (compensated), if it fails, it has no effect at all; s is compensatable
(c), if it exists another WS s0, which can semantically undo the execution of s,
even after s successfully completes; s is retriable (r), if s guarantees a
successfully termination after a finite number of invocations; the retriable property
can be combined with properties p and c defining pivot retriable (pr) and
compensatable retriable (cr) WSs.
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] the following T P of TCWS have been derived from the T P of its
component WSs and their execution order(sequential or parallel). Let tcs be a
TCWS: tcs is atomic (a), if once all its component WSs complete successfully,
they cannot be semantically undone, if one component WS does not complete
successfully, all previously successful component WSs have to be compensated;
tcs is compensatable (c), if all its component WSs are compensatable; tcs
is retriable (r), if all its component WSs are retriable; the retriable property
can be combined with properties a and c defining atomic retriable (ar) and
compensatable retriable (cr) TCWSs.
        </p>
        <p>According to these transactional properties, we can establish two possible
recovery techniques in case of failures:
– Backward recovery: it consists in restoring the state (or a semantically closed
state) that the system had at the beginning of the TCWS execution; i.e.,
all the successfully executed WSs, before the fail, must be compensated to
undo their produced effects. All transactional properties (p, a, c, pr, ar, and
cr) allow backward recovery;
– Forward recovery: it consists in repairing the failure to allow the failed WS to
continue its execution. Transactional properties pr, ar, and cr allow forward
recovery.
1 A marked CPN is a CPN having tokens in its places, where tokens represent that the
values of attributes (inputs or outputs) have been provided by the user or produced
by a WS execution.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Backward Recovery Process: unrolling a Colored Petri-Net</title>
        <p>
          The global T P of CPN-T CW SQ ensures that if a component WS, whose T P
does not allow forward recovery fails, then all previous executed WSs can be
compensated by a backward recovery process. For modeling TCWS backward
recovery, we have defined a backward recovery CPN, called BRCPN-T CW SQ,
associated to a CPN-T CW SQ [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. The component WSs of BRCPN-T CW SQ are
the compensation WSs, s0, corresponding to all c and cr WSs in CPN-T CW SQ.
The BRCPN-T CW SQ represents the compensation flow, which is the inverse of
the execution order flow. In BRCPN-T CW SQ a color of a transition s0 represents
the execution state of its associated transition s in the CPN-T CW SQ and is
updated during CPN-T CW SQ execution. Color(s0) ∈ {I=’initial’, R=’running’,
E=’executed’, C=’compesated’, A=’Abandonned’}thus, if color(s0)=’E’ means
that its corresponding WS s is being executed. In [
          <xref ref-type="bibr" rid="ref7 ref9">7, 9</xref>
          ] we propose techniques
to automatically generate both CPNs, CPN-T CW SQ and BRCPN-T CW SQ.
        </p>
        <p>The execution control of a TCWS is guided by a unrolling algorithm of
its corresponding CPN-T CW SQ. A WS is executed if all its inputs have been
provided or produced, i.e., each input place has as many tokens as WSs produce
them or one token if the user provide them. Once a WS is executed, its input
places are unmarked and its output places (if any) are marked.</p>
        <p>The compensation control of a TCWS is also guided by a unrolling algorithm.
When a WS represented by a transition s fails, the unrolling process over
CPNT CW SQ is halted,an Initial Marking on the corresponding BRCPN-T CW SQ
is set (tokens are added to places associated to input places of the faulty WS
s, and to places representing inputs of BRCPN-T CW SQ, i.e., places without
predecessors) and a backward recovery is initiated with the unrolling process over
BRCPN-T CW SQ. We illustrate a backward recovery in Figure 1. The marked
CPN-T CW SQ depicted in Figure 1(a) is the state when ws4 fails, the unrolling of
CPN-T CW SQ is halted, and the Initial Marking on the corresponding
BRCPNT CW SQ is set to start its unrolling process (see Figure 1(b)), after ws03 and
ws05 are executed and ws7 is abandoned before its invocation, a new Marking is
produced (see Figure 1(c)), in which ws01 and ws02 are both ready to be executed
and can be invoked in parallel. Note that only compensatable transitions have
their corresponding compensation transitions in BRCPN-T CW SQ.
2.3</p>
      </sec>
      <sec id="sec-2-3">
        <title>Forward Recovery Process: Execution with WS Substitution</title>
        <p>
          During the execution of TCWSs, if a failure occurs in an advanced execution
point, a backward recovery may incur in high wasted resources. On the other
hand, it is hard to provide a retriable TCWS, in which all its components
are retriable to guaranty forward recovery. We proposed an approach based
on WS substitution in order to try forward recovery [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. TCWS composition
and execution processes deal with service classes [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], which group WSs with the
same semantic functionality, i.e., WSs providing the same operations but having
different WSDL interfaces (input and output attributes), transactional support,
and QoS. When a WS fails, if it is not retriable, instead of backward recovery,
an substitute WS is searched to be executed on behalf of the faulty WS.
        </p>
        <p>In a service class, the functional equivalence is defined according the WSs
input and output attributes. A WS s is a functional substitute, denoted by ≡F ,
to another WS s∗, if s∗ can be invoked with at most the input attributes of s
and s∗ produces at least the same output attributes produced by s. s is an Exact
Functional substitute of s∗, denoted by ≡EF , if they have the same input and
output attributes. Figure 2 illustrates several examples: ws1 ≡F ws2, however
ws2 6≡F ws1, because ws1 does not produce output a5 as ws2 does. ws1 ≡F ws3,
ws3 ≡F ws1, and also ws1 ≡EF ws3.
WS because all transactional properties allow backward recovery. A WS with
T P (s) = pr can be replaced by any other retriable WS (pr,ar,cr), because all
of them allow forward recovery. An atomic WS allows only backward recovery,
then it can be replaced by any other WS which provides backward recovery. A
compensatable WS can be replaced by a WS that also provides compensation
as c and cr WSs. A cr WS can be only replaced by another cr WS because
it is the only one allowing forward and backward recovery. Thus, a WS s is
Transactional substitute of another WS s∗, denoted by ≡T , if s is a Functional
substitute of s∗ and their transactional properties allow the replacement.</p>
        <p>In Figure 2, ws1 ≡T ws2, because ws1 ≡F ws2 and T P (ws2) = cr, then
ws2 can behave as a pr WS; however ws1 6≡T ws3, even ws1 ≡F ws3, because
as T P (ws3) = p, w3 cannot behave as a pr WS. Transactional substitution
definition allows WSs substitution in case of failures.</p>
        <p>When a substitution occurs, the faulty WS s is removed from the
CPNT CW SQ, the new s∗ is added, but we keep the original sequential relation
defined by the input and output attributes of s. In that way, the CPN-T CW SQ
structure, in terms of sequential and parallel WSs, is not changed. For
compensatable WSs, it is necessary Exact Functional Substitute to do not change
the compensation control flow in the respective BRCPN-T CW SQ. In fact, when
a compensatable WS is replaced, the corresponding compensate WS must be
also replaced by the new corresponding one in the BRCPN-T CW SQ. The idea
is to try to finish the TCWS execution with the same properties of the original
one.</p>
      </sec>
      <sec id="sec-2-4">
        <title>2.4 Protocol in case of Failures</title>
        <p>In case of failure of a WS s, depending on the T P (s), the following actions could
be executed:
– if T P (s) is retriable (pr, ar, cr), s is re-invoked until it successfully finish
(forward recovery);
– otherwise, another Transactional substitute WS, s∗, is selected to replace s
and the unrolling algorithm goes on (trying a forward recovery);
– if there not exist any substitute s∗, a backward recovery is needed, i.e., all
executed WSs must be compensated in the inverse order they were executed;
for parallel executed WSs, the order does not matter.</p>
        <p>
          When in a service class there exist several WSs candidates for replacing a
faulty s, it is selected the one with the best quality measure. The quality of a
transition depends on the user query Q and on its QoS values. WSs
Substitution is done such that the substitute WS locally optimize the QoS. If several
transitions have the same value of quality, they can be randomly selected to be
the substitute. A similar quality measure is used in [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] to guide the
composition process. Then, during the execution, we keep the same heuristic to select
substitutes.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>FaCETa: An TCWS Executer with Backward and</title>
    </sec>
    <sec id="sec-4">
      <title>Forward Recovery Support</title>
      <p>In this Section we present the overall architecture of FaCETa, our execution
framework. The execution of a TCWS in FaCETa is managed by an
Execution Engine and a collection of software components called Engine Threads,
organized in a three levels architecture. In the first level the Execution
Engine receives the TCWS (represented by a CPN). It is in charge of initiating,
controlling, and monitoring the execution of the TCWS. To do so, it launches,
in the second layer, an Engine Thread for each WS in TCWS. Each Engine
Thread is responsible for the execution control of its WS. They receive WS
inputs, invoke the respective WS, and forward its results to its peers to continue
the execution flow. In case of failure, all of them participate in the backward or
forward recovery process. Actual WSs are in the third layer. Figure 3 roughly
depicts the overall architecture.</p>
      <p>
        By distributing the responsibility of executing a TCWS across several
Engine Threads, the logical model of our Executer allows distributed execution
of a TCWS and is independent of its implementation, i.e., this model can be
implemented in a distributed memory environment supported by message passing
(see Figure 4(a)) or in a shared memory platform, e.g., supported by a
distributed shared memory [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] or tuplespace [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] systems (see Figure 4(b)). The
idea is to place the Executer in different physical nodes (e.g., a high available
and reliable cluster computing) from those where actual WSs are placed. The
Execution Engine needs to have access to the WSs Registry, which contains
the WSDL and OWLS documents. The knowledge required at runtime by each
Engine Thread (e.g., WS semantic and ontological descriptions, WSs
predecessors and successors,transactional property, and execution control flow) can
be directly extracted from the CPNs in a shared memory implementation or sent
by the Execution Engine in a distributed memory implementation. In this
paper, we have implemented a prototype of FaCETa in a distributed memory
platform using MPI.
      </p>
      <p>Typically, a component of a TCWS can be a simple transactional WS or
TCWS. Thus, we consider that transitions in the CPN, representing the TCWS,
(a) Distributed memory system</p>
      <p>(b) Distributed shared memory system
could be WSs or TCWSs. WSs have its corresponding WSDL and OWLS
documents. TCWSs can be encapsulated into an Executer; in this case the
Execution Engine has its corresponding WSDL and OWLS documents. Hence,
TCWSs may themselves become a WS, making TCWS execution a recursive
operation (see Figure 3).
3.1</p>
      <sec id="sec-4-1">
        <title>Distributed Memory Implementation of FaCETa</title>
        <p>We implemented FaCETa in a MPI Cluster of PCs (i.e., a distributed
memory platform) following a Master/Slaves-SPDM (Single Process Multiple Data)
parallel model. The Execution Engine run in the front-end of the Cluster
waiting user execution requests. To manage multiple client requests, the Execution
Engine is multithreading. The deployment of a TCWS implies several steps:
Initial, WS Invocation, and Final phases. In case of failures, recovery phases
could be executed: Replacing phase, allowing forward recovery or Compensation
phase for backward recovery.</p>
        <p>Whenever the Execution Engine (master) receives a CPN-T CW SQ and
its corresponding BRCPN-T CW SQ, it performs the Initial phase: (i) start, in
different nodes of the cluster, an Engine Thread (peer slaves) responsible for
each transition in CPN-T CW SQ, sending to each one its predecessor and
successor transitions as CPN-T CW SQ indicates (for BRCPN-T CW SQ the relation is
inverse) and the corresponding WSDL and OWLS documents (they describe the
WS in terms of its inputs and outputs, its functional substitute WSs, and who
is the compensation WS, if it is necessary); and (ii) send values of attributes in
IQ to Engine Threads representing WSs who receive them. Then the
master wait for a successfully execution or for a message compensate in case of a
backward recovery is needed.</p>
        <p>Once Engine Threads are started, they receive the part of CPN-T CW SQ
and BRCPN-T CW SQ that each Engine Thread concerns on, sent by the
Execution Engine in the Initial phase. Then, they wait for the input values needed
to invoke its corresponding WS. When an Engine Thread receives all input
values (sent by the master or by other peers) and all its predecessor peers have
finished, it executes the WS Invocation phase, in which the actual WS is
remotely invoked. If the WS finishes successfully, the Engine Thread sends WS
output values to Engine Threads representing its successors and wait for a
finish or compensate message. If the WS fails during the execution, the Engine
Thread tries a forward recovery: if T P (WS) is retriable, the WS is re-invoked
until it successfully finish; otherwise the Engine Thread executes the
Replacing phase: the Engine Thread has to determine the best substitute among the
set of functional substitute WSs; it calculates the quality of all candidates
according their QoS criteria values and the preferences provided in the user query;
the one with the best quality is selected to replace the faulty WS; this phase
can be executed for a maximum number of times (M AXT ries). If replacing is
not possible, the Compensation phase has to be executed: the Engine Thread
responsible of the faulty WS sends the message compensate to Execution
Engine and control tokens to successor peers of the compensation WS, in order to
inform about this failure and start the unrolling process over BRCPN-T CW SQ;
once an Engine Thread receives all control tokens, it invokes the compensation
WS; the unrolling of BRCPN-T CW SQ ensure the invocation of compensation
WSs, s0, in the inverse order in which their corresponding WS, s, were executed.
Note that forward recovery is executed only by the Engine Thread responsible
of the faulty WS, without intervention of the master neither other peers; while
backward recovery need the intervention of all of them.</p>
        <p>If the TCWS was successfully executed, in the Final phase the master
receives all values of attributes of OQ, in which case it broadcasts a finish message
to all slaves to terminate them, and returns the answer to user; otherwise it
receive a compensate message indicating that a backward recovery has to be
executed, as it was explained above, and return an error message to user.
Assumptions: In order to guarantee the correct execution of our algorithms,
the following assumptions are made: (i) the network ensures that all packages are
sent and received correctly; (ii) the Execution Engine and Engine Threads
run in a reliable cluster, they do not fail; (iii) the Engine Threads receive all
WS outputs when its corresponding WS finishes, they cannot receive partial
outputs from its WS; and (iv) the component WSs can suffer silent or stop
failures (WSs do not response because they are not available or a crash occurred
in the platform); we do not consider runtime failures caused by error in inputs
attributes (e.g., bad format or out of valid range) and byzantine faults (the WS
still responds to invocation but in a wrong way).
4</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Results</title>
      <p>We developed a prototype of FaCETa, using Java 6 and MPJ Express 0.38
library to allow the execution in distributed memory environments. We deployed
FaCETa in a cluster of PCs: one node for the Execution Engine and one node
for each Engine Thread needed to execute the TCWS. All PCs have the same
configuration: Intel Pentium 3.4GHz CPU, 1GB RAM, Debian GNU/Linux 6.0,
and Java 6. They are connected through a 100Mbps Ethernet interface.</p>
      <p>
        We generated 10 compensatable TCWSs. All those TCWSs were
automatically generated by a composition process [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], from synthetic datasets
comprised by 800 WSs with 7 replicas each, for a total of 6400 WSs. Each WS is
annotated with a transactional property and a set of QoS parameters, however
for our experiments we only consider the response time as the QoS criteria.
Replicas of WSs have different response times.
      </p>
      <p>The OWLS-API 3.0 was used to parse the WS definitions and to deal with
the OWL classification process.</p>
      <p>The first group of experiments were focussed on a comparative analysis of
the recovery techniques. The second group of experiments evaluates the overhead
incurred by our framework in control operations to perform the execution of a
TCWS and to execute the fault tolerant mechanisms.</p>
      <p>To simulate unreliable environments, we define five different conditions wherein
all WSs have the same probability of failure: 0.2, 0.15, 0.1, 0.005, and 0.001. The
executions on these unreliable environments were done in three scenarios to
support the fails: (i) backward recovery (compensation, red bars in Figure 5), (ii)
forward recovery because all WSs are retriable (retry, light blue bars in
Figure 5), and (iii) forward recovery (substitution, gray bars in Figure 5). On each
scenario all TCWSs were executed 10 times.</p>
      <p>Each TCWS was also executed 10 times in a reliable environment, in which
all WSs have 0 as probability of failures (no-faulty, blue bars in Figure 5) in order
to classify them according their average total execution time in three groups: less
than 1500ms (Figure 5(a)), (ii) between 1500ms and 3500ms (Figure 5(b), and
(more than 3500ms (Figure 5(c)).</p>
      <p>In Figure 5 we plot the average of the total execution time according the
number of failed WSs, in order to compare all recovery techniques. The results
show that when the number of failed WSs is small (i.e., the probability of
failures is less than 20%) backward recovery (compensation) is the worst strategy
because almost all component WSs had been executed and have to be
compensated. Moreover, when the average of the total execution time of TCWSs is
high (greater than 1500ms) forward recovery with retry strategy is better than
forward recovery with substitution due to the substitute normally has a bigger
response time than the faulty WS. By the other side, in cases in which the
probability of failure is greater than 30%, backward recovery whit
compensation behaves better than the other ones (even the final results is not produced)
because there are many faulty services and only few have to be compensated.</p>
      <p>Another issue that can be observed it is the number of outputs received before
the backward recovery mechanism has to be executed. In this experiment, the
average percentage of outputs received before compensation was 37%. All these
outputs are lost or delivered as a set of incomplete (and possibly meaningless and
useless) outputs to the user. This percentage is related to the average percentage
of compensated services, which is 80%, confirming the overhead, the possible
unfulfillment of QoS requirements, and the lost outputs. Definitely, backward
(a) Total Exec. Time
less than 1500ms</p>
      <p>(b) Total Exec. Time
between 1500ms and 3500ms
(c) Total Exec. Time
more than 3500ms
recovery should be executed only in absence of another alternative, at early
stages of execution of a TCWS, or high faulty environments.</p>
      <p>To measure the intrusiveness of FaCETa incurred by control activities, we
execute the same set of experiments describe above, but we set to 0 the response
time of all WSs. Table 4 shows the average overhead under all different scenarios.</p>
      <p>The average overhead of FaCETa only depends on the number of
components WSs in a TCWS. It does not depend on the total response time of
TCWS. It means that while the total response time is higher the overhead %
will decrease. It is clear that the reason behind the backward recovery strategy
overhead (increased by 2%) is the amount of coordination required to start the
compensation and the fact that a new WS execution (the compensation WS
execution) has to be performed for each successfully executed WS, in order to
restore the consistent system state. Additionally, the compensation process has
to be done following the unrolling algorithm of the respective BRCPN-T CW SQ.
We do not consider to wait before the retry of a failed WS execution; therefore,
the increased overhead of retry a WS is almost imperceptible.</p>
      <p>As the service class for each WS is sent by the Execution Engine in the
Initial phase, each Engine Thread has the list of the functional substitute
WSs sorted according their quality, then there is virtually no overhead when
searching for a functional substitute WS to replace a faulty one.</p>
      <p>
        Based on the results presented above, we can conclude that FaCETa
efficiently implements fault tolerant strategies for the execution of TCWSs with
admissible small overhead.
Regarding fault tolerant execution of Composite WSs (CWSs), there exist
centralized and distributed approaches. Generally centralized approaches [
        <xref ref-type="bibr" rid="ref17 ref23 ref25">17, 23,
25</xref>
        ] consider, besides compensation process, alternative WSs in case of failures
or absent WSs, however they extend the classical 2PC protocol, which is time
consuming, and they are not transparent to users and developers.
      </p>
      <p>
        In distributed approaches, the execution process proceeds with
collaboration of several entities. We can distinct two kinds of distributed coordination
approach. In the first one, nodes interact directly based on a peer-to-peer
application architecture and collaborate, in order to execute a CWS with every node
executing a part of it [
        <xref ref-type="bibr" rid="ref16 ref18 ref2 ref28 ref5">2, 5, 16, 18, 28</xref>
        ]. In the second one, they use a shared space
for coordination [
        <xref ref-type="bibr" rid="ref12 ref19 ref4">4, 12, 19</xref>
        ].
      </p>
      <p>
        FENECIA framework [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] provides an approach for managing fault tolerance
and QoS in the specification and execution of CWSs. FENECIA introduces
WSSAGAS, a transaction model based on arbitrary nesting, state, vitality degree,
and compensation concepts to specify fault tolerant CWS as a hierarchy of
recursively nested transactions. To ensure a correct execution order, the execution
control of the resulting CWS is hierarchically delegated to distributed engines
that communicate in a peer-to-peer fashion. A correct execution order is
guaranteed in FENECIA by keeping track of the execution progress of a CWS and
by enforcing forward and backward recovery. To manage failures during the
runtime it allows the execution retrial with alternative candidates. FACTS [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], is
another framework for fault tolerant composition of transactional WSs based on
FENECIA transactional model. It combines exception handling strategies and a
service transfer based termination protocol. When a fault occurs at run-time, it
first employs appropriate exception handling strategies to repair it. If the fault
cannot be fixed, it brings the TCWS back to a consistent termination state
according to the termination protocol (by considering alternative services,
replacements, and compensation). In [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ] a fault handling and recovery process based
on continuation-passing messaging, is presented. Nodes interpret such messages
and conduct the execution of services without consulting a centralized engine.
However, this coordination mechanism implies a tight coupling of services in
terms of spatial and temporal composition. Nodes need to know explicitly which
other nodes they will potentially interact with, and when, to be active at the
same time. In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] all replicas of a WS are simultaneously invoked. Only results
of the first replica finished are accepted, other executions are halted or ignored.
As our work, in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] a rollback workflow is automatically created considering the
service dependencies. Those frameworks support users and developers to
construct CWS based on WS-BPEL technologies, then they are not transparent to
users and developers.
      </p>
      <p>
        Another series of works rely on a shared space to exchange information
between nodes of a decentralized architecture, more specifically called a tuple
space [
        <xref ref-type="bibr" rid="ref12 ref19">12, 19</xref>
        ]. The notion of a tuplespace is a piece of memory shared by all
interacting parties. Using tuplespace for coordination, the execution of a (part
of a) workflow within each node is triggered when tuples, matching the
templates registered by the respective nodes, are present in the tuplespace. Thus,
the templates a component uses to consume tuples, together with the tuples it
produces, represent its coordination logic. In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] approach to replace a
centralized BPEL engine by a set of distributed, loosely coupled, cooperating nodes, is
presented. This approach presents a coordination mechanism where the data is
managed using a tuplespace and the control is driven by asynchronous messages
exchanged between nodes. This message exchange pattern for the control is
derived from a Petri Net model of the workflow. In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], the workflow definition is
transformed into a set of activities, that are distributed by passing tokens in the
Petri Net. In [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] an alternative approach is presented, based on the chemical
analogy. Molecules (data) are floating in a chemical solution, and react
according to reaction rules (program) to produce new molecules (resulting data). The
proposed architecture is composed by nodes communicating through a shared
space containing both control and data flows, called the multiset. Through a
shared multiset, containing the information on both data and control
dependencies needed for coordination, chemical WSs are co-responsible for carrying out
the execution of a workflow in the CWS in which they appear. Their
coordination is decentralized and distributed among individual WS chemical engine
executing a part of the workflow. As this approach, in our approach the
coordination mechanism stores both control and data information independent of its
implementation (distributed or shared memory). However, none of these works
manage failures during the execution.
      </p>
      <p>
        Facing our approach against all these works, we overcome them because the
execution control is distributed and independent of the implementation (it can
be implemented in distributed or shared memory platforms), it efficiently
executes TCWSs by invoking parallel WSs according the execution order specified
by the CPN, and it is totally transparent to users and WS developers, i.e., user
only provides its TCWS, that could be automatically generated by the
composition process [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and no instrumentation/modification/specification is needed for
WSs participating in the TCWS; while most of these works are based on
WSBPEL and/or some control is sitting closely to WSs and have to be managed
by programmers.
      </p>
      <p>
        There exist some recent works related to compensation mechanism of CWSs
based on Petri-Net formalism [
        <xref ref-type="bibr" rid="ref21 ref24 ref26">21, 24, 26</xref>
        ]. The compensation process is
represented by Paired Petri-Nets demanding that all component WSs have to be
compensatable. Our approach considers other transactional properties (e.g., pr,
cr, ar) that also allows forward recovery and the compensation Petri-Net can
model only the part of the TCWS that is compensable. Besides, in those works,
the Petri-Nets are manually generated and need to be verified, while in our
approach they are automatically generated.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions and Future Work</title>
      <p>In this paper we have presented FaCETa, a framework for ensuring correct and
fault tolerant execution order of TCWSs. The execution model is distributed,
can be implemented in distributed or share memory systems, is independent of
implementation of WS providers, and is transparent to users and developers. To
support failures, FaCETa implements forward recovery by replacing the faulty
WS and backward recovery based on a unrolling process over a CPN representing
the compensation flow. We have presented a distributed memory implementation
of FaCETa in order to compare the behavior of both recovery techniques. The
results show that FaCETa efficiently implements fault tolerant strategies for
the execution of TCWSs with small overhead.</p>
      <p>We are currently working on implementing FaCETa in a distributed shared
memory platform in order to test the performance of the framework in centralized
and decentralized platforms. Our intention is to compare both implementations
under different scenarios (different characterizations of CPNs) and measure the
impact of compensation and substitution on QoS.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Valdino</given-names>
            <surname>Azevedo</surname>
          </string-name>
          , Marta Mattoso, and Paulo Pires,
          <article-title>Handling dissimilarities of autonomous and equivalent web services</article-title>
          ,
          <source>Proc. of Caise-WES</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Johannes</given-names>
            <surname>Behl</surname>
          </string-name>
          , Tobias Distler, Florian Heisig, Rudiger Kapitza, and Matthias Schunter,
          <article-title>Providing fault-tolerant execution of web-service-based workflows within clouds</article-title>
          ,
          <source>Proc. of the 2nd Int. Workshop on Cloud Computing Platforms (CloudCP)</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Antonio Brogi, Sara Corfini, and Razvan Popescu,
          <article-title>Semantics-based compositionoriented discovery of web services</article-title>
          ,
          <source>ACM Trans. Internet Techn</source>
          .
          <volume>8</volume>
          (
          <issue>2008</issue>
          ), no.
          <issue>4</issue>
          ,
          <fpage>1</fpage>
          -
          <lpage>39</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Paul</given-names>
            <surname>Buhler</surname>
          </string-name>
          and Jos´e
          <string-name>
            <given-names>M.</given-names>
            <surname>Vidal</surname>
          </string-name>
          ,
          <article-title>Enacting BPEL4WS specified workflows with multiagent systems</article-title>
          ,
          <source>The Workshop on Web Services and Agent-Based Eng.</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Omid</given-names>
            <surname>Bushehrian</surname>
          </string-name>
          , Salman Zare, and
          <article-title>Navid Keihani Rad, A workflow-based failure recovery in web services composition</article-title>
          ,
          <source>Journal of Software Engineering and Applications</source>
          <volume>5</volume>
          (
          <year>2012</year>
          ),
          <fpage>89</fpage>
          -
          <lpage>95</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Yudith</given-names>
            <surname>Cardinale</surname>
          </string-name>
          , Joyce El Haddad, Maude Manouvrier, and Marta Rukoz,
          <article-title>Web service selection for transactional composition</article-title>
          ,
          <source>Elsevier Science-Procedia Computer Science Series (Int. Conf. on Computational Science(ICCS) 1</source>
          (
          <issue>2010</issue>
          ), no.
          <issue>1</issue>
          ,
          <fpage>2689</fpage>
          -
          <lpage>2698</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Yudith</given-names>
            <surname>Cardinale</surname>
          </string-name>
          , Joyce El Haddad, Maude Manouvrier, and
          <article-title>Marta Rukoz, CPNTWS: A colored petri-net approach for transactional-qos driven web service composition</article-title>
          ,
          <source>Int. Journal of Web and Grid Services</source>
          <volume>7</volume>
          (
          <year>2011</year>
          ), no.
          <issue>1</issue>
          ,
          <fpage>91</fpage>
          -
          <lpage>115</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Yudith</given-names>
            <surname>Cardinale</surname>
          </string-name>
          , Joyce El Haddad, Maude Manouvrier, and Marta Rukoz,
          <article-title>Transactional-aware Web Service Composition: A Survey, IGI Global - Advances in Knowledge Management (AKM</article-title>
          ) Book Series,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Yudith</given-names>
            <surname>Cardinale</surname>
          </string-name>
          and
          <string-name>
            <given-names>Marta</given-names>
            <surname>Rukoz</surname>
          </string-name>
          ,
          <article-title>Fault tolerant execution of transactional composite web services: An approach</article-title>
          ,
          <source>Proc. of The Fifth Int. Conf. on Mobile Ubiquitous Computing, Systems, Services qnd Technologies (UBICOMM)</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Yudith</given-names>
            <surname>Cardinale</surname>
          </string-name>
          and
          <string-name>
            <given-names>Marta</given-names>
            <surname>Rukoz</surname>
          </string-name>
          ,
          <article-title>A framework for reliable execution of transactional composite web services</article-title>
          ,
          <source>Proc. of The Int. Conf. on Management of Emergent Digital EcoSystems (MEDES)</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. Joyce El Haddad, Maude Manouvrier, and Marta Rukoz,
          <article-title>TQoS: Transactional and QoS-aware selection algorithm for automatic Web service composition</article-title>
          ,
          <source>IEEE Trans. on Services Computing</source>
          <volume>3</volume>
          (
          <year>2010</year>
          ), no.
          <issue>1</issue>
          ,
          <fpage>73</fpage>
          -
          <lpage>85</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Hector</surname>
            <given-names>Fernandez</given-names>
          </string-name>
          , Thierry Priol, and C´edric Tedeschi,
          <article-title>Decentralized approach for execution of composite web services using the chemical paradigm</article-title>
          ,
          <source>IEEE Int. Conf. on Web Services</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>139</fpage>
          -
          <lpage>146</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Walid</surname>
            <given-names>Gaaloul</given-names>
          </string-name>
          , Sami Bhiri, and Mohsen Rouached,
          <article-title>Event-based design and runtime verification of composite service transactional behavior</article-title>
          ,
          <source>IEEE Trans. on Services Computing</source>
          <volume>3</volume>
          (
          <year>2010</year>
          ), no.
          <issue>1</issue>
          ,
          <fpage>32</fpage>
          -
          <lpage>45</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Chad</surname>
            <given-names>Hogg</given-names>
          </string-name>
          , Ugur Kuter, and
          <string-name>
            <surname>Hector</surname>
          </string-name>
          Munoz-Avila,
          <article-title>Learning Hierarchical Task Networks for Nondeterministic Planning Domains</article-title>
          ,
          <source>The 21st Int. Joint Conf. on Artificial Intelligence (IJCAI-09)</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Farrell</surname>
            J. and
            <given-names>H</given-names>
          </string-name>
          <string-name>
            <surname>Lausen</surname>
          </string-name>
          ,
          <article-title>Semantic annotations for wsdl and xml schema</article-title>
          ,
          <year>January 2007</year>
          ,
          <article-title>W3C Candidate Recommendation</article-title>
          . http://www.w3.org/TR/sawsdl/.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. Neila Ben Lakhal, Takashi Kobayashi, and
          <article-title>Haruo Yokota, FENECIA: failure endurable nested-transaction based execution of compo site Web services with incorporated state analysis</article-title>
          ,
          <source>VLDB Journal 18</source>
          (
          <year>2009</year>
          ), no.
          <issue>1</issue>
          ,
          <fpage>1</fpage>
          -
          <lpage>56</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>An</surname>
            <given-names>Liu</given-names>
          </string-name>
          , Liusheng Huang,
          <string-name>
            <given-names>Qing</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and Mingjun</given-names>
            <surname>Xiao</surname>
          </string-name>
          ,
          <article-title>Fault-tolerant orchestration of transactional web services</article-title>
          ,
          <source>Web Information Systems - WISE</source>
          <year>2006</year>
          (
          <article-title>Karl Aberer, Zhiyong Peng</article-title>
          , Elke Rundensteiner, Y anchun Zhang, and Xuhui Li, eds.),
          <source>Lecture Notes in Computer Science</source>
          , vol.
          <volume>4255</volume>
          , Springer Berlin-Heidelberg,
          <year>2006</year>
          , pp.
          <fpage>90</fpage>
          -
          <lpage>101</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>An</surname>
            <given-names>Liu</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Qing</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <article-title>Liusheng Huang, and Mingjun Xiao, FACTS: A Framework for Fault Tolerant Composition of Transactional Web Services</article-title>
          ,
          <source>IEEE Trans. on Services Computing</source>
          <volume>3</volume>
          (
          <year>2010</year>
          ), no.
          <issue>1</issue>
          ,
          <fpage>46</fpage>
          -
          <lpage>59</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. Daniel Martin,
          <string-name>
            <given-names>Daniel</given-names>
            <surname>Wutke</surname>
          </string-name>
          , and Frank Leymann,
          <article-title>Tuplespace middleware for petri net-based workflow execution</article-title>
          ,
          <source>Int. J. Web Grid Serv</source>
          .
          <volume>6</volume>
          (
          <issue>2010</issue>
          ),
          <fpage>35</fpage>
          -
          <lpage>57</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>S.</given-names>
            <surname>McIlraith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.C.</given-names>
            <surname>Son</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H. H.</given-names>
            <surname>Zeng</surname>
          </string-name>
          , Semantic web services,
          <source>IEEE Intelligent Systems</source>
          <volume>16</volume>
          (
          <year>2001</year>
          ), no.
          <issue>2</issue>
          ,
          <fpage>46</fpage>
          -
          <lpage>53</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Xiaoyong</surname>
            <given-names>Mei</given-names>
          </string-name>
          , Aijun Jiang,
          <string-name>
            <given-names>Shixian</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Changqin</given-names>
            <surname>Huang</surname>
          </string-name>
          , Xiaolin Zheng, and
          <string-name>
            <given-names>Yiyan</given-names>
            <surname>Fan</surname>
          </string-name>
          ,
          <article-title>A compensation paired net-based refinement method for web services composition</article-title>
          ,
          <source>Advances in Information Sciences and Service Sciences</source>
          <volume>3</volume>
          (
          <year>2011</year>
          ),
          <source>no. 4.</source>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22. Jesu´s De Oliveira, Yudith Cardinale,
          <article-title>Jesu´s Federico, Rafael Chaco´n, and David Zaragoza, Efficient distributed shared memory on a single system image operating system</article-title>
          ,
          <source>Latin-American Conf. on High Performance Computing</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>7</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <article-title>Jonghun Park, A high performance backoff protocol for fast execution of composite web services</article-title>
          ,
          <source>Computers and Industrial Engineering</source>
          <volume>51</volume>
          (
          <year>2006</year>
          ),
          <fpage>14</fpage>
          -
          <lpage>25</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Fazle</surname>
            <given-names>Rabbi</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Hao</given-names>
            <surname>Wang</surname>
          </string-name>
          , and
          <string-name>
            <surname>Wendy</surname>
            <given-names>MacCaull</given-names>
          </string-name>
          , Compensable workflow nets,
          <source>Formal Methods and Software Engineering - 12th Int. Conf. on Formal Engineering Methods, LNCS</source>
          , vol.
          <volume>6447</volume>
          ,
          <year>2010</year>
          , pp.
          <fpage>122</fpage>
          -
          <lpage>137</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>M. Schafer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Dolog</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Nejdl</surname>
          </string-name>
          ,
          <article-title>An environment for flexible advanced compensations of web service transactions</article-title>
          ,
          <source>ACM Transactions on the Web</source>
          <volume>2</volume>
          (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Yonglin</surname>
            <given-names>Wang</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yiyan Fan</surname>
          </string-name>
          , and
          <article-title>Aijun Jiang;, A paired-net based compensation mechanism for verifying Web composition transactions</article-title>
          ,
          <source>The 4th Int. Conf. on New Trends in Information Science and Service Science</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Qi</surname>
            <given-names>Yu</given-names>
          </string-name>
          , Xumin Liu, Athman Bouguettaya, and Brahim Medjahed,
          <article-title>Deploying and managing web services: issues, solutions, and directions</article-title>
          ,
          <source>The VLDB Journal</source>
          <volume>17</volume>
          (
          <year>2008</year>
          ),
          <fpage>537</fpage>
          -
          <lpage>572</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Weihai</surname>
            <given-names>Yu</given-names>
          </string-name>
          ,
          <article-title>Fault handling and recovery in decentralized services orchestration</article-title>
          ,
          <source>The 12th Int. Conf. on Information Integration and Web-based Applications #38; Services</source>
          , iiWAS, ACM,
          <year>2010</year>
          , pp.
          <fpage>98</fpage>
          -
          <lpage>105</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>