What is Bizstore - Reporting and transient information management
Savvion Developers have been struggeling with Database issues especially with respect to the huge list of tables which make savvion work. To understand how the tables are laid out and maintained, its essential to understand the BizStore Engine. A number of companies are actually struggling with BizStore exception leaving their reporting system paralyzed. Lets have a sneak peek into savvion Database. Please note this is a generic understanding (totally based on my experience) and actual details could vary from savvion version to version.
When the designers of Savvion were thinking about how to optimize the user experience, they decided to have two kinds of tables – Transient and Reporting. At any given point of time you would have more historic details than current details and its absolutely makes sense to separate them out. For All “alive” instances, information is available in Transient tables whereas for all instances (open and closed) information is available in reporting tables. In other words, if a process instance ends, you can find its details only in the reporting tables.
So how do you know which are reporting tables and which are transient. Well Normally, if you see a table starting with BIZLOGIC_ and a table with same name without the BIZLOGIC_ prefix, then the table without the prefix is the reporting table and the one with prefix is the transient tables. For example BIZLOGIC_PROCESSINSTANCE and PROCESSINSTANCE happen to be Transient and Reporting tables respectively. If you want to checkout, create a new instance check both tables then complete it and check again.
Interesting? Well there is more. Now how do these two sets of tables remain in sync? Here comes Bizstore. BizStore is a separate process whose role is to update the reporting tables based on instance data. The Bizlogic workflow engine just interacts with the transient tables (and deletes data once the process completes – again this is my understanding ... implementation could be different). So how does the BizStore engine know when to update the reporting engine? Thats done with Events. Going through my Article on EVENTS could be helpful at this stage.
Whenever an event is trigger it goes and sites in BIZEVENT table. BizStore engine reads all the newly generated events and populates the Reporting tables. It uses the counter table to keep track of the last processed event
Normally, i would discourage reading/updating the database tables directory. Often developers do the mistake of reading the tables (especially the wrong ones) and end up showing the wrong set of information. Savvion comes with Elegant services like QueryService and BizManage API’s which would take care of referencing the right set of datastructures.