Before I post the OSLC code sample, I thought I would provide a little bit of back ground on it.
The technology graveyard is full of past, and often short lived, attempts at providing a universal inter-technology communication platform. These brave attempts at inter-systems "peace", attempted to provide a standard inter-system communication regardless of implementation technology, operating system or even network protocol; a kind of IT Esperanto.
One of the more popular attempts that actually had some degree of traction was CORBA. It allowed the creation of interfaces that were implemented by one system and called from another. Sounds good, except that this communication was facilitated by a middlemen called ORBs or "Brokers". These powerful middleman were platform specific translators that needed to be implemented on each technology that wanted to either call or provide interfaces. They were responsible for brokering requests in a standard way between each other and were often developed by different vendors in different technologies.
CORBA ultimately suffered the flaws of so many of its predecessors (and some successors) in their middlemen had constant interoperability problems. Even successors to CORBA that provided a toolkit or some kind of middle third party technology (traditional Web Services come to mind) to facilitate communication, had the same issues.
The logical conclusion to all of this would be to eliminate the middleman. Like Esperanto, perhaps its better to decide on a common language that two should speak and eliminate the need for a translator who ultimately makes mistakes. Fortunately because of the success of the Internet such a language is readily available, HTML, (or rather a more generic form called XML) as well as a common medium (HTTP). This common paradigm of information exchange has been collectively wrapped up into a set of principles called REST. The great thing about REST is that it uses an already proven mechanism and eliminates the need for a third party translator.
Now that systems have a common approach (REST) to be able to "talk" to each other, they now need to know and understand what to "say"; they have to find a common language. At its most basic form it is XML, but usually for systems to "talk" to each other they need to establish a common vocabulary, a lexical structure with common terms that are understood by both parties. Both systems may introduce new terms or words but a common agreement on the most basic language is usually required (developers who don't usually read the agreement are able to read the XML and and figure it, thats the great thing about it!). One such effort in the domain of software engineering is Open Services for Lifecycle Collaboration (OSLC).
OSLC is a workgroup of industry leaders who are defining the vocabulary that should be used between components in an application product lifecycle: requirements management, quality management and change management, for example. It is also the integration technology that is adopted by the Jazz Platform for integration between its components: Requirements Composer, Quality Manager and Team Concert (as well as others!). It allows loose coupling between components and it is possible to plug and play one component for another provided by another vendor. By creating an OSLC consumer or provider it wholly possible to integrate that organic requirements solution you developed in-house in the 90's into the Quality Manager and Team Concert.
We can take the 90's era organic legacy solution developed in C++ as a case in point. Perhaps the boss extols the virtues of the the in-house legacy requirements management solution with a passionate proclamation: "Legacy means it works!" . Now he wants your team to integrate it with Team Concert.
With that in mind, in the next blog I will demonstrate a C++ OSLC client in Rational Team concert.
Here are some excellent resources on OSLC:
OSLC Home Page: http://open-services.net/
Steve Speicher's OSLC Blog: http://stevespeicher.blogspot.com/
Open Services Wiki: http://open-services.net/bin/view/Main/WebHome
OSLC Workshop (Java OSLC client): https://jazz.net/library/article/635
Eclipse Lyo Project: http://www.eclipse.org/proposals/technology.lyo/