8.2 makes many things nice&simple.
To get a full budget report we need to do the following:
1) Publish the whole application
2) Run the report on published data
Publishing a typical application of 100+ elist takes around 20 minutes, so no real-time here.
But 8.2 introduces trickle publish, allowing to incrementally publish only changed data. This greatly shortens time spent on publishing.
The question now is how to find out that it’s time to run incremental publish.
By pointing Event Manager on nodestate table we can detect any event (save, submit) happening in application. And using Event Manager ability to detect change in specific column (changetimeid for example) we can fire an event each time somebody saves data. This event triggers incremental publish and there you go.
1) Somebody saves data in contrbutor
2) Event Manager raises an event, since nodestate table changed
3) Event triggers a Contributor Macro running incremental publish
4) Refreshing a report brings out new data
Since only 1 elist is published at a time, speed is astonishing (around 15s in our case).
Maximum lag between entering data and seeing it in report depends on Event Manager request period (minimum 1 min), so in 2 minutes max people see entered data in reports.
PS. Event manager requires some condition to start an event and doesn’t accept simple “true”, “forall” or something, so we write “1=1″ conditions )
PSPS. Disallow cache for appropriate reports to avoid reading old data. Set datasource processing to database only and turn off report cache in query attributes.
Pingback: ykud » Blog Archive » More on real-time reporting on Contributor
Pingback: ykud » Blog Archive » Event manager usage
Pingback: ykud » Blog Archive » Incremental Publish in EP