use of org.kie.dmn.api.core.DMNContext in project drools by kiegroup.
the class DMNDecisionTableRuntimeTest method testDTUsingEqualsUnaryTestWithVariable2.
@Test
public void testDTUsingEqualsUnaryTestWithVariable2() {
DMNRuntime runtime = DMNRuntimeUtil.createRuntime("DT_using_variables.dmn", this.getClass());
DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/definitions/_ed1ec15b-40aa-424d-b1d0-4936df80b135", "DT Using variables");
assertThat(dmnModel, notNullValue());
assertThat(dmnModel.hasErrors(), is(false));
Map<String, Object> complex = new HashMap<>();
complex.put("aBoolean", true);
complex.put("aNumber", 10);
complex.put("aString", "bar");
DMNContext context = DMNFactory.newContext();
context.set("Complex", complex);
context.set("Another boolean", false);
context.set("Another String", "foo");
context.set("Another number", 20);
DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
DMNContext result = dmnResult.getContext();
assertThat(result.get("Compare Boolean"), is("Not same boolean"));
assertThat(result.get("Compare Number"), is("Bigger"));
assertThat(result.get("Compare String"), is("Different String"));
}
use of org.kie.dmn.api.core.DMNContext in project drools by kiegroup.
the class DMNDecisionTableRuntimeTest method checkDecisionTableWithCalculatedResult.
private void checkDecisionTableWithCalculatedResult(final DMNRuntime runtime) {
final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/definitions/_77ae284e-ce52-4579-a50f-f3cc584d7f4b", "Calculation1");
assertThat(dmnModel, notNullValue());
final DMNContext context = DMNFactory.newContext();
context.set("MonthlyDeptPmt", BigDecimal.valueOf(200));
context.set("MonthlyPmt", BigDecimal.valueOf(100));
context.set("MonthlyIncome", BigDecimal.valueOf(600));
final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
assertThat(dmnResult.hasErrors(), is(false));
final DMNContext result = dmnResult.getContext();
assertThat(((BigDecimal) result.get("Logique de décision 1")).setScale(1, RoundingMode.CEILING), is(BigDecimal.valueOf(0.5)));
}
use of org.kie.dmn.api.core.DMNContext in project drools by kiegroup.
the class DMNDecisionTableRuntimeTest method testDecisionTableOutputDMNTypeCollection_NOtypecheck.
@Test
public void testDecisionTableOutputDMNTypeCollection_NOtypecheck() {
// DROOLS-2359
// do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime.
KieServices ks = KieServices.Factory.get();
final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("DecisionTableOutputDMNTypeCollection.dmn", this.getClass()));
DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class);
DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/dmn/definitions/_ae5d2033-c6d0-411f-a394-da33a70e5638", "Drawing 1");
assertThat(dmnModel, notNullValue());
assertThat(DMNRuntimeUtil.formatMessages(dmnModel.getMessages()), dmnModel.hasErrors(), is(false));
DMNContext context = DMNFactory.newContext();
context.set("selector", "asd");
DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
assertThat(DMNRuntimeUtil.formatMessages(dmnResult.getMessages()), dmnResult.hasErrors(), is(false));
DMNContext result = dmnResult.getContext();
assertThat(result.get("a decision"), is(Arrays.asList("abc", "xyz")));
}
use of org.kie.dmn.api.core.DMNContext in project drools by kiegroup.
the class DMNDecisionTableRuntimeTest method testDecisionTableMultipleResults.
@Test
public void testDecisionTableMultipleResults() {
final DMNRuntime runtime = DMNRuntimeUtil.createRuntime("car_damage_responsibility.dmn", this.getClass());
final DMNRuntimeEventListener listener = Mockito.mock(DMNRuntimeEventListener.class);
runtime.addListener(listener);
final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/definitions/_820611e9-c21c-47cd-8e52-5cba2be9f9cc", "Car Damage Responsibility");
assertThat(dmnModel, notNullValue());
final DMNContext context = DMNFactory.newContext();
context.set("Membership Level", "Silver");
context.set("Damage Types", "Body");
context.set("Responsible", "Driver");
final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
assertThat(dmnResult.hasErrors(), is(false));
final DMNContext result = dmnResult.getContext();
assertThat((Map<String, Object>) result.get("Car Damage Responsibility"), hasEntry(is("EU Rent"), is(BigDecimal.valueOf(40))));
assertThat((Map<String, Object>) result.get("Car Damage Responsibility"), hasEntry(is("Renter"), is(BigDecimal.valueOf(60))));
assertThat(result.get("Payment method"), is("Check"));
final ArgumentCaptor<AfterEvaluateDecisionTableEvent> captor = ArgumentCaptor.forClass(AfterEvaluateDecisionTableEvent.class);
verify(listener, times(2)).afterEvaluateDecisionTable(captor.capture());
final AfterEvaluateDecisionTableEvent first = captor.getAllValues().get(0);
assertThat(first.getMatches(), is(Collections.singletonList(5)));
assertThat(first.getSelected(), is(Collections.singletonList(5)));
final AfterEvaluateDecisionTableEvent second = captor.getAllValues().get(1);
assertThat(second.getMatches(), is(Collections.singletonList(3)));
assertThat(second.getSelected(), is(Collections.singletonList(3)));
}
use of org.kie.dmn.api.core.DMNContext in project drools by kiegroup.
the class DMNDecisionTableRuntimeTest method testDTInputExpressionLocalXmlnsInference.
@Test
public void testDTInputExpressionLocalXmlnsInference() {
DMNRuntime runtime = DMNRuntimeUtil.createRuntime("drools1502-InputExpression.dmn", this.getClass());
DMNModel dmnModel = runtime.getModel("https://www.drools.org/kie-dmn/definitions", "definitions");
assertThat(dmnModel, notNullValue());
assertThat(DMNRuntimeUtil.formatMessages(dmnModel.getMessages()), dmnModel.hasErrors(), is(false));
DMNContext context = runtime.newContext();
context.set("MyInput", "a");
DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
assertThat(DMNRuntimeUtil.formatMessages(dmnResult.getMessages()), dmnResult.hasErrors(), is(false));
DMNContext result = dmnResult.getContext();
assertThat(result.get("MyDecision"), is("Decision taken"));
}
Aggregations