.addContent(drl2, ResourceType.DRL) .build(); RuleUnitExecutor executor = RuleUnitExecutor.create().bind( kbase ); DataSource<MasterModel> masterModels = executor.newDataSource("models"); DataSource<ApplicableModel> applicableModels = executor.newDataSource("applicableModel"); FactHandle masterFH = masterModels.insert( master ); RuleUnit unit = new MasterModelUnit(masterModels,applicableModels); executor.run( unit );
executor.dispose(); executor = RuleUnitExecutor.create().bind(kbase); requestData = executor.newDataSource("request"); resultData = executor.newDataSource("results"); pmmlData = executor.newDataSource("pmmlData"); String startingRuleName = "RuleUnitIndicator"; if (includeMiningDataSources) { childModelSegments = executor.newDataSource("childModelSegments"); miningModelPojo = executor.newDataSource("miningModelPojo"); startingRuleName = "Start Mining - " + modelName; Map<String,DataSource<? extends Object>> tmpMap = new HashMap<>(); for (String key: externalDataSources.keySet()) { DataSource<? extends Object> ds = executor.newDataSource(key); tmpMap.put(key, ds);
protected RuleUnitExecutor createExecutor(String sourceName) { KieServices ks = KieServices.Factory.get(); KieRepository kr = ks.getRepository(); ReleaseId releaseId = new ReleaseIdImpl("org.kie:pmmlTest:1.0-SNAPSHOT"); ((KieRepositoryImpl) kr).setDefaultGAV(releaseId); Resource res = ResourceFactory.newClassPathResource(sourceName); kbase = new KieHelper().addResource(res, ResourceType.PMML).build(); assertNotNull(kbase); RuleUnitExecutor executor = RuleUnitExecutor.create().bind(kbase); KieContainer kc = ((KnowledgeBaseImpl) ((InternalRuleUnitExecutor) executor).getKieSession().getKieBase()).getKieContainer(); InternalKieModule ikm = (InternalKieModule) kr.getKieModule(releaseId); try (FileOutputStream fos = new FileOutputStream("/tmp/outputModule.jar")) { fos.write(ikm.getBytes()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } kc.getKieBaseNames().forEach(n -> { System.out.println(n); }); data = executor.newDataSource("request"); resultData = executor.newDataSource("results"); pmmlData = executor.newDataSource("pmmlData"); return executor; }
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(ruleUnitClass); } finally { if (logger != 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; }
kbase = new KieHelper().addResource(res, ResourceType.PMML).build(); executor[0] = RuleUnitExecutor.create().bind(kbase); executor[1] = RuleUnitExecutor.create().bind(kbase); executor[2] = RuleUnitExecutor.create().bind(kbase); requests[x] = executor[x].newDataSource("request"); results[x] = executor[x].newDataSource("results"); pmmlDatas[x] = executor[x].newDataSource("pmmlData"); resultHolder[x] = new PMML4Result(requestData[x].getCorrelationId()); executor[x].run(unitClass); executor[z].run(unitClass);
@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); }
KieBase kbase = new KieHelper().addResource(res, ResourceType.PMML).build(); RuleUnitExecutor executor = RuleUnitExecutor.create().bind(kbase); KieRuntimeLogger console = ((InternalRuleUnitExecutor)executor).addConsoleLogger(); requestData.addRequestParam(new ParameterInfo<>("123","fld3", String.class, "miss")); PMML4Result resultHolder = new PMML4Result(); DataSource<PMMLRequestData> data = executor.newDataSource("request"); DataSource<PMML4Result> results = executor.newDataSource("results"); DataSource<PMML4Data> pmmlData = executor.newDataSource("pmmlData"); int x = executor.run(unitClass); executor.run(unitClass); console.close(); System.out.println(resultHolder);
@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); }
KieBase kbase = container.newKieBase(null); assertNotNull(kbase); RuleUnitExecutor executor = RuleUnitExecutor.create().bind(kbase); DataSource<PMMLRequestData> data = executor.newDataSource("request"); DataSource<PMML4Result> resultData = executor.newDataSource("results"); DataSource<PMML4Data> pmmlData = executor.newDataSource("pmmlData"); DataSource<ApplicantAttribute> applicantData = executor.newDataSource("externalBeanApplicantAttribute"); resultData.insert(resultHolder); int count = executor.run(ruleUnitClass); assertTrue(count > 0); System.out.println(resultHolder);
@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); }
KieBase kbase = container.newKieBase(null); assertNotNull(kbase); RuleUnitExecutor executor = RuleUnitExecutor.create().bind(kbase); DataSource<PMMLRequestData> data = executor.newDataSource("request"); DataSource<PMML4Result> resultData = executor.newDataSource("results"); DataSource<PMML4Data> pmmlData = executor.newDataSource("pmmlData"); DataSource<ApplicantAttribute> applicantData = executor.newDataSource("externalBeanApplicantAttribute"); resultData.insert(resultHolder); int count = executor.run(ruleUnitClass); assertTrue(count > 0); System.out.println(resultHolder);
@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); }