Behavior/CallOperationPN [ Rules ]

[ Top ] [ Behavior ] [ Rules ]

SUMMARY

Transfotrm a SysML CallOperationAction into its HiLeS Petri Net representation. ($Rev: 443 $)

DESCRIPTION

This rule creates the asscoaited PN elements required to represent a the CallOperationAction. The CallOperationAction behavior is represented by HiLeS:Functional block. Each hiles block requires these associated petri net elements: 3 places, 2 transtions and 6 arcs.

SEE ALSO

DOMAIN

SPECIFICATION

        relation CallBehaviorPN
        {
            checkonly domain SysML node:CallBehaviorAction {
                activity = a:Activity{},
                name = nn,
                behavior = nb,
            }
            enforce domain HiLeS p1:Place {
                petriNet = pn:PetriNet{},
                name = nn + '_P1',
            }
            enforce domain HiLeS p2:Place {
                petriNet = pn:PetriNet{},
                name = nn + '_P2',
            }
            enforce domain HiLeS p3:Place {
                petriNet = pn:PetriNet{},
                name = nn + '_P3',
            }
            enforce domain HiLeS t1:Transition {
                petriNet = pn:PetriNet{},
                name = nn + '_T1',
            }
            enforce domain HiLeS t2:Transition {
                petriNet = pn:PetriNet{},
                name = nn + '_T2',
            }
            enforce domain HiLeS a1:Arc {
                petriNet = pn:PetriNet{},
                from_node = p1:Node{},
                to_node = t1:Node{},
            }
            enforce domain HiLeS a2:Arc {
                petriNet = pn:PetriNet{},
                from_node = t1:Node{},
                to_node = p2:Node{},
            }
            enforce domain HiLeS a3:Arc {
                petriNet = pn:PetriNet{},
                from_node = t1:Node{},
                to_point = pt1:Port{},
            }
            enforce domain HiLeS a4:Arc {
                petriNet = pn:PetriNet{},
                from_node = p2:Node{},
                to_node = t2:Node{},
            }
            enforce domain HiLeS a5:Arc {
                petriNet = pn:PetriNet{},
                from_point = pt2:Port{},
                to_node = t2:Node{},
            }
            enforce domain HiLeS a6:Arc {
                petriNet = pn:PetriNet{},
                from_node = t2:Node{},
                to_node = p3:Node{},
            }
            when {
                ActivityPetriNet(a, pn, arch);
            }
            where {
                FunctionalBlock(node, fb, pt1, pt2);
                fb.associated = p2;
            }
        }