This page presents Wodel examples for BPEL. The corresponding metamodel is available here: BPEL Ecore.

Identifier mutations

Replaces a variable identifier with another of the same type [isv]:

    v1 = select one Variable where {type <> null}
    v2 = select one Variable where {self <> v1 and type = v1->type and name <> v1.name}
    modify v1 with {copy (name, v2.name)}

Concurrent-activity mutations

Sets the createInstance attribute of an inbound message activity to false [aci]:

    modify one Receive where {createInstance = true} with {createInstance = false}

Replaces a sequential forEach activity with a parallel one [afp]:

    modify one ForEach where {parallel = false} with {parallel = true}

Replaces a sequence activity with a flow activity [asf]:

    retype one Sequence as Flow

Sets the isolated attribute of a scope to false [ais]:

    modify one Scope where {isolated = true} with {isolated = false}

Non-concurrent-activity mutations

Deletes an activity [ael]:

   remove one Activity

Deletes an elseif element from an if activity [aie1]:

   if1 = select one If where {elseIf <> null}
   remove one ElseIf from if1->elseIf

Deletes an else element from an if activity [aie2]:

   if2 = select one If where {else <> null}
   remove one Else from if2->else

Replaces a while activity with a repeatUntil activity [awr1]:

    retype one While as RepeatUntil

Replaces a repeatUntil activity with a while activity [awr2]:

    retype one RepeatUntil as While

Removes the joinCondition attribute from an activity [ajc]:

    modify one Activity with {unset(suppressJoinFailure)}

Swaps the order of two child activities in a sequence [asi]:

    s2 = select one Sequence where {activities <> null}
    a1 = select one Activity in s2->activities
    modify s2 with {activities -= a1, activities += a1}

Removes an onMessage element from a pick activity [apm]:

    p1 = select one Pick where {messages <> null}
    m1 = select one OnMessage in p1->messages
    remove m1

Removes the onAlarm element from a pick activity [apa1]:

    p2 = select one Pick where {alarm <> null}
    a2 = select one OnAlarm in p2->alarm
    remove a2

Removes the onAlarm element from an event handler [apa2]:

    ev1 = select one EventHandler where {alarm <> null}
    a3 = select one OnAlarm in ev1->alarm
    remove a3

Exception and event mutations

Removes a catch element from a fault handler [xmf1]:

    fh1 = select one FaultHandler where {catchAll <> null}
    c1 = select one CatchAll in fh1->catchAll
    remove c1

Removes the catchAll element from a fault handler [xmf2]:

    fh2 = select one FaultHandler where {catch <> null}
    c2 = select one Catch in fh2->catch
    remove c2

Removes a compensation handler definition [xmc]:

    remove one CompensationHandler

Removes a termination handler definition [xmt]:

    remove one TerminationHandler

Changes the fault raised by a throw activity [xtf]:

    t1 = select one Throw where {faultVariable <> null}
    fv1 = select one Variable in t1->faultVariable
    fv2 = select one Variable where {self <> fv1}
    modify t1 with {faultVariable -= fv1, faultVariable += fv2}

Removes a rethrow activity [xer]:

   remove one Rethrow

Removes an onEvent element from an event handler [xee]:

   ev2 = select one EventHandler where {events <> null}
   event = select one OnEvent in ev2->events
   remove event

Download all the Wodel examples for BPEL here.
BPEL samples (ZIP)
BPEL samples (TAR.GZ)

Acknowledgements

This work was funded by the Spanish Ministry of Science through project “MASSIVE” (RTI2018-095255-B-I00), and by the R&D programme of the Madrid Region through project “FORTE” (P2018/TCS-4314).