On January 28th StreamWork officially became an OpenSocial Gadget container. At the time we didn’t make a big deal about it because we wanted to validate a number of new partner gadgets inside the StreamWork Gadget container first. Today I’m excited to talk about a number of new partner gadgets that have been deployed to StreamWork, and how developers can add even more tools to StreamWork using the OpenSocial gadget API.
Invitation to Developers
Now that StreamWork supports the OpenSocial Gadget standard, I want to make an open invitation to all the OpenSocial vendors and developers out there to investigate the feasibility of adding their gadgets to StreamWork. If your gadget can bring value to the collaborative decision making experience in Streamwork then we want to hear from you. Adding your gadget to StreamWork is a great way to do low touch partnering with SAP, the leader in enterprise applications.
The number one requested feature by StreamWork users was a collaborative mind mapping tool to use in StreamWork Activities. Today, thanks to the OpenSocial Gadget API, and especially our partners we can provide you with two. In addition to mind mapping tools, we have integrated a few other gadgets for this first release including Google Translate, Doodle, and Atlassian tools.
Building Gadgets that make sense in StreamWork
In this partner release we have two different types of new tools. I would classify them this way:
- Non-collaborative tools
- Social & Collaborative tools
A good example of a non collaborative tool would be the Google Translate tool we just added to StreamWork. The use case for these types of tools is to add valuable features to the StreamWork Activity workspace. In the case of Google Translate, you can have quick access to a translation tool when collaborating with people using multiple languages working in the same activity. Another non-collaborative use case would be an RSS reader that brings in content about a specific subject that is important to the topic of the activity. There are a number of different use cases but you can see how these tools don’t necessarily need to be fully collaborative to add value to StreamWork.
Social and Collaborative tools
The best example of collaborative tools inside of StreamWork is the Pro/Con tool. This tool allows users to submit their own pros and cons for a multiple number of options listed in the tool. You can see your own comments as well as those of your co-workers in the activity. Each entry is protected from interaction from the other users.
The MindMeister Mind Map tool is a great example of a collaborative OpenSocial tool that has been added to StreamWork. This tool allows a number of StreamWork Activity participants to work together to build a collaborative mind map. Multiple users can add new nodes to the mind map collaboratively.
If you’re an OpenSocial developer you need to know a few things about how OpenSocial concepts map to StreamWork. In OpenSocial containers there is the concept of “Friends”, this encapsulates the people you are connected to in that container. In StreamWork we treat the activity as the container. The “Friends” of the “Viewer” are all the participants of the activity in which the OpenSocial gadget is installed. The “Viewer” is obviously the current StreamWork user that is viewing the activity. Its important to remember that that your OpenSocial “friends” are not all your StreamWork collaborators, or even the people in your Organization, they are the participants of the activity
The Trick with building Collaborative StreamWork OpenSocial Gadgets
While we were working with one developer we discovered how you could be easily tripped up trying to build collaborative gadgets. What he did was store and retrieve all the data in the scope of the current user or “viewer” in OpenSocial terminology. I’ll use the example of building a Pro/Con with the OpenSocial Gadget API to illustrate.
To save persistent data like a Pro or a Con vote you need to use:
And to get persistent data you do something like this:
The key thing here is that you can only add or change your own data, but to make your gadget collaborative you need to display all the “friends” data. To do this you need to loop through all the data for all the friends in the activity. To get the friends or participants (StreamWork equivalent) of an activity you can use this call:
For the tool to be a truly collaborative application you must not only display the viewers data, you must also show the other activity participants data. Before the developer in this example realized this we discovered that every end user saw a different version of the gadget. Each user’s view only displayed the content that they had added to StreamWork themselves. StreamWork truly becomes powerful when all participants of the activity can view and collaborate on the same set of data to drive the conversation and decision making.
SAP StreamWork is now a OpenSocial gadget container that allows developers to add new tools to the StreamWork tools catalogue. Developers can now leverage the work they have done with for other containers and make them available in StreamWork. This provides a great return on investment for developers building OpenSocial gadgets, and a way for them to partner with SAP easy low cost way.