Behavior/FunctionalBlock [ Rules ]

[ Top ] [ Behavior ] [ Rules ]

SUMMARY

Transform a sysml:CallOperationAction into a HiLeS Functional Block. ($Rev: 443 $)

DESCRIPTION

Copies the name and id values from the sysml block. Creates the ports required to connect the block to the Petri Net.

SEE ALSO

DOMAIN

SPECIFICATION

        relation FunctionalBlock
        {
            checkonly domain SysML node:CallOperationAction {
                activity = a:Activity{},
                name = nn,
                id = nid,
                target = nt:Pin{},
                result = nr:Pin{},
                arguments = na:Pin{},
            }
            enforce domain HiLeS b:Functional {
                architecture = arch:Architecture{},
                name = nn,
                id = nid,
                ports = bpts:Port{},
            }
            enforce domain HiLeS pin:inport {
                architecture = arch:Architecture{},
                name = "_PNIn",
                direction = PointDirection::input,
            }
            enforce domain HiLeS pout:outport {
                architecture = arch:Architecture{},
                name = "_PNOut",
                direction = PointDirection::output,
            }
            when {
                ActivityPetriNet(a, pn, arch);
            }
            where {
                if nt->notEmpty() then
                    InputPinPort(nt, tpin)
                    OutputPinPort(nt, tpout)
                    bpts->append(tpin);
                    bpts->append(tpout);
                endif
                InputPinPort(nr, rpin);
                OutputPinPort(nr, rpout);
                InputPinPort(na, apin);
                OutputPinPort(na, apout);
                bpts->append(pin);
                bpts->append(pout);
                bpts->append(tpin);
                bpts->append(tpout
                bpts->append(apin);
                bpts->append(apout);
            }
 *