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).
