|Re: [mdt-ocl.dev] OCL recursive operation [message #661428]
||Thu, 24 March 2011 15:56
| Adolfo Sanchez-Barbudo Herrera
Registered: July 2009
Please move this kind of questions to the public MDT/OCL newsgroup.
This newsgroup is usually for developers purposes
I don't know the BPMN2 metamodel, but have you had a look to the closure
operator ?. It looks like it fits quite well to your needs...
Try the following expression as the body of your operation (without any
On the other hand, shouldn't be the result of your operation a set of
P.S: closure operator will formally become specified in the OMG OCL 2.3
El 24/03/2011 15:24, Steffen Heublein escribió:
> I am trying to set up a recursive operation in OCL so that I get all
> objects that are associated to a certain one (and only those). The
> context is a BPMN2 process graph and I wish to get a collection with all
> connectors (i.e. sequence flows) that are successors of a certain node)
> My constraint looks like this:
> context FlowNode
> def: getOutgoingSF(FN : FlowNode) : Set(SequenceFlow)
> FN.outgoing.targetRef->collect(x|getOutgoingSF(x))->asSet()- >union(FN.outgoing.targetRef)
> FN.outgoing.targetRef gets the direct successor node(s) of the current node.
> As such an operation is not really testable with the OCL Interactive
> Console (my current choice for trying out constraints) I am using
> Dresden OCL (http://www.dresden-ocl.org/index.php/DresdenOCL) to
> evaluate my constraints.
> Alas, the syntax checker complains that he can neither resolve the
> second getOutgoingSF nor (what is strange) the predefined operations
> asSet() and union().
> Now, I am unsure if my recursive code is wrong or if there is some issue
> with Dresden OCL. Or if there is anything else that i did not think of
> (maybe also a simpler way to achieve my goal).
> Any help would be greatly appreciated and already thanks for reading this.
> mdt-ocl.dev mailing list
Powered by FUDForum
. Page generated in 0.01899 seconds