Title: Facebook MySpace. Build virtual communities in a bottom-u
1Toward an OpenSocial Life Science Gateway
- Wenjun Wu, Michael E. Papka, Rick Stevens
2Web 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
3OpenSocial
- A standardized framework for building social
applications - Provides Specification for both gadget and
social-networking - Gadget JavaScript API gadgets.
- OpenSocial JavaScript API opensocial.
- ltPeople, Relationship, Activity, Persistencegt
- 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
4OpenSocial Gadget vs Portlet
5Open 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
6Open Life Science Gateway Framework
7Open 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
8Application Service ( for clustalw )
ltparameter iscommand"1" ishidden"1"
type"String"gt ltnamegtclustalwlt/namegt
ltattributesgt ltformatgt ltlanguagegtperllt/language
gt ltcodegt"clustalw"lt/codegt lt/formatgt
lt/attributesgt lt/parametergt ltparameter
ismandatory"1" issimple"1" type"Sequence"gt
ltnamegtinfilelt/namegt ltattributesgt ltprecond
gt ltlanguagegtperllt/languagegt ltcodegtactions
ne "-profile" and actions ne "-sequences"lt/codegt
lt/precondgt ltpromptgtSequences File (or
Alignment File for Bootstrap and Tree actions)
(-infile)lt/promptgt ltformatgt ltlanguagegtperllt/lan
guagegt ltcodegt " -infilevalue"lt/codegt ltlangu
agegtseqlablt/languagegt ltcodegt "
-infilevalue"lt/codegt lt/formatgt lt/seqfmtgt
lt/attributesgt lt/parametergt
Serialized Command-Line Objects
9Generic RPC Services ( for clustalw )
function runClustalW() var params new
Object() params.javaClass 'java.util.Hashtabl
e' 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.r
unJob(callback, "clustalw", params)
Generic RPC Service String JobID runJob (String
application, HashmapltString, Stringgt params)
JavaScript code segment for running clustalw jobs
10Building OpenSocial gadgets for OLSGW
- URL gadgets
- IFrame
- Wrap any Html pages in OLSGW
- Session Cookie
- HTML gadgets
- Gadget XML
- HTML markups
- JavaScript codes.
lt?xml version"1.0" encoding"UTF-8"?gt ltModulegt ltM
odulePrefs title"Run ClustalW" scrolling"true"
width"1000" height"600"gt ltRequire
feature"views"/gt ltRequire feature"dynamic-height
"/gt lt/ModulePrefsgt ltContent type"url"
view"canvas" href"http//cbc.lac.uic.edu8080/jo
bsubportlets/gadget/clustalw.html"gtlt/Contentgt lt/Mo
dulegt
11HTML 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 gadgets
OpenSocial container
var params paramsgadgets.io.RequestParameter
s.AUTHORIZATION gadgets.io.AuthorizationType.OA
UTH paramsgadgets.io.RequestParameters.CONTENT_T
YPE gadgets.io.ContentType.TEXT paramsgadgets
.io.RequestParameters.METHOD
gadgets.io.MethodType.POST var rpcdata
rpcreq.data paramsgadgets.io.RequestParameters
.POST_DATA gadgets.io.encodeValues(rpcdata) gad
gets.io.makeRequest(this.serverURL, response,
params)
JavaScript code for sending a makeRequest to
invoke JSON-RCP Service
12Gadgets 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
13OAuth Implementation for JSON-RPC
Request Token Servlet
Authorization Servlet
Access Token Servlet
OAuth Security Filter
JSON-RPC Service Provider
14Message flow in OAuth steps
HTTP Request Callback URL
15Open Life Science Gateway Bio-gadgets (rendered
in iGoogle)
Blast gadget run on both iGoogle and orkut
16Open Life Science Gateway gadgets
Job History gadget
ClustalW gadget
17Questions Answers
- Demo on Tuesday
- 1200PM Argonne Booth
- 130PM Indiana Booth