Un flux peut être lié à un échange de deux façons différentes : en étant caractéristique ou en étant participant.
Flux caractéristique
Un flux caractéristique était auparavant la seule relation à un échange qui existait.
Un flux qui caractérise un échange signifie que le moteur, lors de la construction sur le runtime, saura quel échange choisir une fois le flux identifié à partir de la médiation d’une trace. Si un flux caractérise un échange, alors l’existence du flux implique celle de l'échange caractérisé.
Par définition, un flux ne caractérise qu’un seul échange.
Si un échange n’a pas de flux caractéristique, il peut être utile d’utiliser les templates pour l’identifier.
Flux participant
Si un flux ne caractérise pas d'échange, il peut participer à un ou plusieurs autres échanges.
Utilisé principalement par les flux génériques, cette relation indique que le flux peut participer (optionnellement ou non) à un échange, mais sans caractériser ce dernier.
Obligatoire ou optionnel
Qu’il soit caractéristique ou participant, un flux peut être optionnel ou obligatoire. Par exemple, il est possible d’avoir un flux générique participant mais quand même obligatoire. À l’inverse, il est tout à fait possible d’avoir un flux caractéristique qui lui est optionnel.
Par définition, un flux est soit caractéristique d’un échange, soit participant à un ou plusieurs autres.