SlideShare une entreprise Scribd logo
1  sur  71
JMP103 : Extending Your
App Arsenal With
OpenSocial

Ryan Baxter | Software Engineer | IBM
Yun Zhi Lin | Software Engineer | IBM

© 2014 IBM Corporation
Please Note
IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole
discretion.
Information regarding potential future products is intended to outline our general product direction and it should not be
relied on in making a purchasing decision.
The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver
any material, code or functionality. Information about potential future products may not be incorporated into any contract.
The development, release, and timing of any future features or functionality described for our products remains at our sole
discretion

Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment.
The actual throughput or performance that any user will experience will vary depending upon many factors, including
considerations such as the amount of multiprogramming in the user’s job stream, the I/O configuration, the storage
configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve
results similar to those stated here.

2
Credit






3

IBM Notes Social Edition
IBM Domino Social Edition
IBM iNotes Social Edition
IBM Connections
IBM Social Business Toolkit
About Us









4

IBMer for 5 years
OpenSocial (and open source) enthusiast
Notes Java UI APIs, IBM Social Business Toolkit
@ryanjbaxter, http://ryanjbaxter.com
IBMer for 7 years
Notes Widgets and OpenSocial developer
XPages and Eclipse plugin development
Agenda






5

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
OpenSocial




6

Social APIs and Mini Applications
(Gadgets)
IBM has a leadership role including
–
On the Board of Directors
–
Committers on Apache Shindig
–
Has been instrumental in drafting
the OpenSocial 2.0 & 2.5
specification
–
Invented and gave to the
community Embedded
Experiences and many, many
more capabilities
–
Provided enterprise extensions

Implementations Include: Cisco, SAP, Jive,
Atlassian, IBM SmartCloud, Google,
Yahoo, MySpace, LifeRay, Oracle,
Magneto, Tibco Tibbr, Surfnet, Paypal . . .

SmartCloud, IBM Connections, IBM
Notes/Domino®, Rational Team ConcertTM,
Sterling, IBM Business Process Manager...
Why Use OpenSocial?




IBM sees value in OpenSocial because it offers two very important things to IBM, its
partners, and its customers
–
An application model based on modern web standards that easily isolates third party
code
–
APIs for interacting with and creating social data (we still have a long way to go with
this one)
Cross product integration with Notes, iNotes, and Connections
–
Integrate your application into one or all of these products
–
Stand-alone (web) applications
–
Embedded within an envelope, i.e., email or activity entry
–



7

Access to social data and data models from Connections and SmartCloud
–
Connections 4 activity streams API
–
SmartClouds person and contacts APIs
Sample Gadget XML
<?xml version="1.0" encoding="UTF-8" ?>
<Module specificationVersion='2'>
<ModulePrefs title="Acme Airlines">
<!-- Features provide sets of functionality to the gadget
<Require feature="dynamic-height" />
<Require feature="embedded-experiences" />
</ModulePrefs>
<!-- Content sections are the UI of the gadget -->
<Content type="html" view="default, home">
<![CDATA[
<!--HTML, CSS, and JavaScript go here -->
]]>
</Content>
<Content type="html" view="embedded" href="ee.html"></Content>
</Module>
8

-->
The Basics




9

ModulePrefs
–
The gadget's ModulePrefs element contains basic information about the gadget
●
Title, author, description, icon
●
Features are also placed in the ModulePrefs element
– Features provide a set of functionality and sometimes APIs to the gadget
●
Message Bundles can be added to provide translated strings for your gadget
Content Sections
–
Content sections contain the UI and business logic for your gadget
●
You can have multiple content sections in one gadget XML
●
The HTML, CSS, and JavaScript of your gadget can either be inside the content
section or externally in a separate file
–
Different content sections can be distinguished via the view attribute
Gadget Views







10

Gadget views originally were used to distinguish between the amount of real-estate
available to a gadget
–
Home = little real-estate
–
Canvas = large amount of real-estate
Since OpenSocial 2.0 we have been moving more towards views indicating different uses
–
Embedded view for embedded experiences
–
Dialog views for when a gadget is opened in a dialog
Content sections with the same view name will be concatenated together
Gadgets can switch views programmatically and find out what view is currently rendered
–
gadgets.views.requestNavigateTo(viewName)
–
gadgets.views.getCurrentView()
Gadget Preferences






11

Any application is likely to have user preferences
to allow the user to customize portions of the
application
Gadget preferences are specified in UserPref
elements in the gadget XML
–
Strings, Booleans, Enums, and Lists all
specified in the type attribute
–
Display name attribute shows in the UI
–
Name attribute can be used to access the
preference within your code
–
You can also set a default value for a
preference
Get and set preferences via gadgets.Prefs
–
Require the feature setpefs when setting
preferences
Gadget Preferences Example
<UserPref name="hello_pref" display_name="Name" default_value="World"
datatype="string" required="true"/>
<UserPref name="number_pref" display_name="Number" default_value="0"
datatype="string" required="true"/>
<UserPref name="list_pref" display_name="List" default_value="foo|bar|
foobar" datatype="list" required="true"/>
<UserPref name="boolean_pref" display_name="Boolean"
default_value="false" datatype="bool" required="true"/>
<UserPref name="enum_pref" display_name="Enum" default_value="Red"
datatype="enum" required="true">
<EnumValue value="Red" display_value="Red"/>
<EnumValue value="Green" display_value="Green"/>
<EnumValue value="Blue" display_value="Blue"/>
</UserPref>
12
Developing OpenSocial Gadgets





13

The first step to building OpenSocial gadgets is setting up a development environment
OpenSocial Explorer
–
An open source project from the OpenSocial Foundation meant to help developers get
started building OpenSocial gadgets.
–
Contains sample gadgets and allows developers to modify and create new gadgets
IBM Social Business Toolkit Playground
–
You can do everything you can do in the OpenSocial Explorer within the
Playground...and MORE!
–
Contains all the same samples plus sample gadgets that show how to integrate with
SmartCloud and Connections
–
Easily test your embedded experiences in emails and activity stream entries
OpenSocial Explorer

14
IBM Social Business Toolkit Playground – On Greenhouse

15
DEMO
16
Getting Started Writing JavaScript





17

Use your favorite JavaScript library
Just like any other web app you don't want to begin running your business logic before the
app has completely loaded
gadgets.util.registerOnLoadHandler(function)
–
When the function passed to this API is called the gadget has completely loaded
–
Similar to JQuery and Dojo's ready functions
–
You can use those instead if you are using those libraries
Making REST API Calls



All web applications need to make some kind of API calls and gadgets are no different
Use gadgets.io.makeRequest
–
Asynchronous
–
Takes a URL, parameters object, and callback function
–
Supports OAuth endpoints
–
DO NOT USE OTHER LIBRARIES' XHR METHODS

