@Test public void fetchOnlyRunningTasks() { // given BpmnModelInstance simpleDefinition = Bpmn.createExecutableProcess("process") .startEvent("startEvent") .userTask("userTask1") .userTask("userTask2") .userTask("userTask3") .endEvent() .done(); testHelper.deploy(simpleDefinition); engineRule.getRuntimeService().startProcessInstanceByKey("process"); completeAllUserTasks(); // when List<HistoricTaskInstance> runningHistoricTaskInstances = optimizeService.getRunningHistoricTaskInstances(pastDate(), null, 10); // then assertThat(runningHistoricTaskInstances.size(), is(1)); assertThat(runningHistoricTaskInstances.get(0).getTaskDefinitionKey(), is("userTask2")); }
@Test public void maxResultsParameterWorks() { // given BpmnModelInstance simpleDefinition = Bpmn.createExecutableProcess("process") .startEvent() .userTask() .userTask() .userTask() .userTask() .endEvent() .done(); testHelper.deploy(simpleDefinition); engineRule.getRuntimeService().startProcessInstanceByKey("process"); completeAllUserTasks(); completeAllUserTasks(); completeAllUserTasks(); completeAllUserTasks(); // when List<HistoricTaskInstance> completedHistoricTaskInstances = optimizeService.getCompletedHistoricTaskInstances(pastDate(), null, 3); // then assertThat(completedHistoricTaskInstances.size(), is(3)); }
@Test public void fetchOnlyCompletedTasks() { // given BpmnModelInstance simpleDefinition = Bpmn.createExecutableProcess("process") .startEvent("startEvent") .userTask("userTask1") .userTask("userTask2") .endEvent() .done(); testHelper.deploy(simpleDefinition); engineRule.getRuntimeService().startProcessInstanceByKey("process"); completeAllUserTasks(); // when List<HistoricTaskInstance> completedHistoricTaskInstances = optimizeService.getCompletedHistoricTaskInstances(pastDate(), null, 10); // then assertThat(completedHistoricTaskInstances.size(), is(1)); assertThat(completedHistoricTaskInstances.get(0).getTaskDefinitionKey(), is("userTask1")); }
private BpmnModelInstance createModelInstance() { BpmnModelInstance instance = Bpmn.createExecutableProcess("process") .startEvent("start") .userTask("userTask1") .sequenceFlowId("seq") .userTask("userTask2") .endEvent("end") .done(); return instance; }
private BpmnModelInstance createModelInstance() { BpmnModelInstance instance = Bpmn.createExecutableProcess("process") .startEvent("start") .userTask("userTask1") .sequenceFlowId("seq") .userTask("userTask2") .endEvent("end") .done(); return instance; }
@Test public void maxResultsParameterWorks() { // given BpmnModelInstance simpleDefinition = Bpmn.createExecutableProcess("process") .startEvent() .userTask() .userTask() .userTask() .endEvent() .done(); testHelper.deploy(simpleDefinition); engineRule.getRuntimeService().startProcessInstanceByKey("process"); claimAndCompleteAllUserTasks(); claimAndCompleteAllUserTasks(); claimAndCompleteAllUserTasks(); // when List<UserOperationLogEntry> userOperationsLog = optimizeService.getHistoricUserOperationLogs(pastDate(), null, 3); // then assertThat(userOperationsLog.size(), is(3)); }
@Before public void createBpmnModelInstance() { this.instance = Bpmn.createExecutableProcess("process1") .startEvent("start") .userTask("user1") .sequenceFlowId("seq") .userTask("user2") .endEvent("end") .done(); }
protected BpmnModelInstance createModelTaskListener(String listener) { return Bpmn.createExecutableProcess(PROCESS_KEY) .startEvent("startEvent") .userTask("userTask1").name("User task") .camundaTaskListenerClass(listener, SetBusinessKeyListener.class) .userTask("userTask2") .endEvent("endEvent") .done(); }
@Before public void createBpmnModelInstance() { this.instance = Bpmn.createExecutableProcess("process1") .startEvent("start") .userTask("user1") .sequenceFlowId("seq") .userTask("user2") .endEvent("end") .done(); }
@Before public void createBpmnModelInstance() { this.instance = Bpmn.createExecutableProcess("process1") .startEvent("start") .userTask("user1") .sequenceFlowId("seq") .userTask("user2") .endEvent("end") .done(); }
protected BpmnModelInstance createModelExecutionListener(String listener) { return Bpmn.createExecutableProcess(PROCESS_KEY) .startEvent("startEvent") .userTask("userTask1").name("User task") .camundaExecutionListenerExpression(listener, "${execution.setProcessBusinessKey(execution.getVariable(\"" + BUSINESS_KEY_VARIABLE + "\"))}") .userTask("userTask2") .endEvent("endEvent") .done(); }
@Before public void createBpmnModelInstance() { this.instance = Bpmn.createExecutableProcess("process1") .startEvent("start") .userTask("user1") .sequenceFlowId("seq") .userTask("user2") .endEvent("end") .done(); }
@Test public void testNonInterruptingSetVariableInStartListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .userTask(TASK_WITH_CONDITION_ID) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, specifier.getDelegateClass().getName()) .name(TASK_WITH_CONDITION) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); //when task is completed taskService.complete(taskQuery.singleResult().getId()); //then start listener sets variable //non interrupting boundary event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(1 + specifier.getExpectedNonInterruptingCount(), tasksAfterVariableIsSet.size()); assertEquals(specifier.getExpectedNonInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }
@Test public void createBatchModification() { //given BpmnModelInstance instance = Bpmn.createExecutableProcess("process1").startEvent().userTask("user1").userTask("user2").endEvent().done(); ProcessDefinition processDefinition = testHelper.deployAndGetDefinition(instance); List<String> instances = new ArrayList<String>(); for (int i = 0; i < 2; i++) { ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceByKey("process1"); instances.add(processInstance.getId()); } authRule .init(scenario) .withUser("userId") .bindResource("batchId", "*") .start(); // when engineRule.getRuntimeService().createModification(processDefinition.getId()).startAfterActivity("user1").processInstanceIds(instances).executeAsync(); // then if (authRule.assertScenario(scenario)) { Batch batch = engineRule.getManagementService().createBatchQuery().singleResult(); assertEquals("userId", batch.getCreateUserId()); } }
@Test public void testSetVariableOnInputMapping() { final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .userTask(TASK_WITH_CONDITION_ID) .camundaInputParameter(VARIABLE_NAME, "1") .name(TASK_WITH_CONDITION) .endEvent() .done(); deployMixedProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); //when task before is completed taskService.complete(task.getId()); //then conditional boundary event should triggered with the default evaluation behavior tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_CONDITIONAL_BOUNDARY_EVENT, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testSetVariableInOutputMapping() { final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .camundaOutputParameter(VARIABLE_NAME, "1") .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalBoundaryEventProcess(modelInstance, TASK_BEFORE_CONDITION_ID, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then output mapping sets variable //boundary event is not triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testNonInterruptingSetVariableInStartListener() { final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .userTask(TASK_WITH_CONDITION_ID).name(TASK_WITH_CONDITION) .camundaExecutionListenerExpression(ExecutionListener.EVENTNAME_START, EXPR_SET_VARIABLE) .endEvent() .done(); deployConditionalBoundaryEventProcess(modelInstance, TASK_WITH_CONDITION_ID, false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then start listener sets variable //non interrupting boundary event is not triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_WITH_CONDITION, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testSetVariableInStartListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .userTask(TASK_WITH_CONDITION_ID) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, specifier.getDelegateClass().getName()) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then start listener sets variable //conditional event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(specifier.getExpectedInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }
@Test public void testPurgeWithExistingProcessInstance() { //given process with variable and staying process instance in second user task BpmnModelInstance test = Bpmn.createExecutableProcess(PROCESS_DEF_KEY) .startEvent() .userTask() .userTask() .endEvent() .done(); engineRule.getRepositoryService().createDeployment().addModelInstance(PROCESS_MODEL_NAME, test).deploy(); VariableMap variables = Variables.createVariables(); variables.put("key", "value"); engineRule.getRuntimeService().startProcessInstanceByKey(PROCESS_DEF_KEY, variables); Task task = engineRule.getTaskService().createTaskQuery().singleResult(); engineRule.getTaskService().complete(task.getId()); // when purge is executed ManagementServiceImpl managementService = (ManagementServiceImpl) engineRule.getManagementService(); managementService.purge(); // then no more data exist assertAndEnsureCleanDbAndCache(engineRule.getProcessEngine(), true); }