Toward an OpenSocial Life Science Gateway Wenjun Wu, Michael E. Papka, Rick Stevens.

17
Toward an OpenSocial Life Science Gateway Wenjun Wu, Michael E. Papka, Rick Stevens

Transcript of Toward an OpenSocial Life Science Gateway Wenjun Wu, Michael E. Papka, Rick Stevens.

Toward an OpenSocial Life Science Gateway

Wenjun Wu, Michael E. Papka, Rick Stevens

Web 2.0 – Gadget and Social networking

• Gadget• Mini web application • AJAX

• Social Networking• Facebook MySpace• Build virtual communities in a bottom-up manner

• Leverage science gateway portals• Rich user interface• Collaboration: social networking

OpenSocial

• A standardized framework for building social applications• Provides Specification for both gadget and social-networking

• Gadget JavaScript API: gadgets.* • OpenSocial JavaScript API: opensocial.*

<People, Relationship, Activity, Persistence>

• Enabling web developers to write gadgets with social capability that can run in any OpenSocial compliant container

iGoogle, Orkut,MySpace, Hi5…• Apache Shindig

• Open Source OpenSocial container

OpenSocial Gadget vs Portlet

OpenSocial Gadget Java Portlet

Resuable web module

Resuable Browser-side Web module

XML, HTML, CSS, JavaScript

Resuable Sever-side Portal module

Web Form, Portlet/JSP Markup, Portlet code

Application Logic

Defined in the JavaScript code of the gadget

Defined in the server-side portlet

Communication with Server

AJAX Web Form, Portlet/Servlet

Container Dependence

OpenSocial Container ( PHP, Java .. )

Java based Portal

Deployment OpenSocial Container:

iGoogle, Myspace, Orkut,..

Portlet Container:

Gridsphere, Websphere

Open Life Science Gatway Services

• A TeraGrid Science Gateway Project

• Integrates a group of bio-informatics applications and data collections into a portal

• Alignment - Blast and ClustalW• Protein domain – InterProScan• Protein Structure Prediction

• Job History browsing• RPC API

• Web-Services• JSON-RPC

• OLSGW Portlets

Open Life Science Gateway Framework

Open Life Science Gateway Framework

• Generic RPC Services• both a generic SOAP-RPC service and JSON-service, unmarshall RPC

requests from clients, and create the job objects along with job execution scripts

• Application Service• responsible for parsing an application XML description, generating service

stubs and formatting application specific web-pages and portlet codes.

• Job Factory • builds a job execution script and constructs a job object in the persistence job

storage

Application Service ( for clustalw )

<parameter iscommand="1" ishidden="1" type="String"> <name>clustalw</name> <attributes>

<format> <language>perl</language> <code>"clustalw"</code></format>

</attributes> </parameter><parameter ismandatory="1" issimple="1" type="Sequence"> <name>infile</name> <attributes>

<precond> <language>perl</language> <code>$actions ne "-profile" and $actions ne "-

sequences"</code></precond><prompt>Sequences File (or Alignment File for Bootstrap

and Tree actions) (-infile)</prompt><format>

<language>perl</language><code> " -infile=$value"</code><language>seqlab</language><code> " -infile=value"</code>

</format></seqfmt>

</attributes> </parameter>

Serialized Command-Line Objects

Generic RPC Services ( for clustalw )

function runClustalW(){var params = new Object(); params.javaClass = 'java.util.Hashtable'; params.map = {}; params.map['actions'] = '-align'; params.map['quicktree'] = 'fast'; params.map['outfile'] = 'OUTPUT'; var seqinput = document.getElementById("seqinput"); params.map['infile'] = seqinput.value; // Hashtable params result = jsonrpc.JobService.runJob(callback, "clustalw", params);}

 Generic RPC Service

String JobID runJob(String application, Hashmap<String,String> params);

JavaScript code segment for running clustalw jobs

Building OpenSocial gadgets for OLSGW

• URL gadgets • IFrame • Wrap any Html pages in OLSGW • Session Cookie

• HTML gadgets• Gadget XML• HTML markups • JavaScript codes.

<?xml version="1.0" encoding="UTF-8"?><Module><ModulePrefs title="Run ClustalW" scrolling="true" width="1000" height="600"><Require feature="views"/><Require feature="dynamic-height"/></ModulePrefs><Content type="url" view="canvas" href="http://cbc.lac.uic.edu:8080/jobsubportlets/gadget/clustalw.html"></Content></Module>

HTML gadgets

• Advantage: utilize the rich features of OpenSocial JavaScript API• JSON-RPC service to run bio-applications • gadgets.io.makeRequest

• Allows the gadget JavaScript to communicate with remote services through a proxy in the gadget’s OpenSocial container

var params={}; params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.OAUTH;params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;var rpcdata = {rpc:req.data}params[gadgets.io.RequestParameters.POST_DATA]= gadgets.io.encodeValues(rpcdata);gadgets.io.makeRequest(this.serverURL, response, params);

JavaScript code for sending a makeRequest to invoke JSON-RCP Service

Gadgets Authorization

• OAuth• An open authorization delegation mechanism • Three Steps

• The consumer obtains an unauthorized request token. • The user authorizes the request token. • The consumer exchanges the request token for an access token.

• OAuth Entities in OLSGW• OAuth Consumer: makeRequest proxy in an OpenSocial container• OAuth Provider: the JSON-RPC service provider• OAUTH servlets and filter

OAuth Implementation for JSON-RPC

GadgetsOpenSocialContainer

Request Token Servlet

Authorization Servlet

Access Token Servlet

OAuth Security Filter

JSON-RPC Service Provider

Message flow in OAuth steps

Gadget init : Gadgets.io.makeRequest

(1) Or Preload

ContainerSends a request for

RequestToken

Request ServletGrant RequestToken

ContainerReturns a

gadgets.oauthApproval

Gadgets Shows the ApprovalURL

Wait for the user to click the ApprovalURL

and popup a window

Authroization Servlet

Pass the authorizationCall the JSON-RPC via

MakeRequest

ContainerSends a request for

AccessToken

Access ServletGrant AccessToken

ContainerMake a XMLHTTPRequest

OAUTH Security FilterJSON-RPC-Bridge

MakeRequestPOST/GET (1)

Consumer RequestsRequest Token

Provider GrantsRequest Token

ApprovalURL

HTTP Request & Callback URL

Callback URL

MakeRequstPOST (2)

Consumer Requests

Access Token

Access Token

Open Life Science Gateway Bio-gadgets (rendered in iGoogle)

Blast gadget run on both iGoogle and orkut

Open Life Science Gateway gadgets

Job History gadget ClustalW gadget

• Demo on Tuesday 12:00PM Argonne Booth

1:30PM Indiana Booth

Questions & Answers