@Test public void testAskTypeCheckWithGlobalEnvVariable() { System.setProperty(RuntimeTypeCheckOption.PROPERTY_NAME, "true"); // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("forTypeCheckTest.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); assertPerformTypeCheck(runtime); System.clearProperty(RuntimeTypeCheckOption.PROPERTY_NAME); }
public static DMNRuntime createRuntime(final Class testClass) { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test-"+UUID.randomUUID(), "1.0")); final DMNRuntime runtime = typeSafeGetKieRuntime(kieContainer); Assert.assertNotNull(runtime); return runtime; }
public static DMNRuntime createRuntimeWithAdditionalResources(final String resourceName, final Class testClass, final String... additionalResources) { final KieServices ks = KieServices.Factory.get(); Resource mainResource = ks.getResources().newClassPathResource(resourceName, testClass); List<Resource> totalResources = new ArrayList<>(); totalResources.add(mainResource); for ( String add : additionalResources ) { totalResources.add( ks.getResources().newClassPathResource(add, testClass) ); } final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test-"+UUID.randomUUID(), "1.0"), totalResources.toArray(new Resource[] {})); final DMNRuntime runtime = typeSafeGetKieRuntime(kieContainer); Assert.assertNotNull(runtime); return runtime; }
@BeforeClass public static void staticInit() { ks = KieServices.Factory.get(); releaseId = ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"); resource = ks.getResources().newClassPathResource("org/kie/dmn/core/typecheck_in_DT.dmn", GetDMNModelCommandTest.class); kieContainer = KieHelper.getKieContainer(releaseId, resource); }
@BeforeClass public static void staticInit() { ks = KieServices.Factory.get(); releaseId = ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"); resource = ks.getResources().newClassPathResource("org/kie/dmn/core/typecheck_in_DT.dmn", GetDMNModelCommandTest.class); kieContainer = KieHelper.getKieContainer(releaseId, resource); }
@Test public void testDefaultNoTypeCheck() { // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("forTypeCheckTest.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); assertNoTypeCheck(runtime); }
public static DMNRuntime createRuntime(final String resourceName, final Class testClass) { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test-"+UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource(resourceName, testClass)); final DMNRuntime runtime = typeSafeGetKieRuntime(kieContainer); Assert.assertNotNull(runtime); return runtime; }
@Test public void testDefaultNoTypeCheckButOverrideRuntime() { // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("forTypeCheckTest.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); ((DMNRuntimeImpl) runtime).setOption(new RuntimeTypeCheckOption(true)); assertPerformTypeCheck(runtime); }
@Test public void testMisleadingNPEbyAPIusage() { // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("simple-item-def.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel dmnModel = runtime.getModel("<wrong>", "<wrong>"); // please notice an end-user of the API might not having checked the result of the previous call is not a null. final DMNContext emptyContext = DMNFactory.newContext(); try { final DMNResult dmnResult = runtime.evaluateAll(dmnModel, emptyContext); LOG.debug("{}", dmnResult); fail(""); } catch (final Exception e) { assertTrue(e.getMessage().contains("'model'")); /* java.lang.NullPointerException: Kie DMN API parameter 'model' cannot be null. at java.util.Objects.requireNonNull(Objects.java:290) at org.kie.dmn.core.impl.DMNRuntimeImpl.evaluateAll(DMNRuntimeImpl.java:123) at org.kie.dmn.core.DMNRuntimeTypeCheckTest.testMisleadingNPEbyAPIusage(DMNRuntimeTypeCheckTest.java:199) */ } } }
@Test public void testDROOLS2201() { // DROOLS-2201 // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("typecheck_in_context_result.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/definitions/_42bf043d-df86-48bd-9045-dfc08aa8ba0d", "typecheck in context result"); assertThat(dmnModel, notNullValue()); assertThat(DMNRuntimeUtil.formatMessages(dmnModel.getMessages()), dmnModel.hasErrors(), is(false)); final DMNContext emptyContext = DMNFactory.newContext(); final DMNResult dmnResult = runtime.evaluateAll(dmnModel, emptyContext); assertThat(DMNRuntimeUtil.formatMessages(dmnResult.getMessages()), dmnResult.hasErrors(), is(false)); final DMNContext resultContext = dmnResult.getContext(); assertThat(((Map<String, Object>) resultContext.get("an hardcoded person")).keySet(), contains("name", "age")); assertThat(((Map<String, Object>) resultContext.get("an hardcoded person with no name")).keySet(), contains("age")); }
@Test public void testDecisionTableOutputDMNTypeCollectionWithLOV_NOtypecheck() { // DROOLS-2359 // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("DecisionTableOutputDMNTypeCollectionWithLOV.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/dmn/definitions/_ae5d2033-c6d0-411f-a394-da33a70e5638", "List of Words in DT"); assertThat(dmnModel, notNullValue()); assertThat(DMNRuntimeUtil.formatMessages(dmnModel.getMessages()), dmnModel.hasErrors(), is(false)); final DMNContext context = DMNFactory.newContext(); context.set("selector", "asd"); final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context); assertThat(DMNRuntimeUtil.formatMessages(dmnResult.getMessages()), dmnResult.hasErrors(), is(false)); final DMNContext result = dmnResult.getContext(); assertThat(result.get("a decision"), is(Arrays.asList("abc", "a"))); }
@Test public void testDecisionTableOutputDMNTypeCollection_NOtypecheck() { // DROOLS-2359 // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final 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())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); final 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)); final DMNContext context = DMNFactory.newContext(); context.set("selector", "asd"); final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context); assertThat(DMNRuntimeUtil.formatMessages(dmnResult.getMessages()), dmnResult.hasErrors(), is(false)); final DMNContext result = dmnResult.getContext(); assertThat(result.get("a decision"), is(Arrays.asList("abc", "xyz"))); }
@Test public void testDROOLS2201b() { // DROOLS-2201 // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("typecheck_in_DT.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/definitions/_99ccd4df-41ac-43c3-a563-d58f43149829", "typecheck in DT"); assertThat(dmnModel, notNullValue()); assertThat(DMNRuntimeUtil.formatMessages(dmnModel.getMessages()), dmnModel.hasErrors(), is(false)); final DMNContext context = DMNFactory.newContext(); context.set("a number", 0); final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context); assertThat(DMNRuntimeUtil.formatMessages(dmnResult.getMessages()), dmnResult.hasErrors(), is(false)); final DMNContext resultContext = dmnResult.getContext(); assertThat(((BigDecimal) resultContext.get("an odd decision")).intValue(), is(47)); }
@Test public void testRemoveAndAddSomething() { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test", "1.0.0"), wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()))); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final DMNContext dmnContext2 = runtime.newContext(); dmnContext2.set("Full Name", "John Doe"); final DMNResult evaluateAll2 = runtime.evaluateAll(runtime.getModels().get(0), dmnContext2); assertThat(evaluateAll2.getDecisionResultByName("Greeting Message").getResult(), is("Salve John Doe")); }
@Test public void testReplace() { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test", "1.0.0"), wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); final Resource newClassPathResource = ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()); newClassPathResource.setTargetPath("0001-input-data-string.dmn"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, newClassPathResource)); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final DMNContext dmnContext2 = runtime.newContext(); dmnContext2.set("Full Name", "John Doe"); final DMNResult evaluateAll2 = runtime.evaluateAll(runtime.getModels().get(0), dmnContext2); assertThat(evaluateAll2.getDecisionResultByName("Greeting Message").getResult(), is("Salve John Doe")); }
KieHelper.getKieContainer(releaseId, ks.getResources().newClassPathResource("org/kie/dmn/core/typecheck_in_DT.dmn", this.getClass()));
KieContainer kieContainer = KieHelper.getKieContainer( v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass())));