Behavior/ObjectFlowPN [ Rules ]

[ Top ] [ Behavior ] [ Rules ]

SUMMARY

Transform a SysML ObjectFlow into a HiLeS Payload. ($Rev: 443 $)

DESCRIPTION

ObjectFlows are tranformed into Payloads which are the HiLeS elements used to represent information flow. Only ObjectFlows that connect CallOperations, i.e. Functional Blocks, to other CallOperations or to CallBehaviors

SEE ALSO

DOMAIN

SPECIFICATION

        relation MergeNodePN
        {
            checkonly domain SysML node:ObjectFlow {
                activity = a:Activity{},
                name = nn,
                source = ns:ActivityNode{},
                target = nt:ActivityNode{},
            }
            enforce domain HiLeS pl:Payload {
                architecture = arch:Architecture{},
                name = nn,
                source = pls,
                target = plt,
                type = PayloadType::Discrete,
            }
            when {
                ActivityPetriNet(a, pn, arch);
                CallOperationAction->allInstances()->exists(co | co.target = ns
                    or co.target = nt or co.result->includes(ns)
                    or co.result->includes(nt) or co.argument.includes(ns)
                    or co.argument->includes(nt))
            }
            where {
                if ns->isTypeOf(InputPin) then
                    InputPinPort(ns, pls);
                else
                    OutputPinPort(ns, pls);
                end
                if nt->isTypeOf(InputPin) then
                    InputPinPort(nt, plt);
                else
                    OutputPinPort(nt, plt);
                end
            }
 *