# Presentation: 574661

## caGrid Compatibility Tools:Introduce

**Joel Saltz**
**Shannon Hastings**
**Denise Warzel**
**Scott Oster **
**Stephen Langella**
**David Ervin**
**NIH Natcher Center October 18, 2007**

## Agenda

**caGrid Compatibility Tools Overview**
- EVS
- caDSR
- caCore
- GME
- Introduce
**Introduce Overview**
**Introduce Demonstration**
- Grid Enabling a Silver Level caCore data service.

## Getting Connected: The development process.

**Create Semantically Harmonized Data Model**

**Grid-ify**

**????**
**Generate or Select**
**Data Resource or Analytical API**
**????**

## Getting Connected: An example development process using caCORE to generate a data resource.

**Create Semantically Harmonized Data Model**

**Grid-ify**

- Generate
- Data Resource

## caCORE Principals

**Model Driven (MDA)**
**Agile software development**
- Small Increments
- RUP methodology
**Object Oriented, Open Source**
**Services Oriented Architecture (SOA)**
- Application Programming Interfaces, web services
**Unified Modeling Language (UML)**
- Business process models
- Use Case development
- Domain Modeling describes high level reusable classes of data
**XML Schema – structured syntax for object representation**
**ISO 11179 Metadata Registry – structured syntax for data semantics**
**Controlled vocabularies - concept binding for data semantics**

## caCORE SDK

-  Freely Available as Open Source Download
- Programmers Guide

## caCORE Training

**caCORE Training**

**Notes:**
Explain what caCORE is at this point, unless it has already been defined.

Dianne/Jenny

## Getting Connected: Deploying to caGrid

**Grid-ify**

## Introduce Overview

**caGrid has been an evolutionary development process**
**Initially provided separate tools for analytical and data service development**
**After 0.5 development tools were brought together into an extendable framework called Introduce.**
**At 1.0 Introduce is the core development environment of caGrid and also is the tool that generated all core services, i.e. generates the services of the actual caGrid middleware**
**At 1.1 Introduce is hardened into more production quality tool and is now enhanced to provide easier service development by domain experts.**

## Introduce

**A framework which enables fast and easy creation of Globus and Standards based grid services.**
**Provide easy to use graphical service authoring tool.**
**Hide all “grid-ness” from the developer.**
**Utilize best practice layered grid service architecture.**
**Handle all core service architecture requirements for strongly typed and highly interoperable grid services.**
**Toolkit for creating and manipulating strongly typed grid services**
- Command line and GUI tools for service skeleton generation and automatic service/client code generation
**Utilizes other core grid services and architecture components**
- caDSR and GME for schemas of registered data types
- Security service architecture (Dorian, GridGrouper, CSM)
- Advertisement and Registration configuration and
- 	Index Service for discovery

## Introduce Graphical Development Environment (GDE)

**GUI for creating and manipulating a grid service**
- Provides means of simple creation of service skeleton that a developer can then implement, build, and deploy
- Automatic code generation of complete WSRF compliant grid service which is configured to provide:
- Security
- Advertisement
- Discovery
- Complete UnBoxed Client API
- Provides a set of tools which enable the developer to add/remove/modify/import methods of the service as well create sub-services/resources.
- Automatic code generation of all the required code, Globus grid service code/configuration, service configuration, implementation of the client, and stubbed implementation of the service

## Addressing the Requirements

**Grid Services**
- Introduce uses the Globus Toolkit and Axis for creating, registering, discovering, and invoking these service operations as grid services
- Client uses the operation through a grid service interface and does not need to be aware of any implementation specific details of the grid service

## Service Layers

## Addressing the Requirements (cont)

**Strongly typed interfaces:**
- Introduce enables schema extraction from a GME or any other data model registry service so that the wsdl, beans, and service metadata can be automatically populated and the service will be using strongly typed with publicly accessible data types.
- Data model schema, and any referenced schemas, are extracted and placed in the schema directory of the services build skeleton and imported into the services WSDL.
- types can be used at service build time to automatically generate the objects and create strongly-typed grid service interfaces

- Example from caGrid

## Addressing the Requirements (cont)

**Providing Service Metadata:**
- Leverage Globus’ use of Java Naming and Directory Interface (JNDI) in order to support WSRF.
- Service metadata is provided as resource properties on the base service’s singleton resource.
- These resource properties are defined by xml schema.

## Addressing the Requirements (cont)

**Index Service Registration**
- Leverage Globus MDS in order to configure properties on the base resource of the service to be published to an MDS based Index Service.
- Provide configuration options for registration of static and dynamic service metadata which can then be used at runtime for service discovery.

