This is the most general way of integrating IndiGolog into OAA
system. It creates an agent that is both reactive and proactive, thus
overcoming one of the major limitations of OAA.
Other agents should be using non-blocking calls when requesting services
of the IndiGolog OAA agent built using this interface. It will be
up to the IndiGolog program of that agent when and how to respond
to these requests.
We suggest that the calls to OAA made from the IndiGolog agent using
this interface are also non-blocking. This will be able to guarantee
a high level of reactivity for the agent and allow for a very responsive
system, very suitable for emerging highly-dynamic multiagent environments.
Here is the diagram describing the high level view of the IndiGolog-OAA
system using this interface:
The IndiGolog OAA agent using this interface will be able to execute
its program (e.g. reasoning/planning) while still keeping track
of incoming OAA events (most notably requests for service coming
from other agents in the system). Support for exogenous events in
IndiGolog allows us to automatically check the OAA library for incoming
events after every action executed by the IndiGolog interpreter.
The process of receiving OAA events is completely transparent for
the programmer: they appear in the program as exogenous actions.
The OAA primitives are accessible from within IndiGolog primitive
actions. The interface lets the OAA library handle all the incoming
messages that are not the calls to the solvables the agent has defined.
Such events may include the ones related to the management of data
solvables defined at this agent (add_Data , remove_Data ,
etc.) and some auxiliary activities such as message tracing.
In order to be able to react to OAA events appropriately, IndiGolog
agent needs to have exogenous actions defined, one for every procedure
solvable that the agent declares. Incoming OAA events that are intercepted
by this interface appear in IndiGolog program as these exogenous
actions. They are inserted into the action history in the order
that they are received. Successor state axioms involving these exogenous
actions should be defined, changing the values of certain fluents
in accordance with the event received.
Note: It is possible to disable the check for incoming OAA
events, if desired. There are two primitive actions (block_get_event
and unblock_get_event ) that an IndiGolog OAA agent
can execute to stop and resume the check.
|