Reflexive Sequence - modelint/shlaer-mellor-metamodel GitHub Wiki
A reflexive sequence can be defined if the input to the Iteration Action provides references to instances of a Class with a reflexive, one to one Binary Association on it,
(By 'reflexive' we mean that each side of the association is defined on the same Class).
If the association is 1:1 (unconditional on both sides) such that a cycle is formed with the last instance in the sequence referring back to the first, iteration will stop on the last instance. In other words, an instance will be appear in the iteration exactly once.
Both full and partial ordering is supported by the Iteration Action.
If the association is conditional on one or both sides and there are gaps in the sequence, ordering is guaranteed only among related instances.
For example, let's say we find this broken sequence among the following set of input instances:
a-b-c, r-s, f, g-h-i
(where a comma indicates a gap in the sequence)
We then have a partial ordering and a number of permutations are possible:
r-s, a-b-c, g-h-i, f
a-b-c, g-h-i, f, r-s
f, g-h-i, a-b-c, r-s
...
(Our example above features four instance sequences yielding 4! = 24 permutations).
Identifiers
- Iteration action + Activity + Domain
Attributes
No non-referential attributes