Skip to Content
Author's profile photo Boris Magocsi

Displaying Universal Worklist Items in Microsoft SharePoint

My colleagues recently published a paper that describes the integration of the Universal Worklist into Microsoft SharePoint. The described method consists of swallowing the Universal Worklist as it’s delivered by the portal rendering engine in SharePoint.

Another method of displaying UWL items in SharePoint is by extracting them from the UWL and creating an RSS feed that can be displayed in SharePoint, either by using the predelivered RSS WebPart or developing an WebPart to do custom rendering. This involves a relatively small amount of code in the NetWeaver Portal. I’ll describe what I did to get this to work.

Motivation and Approach

The basic idea is to implement a simple integration of the NetWeaver Portal UWL and the SharePoint UI, allowing SharePoint end users to see and interact with a UWL task list.

Here is the result as it looks in my SharePoint UI:

image

Along with this blog, I’m providing a code sample of the UWL RSS iView on the snippets wiki. More on what it does later.

This code sample originated with a request to expose BPM tasks in SharePoint. For now, this is the easiest way to do that (that I can think of). With the next release of NetWeaver, it will be possible to access a list of a user’s BPM items without going through the UWL API. The benefit of going through the UWL API, of course, is that task items from all connected backends will be exposed, and not just BPM task items.

The UWL task data for the user is exposed as an RSS feed, and consumed within SharePoint using an out-of-the-box RSS WebPart. I did this with a small amount of custom code packaged as an iView in the portal. It sits on top of the UWL API and generates an RSS feed based on the user’s UWL data.

Single-Sign-On is set up between SharePoint and the NetWeaver Portal to make the end user experience straightforward.

My system setup looked like this:

image

 

Because I had three systems instead of two, I had to make sure that SSO was also set up between the SharePoint box and the BPM box. That way, no login is required when the user clicks on an item in the SharePoint UI. The user is brought directly to the task in the BPM backend, no login required.

Exposing UWL Data as an RSS Feed

Now let’s look at the code sample for the RSS iView.

This approach is very straightforward: UWL data is simple and can be easily represented using the RSS format. And RSS can easily be consumed by various clients, including SharePoint.

The only trick is to know how to generate an XML feed using an iView. A first attempt might be to do the content retrieval and generation process within the AbstractPortalComponent’s doContent method. This will not work, because at this point in the request flow, the content type of the output has already been set by the portal runtime (and it’s not “text/xml” or the equivalent for RSS, which is what we need).

Looking at the request flow, this potentially makes sense, since each iView represents a node in a tree of content being assembled by the portal – most likely HTML, not XML.

To get around this, do the content retrieval and output generation earlier in the request flow, before the content type has been set by the runtime. The doOnNodeReady method works well for this.

Single Sign On Between SharePoint and NetWeaver Portal

Nothing special was done to set up SSO between SharePoint and the NetWeaver Portal. We simply used the SPNego Wizard and followed the documentation

Setting up the WebPart in SharePoint

The only trick here is to realize that (URL) domains come into play when trying to get SSO to work. In my environment, each box was in a slightly seperate domain, so in order to simplify things I used only the hostname and not the FQDN when configuring the RSS WebPart in SharePoint. This causes the browser to share the HTTP cookie issued by SharePoint with the NetWeaver backend.

Exercises Left to the Reader

Implement a more comfortable RSS WebPart for SharePoint. The out-of-the-box WebPart is very basic and might not suit your needs.

Assigned Tags

      6 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Guillaume GARCIA
      Guillaume GARCIA
      Could you confirm that the RSS feed is secured by SSO to the Netweaver Portal?
      (Otherwise, isn't there a "security" issue in exposing UWL items as RSS feed? There might be sensible information in the feed itself, isn't it?)

      By the way, I think the link to the article (or is it an upcoming weblog?) is somewhat broken. Shouldn't it be : http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/40dbb54f-5c28-2d10-ad94-f812a548dc07

      Thanks again for this great blog.

      Best regards,
      Guillaume

      Author's profile photo Boris Magocsi
      Boris Magocsi
      Blog Post Author
      Thanks for catching the link, I updated the text.

      I didn't use SSL between SharePoint and the NetWeaver Portal, but you could do that. The RSS WebPart supports fetching data over SSL.

      I did use *SSO* between SharePoint and the NetWeaver Portal, however. In our case, we had Kerberos SSO set up between the two boxes.

      Author's profile photo Alex Zelinski
      Alex Zelinski
      I've modified the code using our system information and deployed to our portal.  I created the iView and tried running directly in the portal but it appears that nothing happens.  What causes the doOnNodeReady method to fire?

      Thanks.

      Author's profile photo Boris Magocsi
      Boris Magocsi
      Blog Post Author
      Do you have items in your URL? The doOnNodeReady method is called per request when the portal runtime puts together the UI element tree.

      You can contact me by email (address is in my business card) and I might be able to help out more.

      Author's profile photo Former Member
      Former Member
      Hi Boris,
        Thanks a lot for sharing your knowledge and expertise.
        WHat version of Netweaver is this code written for? We are on NW 7.0 and SP21.
      When I log in to my portal, under content admin -> web dynpro, i do not even see the app tc~bpem~wdui~taskinstance under sap.com.
      What am i doing wrong here?

      thanks a lot
      preet

      Author's profile photo Boris Magocsi
      Boris Magocsi
      Blog Post Author
      Hi Preet,

      the code itself should work on 7.0, but you don't have a BPM system in your landscape. The code is BPM-specific, i.e. it's for exposing BPM items in SharePoint and would need to be modified to handle non-BPM backends. I should make that more clear in the blog and in the code sample.

      Boris