Flow Operators
Flow operators are compositional structures that transform, select, divide, combine, order, or distribute values moving through flow views.
An operator describes graph structure and declared interpretation, not a specific framework callback or broker feature. Operators may appear inside a finite process activation, a projection pipeline, a stream processor, an integration flow, or a runtime data path.
Operator Families
- Transform maps one shaped value into another while preserving or explicitly changing meaning.
- Filter selects or projects values under a declared predicate, policy, or shape.
- Enrich combines a carried value with explicit observations or referenced material.
- Split maps one composite input into correlated parts.
- Aggregate or join combines correlated parts under a completeness, window, quorum, or terminal rule.
- Resequence emits admitted values according to a declared ordering space.
- Scatter-gather distributes related requests or work and combines selected replies or results.
- Composed processing connects several operators while preserving the identity and completion rule of the larger flow.
Split, aggregation, and scatter-gather require explicit correlation, cardinality, completion, timeout, duplicate, missing-part, late-part, cancellation, and failure meanings. An aggregator cannot infer completeness merely because no more messages are currently visible. A resequencer cannot wait indefinitely without a gap, expiration, or recovery policy.
Operators that make business decisions belong inside an authorized transition model or process graph, not as hidden adapter callbacks. Pure structural transformation may be lowered into broker rules, stream processors, generated code, workflow nodes, queries, or in-process functions when their semantics and guarantees correspond.
An operator's transformation meaning is distinct from its interaction-control role. The same transform can accept pushed input and push output, fetch input and expose output for downstream fetch, buffer between two active participants, or actively fetch and push as a driver. Those choices affect cadence, buffering, latency, scheduling, backpressure, and recovery without redefining the transform itself, so executable flow views should declare both the operator and its per-port activity where the distinction is operationally significant.
External References
- Gregor Hohpe and Bobby Woolf, Pipes and Filters, Splitter, Aggregator, and Resequencer, Enterprise Integration Patterns, 2003.
- Enterprise Integration Patterns, Message Routing and Transformation patterns.
- Gregor Hohpe, Control Flow—The Other Half of Integration Patterns, 2024.
Related concepts: enterprise integration patterns, flow views, process graphs, transition models, routing models, messages and envelopes, interaction channels, interaction control flow, shape, observation, correlation and conversations, ordering, consistent cuts, compositionality.