Service Creation, Advertisement and Discovery. Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February 2010. Agenda. Service Creation with Introduce Service Advertisement Service Discovery. Service Creation: Introduce.
Including caCORE SDK and ISO21090
caGrid Knowledge Center
Introduce is the caGrid Service Creation Toolkit.
It provides a user interface for development and deployment of strongly-typed, secure Grid services. The goals of the project are two-fold.
The service creator is composed by a series of templates using the Java Emitter Templates (JET) component, which is part of the Eclipse Modeling Framework (http://www.eclipse.org/emf/), for generating source code and configuration files, and a skeleton set of directories which is used to generate a Grid service that can be built, registered, and deployed in the Grid environment.
The process by which the source code and configuration generation tools of the Introduce toolkit will analyze the service's current implementation with that of the desired service description. This process will add, remove, and modify any service methods, resource properties, and service settings which have been added, removed, or modified from the service description
The service deployment features of Introduce currently support the following:
Benefits of using Introduce:
caCORE-based Data Service
Data service styles are extensions to Introduce.
Historically, caCORE has supported the following databases:
Last Fall, the Knowledge Center supported Roswell Park in determining the caCORE 4.3 and caGrid 1.3 settings required to create a data service using MSSQL Server 2008.
The configuration has been provided back to the caCORE team for inclusion in future caCORE documentation. It is also documented on the KC WIKI:
The ISO 21090 Healthcare Data Type Standard provides a set of data type definitions for representing and exchanging basic concepts that are commonly encountered in healthcare environments in support of information exchange in the healthcare environment, and specifies a collection of healthcare related data types suitable for use in a number of health-related information environments.
NCI CBIIT ISO 21090 Localization Common Library is a specialized and constrained version for 30 of the ISO 21090 Healthcare Data Types. Localization is the list of approved ISO 21090 data types that will be maintained by CBIIT, along with common implementation artifacts.
Introduce is a service development framework that provides several extension points. These points allow developers to add functionality to Introduce.
Registering with the Index Service
Each Introduce generated grid service provides the infrastructure necessary to enable service advertisement to the Index Service. Service advertisement allows users to find your service on the grid via the Index Service and the caGrid Portal.
Service advertisement occurs periodically while a service is running to allow the Index Service to have an accurate list of active services.
Registration is made possible by with the following artifacts:
Service Advertisement is an asynchronous 2-part registration of a service to the grid Index Service.
Issues with registration:
Issues with Aggregation
All caGrid services are required to publish standard metadata that describes their functionality. This information is aggregated in the Index Service, and can be used to find out information about the currently running services, including their current Endpoint References (EPRs). Building on this information, a Discovery API is provided with caGrid that facilitates the querying of this information toward the aim of discovering service EPRs.
The Discovery Client API supports:
// Create Discovery Client
DiscoveryClientdiscClient = new DiscoveryClient(serviceUrl);
// get all available service URLs
EndpointReferenceType allServices = discClient.getAllServices(true);
//Get all available data service URLs
EndpointReferenceType dataServices = discClient.getAllDataServices();
// Search for “protein” services
EndpointReferenceType searchedServices = discClient.discoverServicesBySearchString(“protein”);
// Search for services by public ID. 2322246 = entrezGeneId
EndpointReferenceType searchedServices = discClient.discoverServicesBySearchString(“2322246”);