var params = {};
params[gadgets.io.RequestParameters.METHOD]
=gadgets.io.MethodType.GET;
params[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.C
ontentType.JSON;
var callback = function(response){
...
};
gadgets.io.makeRequest('http://example.com/api/foo', callback,
params);
18
OAuth








OpenSocial uses OAuth for making protected API calls
–
Support for OAuth 1.0a and 2.0
OAuth stands for OPEN AUTHORIZATION not OPEN AUTHENTICATION
–
Authentication technologies may be used when authorizing
OAuth is very easy to use within a gadget, most of the hard work is done by the container
Use makeRequest and simply specify which OAuth version to use
The OAuth services used within the gadget need to be registered with the container
Request
Acme Gadget
Approval

19

Browser
Do you want to allow
Acme Gadget access
to your data?
YES NO
OAuth 1.0a in The Gadget XML



Service name must match what is registered in the container
URLs come from the provider you are authenticating with
<OAuth>
<Service name="my service">
<Request url="http://provider.com/authorize"/>
<Access url="http://provider.com/accessToken"/>
<Authorization url="http://provider.com/authorize"/>
</Service>
</OAuth>

20
OAuth 1.0a in The Gadget XML



Service name must match what is registered in the container
URLs come from the provider you are authenticating with
<OAuth>
<Service name="my service">
<Request url="http://provider.com/authorize"/>
<Access url="http://provider.com/accessToken"/>
<Authorization url="http://provider.com/authorize"/>
</Service>
</OAuth>

21
OAuth 2.0 in The Gadget XML


OAuth 2.0 is simpler, all URLs are configured on the container.
–
Service name needs to match what you register in the container
–
Scope indicates the API set you plan on accessing
<OAuth2>
<Service name="service name" scope="ProviderScope">
</Service>
</OAuth2>

22
Using OAuth in makeRequest


In the parameters passed to makeRequest indicate you are using OAuth 1.0a or 2.0
–
gadgets.io.AuthorizeType.OAUTH2
–
gadgets.io.AuthorizeType.OAUTH
–



23

Require the feature “oauthpopup”
–
This feature can be used to open the popup window for the user to enter their
credentials
–
Lets the gadget know when the OAuth dance is complete
OAuth makeRequest Example
var params = {};
params[gadgets.io.RequestParameters.AUTHORIZATION] =
gadgets.io.AuthorizationType.OAUTH2;
params[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = 'serviceName';
gadgets.io.makeRequest('url', function(response) {
if (response.oauthApprovalUrl) {
var onOpen = function() {};
var onClose = function() {};
var popup = new gadgets.oauth.Popup(response.oauthApprovalUrl, null, onOpen,
onClose);
var click = popup.createOpenerOnClick();
click();
} else if (response.data) {
//We have data so lets use it!
} else {
gadgets.error('something went wrong');
}
}, params);
24
Interacting With The Container








25

As of OpenSocial 2.0 gadgets can now interact with the container they are rendered in
–
WARNING: These may not be supported completely in all containers - even every IBM
Container
Breaking Out Of The Box
–
Gadgets are rendered in an iFrame and they used to be confined to that frame in the
browser
–
With the open-views APIs gadgets can render other gadgets and URLs in new tabs,
windows, dialogs, etc
Contributing To The UI
–
Action contributions allows your gadget to contribute to the toolbar and menus of the
container
–
This is very similar to action contributions in Eclipse plugin development
Understanding What Is Selected
–
Gadgets can also listen for selection in Notes and iNotes
–
Emails, Contacts, and Files
DEMO
26
Embedded Experiences


27

Changing the way you get notifications
–
The goal is to make notifications more useful and interactive
–
Supported in email and activity streams
●
IBM Connections, IBM Connections Mail, IBM Notes 9, IBM iNotes 9
●
JSON + XML
Notifications Today
Activity Entry

Action Taken
In Your App

Standard
MIME Email

28
Notifications With Embedded Experiences
Activity
Entry

Action
Taken In
Your App

EE Data
Model

Gadget
Standard
MIME
Email
Your App

29
Something Of Importance Took Place!


Embedded experiences are almost always
generated due to an action that took place in
an app
–
Someone completed a task
–
Someone sent a survey to a group of
people
–
A travel request was submitted
–
A lead was entered in a CRM system
–



30

Now that the action took place you want to let
a group of people know about it
–
BE SOCIAL!

Your APP

Action Taken
In App
How do you want to let people know about it?






Traditionally emails were sent
–
Still applicable today, many apps still do this
In a social network, emails are not the primary
medium for communication
–
Almost all social networks have an activity
stream so we should post it there
Gadget EE

{
“gadget” : “http://acme.com/gagdet.xml”,
“context” : {
“id” : 123
}
}


URL EE

{“url” : “http://domino.com/myxpage.xsp”}
31

Activity Entry

EE Data
Model

Standard MIME
Email
Active Notifications


With embedded experiences,
notifications are no longer static
–
Active content allows your
notifications to never go stale and
always be up to date
Gadget

–
–

No need to leave your client, stay
where you are and get your work
done

–


32

The data used in your notifications is
unlimited, you have access to anything

Your App
Email Embedded Experience
From: notifications@socialnetwork.com
To: johndoe@example.com
Subject: Social Network: Mary Has Commented On Your Status
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="XXXXboundary text"
Mary has commented on your status.
--XXXXboundary text
Content-Type: text/plain
Mary has commeneted on your status.
--XXXXboundary text
Content-Type: text/html
<html>
<!-- HTML representation here -->
</html>
--XXXXboundary text
Content-Type: application/embed+json
{
"gadget" : "http://www.socialnetwork.com/embedded/commentgadget.xml",
"context" : 123
}
33
Activity Stream Embedded Experience
{
"postedTime": "2011-02-10T15:04:55Z",
"actor": {...},
"verb": "post",
"object" : {...},
"openSocial" : {
"embed" : {
"gadget" : "http://example.org/AlbumViewer.xml",
"context" : {
"albumName": "Germany 2009",
"photoUrls": [...]
}
}
}
}
34
DEMO
35
Agenda






36

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
How Does OpenSocial Integrate Into IBM Connections?










37

Leveraging the existing widgets framework
–
OpenSocial is just a new type of widget, just like iWidgets
OpenSocial gadgets available on your homepage
–
In the activity stream
–
On the right hand side of your activity stream homepage
–
In the “My Page” of your homepage
Connections Mail supports embedded experiences in email
OpenSocial gadgets can also extend the share box
–
Allows you to integrate other sharing capabilities right into Connections
Connection's REST API and data model follows the OpenSocial standard
OpenSocial gadgets can interact with their containers
–
Contribute actions for ShareBox integration
–
Open itself, Embedded Experiences, and URLs as dialogs
Activity Streams Keep Your Users Up To Date






38

REST API and data model backed by the
OpenSocial standard
–
JSON data model - easy to use in your web
apps
3rd party apps can post entries to the activity
stream
–
Inside and outside of Connections
Integrate the Connections activity stream into
your apps
–
This is how we integrate the activity stream
into Notes
–
If your app is an OpenSocial container you
can render embedded experiences too!
Extending The Share Dialog




39

The share dialog allows you to share content
from anywhere in Connections
–
By default you can update your status or
upload a file
The share dialog is extensible using OpenSocial
gadgets
–
Take advantage of OpenSocial's actions
feature
Connections Mail



40

Connections Mail, like Notes and iNotes, supports embedded experiences as well
The same embedded experience you build for the activity stream will work in mail
Deploying OpenSocial Gadgets In Connections



41

Only Homepage admins can deploy gadgets
Gadgets must be added to the widget catalog
in Connections
–
Security
●
Restricted or Trusted (SSO)
–
UI Integration points for the Share dialog
–
Proxy access
●
Only outside the intranet
●
Everything
●
Custom
–
OAuth service mappings
Registering OAuth Clients For Gadgets In Connections




42

You must register OAuth clients for gadgets to use in Connections if a gadget is using OAuth
–
This is a two step process done via the wasadmin console, you must register an OAuth
provider and then register an OAuth client
●
A provider may be used by multiple clients. For example Google, Facebook,
Twitter, DropBox etc.
– wsadmin>NewsOAuth2ConsumerService.registerProvider("provider123",
"standard", "true", "false", "http://example.com/oauth/authorization",
"https://example.com/oauth/token")
●
A client gets bound to a gadget and points to a provider.
– You specify the client ID and secret obtained from the provider for your gadget
– wsadmin>NewsOAuth2ConsumerService.registerClient("client123",
"provider123", "confidential", "code", "my-client", "my-secret",
"https://connections.com/connections/opensocial/gadgets/oauth2callback")
After the clients have been registered you can bind them via wsadmin commands or via the
Homepage administration UI
DEMO
43
Agenda






44

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
How Does OpenSocial Integrate Into IBM Notes and iNotes?




●


45

Leveraging the existing My Widgets framework
–
OpenSocial is just a new type of widget, just like Google Gadgets or Web Page widgets
OpenSocial gadgets are available in both Notes and iNotes
–
In the sidebar
–
In tabs
–
In floating (modeless) windows
–
In new windows (Notes only)
–
In Mail as Embedded Experiences
Wire LiveText to OpenSocial gadgets
–
The recognized content is passed through gadget preference
–
By default launches in a floating window
–
Can be configured to open in tab, sidebar or new window
How Does OpenSocial Integrate Into IBM Notes and iNotes?


46

OpenSocial gadgets can interact with their containers
–
Contribute actions
●
To top-level menus and toolbars in Notes
●
To the context menu for mail messages, contacts, attachments (Notes only), and
LiveNames (Notes only)
–
Contribute OpenSearch search engines to the Notes search center
–
Listen for and publish selection
–
Open itself, Embedded Experiences, and URLs in new windows, tabs, floating windows
and the sidebar
OpenSearch


Use OpenSearch APIs to contribute to the Notes search center
<Optional feature="opensearch">
<Param name="opensearch-description">
<![CDATA[
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" >
<ShortName>CNN.com</ShortName>
<Description>CNN.com Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<SearchForm>http://search.cnn.com/</SearchForm>
<Url type="text/html" method="get"
template="http://www.cnn.com/search/?query={searchTerms}">
</Url>
</OpenSearchDescription>
]]>
</Param>
</Optional>



47

More information in the OpenSocial spec
–
http://opensocial-resources.googlecode.com/svn/spec/2.5/CoreGadget.xml#OpenSearch
Creating OpenSocial Widgets in Notes and iNotes
●

48

Notes client provides wizards to create OpenSocial Widgets from gadgets
Managing OpenSocial Widgets in Notes and iNotes




●

49

Widget Catalog database is used to manage OpenSocial Gadgets in Notes and iNotes
–
OpenSocial widget is not usable until it's published to catalog and approved by
administrator
During the approval process, administrators will configure
–
Proxy settings – required
–
OAuth consumer information – required only if a gadget need them
A secure credential store database is used to manage sensitive information
Creating Widgets for URL Embedded Experience in
Notes/iNotes


50

You need to create a Web Page widget and enable it for embedded experiences
–
Make the Embedded Experiences URL generic to accommodate all sub-pages of the
application
–
Wild cards are allowed
Deploying OpenSocial Widgets in Notes and iNotes






51

Approved widgets need to be installed
in Notes and iNotes
Widgets can be pushed to end users
by policy settings
–
This is the recommended way to
deploy widgets
End users can also install additional
widgets from catalog by themselves
DEMO
52
Agenda






53

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
WARNING!!!
Proceed With Caution!
54
Using the IBM SBT To Render Gadgets






55

Using some of the OSGi bundles found in the IBM SBT you can not render gadgets within
your own apps
–
You can allow users to integrate into your applications using gadgets
–
You can build a dashboard based on gadgets
–
You can embed the Connections Activity Stream gadget within your application
The OSGi bundles from the SBT provide a service that other apps running on Domino can
use to render their own gadgets
Supports both WABs (Web Application Bundles) and XPages on Domino
–
You can use extension points to contribute “containers” to the OpenSocial service
running on the Domino server
Key Concepts





56

Depend on com.ibm.sbt.opensocial.domino or com.ibm.xsp.opensocial
To render gadgets within your own application you must supply at least one instance of a
class that implements ContainerExtPoint
–
Can be registered via the extension point com.ibm.sbt.opensocial.domino.container
●
This should be used by OSGi bundles
–
Can be registered by calling ContainerExtPointManager.registerContainers
●
This should be used by XPage apps
Then you need to include a script tag in your application to include the OpenSocial
Container JS
–
[domino server]/osplayground/gadgets/js/container:embedded-experiences:openviews:actions:selection.js?c=1&debug=1&container=sampleId
–
The container id must match the one from your ContainerExtPoint
Sample Extension Point
<extension
point="com.ibm.sbt.opensocial.domino.container">
<container
class="com.acme.container.MyContainerExtPoint">
</container>
<container
class="com.acme.container.MySecondContainerExtPoint">
</container>
</extension>

57
Security Tokens





A security token is an encrypted string which contains information about the user, container,
and app
It is required in order to render and gadgets in your application
GET /sbtos/container/stgen

Parameter Name
c

The domain of the container

i

The app ID. Any unique ID for your app will do.

m

The module ID, should always be 0.

u

58

The ID of the container.

d



Description

The app url.

Response: {“token” : “123”, “ttl” : 5678}
DEMO
59
Agenda






60

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
XPages and OpenSocial




61

XPages and Embedded Experience mail
–
XPages can be embedded in mail directly by using a URL embedded experience
–
Gadget XML can be put in an NSF and access application data via XPages REST API
–
It's easy to send embedded experience emails from XPage apps
XPages and Activity Streams
–
Support to post activities with embedded experiences to activity streams
–
Support to read activity stream data in XPages apps
Creating Embedded Experience Emails Using Notes.jar

62
XPages Simple Action To Send Embedded Experience
Emails


New “Send Mail” simple action
–
Available in 9.0
–
Provides an easy way to send mails and
supports Embedded Experience mail
–
You can either compose JSON by
yourself or XPages will compose it
based on your input.
–

63
Leveraging SSO For XPage Embedded Experiences






We do not want users to log in again when opening a XPage embedded experience
The mail server and the server hosting the XPages app must have multi-server SSO
enabled
–
For iNotes users, the servers must be in same SSO domain
–
For Notes users, a managed account needs to be created for the server hosting the
XPages application
●
This can be pushed via policy
In the case of XPage embedded experiences in the Connections activity stream, the
Connections server must be in the same SSO domain as the Domino server hosting the app
–

If you want to integrate a classic web based Domino application with embedded experience, the
above steps apply as well.

64
DEMO
65
Q&A
66
Resources















67

OpenSocial Tutorials: https://opensocial.atlassian.net/wiki/display/OS/Home
OpenSocial Explorer: http://opensocial.github.io/explorer/download.html
Apache Shindig: http://shindig.apache.org
IBM Social Business SDK: http://ibmsbt.openntf.org/
IBM Social Business Toolkit Playground:
https://greenhouse.lotus.com/sbt/SBTPlayground.nsf/
IBM Domino 9.0 Social Edition OpenSocial Component Deployment Cookbook:
http://www-10.lotus.com/ldd/dominowiki.nsf/dx/IBM_Domino_9.0_Social_Edition_OpenSocial_D
Developing Gadgets For Connections:
https://www.ibm.com/developerworks/lotus/documentation/osgadgetconnections4/index.html
OpenSocial Specs: https://opensocial.atlassian.net/wiki/display/OSD/Specs
OAuth Client Registration:
http://www-10.lotus.com/ldd/lcwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+4.0+d
Activity Streams API:
http://www-10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+
Resources




68

OpenSocial Gadgets In The Playground:
https://github.com/OpenNTF/SocialSDK/wiki/OpenSocial-Gadgets-In-The-Playground
Building OpenSocial Containers Using The SBT:
https://github.com/OpenNTF/SocialSDK/wiki/Building-Your-Own-OpenSocial-Container
Acknowledgements and Disclaimers
Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither
intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information
contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise
related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or
its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and
performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you
will result in any specific sales, revenue growth or other results.

© Copyright IBM Corporation 2014. All rights reserved.
 U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 IBM, the IBM logo, ibm.com, IBM Connections, IBM Notes Social Edition, IBM iNotes Social Edition, IBM Domino Social Edition are trademarks or registered trademarks of International
Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a
trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be
registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at
www.ibm.com/legal/copytrade.shtml
Other company, product, or service names may be trademarks or service marks of others.

69
Engage Online




SocialBiz User Group socialbizug.org
– Join the epicenter of Notes and Collaboration user groups
Follow us on Twitter
Engage
– @IBMConnect and @IBMSocialBiz

Online



LinkedIn http://bit.ly/SBComm
– Participate in the IBM Social Business group on LinkedIn:



Facebook https://www.facebook.com/IBMSocialBiz
– Like IBM Social Business on Facebook



Social Business Insights blog ibm.com/blogs/socialbusiness
– Read and engage with our bloggers

70
 Access Connect Online to complete your session surveys using any:
– Web or mobile browser
– Connect Online kiosk onsite

71

Contenu connexe

Tendances

AnDevCon: Introduction to Darwino
AnDevCon: Introduction to DarwinoAnDevCon: Introduction to Darwino
AnDevCon: Introduction to DarwinoPhilippe Riand
 
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...Niklas Heidloff
 
BP 308 - The Journey to Becoming a Social Application Developer
BP 308 - The Journey to Becoming a Social Application DeveloperBP 308 - The Journey to Becoming a Social Application Developer
BP 308 - The Journey to Becoming a Social Application DeveloperSerdar Basegmez
 
Social Applications made easy with the new Social Business Toolkit SDK
Social Applications made easy with the new Social Business Toolkit SDKSocial Applications made easy with the new Social Business Toolkit SDK
Social Applications made easy with the new Social Business Toolkit SDKIBM Connections Developers
 
MAS202 - Customizing IBM Connections
MAS202 - Customizing IBM ConnectionsMAS202 - Customizing IBM Connections
MAS202 - Customizing IBM Connectionspaulbastide
 
AD301: What's New in the IBM Social Business Toolkit
AD301: What's New in the IBM Social Business ToolkitAD301: What's New in the IBM Social Business Toolkit
AD301: What's New in the IBM Social Business ToolkitMark Wallace
 
DNUG Closing Session - ICS App Dev Update - 06/07/13
DNUG Closing Session - ICS App Dev Update - 06/07/13DNUG Closing Session - ICS App Dev Update - 06/07/13
DNUG Closing Session - ICS App Dev Update - 06/07/13Niklas Heidloff
 
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT Group
 
Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...LetsConnect
 
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...paulbastide
 
BP207 - Easy as pie creating widgets for ibm connections
BP207 - Easy as pie   creating widgets for ibm connectionsBP207 - Easy as pie   creating widgets for ibm connections
BP207 - Easy as pie creating widgets for ibm connectionsMikkel Flindt Heisterberg
 
Connect 2014 - AD202 - Get the best out of bootstrap with bootstrap4 x-pages
Connect 2014 - AD202 -  Get the best out of bootstrap with bootstrap4 x-pagesConnect 2014 - AD202 -  Get the best out of bootstrap with bootstrap4 x-pages
Connect 2014 - AD202 - Get the best out of bootstrap with bootstrap4 x-pagesPhilippe Riand
 
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...IBM Connections Developers
 
What's new in iNotes 9.0 Social Edition
What's new in iNotes 9.0 Social EditionWhat's new in iNotes 9.0 Social Edition
What's new in iNotes 9.0 Social EditionRahul A. Garg
 
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...paulbastide
 

Tendances (15)

AnDevCon: Introduction to Darwino
AnDevCon: Introduction to DarwinoAnDevCon: Introduction to Darwino
AnDevCon: Introduction to Darwino
 
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...
 
BP 308 - The Journey to Becoming a Social Application Developer
BP 308 - The Journey to Becoming a Social Application DeveloperBP 308 - The Journey to Becoming a Social Application Developer
BP 308 - The Journey to Becoming a Social Application Developer
 
Social Applications made easy with the new Social Business Toolkit SDK
Social Applications made easy with the new Social Business Toolkit SDKSocial Applications made easy with the new Social Business Toolkit SDK
Social Applications made easy with the new Social Business Toolkit SDK
 
MAS202 - Customizing IBM Connections
MAS202 - Customizing IBM ConnectionsMAS202 - Customizing IBM Connections
MAS202 - Customizing IBM Connections
 
AD301: What's New in the IBM Social Business Toolkit
AD301: What's New in the IBM Social Business ToolkitAD301: What's New in the IBM Social Business Toolkit
AD301: What's New in the IBM Social Business Toolkit
 
DNUG Closing Session - ICS App Dev Update - 06/07/13
DNUG Closing Session - ICS App Dev Update - 06/07/13DNUG Closing Session - ICS App Dev Update - 06/07/13
DNUG Closing Session - ICS App Dev Update - 06/07/13
 
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
 
Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...
 
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...
 
BP207 - Easy as pie creating widgets for ibm connections
BP207 - Easy as pie   creating widgets for ibm connectionsBP207 - Easy as pie   creating widgets for ibm connections
BP207 - Easy as pie creating widgets for ibm connections
 
Connect 2014 - AD202 - Get the best out of bootstrap with bootstrap4 x-pages
Connect 2014 - AD202 -  Get the best out of bootstrap with bootstrap4 x-pagesConnect 2014 - AD202 -  Get the best out of bootstrap with bootstrap4 x-pages
Connect 2014 - AD202 - Get the best out of bootstrap with bootstrap4 x-pages
 
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...
 
What's new in iNotes 9.0 Social Edition
What's new in iNotes 9.0 Social EditionWhat's new in iNotes 9.0 Social Edition
What's new in iNotes 9.0 Social Edition
 
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...
 

En vedette

IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...
IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...
IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...IBM Connections Developers
 
IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...
IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...
IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...IBM Connections Developers
 
IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...
IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...
IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...IBM Connections Developers
 
IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...
IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...
IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...IBM Connections Developers
 
Writng Sample - Community Relations and the United States Army
Writng Sample - Community Relations and the United States ArmyWritng Sample - Community Relations and the United States Army
Writng Sample - Community Relations and the United States ArmyPaul Hayes
 
IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...
IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...
IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...IBM Connections Developers
 

En vedette (6)

IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...
IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...
IBM Connect 2014 - SHOW501: Mastering Social Development Using the IBM Collab...
 
IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...
IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...
IBM Connect 2014 - AD301: What’s New on the IBM Social Business Toolkit Versi...
 
IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...
IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...
IBM Connect 2014 - AD206: Build Apps Rapidly by Leveraging Services from IBM ...
 
IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...
IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...
IBM Connect 2014 - BPD406: Ignite your IBM SmartCloud for Social Business Int...
 
Writng Sample - Community Relations and the United States Army
Writng Sample - Community Relations and the United States ArmyWritng Sample - Community Relations and the United States Army
Writng Sample - Community Relations and the United States Army
 
IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...
IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...
IBM Connect 2014 - BP207: Don’t Reinvent the Wheel – (Re)use Open Source Soft...
 

Similaire à IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial

JMP102 Extending Your App Arsenal With OpenSocial
JMP102 Extending Your App Arsenal With OpenSocialJMP102 Extending Your App Arsenal With OpenSocial
JMP102 Extending Your App Arsenal With OpenSocialRyan Baxter
 
Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial GadgetsVincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial GadgetsLetsConnect
 
Open social gadgets in ibm connections
Open social gadgets in ibm connectionsOpen social gadgets in ibm connections
Open social gadgets in ibm connectionsVincent Burckhardt
 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGiuliano Iacobelli
 
How to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM ConnectionsHow to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM ConnectionsIBM Connections Developers
 
Integrate Shindig with Joomla
Integrate Shindig with JoomlaIntegrate Shindig with Joomla
Integrate Shindig with JoomlaAnand Sharma
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWAManuel Carrasco Moñino
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
 
API Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsAPI Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsApigee | Google Cloud
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
IBM Connect2014 JMP106
IBM Connect2014 JMP106IBM Connect2014 JMP106
IBM Connect2014 JMP106Thomas Evans
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web ComponentsRed Pill Now
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesShabir Ahmad
 
Java on Google App engine
Java on Google App engineJava on Google App engine
Java on Google App engineMichael Parker
 

Similaire à IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial (20)

JMP102 Extending Your App Arsenal With OpenSocial
JMP102 Extending Your App Arsenal With OpenSocialJMP102 Extending Your App Arsenal With OpenSocial
JMP102 Extending Your App Arsenal With OpenSocial
 
Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial GadgetsVincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
 
Open social gadgets in ibm connections
Open social gadgets in ibm connectionsOpen social gadgets in ibm connections
Open social gadgets in ibm connections
 
Open Standards For Social Business Apps
Open Standards For Social Business AppsOpen Standards For Social Business Apps
Open Standards For Social Business Apps
 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplications
 
How to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM ConnectionsHow to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM Connections
 
Integrate Shindig with Joomla
Integrate Shindig with JoomlaIntegrate Shindig with Joomla
Integrate Shindig with Joomla
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
 
Multiple odoo with single vue storefront
Multiple odoo with single vue storefrontMultiple odoo with single vue storefront
Multiple odoo with single vue storefront
 
API Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsAPI Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIs
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
IBM Connect2014 JMP106
IBM Connect2014 JMP106IBM Connect2014 JMP106
IBM Connect2014 JMP106
 
Raptor 2
Raptor 2Raptor 2
Raptor 2
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
Java on Google App engine
Java on Google App engineJava on Google App engine
Java on Google App engine
 

Plus de IBM Connections Developers

Technology to deliver Exceptional Social Digital Experiences
Technology to deliver Exceptional Social Digital ExperiencesTechnology to deliver Exceptional Social Digital Experiences
Technology to deliver Exceptional Social Digital ExperiencesIBM Connections Developers
 
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1IBM Connections Developers
 
Learn everything about IBM iNotes Customization
Learn everything about IBM iNotes CustomizationLearn everything about IBM iNotes Customization
Learn everything about IBM iNotes CustomizationIBM Connections Developers
 
How to use the Social Business Development Environments
How to use the Social Business Development EnvironmentsHow to use the Social Business Development Environments
How to use the Social Business Development EnvironmentsIBM Connections Developers
 
How to access the Activity Stream in IBM Connections
How to access the Activity Stream in IBM ConnectionsHow to access the Activity Stream in IBM Connections
How to access the Activity Stream in IBM ConnectionsIBM Connections Developers
 
How to enhance Email with Embedded Experiences
How to enhance Email with Embedded ExperiencesHow to enhance Email with Embedded Experiences
How to enhance Email with Embedded ExperiencesIBM Connections Developers
 

Plus de IBM Connections Developers (6)

Technology to deliver Exceptional Social Digital Experiences
Technology to deliver Exceptional Social Digital ExperiencesTechnology to deliver Exceptional Social Digital Experiences
Technology to deliver Exceptional Social Digital Experiences
 
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
 
Learn everything about IBM iNotes Customization
Learn everything about IBM iNotes CustomizationLearn everything about IBM iNotes Customization
Learn everything about IBM iNotes Customization
 
How to use the Social Business Development Environments
How to use the Social Business Development EnvironmentsHow to use the Social Business Development Environments
How to use the Social Business Development Environments
 
How to access the Activity Stream in IBM Connections
How to access the Activity Stream in IBM ConnectionsHow to access the Activity Stream in IBM Connections
How to access the Activity Stream in IBM Connections
 
How to enhance Email with Embedded Experiences
How to enhance Email with Embedded ExperiencesHow to enhance Email with Embedded Experiences
How to enhance Email with Embedded Experiences
 

Dernier

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Dernier (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

IBM Connect 2014 - JMP103: Extending Your Application Arsenal With OpenSocial

  • 1. JMP103 : Extending Your App Arsenal With OpenSocial Ryan Baxter | Software Engineer | IBM Yun Zhi Lin | Software Engineer | IBM © 2014 IBM Corporation
  • 2. Please Note IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user’s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here. 2
  • 3. Credit      3 IBM Notes Social Edition IBM Domino Social Edition IBM iNotes Social Edition IBM Connections IBM Social Business Toolkit
  • 4. About Us        4 IBMer for 5 years OpenSocial (and open source) enthusiast Notes Java UI APIs, IBM Social Business Toolkit @ryanjbaxter, http://ryanjbaxter.com IBMer for 7 years Notes Widgets and OpenSocial developer XPages and Eclipse plugin development
  • 5. Agenda      5 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 6. OpenSocial   6 Social APIs and Mini Applications (Gadgets) IBM has a leadership role including – On the Board of Directors – Committers on Apache Shindig – Has been instrumental in drafting the OpenSocial 2.0 & 2.5 specification – Invented and gave to the community Embedded Experiences and many, many more capabilities – Provided enterprise extensions Implementations Include: Cisco, SAP, Jive, Atlassian, IBM SmartCloud, Google, Yahoo, MySpace, LifeRay, Oracle, Magneto, Tibco Tibbr, Surfnet, Paypal . . . SmartCloud, IBM Connections, IBM Notes/Domino®, Rational Team ConcertTM, Sterling, IBM Business Process Manager...
  • 7. Why Use OpenSocial?   IBM sees value in OpenSocial because it offers two very important things to IBM, its partners, and its customers – An application model based on modern web standards that easily isolates third party code – APIs for interacting with and creating social data (we still have a long way to go with this one) Cross product integration with Notes, iNotes, and Connections – Integrate your application into one or all of these products – Stand-alone (web) applications – Embedded within an envelope, i.e., email or activity entry –  7 Access to social data and data models from Connections and SmartCloud – Connections 4 activity streams API – SmartClouds person and contacts APIs
  • 8. Sample Gadget XML <?xml version="1.0" encoding="UTF-8" ?> <Module specificationVersion='2'> <ModulePrefs title="Acme Airlines"> <!-- Features provide sets of functionality to the gadget <Require feature="dynamic-height" /> <Require feature="embedded-experiences" /> </ModulePrefs> <!-- Content sections are the UI of the gadget --> <Content type="html" view="default, home"> <![CDATA[ <!--HTML, CSS, and JavaScript go here --> ]]> </Content> <Content type="html" view="embedded" href="ee.html"></Content> </Module> 8 -->
  • 9. The Basics   9 ModulePrefs – The gadget's ModulePrefs element contains basic information about the gadget ● Title, author, description, icon ● Features are also placed in the ModulePrefs element – Features provide a set of functionality and sometimes APIs to the gadget ● Message Bundles can be added to provide translated strings for your gadget Content Sections – Content sections contain the UI and business logic for your gadget ● You can have multiple content sections in one gadget XML ● The HTML, CSS, and JavaScript of your gadget can either be inside the content section or externally in a separate file – Different content sections can be distinguished via the view attribute
  • 10. Gadget Views     10 Gadget views originally were used to distinguish between the amount of real-estate available to a gadget – Home = little real-estate – Canvas = large amount of real-estate Since OpenSocial 2.0 we have been moving more towards views indicating different uses – Embedded view for embedded experiences – Dialog views for when a gadget is opened in a dialog Content sections with the same view name will be concatenated together Gadgets can switch views programmatically and find out what view is currently rendered – gadgets.views.requestNavigateTo(viewName) – gadgets.views.getCurrentView()
  • 11. Gadget Preferences    11 Any application is likely to have user preferences to allow the user to customize portions of the application Gadget preferences are specified in UserPref elements in the gadget XML – Strings, Booleans, Enums, and Lists all specified in the type attribute – Display name attribute shows in the UI – Name attribute can be used to access the preference within your code – You can also set a default value for a preference Get and set preferences via gadgets.Prefs – Require the feature setpefs when setting preferences
  • 12. Gadget Preferences Example <UserPref name="hello_pref" display_name="Name" default_value="World" datatype="string" required="true"/> <UserPref name="number_pref" display_name="Number" default_value="0" datatype="string" required="true"/> <UserPref name="list_pref" display_name="List" default_value="foo|bar| foobar" datatype="list" required="true"/> <UserPref name="boolean_pref" display_name="Boolean" default_value="false" datatype="bool" required="true"/> <UserPref name="enum_pref" display_name="Enum" default_value="Red" datatype="enum" required="true"> <EnumValue value="Red" display_value="Red"/> <EnumValue value="Green" display_value="Green"/> <EnumValue value="Blue" display_value="Blue"/> </UserPref> 12
  • 13. Developing OpenSocial Gadgets    13 The first step to building OpenSocial gadgets is setting up a development environment OpenSocial Explorer – An open source project from the OpenSocial Foundation meant to help developers get started building OpenSocial gadgets. – Contains sample gadgets and allows developers to modify and create new gadgets IBM Social Business Toolkit Playground – You can do everything you can do in the OpenSocial Explorer within the Playground...and MORE! – Contains all the same samples plus sample gadgets that show how to integrate with SmartCloud and Connections – Easily test your embedded experiences in emails and activity stream entries
  • 15. IBM Social Business Toolkit Playground – On Greenhouse 15
  • 17. Getting Started Writing JavaScript    17 Use your favorite JavaScript library Just like any other web app you don't want to begin running your business logic before the app has completely loaded gadgets.util.registerOnLoadHandler(function) – When the function passed to this API is called the gadget has completely loaded – Similar to JQuery and Dojo's ready functions – You can use those instead if you are using those libraries
  • 18. Making REST API Calls   All web applications need to make some kind of API calls and gadgets are no different Use gadgets.io.makeRequest – Asynchronous – Takes a URL, parameters object, and callback function – Supports OAuth endpoints – DO NOT USE OTHER LIBRARIES' XHR METHODS var params = {}; params[gadgets.io.RequestParameters.METHOD] =gadgets.io.MethodType.GET; params[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.C ontentType.JSON; var callback = function(response){ ... }; gadgets.io.makeRequest('http://example.com/api/foo', callback, params); 18
  • 19. OAuth      OpenSocial uses OAuth for making protected API calls – Support for OAuth 1.0a and 2.0 OAuth stands for OPEN AUTHORIZATION not OPEN AUTHENTICATION – Authentication technologies may be used when authorizing OAuth is very easy to use within a gadget, most of the hard work is done by the container Use makeRequest and simply specify which OAuth version to use The OAuth services used within the gadget need to be registered with the container Request Acme Gadget Approval 19 Browser Do you want to allow Acme Gadget access to your data? YES NO
  • 20. OAuth 1.0a in The Gadget XML   Service name must match what is registered in the container URLs come from the provider you are authenticating with <OAuth> <Service name="my service"> <Request url="http://provider.com/authorize"/> <Access url="http://provider.com/accessToken"/> <Authorization url="http://provider.com/authorize"/> </Service> </OAuth> 20
  • 21. OAuth 1.0a in The Gadget XML   Service name must match what is registered in the container URLs come from the provider you are authenticating with <OAuth> <Service name="my service"> <Request url="http://provider.com/authorize"/> <Access url="http://provider.com/accessToken"/> <Authorization url="http://provider.com/authorize"/> </Service> </OAuth> 21
  • 22. OAuth 2.0 in The Gadget XML  OAuth 2.0 is simpler, all URLs are configured on the container. – Service name needs to match what you register in the container – Scope indicates the API set you plan on accessing <OAuth2> <Service name="service name" scope="ProviderScope"> </Service> </OAuth2> 22
  • 23. Using OAuth in makeRequest  In the parameters passed to makeRequest indicate you are using OAuth 1.0a or 2.0 – gadgets.io.AuthorizeType.OAUTH2 – gadgets.io.AuthorizeType.OAUTH –  23 Require the feature “oauthpopup” – This feature can be used to open the popup window for the user to enter their credentials – Lets the gadget know when the OAuth dance is complete
  • 24. OAuth makeRequest Example var params = {}; params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.OAUTH2; params[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = 'serviceName'; gadgets.io.makeRequest('url', function(response) { if (response.oauthApprovalUrl) { var onOpen = function() {}; var onClose = function() {}; var popup = new gadgets.oauth.Popup(response.oauthApprovalUrl, null, onOpen, onClose); var click = popup.createOpenerOnClick(); click(); } else if (response.data) { //We have data so lets use it! } else { gadgets.error('something went wrong'); } }, params); 24
  • 25. Interacting With The Container     25 As of OpenSocial 2.0 gadgets can now interact with the container they are rendered in – WARNING: These may not be supported completely in all containers - even every IBM Container Breaking Out Of The Box – Gadgets are rendered in an iFrame and they used to be confined to that frame in the browser – With the open-views APIs gadgets can render other gadgets and URLs in new tabs, windows, dialogs, etc Contributing To The UI – Action contributions allows your gadget to contribute to the toolbar and menus of the container – This is very similar to action contributions in Eclipse plugin development Understanding What Is Selected – Gadgets can also listen for selection in Notes and iNotes – Emails, Contacts, and Files
  • 27. Embedded Experiences  27 Changing the way you get notifications – The goal is to make notifications more useful and interactive – Supported in email and activity streams ● IBM Connections, IBM Connections Mail, IBM Notes 9, IBM iNotes 9 ● JSON + XML
  • 28. Notifications Today Activity Entry Action Taken In Your App Standard MIME Email 28
  • 29. Notifications With Embedded Experiences Activity Entry Action Taken In Your App EE Data Model Gadget Standard MIME Email Your App 29
  • 30. Something Of Importance Took Place!  Embedded experiences are almost always generated due to an action that took place in an app – Someone completed a task – Someone sent a survey to a group of people – A travel request was submitted – A lead was entered in a CRM system –  30 Now that the action took place you want to let a group of people know about it – BE SOCIAL! Your APP Action Taken In App
  • 31. How do you want to let people know about it?    Traditionally emails were sent – Still applicable today, many apps still do this In a social network, emails are not the primary medium for communication – Almost all social networks have an activity stream so we should post it there Gadget EE { “gadget” : “http://acme.com/gagdet.xml”, “context” : { “id” : 123 } }  URL EE {“url” : “http://domino.com/myxpage.xsp”} 31 Activity Entry EE Data Model Standard MIME Email
  • 32. Active Notifications  With embedded experiences, notifications are no longer static – Active content allows your notifications to never go stale and always be up to date Gadget – – No need to leave your client, stay where you are and get your work done –  32 The data used in your notifications is unlimited, you have access to anything Your App
  • 33. Email Embedded Experience From: notifications@socialnetwork.com To: johndoe@example.com Subject: Social Network: Mary Has Commented On Your Status MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="XXXXboundary text" Mary has commented on your status. --XXXXboundary text Content-Type: text/plain Mary has commeneted on your status. --XXXXboundary text Content-Type: text/html <html> <!-- HTML representation here --> </html> --XXXXboundary text Content-Type: application/embed+json { "gadget" : "http://www.socialnetwork.com/embedded/commentgadget.xml", "context" : 123 } 33
  • 34. Activity Stream Embedded Experience { "postedTime": "2011-02-10T15:04:55Z", "actor": {...}, "verb": "post", "object" : {...}, "openSocial" : { "embed" : { "gadget" : "http://example.org/AlbumViewer.xml", "context" : { "albumName": "Germany 2009", "photoUrls": [...] } } } } 34
  • 36. Agenda      36 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 37. How Does OpenSocial Integrate Into IBM Connections?       37 Leveraging the existing widgets framework – OpenSocial is just a new type of widget, just like iWidgets OpenSocial gadgets available on your homepage – In the activity stream – On the right hand side of your activity stream homepage – In the “My Page” of your homepage Connections Mail supports embedded experiences in email OpenSocial gadgets can also extend the share box – Allows you to integrate other sharing capabilities right into Connections Connection's REST API and data model follows the OpenSocial standard OpenSocial gadgets can interact with their containers – Contribute actions for ShareBox integration – Open itself, Embedded Experiences, and URLs as dialogs
  • 38. Activity Streams Keep Your Users Up To Date    38 REST API and data model backed by the OpenSocial standard – JSON data model - easy to use in your web apps 3rd party apps can post entries to the activity stream – Inside and outside of Connections Integrate the Connections activity stream into your apps – This is how we integrate the activity stream into Notes – If your app is an OpenSocial container you can render embedded experiences too!
  • 39. Extending The Share Dialog   39 The share dialog allows you to share content from anywhere in Connections – By default you can update your status or upload a file The share dialog is extensible using OpenSocial gadgets – Take advantage of OpenSocial's actions feature
  • 40. Connections Mail   40 Connections Mail, like Notes and iNotes, supports embedded experiences as well The same embedded experience you build for the activity stream will work in mail
  • 41. Deploying OpenSocial Gadgets In Connections   41 Only Homepage admins can deploy gadgets Gadgets must be added to the widget catalog in Connections – Security ● Restricted or Trusted (SSO) – UI Integration points for the Share dialog – Proxy access ● Only outside the intranet ● Everything ● Custom – OAuth service mappings
  • 42. Registering OAuth Clients For Gadgets In Connections   42 You must register OAuth clients for gadgets to use in Connections if a gadget is using OAuth – This is a two step process done via the wasadmin console, you must register an OAuth provider and then register an OAuth client ● A provider may be used by multiple clients. For example Google, Facebook, Twitter, DropBox etc. – wsadmin>NewsOAuth2ConsumerService.registerProvider("provider123", "standard", "true", "false", "http://example.com/oauth/authorization", "https://example.com/oauth/token") ● A client gets bound to a gadget and points to a provider. – You specify the client ID and secret obtained from the provider for your gadget – wsadmin>NewsOAuth2ConsumerService.registerClient("client123", "provider123", "confidential", "code", "my-client", "my-secret", "https://connections.com/connections/opensocial/gadgets/oauth2callback") After the clients have been registered you can bind them via wsadmin commands or via the Homepage administration UI
  • 44. Agenda      44 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 45. How Does OpenSocial Integrate Into IBM Notes and iNotes?   ●  45 Leveraging the existing My Widgets framework – OpenSocial is just a new type of widget, just like Google Gadgets or Web Page widgets OpenSocial gadgets are available in both Notes and iNotes – In the sidebar – In tabs – In floating (modeless) windows – In new windows (Notes only) – In Mail as Embedded Experiences Wire LiveText to OpenSocial gadgets – The recognized content is passed through gadget preference – By default launches in a floating window – Can be configured to open in tab, sidebar or new window
  • 46. How Does OpenSocial Integrate Into IBM Notes and iNotes?  46 OpenSocial gadgets can interact with their containers – Contribute actions ● To top-level menus and toolbars in Notes ● To the context menu for mail messages, contacts, attachments (Notes only), and LiveNames (Notes only) – Contribute OpenSearch search engines to the Notes search center – Listen for and publish selection – Open itself, Embedded Experiences, and URLs in new windows, tabs, floating windows and the sidebar
  • 47. OpenSearch  Use OpenSearch APIs to contribute to the Notes search center <Optional feature="opensearch"> <Param name="opensearch-description"> <![CDATA[ <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" > <ShortName>CNN.com</ShortName> <Description>CNN.com Search</Description> <InputEncoding>UTF-8</InputEncoding> <SearchForm>http://search.cnn.com/</SearchForm> <Url type="text/html" method="get" template="http://www.cnn.com/search/?query={searchTerms}"> </Url> </OpenSearchDescription> ]]> </Param> </Optional>  47 More information in the OpenSocial spec – http://opensocial-resources.googlecode.com/svn/spec/2.5/CoreGadget.xml#OpenSearch
  • 48. Creating OpenSocial Widgets in Notes and iNotes ● 48 Notes client provides wizards to create OpenSocial Widgets from gadgets
  • 49. Managing OpenSocial Widgets in Notes and iNotes   ● 49 Widget Catalog database is used to manage OpenSocial Gadgets in Notes and iNotes – OpenSocial widget is not usable until it's published to catalog and approved by administrator During the approval process, administrators will configure – Proxy settings – required – OAuth consumer information – required only if a gadget need them A secure credential store database is used to manage sensitive information
  • 50. Creating Widgets for URL Embedded Experience in Notes/iNotes  50 You need to create a Web Page widget and enable it for embedded experiences – Make the Embedded Experiences URL generic to accommodate all sub-pages of the application – Wild cards are allowed
  • 51. Deploying OpenSocial Widgets in Notes and iNotes    51 Approved widgets need to be installed in Notes and iNotes Widgets can be pushed to end users by policy settings – This is the recommended way to deploy widgets End users can also install additional widgets from catalog by themselves
  • 53. Agenda      53 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 55. Using the IBM SBT To Render Gadgets    55 Using some of the OSGi bundles found in the IBM SBT you can not render gadgets within your own apps – You can allow users to integrate into your applications using gadgets – You can build a dashboard based on gadgets – You can embed the Connections Activity Stream gadget within your application The OSGi bundles from the SBT provide a service that other apps running on Domino can use to render their own gadgets Supports both WABs (Web Application Bundles) and XPages on Domino – You can use extension points to contribute “containers” to the OpenSocial service running on the Domino server
  • 56. Key Concepts    56 Depend on com.ibm.sbt.opensocial.domino or com.ibm.xsp.opensocial To render gadgets within your own application you must supply at least one instance of a class that implements ContainerExtPoint – Can be registered via the extension point com.ibm.sbt.opensocial.domino.container ● This should be used by OSGi bundles – Can be registered by calling ContainerExtPointManager.registerContainers ● This should be used by XPage apps Then you need to include a script tag in your application to include the OpenSocial Container JS – [domino server]/osplayground/gadgets/js/container:embedded-experiences:openviews:actions:selection.js?c=1&debug=1&container=sampleId – The container id must match the one from your ContainerExtPoint
  • 58. Security Tokens    A security token is an encrypted string which contains information about the user, container, and app It is required in order to render and gadgets in your application GET /sbtos/container/stgen Parameter Name c The domain of the container i The app ID. Any unique ID for your app will do. m The module ID, should always be 0. u 58 The ID of the container. d  Description The app url. Response: {“token” : “123”, “ttl” : 5678}
  • 60. Agenda      60 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 61. XPages and OpenSocial   61 XPages and Embedded Experience mail – XPages can be embedded in mail directly by using a URL embedded experience – Gadget XML can be put in an NSF and access application data via XPages REST API – It's easy to send embedded experience emails from XPage apps XPages and Activity Streams – Support to post activities with embedded experiences to activity streams – Support to read activity stream data in XPages apps
  • 62. Creating Embedded Experience Emails Using Notes.jar 62
  • 63. XPages Simple Action To Send Embedded Experience Emails  New “Send Mail” simple action – Available in 9.0 – Provides an easy way to send mails and supports Embedded Experience mail – You can either compose JSON by yourself or XPages will compose it based on your input. – 63
  • 64. Leveraging SSO For XPage Embedded Experiences    We do not want users to log in again when opening a XPage embedded experience The mail server and the server hosting the XPages app must have multi-server SSO enabled – For iNotes users, the servers must be in same SSO domain – For Notes users, a managed account needs to be created for the server hosting the XPages application ● This can be pushed via policy In the case of XPage embedded experiences in the Connections activity stream, the Connections server must be in the same SSO domain as the Domino server hosting the app – If you want to integrate a classic web based Domino application with embedded experience, the above steps apply as well. 64
  • 67. Resources           67 OpenSocial Tutorials: https://opensocial.atlassian.net/wiki/display/OS/Home OpenSocial Explorer: http://opensocial.github.io/explorer/download.html Apache Shindig: http://shindig.apache.org IBM Social Business SDK: http://ibmsbt.openntf.org/ IBM Social Business Toolkit Playground: https://greenhouse.lotus.com/sbt/SBTPlayground.nsf/ IBM Domino 9.0 Social Edition OpenSocial Component Deployment Cookbook: http://www-10.lotus.com/ldd/dominowiki.nsf/dx/IBM_Domino_9.0_Social_Edition_OpenSocial_D Developing Gadgets For Connections: https://www.ibm.com/developerworks/lotus/documentation/osgadgetconnections4/index.html OpenSocial Specs: https://opensocial.atlassian.net/wiki/display/OSD/Specs OAuth Client Registration: http://www-10.lotus.com/ldd/lcwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+4.0+d Activity Streams API: http://www-10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+
  • 68. Resources   68 OpenSocial Gadgets In The Playground: https://github.com/OpenNTF/SocialSDK/wiki/OpenSocial-Gadgets-In-The-Playground Building OpenSocial Containers Using The SBT: https://github.com/OpenNTF/SocialSDK/wiki/Building-Your-Own-OpenSocial-Container
  • 69. Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. © Copyright IBM Corporation 2014. All rights reserved.  U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.  IBM, the IBM logo, ibm.com, IBM Connections, IBM Notes Social Edition, IBM iNotes Social Edition, IBM Domino Social Edition are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml Other company, product, or service names may be trademarks or service marks of others. 69
  • 70. Engage Online   SocialBiz User Group socialbizug.org – Join the epicenter of Notes and Collaboration user groups Follow us on Twitter Engage – @IBMConnect and @IBMSocialBiz Online  LinkedIn http://bit.ly/SBComm – Participate in the IBM Social Business group on LinkedIn:  Facebook https://www.facebook.com/IBMSocialBiz – Like IBM Social Business on Facebook  Social Business Insights blog ibm.com/blogs/socialbusiness – Read and engage with our bloggers 70
  • 71.  Access Connect Online to complete your session surveys using any: – Web or mobile browser – Connect Online kiosk onsite 71