SlideShare a Scribd company logo
1 of 47
Download to read offline
BP205: There’s an API for
that! Why and how to build
on the IBM Connections
PLATFORM
Mikkel Flindt Heisterberg
Senior Solution Architect and Partner
OnTime®
About me
§  Developer, geek, father
§  With IntraVision the makers of OnTime® Group
Calendar – we are in the TechnOasis
§  Love developing plugins for IBM® Notes® and
developing for IBM® Connections®
§  IBM® Champion since program inception
§  Twitter: @lekkim
§  Blog: http://lekkimworld.com
Notices and Disclaimers
Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include
unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED.
IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF
PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results
they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational
purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory
requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products
will ensure that the customer is in compliance with any law.
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with
this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers
of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES,
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right.
IBM, the IBM logo, ibm.com, BrassRing®, Connections™, Domino®, Global Business Services®, Global Technology Services®, SmartCloud®, Social Business®, Kenexa®, Notes®, PartnerWorld®, Prove It!®,
PureSystems®, Sametime®, Verse™, Watson™, WebSphere®, Worklight®, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service
names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
Agenda
§ Introduction to
– IBM Connections as a PLATFORM
– The API’s - REST’o’RAMA
– Widgets for IBM Connections
– Developing for the Activity Stream
– The SPI’s specifically the Event SPI
§ Demo and demo application
IBM CONNECTIONS AS
A PLATFORM
IBM Connections as a PLATFORM
IBM Connections == series of services and building blocks
THE API’S –
REST’O’RAMA
Fire up your REST client and get crackin’!
All features have an API
§  All API’s are based on Atom standard – pretty verbose using XML for
output but once you grok it it’s pretty easy to go between features.
§  Please use API’s where ever possible and refrain from going directly to the
backend databases although it’s possible…
§  All API’s support basic and form based authentication (LptaToken(2)) as
well as OAuth. Some API’s allow anonymous access as well.
§  For server side applications I suggest you use OAuth where possible as
issuing requests on users behalf isn’t feasible using form based or basic
authentication.
OAuth 2.0
§  OAuth 2.0 allows an application to work on a users behalf after the user grants this
authority to the application.
§  Application requests OAuth support from IBM Connections and the user authorizes
the application using two URL endpoints. The user can revoke the authorization at
any point.
§  Please do not bother with OAuth if integration (API usage) is
done on the glass i.e. from a browser application such as a
widget. OAuth should only be used if a server side application
needs to work on behalf of the user (and LtpaToken(2) access
cannot be guaranteed).
OAuth 2.0 – register application using wsadmin
wsadmin>import sys
wsadmin>execfile("oauthAdmin.py”)
wsadmin>OAuthApplicationRegistrationService.addApplicati
on("bp205", "BP205 Demo",
https://inside.intravision.dk/bp205/oauth20_cb)
An application was added with the new id bp205.
wsadmin>clientSecret =
OAuthApplicationRegistrationService.getApplicationById
("bp205").get("client_secret”)
wsadmin>print clientSecret
MSGxGCQhGUcM93n50CalSk1Du1svohfy3SattAqhRDQcm...
The appplication development wiki is your friend
WIDGETS
Psssst!! They are actually iWidgets… And then there are gadgets but
that’s something else…
Widgets in Profiles
Widgets in Communities
Widgets - modes
Widgets - modes
§ There are 4 modes defined
– View
– Fullpage
– Search
(only for Communities)
– Edit
Widgets – descriptor
<iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage”
mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
iScope="com.example.MyWidget">
<iw:resource uri="http://www.example.com/widget1/MyWidget.js" />
<iw:resource uri=”./MyWidget.css" />
<iw:content mode="view">
Loading...
</iw:content>
<iw:content mode="fullpage">
<![CDATA[
<div id="_IWID_widgetContent">Loading...</div>
]]>
</iw:content>
</iw:iwidget>
Widgets – descriptor
<iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage”
mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
iScope="com.example.MyWidget">
<iw:resource uri="http://www.example.com/widget1/MyWidget.js" />
<iw:resource uri=”./MyWidget.css" />
<iw:content mode="view">
Loading...
</iw:content>
<iw:content mode="fullpage">
<![CDATA[
<div id="_IWID_widgetContent">Loading...</div>
]]>
</iw:content>
</iw:iwidget>
Widgets – descriptor
<iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage”
mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
iScope="com.example.MyWidget">
<iw:resource uri="http://www.example.com/widget1/MyWidget.js" />
<iw:resource uri=”./MyWidget.css" />
<iw:content mode="view">
Loading...
</iw:content>
<iw:content mode="fullpage">
<![CDATA[
<div id="_IWID_widgetContent">Loading...</div>
]]>
</iw:content>
</iw:iwidget>
Widgets – descriptor
<iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage”
mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
iScope="com.example.MyWidget">
<iw:resource uri="http://www.example.com/widget1/MyWidget.js" />
<iw:resource uri=”./MyWidget.css" />
<iw:content mode="view">
Loading...
</iw:content>
<iw:content mode="fullpage">
<![CDATA[
<div id="_IWID_widgetContent">Loading...</div>
]]>
</iw:content>
</iw:iwidget> _IWID_ replaced at runtime with the widget ID
(iContext.widgetId) – very nice if you want to allow multiple
instances of your widget on the same page
Widgets – descriptor
<iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage”
mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
iScope="com.example.MyWidget">
<iw:resource uri="http://www.example.com/widget1/MyWidget.js" />
<iw:resource uri=”./MyWidget.css" />
<iw:content mode="view">
Loading...
</iw:content>
<iw:content mode="fullpage">
<![CDATA[
<div id="_IWID_widgetContent">Loading...</div>
]]>
</iw:content>
</iw:iwidget>
Widgets – iScope – declaration using dojo
dojo.provide("com.example.MyWidget");
dojo.declare("com.example.MyWidget", null, {
constructor: function() {},
onLoad: function() {},
onView: function() {},
onEdit: function() {},
onFullpage: function() {},
onSearch: function() {}
});
Widgets – iScope – declaration using vanilla JavaScript
// define namespace (not best of breed code)
if (!window[”com”]) window[”com”] = {};
if (!window.com[”example”]) window.com[”example”] = {};
// define constructor and methods in prototype
window.com.example.MyWidget = function() {
// constructor
}
window.com.example.MyWidget.protototype.onLoad = function() {
// onLoad method
}
window.com.example.MyWidget.protototype.onView = function() {
// onView method
}
Widgets – adding to the UI
Declaratively configured using widgets-config.xml
	
  
<widgetDef defId="com.example.MyWidget”
url="/widget1/MyWidget.xml" loginRequired="true”
showInPallette=”true” primaryWidget=”false”>
<itemSet>
<item name="profilesCtx" value="{profilesSvcRef}" />
<item name="myProp" value="Abc123" />
</itemSet>
</widgetDef>
Widgets – iContext
§  An iContext instance is set into the iScope instance
§  The iContext provides access to the widget markup (e.g. root element),
I/O related functions (i.e. URL rewriting), widget attributes etc.
§  The iContext is easily accessed from the iScope class using
this.iContext
§  Important	
  func-ons	
  include:
–  iContext.getRootElement() : DOM Element
–  iContext.getElementById(id:string) : DOM Element
–  iContext.getiWidgetAttributes() : ItemSet
–  iContext.getUserProfile() : ItemSet
–  iContext.io.rewriteURI(uri:string) : string
–  iContext.iEvents.fireEvent(name:string, type:string,
payload:object)
WIDGETS AND
LOADING
IBM Connections v.5 changed a lot and not necessarily for the better…
IBM Connections v.5 changed a lot
§  Prior to IBM Connections v.5 the browser loaded the resources for widgets hence the
resources were cached by the browser.
–  Browser cache is easy to clear and updated resources (JavaScript / CSS) could be loaded easily.
§  From IBM Connections v.5 the Common module aggregates and caches all widget
resources making it near impossible to work with for development.
§  Still no appdev environment for iWidgets.
§  Suggest using a mock environment approach loaded through the AJAX proxy of IBM
Connections. This allows easy development with tons of pains and frustration from having
to battle the Common module and having to restart servers and applications.
§  Will show example later…
Loading prior to IBM Connections 5
Loading from IBM Connections 5
Loading from IBM Connections 5
http://www.youtube.com/
watch?v=1GLpA604Iic
THE ACTIVITY STREAM
Activity Stream
§ The following is based on my
highly acclaimed (cough,
cough) presentation on the
Activity Stream
§ Much more detail and many
more examples there
§ See http://slideshare.net/lekkim
for complete presentation
Activity Stream
§ IS
– River of news – it’s like water flowing by you
– Notifications about ”stuff” happening in (other) systems – we refer to
these notifications as entries
§ ISN’T
– A new inbox – doesn’t replace email
– A perpeptual data store – entries are deleted based on a server
defined purge interval (default is 30 days) unless saved or actionable
Activity Stream
§ In my opinion it makes most sense to not consider the
activity stream as one single stream
§ Instead think that
– Each user has his/her own (@me)
– There is a public stream (@public)
– A community may have a stream if the widget has been added
by a community owner – if there’s no stream for a community
posting to it will return a ”403 Forbidden”
Activity Stream
•  You will mainly use the POST and PUT methods to send JSON data (Content-Type: application/json) to
the API
•  JSON is super simple key/value data format. It has simple datatypes (strings, numbers, booleans),
objects and arrays
{
”email”: ”mh@intravision.dk”,
”niceGuy”: true,
”age”: 38,
”name”: {
”first”: ”Mikkel Flindt”, ”last”: ” Heisterberg”
},
”Connectospheres”: [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
}
Activity Stream – minimum POST body
{
"actor": {"id": "@me"},
"verb": "post",
"title": "Some entry title",
"updated": "2013-05-17T12:00:00.000Z",
"object": {
"title": "Some object title",
"objectType": "note",
"id": "1234567890-1234567890-1234567890"
}
}
Activity Stream – building the URL
https://<host>/connections/opensocial/<auth>/rest/activitystreams
/<user ID>/<group ID>/<application ID>/<activity ID>
Component Meaning
<auth> (optional) If using form based authentication leave this component out. Otherwise options are anonymos, basic,
oauth.
<user ID> The user whose stream you’re addressing – use @me for current users stream, @public for public stream or a
community ID for the stream in a community.
<group ID> The group of entries you’re addressing – use @all for all posts or options for special meaning such as @saved,
@actions, @mentions. Refer for InfoCenter and resources slide for more.
<application ID> When retrieving entries this refers to the application (or ”generator”) that created the entry. All the IBM Connections
app names can be used (profiles, blogs, wikis etc.) plus custom ones (e.g. ontimegc). @all used for all
applications.
<activity ID> Used to reference a specific event e.g. for updating saved status.
Activity Stream – URL examples
1.  /activitystreams/@me/@all
List my (current users) entries
2.  /activitystreams/@public/@all
List public stream entries
3.  /activitystreams/@me/@actions
List my actionable events
4.  /activitystreams/@me/@saved/blogs
List my saved events from blogs
5.  /@me/@all/@all/urn:lsid:lconn.ibm.com:activitystreams.story:bdb562f…
Work with entry from my stream based on ID
* All URLs above start with
https://<host>/connections/opensocial/<auth>/rest
Also used
when creating
new entries
(e.g. POSTing)
THE SPI’S
Other Programming Interfaces
§  SPIs are lower-level programming interfaces which may be subject to modification from
release to release.
§  Event SPI
–  The Event SPI allows third parties to consume event data generated by IBM Connections.
§  Seedlist SPI
–  Use the Seedlist service provider interface (SPI) provided with IBM Connections to integrate your search
engine with IBM Connections content.
§  Service SPI
–  You can use the Service SPI to learn about the applications running in your IBM Connections deployment.
§  User SPI
–  You can use the User SPIs to access information about the users in your IBM Connections deployment.
Event Handlers – declaration
Declara-vely	
  configured	
  using	
  events-­‐config.xml	
  
	
  
<postHandler enabled=”true" invoke="ASYNC"
name=”MyEventHandler” class="com.example.MyEventHandler">
<subscriptions>
<subscription source="*" type="*" eventName="*"/>
<!--
<subscription source=”PROFILES" type="*"
eventName=”profiles.updated"/>
<subscription source=”PROFILES" type="*"
eventName=”profiles.person.photo.updated"/>
-->
</subscriptions>
</postHandler>
Event Handlers – implementation
public class MyEventHandler implements EventHandler {
public void init() throws EventHandlerInitException {}
public void destroy() {}
public void handleEvent(Event event) throws EventHandlerException {
String eventName = event.getName(); // event name
Person actor = event.getActor(); // person that triggered event
// look at the event name
if (event.getName().equals("profiles.person.photo.updated")) {
// a profile photo was updated
this.doEventProfilesPhotoUpdated(event);
} else if (event.getName().equals("profiles.updated")) {
// a profile was updated
this.doEventProfilesUpdated(event);
}
}
}
Event Handlers – summary
§ Make event handlers asynchroneous
§ Be defensive – consider what happens if events are lost
– What happens if your event handler fail?
– What happens if the recipient of the event (3rd party API) fail?
§ Suggestion:
– Do a minimum of processing in the event handler and then post
message with data to a durable queue. Have the queue consumer –
e.g. a message driven bean – do the real processing as it can be
done under transaction control
Demo
§  WebSphere® Application Server Enterprise Application (WAS EAR)
–  BP205_JAR: Shared code
–  BP205_WAR: Web application module – API servlet and widget component
–  BP205_EJB: Enterprise Java Bean modules comprising the business logic components
–  BP205_EAR: Combines the above three into a single installable application
§  IBM Connections Event Handler
–  BP205_EventHandler: Event handler installed into WAS and configured using events-config.xml
§  WebSphere Application Server queue
–  Event handler listens for events, extract data and post message to queue. Messages picked up
by message driven bean (MDB) and passed into busiess logic components
Engage Online
§  SocialBiz User Group socialbizug.org
–  Join the epicenter of Notes and Collaboration user groups
§  Social Business Insights blog ibm.com/blogs/socialbusiness
–  Read and engage with our bloggers
§  Follow us on Twitter
–  @IBMConnect and @IBMSocialBiz
§  LinkedIn http://bit.ly/SBComm
–  Participate in the IBM Social Business group on LinkedIn
§  Facebook https://www.facebook.com/IBMConnected
–  Like IBM Social Business on Facebook
Thank you
§ Presentations on slideshare.net – this one is coming
§ Contact me – often times more than willing to help
§ Questions? Fire away!

More Related Content

What's hot

IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...
IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...
IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...IBM Connections Developers
 
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
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)TIMETOACT GROUP
 
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
 
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections Communities
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections CommunitiesIBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections Communities
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections CommunitiesIBM Connections Developers
 
TI 1641 - delivering enterprise software at the speed of cloud
TI 1641 - delivering enterprise software at the speed of cloudTI 1641 - delivering enterprise software at the speed of cloud
TI 1641 - delivering enterprise software at the speed of cloudVincent Burckhardt
 
What is new in IBM Connections 5.5 and IBM Docs 2.0
What is new in IBM Connections 5.5 and IBM Docs 2.0What is new in IBM Connections 5.5 and IBM Docs 2.0
What is new in IBM Connections 5.5 and IBM Docs 2.0Luis Benitez
 
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
 
ARCHIVE - XCC 4.5 Web Content Management Extension for IBM Connections
ARCHIVE - XCC 4.5  Web Content Management Extension for IBM ConnectionsARCHIVE - XCC 4.5  Web Content Management Extension for IBM Connections
ARCHIVE - XCC 4.5 Web Content Management Extension for IBM ConnectionsTIMETOACT GROUP
 
How IBM Enabled its Worldwide Sales Force with Mobile Technologies
How IBM Enabled its Worldwide Sales Force with Mobile TechnologiesHow IBM Enabled its Worldwide Sales Force with Mobile Technologies
How IBM Enabled its Worldwide Sales Force with Mobile TechnologiesChris Pepin
 
IBM Connections Cloud Application Development Strategy
IBM Connections Cloud Application Development StrategyIBM Connections Cloud Application Development Strategy
IBM Connections Cloud Application Development StrategyLuis Benitez
 
AD 1656 - Transforming social data into business insight
AD 1656 - Transforming social data into business insightAD 1656 - Transforming social data into business insight
AD 1656 - Transforming social data into business insightVincent Burckhardt
 
4789 creating production-ready, secure and scalable applications in ibm cloud...
4789 creating production-ready, secure and scalable applications in ibm cloud...4789 creating production-ready, secure and scalable applications in ibm cloud...
4789 creating production-ready, secure and scalable applications in ibm cloud...Shikha Srivastava
 
Ad402 create self-service apps in minutes with ibm forms experience builder
Ad402   create self-service apps in minutes with ibm forms experience builderAd402   create self-service apps in minutes with ibm forms experience builder
Ad402 create self-service apps in minutes with ibm forms experience buildermlech23
 
IBM Collaboration Mobile Strategy and a New Way To work
IBM Collaboration Mobile Strategy and a New Way To workIBM Collaboration Mobile Strategy and a New Way To work
IBM Collaboration Mobile Strategy and a New Way To workLuis Benitez
 
IBM Digital Experience Overview - ICS.UG 2016
IBM Digital Experience Overview - ICS.UG 2016IBM Digital Experience Overview - ICS.UG 2016
IBM Digital Experience Overview - ICS.UG 2016ICS User Group
 

What's hot (18)

IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...
IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...
IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...
 
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...
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
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
 
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections Communities
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections CommunitiesIBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections Communities
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections Communities
 
TI 1641 - delivering enterprise software at the speed of cloud
TI 1641 - delivering enterprise software at the speed of cloudTI 1641 - delivering enterprise software at the speed of cloud
TI 1641 - delivering enterprise software at the speed of cloud
 
What is new in IBM Connections 5.5 and IBM Docs 2.0
What is new in IBM Connections 5.5 and IBM Docs 2.0What is new in IBM Connections 5.5 and IBM Docs 2.0
What is new in IBM Connections 5.5 and IBM Docs 2.0
 
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...
 
ARCHIVE - XCC 4.5 Web Content Management Extension for IBM Connections
ARCHIVE - XCC 4.5  Web Content Management Extension for IBM ConnectionsARCHIVE - XCC 4.5  Web Content Management Extension for IBM Connections
ARCHIVE - XCC 4.5 Web Content Management Extension for IBM Connections
 
How IBM Enabled its Worldwide Sales Force with Mobile Technologies
How IBM Enabled its Worldwide Sales Force with Mobile TechnologiesHow IBM Enabled its Worldwide Sales Force with Mobile Technologies
How IBM Enabled its Worldwide Sales Force with Mobile Technologies
 
IBM Connections Cloud Application Development Strategy
IBM Connections Cloud Application Development StrategyIBM Connections Cloud Application Development Strategy
IBM Connections Cloud Application Development Strategy
 
AD 1656 - Transforming social data into business insight
AD 1656 - Transforming social data into business insightAD 1656 - Transforming social data into business insight
AD 1656 - Transforming social data into business insight
 
4789 creating production-ready, secure and scalable applications in ibm cloud...
4789 creating production-ready, secure and scalable applications in ibm cloud...4789 creating production-ready, secure and scalable applications in ibm cloud...
4789 creating production-ready, secure and scalable applications in ibm cloud...
 
Mini Project- Shopping Cart Development
Mini Project- Shopping Cart DevelopmentMini Project- Shopping Cart Development
Mini Project- Shopping Cart Development
 
Ad402 create self-service apps in minutes with ibm forms experience builder
Ad402   create self-service apps in minutes with ibm forms experience builderAd402   create self-service apps in minutes with ibm forms experience builder
Ad402 create self-service apps in minutes with ibm forms experience builder
 
IBM Collaboration Mobile Strategy and a New Way To work
IBM Collaboration Mobile Strategy and a New Way To workIBM Collaboration Mobile Strategy and a New Way To work
IBM Collaboration Mobile Strategy and a New Way To work
 
IBM Digital Experience Overview - ICS.UG 2016
IBM Digital Experience Overview - ICS.UG 2016IBM Digital Experience Overview - ICS.UG 2016
IBM Digital Experience Overview - ICS.UG 2016
 
2829 liberty
2829 liberty2829 liberty
2829 liberty
 

Viewers also liked

IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPagesIBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPagesbeglee
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...Benedek Menesi
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityPaul Withers
 
BP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour RightBP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour RightGabriella Davis
 
Connections Directory Integration: A Tour Through Best Practices for Directo...
Connections Directory Integration:  A Tour Through Best Practices for Directo...Connections Directory Integration:  A Tour Through Best Practices for Directo...
Connections Directory Integration: A Tour Through Best Practices for Directo...Gabriella Davis
 
ConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessRené Winkelmeyer
 
External Users Accessing Connections
External Users Accessing Connections External Users Accessing Connections
External Users Accessing Connections Gabriella Davis
 
Customizing the Mobile Connections App
Customizing the Mobile Connections AppCustomizing the Mobile Connections App
Customizing the Mobile Connections AppProlifics
 

Viewers also liked (10)

IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPagesIBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
BP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour RightBP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour Right
 
Connections Directory Integration: A Tour Through Best Practices for Directo...
Connections Directory Integration:  A Tour Through Best Practices for Directo...Connections Directory Integration:  A Tour Through Best Practices for Directo...
Connections Directory Integration: A Tour Through Best Practices for Directo...
 
ConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily Business
 
External Users Accessing Connections
External Users Accessing Connections External Users Accessing Connections
External Users Accessing Connections
 
Customizing the Mobile Connections App
Customizing the Mobile Connections AppCustomizing the Mobile Connections App
Customizing the Mobile Connections App
 

Similar to IBM Connections API for building apps

Drone Payloader using a Servo and a Raspberry Pi
Drone Payloader using a Servo and a Raspberry Pi Drone Payloader using a Servo and a Raspberry Pi
Drone Payloader using a Servo and a Raspberry Pi Markus Van Kempen
 
Sap guided workflow in ibm bpm
Sap guided workflow in ibm bpmSap guided workflow in ibm bpm
Sap guided workflow in ibm bpmsflynn073
 
SAP guided workflow in IBM BPM
SAP guided workflow in IBM BPMSAP guided workflow in IBM BPM
SAP guided workflow in IBM BPMsflynn073
 
Complete Solutions in ECM using IBM, Internal and Third Party, Custom Components
Complete Solutions in ECM using IBM, Internal and Third Party, Custom ComponentsComplete Solutions in ECM using IBM, Internal and Third Party, Custom Components
Complete Solutions in ECM using IBM, Internal and Third Party, Custom ComponentsPyramid Solutions, Inc.
 
Defining managing & publishing ap is in the cloud saa-s
Defining managing & publishing ap is in the cloud   saa-sDefining managing & publishing ap is in the cloud   saa-s
Defining managing & publishing ap is in the cloud saa-ssflynn073
 
4515 Modernize your CICS applications for Mobile and Cloud
4515 Modernize your CICS applications for Mobile and Cloud4515 Modernize your CICS applications for Mobile and Cloud
4515 Modernize your CICS applications for Mobile and Cloudnick_garrod
 
Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!Arthur De Magalhaes
 
Integrate Application Security Testing into your SDLC
Integrate Application Security Testing into your SDLCIntegrate Application Security Testing into your SDLC
Integrate Application Security Testing into your SDLCIBM Security
 
Domino Entwicklung aus der Vogelperspektive
Domino Entwicklung aus der VogelperspektiveDomino Entwicklung aus der Vogelperspektive
Domino Entwicklung aus der VogelperspektiveBelsoft
 
Why z/OS is a great platform for developing and hosting APIs
Why z/OS is a great platform for developing and hosting APIsWhy z/OS is a great platform for developing and hosting APIs
Why z/OS is a great platform for developing and hosting APIsTeodoro Cipresso
 
DMT-2467 Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...
DMT-2467	Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...DMT-2467	Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...
DMT-2467 Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...IBM Rational software
 
Capgemini Connected Car Demo Using IBM Internet of Things Foundation on Bluemix
Capgemini Connected Car Demo Using IBM Internet of Things Foundation on BluemixCapgemini Connected Car Demo Using IBM Internet of Things Foundation on Bluemix
Capgemini Connected Car Demo Using IBM Internet of Things Foundation on BluemixCapgemini
 
InterConnect 2017 : z/OS-as-a-Service: The Disposable LPAR
InterConnect 2017 : z/OS-as-a-Service: The Disposable LPARInterConnect 2017 : z/OS-as-a-Service: The Disposable LPAR
InterConnect 2017 : z/OS-as-a-Service: The Disposable LPARDevOps for Enterprise Systems
 
Integrating IBM Internet of Things Platform and IBM Blockchain
Integrating IBM Internet of Things Platform and IBM BlockchainIntegrating IBM Internet of Things Platform and IBM Blockchain
Integrating IBM Internet of Things Platform and IBM BlockchainRahul Gupta
 
DESY's new data taking and analysis infrastructure for PETRA III
DESY's new data taking and analysis infrastructure for PETRA IIIDESY's new data taking and analysis infrastructure for PETRA III
DESY's new data taking and analysis infrastructure for PETRA IIIUlf Troppens
 
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...SocialBiz UserGroup
 
WebSphere Liberty HTML5 Real-Time Features Lab
WebSphere Liberty HTML5 Real-Time Features LabWebSphere Liberty HTML5 Real-Time Features Lab
WebSphere Liberty HTML5 Real-Time Features LabBrian Pulito
 
World of Watson - Integrating IBM Watson IOT Platform and IBM Blockchain
World of Watson - Integrating IBM Watson IOT Platform and IBM BlockchainWorld of Watson - Integrating IBM Watson IOT Platform and IBM Blockchain
World of Watson - Integrating IBM Watson IOT Platform and IBM BlockchainRahul Gupta
 
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT ApplicationsInterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applicationsgjuljo
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182Robert Nicholson
 

Similar to IBM Connections API for building apps (20)

Drone Payloader using a Servo and a Raspberry Pi
Drone Payloader using a Servo and a Raspberry Pi Drone Payloader using a Servo and a Raspberry Pi
Drone Payloader using a Servo and a Raspberry Pi
 
Sap guided workflow in ibm bpm
Sap guided workflow in ibm bpmSap guided workflow in ibm bpm
Sap guided workflow in ibm bpm
 
SAP guided workflow in IBM BPM
SAP guided workflow in IBM BPMSAP guided workflow in IBM BPM
SAP guided workflow in IBM BPM
 
Complete Solutions in ECM using IBM, Internal and Third Party, Custom Components
Complete Solutions in ECM using IBM, Internal and Third Party, Custom ComponentsComplete Solutions in ECM using IBM, Internal and Third Party, Custom Components
Complete Solutions in ECM using IBM, Internal and Third Party, Custom Components
 
Defining managing & publishing ap is in the cloud saa-s
Defining managing & publishing ap is in the cloud   saa-sDefining managing & publishing ap is in the cloud   saa-s
Defining managing & publishing ap is in the cloud saa-s
 
4515 Modernize your CICS applications for Mobile and Cloud
4515 Modernize your CICS applications for Mobile and Cloud4515 Modernize your CICS applications for Mobile and Cloud
4515 Modernize your CICS applications for Mobile and Cloud
 
Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!Exposing auto-generated Swagger 2.0 documents from Liberty!
Exposing auto-generated Swagger 2.0 documents from Liberty!
 
Integrate Application Security Testing into your SDLC
Integrate Application Security Testing into your SDLCIntegrate Application Security Testing into your SDLC
Integrate Application Security Testing into your SDLC
 
Domino Entwicklung aus der Vogelperspektive
Domino Entwicklung aus der VogelperspektiveDomino Entwicklung aus der Vogelperspektive
Domino Entwicklung aus der Vogelperspektive
 
Why z/OS is a great platform for developing and hosting APIs
Why z/OS is a great platform for developing and hosting APIsWhy z/OS is a great platform for developing and hosting APIs
Why z/OS is a great platform for developing and hosting APIs
 
DMT-2467 Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...
DMT-2467	Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...DMT-2467	Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...
DMT-2467 Like the Features in Rational DOORS 9? Come Check Them Out in DOORS...
 
Capgemini Connected Car Demo Using IBM Internet of Things Foundation on Bluemix
Capgemini Connected Car Demo Using IBM Internet of Things Foundation on BluemixCapgemini Connected Car Demo Using IBM Internet of Things Foundation on Bluemix
Capgemini Connected Car Demo Using IBM Internet of Things Foundation on Bluemix
 
InterConnect 2017 : z/OS-as-a-Service: The Disposable LPAR
InterConnect 2017 : z/OS-as-a-Service: The Disposable LPARInterConnect 2017 : z/OS-as-a-Service: The Disposable LPAR
InterConnect 2017 : z/OS-as-a-Service: The Disposable LPAR
 
Integrating IBM Internet of Things Platform and IBM Blockchain
Integrating IBM Internet of Things Platform and IBM BlockchainIntegrating IBM Internet of Things Platform and IBM Blockchain
Integrating IBM Internet of Things Platform and IBM Blockchain
 
DESY's new data taking and analysis infrastructure for PETRA III
DESY's new data taking and analysis infrastructure for PETRA IIIDESY's new data taking and analysis infrastructure for PETRA III
DESY's new data taking and analysis infrastructure for PETRA III
 
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...
 
WebSphere Liberty HTML5 Real-Time Features Lab
WebSphere Liberty HTML5 Real-Time Features LabWebSphere Liberty HTML5 Real-Time Features Lab
WebSphere Liberty HTML5 Real-Time Features Lab
 
World of Watson - Integrating IBM Watson IOT Platform and IBM Blockchain
World of Watson - Integrating IBM Watson IOT Platform and IBM BlockchainWorld of Watson - Integrating IBM Watson IOT Platform and IBM Blockchain
World of Watson - Integrating IBM Watson IOT Platform and IBM Blockchain
 
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT ApplicationsInterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
 

More from Mikkel Flindt Heisterberg

Introduction to OAuth 2.0 - the technology you need but never really learned
Introduction to OAuth 2.0 - the technology you need but never really learnedIntroduction to OAuth 2.0 - the technology you need but never really learned
Introduction to OAuth 2.0 - the technology you need but never really learnedMikkel Flindt Heisterberg
 
There’s an API for that! Why and how to build on the IBM Connections PLATFORM
There’s an API for that! Why and how to build on the IBM Connections PLATFORMThere’s an API for that! Why and how to build on the IBM Connections PLATFORM
There’s an API for that! Why and how to build on the IBM Connections PLATFORMMikkel Flindt Heisterberg
 
Social Connections VI Prague - An introduction to ibm connections as an appde...
Social Connections VI Prague - An introduction to ibm connections as an appde...Social Connections VI Prague - An introduction to ibm connections as an appde...
Social Connections VI Prague - An introduction to ibm connections as an appde...Mikkel Flindt Heisterberg
 
An Introduction to Working With the Activity Stream
An Introduction to Working With the Activity StreamAn Introduction to Working With the Activity Stream
An Introduction to Working With the Activity StreamMikkel Flindt Heisterberg
 
Creating a keystore for plugin signing the easy way
Creating a keystore for plugin signing the easy wayCreating a keystore for plugin signing the easy way
Creating a keystore for plugin signing the easy wayMikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Mikkel Flindt Heisterberg
 

More from Mikkel Flindt Heisterberg (15)

An Introduction to Lightning Web Components
An Introduction to Lightning Web ComponentsAn Introduction to Lightning Web Components
An Introduction to Lightning Web Components
 
Introduction to OAuth 2.0 - the technology you need but never really learned
Introduction to OAuth 2.0 - the technology you need but never really learnedIntroduction to OAuth 2.0 - the technology you need but never really learned
Introduction to OAuth 2.0 - the technology you need but never really learned
 
Introduction to OAuth
Introduction to OAuthIntroduction to OAuth
Introduction to OAuth
 
IBM Connections 5 Gæstemodel
IBM Connections 5 GæstemodelIBM Connections 5 Gæstemodel
IBM Connections 5 Gæstemodel
 
There’s an API for that! Why and how to build on the IBM Connections PLATFORM
There’s an API for that! Why and how to build on the IBM Connections PLATFORMThere’s an API for that! Why and how to build on the IBM Connections PLATFORM
There’s an API for that! Why and how to build on the IBM Connections PLATFORM
 
Social Connections VI Prague - An introduction to ibm connections as an appde...
Social Connections VI Prague - An introduction to ibm connections as an appde...Social Connections VI Prague - An introduction to ibm connections as an appde...
Social Connections VI Prague - An introduction to ibm connections as an appde...
 
An Introduction to Working With the Activity Stream
An Introduction to Working With the Activity StreamAn Introduction to Working With the Activity Stream
An Introduction to Working With the Activity Stream
 
Creating a keystore for plugin signing the easy way
Creating a keystore for plugin signing the easy wayCreating a keystore for plugin signing the easy way
Creating a keystore for plugin signing the easy way
 
OnTime Partner Webinar September 2011
OnTime Partner Webinar September 2011OnTime Partner Webinar September 2011
OnTime Partner Webinar September 2011
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
 
Lotusphere Comes To You 2011
Lotusphere Comes To You 2011Lotusphere Comes To You 2011
Lotusphere Comes To You 2011
 
Lotus Community Call - 22 March 2011
Lotus Community Call - 22 March 2011Lotus Community Call - 22 March 2011
Lotus Community Call - 22 March 2011
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Lotus Notes Plugin Installation For Dummies
Lotus Notes Plugin Installation For DummiesLotus Notes Plugin Installation For Dummies
Lotus Notes Plugin Installation For Dummies
 

Recently uploaded

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 

Recently uploaded (20)

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 

IBM Connections API for building apps

  • 1. BP205: There’s an API for that! Why and how to build on the IBM Connections PLATFORM Mikkel Flindt Heisterberg Senior Solution Architect and Partner OnTime®
  • 2. About me §  Developer, geek, father §  With IntraVision the makers of OnTime® Group Calendar – we are in the TechnOasis §  Love developing plugins for IBM® Notes® and developing for IBM® Connections® §  IBM® Champion since program inception §  Twitter: @lekkim §  Blog: http://lekkimworld.com
  • 3. Notices and Disclaimers Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. IBM, the IBM logo, ibm.com, BrassRing®, Connections™, Domino®, Global Business Services®, Global Technology Services®, SmartCloud®, Social Business®, Kenexa®, Notes®, PartnerWorld®, Prove It!®, PureSystems®, Sametime®, Verse™, Watson™, WebSphere®, Worklight®, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
  • 4. Agenda § Introduction to – IBM Connections as a PLATFORM – The API’s - REST’o’RAMA – Widgets for IBM Connections – Developing for the Activity Stream – The SPI’s specifically the Event SPI § Demo and demo application
  • 6. IBM Connections as a PLATFORM
  • 7. IBM Connections == series of services and building blocks
  • 8. THE API’S – REST’O’RAMA Fire up your REST client and get crackin’!
  • 9. All features have an API §  All API’s are based on Atom standard – pretty verbose using XML for output but once you grok it it’s pretty easy to go between features. §  Please use API’s where ever possible and refrain from going directly to the backend databases although it’s possible… §  All API’s support basic and form based authentication (LptaToken(2)) as well as OAuth. Some API’s allow anonymous access as well. §  For server side applications I suggest you use OAuth where possible as issuing requests on users behalf isn’t feasible using form based or basic authentication.
  • 10. OAuth 2.0 §  OAuth 2.0 allows an application to work on a users behalf after the user grants this authority to the application. §  Application requests OAuth support from IBM Connections and the user authorizes the application using two URL endpoints. The user can revoke the authorization at any point. §  Please do not bother with OAuth if integration (API usage) is done on the glass i.e. from a browser application such as a widget. OAuth should only be used if a server side application needs to work on behalf of the user (and LtpaToken(2) access cannot be guaranteed).
  • 11. OAuth 2.0 – register application using wsadmin wsadmin>import sys wsadmin>execfile("oauthAdmin.py”) wsadmin>OAuthApplicationRegistrationService.addApplicati on("bp205", "BP205 Demo", https://inside.intravision.dk/bp205/oauth20_cb) An application was added with the new id bp205. wsadmin>clientSecret = OAuthApplicationRegistrationService.getApplicationById ("bp205").get("client_secret”) wsadmin>print clientSecret MSGxGCQhGUcM93n50CalSk1Du1svohfy3SattAqhRDQcm...
  • 12. The appplication development wiki is your friend
  • 13. WIDGETS Psssst!! They are actually iWidgets… And then there are gadgets but that’s something else…
  • 17. Widgets - modes § There are 4 modes defined – View – Fullpage – Search (only for Communities) – Edit
  • 18. Widgets – descriptor <iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage” mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="com.example.MyWidget"> <iw:resource uri="http://www.example.com/widget1/MyWidget.js" /> <iw:resource uri=”./MyWidget.css" /> <iw:content mode="view"> Loading... </iw:content> <iw:content mode="fullpage"> <![CDATA[ <div id="_IWID_widgetContent">Loading...</div> ]]> </iw:content> </iw:iwidget>
  • 19. Widgets – descriptor <iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage” mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="com.example.MyWidget"> <iw:resource uri="http://www.example.com/widget1/MyWidget.js" /> <iw:resource uri=”./MyWidget.css" /> <iw:content mode="view"> Loading... </iw:content> <iw:content mode="fullpage"> <![CDATA[ <div id="_IWID_widgetContent">Loading...</div> ]]> </iw:content> </iw:iwidget>
  • 20. Widgets – descriptor <iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage” mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="com.example.MyWidget"> <iw:resource uri="http://www.example.com/widget1/MyWidget.js" /> <iw:resource uri=”./MyWidget.css" /> <iw:content mode="view"> Loading... </iw:content> <iw:content mode="fullpage"> <![CDATA[ <div id="_IWID_widgetContent">Loading...</div> ]]> </iw:content> </iw:iwidget>
  • 21. Widgets – descriptor <iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage” mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="com.example.MyWidget"> <iw:resource uri="http://www.example.com/widget1/MyWidget.js" /> <iw:resource uri=”./MyWidget.css" /> <iw:content mode="view"> Loading... </iw:content> <iw:content mode="fullpage"> <![CDATA[ <div id="_IWID_widgetContent">Loading...</div> ]]> </iw:content> </iw:iwidget> _IWID_ replaced at runtime with the widget ID (iContext.widgetId) – very nice if you want to allow multiple instances of your widget on the same page
  • 22. Widgets – descriptor <iw:iwidget id="com.example.MyWidget" supportedModes="view fullpage” mode="view” lang="en" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="com.example.MyWidget"> <iw:resource uri="http://www.example.com/widget1/MyWidget.js" /> <iw:resource uri=”./MyWidget.css" /> <iw:content mode="view"> Loading... </iw:content> <iw:content mode="fullpage"> <![CDATA[ <div id="_IWID_widgetContent">Loading...</div> ]]> </iw:content> </iw:iwidget>
  • 23. Widgets – iScope – declaration using dojo dojo.provide("com.example.MyWidget"); dojo.declare("com.example.MyWidget", null, { constructor: function() {}, onLoad: function() {}, onView: function() {}, onEdit: function() {}, onFullpage: function() {}, onSearch: function() {} });
  • 24. Widgets – iScope – declaration using vanilla JavaScript // define namespace (not best of breed code) if (!window[”com”]) window[”com”] = {}; if (!window.com[”example”]) window.com[”example”] = {}; // define constructor and methods in prototype window.com.example.MyWidget = function() { // constructor } window.com.example.MyWidget.protototype.onLoad = function() { // onLoad method } window.com.example.MyWidget.protototype.onView = function() { // onView method }
  • 25. Widgets – adding to the UI Declaratively configured using widgets-config.xml   <widgetDef defId="com.example.MyWidget” url="/widget1/MyWidget.xml" loginRequired="true” showInPallette=”true” primaryWidget=”false”> <itemSet> <item name="profilesCtx" value="{profilesSvcRef}" /> <item name="myProp" value="Abc123" /> </itemSet> </widgetDef>
  • 26. Widgets – iContext §  An iContext instance is set into the iScope instance §  The iContext provides access to the widget markup (e.g. root element), I/O related functions (i.e. URL rewriting), widget attributes etc. §  The iContext is easily accessed from the iScope class using this.iContext §  Important  func-ons  include: –  iContext.getRootElement() : DOM Element –  iContext.getElementById(id:string) : DOM Element –  iContext.getiWidgetAttributes() : ItemSet –  iContext.getUserProfile() : ItemSet –  iContext.io.rewriteURI(uri:string) : string –  iContext.iEvents.fireEvent(name:string, type:string, payload:object)
  • 27. WIDGETS AND LOADING IBM Connections v.5 changed a lot and not necessarily for the better…
  • 28. IBM Connections v.5 changed a lot §  Prior to IBM Connections v.5 the browser loaded the resources for widgets hence the resources were cached by the browser. –  Browser cache is easy to clear and updated resources (JavaScript / CSS) could be loaded easily. §  From IBM Connections v.5 the Common module aggregates and caches all widget resources making it near impossible to work with for development. §  Still no appdev environment for iWidgets. §  Suggest using a mock environment approach loaded through the AJAX proxy of IBM Connections. This allows easy development with tons of pains and frustration from having to battle the Common module and having to restart servers and applications. §  Will show example later…
  • 29. Loading prior to IBM Connections 5
  • 30. Loading from IBM Connections 5
  • 31. Loading from IBM Connections 5 http://www.youtube.com/ watch?v=1GLpA604Iic
  • 33. Activity Stream § The following is based on my highly acclaimed (cough, cough) presentation on the Activity Stream § Much more detail and many more examples there § See http://slideshare.net/lekkim for complete presentation
  • 34. Activity Stream § IS – River of news – it’s like water flowing by you – Notifications about ”stuff” happening in (other) systems – we refer to these notifications as entries § ISN’T – A new inbox – doesn’t replace email – A perpeptual data store – entries are deleted based on a server defined purge interval (default is 30 days) unless saved or actionable
  • 35. Activity Stream § In my opinion it makes most sense to not consider the activity stream as one single stream § Instead think that – Each user has his/her own (@me) – There is a public stream (@public) – A community may have a stream if the widget has been added by a community owner – if there’s no stream for a community posting to it will return a ”403 Forbidden”
  • 36. Activity Stream •  You will mainly use the POST and PUT methods to send JSON data (Content-Type: application/json) to the API •  JSON is super simple key/value data format. It has simple datatypes (strings, numbers, booleans), objects and arrays { ”email”: ”mh@intravision.dk”, ”niceGuy”: true, ”age”: 38, ”name”: { ”first”: ”Mikkel Flindt”, ”last”: ” Heisterberg” }, ”Connectospheres”: [6, 7, 8, 9, 10, 11, 12, 13, 14, 15] }
  • 37. Activity Stream – minimum POST body { "actor": {"id": "@me"}, "verb": "post", "title": "Some entry title", "updated": "2013-05-17T12:00:00.000Z", "object": { "title": "Some object title", "objectType": "note", "id": "1234567890-1234567890-1234567890" } }
  • 38. Activity Stream – building the URL https://<host>/connections/opensocial/<auth>/rest/activitystreams /<user ID>/<group ID>/<application ID>/<activity ID> Component Meaning <auth> (optional) If using form based authentication leave this component out. Otherwise options are anonymos, basic, oauth. <user ID> The user whose stream you’re addressing – use @me for current users stream, @public for public stream or a community ID for the stream in a community. <group ID> The group of entries you’re addressing – use @all for all posts or options for special meaning such as @saved, @actions, @mentions. Refer for InfoCenter and resources slide for more. <application ID> When retrieving entries this refers to the application (or ”generator”) that created the entry. All the IBM Connections app names can be used (profiles, blogs, wikis etc.) plus custom ones (e.g. ontimegc). @all used for all applications. <activity ID> Used to reference a specific event e.g. for updating saved status.
  • 39. Activity Stream – URL examples 1.  /activitystreams/@me/@all List my (current users) entries 2.  /activitystreams/@public/@all List public stream entries 3.  /activitystreams/@me/@actions List my actionable events 4.  /activitystreams/@me/@saved/blogs List my saved events from blogs 5.  /@me/@all/@all/urn:lsid:lconn.ibm.com:activitystreams.story:bdb562f… Work with entry from my stream based on ID * All URLs above start with https://<host>/connections/opensocial/<auth>/rest Also used when creating new entries (e.g. POSTing)
  • 41. Other Programming Interfaces §  SPIs are lower-level programming interfaces which may be subject to modification from release to release. §  Event SPI –  The Event SPI allows third parties to consume event data generated by IBM Connections. §  Seedlist SPI –  Use the Seedlist service provider interface (SPI) provided with IBM Connections to integrate your search engine with IBM Connections content. §  Service SPI –  You can use the Service SPI to learn about the applications running in your IBM Connections deployment. §  User SPI –  You can use the User SPIs to access information about the users in your IBM Connections deployment.
  • 42. Event Handlers – declaration Declara-vely  configured  using  events-­‐config.xml     <postHandler enabled=”true" invoke="ASYNC" name=”MyEventHandler” class="com.example.MyEventHandler"> <subscriptions> <subscription source="*" type="*" eventName="*"/> <!-- <subscription source=”PROFILES" type="*" eventName=”profiles.updated"/> <subscription source=”PROFILES" type="*" eventName=”profiles.person.photo.updated"/> --> </subscriptions> </postHandler>
  • 43. Event Handlers – implementation public class MyEventHandler implements EventHandler { public void init() throws EventHandlerInitException {} public void destroy() {} public void handleEvent(Event event) throws EventHandlerException { String eventName = event.getName(); // event name Person actor = event.getActor(); // person that triggered event // look at the event name if (event.getName().equals("profiles.person.photo.updated")) { // a profile photo was updated this.doEventProfilesPhotoUpdated(event); } else if (event.getName().equals("profiles.updated")) { // a profile was updated this.doEventProfilesUpdated(event); } } }
  • 44. Event Handlers – summary § Make event handlers asynchroneous § Be defensive – consider what happens if events are lost – What happens if your event handler fail? – What happens if the recipient of the event (3rd party API) fail? § Suggestion: – Do a minimum of processing in the event handler and then post message with data to a durable queue. Have the queue consumer – e.g. a message driven bean – do the real processing as it can be done under transaction control
  • 45. Demo §  WebSphere® Application Server Enterprise Application (WAS EAR) –  BP205_JAR: Shared code –  BP205_WAR: Web application module – API servlet and widget component –  BP205_EJB: Enterprise Java Bean modules comprising the business logic components –  BP205_EAR: Combines the above three into a single installable application §  IBM Connections Event Handler –  BP205_EventHandler: Event handler installed into WAS and configured using events-config.xml §  WebSphere Application Server queue –  Event handler listens for events, extract data and post message to queue. Messages picked up by message driven bean (MDB) and passed into busiess logic components
  • 46. Engage Online §  SocialBiz User Group socialbizug.org –  Join the epicenter of Notes and Collaboration user groups §  Social Business Insights blog ibm.com/blogs/socialbusiness –  Read and engage with our bloggers §  Follow us on Twitter –  @IBMConnect and @IBMSocialBiz §  LinkedIn http://bit.ly/SBComm –  Participate in the IBM Social Business group on LinkedIn §  Facebook https://www.facebook.com/IBMConnected –  Like IBM Social Business on Facebook
  • 47. Thank you § Presentations on slideshare.net – this one is coming § Contact me – often times more than willing to help § Questions? Fire away!