Document: UML Profile and Interchange Models for EAI
Section: 6.3.10.2 (EAICompoundOperator)
Description:
Section 6.3.10.1 includes a constraint that requires the FCMOperation invoked by an EAIPrimitiveOperator to be an EAIMessageOperation. An EAICompoundOperator is a kind of FCMCommand, which is a kind of FCMFunction, and, therefore, it also has an invoked FCMOperation. But there is not constraint on this operation in Section 6.3.10.2. Further, this operation is important, because it would seem to be the operation whose parameters provide the basis for the terminals of the EAICompoundOperator and, therefore, for the terminals of EAISources and EAISinks in the implementingComposition of the operator.
Recommendation:
Add the following constraints to EAICompoundOperator.
An EAICompoundOperator invokes an EAIMessageOperation.
self.invokes->oclIsKindOf(EAIMessageOperation)
All EAISources in the implementingComposition of an EAICompoundOperator must implement the EAIMessageOperation invoked by the EAICompoundOperator.
self.implementingComposition.nodes->
select(oclIsKindOf(EAISource))->forAll(implements = self.invokes)