Service Creation - cagrid.org

computerharpyΛογισμικό & κατασκευή λογ/κού

2 Δεκ 2013 (πριν από 3 χρόνια και 6 μήνες)

80 εμφανίσεις

1

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

2

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

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

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

Architecture


Service Synchronization

6

Architecture
-

Service
Deployer

Service Deployer


The service deployment features of Introduce currently support the
following:


D
eploying 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

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

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

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/Knowledgebase


10

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

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

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

Agenda


Service Creation with Introduce


Service Advertisement


Service Discovery

14

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 URL

15

Service Advertisement
-

2

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




16

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

Agenda


Service Creation with Introduce


Service Advertisement


Service Discovery

18

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

Service Discovery

20

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