提交 7db22f27 编写于 作者: J Joram Barrez

Fixing up CDI multi instance test: making sequential MI is called consistently...

Fixing up CDI multi instance test: making sequential MI is called consistently like parallel MI (ie. instances + 1)
上级 ace51da0
......@@ -144,17 +144,17 @@ public class CdiEventSupportBpmnParseHandler implements BpmnParseHandler {
UserTaskActivityBehavior behavior = getUserTaskActivityBehavior(userTask);
behavior.getTaskDefinition().addTaskListener(TaskListener.EVENTNAME_DELETE, new CdiTaskListener(userTask.getId(), BusinessProcessEventType.DELETE_TASK));
}
protected void addStartEventListener(FlowElement flowElement) {
CdiExecutionListener listener = new CdiExecutionListener(flowElement.getId(), BusinessProcessEventType.START_ACTIVITY);
createActivitiListener(flowElement, ExecutionListener.EVENTNAME_START, listener);
}
protected void addEndEventListener(FlowElement flowElement) {
CdiExecutionListener listener = new CdiExecutionListener(flowElement.getId(), BusinessProcessEventType.END_ACTIVITY);
createActivitiListener(flowElement, ExecutionListener.EVENTNAME_END, listener);
}
protected void addStartEventListener(FlowElement flowElement) {
CdiExecutionListener listener = new CdiExecutionListener(flowElement.getId(), BusinessProcessEventType.START_ACTIVITY);
createActivitiListener(flowElement, ExecutionListener.EVENTNAME_END, listener);
}
private UserTaskActivityBehavior getUserTaskActivityBehavior(UserTask userTask) {
Object behavior = userTask.getBehavior();
if (behavior instanceof UserTaskActivityBehavior) {
......
......@@ -57,7 +57,8 @@ public class EventNotificationTest extends CdiActivitiTestCase {
TestEventListener listenerBean = getBeanInstance(TestEventListener.class);
listenerBean.reset();
assertEquals(0, listenerBean.getEndActivityService1());
assertEquals(0, listenerBean.getEndActivityService1WithLoopCounter());
assertEquals(0, listenerBean.getEndActivityService1WithoutLoopCounter());
assertEquals(0, listenerBean.getStartActivityService1WithoutLoopCounter());
assertEquals(0, listenerBean.getTakeTransitiont1());
......@@ -65,7 +66,7 @@ public class EventNotificationTest extends CdiActivitiTestCase {
runtimeService.startProcessInstanceByKey("process1");
// assert
assertEquals(1, listenerBean.getEndActivityService1());
assertEquals(1, listenerBean.getEndActivityService1WithoutLoopCounter());
assertEquals(1, listenerBean.getStartActivityService1WithoutLoopCounter());
assertEquals(1, listenerBean.getTakeTransitiont1());
}
......
......@@ -16,9 +16,12 @@ public class MultiInstanceServiceTaskEventTest extends CdiActivitiTestCase {
listenerBean.reset();
assertEquals(0, listenerBean.getStartActivityService1WithLoopCounter());
assertEquals(0, listenerBean.getEndActivityService1());
assertEquals(0, listenerBean.getEndActivityService1WithLoopCounter());
assertEquals(0, listenerBean.getEndActivityService1WithoutLoopCounter());
assertEquals(0, listenerBean.getStartActivityService2WithLoopCounter());
assertEquals(0, listenerBean.getEndActivityService2());
assertEquals(0, listenerBean.getEndActivityService2WithLoopCounter());
assertEquals(0, listenerBean.getEndActivityService2WithoutLoopCounter());
// start the process
runtimeService.startProcessInstanceByKey("process1");
......@@ -27,11 +30,14 @@ public class MultiInstanceServiceTaskEventTest extends CdiActivitiTestCase {
assertEquals(1, listenerBean.getTakeTransitiont1());
assertEquals(1, listenerBean.getTakeTransitiont2());
assertEquals(1, listenerBean.getTakeTransitiont3());
assertEquals(2, listenerBean.getStartActivityService1WithLoopCounter());
assertEquals(3, listenerBean.getStartActivityService2WithLoopCounter());
assertEquals(2, listenerBean.getEndActivityService1());
// Uncomment the following line once ACT-1271 is also solved for
// parallel multi-instance tasks
// assertEquals(3, listenerBean.getEndActivityService2());
assertEquals(2, listenerBean.getEndActivityService1WithLoopCounter());
assertEquals(1, listenerBean.getEndActivityService1WithoutLoopCounter());
assertEquals(3, listenerBean.getEndActivityService2WithLoopCounter());
assertEquals(1, listenerBean.getEndActivityService2WithoutLoopCounter());
}
}
......@@ -34,13 +34,15 @@ public class TestEventListener {
public void reset() {
startActivityService1WithLoopCounter = 0;
startActivityService1WithoutLoopCounter = 0;
endActivityService1 = 0;
endActivityService1WithLoopCounter = 0;
endActivityService1WithoutLoopCounter = 0;
takeTransitiont1 = 0;
takeTransitiont2 = 0;
takeTransitiont3 = 0;
startActivityService2WithLoopCounter = 0;
startActivityService2WithoutLoopCounter = 0;
endActivityService2 = 0;
endActivityService2WithLoopCounter = 0;
endActivityService2WithoutLoopCounter = 0;
createTask1 = 0;
createTask2 = 0;
assignTask1 = 0;
......@@ -81,10 +83,12 @@ public class TestEventListener {
private int startActivityService1WithLoopCounter = 0;
private int startActivityService1WithoutLoopCounter = 0;
private int endActivityService1 = 0;
private int endActivityService1WithLoopCounter = 0;
private int endActivityService1WithoutLoopCounter = 0;
private int startActivityService2WithLoopCounter = 0;
private int startActivityService2WithoutLoopCounter = 0;
private int endActivityService2 = 0;
private int endActivityService2WithLoopCounter = 0;
private int endActivityService2WithoutLoopCounter = 0;
private int takeTransitiont1 = 0;
private int takeTransitiont2 = 0;
private int takeTransitiont3 = 0;
......@@ -106,7 +110,12 @@ public class TestEventListener {
}
public void onEndActivityService1(@Observes @EndActivity("service1") BusinessProcessEvent businessProcessEvent) {
endActivityService1 += 1;
Integer loopCounter = (Integer) businessProcessEvent.getVariableScope().getVariable("loopCounter");
if (loopCounter != null) {
endActivityService1WithLoopCounter += 1;
} else {
endActivityService1WithoutLoopCounter += 1;
}
}
public void onStartActivityService2(@Observes @StartActivity("service2") BusinessProcessEvent businessProcessEvent) {
......@@ -119,7 +128,12 @@ public class TestEventListener {
}
public void onEndActivityService2(@Observes @EndActivity("service2") BusinessProcessEvent businessProcessEvent) {
endActivityService2 += 1;
Integer loopCounter = (Integer) businessProcessEvent.getVariableScope().getVariable("loopCounter");
if (loopCounter != null) {
endActivityService2WithLoopCounter += 1;
} else {
endActivityService2WithoutLoopCounter += 1;
}
}
public void takeTransitiont1(@Observes @TakeTransition("t1") BusinessProcessEvent businessProcessEvent) {
......@@ -162,10 +176,6 @@ public class TestEventListener {
deleteTask3 += 1;
}
public int getEndActivityService1() {
return endActivityService1;
}
public int getTakeTransitiont1() {
return takeTransitiont1;
}
......@@ -194,10 +204,6 @@ public class TestEventListener {
return createTask2;
}
public int getEndActivityService2() {
return endActivityService2;
}
public int getTakeTransitiont2() {
return takeTransitiont2;
}
......@@ -225,5 +231,21 @@ public class TestEventListener {
public int getStartActivityService2WithoutLoopCounter() {
return startActivityService2WithoutLoopCounter;
}
public int getEndActivityService1WithLoopCounter() {
return endActivityService1WithLoopCounter;
}
public int getEndActivityService1WithoutLoopCounter() {
return endActivityService1WithoutLoopCounter;
}
public int getEndActivityService2WithLoopCounter() {
return endActivityService2WithLoopCounter;
}
public int getEndActivityService2WithoutLoopCounter() {
return endActivityService2WithoutLoopCounter;
}
}
......@@ -317,6 +317,13 @@ public abstract class MultiInstanceActivityBehavior extends FlowNodeActivityBeha
executionListener = listenerFactory.createExpressionExecutionListener(activitiListener);
} else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equalsIgnoreCase(activitiListener.getImplementationType())) {
executionListener = listenerFactory.createDelegateExpressionExecutionListener(activitiListener);
} else if (ImplementationType.IMPLEMENTATION_TYPE_INSTANCE.equalsIgnoreCase(activitiListener.getImplementationType())) {
Object executionListenerInstance = activitiListener.getInstance();
if (executionListenerInstance instanceof ExecutionListener) {
executionListener = (ExecutionListener) executionListenerInstance;
} else {
LOGGER.warn("Execution listener instance " + executionListenerInstance + " is not of type " + ExecutionListener.class);
}
}
if (executionListener != null) {
......@@ -354,6 +361,13 @@ public abstract class MultiInstanceActivityBehavior extends FlowNodeActivityBeha
executionListener = listenerFactory.createExpressionExecutionListener(activitiListener);
} else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equalsIgnoreCase(activitiListener.getImplementationType())) {
executionListener = listenerFactory.createDelegateExpressionExecutionListener(activitiListener);
} else if (ImplementationType.IMPLEMENTATION_TYPE_INSTANCE.equalsIgnoreCase(activitiListener.getImplementationType())) {
Object executionListenerInstance = activitiListener.getInstance();
if (executionListenerInstance instanceof ExecutionListener) {
executionListener = (ExecutionListener) executionListenerInstance;
} else {
LOGGER.warn("Execution listener instance " + executionListenerInstance + " is not of type " + ExecutionListener.class);
}
}
if (executionListener != null) {
......
......@@ -73,9 +73,7 @@ public class SequentialMultiInstanceBehavior extends MultiInstanceActivityBehavi
setLoopVariable(execution, NUMBER_OF_COMPLETED_INSTANCES, nrOfCompletedInstances);
logLoopDetails(execution, "instance completed", loopCounter, nrOfCompletedInstances, nrOfActiveInstances, nrOfInstances);
if (loopCounter != nrOfInstances && !completionConditionSatisfied(execution)) {
callActivityEndListeners(execution);
}
callActivityEndListeners(execution);
//executeCompensationBoundaryEvents(execution.getCurrentFlowElement(), execution);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册