SlideShare a Scribd company logo
BP301: An Introduction to
Working with the Activity
Stream
Mikkel Flindt Heisterberg, OnTime® by IntraVision

© 2014 IBM Corporation
@me
•  Developer for OnTime Group Calendar
•  Works with IBM Notes, Domino, Sametime,
Java, DB2, Websphere Application Server, Web
•  Lover of plugins – plugins are cool! – but slowly
becoming the widget guy
•  IBM Champion since program inception
•  Blog: lekkimworld.com
• 
@lekkim

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
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, Lotus, IBM Notes, IBM Domino, and IBM Connections 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
§  Firefox is a trademark of Mozilla
Other company, product, or service names may be trademarks or service marks of others.

3

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
What is this session about?
“The future of business is social and the activity stream is the
way events and messages are communicated in the social
business. In this session you'll learn all there is to know about
the activity stream including exactly what it is and how to
interact with it using your favorite development environment
whether that be JavaScript, XPages, Java or even the plain
vanilla HTTP based REST API. This session is for you if you
want to start working the Activity Stream.”

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Agenda
§ What’s this session about
§ What’s the activity stream and what is it not
§ REST 101
§ Anatomy of an activity stream post
§ Posting, working with roll ups and impersonation
§ Fun and laughter…
5

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
The activity stream concept
Activity stream was added in IBM Connections v. 4.0.
“An activity stream is a list of recent activities performed by an individual,
typically on a single website. For example, Facebook's News Feed is an
activity stream. Since the introduction of the News Feed on September 6,
2006 other major websites have introduced similar implementations for
their own users. Since the proliferation of activity streams on websites,
there have been calls to standardize the format so that websites could
interact with a stream provided by another website.”

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
What is the Activity Stream
§  River of news – it’s like water flowing by you
§  Notifications about ”stuff” happening in (other) systems – we refer to these
notifications as entries
§  Entries may be saved for future reference and
entries may be actionable i.e. indicated that it must be acted upon
§  Typically you decide what goes into your stream
§  A replacement for email notifications (although
you can have those too...)
§  Standards based – like – meaning – IBM took the standard and added IBM
Connections specific stuff to it
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
What is the Activity Stream NOT
§ 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
§ Meant as a content repository
§ Something that implies that you must read it all – it’s
notifications – treat it as such...
– If an entry is ”must read” it should be marked actionable
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Demo
§ Let’s look at the activity stream in IBM Connections
§ See options for filtering (saved/actionable)

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Demo safety slide
No content stored in the stream

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
REST API’s 101 (1)
§  HTTP is much more than what a web browser reveals
§  The request
–  has a method (GET, POST, PUT, DELETE)
–  may have headers that describe the request such as a ContentType (text/html), cookies and authentication information.
–  may have a body data
§  The response
–  has a return code (200 = OK, 301 = Moved, 404 = Not found)
–  may carry body data
–  may have headers that describe the response (e.g. ContentType, charset and new location)
REST API’s 101 (2)
§  You will mainly use the POST and PUT methods to send JSON data (ContentType: 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”: 37,
”name”: {
”first”: ”Mikkel Flindt”,
”last”: ” Heisterberg”
},
”Lotuspheres”: [2006, 2007, 2008, 2009, 2010, 2011, 2012],
”IBMConnects”: [2013, 2014]
}
REST API’s 101 (3)
§  HTTP is pure text and easily done using telnet but there
are cool tools to make it easier:
– RESTClient in Firefox
– Advanced REST Client in Chrome
– cURL if you’re a command line guy/gal
– Standalone REST client
§  Recommend standalone REST client such as CocoaRESTClient
in combination with a proxy such as Charles Web Proxy,
http://www.charlesproxy.com
How many streams are there?
§ 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”
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Stream URL components
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 (last option not covered in this presentation).

<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.

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Stream URL Examples
1. 

/activitystreams/@me/@all
List my (current users) entries

Also used
when creating
new entries
(e.g. POSTing)

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
Anatomy of a stream entry
A stream entry reads like ”the current user
posted a note to IBM Connections and you
should act on it”

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Anatomy of a stream entry
A stream entry reads like ”the current user
posted aThe person doing the postingConnections and you
note to IBM is
called on it” can be a
and
should act the actor but usually the
specific user ID
current user (@me)

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Anatomy of a stream entry
A stream entry reads like ”the current user
posted a note to IBM Connections and you
should act onWhat the person does is called the
it”
verb and there’s a long list of
predefined ones such as post,
update, create...

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Anatomy of a stream entry
A stream entry reads like ”the current user
posted a note to IBM Connections and you
should act on it”
The object in question is called the
object and can be anything that
represents the target ”thing” i.e. file,
note, meeting...

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Anatomy of a stream entry
A stream entry reads like ”the current user
posted a note to IBM Connections and you
should act on it”
The system the user worked on
is called the target and can be
any system you need to refer to

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Anatomy of a stream entry
A stream entry reads like ”the current user
posted a note to IBM Connections and you
should act on it”
IBM Connections supports some
special properties for entries such as
actionable and saved to allow users
to work with entries

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Anatomy of a stream entry
{
"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"
}
}
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Anatomy of a stream entry
{
"actor": reads like ”the
§  A stream entry{"id": "@me"}, current user posted a file to IBM Connections and you should
"verb": ”create",
act on it”
"title": ”Sales proposal for Rockets Inc.",
"updated": "2013-05-17T12:00:00.000Z",
"object": {
"title": "Sales proposal for Rockets Inc.",
"objectType": ”proposal",
"id": "1234567890-1234567890-1234567890"
},
”target”: {
”displayName”: ”Acme Corp. CRM”,
”url”: ”https://crm.example.com”
}

}

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne

