Mechanisms for enforcing a message exchange pattern. When two computing
systems communicate in order to accomplish a particular task, they engage
in a particular message exchange pattern. Given certain progress through
the message exchange pattern, the message exchange pattern may restrict
which computing system may send what kind of messages. Each computing
system tracks progress through the message exchange pattern by, for
example, using a state transition tree in which each node represents a
state of the message exchange pattern, and in which transmission or
receipt of certain messages may cause state transitions. A computing
system then only transmits messages if appropriate given the current
tracked progress through the message exchange pattern.