Wodel applied to BPEL. [BPEL Ecore]

Identifier mutation.

Replaces a variable identifier by 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 mutation.

Changes the createInstance attribute from an inbound message activity to no [aci]:

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

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

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

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

    retype one Sequence as Flow

Changes the isolated attribute of a scope to no [ais]:

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

Non-concurrent activity mutation.

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 by a repeatUntil activity [awr1]:

    retype one While as RepeatUntil

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

    retype one RepeatUntil as While

Removes the joinCondition attribute from an activity [ajc]:

    modify one Activity with {unset(suppressJoinFailure)}

Exchanges the order of two child activities in a sequence activity [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 mutation.

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

Replaces the fault thrown 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

Here you can download all these examples of Wodel applied to BPEL.
BPEL samples .zip
BPEL samples .tar.gz

Acknowledgements

This work has been funded by the Spanish Ministry of Science (RTI2018-095255-B-I00, project "MASSIVE") and the R&D programme of Madrid (P2018/TCS-4314, project "FORTE").