IBM Connections is the implied
default target but you can specify
your own target in the entry
Posting an entry* to the stream
POST /connections/opensocial/basic/rest/activitystreams/@me/@all
Host: social.example.com
Content-Type: application/json
Content-Length: xyz
Authorization: Basic xyz123

{

}

"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”
}
* Smallest entry you can/should post to the stream
Demo

§ REST client
§ Easily work with feeds, authentication, headers etc.
§ Use proxy to override cookies

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Demo safety slide

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Deleting from the stream
§ In short you can’t – up to IBM Connections v. 4.5 you cannot
delete from the activity stream – you’ll just get an 403 Forbidden
back
§ There is some light at the end of the tunnel though –
this directly from the developers
at IBM: “We are however adding
'propagateDelete' at the
moment, which deletes all events
related to a given object on
receipt of a delete event (if so
specified). This will be protected by
a trusted role.”

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Action required!

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Mark/unmark as actionable
GET /connections/opensocial/basic/rest/activitystreams/@me/@actions
Host: social.example.com
Authorization: Basic xyz123

PUT /connections/.../activitystreams/@me/@all/@all/de325123-e269-4a33-b62a
Host: social.example.com
Content-Type: application/json
Content-Length: xyz
Authorization: Basic xyz123

{

}

Response
"actor": {"id": "@me"},
"id": "de325123-e269-4a33-b62a”,
"connections": {
"actionable": false
}

{"entry": {
"connections": {
"actionable": "false"
},
"id": "unmark actionable:"
}}
Save for later

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Mark/unmark saved
GET /connections/opensocial/basic/rest/activitystreams/@me/@saved
Host: social.example.com
Authorization: Basic xyz123

PUT /connections/.../activitystreams/@me/@all/@all/de325123-e269-4a33-b62a
Host: social.example.com
Content-Type: application/json
Content-Length: xyz
Authorization: Basic xyz123

{

}

"actor": {"id": "@me"},
"id": "de325123-e269-4a33-b62a”,
"connections": {
”saved": false
}

Response
{"entry": {
"connections": {
“saved": "false"
},
"id": "unmark saved:“
}}
Rolling it up

§ Rollup is telling the stream that an post/
update relates to the same ”thing”
§ Used to avoid cluttering up the user interface
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Rolling it up
POST /connections/opensocial/basic/rest/activitystreams/@me/@all
Host: social.example.com
Content-Type: application/json
Content-Length: xyz
Authorization: Basic xyz123

{

}

"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”
},
”connections”: {
”rollupid”: ”1234567890-1234567890-1234567890”
}
Rollup id vs. Object id
§  May seem similar but not the same…
§  Rollup is a way of telling the activity stream that different posts, with different object ids,
relate to the same thing i.e. should be rolled into the same post (in the UI)
§  Posting with the same object id is the same as specifying the object id as the rollup id
§  In general get into the habit of explicitly using the id of the ”thing” (i.e. the object id) you’re
pointing to as the roll up id.

36

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Templates
§  Two main reasons for looking at templates
–  Internationalization (i18n) / translation
–  Getting a standard representation in the UI
§  Two types of templates
–  Object Substitution replaces a reference with nice markup – an example is replacing the
actor with a HTML reference using the business card
–  Title Template Substitution – uses object substitutions it makes standard titles

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Templates
§  Object Substitution
–  ${Actor} - this is converted into appropriately marked up HTML which displays the Actors
name and links to a Business Card
–  ${Object} - if this is a person we display as with the Actor above, otherwise the
displayName with a link to the url
–  ${Target} - if this is a person we display as with the Actor above, otherwise the
displayName with a link to the url

§  Title Template Substitution
–  ${created}
–  ${create.target}

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne

= ${Actor} created ${Object}
= ${Actor} created ${Object} in ${Target}
Using templates
POST /connections/opensocial/basic/rest/activitystreams/@me/@all
Host: social.example.com
Content-Type: application/json
Authorization: Basic xyz123

{

}

