Slide 32 of 78
The agent library supports the creation, maintenance, and use of databases, in the form of data solvables. Creation of a data solvable requires only that it be declared, as explained earlier. Querying a data solvable, as with access to any solvable, is done using oaa_Solve. A data solvable is conceptually the same as a relation in a relational database. The facts associated with each solvable are maintained by the agent library, which transparently handles incoming messages containing queries of data solvables.
It is possible to refine the default behavior of the library in managing these facts, using parameters specified with the solvable's declaration. For example, the parameter single_value is used to indicate that the solvable should only contain a single fact at any given point in time. The parameter unique_values indicates that no duplicate values should be stored. Other parameters can allow data solvables to make use of the concepts of ownership and persistence.
The agent library provides procedures by which agents can update (add, remove, and replace) facts belonging to data solvables, either locally or on other agents, given that they have the required permissions. These procedures may be refined using many of the same parameters that apply to service requests.
The ability to provide data solvables is not limited to client agents; they can also be maintained by a facilitator if desired, at the request of a client of the facilitator, and their maintenance and use shared by all the facilitator's clients. This can be a useful strategy with a relatively stable collection of agents, where the facilitator's workload is predictable.