use of io.automatiko.engine.codegen.data.Person in project automatiko-engine by automatiko-io.
the class CallActivityTaskTest method testCallActivityTaskWithExpressionsForIO.
@Test
public void testCallActivityTaskWithExpressionsForIO() throws Exception {
Application app = generateCodeProcessesOnly("subprocess/CallActivityWithIOexpression.bpmn2", "subprocess/CallActivitySubProcess.bpmn2");
assertThat(app).isNotNull();
Process<? extends Model> p = app.processes().processById("ParentProcess");
Model m = p.createModel();
Map<String, Object> parameters = new HashMap<>();
parameters.put("person", new Person("john", 0));
m.fromMap(parameters);
ProcessInstance<?> processInstance = p.createInstance(m);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
Model result = (Model) processInstance.variables();
assertThat(result.toMap()).hasSize(1).containsKeys("person");
Person person = (Person) result.toMap().get("person");
assertEquals("new value", person.getName());
List<WorkItem> workItems = processInstance.workItems(securityPolicy);
assertEquals(1, workItems.size());
WorkItem wi = workItems.get(0);
assertEquals("MyTask", wi.getName());
assertEquals(Active.ID, wi.getPhase());
assertEquals(Active.STATUS, wi.getPhaseStatus());
processInstance.transitionWorkItem(workItems.get(0).getId(), new HumanTaskTransition(Complete.ID, null, securityPolicy));
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
}
use of io.automatiko.engine.codegen.data.Person in project automatiko-engine by automatiko-io.
the class ConditionalEventTest method testNonInterruptingEventSubprocessConditionalEventProcess.
@Test
public void testNonInterruptingEventSubprocessConditionalEventProcess() throws Exception {
Application app = generateCodeProcessesOnly("conditionalevent/ConditionalEventSubprocessNonInterrupting.bpmn2");
Process<? extends Model> p = app.processes().processById("subprocessCondition");
Model m = p.createModel();
Map<String, Object> parameters = new HashMap<>();
parameters.put("person", new Person("john", 30));
m.fromMap(parameters);
ProcessInstance processInstance = p.createInstance(m);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
m.fromMap(Collections.singletonMap("person", new Person("john", 45)));
processInstance.updateVariables(m);
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
m.fromMap(Collections.singletonMap("person", new Person("john", 15)));
processInstance.updateVariables(m);
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
m.fromMap(Collections.singletonMap("person", new Person("john", 45)));
processInstance.updateVariables(m);
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
Object counter = ((Model) processInstance.variables()).toMap().get("counter");
assertThat(counter).isNotNull().asList().hasSize(2);
processInstance.abort();
}
use of io.automatiko.engine.codegen.data.Person in project automatiko-engine by automatiko-io.
the class ConditionalEventTest method testBoundaryConditionalEventProcess.
@Test
public void testBoundaryConditionalEventProcess() throws Exception {
Application app = generateCodeProcessesOnly("conditionalevent/ConditionalBoundaryEvent.bpmn2");
Process<? extends Model> p = app.processes().processById("boundaryCondition");
Model m = p.createModel();
Map<String, Object> parameters = new HashMap<>();
parameters.put("person", new Person("john", 30));
m.fromMap(parameters);
ProcessInstance processInstance = p.createInstance(m);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
m.fromMap(Collections.singletonMap("person", new Person("john", 45)));
processInstance.updateVariables(m);
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
}
use of io.automatiko.engine.codegen.data.Person in project automatiko-engine by automatiko-io.
the class EmbeddedSubProcessTest method testEmbeddedSubProcessWithUserTaskAndVariableScopes.
@Test
public void testEmbeddedSubProcessWithUserTaskAndVariableScopes() throws Exception {
Application app = generateCodeProcessesOnly("subprocess/EmbeddedSubProcessWithUserTask.bpmn2");
assertThat(app).isNotNull();
Process<? extends Model> p = app.processes().processById("embeddedWithUserTask_1_0");
Person person = new Person("john", 25);
Model m = p.createModel();
Map<String, Object> parameters = new HashMap<>();
parameters.put("person", person);
m.fromMap(parameters);
ProcessInstance<?> processInstance = p.createInstance(m);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
List<WorkItem> tasks = processInstance.workItems();
assertThat(tasks).hasSize(1);
WorkItem wi = processInstance.workItem(tasks.get(0).getId());
assertThat(wi).isNotNull();
assertThat(wi.getParameters()).containsKey("person");
assertThat(wi.getParameters()).extracting("person").isEqualTo(person);
processInstance.completeWorkItem(tasks.get(0).getId(), new HashMap<>(Collections.singletonMap("person", new Person("mary", 20))));
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
}
use of io.automatiko.engine.codegen.data.Person in project automatiko-engine by automatiko-io.
the class EventSubProcessTest method testEventSignalSubProcessWithVersionedData.
@SuppressWarnings("unchecked")
@Test
public void testEventSignalSubProcessWithVersionedData() throws Exception {
Application app = generateCodeProcessesOnly("event-subprocess/EventSubprocessSignalWithVersionedData.bpmn2");
assertThat(app).isNotNull();
Process<? extends Model> p = app.processes().processById("EventSubprocessSignal_1");
Model m = p.createModel();
Map<String, Object> parameters = new HashMap<>();
m.fromMap(parameters);
ProcessInstance<?> processInstance = p.createInstance(m);
processInstance.start();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
processInstance.send(Sig.of("MySignal", new Person("john", 20)));
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
Model result = (Model) processInstance.variables();
assertThat(result.toMap()).hasSize(1).containsKeys("person");
Person person = (Person) result.toMap().get("person");
assertThat(person).isNotNull();
assertThat(person.getName()).isEqualTo("john");
assertThat(person.getAge()).isEqualTo(20);
processInstance.send(Sig.of("MySignal", new Person("john", 21)));
result = (Model) processInstance.variables();
assertThat(result.toMap()).hasSize(1).containsKeys("person");
person = (Person) result.toMap().get("person");
assertThat(person).isNotNull();
assertThat(person.getName()).isEqualTo("john");
assertThat(person.getAge()).isEqualTo(21);
processInstance.send(Sig.of("MySignal", new Person("john", 25)));
result = (Model) processInstance.variables();
assertThat(result.toMap()).hasSize(1).containsKeys("person");
person = (Person) result.toMap().get("person");
assertThat(person).isNotNull();
assertThat(person.getName()).isEqualTo("john");
assertThat(person.getAge()).isEqualTo(25);
Map<String, List<Object>> versions = (Map<String, List<Object>>) ((AbstractProcessInstance<?>) processInstance).processInstance().getVariable(VariableScope.VERSIONED_VARIABLES);
List<Object> personVersions = (List<Object>) versions.get("person");
assertThat(personVersions).hasSize(2);
processInstance.send(Sig.of("MySignal", new Person("john", 25)));
processInstance.abort();
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ABORTED);
}
Aggregations