Link

Mit Links wird der Kontrollfluss von Activities innerhalb einer flow Activity gesteuert. Links werden mit ihrem Namen in der Activity flow deklariert.

<links>?
<link name="ncname">+
</links>

Die Verwendung der Links in den untergeordneten Activities wird durch deren Standard-Elemente (siehe standard-elements) gesteuert. Für jeden Link muss es genau eine Activity geben, die ihn als Source verwendet und genau eine andere Activity, die ihn als Target verwendet.

Bei der Activity auf der Source-Seite des Links wird der Link als ausgehend bezeichnet, bei der Activity auf der Target-Seite wird der Link als eingehend bezeichnet. Ein Link verbindet also gerichtet genau zwei Activities.

Jede Activity mit einem eingehenden Link hat eine (ggf. implizite) Join Condition.

Die Semantik mehrerer Links von den Activities X1, X2, ... zur Activity Y ist wie folgt:

- Wenn Y überhaupt ausgeführt wird, dann nachdem alle X1, X2, ... geendet haben.

- Wenn eine Activity Xi nicht ausgeführt wird (weil z.B. vorher eine Ausnahme auftritt oder sich die Activity in einem Zweig einer Fallunterscheidung befindet, der nicht durchlaufen wird), dann gilt sie als beendet.

- Wenn die Join Condition von Y zu false ausgewertet wird, dann wird Y nicht ausgeführt. Wenn das Attribut suppressJoinFailure (siehe standard-attributes) den Wert no hat, dann wird außerdem noch die bpws:joinFailure Ausnahme ausgelöst.

- Wenn die Join Condition von Y zu true ausgewertet wird, dann wird Y ausgeführt.