Reporting Advertising

     

What Pentaho Reporting can do for you

Current Stable

Previous

In Development

Pentaho Reporting allows you to refine your raw data into visually appealing reports that convey all the information you need to make better decisions and to get your job done faster. The open architecture of the reporting system and our Open-Source nature makes it a breeze to integrate the reporting engine into your existing systems.

Many of the worlds leading enterprises already use our technology to gain a competitive edge. What are you waiting for? Download it now!

Learn more about Pentaho Reporting

Pentaho Reporting 3.8.3

Pentaho Reporting 3.8.2

Pentaho Reporting 4.0.0

Development for this version has just started. Relax, it will take a while. Crosstabs are coming ..

Monday, September 13, 2010

BI-Server parameter input: An authoritative voice

Over the last few release cycles, we have spent some tremendous time in making the parameter input easy to use. Along with the community and user feedback the GWT client received new capabilities on when and how to pass parameters around.

We strive for a release it quick and release it often approach, as we rather solve pain in a suboptimal way today than to wait for a perfect solution that comes next year, if ever. And thus it is a sad (and rather natural) truth that not all attempts are hitting the spot.

Especially the auto-submit feature is a creepy little bugger and has seen numerous hacks, tweaks and finally a full make-over in the upcoming 3.7 release.

Architecture: the inner workings of the reporting plugin in 3.7


The reporting plugin is a GWT application, and thus when first invoked, it will initialize itself, inspect all parameters it received from the URL and fires a non-paginating parameter-request back to the server.

On the server, the Parameter-content-handler handles the request. It read all values from the URL. URLs only transmit strings, so in a second step, those raw values get parsed into Java-Objects. The parsed values now get passed down into the reporting engine for further validation. The engine validates the parameters and either accepts the values as fully valid or spits out a bunch of error messages.

If all values are valid and the request asked for pagination, we also paginate the report to return the total number of pages for the report.

The validation and pagination result, along with a description of all available parameters and their accepted values are sent back to the GWT UI.

The first parameter-response now initializes the GWT application and sets the initial state of the auto-submit feature. If the GWT UI detects that all parameters have been accepted as valid, and if auto-submit is enabled, it now fires a full parameter request that paginates the report.

Subsequent updates will then follow a slightly different protocol:

If auto-submit is disabled, any user-input triggers a lightweight parameter validation request. This ensures that list-parameters always get selections based on the actual user input. The response only updates the parameter definitions and values and at no point the report gets executed.

When auto-submit is enabled, we always fire heavyweight parameter requests, which trigger a pagination run on the server. When such a request returns without error, we do show the report content. This finally invokes the report-content-generator and creates the actual report content that is shown below the parameter input pane.

The BI-Server 3.6.0 Situation



In this version all parameter validation requests were heavy weight requests. So every parameter validation triggered a pagination.

A pagination run is only triggered if all parameter were validated successfully. To turn the heavy weight parameter requests into a 3.7-style lightweight request, you need to add a parameter that always validates to false, until the user explicitly selects it. One simple way of doing that is to add a mandatory check-box parameter with the values "Wait" and "Run" and the post-processing formula

=IF([p] = "WAIT"; NA(); [p])


that translates all wait into values and thus making the parameter unvalidatable until the user selected "run".

5 comments:

  1. As 3.7 is a release that is all about parameters, will it also include a way to conditionally hide parameters, based on the value of previously entered parameters.

    ReplyDelete
  2. No, 'cause guess what 4.0 will be about again (among other minor things like crosstab).

    Dynamically hiding parameters would be a stretch so close before the release, so I rather delay that until 4.0.

    ReplyDelete
  3. Hi there!
    There is a release date for the version 3.7?

    ReplyDelete
  4. We are currently building a preview release that should go out at the beginning of next week.

    The final release is currently scheduled at mid-October. But as usual: It's done when it's done. Release dates are guideline-dates of what we think is sensible - it could be later if we find something truly evil to fix first ..

    ReplyDelete
  5. Hi!

    We are working on some reports with Pentaho BI 3.6.1 and the Auto-Submit parameter cause us a lot of trouble. The workaround with the extra parameter work, but it's not very elegant.
    We thought, that a better way would be to change the code behind the whole thing until the new version isn't available.
    Could you give us a hint in which class is the behavior of this parameter controlled?
    It would help us a lot.
    Thanks.

    ReplyDelete