IS-IC
The IS-IC is the gCube Service in charge of collecting WS-ResourceProperties (including the Resource Profiles from the IS-Registry) published through producers’ components (e.g. IS-Publisher) and to make them available for consumption.
It is designed as an aggregator service[1], able to create Aggregator Sinks that query remote Aggregator Sources (in particular QueryAggregatorSources, as those created by the IS-Publisher) to harvest resource properties. The collected information is stored in an embedded instance of an XML DB (eXist XML database[2]). This allows persisting the information as well as to design the IS-IC query interface by relying on the XML Query query (XQuery[3]).
From an architectural point of view, the service is composed by four WSRF Services (ISICRegistrationService, ISICEntryService, ISICFactoryService and ISICService) which globally implement the Aggregator Sink functionalities (including the ones related to the storage, indexing, and management of resource information). The ISICService also exposes the public interface to query and/or delete the stored information.
Resources and Properties
For each Aggregator Source the IS-IC is requested to aggregate an ISICResource is created and managed (for each Aggregator Source registration a new ServiceGroupEntry is created). Such a WS-Resource extends the AggregatorServiceGroupResource and each time the state of the ServiceGroupEntry changes the underlying Aggregator Framework invokes the relative delivery method.
Functions
The main functions supported by the IS-IC (through the ISICService) are:
- executeXQuery() – which takes as input parameter a message containing the XQuery to be evaluated in the context of the current information aggregated by the service and returns a result set containing an entry for each matching result;
- deleteProfile() – which takes as input parameter a message containing the gCube Resource ID and its type and removes the relative profile from the internal DB. This operation has to be performed by the IS-Registry only;
- deleteResource() – which takes as input parameter a message containing the Resource ID and removes the relative properties document from the internal DB;
- deleteAllRPs() – which erases all the properties stored in the internal DB;
- dispose() – which properly shuts down the service by closing the connections with the internal DB and terminates its running threads;
- initialize() – which starts up the service by opening the appropriate pool of connections with the internal DB.