DMNRuntime runtime = ((KieSession) context.getKieRuntime()).getKieRuntime(DMNRuntime.class); List<FEELProfile> profiles = (List)((DMNRuntimeImpl) runtime).getProfiles(); FEEL feel = FEEL.newInstance(runtime.getRootClassLoader(), profiles);
String decision = resolveVariable(ruleSetNode.getDecision()); DMNRuntime runtime = ((KieSession) kruntime).getKieRuntime(DMNRuntime.class); DMNModel dmnModel = runtime.getModel(namespace, model); if (dmnModel == null) {
@Override public <T> T getKieRuntime(Class<T> cls) { return kieSession.getKieRuntime( cls ); }
@Override public <T> T getKieRuntime(Class<T> cls) { return kieSession.getKieRuntime( cls ); }
@Override public <T> T getKieRuntime(Class<T> cls) { return getKieSession().getKieRuntime( cls ); }
@Override public <T> T getKieRuntime(Class<T> cls) { return getKieSession().getKieRuntime( cls ); }
public DMNRuntime getDMNRuntime(Path path) { KieContainer kieContainer = getKieContainer(path); return kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); }
@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); }
@Before public void init() { registryContext = new ContextImpl(); dmnRuntime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); }
public static DMNRuntime typeSafeGetKieRuntime(final KieContainer kieContainer) { DMNRuntime dmnRuntime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); ((DMNRuntimeImpl) dmnRuntime).setOption(new RuntimeTypeCheckOption(true)); return dmnRuntime; }
@Before public void init() { registryContext = new ContextImpl(); dmnRuntime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); }
@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); }
@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 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 testFromClonedKiePackage() { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); KieContainer kieContainer = ks.newKieContainer(v100); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); kieContainer.dispose(); kieContainer = ks.newKieContainer(v100); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); }
@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 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"))); }
private DMNRuntime getRuntimeWithTypeCheckOption(final String typeCheckKModuleOption, final Resource... resources) { final KieFileSystem kfs = ks.newKieFileSystem(); final KieModuleModel kmm = ks.newKieModuleModel(); kmm.setConfigurationProperty(RuntimeTypeCheckOption.PROPERTY_NAME, typeCheckKModuleOption); kfs.writeKModuleXML(kmm.toXML()); for (final Resource r : resources) { kfs.write(r); } final KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll(); final Results results = kieBuilder.getResults(); assertThat(results.getMessages().toString(), results.hasMessages(org.kie.api.builder.Message.Level.ERROR), is(false)); final KieContainer kieContainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()); return kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); }
@Test public void testStrictModeProp() { final KieServices services = KieServices.Factory.get(); final KieFileSystem fileSystem = services.newKieFileSystem(); final KieModuleModel moduleModel = services.newKieModuleModel(); moduleModel.setConfigurationProperty("org.kie.dmn.strictConformance", "true"); fileSystem.writeKModuleXML(moduleModel.toXML()); fileSystem.write(services.getResources().newClassPathResource("strictMode.dmn", this.getClass())); services.newKieBuilder(fileSystem).buildAll(); final KieContainer container = services.newKieContainer(services.getRepository().getDefaultReleaseId()); final DMNRuntime runtime = container.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel model = runtime.getModel("http://www.trisotech.com/dmn/definitions/_ecf4ea54-2abc-4e2f-a101-4fe14e356a46", "strictMode" ); final DMNContext ctx = runtime.newContext(); ctx.set( "timestring", "2016-12-20T14:30:22z" ); final DMNResult result = runtime.evaluateAll(model, ctx); assertNull( result.getDecisionResultByName("time").getResult() ); }