This report server is designed to run already designed reports at scheduled intervals. It uses the JasperReports API libraries along with the iReport extension libraries. This combined with the Quartz scheduler allows for reports to run at predefiend intervals.
You can schedule report to run on any interval. The underlying scheduler architecture is OpenSymphony's Quartz which allows for cron style scheduling or interval scheduling. You can even specify holiday scheduling.
You can take all of your reports and sub reports and shove them into a single .jar or .zip file. This includes the compiled scriptlet classes that iReport creates for charts and graphs, as well as the many .jasper files you have when you have many sub-reports.
Currently the system will email user with the report inline, not just as an attachment. What does this mean? This means that you can open the HTML email and see the layout as designed. This include charts and graphs. In addition to the inline report, the report is also attached as an Adobe Acrobat (PDF) file for end-user storage or forwarding.
The logging infrastructure uses Log4J which allows for clean crisp logging to your specified location.
Almost all required libraries are included in the distribution. This makes the time required to get up and running very quickly. About the only thing missing are things like database drivers.
2004-11-27
Happy Thanksgiving, and enjoy release 1.0 Report Server! You can download
the new release from here.
If you find problems, or would like to see things different, please submit
your comments to the mailing list. Enjoy!
2004-11-06
I'm still working pretty hard on this first version. I should have an
alpha version in a week or two. If you want, just check out the CVS
version. The ant script should work fairly well for you.
Like most people, I started by writing my own report server. It was a simple set of queries which had results (typically just a number) shoved into an XML document. From here I passed the XML document through an XSLT template to form HTML output. This was then put into an email and sent to my bosses to show our company's daily statistics. The requirements were simply met:
Previous to starting to write my own report server I had searched high and low. I couldn't find anything. Like the requirements above requested, I did find things like Brio, Business Objects and Crystal Reports. But these were expensive and we are a brand new startup. We seriously couldn't even afford the $100 it would have cost for Crystal.
I started my search again. And again I enlisted friend's help in finding me a reporting solution. After searching for what felt like days (wait...it was days) I found iReport. It had all the neat things I needed and I quickly found out how to do sub-reports. Without sub-reports I couldn't have had all those different data sets and number combined in a pretty output. This was what I was looking for! Alas I had found my solution. I figured out how to do things like graphs and I was on my way.
The next step was to get this all into an email. After search the JasperReports API docs I found that I could set URI paths and such on the images. I wrote a quick program to run my reports and then made my program set these with "cid:" prefixes which could then refer to the the attachments in an email. Woohoo, I had an inline email with all of the inline images. This made the bosses happy. Just for giggles I started outputting things in PDF as well and attached them in addition to everything else. This made it so that the PDF could be stored (better than email) as well as being able to forward the reports without the formatting getting screwed up.
As a report developer I next found that iReport would create scriptlets and such for each of the sub-reports which had a graph. This made it a little tough to get into the classpath for my report runner. Alas, I would have to add my report location to the system classloader. That was bullshit, so I started thinking about it...
This is where Report Server (this project) came in. I can't be alone on this problem of the classloader and I decided to start a project at SourceForge to track my progress. I figured out a few classloader things, and now I can load up each report in it's own classloader, with all of the required sub-reports and classes easily being referenced.
And then I arrived at the mess of all of the .jasper files of sub-reports and the .class file scriptlets that ensued. What a mess. I wanted to package this up into a single file to represent my report. A side effect of the classloader stuff I developed allowed for me to put all of my files into a report.jar file and shit it out.
This is where things now started coming into the Report Server as you know it today. Of course more and more features will be added over time. I hope this History has helped you understand why I built this.
We don't currently have any available downloads. Instead check out the project page for links to CVS checkout. We should have something in a few weeks.