Re: [mdt-ocl.dev] OCL recursive operation [message #661428] |
Thu, 24 March 2011 15:56 |
Adolfo Sanchez-Barbudo Herrera Messages: 260 Registered: July 2009 |
Senior Member |
|
|
Steffen,
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
input parameter)
self->closure(outgoing.targetRef)
On the other hand, shouldn't be the result of your operation a set of
FlowNodes ?
P.S: closure operator will formally become specified in the OMG OCL 2.3
Best Regards,
Adolfo.
El 24/03/2011 15:24, Steffen Heublein escribió:
> Hello,
>
> 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.
>
> Regards,
> Steffen
> _______________________________________________
> mdt-ocl.dev mailing list
> mdt-ocl.dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/mdt-ocl.dev
>
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.02273 seconds