Both the Stateful and Stateless Knowledge Session provide methods for
registering and removing listeners. ProcessEventListener
objects
can be used to listen to process-related events, like starting or completing
a process, and entering and leaving a node. Below, the different methods of a
ProcessEventListener
are shown. An event object provides access
to related information, like the process instance and node instance linked to
the event.
public interface ProcessEventListener { void beforeProcessStarted( ProcessStartedEvent event ); void afterProcessStarted( ProcessStartedEvent event ); void beforeProcessCompleted( ProcessCompletedEvent event ); void afterProcessCompleted( ProcessCompletedEvent event ); void beforeNodeTriggered( ProcessNodeTriggeredEvent event ); void afterNodeTriggered( ProcessNodeTriggeredEvent event ); void beforeNodeLeft( ProcessNodeLeftEvent event ); void afterNodeLeft( ProcessNodeLeftEvent event ); }
An audit log can be created based on the information provided by these process listeners. We provide various default logger implementations:
The KnowledgeRuntimeLoggerFactory
let you add a logger to
your session, as shown below. When creating a console logger, the Knowledge Session
for which the logger needs to be created must be passed as an argument. The file
logger also requires the name of the log file to be created, and the threaded file
logger requires the interval (in milliseconds) after which the events should be saved.
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger( ksession, "test" ); // add invocations to the process engine here, // e.g. ksession.startProcess(processId); ... logger.close();
The log file can be opened in Eclipse, using the Audit View in the Drools Eclipse plugin, where the events are visualized as a tree. Events that occur between the before and after event are shown as children of that event. The following screenshot shows a simple example, where a process is started, resulting in the activation of the Start node, an Action node and an End node, after which the process was completed.