use of org.kie.api.event.process.ProcessVariableChangedEvent in project jbpm by kiegroup.
the class PersistentStatefulSessionTest method testProcessListener.
@Test
public void testProcessListener() {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(new ClassPathResource("WorkItemsProcess.rf"), ResourceType.DRF);
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(kbuilder.getKnowledgePackages());
StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);
final List<ProcessEvent> events = new ArrayList<ProcessEvent>();
ProcessEventListener listener = new ProcessEventListener() {
public void afterNodeLeft(ProcessNodeLeftEvent event) {
logger.debug("After node left: {}", event.getNodeInstance().getNodeName());
events.add(event);
}
public void afterNodeTriggered(ProcessNodeTriggeredEvent event) {
logger.debug("After node triggered: {}", event.getNodeInstance().getNodeName());
events.add(event);
}
public void afterProcessCompleted(ProcessCompletedEvent event) {
logger.debug("After process completed");
events.add(event);
}
public void afterProcessStarted(ProcessStartedEvent event) {
logger.debug("After process started");
events.add(event);
}
public void beforeNodeLeft(ProcessNodeLeftEvent event) {
logger.debug("Before node left: {}", event.getNodeInstance().getNodeName());
events.add(event);
}
public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
logger.debug("Before node triggered: {}", event.getNodeInstance().getNodeName());
events.add(event);
}
public void beforeProcessCompleted(ProcessCompletedEvent event) {
logger.debug("Before process completed");
events.add(event);
}
public void beforeProcessStarted(ProcessStartedEvent event) {
logger.debug("Before process started");
events.add(event);
}
public void afterVariableChanged(ProcessVariableChangedEvent event) {
logger.debug("After Variable Changed");
events.add(event);
}
public void beforeVariableChanged(ProcessVariableChangedEvent event) {
logger.debug("Before Variable Changed");
events.add(event);
}
};
ksession.addEventListener(listener);
ProcessInstance processInstance = ksession.startProcess("org.drools.test.TestProcess");
logger.debug("Started process instance {}", processInstance.getId());
assertEquals(12, events.size());
assertTrue(events.get(0) instanceof ProcessStartedEvent);
assertTrue(events.get(1) instanceof ProcessNodeTriggeredEvent);
assertTrue(events.get(2) instanceof ProcessNodeLeftEvent);
assertTrue(events.get(3) instanceof ProcessNodeTriggeredEvent);
assertTrue(events.get(4) instanceof ProcessNodeLeftEvent);
assertTrue(events.get(5) instanceof ProcessNodeTriggeredEvent);
assertTrue(events.get(6) instanceof ProcessNodeTriggeredEvent);
assertTrue(events.get(7) instanceof ProcessNodeLeftEvent);
assertTrue(events.get(8) instanceof ProcessNodeTriggeredEvent);
assertTrue(events.get(9) instanceof ProcessNodeLeftEvent);
assertTrue(events.get(10) instanceof ProcessNodeTriggeredEvent);
assertTrue(events.get(11) instanceof ProcessStartedEvent);
ksession.removeEventListener(listener);
events.clear();
processInstance = ksession.startProcess("org.drools.test.TestProcess");
logger.debug("Started process instance {}", processInstance.getId());
assertTrue(events.isEmpty());
}
use of org.kie.api.event.process.ProcessVariableChangedEvent in project jbpm by kiegroup.
the class IterableListenerAssert method assertChangedVariable.
/**
* Asserts that the variable was changed
*
* @param it listener that listened to the process
* @param name name of the variable
* @param oldValue expected old value or null
* @param newValue expected new value or null
*/
public static void assertChangedVariable(IterableProcessEventListener it, String name, Object oldValue, Object newValue) {
TrackedEvent event = getEvent(it);
Assertions.assertThat(event.getMethod()).isEqualTo(BEFORE_VARIABLE);
ProcessVariableChangedEvent orig = event.getEvent();
Assertions.assertThat(orig.getVariableId()).isEqualTo(name);
assertChangedVariableValues(orig, oldValue, newValue);
event = it.next();
Assertions.assertThat(event.getMethod()).isEqualTo(AFTER_VARIABLE);
orig = event.getEvent();
Assertions.assertThat(orig.getVariableId()).isEqualTo(name);
assertChangedVariableValues(orig, oldValue, newValue);
}
use of org.kie.api.event.process.ProcessVariableChangedEvent in project jbpm by kiegroup.
the class IterableListenerAssert method assertChangedMultipleInstancesVariable.
/**
* Asserts that the variable was changed within multipleInstances
* subprocess. Variable has prefix identifying this MI subprocess.
*
* @param it listener that listened to the process
* @param name name of the variable
* @param oldValue expected old value or null
* @param newValue expected new value or null
*/
public static void assertChangedMultipleInstancesVariable(IterableProcessEventListener it, String name, Object oldValue, Object newValue) {
TrackedEvent event = getEvent(it);
Assertions.assertThat(event.getMethod()).isEqualTo(BEFORE_VARIABLE);
ProcessVariableChangedEvent orig = event.getEvent();
Assertions.assertThat(orig.getVariableId().endsWith(":" + name)).isTrue();
assertChangedVariableValues(orig, oldValue, newValue);
event = it.next();
Assertions.assertThat(event.getMethod()).isEqualTo(AFTER_VARIABLE);
orig = event.getEvent();
Assertions.assertThat(orig.getVariableId().endsWith(":" + name)).isTrue();
assertChangedVariableValues(orig, oldValue, newValue);
}
Aggregations