A valid question is how do all these pieces fit together. Figure 2.1 shows what this looks like.
In the Figure 2.1, the arrows represent conduits for messages. These messages are requests that do things such as request that an object be written to the blackboard, or that an agent be informed that a newly created mob.
The diagram shows two agents connected to one blackboard. Typically, there would be more than two agents connected, but two are the minimum number for any interesting application. Agents and blackboards do not communicate directly, but through a transport layer. This allows implementations of MICA to use different transport layers. For example, some possible transport layers are: local function calls, XML over a TCP/IP connection, some proprietary encrypted protocol, or ASCII messages over Bluetooth. For each one of these, a pair of classes -- an agent transport and a blackboard transport -- need to be developed. Agents talk to the Agent Transport layer through method calls; and likewise for the Blackboard.
The advantage of doing things in this way is that it gives a lot of flexibility in the domain MICA can be applied to; and allows developers to write agents that do not need to be aware of the underlying transport layer.
In order to clarify how requests are passed, consider what happens
when Agent 1 writes a mob to the blackboard, which is of type
Message
. Also assume that Agent 2 has registered
for any mobs whose type is Message
. Agent 1 would
create the mob and call an appropriate method in its agent transport.
The agent transport would deliver it to the blackboard transport (using
whatever transport medium was appropriate). The blackboard transport
would do two things: firstly, it would give a name to the mob; say
Message_0
, and inform Agent 1 -- through Agent
1's transport -- of the new mob's name. Secondly, since Agent 2 was
registered for mobs of type Message
, the
blackboard would send a message to Agent 2's transport, that there was a
new mob called Message_0
with certain slots.
Agent 2's transport would then call a method in Agent 2 to handle the
newly arrived Mob.
Note the following:
Neither Agent 1 nor Agent 2 are explicitly aware of one another.
Many different agents can register for mobs of a given type.
There could be a dozen agents connected to the blackboard, and if
six of them were registered for Message
s,
then all six of them would get it.
The arrows are "two way" arrows. At times the blackboard will initiate communication with an agent, and at other times, it will be the other way around.
Agents can register for mobs of any type, and they will be
informed if mobs of that type or any sub-type are written to the
blackboard. For example, if ShortMessage
was
a subtype of Message
, and someone wrote a mob
of type ShortMessage
to the blackboard, Agent
2 would still be informed.