use of org.drools.util.io.ClassPathResource in project kogito-runtimes by kiegroup.
the class ActivityGenerationModelTest method testAsyncExecution.
@Test
public void testAsyncExecution() throws Exception {
BpmnProcess process = BpmnProcess.from(new ClassPathResource("async/AsyncProcess.bpmn")).get(0);
ProcessMetaData metaData = ProcessToExecModelGenerator.INSTANCE.generate((WorkflowProcess) process.get());
String content = metaData.getGeneratedClassModel().toString();
assertThat(content).isNotNull();
log(content);
Map<String, String> classData = Collections.singletonMap("com.example.AsyncProcessProcess", content);
CountDownLatch latch = new CountDownLatch(1);
String mainThread = Thread.currentThread().getName();
AtomicReference<String> workItemThread = new AtomicReference<>();
KogitoWorkItemHandler workItemHandler = new KogitoWorkItemHandler() {
@Override
public void executeWorkItem(KogitoWorkItem workItem, KogitoWorkItemManager manager) {
workItemThread.set(Thread.currentThread().getName());
manager.completeWorkItem(workItem.getStringId(), Collections.singletonMap("response", "hello " + workItem.getParameter("name")));
latch.countDown();
}
@Override
public void abortWorkItem(KogitoWorkItem workItem, KogitoWorkItemManager manager) {
latch.countDown();
}
};
Map<String, BpmnProcess> processes = createProcesses(classData, Collections.singletonMap("org.jbpm.bpmn2.objects.HelloService_hello_3_Handler", workItemHandler));
ProcessInstance i = UnitOfWorkExecutor.executeInUnitOfWork(process.getApplication().unitOfWorkManager(), () -> {
ProcessInstance<BpmnVariables> processInstance = processes.get("AsyncProcess").createInstance(BpmnVariables.create(Collections.singletonMap("name", "Tiago")));
processInstance.start();
assertEquals(STATE_ACTIVE, processInstance.status());
return processInstance;
});
// since the tasks as async, possibly executed in different threads.
latch.await(5, TimeUnit.SECONDS);
assertEquals(STATE_COMPLETED, i.status());
BpmnVariables variables = (BpmnVariables) i.variables();
assertEquals(variables.get("greeting"), "hello Tiago");
assertNotEquals(mainThread, workItemThread.get());
}
use of org.drools.util.io.ClassPathResource in project kogito-runtimes by kiegroup.
the class ActivityGenerationModelTest method testInclusiveSplitAndJoinNestedWithBusinessKey.
@Test
public void testInclusiveSplitAndJoinNestedWithBusinessKey() throws Exception {
BpmnProcess process = BpmnProcess.from(new ClassPathResource("BPMN2-InclusiveSplitAndJoinNested.bpmn2")).get(0);
ProcessMetaData metaData = ProcessToExecModelGenerator.INSTANCE.generate((WorkflowProcess) process.get());
String content = metaData.getGeneratedClassModel().toString();
assertThat(content).isNotNull();
log(content);
Map<String, String> classData = new HashMap<>();
classData.put("org.drools.bpmn2.TestProcess", content);
String businessKey = "custom";
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
Map<String, Object> params = new HashMap<String, Object>();
params.put("x", 15);
Map<String, BpmnProcess> processes = createProcesses(classData, Collections.singletonMap("Human Task", workItemHandler));
ProcessInstance<BpmnVariables> processInstance = processes.get("com.sample.test").createInstance(businessKey, BpmnVariables.create(params));
processInstance.start();
assertEquals(STATE_ACTIVE, processInstance.status());
ProcessInstance<BpmnVariables> loadedProcessInstance = processes.get("com.sample.test").instances().findById(processInstance.id()).orElse(null);
assertThat(loadedProcessInstance).isNotNull();
assertThat(loadedProcessInstance.businessKey()).isEqualTo(businessKey);
loadedProcessInstance.abort();
assertEquals(STATE_ABORTED, processInstance.status());
}
use of org.drools.util.io.ClassPathResource in project kogito-runtimes by kiegroup.
the class ActivityGenerationModelTest method testWorkItemProcessWithVariableMapping.
@Test
public void testWorkItemProcessWithVariableMapping() throws Exception {
BpmnProcess process = BpmnProcess.from(new ClassPathResource("BPMN2-ServiceProcess.bpmn2")).get(0);
ProcessMetaData metaData = ProcessToExecModelGenerator.INSTANCE.generate((WorkflowProcess) process.get());
String content = metaData.getGeneratedClassModel().toString();
assertThat(content).isNotNull();
log(content);
Map<String, String> classData = new HashMap<>();
classData.put("org.drools.bpmn2.ServiceProcessProcess", content);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
Map<String, Object> params = new HashMap<String, Object>();
params.put("s", "john");
Map<String, BpmnProcess> processes = createProcesses(classData, Collections.singletonMap("org.jbpm.bpmn2.objects.HelloService_hello_2_Handler", workItemHandler));
ProcessInstance<BpmnVariables> processInstance = processes.get("ServiceProcess").createInstance(BpmnVariables.create(params));
processInstance.start();
assertEquals(STATE_ACTIVE, processInstance.status());
KogitoWorkItem workItem = workItemHandler.getWorkItem();
assertNotNull(workItem);
assertEquals("john", workItem.getParameter("Parameter"));
processInstance.completeWorkItem(workItem.getStringId(), Collections.singletonMap("Result", "john doe"));
assertEquals(STATE_COMPLETED, processInstance.status());
}
use of org.drools.util.io.ClassPathResource in project kogito-runtimes by kiegroup.
the class ActivityGenerationModelTest method testUserTaskWithParamProcess.
@Test
public void testUserTaskWithParamProcess() throws Exception {
BpmnProcess process = BpmnProcess.from(new ClassPathResource("BPMN2-UserTaskWithParametrizedInput.bpmn2")).get(0);
ProcessMetaData metaData = ProcessToExecModelGenerator.INSTANCE.generate((WorkflowProcess) process.get());
String content = metaData.getGeneratedClassModel().toString();
assertThat(content).isNotNull();
log(content);
Map<String, String> classData = new HashMap<>();
classData.put("org.drools.bpmn2.UserTaskProcess", content);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
Map<String, BpmnProcess> processes = createProcesses(classData, Collections.singletonMap("Human Task", workItemHandler));
ProcessInstance<BpmnVariables> processInstance = processes.get("UserTask").createInstance();
processInstance.start();
assertEquals(STATE_ACTIVE, processInstance.status());
KogitoWorkItem workItem = workItemHandler.getWorkItem();
assertNotNull(workItem);
assertEquals("Executing task of process instance " + processInstance.id() + " as work item with Hello", workItem.getParameter("Description").toString().trim());
processInstance.completeWorkItem(workItem.getStringId(), null, SecurityPolicy.of(new StaticIdentityProvider("john")));
assertEquals(STATE_COMPLETED, processInstance.status());
}
use of org.drools.util.io.ClassPathResource in project kogito-runtimes by kiegroup.
the class ActivityGenerationModelTest method testCallActivityProcess.
@Test
public void testCallActivityProcess() throws Exception {
BpmnProcess process = BpmnProcess.from(new ClassPathResource("PrefixesProcessIdCallActivity.bpmn2")).get(0);
ProcessMetaData metaData = ProcessToExecModelGenerator.INSTANCE.generate((WorkflowProcess) process.get());
String content = metaData.getGeneratedClassModel().toString();
assertThat(content).isNotNull();
log(content);
assertThat(metaData.getSubProcesses()).hasSize(1).containsKey("SubProcess").containsValue("test.SubProcess");
}
Aggregations