2. System Overview

The whole system is written entirely in Java and consists of a mobile agent manager (MAM) that provides the basis for agent-based applications. On top of this MAM, different agents can be created (user-induced), they can migrate, communicate with other agents and change their internal state. Applications like the Information Personae project, can then use these agents in order to reach certain goals.

Thus, the MAM system can be divided into three parts:

  1. The runtime system (MAM),
  2. the agents running on top of the runtime system, and
  3. the application running on top of the agents.
The following picture shows this graphically:

In this section, we will give an overview of each part. The following sections will discuss each part in more detail.

2.1 The Runtime System Layer

The runtime system provides certain levels of transparency to the higher layers. Its main task is to provide the view of a single non-distributed system to the agents on top of it instead of a networked system with all the complexity involved with it. This includes providing simple communication services for the agents without having to specify network locations and migration services to enable agents to migrate "closer" to another agent. Again, the agents do not need to know about the underlying network structure, they only see other agents.

Another transparency type provided by the runtime system is fault-tolerance. Even when nodes of the distributed system fail, the agents should not notice that or be affected by it. This is especially important since the final system should be an open system allowing people (and nodes) to join in arbitrarily. As always when not using proprietary hardware, no assumptions can be made about the reliability of single nodes.

It is worth to note that the MAM is completely independant of the application running on top of it. It is even possible to introduce and start new agent types "on the fly" while the system is running. Therefore, in fact not only one application is running but several ones may be executed at the same time and may even interact with each other to obtain their goals.

2.2 The Agents Layer

The agents layer consists of a set of agents interacting with each other via message exchange. Each agent can migrate to other agents in order to improve the overall runtime. For example, if communication between agents requires a lot of data exchange it may be advantageous to move these agents close to each other. However, if the communication requires only a small amount of data to be exchanged, the migration cost may be higher than just sending the message(s) to the other agent(s). Here the application developer has to decide which strategy is best.

2.3 The Application Layer

Applications running on top of the MAM system normally provide user interaction via special agents (cf. LoginAgent, DisplayAgent). These in turn will activate other agents that start migrating and collecting information in the system.