protected PMML4Result evaluate(String modelName, String pmmlFileName, DMNResult dmnr,
                                   ClassLoader parentClassloader) {
        EfestoRuntimeContext runtimeContext = getEfestoRuntimeContext(parentClassloader);
        ModelLocalUriId modelLocalUriId = getModelLocalUriId(pmmlFileName, modelName);

        Collection<EfestoOutput> retrieved;
        if (!(isPresentExecutableOrRedirect(modelLocalUriId, runtimeContext))) {
            LOG.warn("GeneratedResources for {}@{} are not present: trying to invoke compilation....",
                     pmmlFileName,
                     modelName);
            Map<String, GeneratedResources> generatedResourcesMap = compileFile(pmmlFileName,
                                                                                parentClassloader);
            runtimeContext.getGeneratedResourcesMap().putAll(generatedResourcesMap);
        }
        PMMLRequestData pmmlRequestData = getPMMLRequestData(UUID.randomUUID().toString(), modelName, pmmlFileName,
                                                             dmnr);
        EfestoInput<PMMLRequestData> inputPMML = new BaseEfestoInput<>(modelLocalUriId, pmmlRequestData);
        retrieved = evaluateInput(inputPMML, runtimeContext);
        if (retrieved.isEmpty()) {
            String errorMessage = String.format("Failed to get result for %s@%s: please %s",
                                                inputPMML.getModelLocalUriId(),
                                                inputPMML.getInputData().getModelName(),
                                                CHECK_CLASSPATH);
            LOG.error(errorMessage);
            throw new KieRuntimeServiceException(errorMessage);
        }
        return (PMML4Result) retrieved.iterator().next().getOutputData();
    }
@Test
    void evaluate() {
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        DMNRuntime dmnRuntimeMock = mock(DMNRuntime.class);
        when(dmnRuntimeMock.getRootClassLoader()).thenReturn(classLoader);
        DMNRuntimeEventManager eventManagerMock = mock(DMNRuntimeEventManager.class);
        when(eventManagerMock.getRuntime()).thenReturn(dmnRuntimeMock);
        DMNResult dmnrMock = mock(DMNResult.class);
        PMML4Result retrieved = dmnKiePMMLTrustyInvocationEvaluator.evaluate(model, pmmlFileName, dmnrMock, classLoader);
        assertThat(retrieved).isNotNull();
    }