Pages

Showing posts with label eclipse. Show all posts
Showing posts with label eclipse. Show all posts

Tuesday, June 7, 2011

Software Development Is Officially a Social Process

View Comments

I have talked a couple of times about socializing the social development process. For a while now, this integration has been available in technology preview mode.

At Lotusphere '11 #ls11 we announced that the integration would be ready for production by Q2 of this year. And it's coming in 7 days!

To get ready, you can watch a replay of a webcast that I announced earlier called Accelerate Software Delivery with Social Software webcast.

The integration will be available natively in Rational Team Concert 3.0.1 which will be available next week (June 14, 2011). The integration consists of:

  • Integrated activity stream within Rational Team Concert (RTC)
  • Ability to create activities directly from RTC (the activity will have a direct link back to the RTC workspace)
  • Ability to create a blog directly from RTC
  • Ability to surface the Connections business card directly within RTC
  • Search for contacts from RTC
  • Update your status and microblog directly from RTC
  • Associate an RTC project with a community for direct access to community features (forums, wikis, blogs, etc) from RTC
  • Connect RTC User Profiles to Connections Profiles
  • and more..

Here's a quick demo that shows some of the integration points:

To learn more, visit the Social page in the Rational Jazz site and check out IBM's official press release here.

If you are already an RTC 3.0 user, you can simply download the connector from here (with source code). And if you are NOT using RTC, you can also download RTC for free from here (3.0.1 Release Candidate 3)

Wednesday, August 25, 2010

Lotus Connections Community Newsletter Generator Plug-In

View Comments

As you know, I was recently out of the office for my paternity leave. In my previous post I hinted as how I was working with Sacha Chua on a new project. Well, it turns out that during my paternity leave, my first TAP (IBM's Technology Adoption Program) contribution was published: the Lotus Connections Community Newsletter Generator!

Based on some code that I had already written (and it's also used in the Lotus Connections Notifications Plug-In), Sacha Chua took my code and built an amazing toolkit for Lotus Connections community owners. Part of the toolkit quickly generates a newsletter based on the community's recent activities for distribution to community members. (IBMers, see my internal blog for more details that I can't disclose right now).

I then took Sacha's code and converted it into an Eclipse plugin. Just like my other plugin, this plugin will soon be available in the Plugin Catalog.

Here's a demo so you can see how it works.

Feedback from internal users has been overwhelmingly positive and I'm glad I can provide some value.

Let me know what other features you would like to see!

Enjoy!

Monday, June 7, 2010

Creating a Lotus Connections Plug-In for Sametime

View Comments

Last week I posted about a new plug-in I created for Sametime, the Lotus Connections Notifications Plug-In. The plug-in is basically a feed reader of all the things that your colleagues are working on inside Lotus Connections, but it's a lot easier to use for the big majority of users. And because it brings Lotus Connections to the desktop, it drives adoption.

One of the comments left on my blog asked some technical details on which APIs I used to create the plug-in. I briefly mentioned that I used the Notifications API, but I wanted to expand on that. Thus, warning, the following is very geeky!

When I first started, I looked at the sample plug-ins included with the Sametime SDK, specifically the com.ibm.collaboration.realtime.sample.snippets sample. If you want to learn more about how alerts work, I recommend taking a peek at the sample code provided in that simple plug-in.

I think that the best way to explain this is go through the flow of the plug-in and mention the classes being used:

  1. First, the plug-in is activated during startup because one of its classes implements org.eclipse.ui.IStartup

  2. At that point, the plug-in's Activator gets loaded and a job is created. This job is a custom class that extends org.eclipse.core.runtime.jobs.Job and overrides the run(IProgressMonitor monitor) method. This method runs in a separate thread and is scheduled to run every 60 seconds.

  3. Once the job is triggered, we make a query to Lotus Connections to retrieve this feed: https://connections.acme.com/news/atom/stories/public. This feed returns the same content shown in the Discover tab of the Lotus Connections Homepage.

  4. For each story retrieved, we check to see if it's from one of the user's colleagues. (you can retrieve the user's colleagues by querying https://connections.acme.com/profiles/atom/connections.do?connectionType=colleague&userid=....

  5. If a story is from one of our colleagues, we create a notification using the Sametime Notifications API. To do this, we create an instance of com.ibm.collaboration.realtime.messages.AlertUserMessage. Once instantiated, we set some options, and then call the post() method.

  6. Once the alert has been posted, the framework checks what type of alert it is. In plugin-xml, I've defined that this alert should be 'drawn' by a custom class I created called NewsUpdateWindow.

  7. NewsUpdateWindow is extends com.ibm.rcp.realtime.alerts.ui.DefaultAlertWndow and overrides the buildContents(Composite parent) method.

  8. In this method, we follow the basic RCP UI guidelines to build the UI of the alert.

  9. For my particular alert, I chose to use Sametime's embedded browser: com.ibm.collaboration.realtime.browser.Browser. The reason is that the atom feed returns an HTML version of the news feed. Therefore, the alert looks like what you would see if you were reading the stories directly in Lotus Connections via a regular browser ( and I don't need to do any extra parsing ).

  10. At this point, the alert is shown to the user, the job ends and we wait until the job is triggered again, 60 seconds later.

I've included the source code as part of the plug-in. Thus, as soon as the plug-in becomes available you'll be able to see the nitty gritty of how this plug-in works.

I hope this information is valuable to you. Please let me know if there's anything else you would like to know.