package org.jbpm.test.listener; import org.kie.api.event.process.ProcessCompletedEvent; import org.kie.api.event.process.ProcessEvent; import org.kie.api.event.process.ProcessEventListener; import org.kie.api.event.process.ProcessNodeEvent; import org.kie.api.event.process.ProcessNodeLeftEvent; import org.kie.api.event.process.ProcessNodeTriggeredEvent; import org.kie.api.event.process.ProcessStartedEvent; import org.kie.api.event.process.ProcessVariableChangedEvent; import org.kie.api.runtime.process.NodeInstance; import org.kie.api.runtime.process.ProcessInstance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Simple listener for watching process flow */ public class DebugProcessEventListener implements ProcessEventListener { private static final Logger LOGGER = LoggerFactory.getLogger(DebugProcessEventListener.class); @Override public void afterNodeLeft(ProcessNodeLeftEvent event) { LOGGER.debug(formatNodeMessage("afterNodeLeft", event)); } @Override public void afterNodeTriggered(ProcessNodeTriggeredEvent event) { LOGGER.debug(formatNodeMessage("afterNodeTriggered", event)); } @Override public void afterProcessCompleted(ProcessCompletedEvent event) { LOGGER.debug(formatProcessMessage("afterProcessCompleted", event)); } @Override public void afterProcessStarted(ProcessStartedEvent event) { LOGGER.debug(formatProcessMessage("afterProcessStarted", event)); } @Override public void afterVariableChanged(ProcessVariableChangedEvent event) { LOGGER.debug(formatVariableChangedMessage("afterVariableChanged", event)); } @Override public void beforeNodeLeft(ProcessNodeLeftEvent event) { LOGGER.debug(formatNodeMessage("beforeNodeLeft", event)); } @Override public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) { LOGGER.debug(formatNodeMessage("beforeNodeTriggered", event)); } @Override public void beforeProcessCompleted(ProcessCompletedEvent event) { LOGGER.debug(formatProcessMessage("beforeProcessCompleted", event)); } @Override public void beforeProcessStarted(ProcessStartedEvent event) { LOGGER.debug(formatProcessMessage("beforeProcessStarted", event)); } @Override public void beforeVariableChanged(ProcessVariableChangedEvent event) { LOGGER.debug(formatVariableChangedMessage("beforeVariableChanged", event)); } private String formatNodeMessage(String when, ProcessNodeEvent event) { NodeInstance ni = event.getNodeInstance(); return String.format("<%s> name:%s, id:%s", when, ni.getNodeName(), ni.getNodeId()); } private String formatProcessMessage(String when, ProcessEvent event) { ProcessInstance pi = event.getProcessInstance(); return String.format("<%s> name:%s, id:%s, state:%s", when, pi.getProcessName(), pi.getProcessId(), pi.getState()); } private String formatVariableChangedMessage(String when, ProcessVariableChangedEvent event) { return String.format("<%s> id:%s, old:%s, new:%s", when, event.getVariableId(), event.getOldValue(), event.getNewValue()); } }