"actor": {"id": ”@me"},
"verb": "create”,
"title": "${create}",
"updated": "2013-05-21T12:00:00.000Z”,
"object": {
"summary": "Project Z Review Meeting”,
"objectType": "meeting”,
"id": "123456789012345678901234567890OP”
}
Embedded Experiences
§ EE works a little different in e-mail
and in the activity stream
§ E-mail
–  Traditional (SMTP) e-mail is using Multipurpose
Internet Mail Extension (MIME)
–  EE’s adds an additional ”MIME part” – clients
in the know will show content based on this
data if possible and allowed by policy

§ Activity stream
–  Activity stream delivery model is a bit different than in e-mail as we already have a
structured payload
–  Application sending the entry adds an openSocial.embed object to the entry with link to
the gadget required for rendering the EE and context info
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Embedded Experiences
{

}

”actor”: {”id”: ”@me”},
…
…
"openSocial": {
"embed": {
"gadget": http://ee.example.com/mygadget.xml,
"context": {"id":"12345”}
}
}
Posting to other users stream
§  By default you may only post entries to your own activity stream
§  Sending to others can be considered as spam
§  As with standards there are multiple ways of doing it using either
–  OpenSocial (openSocial: {deliverTo: []})
–  Activitystrea.ms (to: [])
–  Just use the second one...
§  To send to another users stream
you need to either be him/her
or be a trusted application (more
information later...)

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Posting to other user
{

}

"actor": {"id": "@me"},
"to": [{"objectType": "person", "id": "A7E718F4-3040-2A00-C125"}],
"verb": "create”,
"title": "${create}",
"updated": "2013-05-21T12:00:00.000Z”,
"object": {
"summary": "Project X Review Meeting”,
"objectType": "meeting”,
"id": "123456789012345678901234567890MN”
},
"connections": {
"rollupid": "123456789012345678901234567890MN”,
}
Posting as other user
{

}

"actor": {"id": "A7E718F4-3040-2A00-C125"},
"to": [{"objectType": "person", "id": "A7E718F4-3040-2A00-C125"}],
"verb": "create”,
"title": "${create}",
"updated": "2013-05-21T12:00:00.000Z”,
"object": {
"summary": "Project Y Review Meeting”,
"objectType": "meeting”,
"id": "123456789012345678901234567890OP”
},
"connections": {
"rollupid": "123456789012345678901234567890OP”
}
Posting to & as other user
{

}

"actor": {"id": "1E7F44DD-9C20-842A-C125"},
"to": [{"objectType": "person", "id": "A7E718F4-3040-2A00-C125"}],
"verb": "create”,
"title": "${create}",
"updated": "2013-05-21T12:00:00.000Z”,
"object": {
"summary": "Project Z Review Meeting”,
"objectType": "meeting”,
"id": "123456789012345678901234567890OP”
},
"connections": {
"rollupid": "123456789012345678901234567890OP”
}
How it looks in the UI

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
How it looks in the UI

Oh!! Look at
that pretty
icon!

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Using a generator
{

}

"generator": {"id": ”ontimegc",
"image”: "http://www.ontimesuite.com/favicon.ico",
"displayName": ”OnTime Group Calendar",
"url": "http://www.ontimesuite.com"
},
"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”
}
Using a predefined generator
{

}

”generator": {"id": ”ontimegc"},
"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”
}
Registering generators
wsadmin>execfile("newsAdmin.py")
wsadmin>NewsActivityStreamService.listApplicationRegistrations()

{wikis=wikis, communities=communities, general=General, profiles=profiles,
activities=activities, homepage=homepage, blogs=blogs, forums=forums,
files=files, dogear=dogear, demoapp=Demo Application, kudos=Kudos}
wsadmin>NewsActivityStreamService.registerApplication("ontimegc", "OnTime Group
Calendar", "http://www.ontimesuite.com", "", ”http://inside.intravision.dk/
images/ontime.gif”, ””, ”OnTime Group Calendar”, ”true”)
wsadmin>

After first use of a generator it can be referenced by ID. Purpose of registering is that users
may filter by it in the UI.

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Benefit of registering generator

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Granting access (1)
§  Permission to send to other users are granted using the trustedExternalApplication role
§  Granted in the WidgetContainer application using wsadmin or the Websphere Application
Server Integrated Solutions Console – the latter is easiest

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Granting access (2)

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Granting access (3)

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Granting access (4)

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Granting access (5)

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Demo

§ Tweet’2’stream
– https://github.com/lekkimworld/IC14_BP301
§ Build script integration

57

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Demo – safety slide (1)

58

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Demo – safety slide (2)

