The NotOriginator exception enforces a concept integral to the WorkArea service;
context may only be modified within the process (client, servlet, bean) that created
the boundary when a WorkArea partition is defined to be unidirectional (that is,
context only propagates downstream and not back up stream). When a work area partition
is defined as unidirectional, if a WorkArea
is begun on a client and populated with a single property:
userWorkArea.begin("client");
userWorkArea.set("key", "value");
only that client may set context into, remove context from, or complete that WorkArea; any
attempt to do so during the processing of a remote call will throw a NotOriginator. Downstream
nodes may override imported context by beginning a nested WorkArea and setting a new property with
the same key; these changes will not be returned to the invoking process at the end of the remote call.
If a WorkArea partition is defined with bidirection propagation, a downstream process may
set context into, or remove context from a WorkArea begun by the originator of the call.
These additions or changes will propagate back to the originator.
However, even in the bidirectional
case, a downstream process still may not complete a WorkArea begun by an upstream process.
Doing so will result in a NotOriginator exception.