use of org.kie.api.event.process.DefaultProcessEventListener in project jbpm by kiegroup.
the class SLAComplianceTest method testSLAonProcessViolated.
@Test
public void testSLAonProcessViolated() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
final ProcessEventListener listener = new DefaultProcessEventListener() {
@Override
public void afterSLAViolated(SLAViolatedEvent event) {
latch.countDown();
}
};
KieBase kbase = createKnowledgeBase("BPMN2-UserTaskWithSLA.bpmn2");
KieSession ksession = createKnowledgeSession(kbase);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
ksession.addEventListener(listener);
ProcessInstance processInstance = ksession.startProcess("UserTask");
assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
WorkItem workItem = workItemHandler.getWorkItem();
assertNotNull(workItem);
assertEquals("john", workItem.getParameter("ActorId"));
boolean slaViolated = latch.await(10, TimeUnit.SECONDS);
assertTrue("SLA was not violated while it is expected", slaViolated);
processInstance = ksession.getProcessInstance(processInstance.getId());
assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
int slaCompliance = getSLAComplianceForProcessInstance(processInstance);
assertEquals(ProcessInstance.SLA_VIOLATED, slaCompliance);
ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
assertProcessInstanceFinished(processInstance, ksession);
slaCompliance = getSLAComplianceForProcessInstance(processInstance);
assertEquals(ProcessInstance.SLA_VIOLATED, slaCompliance);
ksession.dispose();
}
use of org.kie.api.event.process.DefaultProcessEventListener in project jbpm by kiegroup.
the class SLAComplianceTest method testSLAonProcessViolatedExternalTracking.
@Test
public void testSLAonProcessViolatedExternalTracking() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
final ProcessEventListener listener = new DefaultProcessEventListener() {
@Override
public void afterSLAViolated(SLAViolatedEvent event) {
latch.countDown();
}
};
KieBase kbase = createKnowledgeBase("BPMN2-UserTaskWithSLA.bpmn2");
KieSession ksession = createKnowledgeSession(kbase);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
ksession.addEventListener(listener);
ksession.getEnvironment().set("SLATimerMode", "false");
ProcessInstance processInstance = ksession.startProcess("UserTask");
assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
WorkItem workItem = workItemHandler.getWorkItem();
assertNotNull(workItem);
assertEquals("john", workItem.getParameter("ActorId"));
boolean slaViolated = latch.await(5, TimeUnit.SECONDS);
assertFalse("SLA should not violated by timer", slaViolated);
// simulate external tracking of sla
ksession.signalEvent("slaViolation", null, processInstance.getId());
slaViolated = latch.await(10, TimeUnit.SECONDS);
assertTrue("SLA was not violated while it is expected", slaViolated);
processInstance = ksession.getProcessInstance(processInstance.getId());
assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
int slaCompliance = getSLAComplianceForProcessInstance(processInstance);
assertEquals(ProcessInstance.SLA_VIOLATED, slaCompliance);
ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
assertProcessInstanceFinished(processInstance, ksession);
slaCompliance = getSLAComplianceForProcessInstance(processInstance);
assertEquals(ProcessInstance.SLA_VIOLATED, slaCompliance);
ksession.dispose();
}
use of org.kie.api.event.process.DefaultProcessEventListener in project jbpm by kiegroup.
the class StandaloneBPMNProcessTest method testTimerStart.
@Test(timeout = 10000)
public void testTimerStart() throws Exception {
NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("StartProcess", 5);
KieBase kbase = createKnowledgeBase("BPMN2-TimerStart.bpmn2");
KieSession ksession = createKnowledgeSession(kbase);
ksession.addEventListener(countDownListener);
final List<Long> list = new ArrayList<Long>();
ksession.addEventListener(new DefaultProcessEventListener() {
public void beforeProcessStarted(ProcessStartedEvent event) {
list.add(event.getProcessInstance().getId());
}
});
assertThat(list.size()).isEqualTo(0);
countDownListener.waitTillCompleted();
assertThat(list.size()).isEqualTo(5);
}
use of org.kie.api.event.process.DefaultProcessEventListener in project jbpm by kiegroup.
the class FlowTest method testInclusiveParallelExclusiveSplitNoLoop.
@Test
public void testInclusiveParallelExclusiveSplitNoLoop() throws Exception {
KieBase kbase = createKnowledgeBase("BPMN2-InclusiveNestedInParallelNestedInExclusive.bpmn2");
ksession = createKnowledgeSession(kbase);
ksession.getWorkItemManager().registerWorkItemHandler("testWI", new SystemOutWorkItemHandler());
ksession.getWorkItemManager().registerWorkItemHandler("testWI2", new SystemOutWorkItemHandler() {
@Override
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
Integer x = (Integer) workItem.getParameter("input1");
x++;
Map<String, Object> results = new HashMap<String, Object>();
results.put("output1", x);
manager.completeWorkItem(workItem.getId(), results);
}
});
final Map<String, Integer> nodeInstanceExecutionCounter = new HashMap<String, Integer>();
ksession.addEventListener(new DefaultProcessEventListener() {
@Override
public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
logger.info(event.getNodeInstance().getNodeName());
Integer value = nodeInstanceExecutionCounter.get(event.getNodeInstance().getNodeName());
if (value == null) {
value = new Integer(0);
}
value++;
nodeInstanceExecutionCounter.put(event.getNodeInstance().getNodeName(), value);
}
});
Map<String, Object> params = new HashMap<String, Object>();
params.put("x", 0);
ProcessInstance processInstance = ksession.startProcess("Process_1", params);
assertProcessInstanceCompleted(processInstance);
assertEquals(12, nodeInstanceExecutionCounter.size());
assertEquals(1, (int) nodeInstanceExecutionCounter.get("Start"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("XORGateway-converging"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("ANDGateway-diverging"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("ORGateway-diverging"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("testWI3"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("testWI2"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("ORGateway-converging"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("Script"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("XORGateway-diverging"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("ANDGateway-converging"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("testWI6"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("End"));
}
use of org.kie.api.event.process.DefaultProcessEventListener in project jbpm by kiegroup.
the class FlowTest method testInclusiveParallelExclusiveSplitLoopAsync.
@Test
public void testInclusiveParallelExclusiveSplitLoopAsync() throws Exception {
KieBase kbase = createKnowledgeBase("BPMN2-InclusiveNestedInParallelNestedInExclusive.bpmn2");
ksession = createKnowledgeSession(kbase);
TestWorkItemHandler handler = new TestWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("testWI", handler);
ksession.getWorkItemManager().registerWorkItemHandler("testWI2", new SystemOutWorkItemHandler() {
@Override
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
Integer x = (Integer) workItem.getParameter("input1");
x++;
Map<String, Object> results = new HashMap<String, Object>();
results.put("output1", x);
manager.completeWorkItem(workItem.getId(), results);
}
});
final Map<String, Integer> nodeInstanceExecutionCounter = new HashMap<String, Integer>();
ksession.addEventListener(new DefaultProcessEventListener() {
@Override
public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
Integer value = nodeInstanceExecutionCounter.get(event.getNodeInstance().getNodeName());
if (value == null) {
value = new Integer(0);
}
value++;
nodeInstanceExecutionCounter.put(event.getNodeInstance().getNodeName(), value);
}
});
Map<String, Object> params = new HashMap<String, Object>();
params.put("x", -1);
ProcessInstance processInstance = ksession.startProcess("Process_1", params);
assertProcessInstanceActive(processInstance);
List<WorkItem> workItems = handler.getWorkItems();
assertNotNull(workItems);
assertEquals(2, workItems.size());
// complete work items within OR gateway
for (WorkItem workItem : workItems) {
ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
}
assertProcessInstanceActive(processInstance);
workItems = handler.getWorkItems();
assertNotNull(workItems);
assertEquals(2, workItems.size());
// complete work items within OR gateway
for (WorkItem workItem : workItems) {
ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
}
assertProcessInstanceActive(processInstance);
workItems = handler.getWorkItems();
assertNotNull(workItems);
assertEquals(1, workItems.size());
// complete last workitem after AND gateway
for (WorkItem workItem : workItems) {
ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
}
assertProcessInstanceCompleted(processInstance);
assertEquals(12, nodeInstanceExecutionCounter.size());
assertEquals(1, (int) nodeInstanceExecutionCounter.get("Start"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("XORGateway-converging"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("ANDGateway-diverging"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("ORGateway-diverging"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("testWI3"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("testWI2"));
assertEquals(4, (int) nodeInstanceExecutionCounter.get("ORGateway-converging"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("Script"));
assertEquals(2, (int) nodeInstanceExecutionCounter.get("XORGateway-diverging"));
assertEquals(4, (int) nodeInstanceExecutionCounter.get("ANDGateway-converging"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("testWI6"));
assertEquals(1, (int) nodeInstanceExecutionCounter.get("End"));
}
Aggregations