[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[mdt-ocl.dev] OCL recursive operation
|
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