Designer guide
Type propagation · KeyBy · MapMessage types and automatic adapters
Edge types are derived from stream contracts. When a multi-input operator needs a compatible input shape, the designer can insert an explicit adapter stream instead of hiding a conversion inside the link.
When to use
Use this page while editing or reviewing the graph in the designer.
Behavior
- The edge label shows the message type produced by its source path. Operators that preserve the value continue the established type; mapping operators can declare a new
valueType. - When connecting a source to Join or MultiJoin, the designer resolves the nearest upstream KeyBy. If no key is available, or the key conflicts with the Join key already established by another side, it inserts a KeyBy stream into that branch.
- An inserted KeyBy adopts the known key type when either the Join or incoming branch already establishes one. Configure its key function and unresolved type before generation.
- When adding an additional Merge source whose message type is unknown or differs from the established Merge type, the designer inserts a Map stream. If the Merge type is known, the new Map output is set to that type.
- Inserted adapters are ordinary visible graph nodes. They have generated configuration, functions where required, metrics, and validation just like nodes created manually.
Automatic adapters properties
Topology changes performed while creating compatible links.
ConditionGraph changeDescription
Join input has no keyInsert KeyByCreates an explicit keyed branch before Join or MultiJoin.
Join key differsInsert KeyByNormalizes the incoming branch to the key type already established by the Join.
Merge source type differsInsert MapCreates an explicit conversion branch before the Merge additional-source slot.
Merge source type is unknownInsert MapCreates a place to define the output type and conversion before merging.
Source already has a consumerInsert SplitAvailable through the Split decision when a second regular consumer is requested.
Configuration example
Orders KeyBy<CustomerID> -> Join <- Profiles KeyBy<CustomerID>