# Presentation: 574682

## Hands on training

***Building Services and creating workflow***

- Scott Oster and Ravi Madduri
**Integrative Cancer Research Workspace Face to Face **
**September 23-24, 2008**

## Agenda

**Building a Service with Introduce**
- Introduce service creation process
- Feature Overview
**Using Taverna to Realize caBIG  Workflows**
- overview
- lessons learned
- next steps

## BUILDING A SERVICE WITH INTRODUCE

## Introduce Vision

**The one stop shop for grid service development**
- Provide a simple, yet powerful, graphical user interface (GUI) to encapsulate complexities of grid service development
- Provide an extensible toolkit with which grid services can be created and modified graphically and programmatically

## An example service development process (0 lines of developer code)

**Create Semantically Harmonized Data Model**

**Grid-ify**

- Generate
- Data Resource

## Pre-grid

**A caCORE SDK 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

## Introduce Summary

**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
- Complete OO 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

## Service Creation

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

## 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
- 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**

## Introduce Service Migration

**Introduce Service Migration Framework enables introduce and it’s extensions to provide upgraders which can run against services built with older versions of introduce and/or it’s extensions and migrate the services forward.  **

## Service Deployment and Undeployment

- Introduce provides support for graphically (and from the command line) deploying and undeploying services

## Introduce Software Updater

**Update support enables introduce to role updates out and move to newer versions of itself and it’s extensions.**

## More Information

**http://cagrid.org**
- Tutorials
- Documentation
- Software Downloads
- Support Mailing Lists
- Much Much More

## USING TAVERNA TO REALIZE CABIG  WORKFLOWS

## Why Taverna?

- A primary goal of caBIG is to integrate a wide variety of distributed, cancer-related data and analytic resources virtualized as grid services.
- Inevitably, users then want to interconnect multiple such services to perform more complex data collection and analysis tasks.
- This type of workflow is data-flow oriented, and the need to support data-flow-oriented workflows was especially relevant when deciding on a solution for orchestrating workflows in caGrid.

**+**

**= ?**

## caGrid/GT4 Plug-in for Taverna

***Processor:***** The concept of *****processor***** in a Taverna workflow is the same as the concept of task in a common workflow. **
***ProcessorTaskWorker:***** Each *****processor***** interface corresponds to a *****ProcessorTaskWorker *****interface. *****ProcessorTaskWorker *****interface defines the action that is to be performed at runtime when workflow execution reaches to that processor.**
***Scavenger:***** In Taverna, a *****scavenger***** is a logic collection of a set of processors. For example, a WSDL scavenger collects all the processors each of which corresponds to an operation defined inside that WSDL. **

## caGrid Plug-in for Taverna (cont’d)

**caGrid Scavenger with semantic/metadata **
**based caGrid service query**

**A sample caGrid workflow**

**Notes:**
The GT4 plug-in support semantic based service query. Users can input multiple (up to three, in current scenario three is enough. We can add more in our program upon request) service query criteria and input the corresponding value.
We can combine multiple criteria. The initial GUI only shows one query criteria, but more can be added by clicking “Add Service Query” button. For example, we can query the caGrid services whose “Research Center” name is “Ohio State University”, with Service Name “DICOMDataService”, and has operation “PullOp”.

## caGrid Plug-in for Taverna (cont’d)

**Execution trace of the sample caGrid workflow**

## Lessons learned

**Taverna has nice features in modeling data-intensive flows over other languages (like BPEL):**
- Data does not need to be explicitly defined.
- Support for implicit iteration.
- A easy-to-extend invocation framework.
- A nice workbench integrates modeling/execution tooling.

## Next Steps

**Integrating WS-RF Resource Pattern in service invocation**
**Integrating Grid Security with Taverna**
**Semantic discovery of services**
**User acceptance.. We are going to try ******
**Remote Execution of the workflows**

## More Resources

**An up-to-date online demo, showing the use of Taverna to model and execute caGrid workflows****: **
- _[https://webmeeting.nih.gov/p44387759/](https://webmeeting.nih.gov/p44387759/)_ (We STRONGLY recommend you to watch this first!!)
**Taverna: **_**[http://taverna.sourceforge.net/](http://taverna.sourceforge.net/)**_** **
**GT4 Plug-in download: **_**[http://www-unix.mcs.anl.gov/~madduri/taverna/](http://www-unix.mcs.anl.gov/~madduri/taverna/)**_** **
**Create CaGrid Workflow Using Taverna **_**[http://www.cagrid.org/wiki/CaGrid:How-To:Create_CaGrid_Workflow_Using_Taverna](http://www.cagrid.org/wiki/CaGrid:How-To:Create_CaGrid_Workflow_Using_Taverna)**_** **

## Discussion

**Q & A**
**Contact us at Wei Tan **_**[wtan@mcs.anl.gov](mailto:wtan@mcs.anl.gov)**_**, Ravi Madduri **_**[madduri@mcs.anl.gov](mailto:madduri@mcs.anl.gov)**_** **