Chapter 2. The MICA Design

Table of Contents

Basic entities
The Blackboard
Agents
MICA Objects
Putting the pieces together

Basic entities

The MICA system consists of several entities; and it is their interplay and coordination that makes it useful. There are really only three basic entities used in the MICA design:

The Blackboard

The blackboard is the core of MICA. An analogy can be made in the case of the blackboard to the old switches that used to be employed to handle telephone calls. The blackboard is similar to a switch with memory -- facts can also be stored on the blackboard. But all interactions between agents flow through the blackboard, in much the same way that all phone calls in a town go through a switch.

Much of the power of the blackboard comes from its ability to allow many agents to share information. It is expected, that in use, there would be one blackboard for each person. All agents and services related to that user would execute through the blackboard. It is also expected that forum blackboards, for groups of individuals, could also be created.

Agents

Agents are entities that wish to access and contribute to the information on the blackboard. As previously mentioed, there are several types of agents, but to the blackboard, they all look the same.

Agents take many shapes and forms. It may be a complex GUI running on a person's desktop computer, or it may be a proxy for an incoming call over the phone system. It may even be a physical device. It may be autonomous, with full reasoning and deliberative capabilities, or it may be a simple "time" agent, which writes "time" objects to the blackboard every ten seconds.

Agents connect to the blackboard. Once connected, clients can do several things:

  • Write something to the blackboard.

  • Read something from the blackboard.

  • Query objects on the blackboard.

  • Register interests for new things written on the blackboard. When a new thing -- of interest to the agent -- is written to the blackboard, the agent is informed of its arrival.

MICA Objects

MICA Objects (or mobs for short) are the basic unit of information in MICA. Mobs are the things that clients actually read and write from the blackboard.

Mobs are similar to objects in an object-oriented programming language. They have the following characteristics:

  • Name: Each mob has a name, which is unique. Mobs are named when they are first written to the blackboard. The name is a string.

  • Type: Each mob has a type. Much like an object-oriented programming language, types can inherit from one another. MICA's type system is discussed in greater detail later.

  • Slots: Slots are similar to fields in object-oriented oriented programming; with one small exception: slots can have a list of values associated with them. Each slot has a name, and a list of values associated with it.

Typically, each type has one or more slots associated with it. Subtypes will typically have the slots of the base type, but will typically have additional slots.

A simple example of a mob is the sharedPadLine type used in the sharedPad demo (which is discussed in Chapter 5). It has four slots for each of the properties of a line: oldX, oldY, newX, newY. In this case, each slot only has a single value. A subtype might be colouredPadLine that in addition to the slots for a sharedPadLine above, also has a slot colour to describe the colour of the line.