A Different Approach for Jasper Reports Plugin

Hello,

My overall goal is to have a single Jasper-Server and Servoy accessible place where Jasper reports (and their associated resources) can live. I want to be able to utilize Jasper Server as my reports repository, and develop/modify/tweak/test my reports in iReport using the Jasper Server plugin. I also want to be able to run my reports from either Servoy or Jasper Server, and I don’t want to copy reports from one place to another; have more than one copy of a report. So with that in mind…

My travels in trying to utilize Jasper Server and Servoy’s jasper plugin together are leaving my wondering why the current Jasper Plugin was not developed as a web-services client to Jasper Server? The way the plugin is implemented currently, report files must live in a server-accessible directory, which means that they cannot live in Jasper Server’s repository (which from what I can tell exists solely in a DB). This makes utilizing Jasper Server alongside the Servoy Jasper plugin - with a goal of sharing report files and resources - difficult if not impossible. From what i can tell it seems that the plugin team has reinvented the wheel a bit instead of utilizing Jasper Server’s WS client API.

Jasper Server comes standard with an AXIS webservice for authenticating users and accessing report units and resources etc. In my opinion, the plugin should utilize this webservice and not force report files into a directory. This may make the web-client integration a bit more straight forward too??

Another possible approach to the current Jasper Reports Plugin would be as follows:

1). Distribute a copy of Jasper Reports Community Edition with Servoy Server (developers would not have to use it necessarily, but it would be a central repo for reports)
2). Instruct developers to still use iReport for report design and editing, but provide details on how to connect iReport to the distributed Jasper Server via the Jasper Server plugin for iReport. Or even setup the connection for developers and distribute iReport too.
3). Modify js_runReport to accept a Jasper-Server webservices url for a source (instead of a JRXML/jasper filename expected to live within the report directory) and credentials for authenticating against the webservice
4). Implement the appropriate WSClient interfaces (which admittedly, at this point, I know nothing about)

Some benefits of doing things this way:

1). Central repo for report units
2). Benefit from Jasper Server functions such as scheduling, security, organization etc. + ability to run reports outside of Servoy (e.g. for custom web applications that utilize headless client instead of web client)
3). New plugin roadmap would be available for tighter integration between Servoy and Jasper Server e.g. making media/resourcebundles/lists/DB connections etc. available to Jasper Server as defined in Servoy

Also some things that the plugin is doing now e.g. compiling and saving to temp folders etc. is done automatically by Jasper Server. this could make code such as JasperReport getJasperReport a bit prettier too.

So…that’s my two cents, and I would be willing to help with this should Servoy be interested.

Also, please keep in mind my comments are not of the critical nature at all, and to be completely honest I have not delved too deeply into the webservice functionality of Jasper Server. Some of this simply may not be possible from within Servoy or I may have even misinterpreted what is possible with WSClient.

Thoughts?

Please see API document here: http://support.jaspersoft.com/downloadfile.php?itemname=wp-jaspersoftapis&newreg=1, which describes Jasper Server Webservice integration.

Hi Jeff!

I think you have a point here.

I don’t know Jasper Server myself but if it does all you say that might indeed be a better way to do reporting (it looks a bit like the integration of the Crystal Reporting Services inside MS SQL Server 2005+ BTW). Do you think it is still possible to use custom JRDataSource out of the WSClient? I’m asking this because for me the FoundSet custom datasource is a must have for seamless integration in Servoy…

Anyway the Jasper plugin could certainly do with optimizations and cleaning up of its design and code, and that is certainly something to explore! I’m willing to help too if needed, I intended to get back to this plugin anyway and see what can be done with it. - Just need to find some time, now ;-)

This plugin is a central piece of software for a wider adoption of Servoy IMHO and this needs to be done right!

I hope that your idea will go further than this post…

I hope that your idea will go further than this post…

Well, time permitting, I would really appreciate the folks from Servoy having a look at this potential track for the plugin. If it is a plausible track I think it could become a major feature.

Well, Sounds like a perfect plan for a second plugin: one that integrates with Jasper Server.

JasperServer is a completely different product than JasperReports (although it’s build on it). Forcing people for which Jasper Reports is enough to also have Jasper Server installed (extra resources required, extra stuff to maintain, etc etc) doesn’t seem like a good plan to me.

Why the Jasper Reports plugin was setup the way it is? Well, the plugin dates back 3 or 4 year, as far as I know way before the product Jasper Server actually existed.

What do you mean with “making the web-client integration a bit more straight forward”? Which part isn’t straight forward now?

All in all: a good idea to create an integration with Jasper Server. The public plugin API offers all the functionality to build such a plugin.

Paul

Hey Paul,

I updated my original post just a moment ago to include a link to an API document, which I think is a good resource.

http://support.jaspersoft.com/downloadfile.php?itemname=wp-jaspersoftapis&newreg=1

More to come…

What do you mean with “making the web-client integration a bit more straight forward”? Which part isn’t straight forward now?

I meant that if you are building a web application [and assuming you don’t want to use the newer functionality of passing in record obj’s and foundsets etc.] why go thru Servoy, and ask it to run a Jasper report for you when Jasper Server can do this, and is designed specifically to do this. I was referring to how integrating with Jasper Server could be beneficial.

Also, I don’t see the benefit of having two plugins. This may end up being be a trivial patch.

You can also put it differently: Why would you have to install and maintain JasperServer as well if you build a webapplication in which you only need to be able to run reports?

JasperServer is such a completely different product than JasperReports that I do not see 1 plugin supporting both. Of course technically it can be done, but the overhead of needing to support both within 1 plugin while you typically only use one or the other would justify creating 2 separate plugins. The plugins would have much in common anyway.

Paul