public static KieSession getStatefulKnowledgeSessionForJBPM(
KieContainer kieContainer, String sessionName) {
KieSession session = getStatefulKnowledgeSessionWithCallback(kieContainer,sessionName);
session.addEventListener(new ProcessEventListener() {
public void beforeVariableChanged(ProcessVariableChangedEvent arg0) {
// TODO Auto-generated method stub
public void beforeProcessStarted(ProcessStartedEvent arg0) {
System.out.println("Process Name "+arg0.getProcessInstance().getProcessName()+" has been started");
public void beforeProcessCompleted(ProcessCompletedEvent arg0) {
// TODO Auto-generated method stub
public void beforeNodeTriggered(ProcessNodeTriggeredEvent arg0) {
// TODO Auto-generated method stub
public void beforeNodeLeft(ProcessNodeLeftEvent arg0) {
if (arg0.getNodeInstance() instanceof RuleSetNodeInstance){
System.out.println("Node Name "+ arg0.getNodeInstance().getNodeName()+" has been left");
public void afterVariableChanged(ProcessVariableChangedEvent arg0) {
// TODO Auto-generated method stub
public void afterProcessStarted(ProcessStartedEvent arg0) {
public void afterProcessCompleted(ProcessCompletedEvent arg0) {
System.out.println("Process Name "+arg0.getProcessInstance().getProcessName()+" has stopped");
public void afterNodeTriggered(ProcessNodeTriggeredEvent arg0) {
if (arg0.getNodeInstance() instanceof RuleSetNodeInstance){
System.out.println("Node Name "+ arg0.getNodeInstance().getNodeName()+" has been entered");
public void afterNodeLeft(ProcessNodeLeftEvent arg0) {