Word processing software, email, and spreadsheet have revolutionized office activities. There are many other office tasks
that are amenable to automation, such as: scheduling a visit by an external visitor, arranging a meeting, and handling student
application and admission to a university. Many business applications —protocol for filling an order from a customer, for
instance— have similar structure. These seemingly trivial examples embody the computational patterns that are inherent in
a large number of applications, of coordinating tasks at different machines. Each of these applications typically includes
invoking remote objects, calculating with the values obtained, and communicating the results to other applications. This domain
is far less understood than building a function library for spreadsheet applications, because of the inherent concurrency.
We address the task coordination problem by (1) limiting the model of computation to tree structured concurrency, and (2) assuming that there is an environment that supports access to remote objects. The environment consists of distributed objects
and it provides facilities for remote method invocation, persistent storage, and computation using standard function library.
Then the task coordination problem may be viewed as orchestrating a computation by invoking the appropriate methods in proper
sequence. Tree structured concurrency permits only restricted communications among the processes: a process may spawn children
processes and all communications are between parents and their children. Such structured communications, though less powerful
than interactions in process networks, are sufficient to solve many problems of interest, and they avoid many of the problems
associated with general concurrency.