59

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Summary
§  There’s no one stream - @me vs. @public vs. community
§  Be patient – wrapping your head around these concepts can be hard in the beginning
§  Remember that the data isn’t stored in the stream but rather is pointed to from the stream
§  Entries are automatically purged from the stream unless saved or marked actionable
§  You cannot delete from the stream (yet)
§  Accessed using REST API URL based on user, group, application and activity ID
§  When working with the RESTClient in Firefox use ”Private Browsing” mode as credentials
used and cookies returned in one tab doesn’t leak to other ”Private Browsing” tabs.
§  Pretty easy to use once you grasp the concepts

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Resources
§  Activity Streams in the OpenSocial specification,
http://opensocial-resources.googlecode.com/svn/spec/trunk/Social-APIServer.xml#ActivityStreams-Service
§  AppDev wiki, http://www-10.lotus.com/ldd/appdevwiki.nsf
§  IBM Connections Activity Stream Integration (AD104 from IBM Connect 2013),
http://www.slideshare.net/brianog/ad104-ibm-connections-actiivtystreamintegration
§  Activity Stream hands-on lab, http://www-10.lotus.com/ldd/appdevwiki.nsf/
xsp/.ibmmodres/domino/OpenAttachment/ldd/appdevwiki.nsf/
82567C415DF5243185257AEE00626F82/attach/5-sdk-workshopactivitystreams.pdf
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Tools of the trade
§ RESTclient in Firefox,
https://addons.mozilla.org/da/firefox/addon/restclient/
§ Advanced REST client in Chrome (issues with POSTs),
http://bit.ly/advancedrest
§ cURL (for any imaginable operating system),
http://curl.haxx.se/
§ Charles Web Proxy,
http://www.charlesproxy.com
Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne
Access Connect Online to complete your
session surveys
§  But?, How?, Doesn't that mean...
§  Give it to me! (or come talk
to me after the session or find me in the hallways...)
§  Twitter: @lekkim
§  Email: mh@intravision.dk
§  Blog: http://lekkimworld.com

Billedet kan ikke vises. Computeren har
muligvis ikke hukommelse nok til at åbne

More Related Content

PDF
BP207 - Easy as pie creating widgets for ibm connections
PDF
BP205: There’s an API for that! Why and how to build on the IBM Connections P...
PPTX
There’s an API for that! Why and how to build on the IBM Connections PLATFORM
PPTX
Introduction to OAuth 2.0 - the technology you need but never really learned
PDF
Social Connections VI Prague - An introduction to ibm connections as an appde...
ODP
MAS202 - Customizing IBM Connections
ODP
JMP103 : Extending Your App Arsenal With OpenSocial
PDF
How to extend IBM Connections Communities and Profiles
BP207 - Easy as pie creating widgets for ibm connections
BP205: There’s an API for that! Why and how to build on the IBM Connections P...
There’s an API for that! Why and how to build on the IBM Connections PLATFORM
Introduction to OAuth 2.0 - the technology you need but never really learned
Social Connections VI Prague - An introduction to ibm connections as an appde...
MAS202 - Customizing IBM Connections
JMP103 : Extending Your App Arsenal With OpenSocial
How to extend IBM Connections Communities and Profiles

What's hot (19)

PPTX
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
PPT
IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...
ODP
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By Example
PDF
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...
PDF
Codemotion Rome 2015 Bluemix Lab Tutorial
PPTX
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
PDF
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...
PPTX
Big Data With Graphs
PDF
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...
PPTX
What is new in IBM Connections 5.5 and IBM Docs 2.0
PDF
The Power of IBM SmartCloud for Social Business and XPages App Dev
PDF
Programmatic Access to and Extensibility of the IBM SmartCloud for Social Bus...
PDF
Application Development for IBM Connections with IBM Bluemix
PDF
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...
PDF
IBM Connect 2014 - BP207 - Don’t Reinvent the Wheel - (Re)use Open Source Sof...
PDF
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
PDF
The lazy administrator, how to make your life easier by using tdi to automate...
ODP
AD301: What's New in the IBM Social Business Toolkit
ODP
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections Communities
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
IBM Connect 2014 - AD105: IBM iNotes and IBM SmartCloud Notes Web Customizati...
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By Example
Tip from ConnectED 2015: An intro to IBM Security Directory Integrator for IB...
Codemotion Rome 2015 Bluemix Lab Tutorial
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Business Partner Day 406 - Ignite your IBM SmartCloud for Social Business Int...
Big Data With Graphs
IBM Connect 2014 - AD206 - Build Apps Rapidly by Leveraging Services from IBM...
What is new in IBM Connections 5.5 and IBM Docs 2.0
The Power of IBM SmartCloud for Social Business and XPages App Dev
Programmatic Access to and Extensibility of the IBM SmartCloud for Social Bus...
Application Development for IBM Connections with IBM Bluemix
IBM Connect 2014 SHOW501 Mastering Social Development Using the IBM Collabora...
IBM Connect 2014 - BP207 - Don’t Reinvent the Wheel - (Re)use Open Source Sof...
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
The lazy administrator, how to make your life easier by using tdi to automate...
AD301: What's New in the IBM Social Business Toolkit
IBM Connect 2014 - AD302: New Ways to Work With Your IBM Connections Communities
Ad

Viewers also liked (16)

