-
Key: SYSML16-356
-
Status: closed
-
Source: Airbus Group ( Mr. Yves Bernard)
-
Summary:
Rate constraint#2 states:
The rate of a parameter shall be less than or equal to rates on edges that come into or go out from pins and parameters nodes corresponding to the parameter
This is ambiguous since SysML::Rate::rate is typed by UML::InstanceSpecification for which "less than or equal to" is not defined
-
Reported: SysML 1.5 — Thu, 14 Sep 2017 08:49 GMT
-
Disposition: Duplicate or Merged — SysML 1.6
-
Disposition Summary:
Merged with
SYSML16-274To be fixed as part of
SYSML16-311by assuming than the specification of Rate can be given a OCL::Real value:The complete OCL statement for this constraint shall be:
self.base_Parameter->notEmpty() implies ( let nodes: Set(UML::ObjectNode) = if self.base_Parameter.owner.oclIsKindOf(UML::Behavior) then let pOwner: UML::Behavior = self.base_Parameter.owner.oclAsType(UML::Behavior) in UML::CallBehaviorAction.allInstances()->select(a | a.behavior = pOwner)->collect(a | a.argument->at(pOwner.ownedParameter->indexOf(self.base_Parameter))) ->union(UML::StartObjectBehaviorAction.allInstances()->select(a | a.behavior() = pOwner)->collect(a | a.argument->at(pOwner.ownedParameter->indexOf(self.base_Parameter)))) ->union(UML::ActivityParameterNode.allInstances()->select(n | n.parameter = self.base_Parameter)) ->asSet() else if self.base_Parameter.owner.oclIsKindOf(UML::Operation) then let pOwner: UML::Operation = self.base_Parameter.owner.oclAsType(UML::Operation) in UML::CallOperationAction.allInstances()->select(a | a.operation = pOwner)->collect(a | a.argument->at(pOwner.ownedParameter->indexOf(self.base_Parameter)))->asSet() else Set(UML::ObjectNode){} endif endif in nodes.incoming->flatten()->union(nodes.outgoing->flatten()) ->forAll(e | let eRate: Rate = Rate.allInstances()->any(r | r.base_ActivityEdge=e) in (not eRate.oclIsUndefined() and self.rate. specification.realValue() <= eRate.rate. specification.realValue())) )
-
Updated: Mon, 1 Apr 2019 18:17 GMT