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

These examples implement the high-level change operations for BPMN described in the referenced work.

Inserts an activity [bpmn]:

    s = select one Sequence where {^to not typed EndEv}
    f = select one FlowObject in s->^to
    a = create Activity with {name = 'newActivity'}
    modify s with {^to = a}
    create Sequence with {name = 'newSeq', ^from = a, ^to = f}

Removes an activity [bpmn]:

    a = select one Activity
    s0 = select one Sequence where {^to = a and ^from <> null}
    s1 = select one Sequence where {^from = a and ^to <> null}
    o = select one FlowObject where {self = s1->^to}
    s2 = select one Sequence where {^from = o and ^to <> null}
    modify s0 with {^to = o}
    modify s1 with {^from = o, ^to = a}
    modify s2 with {^from = a}

Moves an activity [bpmn]:

    a = select one Activity
    s0 = select one Sequence where {^to = a and ^from <> null}
    s1 = select one Sequence where {^from = a and ^to <> null}
    o = select one FlowObject where {self = s1->^to}
    s2 = select one Sequence where {^from = o and ^to <> null}
    modify s0 with {^to = o}
    modify s1 with {^from = o, ^to = a}
    modify s2 with {^from = a}

Replaces an activity [bpmn]:

    a0 = select one Activity
    src0 = select one Sequence where {^to = a0}
    tar0 = select one Sequence where {^from = a0}
    a1 = select one Activity where {self <> a0}
    src1 = select one Sequence where {^to = a1}
    tar1 = select one Sequence where {^from = a1}
    modify src0 with {^to = a1}
    modify tar0 with {^from = a1}
    modify src1 with {^to = a0}
    modify tar1 with {^from = a0}

Changes an activity to a different activity type [bpmn]:

    retype one [StartEv, IntermediateEv, EndEv] as [Activity]

Changes a gateway to a different gateway type [bpmn]:

    retype one [AND, OR, XOR] as [AND, OR, XOR]

Download all the Wodel examples for BPMN here.
BPMN samples (ZIP)
BPMN 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).