.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
@Test public void testIntermediateCatchEventMessageCorrelation() { //given BpmnModelInstance model = Bpmn.createExecutableProcess("Process_1") .startEvent() .subProcess("SubProcess_1").embeddedSubProcess() .startEvent() .intermediateCatchEvent("MessageReceiver_1").message(TEST_MESSAGE_NAME) .camundaInputParameter("localVar", "${loopVar}") .userTask("UserTask_1") .endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done(); testHelper.deploy(model); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("vars", Arrays.asList(1, 2, 3)); ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceByKey("Process_1", variables); //when correlated by local variables String messageName = TEST_MESSAGE_NAME; int correlationKey = 1; MessageCorrelationResult messageCorrelationResult = engineRule.getRuntimeService().createMessageCorrelation(messageName) .localVariableEquals("localVar", correlationKey).setVariables(Variables.createVariables().putValue("newVar", "newValue")).correlateWithResult(); //then one message is correlated, two others continue waiting checkExecutionMessageCorrelationResult(messageCorrelationResult, processInstance, "MessageReceiver_1"); //uncorrelated executions List<Execution> uncorrelatedExecutions = engineRule.getRuntimeService().createExecutionQuery().activityId("MessageReceiver_1").list(); assertEquals(2, uncorrelatedExecutions.size()); }
.endEvent() .subProcessDone() .multiInstance() .cardinality("3") .multiInstanceDone()
/** * CAM-8005 - StackOverflowError must not happen. */ @Test public void testDeleteProcessInstancesManyParallelSubprocesses() { final BpmnModelInstance multiInstanceWithSubprocess = Bpmn.createExecutableProcess("multiInstanceWithSubprocess") .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .userTask("userTask") .endEvent() .subProcessDone() .multiInstance().cardinality("300").multiInstanceDone() .endEvent() .done(); testRule.deploy(multiInstanceWithSubprocess); final ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("multiInstanceWithSubprocess"); runtimeService.deleteProcessInstance(processInstance.getId(), "some reason"); assertEquals(0, runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getId()).count()); }
.endEvent() .subProcessDone() .multiInstance() .cardinality("3") .multiInstanceDone()
.endEvent() .subProcessDone() .multiInstance() .cardinality("3") .multiInstanceDone()
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
.endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done();
@Test public void testIntermediateCatchEventMessageCorrelation() { //given BpmnModelInstance model = Bpmn.createExecutableProcess("Process_1") .startEvent() .subProcess("SubProcess_1").embeddedSubProcess() .startEvent() .intermediateCatchEvent("MessageReceiver_1").message(TEST_MESSAGE_NAME) .camundaInputParameter("localVar", "${loopVar}") .userTask("UserTask_1") .endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone() .endEvent().done(); testHelper.deploy(model); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("vars", Arrays.asList(1, 2, 3)); ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceByKey("Process_1", variables); //when correlated by local variables String messageName = TEST_MESSAGE_NAME; int correlationKey = 1; MessageCorrelationResult messageCorrelationResult = engineRule.getRuntimeService().createMessageCorrelation(messageName) .localVariableEquals("localVar", correlationKey).setVariables(Variables.createVariables().putValue("newVar", "newValue")).correlateWithResult(); //then one message is correlated, two others continue waiting checkExecutionMessageCorrelationResult(messageCorrelationResult, processInstance, "MessageReceiver_1"); //uncorrelated executions List<Execution> uncorrelatedExecutions = engineRule.getRuntimeService().createExecutionQuery().activityId("MessageReceiver_1").list(); assertEquals(2, uncorrelatedExecutions.size()); }
/** * CAM-8005 - StackOverflowError must not happen. */ @Test public void testDeleteProcessInstancesManyParallelSubprocesses() { final BpmnModelInstance multiInstanceWithSubprocess = Bpmn.createExecutableProcess("multiInstanceWithSubprocess") .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .userTask("userTask") .endEvent() .subProcessDone() .multiInstance().cardinality("300").multiInstanceDone() .endEvent() .done(); testRule.deploy(multiInstanceWithSubprocess); final ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("multiInstanceWithSubprocess"); runtimeService.deleteProcessInstance(processInstance.getId(), "some reason"); assertEquals(0, runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getId()).count()); }
.endEvent() .subProcessDone() .multiInstance() .cardinality("3") .multiInstanceDone()
.endEvent() .subProcessDone() .multiInstance() .cardinality("3") .multiInstanceDone()
.endEvent() .subProcessDone() .multiInstance() .cardinality("3") .multiInstanceDone()