use of org.kie.kogito.StaticApplication in project kogito-runtimes by kiegroup.
the class ExplainabilityServiceTest method testPerturbedExecution.
@Test
public void testPerturbedExecution() {
DecisionModels decisionModels = (namespace, name) -> {
if (MODEL_NAMESPACE.equals(namespace) && MODEL_NAME.equals(name)) {
return decisionModel;
}
throw new RuntimeException("Model " + namespace + ":" + name + " not found.");
};
Map<String, Object> perturbedRequest = createRequest();
PredictInput predictInput = new PredictInput(new ModelIdentifier("dmn", String.format("%s%s%s", MODEL_NAMESPACE, RESOURCE_ID_SEPARATOR, MODEL_NAME)), perturbedRequest);
StaticApplication application = new StaticApplication(null, null, null, decisionModels, null);
ExplainabilityService explainabilityService = ExplainabilityService.INSTANCE;
List<PredictOutput> predictOutputs = explainabilityService.processRequest(application, singletonList(predictInput));
Assertions.assertEquals(1, predictOutputs.size());
PredictOutput predictOutput = predictOutputs.get(0);
Assertions.assertNotNull(predictOutput);
Assertions.assertNotNull(predictOutput.getResult());
Map<String, Object> perturbedResult = predictOutput.getResult();
Assertions.assertTrue(perturbedResult.containsKey("Should the driver be suspended?"));
Assertions.assertEquals("No", perturbedResult.get("Should the driver be suspended?"));
Assertions.assertTrue(perturbedResult.containsKey("Fine"));
Assertions.assertNull(perturbedResult.get("Fine"));
Assertions.assertTrue(decisionModel.getEvaluationSkipMonitoringHistory().stream().allMatch(x -> x.equals(true)));
}
use of org.kie.kogito.StaticApplication in project kogito-runtimes by kiegroup.
the class BpmnProcessCompiler method from.
public List<BpmnProcess> from(ProcessConfig config, Resource... resources) {
try {
BpmnProcesses bpmnProcesses = new BpmnProcesses();
StaticApplication application = new StaticApplication(new StaticConfig(null, config), bpmnProcesses);
List<Process> processes = new ArrayList<>();
XmlProcessReader xmlReader = new XmlProcessReader(getSemanticModules(), Thread.currentThread().getContextClassLoader());
configureProcessReader(xmlReader, config);
for (Resource resource : resources) {
processes.addAll(xmlReader.read(resource.getReader()));
}
List<BpmnProcess> bpmnProcessesList = processes.stream().map(p -> create(p, config, application)).collect(Collectors.toList());
bpmnProcessesList.forEach(p -> {
for (Node node : ((WorkflowProcess) p.get()).getNodesRecursively()) {
processNode(node, bpmnProcessesList);
}
});
return bpmnProcessesList;
} catch (Exception e) {
throw new BpmnProcessReaderException(e);
}
}
use of org.kie.kogito.StaticApplication in project kogito-runtimes by kiegroup.
the class ActivityGenerationModelTest method createProcesses.
protected Map<String, BpmnProcess> createProcesses(Map<String, String> classData, Map<String, KogitoWorkItemHandler> handlers) throws Exception {
MemoryFileSystem srcMfs = new MemoryFileSystem();
MemoryFileSystem trgMfs = new MemoryFileSystem();
String[] sources = new String[classData.size()];
int index = 0;
for (Entry<String, String> entry : classData.entrySet()) {
String fileName = entry.getKey().replaceAll("\\.", "/") + ".java";
sources[index++] = fileName;
srcMfs.write(fileName, entry.getValue().getBytes());
}
CompilationResult result = JAVA_COMPILER.compile(sources, srcMfs, trgMfs, this.getClass().getClassLoader());
assertThat(result).isNotNull();
assertThat(result.getErrors()).hasSize(0);
CachedWorkItemHandlerConfig wiConfig = new CachedWorkItemHandlerConfig();
for (Entry<String, KogitoWorkItemHandler> entry : handlers.entrySet()) {
wiConfig.register(entry.getKey(), entry.getValue());
}
ProcessConfig config = new StaticProcessConfig(wiConfig, new DefaultProcessEventListenerConfig(), new DefaultUnitOfWorkManager(new CollectingUnitOfWorkFactory()), null);
TestClassLoader cl = new TestClassLoader(this.getClass().getClassLoader(), trgMfs.getMap());
Map<String, BpmnProcess> processes = new HashMap<>();
BpmnProcesses bpmnProcesses = new BpmnProcesses();
StaticApplication application = new StaticApplication(new StaticConfig(null, config), bpmnProcesses);
for (String className : classData.keySet()) {
Class<?> processClass = Class.forName(className, true, cl);
Method processMethod = processClass.getMethod("process");
Process process = (Process) processMethod.invoke(null);
assertThat(process).isNotNull();
processes.put(process.getId(), new BpmnProcess(process, config, application));
}
return processes;
}
Aggregations