Collaboration

Concordia includes a collaboration framework that enables multiple agents to work together and coordinate their actions. Agents within an application may form one or more collaboration units, known as agent groups. These agent groups coordinate work among a specialized class of agents, known as collaborator agents. Concordia provides base classes for collaborator agents and agent groups (i.e., CollaboratorAgent and AgentGroupImpl, respectively). Agent groups are implemented as distributed objects which export a simple interface to collaborator agents, which, in turn, hold remote references to agent groups.

New Collaboration API in V1.1

The V1.1 release of Concordia includes a new collaboration API. The changes are relatively minor, but may require some small modifications to source code. The new API is described in this chapter. The changes are listed below for those familiar with the old API:

  1. The CollaboratorAgent class has been moved to the COM.meitca.concordia package (the same package as its base class Agent) to enable stronger class protection. This requires at most a 1 line code change to any code using this class.
  2. Collaboration is implemented via CollaboratorAgent's collaborate() method (which wraps the Agent Group's collaborate() method). CollaboratorAgent's makeAgentResult() method has been deprecated to encourage the use of the new API. This requires at most a 2 line change to collaborating code.
  3. AgentGroupImpl is no longer abstract and implements an empty analyzeResults() method. This change facilitiates group-oriented events, which are discussed in the distributed events chapter and requires no changes to collaborating code.

Collaboration Mechanism and Policy

Collaboration consists of two pieces: a generic collaboration mechanism and an application-specific analysis policy. The collaboration mechanism is implemented by the CollaboratatorAgent's collaborate method, whereas the application-specific policy is provided by the Agent Group's analyzeResults method. This will be discussed in detail in the following subsections.