public synchronized void initModel() { if (ruleUnitClass == null) { throw new IllegalStateException("PMML model cannot be initialized. Missing ruleUnitClass."); } if (used) { used = false; initRuleUnitExecutor(); } executor.run(ruleUnitClass); }
executor.run( unit );
executor.run(ruleUnitClass); } finally { if (logger != null) {
@Test public void testTreeWithNumericValueOutcome() throws Exception { RuleUnitExecutor executor = createExecutor(source4); assertNotNull(executor); PMMLRequestData request = new PMMLRequestData("1234","Iris1"); request.addRequestParam("petal_length", 1.75); request.addRequestParam("sepal_width", 2.1); PMML4Result resultHolder = new PMML4Result(); List<String> possiblePackages = calculatePossiblePackageNames("Iris1"); Class<? extends RuleUnit> unitClass = getStartingRuleUnit("RuleUnitIndicator",(InternalKnowledgeBase)kbase,possiblePackages); assertNotNull(unitClass); int x = executor.run(unitClass); assertTrue( x > 0); data.insert(request); resultData.insert(resultHolder); executor.run(unitClass); assertEquals("OK",resultHolder.getResultCode()); Number sepal_length = resultHolder.getResultValue("Sepal_length", "value", Double.class).orElse(null); assertNotNull(sepal_length); assertEquals(5.005660, sepal_length.doubleValue(), 1e-6); }
@Test public void testSimpleTree() throws Exception { RuleUnitExecutor executor = createExecutor(source1); PMMLRequestData request = new PMMLRequestData("123","TreeTest"); request.addRequestParam("fld1", 30.0); request.addRequestParam("fld2", 60.0); request.addRequestParam("fld3", "false"); request.addRequestParam("fld4", "optA"); PMML4Result resultHolder = new PMML4Result(); List<String> possiblePackages = calculatePossiblePackageNames("TreeTest"); Class<? extends RuleUnit> unitClass = getStartingRuleUnit("RuleUnitIndicator",(InternalKnowledgeBase)kbase,possiblePackages); assertNotNull(unitClass); int x = executor.run(unitClass); data.insert(request); resultData.insert(resultHolder); executor.run(unitClass); assertEquals("OK",resultHolder.getResultCode()); Object obj = resultHolder.getResultValue("Fld5", null); assertNotNull(obj); String targetValue = resultHolder.getResultValue("Fld5", "value", String.class).orElse(null); assertEquals("tgtY",targetValue); }
@Test public void testRegression() throws Exception { RuleUnitExecutor executor = createExecutor(source1); PMMLRequestData request = new PMMLRequestData("123","LinReg"); request.addRequestParam("fld1",fld1); request.addRequestParam("fld2", fld2); request.addRequestParam("fld3", fld3); PMML4Result resultHolder = new PMML4Result(); List<String> possiblePackages = calculatePossiblePackageNames("LinReg"); Class<? extends RuleUnit> unitClass = getStartingRuleUnit("RuleUnitIndicator",(InternalKnowledgeBase)kbase,possiblePackages); assertNotNull(unitClass); int x = executor.run(unitClass); data.insert(request); resultData.insert(resultHolder); executor.run(unitClass); assertEquals("OK",resultHolder.getResultCode()); assertNotNull(resultHolder.getResultValue("Fld4", null)); Double value = resultHolder.getResultValue("Fld4", "value", Double.class).orElse(null); assertNotNull(value); final double expectedValue = simpleRegressionResult(fld1, fld2, fld3); assertEquals(expectedValue, value, COMPARISON_DELTA); }
@Test public void testTreeFromMiningModel() throws Exception { RuleUnitExecutor executor = createExecutor("org/kie/pmml/pmml_4_2/test_tree_from_mm.pmml"); PMMLRequestData request = new PMMLRequestData("1234", "SampleMineTree1"); request.addRequestParam("fld1", 30.0); request.addRequestParam("fld2", 60.0); request.addRequestParam("fld3", "false"); request.addRequestParam("fld4", "optA"); PMML4Result resultHolder = new PMML4Result(); List<String> possiblePackages = calculatePossiblePackageNames("SampleMineTree1"); Class<? extends RuleUnit> unitClass = getStartingRuleUnit("RuleUnitIndicator",(InternalKnowledgeBase)kbase,possiblePackages); assertNotNull(unitClass); int x = executor.run(unitClass); assertTrue( x > 0); data.insert(request); resultData.insert(resultHolder); executor.run(unitClass); assertEquals("OK",resultHolder.getResultCode()); assertNotNull(resultHolder.getResultVariables()); assertNotNull(resultHolder.getResultValue("Fld5", null)); String value = resultHolder.getResultValue("Fld5", "value", String.class).orElse(null); assertEquals("tgtY",value); System.out.println(resultHolder); }
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; }
resultData.insert(resultHolder); int count = executor.run(ruleUnitClass); assertTrue(count > 0); System.out.println(resultHolder);
resultData.insert(resultHolder); int count = executor.run(ruleUnitClass); assertTrue(count > 0); System.out.println(resultHolder);