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.*
• 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 Resuable Browser-side Web Resuable Sever-side Portal
module module module
XML, HTML, CSS, JavaScript Web Form, Portlet/JSP Markup,
Portlet code
Application Defined in the JavaScript Defined in the server-side portlet
Logic code of the gadget
Communication AJAX Web Form, Portlet/Servlet
with Server
Container OpenSocial Container ( PHP, Java based Portal
Dependence Java .. )
Deployment OpenSocial Container: Portlet Container:
iGoogle, Myspace, Orkut,.. 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 )
clustalw
perl
"clustalw"
infile
perl
$actions ne "-profile" and $actions ne "-
sequences"
Sequences File (or Alignment File for Bootstrap
and Tree actions) (-infile) Serialized Command-Line
Objects
perl
" -infile=$value"
seqlab
" -infile=value"
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
JavaScript code segment for running clustalw jobs
String JobID runJob
(String application,
Hashmap params);
Building OpenSocial gadgets for OLSGW
• URL gadgets
• IFrame
• Wrap any Html pages in OLSGW
• Session Cookie
• HTML gadgets
• Gadget XML
• HTML markups
• JavaScript codes.
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
Request Token Servlet
Authorization Servlet
OpenSocial
Gadgets Container
Access Token Servlet
OAuth Security Filter
JSON-RPC
Service Provider
Message flow in OAuth steps
MakeRequest Consumer Requests
POST/GET (1) Request Token
Provider Grants
Request Token
ApprovalURL
HTTP Request & Callback URL
Callback URL
Consumer
Requests
Access Token
MakeRequst
POST (2)
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
Questions & Answers
• Demo on Tuesday
12:00PM Argonne Booth
1:30PM Indiana Booth