Interaction

Retains contextual information when transferring control to a Service on a branch.

Interactions allows storing of simple data such as strings or numbers on a key-value basis.

When a Service is invoking another Service attached to one of its branches, it will typically compose an Interaction, and send this along with the invocation. This makes coupling between Services rather loose. Notice I deliberately omitted a your-mom joke here because mothers should be respected at all times.

The concept described above, but illustrated.

Of course the design philosophy would be largely useless if it limited you to connecting two Services, and only allowed Interactions to provide insight in the most recent interaction. Interactions therefore maintain an ancestor-descendant-relationship which allows for insight in not only the most recent key-value assignment, but also the ones that preceeded the current invocation:

Intepositioned service will not cause omission of context.