- Example from caGrid

## Addressing the Requirements (cont)

**Providing Client Side Object Oriented API**
- Globus/Axis build process will automatically generate a client side object oriented API
- Introduce generates a wrapper for this API which matches the service designers interface to make a clean mapping from client to service.
- This wrapper will handle auto boxing/unboxing of the parameters into and out of document literal form.

## Addressing the Requirements (cont)

**Addressing the Requirements (cont)**

**Security:**
- Enable configuration for each service and for each method in a service.
- Support complete GSI security configuration for authentication and support for an authorization plug-in framework.
- Require service security metadata to be available anonymously via the grid service interface (*getServiceSecurityMetadata())* or the grid service’s resource properties.

## Recap Core Service Architecture

- Base service is a GT4 based WSRF capable grid service.
- Utilize compositional inheritance (in lieu of non-standard port type extensions) to enable the service to inherit required features such as providing service security metadata and access to resource properties.
- Utilize JNDI for registration configuration, server side configuration properties, and resources and resource properties.
- Provide client and service side wrappers which implement the service designers interface as opposed to the document literal interface generated by Axis.
- Provide metadata registration to the index service by configuring the Resource to register it’s service groups to a predefined MDS based Index Service.
- ServiceSecurityMetadata and it’s access operation enables programmatic bootstrapping of connection security configuration.

## Demonstration

**A caCORE generated data resource which is not connected to the grid.**

- caBIO

- Grid

## Exposing the Resource:

**We will use the Introduce data service wizard to describe our data resource and generate a grid service.**

- caBIO

- Grid

## Exposing the Resource:

**Introduce will enable the user to browse data model in the caDSR and chose the ones which they are going to be exposing.**

- caBIO

- Grid

## Exposing the Resource:

**Then they will locate the schemas which describe the data models and will provide the wire protocol for transferring data instances.**

- caBIO

- Grid

## Exposing the Resource:

**Lastly the user will have to provide a CQL query processor to enable CQL query to be executed against the data resource. **

- caBIO

- Grid

## Exposing the Resource:

**Introduce will create a grid service which can expose the data resource we described to the grid**

- caBIO

- Grid

## Data now available.

**Data now available.**

**Now that our service is generated we can deploy it so that the resource can be used.**

- caBIO

- Grid

- caBIO
- Grid Service

- GridService

## How will users find me

**How will users find me**

**We need to expose metadata to a registry so that a user/service can locate and use our service**

- caBIO

- Grid

- caBIO
- Grid Service

- GridService

## How will users find me

**How will users find me**

**We will send our metadata to an index service that can be queried by grid users.**

- caBIO

- Grid

- caBIO
- Grid Service

- GridService

## Service Creation Demonstration

**Service Creation Demonstration**

**Service Creation Demonstration:**
**	****create a caBIO grid data service**

## Service Creation

**Populate required variables for service creation**
***Name*** = published service name
***Creation Direction*** = directory to create the skeleton
***Package*** = the java package you wish to use for your service
***Namespace Domain*** = the namespace to be used to define the service interface and types
**Choose Extensions**

## Introduce Service Creation Architecture

**Introduce Service Creation Architecture**

*The Introduce Service Properties are a set if base properties*
*required for creating this service such as desired location to *
*create the service, namespace to use, package name to use, *
*and service name.*

## Created Skeleton Layout

**Created Skeleton Layout**

- = introduce managed

- = globus/axis managed

- = developer implements

## Created Skeleton Layout (cont)

**Created Skeleton Layout (cont)**

## Created Skeleton Layout (cont)

**Created Skeleton Layout (cont)**

## Inside the Introduce created service

**Inside the Introduce created service**

**Services have many moving and configurable parts which support features such as:**
- Advertisement
- Discovery
- Invocation
- Security (Authentication/Authorization)
- Stateful Resources
**The Introduce Toolkit can keep all these features in sync as the developer creates and modifies the grid service**

## Modification

- Add/Remove/Modify
-  Operations
-  Resource properties
-  Service properties
-  Service contexts (services and resources)
-  Service, method, and resource level security settings

## Introduce Service Modification Architecture

**Introduce Service Modification Architecture**

## 
Service Deployment and Invocation Demonstration
Implement client test function
Deploy caBIO grid service
Start up service container
Invoke client to with CQL query

**Service Deployment and Invocation Demonstration**
**Implement client test function**
**Deploy caBIO grid service**
**Start up service container**
**Invoke client to with CQL query**

**Service Deployment and Invocation Demonstration**