21
1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February 2010

1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Embed Size (px)

Citation preview

Page 1: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

1

Service Creation,

Advertisement and Discovery

Including caCORE SDK and ISO21090

William Stephens

Operations Manager

caGrid Knowledge Center

February 2010

Page 2: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Agenda

• Service Creation with Introduce• Service Advertisement• Service Discovery

2

Page 3: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Service Creation: Introduce

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. •To reduce the development time and knowledge required to implement and stand up Grid Services using the Globus Toolkit (GT). Introduce hides from service developers the complexities of low-level tools and processes for service development and deployment.•To enable greater levels of interoperability in the Grid environment.  To this end, we implement support in Introduce for development of strongly-typed services. A strongly-typed service is one that consumes and produces data types that are well-defined and published in the environment. This enables a developer to create compatible and interoperable Grid services without communicating with other Grid service developers.

3

Page 4: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Architecture – Service Creator

Service Creator

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.

4

Page 5: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Architecture – Service Synchronization

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

5

Page 6: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Architecture – Service Synchronization

6

Page 7: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Architecture - Service Deployer

Service Deployer

The service deployment features of Introduce currently support the following:•Deploying Grid services to a Globus, JBoss or Tomcat container. •Deployment time configuration of Index Service registration settings.•Deployment time configuration of service properties to allows a service deployer to specify configuration settings that apply to a particular deployment of the service. •Deployment time configuration of service metadata to allow a service deployer to specify service metadata, including Hosting Research Center and Point of Contact, that apply to a particular deployment of the service.

7

Page 8: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Benefits of Using Introduce

Benefits of using Introduce:•Provides a user interface that allows developers to rapidly generate grid services.•Builds services using domain models and artifacts generated by caCORE.•Hides the monotonous parts of service development, like WSDL and schema creation to allow the developer to focus on functionality.•Generates services with a common structure and reliance upon standard software required for grid integration.•Generates a client to allow other users to invoke your service on the grid.•Many extension points allow users to create custom “plugins” that add functionality to the base application.

8

Page 9: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Data Service Types

caCORE-based Data Service

•caGrid 1.2

• caCORE 3.1, 3.2

• caCORE 4.0

•caGrid 1.3.*

• caCORE 3.1, 3.2(.1)

• caCORE 4.0, 4.1, 4.2, 4.3, 4.3 with ISO21090 Datatypes

•caGrid 1.4

• caCORE 4.0, 4.1, 4.2, 4.3, 4.3 with ISO21090 Datatypes

caCORE 4.4

•Development of 4.4 data service style in progress.

Data service styles are extensions to Introduce.9

Page 10: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Data Service Data Sources

Historically, caCORE has supported the following databases:•Oracle•MySQL

Adding MSSQL

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:

https://cabig-kc.nci.nih.gov/CaGrid/KC/index.php/Knowledgebase10

Page 11: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

ISO21090 Support

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.

More Information:

https://wiki.nci.nih.gov/display/ISO21090/ISO+21090+Wiki

11

Page 12: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

ISO21090 Support (2)

Introduce Support•Data Services

• caCORE 4.3 with ISO21090 Datatypes extension• JAXB for serialization / deserialization• CQL to HQL translation engine updated for special handling

when generating HQL queries involving the ISO 21090 data types.

•Analytical Services• ISO21090 Datatypes and NCI localizations extension• Implemented as an Introduce Datatype Discovery Panel

Extension• The extension provides a simple way to add the ISO21090

XSDs and jars, and configures the serialization of the types for a grid service.

12

Page 13: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Extending Introduce

Introduce is a service development framework that provides several extension points. These points allow developers to add functionality to Introduce.

Extension Types:•Service Extension:

• Allow developers to create custom service Types• Data services are a type of Service Extension

•Discovery Extension• Allows for developers to find and download schemas and datatypes.• GME schema discovery is a Discovery Extension

•Metadata extension • Allows service creators to standard service information.• Service Metadata is a Metadata extension for caBIG services.

13

Page 14: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Agenda

• Service Creation with Introduce• Service Advertisement• Service Discovery

14

Page 15: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Service Advertisement

Registering with the Index Service

Each Introduce generated grid service contains the functionality necessary to enable service advertisement to the Index Service. While a service is running it will periodically advertise its URL to the Index Service. This allows users to find your service on the grid via the Index Service and the caGrid Portal.

Registration is made possible by with the following artifacts:

•caGrid Advertisement Client

•caGrid Service Metadata:

• etc/serviceMetadata.xml

•Service Domain Model (Data Services)

•deploy.properties:

• Service registration flag

• Index Service URL15

Page 16: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Service Advertisement - 2

Service Advertisement is an asynchronous 2-part registration of a service to the grid Index Service.

16

Page 17: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Service Advertisement Issues

Issues with registration:•The service in question is not actually initialized and running.•The hosting machine's system clock is significantly off.

Issues with Aggregation•The container is not configured with a public IP or externally resolvable domain name.•The service is running behind a firewall.•The service or container is running with untrusted credentials.•The service must be providing Service Metadata and specify that it should be registered to the Index Service.

17

Page 18: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Agenda

• Service Creation with Introduce• Service Advertisement• Service Discovery

18

Page 19: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Service Discovery

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 discover 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 and discovering services.

The Discovery Client API supports:•Obtaining a list of registered services: all services, data services or analytical services•By service name•By service operation name, input or output•By domain model•By concept code, data concept code or operation concept code.

19

Page 20: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Service Discovery

20

Page 21: 1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February

Programmatic Discovery

From: http://cagrid.org/display/knowledgebase/Client+Application+Guide

// Create Discovery Client

DiscoveryClient discClient = 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”);

21