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

Upload: dayna-ford

Post on 23-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

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