Join Station
The receive-side of a fork-join pair: holds each parent until all of its children have arrived, then emits the parent onward. A parent and its expected child count are registered by the paired ForkStation at fork time; the join holds state keyed by parent.id and releases the parent when arrivedChildren == expectedChildren regardless of arrival order (parent-first or children-first).
The join has two named input endpoints:
parentInput (index 0): receives the parent (after any concurrent parent-side processing).
childInput (index 1): receives each child as it finishes the child-side path; children are absorbed here (not forwarded).
The join is parented to the network and registered by name; route a downstream node to a specific input with the "joinName#0" (parent) or "joinName#1" (child) target syntax (consistent with NWay/Match).
Properties
True if this node has any onward routing configured (a static next receiver, a station-level sender, or a class route). A non-terminal node for which this is false — and which is not a non-terminal step of a registered route — is a dangling node and fails validation.
The number of parents released (joined).
Time-weighted number of parents currently waiting for their children.
Functions
Returns the receiver endpoint where children will arrive (index 1).
This method should be overridden by subclasses that need actions performed to initialize prior to a replication. It is called once before each replication occurs if the model element wants initialization. It is called after beforeReplication() is called
Returns the input endpoint by index — 0 for parent, 1 for child.
Sets the receiver of joined parents.
The statically known receivers this node may route to. Best-effort: empty when the node has no static link or when its routing is opaque (for example, a probabilistic sender whose destinations are not introspectable).
Returns the receiver endpoint where the parent will eventually arrive (index 0).
Default receive: delegates to parentInput so the join can be referenced as a single registered node when routing a parent to it (the child path is reached via the #1 input or childInput directly).