PPTX
IBM Connections 5 Gæstemodel
PPTX
An Introduction to Working With the Activity Stream
ODP
BP309 Project Management Inside and Outside the Box
PPT
Creating a keystore for plugin signing the easy way
PDF
Easy as pie creating widgets for ibm connections
PPT
Ignite Timer
PPT
Lotusphere BoF - Working with the Lotus Connections API
PPTX
Introduction to OAuth
ODP
PDF
La collaborazione europea continua
PDF
How to increase social adoption - meetIT 2016, Milano
PPTX
API & Custom Widgets coming in XCC next - Web Content and Custom App Extensio...
PDF
24 Ways to Enhance IBM Connections with XCC – Web Content & Custom Apps Exte...
PPT
1309 leveraging social business data visualizing the connections org structure
PPTX
IBM Connections Cloud Application Development Strategy
PDF
API Connect Presentation
IBM Connections 5 Gæstemodel
An Introduction to Working With the Activity Stream
BP309 Project Management Inside and Outside the Box
Creating a keystore for plugin signing the easy way
Easy as pie creating widgets for ibm connections
Ignite Timer
Lotusphere BoF - Working with the Lotus Connections API
Introduction to OAuth
La collaborazione europea continua
How to increase social adoption - meetIT 2016, Milano
API & Custom Widgets coming in XCC next - Web Content and Custom App Extensio...
24 Ways to Enhance IBM Connections with XCC – Web Content & Custom Apps Exte...
1309 leveraging social business data visualizing the connections org structure
IBM Connections Cloud Application Development Strategy
API Connect Presentation
Ad

Similar to BP301 - An introduction to working with the activity stream (20)

PDF
Mikkel Heisterberg - An introduction to developing for the Activity Stream
PPT
Social Business @ IBM Denmark, May 2011
ODP
AD104 - IBM Connections ActivityStream Integration - IBM Connect 2013
PDF
How to access the Activity Stream in IBM Connections
PDF
Social Business @ IBM Denmark October 2011
ODP
IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - P...
PDF
2013-03 - CeBIT - DNUG - Activity Streams
PDF
Socializing share point (danish)
PDF
IBM Connections How to use existing data to increase adoption success with IB...
PDF
Rock the activity stream api
PDF
IBM Connections Activity Stream APIs - Lab Dec 2012
PDF
Ibm connect 2014 recap asean perspective
PDF
Inopi roundtable 2013 web collaboration and design
PPT
Webinar: Opsummering af Connect 2013
PDF
Web User Experience in 2021
PDF
Lotusphere/Connect 2012 - Opening Session
PPT
IBM and social engagement, for Dansk Industri March 4th 2010
PDF
Foredrag som sociale medier for iværksættere
PDF
Ti digitale trends 2012
PDF
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
Mikkel Heisterberg - An introduction to developing for the Activity Stream
Social Business @ IBM Denmark, May 2011
AD104 - IBM Connections ActivityStream Integration - IBM Connect 2013
How to access the Activity Stream in IBM Connections
Social Business @ IBM Denmark October 2011
IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - P...
2013-03 - CeBIT - DNUG - Activity Streams
Socializing share point (danish)
IBM Connections How to use existing data to increase adoption success with IB...
Rock the activity stream api
IBM Connections Activity Stream APIs - Lab Dec 2012
Ibm connect 2014 recap asean perspective
Inopi roundtable 2013 web collaboration and design
Webinar: Opsummering af Connect 2013
Web User Experience in 2021
Lotusphere/Connect 2012 - Opening Session
IBM and social engagement, for Dansk Industri March 4th 2010
Foredrag som sociale medier for iværksættere
Ti digitale trends 2012
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion

More from Mikkel Flindt Heisterberg (8)

PPTX
An Introduction to Lightning Web Components
PPTX
OnTime Partner Webinar September 2011
ODP
Plug yourself in and your app will never be the same (2 hr editon)
ODP
Plug yourself in and your app will never be the same (2 hour edition)
PPT
Lotusphere Comes To You 2011
PPTX
Lotus Community Call - 22 March 2011
ODP
Plug yourself in and your app will never be the same (1 hr edition)
PPTX
Lotus Notes Plugin Installation For Dummies
An Introduction to Lightning Web Components
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 hour edition)
Lotusphere Comes To You 2011
Lotus Community Call - 22 March 2011
Plug yourself in and your app will never be the same (1 hr edition)
Lotus Notes Plugin Installation For Dummies

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
PPTX
Spectroscopy.pptx food analysis technology
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Approach and Philosophy of On baking technology
PDF
cuic standard and advanced reporting.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Electronic commerce courselecture one. Pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Machine learning based COVID-19 study performance prediction
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Encapsulation theory and applications.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
Empathic Computing: Creating Shared Understanding
Spectroscopy.pptx food analysis technology
Unlocking AI with Model Context Protocol (MCP)
Dropbox Q2 2025 Financial Results & Investor Presentation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
sap open course for s4hana steps from ECC to s4
Chapter 3 Spatial Domain Image Processing.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Approach and Philosophy of On baking technology
cuic standard and advanced reporting.pdf
NewMind AI Weekly Chronicles - August'25-Week II
Electronic commerce courselecture one. Pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Machine learning based COVID-19 study performance prediction
MYSQL Presentation for SQL database connectivity
Diabetes mellitus diagnosis method based random forest with bat algorithm
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Encapsulation theory and applications.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf

