This June Sean Johnson and I attended the IBM Rational User Conference in Orlando. For those of you who are not familiar with Rational, it is the product umbrella that IBM puts their developer focused products in. It was the first user conference that I have attended since I took on my new role as Developer Evangelist at Business Objects. Business Objects and IBM have had a strong partnership for a number of years and we were there to talk to customers about our integrations into Rational Developer Studio, Rational ClearQuest, and show off some of the cool new products we have like Crystal Reports for Eclipse, Crystal Vision Server, and Crystal Xcelcius.
One of the highlights of the show was meeting Michael Fox, a software Engineer from IBM. Michael was at the show in the Alpha products area giving customers a sneak peak at a new reporting project for Rational ClearQuest. The project will allow ClearQuest users to have more flexibility in their reporting. This project is a prototype, and not currently committed for any future product release.
Michael, Sean, and I were able to sit down and discuss ways that we could help ClearQuest users expand on their current reporting needs. The biggest hurdle in the current ClearQuest/Crystal Reports solution was that it used what we call a Push solution. What this means is that ClearQuest collects the data and then pushes it into a Crystal Report at runtime. This scenario works great and allows IBM to embed the power of Crystal Reports in Rational ClearQuest.
As users reporting requirements grow, many ClearQuest users are discovering that they need features like report scheduling to off load database queries to non peek times. In order to allow for report scheduling ClearQuest will need the ability to move to a data Pull model, where the report engine connects to a previously specified datasource. In this scenario a report developer would point the report to the ClearQuest database and create a report based on the tables and fields. The main motivator and benefit to our current users is substantially improved efficiency and reduced memory consumption. Under the push implementation, ClearQuest needs to get the data, then deliver it to Crystal via an API call. This extra step of assembling all the data in memory is eliminated under the pull model, as the report fetches the data directly.
The problem is that Michael needs to connect to ClearQuest using their Java API. This is not an uncommon scenario for many developers. In many cases systems are only officially available through an API that provides the interface. BusinessObjects Enterprise has this same scenario. We do not officially support connecting directly to the CMS database but we do provide an API that allows you to interface with it.
We discussed two possible scenarios for reporting off API calls that I thought the community would be interested in:
- Using the API create a web service that Crystal Reports can connect to. Crystal Reports supports web service connectivity. To Pull data from a web service all you need to do is provide Crystal Reports with the WSDL file.
- Using the API create a JavaBean for the report to connect to. Crystal Reports supports connecting to a java class as long as that class has a public method that returns a java.sql.ResultSet. Using classes created by Business Objects it is possible to convert POJOs to java.sql.ResultSet. The POJOs that are converted are supplied from the external API.
I’ve created a sample that demonstrates the two scenarios above. In my case I used the BusinessObjects Enterprise SDK to create reports that display a list of Report Templates that live in my Crystal Reports Server or Business Objects Enterprise system. Click on the links below to check out the samples.
Just an FYI, these samples are not officially supported by Customer Support. I would be more than willing to fix any glaring mistakes in my sample but unfortunately I don’t scale big enough to provide support for every possible deployment scenario.
Download the sample – Please register for a free Diamond account before downloading this sample.