Behavior/OutputPinPort [ Rules ]

[ Top ] [ Behavior ] [ Rules ]

SUMMARY

Transform a SysML InputPin into a HiLeS Port. ($Rev: 443 $)

DESCRIPTION

InputPins that belong to CallOperationActions must be transformed to Ports which will be added to the Strucural Block that contains it.

SEE ALSO

DOMAIN

SPECIFICATION

        relation OutputPinPort
        {
            checkonly domain SysML pout:OutputPin {
                action = a:CallOperationAction{},
                name = nn,
                id = nid,
                type = nt:Type{}},
            }
            enforce domain HiLeS p:Port {
                block = b:Structural,
                name = nn,
                id = pid,
                direction = PointDirection::output,
            }
            when {
                StrcuturalBlockBehavior(a.behavior.getParentBlock(), b, pin, pout);
                CallOperationAction->allInstances()->exists(co |
                        (co.target->notEmpty() and co.target = pout)
                        or co.result->includes(pout) or co.argument->includes(pout)))
                    or CallBehaviorAction->allInstances()->exists(co |
                        co.result->includes(pout) or co.argument->includes(pout))
            }
            where {
                if nt->notEmpty() then
                    pid = nt.id;
                else
                    pid = nid;
                endif
            }
 *