Slide 28 of 78
Every agent participating in an OAA-based system defines and publishes a set of capabilities declarations, expressed in ICL, describing the services it provides. These solvables establish a high-level interface to the agent, which is used by a facilitator in delegating service requests(or parts of requests) to the agent. Two major types of solvables are distinguished: procedure solvables and data solvables. Intuitively, a procedure solvable performs a test or action, whereas a data solvable provides access to a collection of data. Although, as we shall see, the means of requesting the two types of services is identical, it is worthwhile distinguishing them so that the agent libraries can provide more thorough support.
A request for one of an agent's services normally arrives in the form of an event from the agent's facilitator. This event is then handled by the appropriate handler. The handler may be coded in whatever fashion is most appropriate, depending on the nature of the task, and the availability of task-specific libraries or legacy code, if any. The only hard requirement is that the handler return an appropriate response to the request, expressed in ICL. Depending on the nature of the request, this response could be an indication of success or failure, or a list of solutions (when the request is a data query).