BP301 - An introduction to working with the activity stream

  • 1. BP301: An Introduction to Working with the Activity Stream Mikkel Flindt Heisterberg, OnTime® by IntraVision © 2014 IBM Corporation
  • 2. @me •  Developer for OnTime Group Calendar •  Works with IBM Notes, Domino, Sametime, Java, DB2, Websphere Application Server, Web •  Lover of plugins – plugins are cool! – but slowly becoming the widget guy •  IBM Champion since program inception •  Blog: lekkimworld.com •  @lekkim Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 3. 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, Lotus, IBM Notes, IBM Domino, and IBM Connections 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 §  Firefox is a trademark of Mozilla Other company, product, or service names may be trademarks or service marks of others. 3 Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 4. What is this session about? “The future of business is social and the activity stream is the way events and messages are communicated in the social business. In this session you'll learn all there is to know about the activity stream including exactly what it is and how to interact with it using your favorite development environment whether that be JavaScript, XPages, Java or even the plain vanilla HTTP based REST API. This session is for you if you want to start working the Activity Stream.” Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 5. Agenda § What’s this session about § What’s the activity stream and what is it not § REST 101 § Anatomy of an activity stream post § Posting, working with roll ups and impersonation § Fun and laughter… 5 Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 6. The activity stream concept Activity stream was added in IBM Connections v. 4.0. “An activity stream is a list of recent activities performed by an individual, typically on a single website. For example, Facebook's News Feed is an activity stream. Since the introduction of the News Feed on September 6, 2006 other major websites have introduced similar implementations for their own users. Since the proliferation of activity streams on websites, there have been calls to standardize the format so that websites could interact with a stream provided by another website.” Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 7. What is the Activity Stream §  River of news – it’s like water flowing by you §  Notifications about ”stuff” happening in (other) systems – we refer to these notifications as entries §  Entries may be saved for future reference and entries may be actionable i.e. indicated that it must be acted upon §  Typically you decide what goes into your stream §  A replacement for email notifications (although you can have those too...) §  Standards based – like – meaning – IBM took the standard and added IBM Connections specific stuff to it Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 8. What is the Activity Stream NOT § 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 § Meant as a content repository § Something that implies that you must read it all – it’s notifications – treat it as such... – If an entry is ”must read” it should be marked actionable Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 9. Demo § Let’s look at the activity stream in IBM Connections § See options for filtering (saved/actionable) Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 11. No content stored in the stream Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 12. REST API’s 101 (1) §  HTTP is much more than what a web browser reveals §  The request –  has a method (GET, POST, PUT, DELETE) –  may have headers that describe the request such as a ContentType (text/html), cookies and authentication information. –  may have a body data §  The response –  has a return code (200 = OK, 301 = Moved, 404 = Not found) –  may carry body data –  may have headers that describe the response (e.g. ContentType, charset and new location)
  • 13. REST API’s 101 (2) §  You will mainly use the POST and PUT methods to send JSON data (ContentType: 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”: 37, ”name”: { ”first”: ”Mikkel Flindt”, ”last”: ” Heisterberg” }, ”Lotuspheres”: [2006, 2007, 2008, 2009, 2010, 2011, 2012], ”IBMConnects”: [2013, 2014] }
  • 14. REST API’s 101 (3) §  HTTP is pure text and easily done using telnet but there are cool tools to make it easier: – RESTClient in Firefox – Advanced REST Client in Chrome – cURL if you’re a command line guy/gal – Standalone REST client §  Recommend standalone REST client such as CocoaRESTClient in combination with a proxy such as Charles Web Proxy, http://www.charlesproxy.com
  • 15. How many streams are there? § 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” Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 16. Stream URL components 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 (last option not covered in this presentation). <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. Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 17. Stream URL Examples 1.  /activitystreams/@me/@all List my (current users) entries Also used when creating new entries (e.g. POSTing) 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
  • 18. Anatomy of a stream entry A stream entry reads like ”the current user posted a note to IBM Connections and you should act on it” Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 19. Anatomy of a stream entry A stream entry reads like ”the current user posted aThe person doing the postingConnections and you note to IBM is called on it” can be a and should act the actor but usually the specific user ID current user (@me) Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 20. Anatomy of a stream entry A stream entry reads like ”the current user posted a note to IBM Connections and you should act onWhat the person does is called the it” verb and there’s a long list of predefined ones such as post, update, create... Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 21. Anatomy of a stream entry A stream entry reads like ”the current user posted a note to IBM Connections and you should act on it” The object in question is called the object and can be anything that represents the target ”thing” i.e. file, note, meeting... Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 22. Anatomy of a stream entry A stream entry reads like ”the current user posted a note to IBM Connections and you should act on it” The system the user worked on is called the target and can be any system you need to refer to Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 23. Anatomy of a stream entry A stream entry reads like ”the current user posted a note to IBM Connections and you should act on it” IBM Connections supports some special properties for entries such as actionable and saved to allow users to work with entries Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 24. Anatomy of a stream entry { "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" } } Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 25. Anatomy of a stream entry { "actor": reads like ”the §  A stream entry{"id": "@me"}, current user posted a file to IBM Connections and you should "verb": ”create", act on it” "title": ”Sales proposal for Rockets Inc.", "updated": "2013-05-17T12:00:00.000Z", "object": { "title": "Sales proposal for Rockets Inc.", "objectType": ”proposal", "id": "1234567890-1234567890-1234567890" }, ”target”: { ”displayName”: ”Acme Corp. CRM”, ”url”: ”https://crm.example.com” } } Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne IBM Connections is the implied default target but you can specify your own target in the entry
  • 26. Posting an entry* to the stream POST /connections/opensocial/basic/rest/activitystreams/@me/@all Host: social.example.com Content-Type: application/json Content-Length: xyz Authorization: Basic xyz123 { } "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” } * Smallest entry you can/should post to the stream
  • 27. Demo § REST client § Easily work with feeds, authentication, headers etc. § Use proxy to override cookies Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 28. Demo safety slide Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 29. Deleting from the stream § In short you can’t – up to IBM Connections v. 4.5 you cannot delete from the activity stream – you’ll just get an 403 Forbidden back § There is some light at the end of the tunnel though – this directly from the developers at IBM: “We are however adding 'propagateDelete' at the moment, which deletes all events related to a given object on receipt of a delete event (if so specified). This will be protected by a trusted role.” Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 30. Action required! Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 31. Mark/unmark as actionable GET /connections/opensocial/basic/rest/activitystreams/@me/@actions Host: social.example.com Authorization: Basic xyz123 PUT /connections/.../activitystreams/@me/@all/@all/de325123-e269-4a33-b62a Host: social.example.com Content-Type: application/json Content-Length: xyz Authorization: Basic xyz123 { } Response "actor": {"id": "@me"}, "id": "de325123-e269-4a33-b62a”, "connections": { "actionable": false } {"entry": { "connections": { "actionable": "false" }, "id": "unmark actionable:" }}
  • 32. Save for later Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 33. Mark/unmark saved GET /connections/opensocial/basic/rest/activitystreams/@me/@saved Host: social.example.com Authorization: Basic xyz123 PUT /connections/.../activitystreams/@me/@all/@all/de325123-e269-4a33-b62a Host: social.example.com Content-Type: application/json Content-Length: xyz Authorization: Basic xyz123 { } "actor": {"id": "@me"}, "id": "de325123-e269-4a33-b62a”, "connections": { ”saved": false } Response {"entry": { "connections": { “saved": "false" }, "id": "unmark saved:“ }}
  • 34. Rolling it up § Rollup is telling the stream that an post/ update relates to the same ”thing” § Used to avoid cluttering up the user interface Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 35. Rolling it up POST /connections/opensocial/basic/rest/activitystreams/@me/@all Host: social.example.com Content-Type: application/json Content-Length: xyz Authorization: Basic xyz123 { } "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” }, ”connections”: { ”rollupid”: ”1234567890-1234567890-1234567890” }
  • 36. Rollup id vs. Object id §  May seem similar but not the same… §  Rollup is a way of telling the activity stream that different posts, with different object ids, relate to the same thing i.e. should be rolled into the same post (in the UI) §  Posting with the same object id is the same as specifying the object id as the rollup id §  In general get into the habit of explicitly using the id of the ”thing” (i.e. the object id) you’re pointing to as the roll up id. 36 Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 37. Templates §  Two main reasons for looking at templates –  Internationalization (i18n) / translation –  Getting a standard representation in the UI §  Two types of templates –  Object Substitution replaces a reference with nice markup – an example is replacing the actor with a HTML reference using the business card –  Title Template Substitution – uses object substitutions it makes standard titles Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 38. Templates §  Object Substitution –  ${Actor} - this is converted into appropriately marked up HTML which displays the Actors name and links to a Business Card –  ${Object} - if this is a person we display as with the Actor above, otherwise the displayName with a link to the url –  ${Target} - if this is a person we display as with the Actor above, otherwise the displayName with a link to the url §  Title Template Substitution –  ${created} –  ${create.target} Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne = ${Actor} created ${Object} = ${Actor} created ${Object} in ${Target}
  • 39. Using templates POST /connections/opensocial/basic/rest/activitystreams/@me/@all Host: social.example.com Content-Type: application/json Authorization: Basic xyz123 { } "actor": {"id": ”@me"}, "verb": "create”, "title": "${create}", "updated": "2013-05-21T12:00:00.000Z”, "object": { "summary": "Project Z Review Meeting”, "objectType": "meeting”, "id": "123456789012345678901234567890OP” }
  • 40. Embedded Experiences § EE works a little different in e-mail and in the activity stream § E-mail –  Traditional (SMTP) e-mail is using Multipurpose Internet Mail Extension (MIME) –  EE’s adds an additional ”MIME part” – clients in the know will show content based on this data if possible and allowed by policy § Activity stream –  Activity stream delivery model is a bit different than in e-mail as we already have a structured payload –  Application sending the entry adds an openSocial.embed object to the entry with link to the gadget required for rendering the EE and context info Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 41. Embedded Experiences { } ”actor”: {”id”: ”@me”}, … … "openSocial": { "embed": { "gadget": http://ee.example.com/mygadget.xml, "context": {"id":"12345”} } }
  • 42. Posting to other users stream §  By default you may only post entries to your own activity stream §  Sending to others can be considered as spam §  As with standards there are multiple ways of doing it using either –  OpenSocial (openSocial: {deliverTo: []}) –  Activitystrea.ms (to: []) –  Just use the second one... §  To send to another users stream you need to either be him/her or be a trusted application (more information later...) Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 43. Posting to other user { } "actor": {"id": "@me"}, "to": [{"objectType": "person", "id": "A7E718F4-3040-2A00-C125"}], "verb": "create”, "title": "${create}", "updated": "2013-05-21T12:00:00.000Z”, "object": { "summary": "Project X Review Meeting”, "objectType": "meeting”, "id": "123456789012345678901234567890MN” }, "connections": { "rollupid": "123456789012345678901234567890MN”, }
  • 44. Posting as other user { } "actor": {"id": "A7E718F4-3040-2A00-C125"}, "to": [{"objectType": "person", "id": "A7E718F4-3040-2A00-C125"}], "verb": "create”, "title": "${create}", "updated": "2013-05-21T12:00:00.000Z”, "object": { "summary": "Project Y Review Meeting”, "objectType": "meeting”, "id": "123456789012345678901234567890OP” }, "connections": { "rollupid": "123456789012345678901234567890OP” }
  • 45. Posting to & as other user { } "actor": {"id": "1E7F44DD-9C20-842A-C125"}, "to": [{"objectType": "person", "id": "A7E718F4-3040-2A00-C125"}], "verb": "create”, "title": "${create}", "updated": "2013-05-21T12:00:00.000Z”, "object": { "summary": "Project Z Review Meeting”, "objectType": "meeting”, "id": "123456789012345678901234567890OP” }, "connections": { "rollupid": "123456789012345678901234567890OP” }
  • 46. How it looks in the UI Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 47. How it looks in the UI Oh!! Look at that pretty icon! Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 48. Using a generator { } "generator": {"id": ”ontimegc", "image”: "http://www.ontimesuite.com/favicon.ico", "displayName": ”OnTime Group Calendar", "url": "http://www.ontimesuite.com" }, "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” }
  • 49. Using a predefined generator { } ”generator": {"id": ”ontimegc"}, "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” }
  • 50. Registering generators wsadmin>execfile("newsAdmin.py") wsadmin>NewsActivityStreamService.listApplicationRegistrations() {wikis=wikis, communities=communities, general=General, profiles=profiles, activities=activities, homepage=homepage, blogs=blogs, forums=forums, files=files, dogear=dogear, demoapp=Demo Application, kudos=Kudos} wsadmin>NewsActivityStreamService.registerApplication("ontimegc", "OnTime Group Calendar", "http://www.ontimesuite.com", "", ”http://inside.intravision.dk/ images/ontime.gif”, ””, ”OnTime Group Calendar”, ”true”) wsadmin> After first use of a generator it can be referenced by ID. Purpose of registering is that users may filter by it in the UI. Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 51. Benefit of registering generator Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 52. Granting access (1) §  Permission to send to other users are granted using the trustedExternalApplication role §  Granted in the WidgetContainer application using wsadmin or the Websphere Application Server Integrated Solutions Console – the latter is easiest Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 53. Granting access (2) Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 54. Granting access (3) Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 55. Granting access (4) Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 56. Granting access (5) Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 58. Demo – safety slide (1) 58 Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 59. Demo – safety slide (2) 59 Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 60. Summary §  There’s no one stream - @me vs. @public vs. community §  Be patient – wrapping your head around these concepts can be hard in the beginning §  Remember that the data isn’t stored in the stream but rather is pointed to from the stream §  Entries are automatically purged from the stream unless saved or marked actionable §  You cannot delete from the stream (yet) §  Accessed using REST API URL based on user, group, application and activity ID §  When working with the RESTClient in Firefox use ”Private Browsing” mode as credentials used and cookies returned in one tab doesn’t leak to other ”Private Browsing” tabs. §  Pretty easy to use once you grasp the concepts Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 61. Resources §  Activity Streams in the OpenSocial specification, http://opensocial-resources.googlecode.com/svn/spec/trunk/Social-APIServer.xml#ActivityStreams-Service §  AppDev wiki, http://www-10.lotus.com/ldd/appdevwiki.nsf §  IBM Connections Activity Stream Integration (AD104 from IBM Connect 2013), http://www.slideshare.net/brianog/ad104-ibm-connections-actiivtystreamintegration §  Activity Stream hands-on lab, http://www-10.lotus.com/ldd/appdevwiki.nsf/ xsp/.ibmmodres/domino/OpenAttachment/ldd/appdevwiki.nsf/ 82567C415DF5243185257AEE00626F82/attach/5-sdk-workshopactivitystreams.pdf Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 62. Tools of the trade § RESTclient in Firefox, https://addons.mozilla.org/da/firefox/addon/restclient/ § Advanced REST client in Chrome (issues with POSTs), http://bit.ly/advancedrest § cURL (for any imaginable operating system), http://curl.haxx.se/ § Charles Web Proxy, http://www.charlesproxy.com Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne
  • 63. Access Connect Online to complete your session surveys §  But?, How?, Doesn't that mean... §  Give it to me! (or come talk to me after the session or find me in the hallways...) §  Twitter: @lekkim §  Email: mh@intravision.dk §  Blog: http://lekkimworld.com Billedet kan ikke vises. Computeren har muligvis ikke hukommelse nok til at åbne