Alfresco Business Reporting – Alive and Kicking

alfresco business reporting logoIt has been a while since I published new code on the Alfresco Business Reporting project. Actually, I still have not. But lots of stuff has happened last 4 months, and some months before that. Partially because I needed the functionality for my customers (or for those testing this tool). And of course, because you were asking for it.

First of all I changed the license from GPL3 to LGPL3. I hope this will increase the use of the tool, and expect it to result in more feedback and patches/improvements.

The two big features were already there from day one:

  1. Harvest the Alfresco repository and store the metadata in a separate reporting database, respecting the ad-hoc nature of aspects and therefore dynamically maintaining the reporting tables/columns.
  2. Execute (Pentaho) reports against the reporting database, and store them back into the Alfresco repository. (View them on your tablet)

The tool initially started as a kind of JavaScript API to facilitate reporting. The JavaScript API nature was an obstacle. It made configuration complex (though highly flexible). The new version (0.8) will be fully UI driven. A set of Alfresco Folder and Document Types are created and allow configuration of your reporting environment. You are able to configure the harvesting, as well as report execution. I spent some time to get the Explorer UI decently working. The properties will show in Share too, actions will not. This saved me quite some time to not update this for Share for now. I will do some work on it soon, I can see there is a need to get stuff into the Share admin panels…

The Harvesting is made more configurable. Now you can enable or disable sections of harvestable data. You can (still) define queries (e.g. Lucene, cmis) to fill your tables and columns with the results of these queries. The columns will be generated if the new metadata is available in the resultset. This tool will add some additional details as well. You are also able to gather user and group information, as well as Site specific users and groups. Categories can be enabled to be harvested, and he Auditing system is a source of reportable data. The latter is interesting, think of the full list of successful and failed login attempts. Per month, or failed attempts per abused (?) username… Or actually any other Auditing framework application you have defined.

The reporting is now more friendly too. There are ‘Reporting Containers’ that are executed every hour/day/week/month. Just pop your Pentaho report in such a container, and there you go. Reports can be collected in a central Alfresco Space. (Or in some spaces, depending on the report). But think about the opportunities if you can create one report definition and execute against an individual site, and store the result somewhere (safe) within that individual site… Store reports having the user as a central concept in their UserHome. The project manager having direct access to performance metrics, support knowing what Sites have a SiteManager that is not an internal colleague. You are able to dynamically parameterize your reports from the UI to achieve just that.

The Pentaho Reporting is currently supported in JNDI mode only. This is what you need if you develop your reports locally, test them on a test server, and use them business wise on your production environment. You do not want to change the database credentials all the time. The JasperSoft reporting (iReport) support is dropped. I guess it still works, and ‘guess’ is about the right word. There is no way to easily support nested subreports. And this is a feature in Pentaho I use a lot.

Finally, under the hood, there was a big shake-up. As said before, this tool started as a JavaScript API. I am (still in progress of) migrating  all JavaScript into Java and Alfresco Actions. Report Execution is there. Harvesting is half way there. There are mechanisms to map Alfresco property types against SQL column types, and ways to configure exceptions. At one point in time, in real life, you will run into the limits of a database row. Then you will love the fact these exceptions are foreseen. Tables are created when needed on the fly in this version.  When harvesting the (say Lucene) queries, usually -the- big chunk for harvesting reporting data, now the timestamp of each table is recorded, instead the timestamp of the harvesting process itself (as it was in the past). This allows for some (important) queries to be harvested more often than others, and still having the advantage of harvesting the new/changed content for that specific query only.

Oh, there is one feature requested a lot. It is in development, and did not make it into this release. I feel I have to release something by now. Otherwise the tool will never be released, because there are already quite some enhancements on my list. The tool still is MySQL only. Yes, you requested PostgreSQL too, I know. The good news is: I am working on it.

Have some patience, I plan to have something downloadable and installable (AMP) somewhere March.

2013-04-24: Update project logo to comply with Alfresco’s trademark guidelines and policies

1 Response to “Alfresco Business Reporting – Alive and Kicking”



  1. 1 Reporting against a collaboration environment – meaningful metrics | Open Source ECM Trackback on February 23, 2013 at 23:23
Comments are currently closed.