This is an automated email from the ASF dual-hosted git repository.
gitgabrio pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-benchmarks.git
The following commit(s) were added to refs/heads/main by this push:
new a4304bfc [incubator-kie-issues#1973] Create DMN-Efesto benchmarks
(#294)
a4304bfc is described below
commit a4304bfcf6be835d5998cf4526c83764b94eba3c
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Tue Jul 1 09:49:02 2025 +0200
[incubator-kie-issues#1973] Create DMN-Efesto benchmarks (#294)
* [incubator-kie-issues#1973] Introducing dmn efesto benchmarks. Minor
refactoring of other benchmarks. Fixing some generated models
* [incubator-kie-issues#1973] Implemented efesto runtime benchmarks
---------
Co-authored-by: Gabriele-Cardosi <[email protected]>
---
.../org/drools/benchmarks/common/DMNProvider.java | 10 ++
.../dmn/BusinessKnowledgeModelDMNProvider.java | 9 +-
.../common/providers/dmn/ContextDMNProvider.java | 16 ++-
.../dmn/DTNoGapsNoOverlapsDMNProvider.java | 9 +-
.../common/providers/dmn/DecisionDMNProvider.java | 13 +-
.../providers/dmn/DecisionTableDMNProvider.java | 9 +-
.../providers/dmn/DecisionTablesDMNProvider.java | 9 +-
.../dmn/TriangularNumHardDMNProvider.java | 9 +-
.../dmn/efesto/DMNEfestoAbstractBenchmark.java | 146 +++++++++++++++++++++
...CompilationBusinessKnowledgeModelBenchmark.java | 61 +++++++++
.../DMNCompilationComplexDMNModelBenchmark.java | 60 +++++++++
.../DMNCompilationContextBenchmark.java} | 60 ++++-----
.../DMNCompilationDecisionBenchmark.java} | 59 ++++-----
.../DMNCompilationDecisionTableBenchmark.java} | 62 ++++-----
.../DMNCompilationMultipleBenchmark.java | 92 +++++++++++++
.../runtime/DMNEvaluateContextBenchmark.java | 51 +++----
.../runtime/DMNEvaluateDecisionBenchmark.java | 47 +++----
.../runtime/DMNEvaluateDecisionTableBenchmark.java | 59 ++++-----
.../DMNEvaluateDecisionTablesSparseBenchmark.java | 60 +++------
.../DMNEvaluateFewLiteralDecisionBenchmark.java | 52 +++-----
.../runtime/DMNEvaluatePojoInputBenchmark.java | 72 ++++++++++
.../DMNEvaluateTriangularNumHardBenchmark.java | 45 +++----
.../efesto/runtime/DMNRuntimeBKModelBenchmark.java | 66 ++++++++++
.../dmn/runtime/DMNEvaluateContextBenchmark.java | 2 +-
.../dmn/runtime/DMNEvaluateDecisionBenchmark.java | 2 +-
.../runtime/DMNEvaluateDecisionTableBenchmark.java | 2 +-
.../DMNEvaluateDecisionTablesSparseBenchmark.java | 2 +-
.../DMNEvaluateFewLiteralDecisionBenchmark.java | 2 +-
.../DMNEvaluateTriangularNumHardBenchmark.java | 2 +-
.../validation/DTNoGapsNoOverlapsBenchmark.java | 2 +-
drools-benchmarks-parent/pom.xml | 19 +++
31 files changed, 786 insertions(+), 323 deletions(-)
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/DMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/DMNProvider.java
index f7c45b42..7cfcfb9b 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/DMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/DMNProvider.java
@@ -30,10 +30,20 @@ public interface DMNProvider {
*/
String getDMN();
+ /**
+ *
+ * @return the model name of the generated model
+ */
+ String getModelName();
+
/**
* Returns DMN that contains specified number of core elements (e.g.
decisions, business knowledge model, etc.).
* @param numberOfElements Required number of core elements in resulting
DRL.
* @return String representation of the generated DMN file.
*/
String getDMN(int numberOfElements);
+
+ default String getFormattedDefinitions(String modelName) {
+ return String.format("<definitions id=\"%1$s\" name=\"%1$s\"\n",
modelName);
+ }
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/BusinessKnowledgeModelDMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/BusinessKnowledgeModelDMNProvider.java
index f9989796..21b9f5ca 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/BusinessKnowledgeModelDMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/BusinessKnowledgeModelDMNProvider.java
@@ -23,17 +23,24 @@ import org.drools.benchmarks.common.DMNProvider;
public class BusinessKnowledgeModelDMNProvider implements DMNProvider {
+ private static final String MODEL_NAME = "business-knowledge-model";
+
@Override
public String getDMN() {
return getDMN(1);
}
+ @Override
+ public String getModelName() {
+ return MODEL_NAME;
+ }
+
@Override
public String getDMN(int numberOfElements) {
final StringBuilder dmnBuilder = new StringBuilder();
dmnBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- dmnBuilder.append("<definitions id=\"business-knowledge-model\"
name=\"business-knowledge-model\"\n");
+ dmnBuilder.append(getFormattedDefinitions(MODEL_NAME));
dmnBuilder.append("
namespace=\"https://github.com/kiegroup/kie-dmn\"\n");
dmnBuilder.append("
xmlns=\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n");
dmnBuilder.append("
xmlns:feel=\"http://www.omg.org/spec/FEEL/20140401\">\n");
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/ContextDMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/ContextDMNProvider.java
index 8c80f194..5f3d72ab 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/ContextDMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/ContextDMNProvider.java
@@ -23,21 +23,29 @@ import org.drools.benchmarks.common.DMNProvider;
public class ContextDMNProvider implements DMNProvider {
+ private static final String MODEL_NAME = "dmn-context";
+
@Override
public String getDMN() {
return getDMN(1);
}
+ @Override
+ public String getModelName() {
+ return MODEL_NAME;
+ }
+
@Override
public String getDMN(int numberOfElements) {
final StringBuilder dmnBuilder = new StringBuilder();
dmnBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- dmnBuilder.append("<definitions id=\"dmn-context\"
name=\"dmn-context\"\n");
+ dmnBuilder.append(getFormattedDefinitions(MODEL_NAME));
dmnBuilder.append("
namespace=\"https://github.com/kiegroup/kie-dmn\"\n");
dmnBuilder.append("
xmlns=\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n");
- dmnBuilder.append("
xmlns:feel=\"http://www.omg.org/spec/FEEL/20140401\">\n");
- dmnBuilder.append("
xsi:schemaLocation=\"http://www.omg.org/spec/DMN/20151101/dmn.xsd
http://www.omg.org/spec/DMN/20151101/dmn.xsd \"\n");
+ dmnBuilder.append("
xmlns:feel=\"http://www.omg.org/spec/FEEL/20140401\"\n");
+ dmnBuilder.append("
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
+ dmnBuilder.append("
xsi:schemaLocation=\"http://www.omg.org/spec/DMN/20151101/dmn.xsd
http://www.omg.org/spec/DMN/20151101/dmn.xsd \"\n>");
for (int i = 0; i < numberOfElements; i++) {
dmnBuilder.append(getContext(i));
@@ -51,7 +59,7 @@ public class ContextDMNProvider implements DMNProvider {
private String getContext(final int index) {
final StringBuilder contextBuilder = new StringBuilder();
contextBuilder.append(" <decision id=\"decision" + index + "\"
name=\"decision" + index + "\">\n");
- contextBuilder.append(" <variable name=\"DecisionVar" + index + "\"
typeRef=\"feel:context\"/>\n");
+ contextBuilder.append(" <variable name=\"decision" + index + "\"
typeRef=\"feel:context\"/>\n");
contextBuilder.append(" <context>\n");
contextBuilder.append(" <contextEntry>\n");
contextBuilder.append(" <variable name=\"entry" + index + "-1\"
typeRef=\"feel:string\"/>\n");
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DTNoGapsNoOverlapsDMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DTNoGapsNoOverlapsDMNProvider.java
index 427945e9..9f6497e1 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DTNoGapsNoOverlapsDMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DTNoGapsNoOverlapsDMNProvider.java
@@ -25,17 +25,24 @@ import org.drools.benchmarks.common.DMNProvider;
public class DTNoGapsNoOverlapsDMNProvider implements DMNProvider {
+ private static final String MODEL_NAME = "dt-nogapsnooverlaps";
+
@Override
public String getDMN() {
return getDMN(1);
}
+ @Override
+ public String getModelName() {
+ return MODEL_NAME;
+ }
+
@Override
public String getDMN(int param) {
final StringBuilder dmnBuilder = new StringBuilder();
dmnBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- dmnBuilder.append("<definitions id=\"dt-nogapsnooverlaps\"
name=\"dt-nogapsnooverlaps\"\n");
+ dmnBuilder.append(getFormattedDefinitions(MODEL_NAME));
dmnBuilder.append("
namespace=\"https://github.com/kiegroup/kie-dmn\"\n");
dmnBuilder.append("
xmlns=\"http://www.omg.org/spec/DMN/20180521/MODEL/\"\n");
dmnBuilder.append("
xmlns:feel=\"http://www.omg.org/spec/DMN/20180521/FEEL/\">\n");
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionDMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionDMNProvider.java
index 98a2a3b6..6d014b51 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionDMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionDMNProvider.java
@@ -23,17 +23,24 @@ import org.drools.benchmarks.common.DMNProvider;
public class DecisionDMNProvider implements DMNProvider {
+ private static final String MODEL_NAME = "decision";
+
@Override
public String getDMN() {
return getDMN(1);
}
+ @Override
+ public String getModelName() {
+ return MODEL_NAME;
+ }
+
@Override
public String getDMN(int numberOfElements) {
final StringBuilder dmnBuilder = new StringBuilder();
dmnBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- dmnBuilder.append("<definitions id=\"decision\" name=\"decision\"\n");
+ dmnBuilder.append(getFormattedDefinitions(MODEL_NAME));
dmnBuilder.append("
namespace=\"https://github.com/kiegroup/drools/kie-dmn\"\n");
dmnBuilder.append("
xmlns=\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n");
dmnBuilder.append("
xmlns:feel=\"http://www.omg.org/spec/FEEL/20140401\">\n");
@@ -52,8 +59,8 @@ public class DecisionDMNProvider implements DMNProvider {
private String getDecision(final int index) {
final StringBuilder decisionBuilder = new StringBuilder();
- decisionBuilder.append(" <decision id=\"decision" + index + "\"
name=\"decision" + index + "\">\n");
- decisionBuilder.append(" <variable name=\"variable" + index + "\"
typeRef=\"feel:string\"/>\n");
+ decisionBuilder.append( " <decision id=\"decision" + index + "\"
name=\"decision" + index + "\">\n");
+ decisionBuilder.append(" <variable name=\"decision" + index + "\"
typeRef=\"feel:string\"/>\n");
decisionBuilder.append(" <informationRequirement>\n");
decisionBuilder.append(" <requiredInput
href=\"#i_FullName\"/>\n");
decisionBuilder.append(" </informationRequirement>\n");
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTableDMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTableDMNProvider.java
index 1a126a7e..bee0b8de 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTableDMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTableDMNProvider.java
@@ -23,17 +23,24 @@ import org.drools.benchmarks.common.DMNProvider;
public class DecisionTableDMNProvider implements DMNProvider {
+ private static final String MODEL_NAME = "decision-table";
+
@Override
public String getDMN() {
return getDMN(1);
}
+ @Override
+ public String getModelName() {
+ return MODEL_NAME;
+ }
+
@Override
public String getDMN(int numberOfTableRules) {
final StringBuilder dmnBuilder = new StringBuilder();
dmnBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- dmnBuilder.append("<definitions id=\"decision-table-id\"
name=\"decision-table-name\"\n");
+ dmnBuilder.append(getFormattedDefinitions(MODEL_NAME));
dmnBuilder.append("
namespace=\"https://github.com/kiegroup/kie-dmn\"\n");
dmnBuilder.append("
xmlns=\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n");
dmnBuilder.append("
xmlns:feel=\"http://www.omg.org/spec/FEEL/20140401\"\n");
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTablesDMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTablesDMNProvider.java
index 7b7a5f12..3f6b471c 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTablesDMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/DecisionTablesDMNProvider.java
@@ -23,17 +23,24 @@ import org.drools.benchmarks.common.DMNProvider;
public class DecisionTablesDMNProvider implements DMNProvider {
+ private static final String MODEL_NAME = "decision-tables";
+
@Override
public String getDMN() {
return getDMN(1);
}
+ @Override
+ public String getModelName() {
+ return MODEL_NAME;
+ }
+
@Override
public String getDMN(int numberOfElements) {
final StringBuilder dmnBuilder = new StringBuilder();
dmnBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- dmnBuilder.append("<definitions id=\"decision-table-id\"
name=\"decision-table-name\"\n");
+ dmnBuilder.append(getFormattedDefinitions(MODEL_NAME));
dmnBuilder.append("
namespace=\"https://github.com/kiegroup/kie-dmn\"\n");
dmnBuilder.append("xmlns=\"http://www.omg.org/spec/DMN/20180521/MODEL/\" ");
dmnBuilder.append("xmlns:triso=\"http://www.trisotech.com/2015/triso/modeling\"
");
diff --git
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/TriangularNumHardDMNProvider.java
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/TriangularNumHardDMNProvider.java
index 701d83d9..e3bac410 100644
---
a/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/TriangularNumHardDMNProvider.java
+++
b/drools-benchmarks-parent/drools-benchmarks-common/src/main/java/org/drools/benchmarks/common/providers/dmn/TriangularNumHardDMNProvider.java
@@ -26,17 +26,24 @@ import org.drools.benchmarks.common.DMNProvider;
public class TriangularNumHardDMNProvider implements DMNProvider {
+ private static final String MODEL_NAME = "dmn-triangular";
+
@Override
public String getDMN() {
return getDMN(1);
}
+ @Override
+ public String getModelName() {
+ return MODEL_NAME;
+ }
+
@Override
public String getDMN(int numberOfElements) {
final StringBuilder dmnBuilder = new StringBuilder();
dmnBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- dmnBuilder.append("<definitions id=\"dmn-triangular\"
name=\"dmn-triangular\"\n");
+ dmnBuilder.append(getFormattedDefinitions(MODEL_NAME));
dmnBuilder.append("
namespace=\"https://github.com/kiegroup/kie-dmn\"\n");
dmnBuilder.append("
xmlns=\"http://www.omg.org/spec/DMN/20180521/MODEL/\"\n");
dmnBuilder.append("
xmlns:feel=\"http://www.omg.org/spec/DMN/20180521/FEEL/\">\n");
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/DMNEfestoAbstractBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/DMNEfestoAbstractBenchmark.java
new file mode 100644
index 00000000..1c96322f
--- /dev/null
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/DMNEfestoAbstractBenchmark.java
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.drools.benchmarks.dmn.efesto;
+
+import org.drools.benchmarks.common.AbstractBenchmark;
+import org.drools.io.ClassPathResource;
+import org.kie.api.io.Resource;
+import org.kie.dmn.core.api.DMNFactory;
+import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
+import org.kie.efesto.common.api.identifiers.LocalUri;
+import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
+import org.kie.efesto.common.api.model.EfestoCompilationContext;
+import org.kie.efesto.common.api.model.GeneratedModelResource;
+import org.kie.efesto.common.api.model.GeneratedResources;
+import org.kie.efesto.common.core.storage.ContextStorage;
+import org.kie.efesto.compilationmanager.api.model.EfestoFileResource;
+import org.kie.efesto.compilationmanager.api.model.EfestoFileSetResource;
+import org.kie.efesto.compilationmanager.api.model.EfestoInputStreamResource;
+import org.kie.efesto.compilationmanager.api.model.EfestoStringResource;
+import org.kie.efesto.compilationmanager.api.service.CompilationManager;
+import org.kie.efesto.compilationmanager.api.utils.SPIUtils;
+import org.kie.efesto.runtimemanager.api.model.BaseEfestoInput;
+import org.kie.efesto.runtimemanager.api.model.EfestoInput;
+import org.kie.efesto.runtimemanager.api.model.EfestoLocalRuntimeContext;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
+import org.kie.efesto.runtimemanager.api.service.RuntimeManager;
+import org.kie.efesto.runtimemanager.core.model.EfestoRuntimeContextUtils;
+import org.kie.memorycompiler.KieMemoryCompiler;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public abstract class DMNEfestoAbstractBenchmark extends AbstractBenchmark {
+
+ private static final KieMemoryCompiler.MemoryCompilerClassLoader
memoryCompilerClassLoader =
+ new
KieMemoryCompiler.MemoryCompilerClassLoader(Thread.currentThread().getContextClassLoader());
+ private static final CompilationManager compilationManager =
+ SPIUtils.getCompilationManager(true).orElseThrow(() -> new
RuntimeException("Compilation Manager not " +
+ "available"));
+ private static final RuntimeManager runtimeManager =
+
org.kie.efesto.runtimemanager.api.utils.SPIUtils.getRuntimeManager(true).orElseThrow(()
-> new RuntimeException("Runtime Manager not available"));
+
+ protected Map<String, GeneratedResources> generatedResources;
+ protected ModelLocalUriId modelLocalUriId;
+ protected EfestoLocalRuntimeContext runtimeContext;
+ protected Map<String, Object> inputData;
+
+ protected EfestoLocalRuntimeContext getRuntimeContext(Map<String,
GeneratedResources> generatedResourcesMap, ModelLocalUriId modelLocalUriId) {
+ EfestoLocalRuntimeContext toReturn = (EfestoLocalRuntimeContext)
ContextStorage.getEfestoRuntimeContext(modelLocalUriId);
+ if (toReturn == null) {
+ toReturn =
EfestoRuntimeContextUtils.buildWithParentClassLoader(memoryCompilerClassLoader,
generatedResourcesMap);
+ ContextStorage.putEfestoRuntimeContext(modelLocalUriId, toReturn);
+
+ }
+ return toReturn;
+ }
+
+ protected Collection<EfestoOutput> evaluate(EfestoLocalRuntimeContext
runtimeContext,
+ ModelLocalUriId
modelLocalUriId, Map<String, Object> inputData) {
+ EfestoInput<Map<String, Object>> inputDMN = new
BaseEfestoInput<>(modelLocalUriId, inputData);
+ return runtimeManager.evaluateInput(runtimeContext, inputDMN);
+ }
+
+ protected ModelLocalUriId getModelLocalUriId(Map<String,
GeneratedResources> generatedResources) {
+ List<GeneratedModelResource> generatedModelResources =
generatedResources.get("dmn")
+ .stream()
+ .filter(GeneratedModelResource.class::isInstance)
+ .map(GeneratedModelResource.class::cast)
+ .toList();
+ if (generatedModelResources.size() != 1) {
+ throw new IllegalStateException("Expected exactly one generated
model resource");
+ }
+ return generatedModelResources.get(0).getModelLocalUriId();
+ }
+
+ protected HashMap getInputData() {
+ return new HashMap<>(DMNFactory.newContext().getAll());
+ }
+
+ protected Map<String, GeneratedResources> compileModel(Resource
dmnResource, String model) {
+ try (InputStream inputStream = dmnResource.getInputStream()) {
+ EfestoInputStreamResource toProcessDmn = new
EfestoInputStreamResource(inputStream, model + ".dmn");
+ EfestoCompilationContext dmnCompilationContext =
DmnCompilationContext.buildWithParentClassLoader(memoryCompilerClassLoader);
+ compilationManager.processResource(dmnCompilationContext,
toProcessDmn);
+ return dmnCompilationContext.getGeneratedResourcesMap();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected Map<String, GeneratedResources> compileModel(String dmn, String
model) {
+ ModelLocalUriId dmnModelLocalUriId = new
ModelLocalUriId(LocalUri.Root.append("dmn").append(model));
+ EfestoStringResource toProcessDmn = new EfestoStringResource(dmn,
dmnModelLocalUriId);
+ EfestoCompilationContext dmnCompilationContext =
DmnCompilationContext.buildWithParentClassLoader(memoryCompilerClassLoader);
+ compilationManager.processResource(dmnCompilationContext,
toProcessDmn);
+ return dmnCompilationContext.getGeneratedResourcesMap();
+ }
+
+ protected Map<String, GeneratedResources> compileModel(File dmnFile) {
+ EfestoFileResource toProcessDmn = new EfestoFileResource(dmnFile);
+ EfestoCompilationContext dmnCompilationContext =
DmnCompilationContext.buildWithParentClassLoader(memoryCompilerClassLoader);
+ compilationManager.processResource(dmnCompilationContext,
toProcessDmn);
+ return dmnCompilationContext.getGeneratedResourcesMap();
+ }
+
+ protected Map<String, GeneratedResources> compileModels(Collection<File>
dmnFiles) {
+ ModelLocalUriId dmnModelLocalUriId = new
ModelLocalUriId(LocalUri.Root.append("dmn").append("benchmarks"));
+ EfestoFileSetResource toProcessDmn = new EfestoFileSetResource(new
HashSet<>(dmnFiles), dmnModelLocalUriId);
+ EfestoCompilationContext dmnCompilationContext =
DmnCompilationContext.buildWithParentClassLoader(memoryCompilerClassLoader);
+ compilationManager.processResource(dmnCompilationContext,
toProcessDmn);
+ return dmnCompilationContext.getGeneratedResourcesMap();
+ }
+
+ protected String getDmnContent(String resourceName) {
+ final Resource dmnResource = new ClassPathResource(resourceName);
+ try (InputStream inputStream = dmnResource.getInputStream()) {
+ return new String(inputStream.readAllBytes(),
StandardCharsets.UTF_8);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
\ No newline at end of file
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationBusinessKnowledgeModelBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationBusinessKnowledgeModelBenchmark.java
new file mode 100644
index 00000000..eb2ed8a1
--- /dev/null
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationBusinessKnowledgeModelBenchmark.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.drools.benchmarks.dmn.efesto.compilation;
+
+import org.drools.benchmarks.common.DMNProvider;
+import org.drools.benchmarks.common.ProviderException;
+import
org.drools.benchmarks.common.providers.dmn.BusinessKnowledgeModelDMNProvider;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.common.api.model.GeneratedResources;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.Param;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@Warmup(iterations = 40, time = 2, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 15, time = 2, timeUnit = TimeUnit.SECONDS)
+public class DMNCompilationBusinessKnowledgeModelBenchmark extends
DMNEfestoAbstractBenchmark {
+
+ private String dmn;
+ private String modelName;
+
+ @Param({"3000"})
+ private int numberOfDecisionsWithBKM;
+
+ @Setup
+ @Override
+ public void setup() throws ProviderException {
+ DMNProvider dmnProvider = new BusinessKnowledgeModelDMNProvider();
+ dmn = dmnProvider.getDMN(numberOfDecisionsWithBKM);
+ modelName = dmnProvider.getModelName();
+ }
+
+ @Benchmark
+ public Map<String, GeneratedResources> testGetGeneratedResourcesMap() {
+ return compileModel(dmn, modelName);
+ }
+}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationComplexDMNModelBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationComplexDMNModelBenchmark.java
new file mode 100644
index 00000000..6fc0fd08
--- /dev/null
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationComplexDMNModelBenchmark.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.drools.benchmarks.dmn.efesto.compilation;
+
+import org.drools.benchmarks.common.ProviderException;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.drools.io.ClassPathResource;
+import org.kie.api.io.Resource;
+import org.kie.efesto.common.api.model.GeneratedResources;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.Param;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@Warmup(iterations = 15, time = 2, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 15, time = 2, timeUnit = TimeUnit.SECONDS)
+public class DMNCompilationComplexDMNModelBenchmark extends
DMNEfestoAbstractBenchmark {
+
+ private Resource dmnResource;
+
+ @Param({"dmn/ch11MODIFIED.dmn"})
+ private String resourceName;
+ private String modelName;
+
+ @Setup
+ @Override
+ public void setup() throws ProviderException {
+ dmnResource = new ClassPathResource(resourceName);
+ modelName = "ch11MODIFIED";
+ }
+
+ @Benchmark
+ public Map<String, GeneratedResources> testGetGeneratedResourcesMap() {
+ return compileModel(dmnResource, modelName);
+ }
+}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationContextBenchmark.java
similarity index 55%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationContextBenchmark.java
index a60a1281..f4aec2c8 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationContextBenchmark.java
@@ -17,61 +17,53 @@
* under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.compilation;
-import java.io.IOException;
-import java.io.StringReader;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.ContextDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.drools.io.ReaderResource;
import org.kie.api.io.Resource;
import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.kie.efesto.common.api.model.GeneratedResources;
import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
-@Warmup(iterations = 100)
-@Measurement(iterations = 50)
-public class DMNEvaluateContextBenchmark extends AbstractBenchmark {
+import java.io.StringReader;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
- @Param({"1000"})
- private int numberOfDecisionsWithContext;
+@BenchmarkMode(Mode.AverageTime)
+@Warmup(iterations = 40, time = 2, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 15, time = 2, timeUnit = TimeUnit.SECONDS)
+public class DMNCompilationContextBenchmark extends DMNEfestoAbstractBenchmark
{
+ private String dmn;
private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
+ private String modelName;
- @Setup
- public void setupResource() throws IOException {
- final DMNProvider dmnProvider = new ContextDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisionsWithContext)))
- .setResourceType(ResourceType.DMN)
- .setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"dmn-context");
- }
+ @Param({"3000"})
+ private int numberOfDecisionsWithContext;
- @Setup(Level.Iteration)
+ @Setup
@Override
public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
+ DMNProvider dmnProvider = new ContextDMNProvider();
+ dmn = dmnProvider.getDMN(numberOfDecisionsWithContext);
+ dmnResource = new ReaderResource(new StringReader(dmn))
+ .setResourceType(ResourceType.DMN)
+ .setSourcePath("dmnFile.dmn");
+ modelName = dmnProvider.getModelName();
}
@Benchmark
- public DMNResult evaluateContext() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Map<String, GeneratedResources> testGetGeneratedResourcesMap() {
+ return compileModel(dmnResource, modelName);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationDecisionBenchmark.java
similarity index 56%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationDecisionBenchmark.java
index 0c21b5c4..de46c1e7 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationDecisionBenchmark.java
@@ -17,62 +17,53 @@
* under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.compilation;
-import java.io.IOException;
-import java.io.StringReader;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.DecisionDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.drools.io.ReaderResource;
import org.kie.api.io.Resource;
import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.kie.efesto.common.api.model.GeneratedResources;
import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
-@Warmup(iterations = 300)
-@Measurement(iterations = 50)
-public class DMNEvaluateDecisionBenchmark extends AbstractBenchmark {
+import java.io.StringReader;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
- @Param({"1000"})
- private int numberOfDecisions;
+@BenchmarkMode(Mode.AverageTime)
+@Warmup(iterations = 40, time = 2, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 15, time = 2, timeUnit = TimeUnit.SECONDS)
+public class DMNCompilationDecisionBenchmark extends
DMNEfestoAbstractBenchmark {
+ private String dmn;
private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
+ private String modelName;
+
+ @Param({"3000"})
+ private int numberOfDecisions;
@Setup
- public void setupResource() throws IOException {
+ @Override
+ public void setup() throws ProviderException {
final DMNProvider dmnProvider = new DecisionDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisions)))
+ dmn = dmnProvider.getDMN(numberOfDecisions);
+ dmnResource = new ReaderResource(new StringReader(dmn))
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel =
dmnRuntime.getModel("https://github.com/kiegroup/drools/kie-dmn", "decision");
- }
-
- @Setup(Level.Iteration)
- @Override
- public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
- dmnContext.set("Full Name", "John Doe");
+ modelName = dmnProvider.getModelName();
}
@Benchmark
- public DMNResult evaluateDecision() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Map<String, GeneratedResources> testGetGeneratedResourcesMap() {
+ return compileModel(dmnResource, modelName);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationDecisionTableBenchmark.java
similarity index 54%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationDecisionTableBenchmark.java
index b8455c6d..47e56ade 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationDecisionTableBenchmark.java
@@ -17,65 +17,53 @@
* under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.compilation;
-import java.io.IOException;
-import java.io.StringReader;
-import java.math.BigDecimal;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.DecisionTableDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.drools.io.ReaderResource;
import org.kie.api.io.Resource;
import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.kie.efesto.common.api.model.GeneratedResources;
import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
-@Warmup(iterations = 40000)
-@Measurement(iterations = 5000)
-public class DMNEvaluateDecisionTableBenchmark extends AbstractBenchmark {
+import java.io.StringReader;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
- @Param({"1000"})
- private int numberOfDecisionTableRules;
+@BenchmarkMode(Mode.AverageTime)
+@Warmup(iterations = 40, time = 2, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 15, time = 2, timeUnit = TimeUnit.SECONDS)
+public class DMNCompilationDecisionTableBenchmark extends
DMNEfestoAbstractBenchmark {
+ private String dmn;
private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
+ private String modelName;
+
+ @Param({"3000"})
+ private int numberOfDecisionTableRules;
@Setup
- public void setupResource() throws IOException {
+ @Override
+ public void setup() throws ProviderException {
final DMNProvider dmnProvider = new DecisionTableDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisionTableRules)))
+ dmn = dmnProvider.getDMN(numberOfDecisionTableRules);
+ dmnResource = new ReaderResource(new StringReader(dmn))
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"decision-table-name");
- }
-
- @Setup(Level.Iteration)
- @Override
- public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
- dmnContext.set("Age", BigDecimal.valueOf(18));
- dmnContext.set("RiskCategory", "Medium");
- dmnContext.set("isAffordable", true);
+ modelName = dmnProvider.getModelName();
}
@Benchmark
- public DMNResult evaluateDecisionTable() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Map<String, GeneratedResources> testGetGeneratedResourcesMap() {
+ return compileModel(dmnResource, modelName);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationMultipleBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationMultipleBenchmark.java
new file mode 100644
index 00000000..7e933b91
--- /dev/null
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/compilation/DMNCompilationMultipleBenchmark.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.drools.benchmarks.dmn.efesto.compilation;
+
+import org.drools.benchmarks.common.ProviderException;
+import
org.drools.benchmarks.common.providers.dmn.BusinessKnowledgeModelDMNProvider;
+import org.drools.benchmarks.common.providers.dmn.ContextDMNProvider;
+import org.drools.benchmarks.common.providers.dmn.DecisionDMNProvider;
+import org.drools.benchmarks.common.providers.dmn.DecisionTableDMNProvider;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.drools.io.ClassPathResource;
+import org.drools.io.ReaderResource;
+import org.kie.api.io.Resource;
+import org.kie.api.io.ResourceType;
+import org.kie.dmn.api.core.DMNRuntime;
+import org.kie.dmn.core.internal.utils.DMNRuntimeBuilder;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.io.StringReader;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@State(Scope.Thread)
+@Warmup(iterations = 40, time = 2, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 15, time = 2, timeUnit = TimeUnit.SECONDS)
+@OutputTimeUnit(TimeUnit.MILLISECONDS)
+public class DMNCompilationMultipleBenchmark extends
DMNEfestoAbstractBenchmark {
+
+ private Resource resource1;
+
+ private String dmn1;
+ private String dmn2;
+ private String dmn3;
+ private String dmn4;
+
+ @Setup
+ public void setup() throws ProviderException {
+ resource1 = new ClassPathResource("dmn/ch11MODIFIED.dmn");
+ resource1.setResourceType(ResourceType.DMN);
+
+ dmn1 = new BusinessKnowledgeModelDMNProvider().getDMN(1000);
+ dmn2 = new DecisionTableDMNProvider().getDMN(1000);
+ dmn3 = new DecisionDMNProvider().getDMN(1000);
+ dmn4 = new ContextDMNProvider().getDMN(1000);
+ }
+
+ @Benchmark
+ public DMNRuntime createDMNRuntime() {
+ List<Resource> dmnResources = Arrays.asList(resource1,
+ getDMNResource(dmn1, "bkm.dmn"),
+ getDMNResource(dmn2, "decisionTable.dmn"),
+ getDMNResource(dmn3, "decision.dmn"),
+ getDMNResource(dmn4, "context.dmn"));
+ return DMNRuntimeBuilder.fromDefaults()
+ .buildConfiguration()
+ .fromResources(dmnResources)
+ .getOrElseThrow(e -> new RuntimeException("Error initializing
DMNRuntime", e));
+ }
+
+ private Resource getDMNResource(String dmn, final String sourcePath) {
+ return new ReaderResource(new StringReader(dmn))
+ .setResourceType(ResourceType.DMN)
+ .setSourcePath(sourcePath);
+ }
+}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateContextBenchmark.java
similarity index 53%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateContextBenchmark.java
index a60a1281..d72a3bc3 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateContextBenchmark.java
@@ -6,34 +6,24 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.runtime;
-import java.io.IOException;
-import java.io.StringReader;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.ContextDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
-import org.kie.api.io.Resource;
-import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Measurement;
@@ -41,37 +31,34 @@ import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
+import java.util.Collection;
+
@Warmup(iterations = 100)
@Measurement(iterations = 50)
-public class DMNEvaluateContextBenchmark extends AbstractBenchmark {
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNEvaluateContextBenchmark extends DMNEfestoAbstractBenchmark {
@Param({"1000"})
private int numberOfDecisionsWithContext;
- private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
-
@Setup
- public void setupResource() throws IOException {
+ public void setupResource() {
final DMNProvider dmnProvider = new ContextDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisionsWithContext)))
- .setResourceType(ResourceType.DMN)
- .setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"dmn-context");
+ String dmn = dmnProvider.getDMN(numberOfDecisionsWithContext);
+ String modelName = dmnProvider.getModelName();
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
}
@Setup(Level.Iteration)
@Override
public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
+ inputData = getInputData();
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
}
@Benchmark
- public DMNResult evaluateContext() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Collection<EfestoOutput> evaluateContext() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionBenchmark.java
similarity index 54%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionBenchmark.java
index 0c21b5c4..c13e0173 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionBenchmark.java
@@ -17,23 +17,13 @@
* under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.runtime;
-import java.io.IOException;
-import java.io.StringReader;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.DecisionDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
-import org.kie.api.io.Resource;
-import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Measurement;
@@ -41,38 +31,35 @@ import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
+import java.util.Collection;
+
@Warmup(iterations = 300)
@Measurement(iterations = 50)
-public class DMNEvaluateDecisionBenchmark extends AbstractBenchmark {
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNEvaluateDecisionBenchmark extends DMNEfestoAbstractBenchmark {
@Param({"1000"})
private int numberOfDecisions;
- private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
-
@Setup
- public void setupResource() throws IOException {
+ public void setupResource() {
final DMNProvider dmnProvider = new DecisionDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisions)))
- .setResourceType(ResourceType.DMN)
- .setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel =
dmnRuntime.getModel("https://github.com/kiegroup/drools/kie-dmn", "decision");
+ String dmn = dmnProvider.getDMN(numberOfDecisions);
+ String modelName = dmnProvider.getModelName();
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
}
@Setup(Level.Iteration)
@Override
public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
- dmnContext.set("Full Name", "John Doe");
+ inputData = getInputData();
+ inputData.put("Full Name", "John Doe");
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
}
@Benchmark
- public DMNResult evaluateDecision() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Collection<EfestoOutput> evaluateDecision() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionTableBenchmark.java
similarity index 51%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionTableBenchmark.java
index b8455c6d..020bb8db 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionTableBenchmark.java
@@ -6,35 +6,24 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.runtime;
-import java.io.IOException;
-import java.io.StringReader;
-import java.math.BigDecimal;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.DecisionTableDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
-import org.kie.api.io.Resource;
-import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Measurement;
@@ -42,40 +31,38 @@ import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
+import java.math.BigDecimal;
+import java.util.Collection;
+
@Warmup(iterations = 40000)
@Measurement(iterations = 5000)
-public class DMNEvaluateDecisionTableBenchmark extends AbstractBenchmark {
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNEvaluateDecisionTableBenchmark extends
DMNEfestoAbstractBenchmark {
@Param({"1000"})
private int numberOfDecisionTableRules;
- private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
-
@Setup
- public void setupResource() throws IOException {
+ public void setupResource() {
final DMNProvider dmnProvider = new DecisionTableDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisionTableRules)))
- .setResourceType(ResourceType.DMN)
- .setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"decision-table-name");
+ String dmn = dmnProvider.getDMN(numberOfDecisionTableRules);
+ String modelName = dmnProvider.getModelName();
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
}
@Setup(Level.Iteration)
@Override
public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
- dmnContext.set("Age", BigDecimal.valueOf(18));
- dmnContext.set("RiskCategory", "Medium");
- dmnContext.set("isAffordable", true);
+ inputData = getInputData();
+ inputData.put("Age", BigDecimal.valueOf(18));
+ inputData.put("RiskCategory", "Medium");
+ inputData.put("isAffordable", true);
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
}
@Benchmark
- public DMNResult evaluateDecisionTable() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Collection<EfestoOutput> evaluateDecisionTable() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
similarity index 57%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
index c8604caf..50bb590c 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
@@ -17,48 +17,33 @@
* under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.runtime;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Scanner;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.DecisionTablesDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
-import org.kie.api.io.Resource;
-import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
+import java.util.Collection;
+import java.util.Scanner;
@Warmup(iterations = 200)
@Measurement(iterations = 50)
-public class DMNEvaluateDecisionTablesSparseBenchmark extends
AbstractBenchmark {
-
- private static final Logger LOG =
LoggerFactory.getLogger(DMNEvaluateDecisionTablesSparseBenchmark.class);
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNEvaluateDecisionTablesSparseBenchmark extends
DMNEfestoAbstractBenchmark {
@Param({"500"})
private int numberOfElements;
@Param({"1", "2", "50"})
private int sparseness;
-
- private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
+
public static void main(String[] args) throws Exception {
try (Scanner scanner = new Scanner(System.in)) {
@@ -76,35 +61,30 @@ public class DMNEvaluateDecisionTablesSparseBenchmark
extends AbstractBenchmark
}
@Setup
- public void setupResource() throws IOException {
+ public void setupResource() {
final DMNProvider dmnProvider = new DecisionTablesDMNProvider();
- String dmnContent = dmnProvider.getDMN(numberOfElements);
- LOG.debug("{}", dmnContent);
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new StringReader(dmnContent))
- .setResourceType(ResourceType.DMN)
- .setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"decision-table-name");
+ String dmn = dmnProvider.getDMN(numberOfElements);
+ String modelName = dmnProvider.getModelName();
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
}
@Setup(Level.Iteration)
@Override
public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
+ inputData = getInputData();
for (int i = 0; i < numberOfElements; i++) {
if (i % sparseness == 0) {
- dmnContext.set("leftInput_" + i, "a");
- dmnContext.set("rightInput_" + i, "x");
+ inputData.put("leftInput_" + i, "a");
+ inputData.put("rightInput_" + i, "x");
}
}
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
}
@Benchmark
- public DMNResult evaluateDecision() {
- DMNResult evaluateAll = dmnRuntime.evaluateAll(dmnModel, dmnContext);
- LOG.debug("{}", evaluateAll);
- return evaluateAll;
+ public Collection<EfestoOutput> evaluateDecision() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
similarity index 53%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
index e4aaa9e0..6308bf0a 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
@@ -6,34 +6,24 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.runtime;
-import java.io.IOException;
-import java.io.StringReader;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.DecisionDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
-import org.kie.api.io.Resource;
-import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Measurement;
@@ -41,38 +31,36 @@ import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
+import java.util.Collection;
+
@Warmup(iterations = 5000)
@Measurement(iterations = 2000)
-public class DMNEvaluateFewLiteralDecisionBenchmark extends AbstractBenchmark {
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNEvaluateFewLiteralDecisionBenchmark extends
DMNEfestoAbstractBenchmark {
@Param({"20", "50", "100"})
private int numberOfDecisions;
- private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
@Setup
- public void setupResource() throws IOException {
+ public void setupResource() {
final DMNProvider dmnProvider = new DecisionDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisions)))
- .setResourceType(ResourceType.DMN)
- .setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel =
dmnRuntime.getModel("https://github.com/kiegroup/drools/kie-dmn", "decision");
+ String dmn = dmnProvider.getDMN(numberOfDecisions);
+ String modelName = dmnProvider.getModelName();
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
}
@Setup(Level.Iteration)
@Override
public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
- dmnContext.set("Full Name", "John Doe");
+ inputData = getInputData();
+ inputData.put("Full Name", "John Doe");
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
}
@Benchmark
- public DMNResult evaluateDecision() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Collection<EfestoOutput> evaluateDecision() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluatePojoInputBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluatePojoInputBenchmark.java
new file mode 100644
index 00000000..53bd3caa
--- /dev/null
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluatePojoInputBenchmark.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.drools.benchmarks.dmn.efesto.runtime;
+
+import org.drools.benchmarks.common.ProviderException;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.drools.benchmarks.dmn.runtime.model.Person;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Param;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.util.Collection;
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Warmup(iterations = 40000)
+@Measurement(iterations = 10000)
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNEvaluatePojoInputBenchmark extends DMNEfestoAbstractBenchmark {
+
+ @Param({"dmn/pojo-input.dmn"})
+ private String resourceName;
+
+
+ @State(Scope.Benchmark)
+ public static class IterationCounter {
+ public static AtomicInteger value = new AtomicInteger(0);
+ }
+
+ @Setup
+ public void setupResource() {
+ String dmn = getDmnContent(resourceName);
+ String modelName = "20180731-pr1997";
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
+ }
+
+ @Setup(Level.Iteration)
+ @Override
+ public void setup() throws ProviderException {
+ inputData = getInputData();
+ inputData.put("a Person", new Person("John", "Doe",
IterationCounter.value.incrementAndGet()));
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
+ }
+
+ @Benchmark
+ public Collection<EfestoOutput> evaluateModel() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
+ }
+}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateTriangularNumHardBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateTriangularNumHardBenchmark.java
similarity index 55%
copy from
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateTriangularNumHardBenchmark.java
copy to
drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateTriangularNumHardBenchmark.java
index 0cedce10..cabc8bf3 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateTriangularNumHardBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNEvaluateTriangularNumHardBenchmark.java
@@ -17,23 +17,13 @@
* under the License.
*/
-package org.drools.benchmarks.dmn.runtime;
+package org.drools.benchmarks.dmn.efesto.runtime;
-import java.io.IOException;
-import java.io.StringReader;
-
-import org.drools.benchmarks.common.AbstractBenchmark;
import org.drools.benchmarks.common.DMNProvider;
import org.drools.benchmarks.common.ProviderException;
import org.drools.benchmarks.common.providers.dmn.TriangularNumHardDMNProvider;
-import org.drools.benchmarks.dmn.util.DMNUtil;
-import org.kie.api.KieServices;
-import org.kie.api.io.Resource;
-import org.kie.api.io.ResourceType;
-import org.kie.dmn.api.core.DMNContext;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.core.DMNResult;
-import org.kie.dmn.api.core.DMNRuntime;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Measurement;
@@ -41,37 +31,34 @@ import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.Warmup;
+import java.util.Collection;
+
@Warmup(iterations = 50000)
@Measurement(iterations = 10000)
-public class DMNEvaluateTriangularNumHardBenchmark extends AbstractBenchmark {
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNEvaluateTriangularNumHardBenchmark extends
DMNEfestoAbstractBenchmark {
@Param({"20", "50"})
private int numberOfDecisionsWithContext;
- private Resource dmnResource;
- private DMNRuntime dmnRuntime;
- private DMNModel dmnModel;
- private DMNContext dmnContext;
-
@Setup
- public void setupResource() throws IOException {
+ public void setupResource() {
final DMNProvider dmnProvider = new TriangularNumHardDMNProvider();
- dmnResource = KieServices.get().getResources()
- .newReaderResource(new
StringReader(dmnProvider.getDMN(numberOfDecisionsWithContext)))
- .setResourceType(ResourceType.DMN)
- .setSourcePath("dmnFile.dmn");
- dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"dmn-triangular");
+ String dmn = dmnProvider.getDMN(numberOfDecisionsWithContext);
+ String modelName = dmnProvider.getModelName();
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
}
@Setup(Level.Iteration)
@Override
public void setup() throws ProviderException {
- dmnContext = dmnRuntime.newContext();
+ inputData = getInputData();
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
}
@Benchmark
- public DMNResult evaluateContext() {
- return dmnRuntime.evaluateAll(dmnModel, dmnContext);
+ public Collection<EfestoOutput> evaluateContext() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
}
}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNRuntimeBKModelBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNRuntimeBKModelBenchmark.java
new file mode 100644
index 00000000..1bcce639
--- /dev/null
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/efesto/runtime/DMNRuntimeBKModelBenchmark.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.drools.benchmarks.dmn.efesto.runtime;
+
+import org.drools.benchmarks.common.DMNProvider;
+import org.drools.benchmarks.common.ProviderException;
+import
org.drools.benchmarks.common.providers.dmn.BusinessKnowledgeModelDMNProvider;
+import org.drools.benchmarks.dmn.efesto.DMNEfestoAbstractBenchmark;
+import org.kie.efesto.runtimemanager.api.model.EfestoOutput;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Param;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.util.Collection;
+
+@Warmup(iterations = 100)
+@Measurement(iterations = 50)
+@Fork(value = 0)
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class DMNRuntimeBKModelBenchmark extends DMNEfestoAbstractBenchmark {
+
+ @Param({"1000"})
+ private int numberOfDecisionsWithBKM;
+
+ @Setup
+ public void setupResource() {
+ final DMNProvider dmnProvider = new
BusinessKnowledgeModelDMNProvider();
+ String dmn = dmnProvider.getDMN(numberOfDecisionsWithBKM);
+ String modelName = dmnProvider.getModelName();
+ generatedResources = compileModel(dmn, modelName);
+ modelLocalUriId = getModelLocalUriId(generatedResources);
+ }
+
+ @Setup(Level.Iteration)
+ @Override
+ public void setup() throws ProviderException {
+ inputData = getInputData();
+ runtimeContext = getRuntimeContext(generatedResources,
modelLocalUriId);
+ }
+
+ @Benchmark
+ public Collection<EfestoOutput> evaluateBusinessKnowledgeModel() {
+ return evaluate(runtimeContext, modelLocalUriId, inputData);
+ }
+}
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
index a60a1281..3bbd5fed 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateContextBenchmark.java
@@ -61,7 +61,7 @@ public class DMNEvaluateContextBenchmark extends
AbstractBenchmark {
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"dmn-context");
+ dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
dmnProvider.getModelName());
}
@Setup(Level.Iteration)
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
index 0c21b5c4..51966201 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionBenchmark.java
@@ -61,7 +61,7 @@ public class DMNEvaluateDecisionBenchmark extends
AbstractBenchmark {
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel =
dmnRuntime.getModel("https://github.com/kiegroup/drools/kie-dmn", "decision");
+ dmnModel =
dmnRuntime.getModel("https://github.com/kiegroup/drools/kie-dmn",
dmnProvider.getModelName());
}
@Setup(Level.Iteration)
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
index b8455c6d..cf18aef0 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTableBenchmark.java
@@ -62,7 +62,7 @@ public class DMNEvaluateDecisionTableBenchmark extends
AbstractBenchmark {
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"decision-table-name");
+ dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
dmnProvider.getModelName());
}
@Setup(Level.Iteration)
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
index c8604caf..07181109 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateDecisionTablesSparseBenchmark.java
@@ -85,7 +85,7 @@ public class DMNEvaluateDecisionTablesSparseBenchmark extends
AbstractBenchmark
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"decision-table-name");
+ dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
dmnProvider.getModelName());
}
@Setup(Level.Iteration)
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
index e4aaa9e0..b1519764 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateFewLiteralDecisionBenchmark.java
@@ -61,7 +61,7 @@ public class DMNEvaluateFewLiteralDecisionBenchmark extends
AbstractBenchmark {
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel =
dmnRuntime.getModel("https://github.com/kiegroup/drools/kie-dmn", "decision");
+ dmnModel =
dmnRuntime.getModel("https://github.com/kiegroup/drools/kie-dmn",
dmnProvider.getModelName());
}
@Setup(Level.Iteration)
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateTriangularNumHardBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateTriangularNumHardBenchmark.java
index 0cedce10..ba804e73 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateTriangularNumHardBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/runtime/DMNEvaluateTriangularNumHardBenchmark.java
@@ -61,7 +61,7 @@ public class DMNEvaluateTriangularNumHardBenchmark extends
AbstractBenchmark {
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"dmn-triangular");
+ dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
dmnProvider.getModelName());
}
@Setup(Level.Iteration)
diff --git
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/validation/DTNoGapsNoOverlapsBenchmark.java
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/validation/DTNoGapsNoOverlapsBenchmark.java
index 897b9676..e554084f 100644
---
a/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/validation/DTNoGapsNoOverlapsBenchmark.java
+++
b/drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/dmn/validation/DTNoGapsNoOverlapsBenchmark.java
@@ -93,7 +93,7 @@ public class DTNoGapsNoOverlapsBenchmark extends
AbstractBenchmark {
.setResourceType(ResourceType.DMN)
.setSourcePath("dmnFile.dmn");
dmnRuntime = DMNUtil.getDMNRuntimeWithResources(false, dmnResource);
- dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
"dt-nogapsnooverlaps");
+ dmnModel = dmnRuntime.getModel("https://github.com/kiegroup/kie-dmn",
dmnProvider.getModelName());
}
@Setup(Level.Iteration)
diff --git a/drools-benchmarks-parent/pom.xml b/drools-benchmarks-parent/pom.xml
index b58e8036..b48b6073 100644
--- a/drools-benchmarks-parent/pom.xml
+++ b/drools-benchmarks-parent/pom.xml
@@ -64,6 +64,17 @@
<artifactId>kie-pmml-dependencies</artifactId>
<version>${version.org.drools}</version>
</dependency>
+ <!-- TO BE MOVED INSIDE kie-dmn-bom -->
+ <dependency>
+ <groupId>org.kie</groupId>
+ <artifactId>kie-dmn-efesto-compilation</artifactId>
+ <version>${version.org.drools}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.kie</groupId>
+ <artifactId>kie-dmn-efesto-runtime</artifactId>
+ <version>${version.org.drools}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -112,6 +123,14 @@
<groupId>org.kie</groupId>
<artifactId>kie-dmn-feel</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.kie</groupId>
+ <artifactId>kie-dmn-efesto-compilation</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.kie</groupId>
+ <artifactId>kie-dmn-efesto-runtime</artifactId>
+ </dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-pmml-dependencies</artifactId>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]