170 likes | 589 Views
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
E N D
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
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 • 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
Gadgets OpenSocial Container OAuth Implementation for JSON-RPC Request Token Servlet Authorization Servlet Access Token Servlet OAuth Security Filter JSON-RPC Service Provider
Consumer Requests Request Token MakeRequest POST/GET (1) Provider Grants Request Token ApprovalURL Callback URL Consumer Requests Access Token MakeRequst POST (2) Access Token Message flow in OAuth steps HTTP Request & Callback URL
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