use of org.activiti.api.process.model.ProcessInstance in project Activiti by Activiti.
the class ConformanceServiceTaskModifyVariableTest method shouldBeAbleToStartProcess.
/*
* This test covers the ServiceTask with Implementation2.bpmn20.xml process
* This execution should generate 11 events:
* - PROCESS_CREATED
* - VARIABLE_CREATED
* - PROCESS_STARTED,
* - ACTIVITY_STARTED,
* - ACTIVITY_COMPLETED,
* - SEQUENCE_FLOW_TAKEN,
* - ACTIVITY_STARTED,
* - VARIABLE_UPDATED
* - ACTIVITY_COMPLETED,
* - SEQUENCE_FLOW_TAKEN,
* - ACTIVITY_STARTED,
* - ACTIVITY_COMPLETED,
* - PROCESS_COMPLETED
* And the Process Instance Status should be Completed
* Connectors are executed in a Sync fashion, so the logic will be exexuted and the BPMN Activity completed automatically.
* No further operation can be executed on the process due the fact that it start and finish in the same transaction
*/
@Test
public void shouldBeAbleToStartProcess() {
securityUtil.logInAs("user1");
// when
ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder.start().withProcessDefinitionKey(processKey).withBusinessKey("my-business-key").withName("my-process-instance-name").withVariable("var1", "value1").build());
// then
assertThat(processInstance).isNotNull();
assertThat(processInstance.getStatus()).isEqualTo(ProcessInstance.ProcessInstanceStatus.COMPLETED);
assertThat(processInstance.getBusinessKey()).isEqualTo("my-business-key");
assertThat(processInstance.getName()).isEqualTo("my-process-instance-name");
// No Process Instance should be found
Throwable throwable = catchThrowable(() -> processRuntime.processInstance(processInstance.getId()));
assertThat(throwable).isInstanceOf(NotFoundException.class);
// No Variable Instance should be found
throwable = catchThrowable(() -> processRuntime.variables(ProcessPayloadBuilder.variables().withProcessInstanceId(processInstance.getId()).build()));
assertThat(throwable).isInstanceOf(NotFoundException.class);
assertThat(Set1RuntimeTestConfiguration.isConnector2Executed()).isTrue();
assertThat(RuntimeTestConfiguration.collectedEvents).extracting(RuntimeEvent::getEventType).containsExactly(ProcessRuntimeEvent.ProcessEvents.PROCESS_CREATED, VariableEvent.VariableEvents.VARIABLE_CREATED, ProcessRuntimeEvent.ProcessEvents.PROCESS_STARTED, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, BPMNActivityEvent.ActivityEvents.ACTIVITY_COMPLETED, BPMNSequenceFlowTakenEvent.SequenceFlowEvents.SEQUENCE_FLOW_TAKEN, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, VariableEvent.VariableEvents.VARIABLE_UPDATED, BPMNActivityEvent.ActivityEvents.ACTIVITY_COMPLETED, BPMNSequenceFlowTakenEvent.SequenceFlowEvents.SEQUENCE_FLOW_TAKEN, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, BPMNActivityEvent.ActivityEvents.ACTIVITY_COMPLETED, ProcessRuntimeEvent.ProcessEvents.PROCESS_COMPLETED);
assertThat((String) ((VariableUpdatedEvent) RuntimeTestConfiguration.collectedEvents.get(7)).getEntity().getValue()).isEqualTo("value1-modified");
}
use of org.activiti.api.process.model.ProcessInstance in project Activiti by Activiti.
the class BasicExclusiveGatewayTest method shouldCreateAndCompleteATaskAndDontSeeNext.
@Test
public void shouldCreateAndCompleteATaskAndDontSeeNext() {
securityUtil.logInAs("user1");
// given
ProcessInstance processInstance = processOperations.start(ProcessPayloadBuilder.start().withProcessDefinitionKey(PROCESS_KEY).withBusinessKey("my-business-key").withName("my-process-instance-name").build()).expectFields(processInstance().status(ProcessInstance.ProcessInstanceStatus.RUNNING), processInstance().name("my-process-instance-name"), processInstance().businessKey("my-business-key")).expect(processInstance().hasTask("Task 1 User 1", Task.TaskStatus.ASSIGNED, withAssignee("user1"))).expectEvents(processInstance().hasBeenStarted(), startEvent("StartEvent_1").hasBeenStarted(), startEvent("StartEvent_1").hasBeenCompleted(), sequenceFlow("SequenceFlow_1035s34").hasBeenTaken(), taskWithName("Task 1 User 1").hasBeenCreated(), taskWithName("Task 1 User 1").hasBeenAssigned()).andReturn();
// I should be able to get the process instance from the Runtime because it is still running
ProcessInstance processInstanceById = processRuntime.processInstance(processInstance.getId());
assertThat(processInstanceById).isEqualTo(processInstance);
// I should get a task for User1
Page<Task> tasks = taskRuntime.tasks(Pageable.of(0, 50));
assertThat(tasks.getTotalItems()).isEqualTo(1);
Task task = tasks.getContent().get(0);
assertThat(task.getStatus()).isEqualTo(Task.TaskStatus.ASSIGNED);
assertThat(task.getAssignee()).isEqualTo("user1");
// given
taskOperations.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()).build()).expectEvents(task().hasBeenCompleted(), sequenceFlow("SequenceFlow_0pdm5j0").hasBeenTaken(), exclusiveGateway("ExclusiveGateway_1ri35t5").hasBeenStarted(), exclusiveGateway("ExclusiveGateway_1ri35t5").hasBeenCompleted(), sequenceFlow("SequenceFlow_1tut9mk").hasBeenTaken(), taskWithName("Task 2 User 1").hasBeenCreated(), taskWithName("Task 2 User 1").hasBeenAssigned()).expect(processInstance().hasTask("Task 2 User 1", Task.TaskStatus.ASSIGNED, withAssignee("user1")));
tasks = taskRuntime.tasks(Pageable.of(0, 50));
assertThat(tasks.getTotalItems()).isEqualTo(1);
task = tasks.getContent().get(0);
assertThat(task.getStatus()).isEqualTo(Task.TaskStatus.ASSIGNED);
assertThat(task.getAssignee()).isEqualTo("user1");
}
use of org.activiti.api.process.model.ProcessInstance in project Activiti by Activiti.
the class BasicParallelGatewayGroupAssignmentsTest method shouldCheckThatParallelGatewayCreateBothTasksForGroups.
@Test
public void shouldCheckThatParallelGatewayCreateBothTasksForGroups() {
securityUtil.logInAs("user1");
ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder.start().withProcessDefinitionKey(processKey).withBusinessKey("my-business-key").withName("my-process-instance-name").build());
// then
assertThat(processInstance).isNotNull();
assertThat(processInstance.getStatus()).isEqualTo(ProcessInstance.ProcessInstanceStatus.RUNNING);
assertThat(processInstance.getBusinessKey()).isEqualTo("my-business-key");
assertThat(processInstance.getName()).isEqualTo("my-process-instance-name");
// I should be able to get the process instance from the Runtime because it is still running
ProcessInstance processInstanceById = processRuntime.processInstance(processInstance.getId());
assertThat(processInstanceById).isEqualTo(processInstance);
// I should get a task for User1
Page<Task> tasks = taskRuntime.tasks(Pageable.of(0, 50));
assertThat(tasks.getTotalItems()).isEqualTo(1);
Task task = tasks.getContent().get(0);
Task taskById = taskRuntime.task(task.getId());
assertThat(taskById.getStatus()).isEqualTo(Task.TaskStatus.ASSIGNED);
assertThat(task).isEqualTo(taskById);
assertThat(task.getAssignee()).isEqualTo("user1");
assertThat(RuntimeTestConfiguration.collectedEvents).extracting(RuntimeEvent::getEventType).containsExactly(ProcessRuntimeEvent.ProcessEvents.PROCESS_CREATED, ProcessRuntimeEvent.ProcessEvents.PROCESS_STARTED, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, BPMNActivityEvent.ActivityEvents.ACTIVITY_COMPLETED, BPMNSequenceFlowTakenEvent.SequenceFlowEvents.SEQUENCE_FLOW_TAKEN, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, TaskRuntimeEvent.TaskEvents.TASK_CREATED, TaskRuntimeEvent.TaskEvents.TASK_ASSIGNED);
clearEvents();
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()).build());
assertThat(RuntimeTestConfiguration.collectedEvents).extracting(RuntimeEvent::getEventType).contains(TaskRuntimeEvent.TaskEvents.TASK_COMPLETED, BPMNActivityEvent.ActivityEvents.ACTIVITY_COMPLETED, BPMNSequenceFlowTakenEvent.SequenceFlowEvents.SEQUENCE_FLOW_TAKEN, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, BPMNActivityEvent.ActivityEvents.ACTIVITY_COMPLETED, BPMNSequenceFlowTakenEvent.SequenceFlowEvents.SEQUENCE_FLOW_TAKEN, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, TaskRuntimeEvent.TaskEvents.TASK_CREATED, BPMNSequenceFlowTakenEvent.SequenceFlowEvents.SEQUENCE_FLOW_TAKEN, BPMNActivityEvent.ActivityEvents.ACTIVITY_STARTED, TaskRuntimeEvent.TaskEvents.TASK_CREATED);
clearEvents();
// User 1 is a candidate for a task
securityUtil.logInAs("user1");
tasks = taskRuntime.tasks(Pageable.of(0, 50));
assertThat(tasks.getTotalItems()).isEqualTo(1);
task = tasks.getContent().get(0);
taskById = taskRuntime.task(task.getId());
assertThat(taskById.getStatus()).isEqualTo(Task.TaskStatus.CREATED);
assertThat(task).isEqualTo(taskById);
assertThat(task.getAssignee()).isNull();
// User 2 is a candidate for a task
securityUtil.logInAs("user2");
tasks = taskRuntime.tasks(Pageable.of(0, 50));
assertThat(tasks.getTotalItems()).isEqualTo(1);
task = tasks.getContent().get(0);
taskById = taskRuntime.task(task.getId());
assertThat(taskById.getStatus()).isEqualTo(Task.TaskStatus.CREATED);
assertThat(task).isEqualTo(taskById);
assertThat(task.getAssignee()).isNull();
// User 3 is a candidate for both tasks
securityUtil.logInAs("user3");
tasks = taskRuntime.tasks(Pageable.of(0, 50));
assertThat(tasks.getTotalItems()).isEqualTo(2);
}
use of org.activiti.api.process.model.ProcessInstance in project Activiti by Activiti.
the class BasicParallelGatewayGroupAssignmentsTest method cleanup.
@AfterEach
public void cleanup() {
securityUtil.logInAs("admin");
Page<ProcessInstance> processInstancePage = processAdminRuntime.processInstances(Pageable.of(0, 50));
for (ProcessInstance pi : processInstancePage.getContent()) {
processAdminRuntime.delete(ProcessPayloadBuilder.delete(pi.getId()));
}
clearEvents();
}
use of org.activiti.api.process.model.ProcessInstance in project Activiti by Activiti.
the class BasicCallActivityAndServiceTaskTest method cleanup.
@AfterEach
public void cleanup() {
securityUtil.logInAs("admin");
Page<ProcessInstance> processInstancePage = processAdminRuntime.processInstances(Pageable.of(0, 50));
for (ProcessInstance pi : processInstancePage.getContent()) {
// We want to delete root processes instances because sub processes will be deleted automatically when the root ones are deleted
if (pi.getParentId() == null) {
processAdminRuntime.delete(ProcessPayloadBuilder.delete(pi.getId()));
}
}
clearEvents();
}
Aggregations