Repository Event Log - BloomReach Experience - Open Source CMS

Repository Event Log

Hippo Repository logs all workflow invocations as JCR nodes. Such nodes contain information about which user performed what workflow operation when and on what document. This log is used for instance to display the activity stream on the CMS dashboard. Advanced reporting and statistics features based on this log could be implemented by custom plugins. Because the log is in the form of JCR content, plugins can easily perform sophisticated queries on the data. Applications can also monitor the logs to trigger custom logic as a result of certain workflow events through the Event Bus service.

The log is not in the first place intended for visual monitoring by an administrator or by developers. In fact, because of the random tree structure of the logged JCR nodes, simply browsing the logs using the console is not feasible. If you want to have a look at these nodes it is a better option to query the repository with the repository servlet. Open http://localhost:8080/cms/repository and use the following SQL query:

SELECT * from hippolog:item ORDER BY hippolog

To perform maintenance on this log use the event log cleanup module.

Basic properties

When workflows are configured in the repository they are grouped together into categories. Client code requests a workflow by specifying a category and a node on which the workflow must operate. Depending on the type of the node and whether the current user is configured to be permitted to execute the workflow, a workflow is matched in the given category. Each configured workflow within a category also has a name. The category of the workflow, the name of the workflow, the location of the subject node, as well as the method called on the workflow are all logged.

Contextual properties

Aside from these basic properties the log item node also contains the name of the user that executed the workflow, and the Unix time of the event.

Workflow interactions

Workflow invocations are the low level events that comprise higher level logical workflow actions such as copying a document. A copy invocation invokes several sub workflows to do its work. For instance a depublish action is done on the copied document after it has been copied from a published document. To distinguish depublish events that are part of a copy action from depublish events that were invoked in a different context an additional property is logged that enables the events to be grouped into higher level units. This is the hipposys:interaction property. The value of this property is a combination of the category, name, and method of the root invocation of the invocation hierarchy. For instance a depublish event that is part of a copy action will have a hipposys:interaction property with value default:handle:copy.

Additionally the instance of the interaction can be identified with the property hipposys:interactionId. All events that were part of a single interaction instance will have the same interaction id.

Advanced properties

Finally the jcr identifier of the handle node is logged as well as a string representation of the invocation return value.