Behavior/GeneralControlFlowPN [ Rules ]
[ Top ] [ Behavior ] [ Rules ]
SUMMARY
Transform a SysML GeneralControlFlow into its HiLeS Petri Net elements. ($Rev: 443 $)
DESCRIPTION
This transformation is for all ControlFlows except the ones leaving a DecisionNode, and the ones leaving/arriving Fork and Join Nodes
SEE ALSO
- ActivityPetriNet
- CallBehaviorPN
- CallOperationPN
- DecisionControlFlowPN
- JoinForkSourceControlFlow
- JoinForkTargetControlFlow
DOMAIN
SPECIFICATION
relation GeneralControlFlow { checkonly domain SysML cf:ControlFlow { activity = a:Activity{}, name = cfn, source = cfs:ActivityNode{}, target = cft:ActivityNode{}, } enforce domain HiLeS t:Transition { PetriNet = pn:PetriNet{}, name = cfn, } enforce domain HiLeS ain:Arc { PetriNet = pn:PetriNet{}, to_node = t, from_node = ainfrom:Node{}, } enforce domain HiLeS aout:Arc { PetriNet = pn:PetriNet{}, from_node = t, to_node = aoutto:Node{}, } when { ActivityPetriNet(a, pn, arch); ( (not cfs->isTypeOf(DecisionNode)) and (not cfs->isTypeOf(JoinNode)) and (not cfs->isTypeOf(ForkNode)) and (not cft->isTypeOf(JoinNode)) and (not cft->isTypeOf(ForkNode)) ) } where { if cfs->isTypeOf(CallBehaviorAction) then CallBehaviorPN(node, p1, p2, ainfrom, t1, t2, a1, a4, a6, a3, a5) else if cfs->isTypeOf(SysML:!CallBehaviorAction) then CallOperationPN(node, p1, p2, ainfrom, t1, t2, a1, a4, a6, a3, a5) else ainfrom ::= cf.source; endif endif if cft->isTypeOf(CallBehaviorAction) then CallBehaviorPN(node, aoutto, p2, p3, t1, t2, a1, a4, a6, a3, a5) else if cft->isTypeOf(CallBehaviorAction) then CallOperationPN(node, aoutto, p2, p3, t1, t2, a1, a4, a6, a3, a5) else aoutto ::= cf.target; endif endif } *