use of io.automatiko.engine.api.workflow.WorkItem in project automatiko-engine by automatiko-io.
the class FileSystemProcessInstancesTest method testComplexVariableFlow.
@Test
public void testComplexVariableFlow() {
BpmnProcess process = (BpmnProcess) BpmnProcess.from(new ClassPathResource("BPMN2-PersonUserTask.bpmn2")).get(0);
process.setProcessInstancesFactory(new FileSystemProcessInstancesFactory());
process.configure();
Person person = new Person("John", 30);
Address mainAddress = new Address("first", "Brisbane", "00000", "Australia", true);
Address secondaryAddress = new Address("second", "Syndey", "11111", "Australia", false);
person.addAddress(mainAddress);
person.addAddress(secondaryAddress);
ProcessInstance<BpmnVariables> processInstance = process.createInstance(BpmnVariables.create(Collections.singletonMap("person", person)));
processInstance.start();
assertThat(processInstance.status()).isEqualTo(STATE_ACTIVE);
assertThat(processInstance.description()).isEqualTo("User Task");
assertThat(process.instances().values(1, 10)).hasSize(1);
FileSystemProcessInstances fileSystemBasedStorage = (FileSystemProcessInstances) process.instances();
verify(fileSystemBasedStorage, times(2)).create(any(), any());
verify(fileSystemBasedStorage, times(1)).setMetadata(any(), eq(FileSystemProcessInstances.PI_DESCRIPTION), eq("User Task"));
verify(fileSystemBasedStorage, times(1)).setMetadata(any(), eq(FileSystemProcessInstances.PI_STATUS), eq("1"));
Person testVar = (Person) processInstance.variables().get("person");
assertThat(testVar).isEqualTo(person);
assertThat(processInstance.description()).isEqualTo("User Task");
WorkItem workItem = processInstance.workItems(securityPolicy).get(0);
assertThat(workItem).isNotNull();
assertThat(workItem.getParameters().get("ActorId")).isEqualTo("john");
processInstance.completeWorkItem(workItem.getId(), null, securityPolicy);
assertThat(processInstance.status()).isEqualTo(STATE_COMPLETED);
fileSystemBasedStorage = (FileSystemProcessInstances) process.instances();
verify(fileSystemBasedStorage, times(2)).remove(any(), any());
}
Aggregations