@Override public UserTaskBuilder builder() { return new UserTaskBuilder((BpmnModelInstance) modelInstance, this); }
protected BpmnModelInstance createModel(boolean isCancelActivity, String date) { BpmnModelInstance model = Bpmn.createExecutableProcess() .startEvent("startEvent") .userTask("userTask").name("User Task") .boundaryEvent("timer") .cancelActivity(isCancelActivity) .timerWithDate(date) .userTask("afterTimer") .endEvent("endEvent") .done(); return model; } }
protected Task createModelAccessTask(BpmnModelInstance modelInstance, Class<?> delegateClass) { UserTask task = modelInstance.newInstance(UserTask.class); task.setId("userTask"); CamundaTaskListener executionListener = modelInstance.newInstance(CamundaTaskListener.class); executionListener.setCamundaEvent(TaskListener.EVENTNAME_CREATE); executionListener.setCamundaClass(delegateClass.getName()); task.builder().addExtensionElement(executionListener); return task; }
@Before public void createBpmnModelInstance() { this.instance = Bpmn.createExecutableProcess("process1") .startEvent("start") .userTask("user1") .sequenceFlowId("seq") .userTask("user2") .userTask("user3") .endEvent("end") .done(); }
@Test public void testCompleteTaskInCreateTaskListenerWithIdentityLinks() { // given process with user task, identity links and task create listener BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("startToEnd") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskCreateListener.class.getName()) .name("userTask") .camundaCandidateUsers(Arrays.asList(new String[]{"users1", "user2"})) .camundaCandidateGroups(Arrays.asList(new String[]{"group1", "group2"})) .endEvent().done(); testRule.deploy(modelInstance); // when process is started and user task completed in task create listener runtimeService.startProcessInstanceByKey("startToEnd"); // then task is successfully completed without an exception assertNull(taskService.createTaskQuery().singleResult()); }
.startEvent(START_EVENT_ID) .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .sequenceFlowId(FLOW_ID) .userTask(TASK_WITH_CONDITION_ID) .name(TASK_WITH_CONDITION) .camundaAsyncBefore() .endEvent(END_EVENT_ID) .done(); CamundaExecutionListener listener = modelInstance.newInstance(CamundaExecutionListener.class);
@Test public void testSetVariableInCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .userTask().name(TASK_AFTER_SERVICE_TASK) .endEvent() .done(); deployConditionalEventSubProcess(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(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then service task in call activity sets variable //conditional event is not triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_SERVICE_TASK, tasksAfterVariableIsSet.get(0).getName()); }
public void testQueryWithoutCandidateUsers() { BpmnModelInstance process = Bpmn.createExecutableProcess("process") .startEvent() .userTask() .camundaCandidateGroups("sales") .endEvent() .done(); deployment(process); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); List<Task> tasks = taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .withoutCandidateUsers() .list(); assertEquals(1, tasks.size()); }
public void testPropagateTenantIdToAsyncJob() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .userTask() .camundaAsyncBefore() .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); // the job is created when the asynchronous activity is reached Job job = managementService.createJobQuery().singleResult(); assertThat(job, is(notNullValue())); // inherit the tenant id from job definition assertThat(job.getTenantId(), is(TENANT_ID)); }
public void testQueryWithCandidateUsers() { BpmnModelInstance process = Bpmn.createExecutableProcess("process") .startEvent() .userTask() .camundaCandidateUsers("anna") .endEvent() .done(); deployment(process); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); List<Task> tasks = taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .withCandidateUsers() .list(); assertEquals(1, tasks.size()); }
public static BpmnModelInstance oneTaskProcess(int processNumber) { return newModel(processNumber) .startEvent() .userTask(USER_TASK_ID) .endEvent() .done(); }
.boundaryEvent() .cancelActivity(true) .conditionalEventDefinition("event1") .conditionalEventDefinitionDone() .userTask("afterBoundary1") .endEvent() .moveToActivity(TASK_BEFORE_CONDITION_ID) .boundaryEvent() .conditionalEventDefinitionDone() .userTask("afterBoundary2") .endEvent() .done();
@Test public void occurredAfterParameterWorks() { // given BpmnModelInstance simpleDefinition = Bpmn.createExecutableProcess("process") .startEvent() .userTask("userTask") .camundaAssignee(userId) .endEvent() .done(); testHelper.deploy(simpleDefinition); Date now = new Date(); ClockUtil.setCurrentTime(now); engineRule.getRuntimeService().startProcessInstanceByKey("process"); unclaimAllUserTasks(); Date nowPlus2Seconds = new Date(now.getTime() + 2000L); ClockUtil.setCurrentTime(nowPlus2Seconds); claimAllUserTasks(); Date nowPlus4Seconds = new Date(now.getTime() + 4000L); ClockUtil.setCurrentTime(nowPlus4Seconds); completeAllUserTasks(); // when List<UserOperationLogEntry> userOperationsLog = optimizeService.getHistoricUserOperationLogs(now, null, 10); // then Set<String> allowedOperationsTypes = new HashSet<>(Arrays.asList(OPERATION_TYPE_CLAIM, OPERATION_TYPE_COMPLETE)); assertThat(userOperationsLog.size(), is(2)); assertTrue(allowedOperationsTypes.contains(userOperationsLog.get(0).getOperationType())); assertTrue(allowedOperationsTypes.contains(userOperationsLog.get(1).getOperationType())); }
@Test public void getRunningHistoricTaskInstances() { // given BpmnModelInstance simpleDefinition = Bpmn.createExecutableProcess("process") .startEvent("startEvent") .userTask("userTask") .name("task") .camundaAssignee(userId) .endEvent("endEvent") .done(); testHelper.deploy(simpleDefinition); runtimeService.startProcessInstanceByKey("process"); // when List<HistoricTaskInstance> runningHistoricTaskInstances = optimizeService.getRunningHistoricTaskInstances(null, null, 10); // then assertThat(runningHistoricTaskInstances.size(), is(1)); assertThatTasksHaveAllImportantInformation(runningHistoricTaskInstances.get(0)); }
BpmnModelInstance sourceModel = Bpmn.createExecutableProcess() .startEvent("startEvent") .userTask("userTask").name("User Task") .boundaryEvent("timerPast") .cancelActivity(false) .timerWithDate(DUE_DATE_IN_THE_PAST) .userTask("past") .moveToActivity("userTask") .boundaryEvent("timerFuture") .cancelActivity(false) .timerWithDate(sdf.format(futureDueDate)) .userTask("future") .done(); BpmnModelInstance targetModel = Bpmn.createExecutableProcess() .startEvent("startEvent") .userTask("userTask").name("User Task") .boundaryEvent("timerFuture") .cancelActivity(false) .timerWithDate(sdf.format(futureDueDate)) .userTask("future") .done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(sourceModel); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(targetModel);
.startEvent() .userTask("UserTask_1") .camundaInputParameter("localVar", "${loopVar}") .camundaInputParameter("constVar", "someValue") //to test array of parameters .boundaryEvent("MessageReceiver_1").message(TEST_MESSAGE_NAME) .userTask("UserTask_2") .endEvent() .subProcessDone() .multiInstance().camundaCollection("${vars}").camundaElementVariable("loopVar").multiInstanceDone()
@Test public void testCompleteTaskOnCreateListenerWithFollowingCallActivity() { final BpmnModelInstance subProcess = Bpmn.createExecutableProcess("subProc") .startEvent() .userTask("calledTask") .endEvent() .done(); final BpmnModelInstance instance = Bpmn.createExecutableProcess("mainProc") .startEvent() .userTask("mainTask") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, CreateTaskListener.class.getName()) .callActivity().calledElement("subProc") .endEvent() .done(); testRule.deploy(subProcess); testRule.deploy(instance); engineRule.getRuntimeService().startProcessInstanceByKey("mainProc"); Task task = engineRule.getTaskService().createTaskQuery().singleResult(); Assert.assertEquals(task.getTaskDefinitionKey(), "calledTask"); }
public void testPropagateTenantIdToVariableInstanceFromTask() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .userTask() .camundaAsyncAfter() .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); VariableMap variables = Variables.createVariables().putValue("var", "test"); Task task = taskService.createTaskQuery().singleResult(); taskService.setVariablesLocal(task.getId(), variables); VariableInstance variableInstance = runtimeService.createVariableInstanceQuery().singleResult(); assertThat(variableInstance, is(notNullValue())); // inherit the tenant id from task assertThat(variableInstance.getTenantId(), is(TENANT_ID)); }
@Test public void testRemoveExecutionSequence() { // given BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("singleTaskProcess") .startEvent() .userTask("taskWithLocalVariables") .camundaExecutionListenerClass("start", TestLocalVariableExecutionListener.class) .camundaTaskListenerClass("delete", TestLocalVariableTaskListener.class) .boundaryEvent() .signal("interruptSignal") .endEvent() .moveToActivity("taskWithLocalVariables") .endEvent() .done(); testRule.deploy(modelInstance); ProcessInstance pi = processEngineRule.getRuntimeService() .startProcessInstanceByKey("singleTaskProcess"); Execution execution = processEngineRule.getRuntimeService() .createExecutionQuery() .variableValueEquals("localVar", "localVarVal") .singleResult(); // when assertNotNull(execution); assertEquals(pi.getId(), execution.getProcessInstanceId()); processEngineRule.getRuntimeService().signal(execution.getId()); // then (see #TestLocalVariableTaskListener::notify) }