View
216
Download
0
Category
Preview:
Citation preview
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
• 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
Recommended