public PMML4Result run(PMMLRequestData requestData, PMML4Data pmml4Data) { return run(requestData, Optional.of(pmml4Data)); }
@Test public void testDefaultChildMissingValueStrategy() { KieBase kieBase = PMMLKieBaseUtil.createKieBaseWithPMML(TREE_DEFAULT_CHILD_MISSING_STRATEGY); PMMLExecutor executor = new PMMLExecutor(kieBase); PMMLRequestData request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 30.0); PMML4Result resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); Assertions.assertThat(resultHolder.getResultValue("Fld3", "value", String.class).get()).isEqualTo("tgtY"); request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 100.0); resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); Assertions.assertThat(resultHolder.getResultValue("Fld3", "value", String.class).get()).isEqualTo("tgtZ"); }
@Test public void testLastPredictionMissingValueStrategy() { KieBase kieBase = PMMLKieBaseUtil.createKieBaseWithPMML(TREE_LAST_CHILD_MISSING_STRATEGY); PMMLExecutor executor = new PMMLExecutor(kieBase); PMMLRequestData request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 30.0); PMML4Result resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); String targetValue = resultHolder.getResultValue("Fld3", "value", String.class).orElse(null); Assertions.assertThat(targetValue).isEqualTo("tgtY"); executor.setRunWithLogging(true); request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 100.0); resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); targetValue = resultHolder.getResultValue("Fld3", "value", String.class).orElse(null); Assertions.assertThat(targetValue).isEqualTo("tgtA"); }
protected Class<? extends RuleUnit> startingRuleUnit(String startingRule, String modelId, String...knownPackageNames) { List<String> possiblePackages = calculatePossiblePackageNames(modelId, knownPackageNames); InternalKnowledgeBase internalKnowledgeBase = (InternalKnowledgeBase) kieBase; Map<String,InternalKnowledgePackage> pkgs = internalKnowledgeBase.getPackagesMap(); RuleImpl ruleImpl; for (String pkgName: possiblePackages) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = internalKnowledgeBase.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; } }
private PMML4Result run(PMMLRequestData requestData, Optional<PMML4Data> data) { KieRuntimeLogger logger = null; RuleUnitExecutor ruleUnitExecutor = RuleUnitExecutor.create().bind(kieBase); if (runWithLogging) { if (loggingFileName != null) { logger = ((InternalRuleUnitExecutor)ruleUnitExecutor).addFileLogger(loggingFileName); } else { logger = ((InternalRuleUnitExecutor)ruleUnitExecutor).addConsoleLogger(); } } DataSource<PMMLRequestData> requestDataSource = ruleUnitExecutor.newDataSource("request");; DataSource<PMML4Result> resultDataSource = ruleUnitExecutor.newDataSource("results"); DataSource<PMML4Data> pmmlDataSource = ruleUnitExecutor.newDataSource("pmmlData"); requestDataSource.insert(requestData); PMML4Result resultHandler = new PMML4Result(); resultDataSource.insert(resultHandler); if (data.isPresent()) { pmmlDataSource.insert(data.get()); } try { ruleUnitExecutor.run(startingRuleUnit("RuleUnitIndicator", requestData.getModelName(), "org.drools.scorecards.example")); } finally { if (logger != null) { logger.close(); } } return resultHandler; }
@Test public void testWeightedConfidenceMissingValueStrategy() { KieBase kieBase = PMMLKieBaseUtil.createKieBaseWithPMML(TREE_WEIGHTED_CONFIDENCE_MISSING_STRATEGY); PMMLExecutor executor = new PMMLExecutor(kieBase); PMMLRequestData request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 30.0); PMML4Result resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); Assertions.assertThat(resultHolder.getResultValue("Fld3", "value", String.class).get()).isEqualTo("tgtY"); request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 50.0); resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); Assertions.assertThat(resultHolder.getResultValue("Fld3", "value", String.class).get()).isEqualTo("tgtX"); }
@Test public void testReturnNullNoTrueChildPredictionStrategy() { KieBase kieBase = PMMLKieBaseUtil.createKieBaseWithPMML(TREE_RETURN_NULL_NOTRUECHILD_STRATEGY); PMMLExecutor executor = new PMMLExecutor(kieBase); PMMLRequestData request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 30.0); PMML4Result resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); String targetValue = resultHolder.getResultValue("Fld2", "value", String.class).orElse(null); Assertions.assertThat(targetValue).isEqualTo("tgtY"); request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 50.0); resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); Assertions.assertThat(resultHolder.getResultValue("Fld2", "value", String.class)).isEmpty(); }
public PMML4Result run(PMMLRequestData requestData) { return run(requestData, Optional.empty()); }
@Test public void testNullPredictionMissingValueStrategy() { KieBase kieBase = PMMLKieBaseUtil.createKieBaseWithPMML(TREE_RETURN_NULL_MISSING_STRATEGY); PMMLExecutor executor = new PMMLExecutor(kieBase); PMMLRequestData request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 30.0); PMML4Result resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); String targetValue = resultHolder.getResultValue("Fld3", "value", String.class).orElse(null); Assertions.assertThat(targetValue).isEqualTo("tgtY"); request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 100.0); resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); targetValue = resultHolder.getResultValue("Fld3", "value", String.class).orElse(null); Assertions.assertThat(targetValue).isNull(); }
@Test public void testReturnLastNoTrueChildPredictionStrategy() { KieBase kieBase = PMMLKieBaseUtil.createKieBaseWithPMML(TREE_RETURN_LAST_NOTRUE_CHILD_STRATEGY); PMMLExecutor executor = new PMMLExecutor(kieBase); PMMLRequestData request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 30.0); PMML4Result resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); String targetValue = resultHolder.getResultValue("Fld2", "value", String.class).orElse(null); Assertions.assertThat(targetValue).isEqualTo("tgtY"); request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 50.0); resultHolder = executor.run(request); Assertions.assertThat(resultHolder).isNotNull(); targetValue = resultHolder.getResultValue("Fld2", "value", String.class).orElse(null); Assertions.assertThat(targetValue).isEqualTo("tgtX"); }