SUCCESSOR and PREDECESSOR operators
You can use the SUCCESSOR and PREDECESSOR operators to retrieve data from subsequent or previous activities in a sequence of activities within a case. Additionally, you can specify filters, offsets (multiple steps), fallback values, or complex nested expressions.
The SUCCESSOR operator steps forward within the ordered list of activities in a case.
The PREDECESSOR operator steps backward within the ordered list of activities in a case.
Basic concepts
Filter expressions
You can specify a filter, if you only want to jump to a next or previous activity that meets certain conditions (for example, a field is above a certain value or a name matches some text).
Activities not matching the filter are skipped.
Steps
By default, the operators jump one activity forward or backward.
You can specify a different number of steps (for example, step = 2) or use LAST to retrieve the final matching activity.
Fallback
If no matching activity can be found (because you reached the end or beginning of the list, or no activity passes the filter), the calculation aborts and returns NULL as the final result.
You can override this by specifying a custom fallback value to prevent the calculation from aborting.
Origin activity
When you call SUCCESSOR or PREDECESSOR, the iteration starts from the origin activity, that is the specific activity in which the calculation expression is being evaluated.
You can reference this origin’s fields using the ORIGIN operator.
ORIGIN("_ARIS.Activity"."field name")
Nested operators
You can embed further calls in the SUCCESSOR or PREDECESSOR operators, for example, SUCCESSOR(SUCCESSOR("_ARIS.Activity"."Activity name")).
In this way, you can combine the operators with other functions such as CONCAT(), CASE WHEN(...), or SUBSTRING(...) to form complex logic. You can also combine them without nesting the successor calls.