Map | Filter | FlatMap | KeyBy | Process | Join | MultiJoin | Delay | CaseOperator functions
Operator contracts invoked by generated Go streams. Implement only the contract selected by the stream type in the designer.
When to use
Use this page while implementing a generated business function or endpoint handler.
Behavior
- Every invocation receives the current stream and input value; runtimes with explicit message contexts also pass the context separately.
- Emission is explicit. Returning from Map, FlatMap, KeyBy, or Process without using an output intentionally produces no downstream value.
- Process has separate normal and error outputs. Throwing or returning a runtime error is not a substitute for intentionally emitting the graph error type.
- Join inputs are already grouped by key and retained by the configured join storage before the user callback runs.
Streams without a user callback
Input, Sink, Merge, Split, FlatMap Iterable, Cycle Link, Error, and individual When branches are primarily graph/runtime nodes. Their behavior is generated from topology and configuration; they do not all require a custom operator implementation.
Output and error semantics
Normal output follows persisted graph links. A Process error output follows the dedicated Error link. A callback can emit more than once unless the selected stream contract or downstream protocol imposes a stricter rule.
Operator contracts
User-facing methods selected by generated stream wiring.
MapFunction[T, R].Map(ctx, stream, value, out)Operator interfaceTransforms one input value and emits the resulting value through the normal output.
FilterFunction[T].Filter(ctx, stream, value) boolOperator interfaceReturns whether the current value should continue to downstream streams.
FlatMapFunction[T, R].FlatMap(ctx, stream, value, out)Operator interfaceEmits zero, one, or many output values for one input value.
KeyByFunction[T, K, V].KeyBy(ctx, stream, value, out)Operator interfaceCreates a key/value pair used by keyed operators and join storage.
ProcessFunction[T, R, E].Process(ctx, stream, value, out, errOut)Operator interfaceRuns general business logic with independent normal and error outputs.
JoinFunction[K, T1, T2, R].Join(ctx, stream, key, left, right, out) boolStateful operatorReceives the current key and the buffered values from the left and right inputs, emits results, and returns the framework completion decision for that key.
MultiJoinFunction[K, T, R].MultiJoin(ctx, stream, key, values, out) boolStateful operatorReceives the current key and one buffered value collection per input, emits results, and returns the framework completion decision for that key.
DelayFunction[T].Duration / DelayErrorTime operatorCalculates how long the value should wait; the paired error method decides what to emit when scheduling the delay fails.
BuildSwitchFunction[T].BuildSwitch(stream, whenItems)Case routingBuilds the runtime selector used by a Case stream to choose one of its typed When branches.
Generated extension pattern
func (f *ValidateOrder) Process(
ctx context.Context, stream runtime.Stream, value *Order,
out runtime.Collect[*Order], errOut runtime.Collect[error],
) {
out.Out(ctx, value)
}