Presentation on theme: "Speaker Notes Perl Modules for OSLC Programming Max Vohlken Release Engineer, IBM Rational Software Email: firstname.lastname@example.org."— Presentation transcript:
1Speaker NotesPerl Modules for OSLC Programming Max Vohlken Release Engineer, IBM Rational Software
2Agenda Speaker Notes Introduction What services do the modules provide?The layout of the modulesModule OverviewRTC Query ExampleRTC Work Item Update ExampleSample clientsRuntime requirementsWhat are the next steps?Live demo
3Introduction Speaker Notes Hello my name is Max Vohlken. I’m a release engineer for ClearCase and ClearQuest.My main responsibility is the automation used to build these two products.My automation tool of choice is Perl.I’ve been programming in Perl for over 15 years.Our development organization in the progress of migrating from using ClearQuest for defect tracking to using Rational TeamConcert(RTC).With ClearQuest we have automation that needed to be re-implemented using RTC. This automation was written in Perl.In my quest to re-implement this automation I’ve created a set of Perl modules to make interacting with RTC easier.The modules use OSLC to interact with RTC.Based on what I learned writing the RTC integration I have also created a similar set of modules for interacting with ClearQuest.
4What services do the modules provide? The goal of the modules is to query and update work items in RTC and change requests in CQ.The modules are based on an existing REST module called REST::Client. This module provided the standard REST methods of GET, PUT, PATCH, POST, and DELETE that OSLC uses.The modules implement the authentication scheme needed to access restricted resources in RTC and CQ.For RTC it implements the form based authentication scheme.For CQ it implements basic authentication.The modules implement the service discovery mechanism as documented by each products OSLC specification to discover the URL to use to execute dynamic queries.
5The layout of the modules After trying to implement these modules for both RTC and CQ I’ve come up with this convention for the different modules. The modules are written using Perl object oriented architecture.Lyo/OSLC/<product>/<domain>.pmClass that implements a client for a particular OSLC domain of a product.Lyo/OSLC/<product>.pmClass that implements methods that are common to the product and can be shared by the multiple domains.Lyo/OSLC.pmBase class for all OSLC modules. Methods common to all products go here.Lyo/OSLC/RDF.pmClass used to convert RDF formatted responses from the OSLC provider into equivalent Perl data structures. The methods that query the OSLC provider return an object of this type.
6The modules Lyo/OSLC.pm Lyo/OSLC/RTC.pm Lyo/OSLC/CQ.pm Methods credentials($user, $password)Lyo/OSLC/RTC.pmImplements form based authenticationrootservices()Lyo/OSLC/CQ.pmImplements basic authentication
14Runtime Requirements perl or ratlperl Direct module dependencies LWP::UserAgentURIData::DumperXML::Simple (not shipped with ratlperl)REST::Client (not shipped with ratlperl)All of the other modules these modules depend on.
15What are the next steps?Add the ability to create new change management recordsAdd a more robust RDF handling libraryOpen the modules up for contributions from the community