512 DISTRIBUTED OBJECT-BASED SYSTEMS CHAP. 9
many other policies that can be supported. For example, a POA can support transient as well as persistent objects. Likewise, there are different policies with respect to the use of threads. We omit details on these policies, which are further described in( Henning and Vinoski, 1999)
Agents
To facilitate agent-based applications, CORBA adopts a model in which agents from different kinds of systems can cooperate. Instead of specifying its own model of an agent, CORBA prescribes standard interfaces that an agent system should implement. This approach has the potential advantage that different types of agents can be used in a single distributed application. For example, in CORBA it is possible to let a Java applet create a Tcl agent on a D’ Agents platform.( We described the D’ Agents system in Chap. 3.)
In CORBA, agents are always defined with respect to an agent system. An agent system is defined as a platform that allows the creation, execution, transfer, and termination of agents. Each agent system has an associated profile describing exactly what the agent system looks like. For example, there will be a profile for a D’ Agents agent system, prescribing its type(‘‘ D’ Agents’’), the supported language( e. g., Tcl), and the way agents are serialized when moving between systems.
An agent is always located at a particular place in an agent system. A place corresponds to a server where an agent resides. There can be multiple places in an agent system. In other words, CORBA assumes that a single agent system may consist of multiple processes, each hosting one or more agents. This organization has been adopted in order to group several agent hosts into a single administrative domain, and be able to refer to that group as a whole, namely as an agent system.
Agent systems, in turn, can be grouped into a region, where a region represents the administrative domain in which an agent system resides. For example, a university department could have several agent systems, each of a different type. Each agent system could be distributed across multiple hosts, or places, where each host may run several agents. This model is shown in Fig. 9-13.
An agent in CORBA is assumed to be constructed from a collection of classes, or at the very least from a file containing the necessary program text. In either case, it should be possible to name an agent’ s implementation, and pass that name to an agent system to allow the creation or transfer of an agent.
Each agent system in CORBA must implement a number of standard operations. For example, an agent system must offer operations to create or terminate an agent, to receive an agent for execution, to list its current set of agents, to list the places where an agent may reside, and operations to suspend and resume an agent. Note that the implementation of these operations depends entirely on the actual agent system. However, CORBA does require that each agent system adheres to the overall model. This means that if an existing agent system does not