Reporting from the cloud?

Hi,

I am new to Jasper so perhaps what I am asking is obvious but I have the following scenario and want to know how to go about implementing it:

  1. Hosted cloud computing commercial (not in-house) application with monolithic secure database serving multiple companies written in Servoy.

  2. Each company must only see their own data.

  3. Must allow any user to report on data from our application

  4. Users are able to customise their reports some how from the server.

So,

  • How do they get to the report to customise?

  • How do they send the customisations back to the server?

  • Where do we store the customisations inluding logos etc?

  • What are the security implications?

  • Do they need to load iReports or something else locally to do the customisations or can we access something on the cloud for a secure rpeort customisation envuironment?

  • How do we pass over the database schema etc in order for them to customise the reports?

  • And finally, these users are not Jasper experts so I would ideally like to provide a canned , simplified environment for them to make these customisations.

I would imagine the above to be a typical example of reporting issues being faced by any company hosting a multi-copany commercial application in the cloud that requires user customisable reporting.

Hope someone can help.

Cheers

David Younger
david@theservicemanager.com
+61403392363

Quite a few different issues in that question :)

I would suggest you start out by looking at the commercial product for Jasper Server: http://www.jaspersoft.com/jasperserver & http://www.jaspersoft.com/saas
It comes with some of that out of the box. Talk to Jason Meunier at Servoy and he can give you more info.

If you want to do it with the regular Jasper plugin (without Jasper Server), then you have a few options.

  1. Use the Foundset option instead of SQL when building your reports. This allows you to tie into Servoy’s built in security in the Foundset (assuming your using table filters for multi-tenant)
  2. Create views in your database for each customer, and then a username for each customer with access to only those views. Then they can query the tables directly. Of course you code for the view should filter the records.

For some of your other questions, there are various ways to approach the problem. I suggest storing the reports in your database (1 record per report). Then you can write it out to file and run it when you need to. Then users can upload their own reports by simply modifying the records and inserting the jasper report file into a binary fields. The users would use iReport to modify the file, and when complete would have to insert the finished file back to the DB.