Requesting Services
oaa_Solve(TaskExpr, ParamList)
Expressions: logic-based (cf. Prolog)
Parameters: provide advice & constraints
- High-level task types: query, action, inform, ...
- Low-level: solution_limit(N), time_limit(T), parallel_ok(TF), priority(P), address(Agt), reply(Mode), block(TF), collect(Mode), ...
oaa_AddData(DataExpr, ParamList)
oaa_AddTrigger(Typ,Cond,Action,Ps)
oaa_Solve((manager(‘John Bear’,M),
phone_number(M,P)), [query(var(P))])
Data & Trigger Management
Notes:
An agent requests services by sending goals to its facilitator. Each goal contains calls to one or more solvables. It is important to understand that calling a solvable does not require that the agent specify (or even know of) a particular agent to handle the call. While it is possible to specify one or more agents to handle a call (and there are situations in which this is desirable), in general it is advantageous to leave this delegation task to the facilitator.
The OAA libraries provide an agent with a single, unified point of entry for requesting services of other agents: the library procedure oaa_Solve. In the style of logic programming, oaa_Solve may be used both to retrieve data and to initiate actions. To put this another way, calling a data solvable looks the same as calling a procedure solvable.