Search in sources :

Example 11 with InternalRuleUnitExecutor

use of org.drools.core.impl.InternalRuleUnitExecutor in project drools by kiegroup.

the class MiningmodelTest method testSelectSecondSegmentFirst.

@Test
public void testSelectSecondSegmentFirst() {
    RuleUnitExecutor executor = createExecutor(source1);
    // KieRuntimeLogger console = ((InternalRuleUnitExecutor)executor).addConsoleLogger();
    PMMLRequestData request = new PMMLRequestData("1234", "SampleMine");
    request.addRequestParam(new ParameterInfo<>("1234", "fld1", Double.class, 45.0));
    request.addRequestParam(new ParameterInfo<>("1234", "fld2", Double.class, 60.0));
    request.addRequestParam(new ParameterInfo<>("1234", "fld6", String.class, "optA"));
    PMML4Result resultHolder = new PMML4Result();
    resultHolder.setCorrelationId(request.getCorrelationId());
    DataSource<PMMLRequestData> childModelRequest = executor.newDataSource("childModelRequest");
    DataSource<PMML4Result> childModelResults = executor.newDataSource("childModelResults");
    DataSource<SegmentExecution> childModelSegments = executor.newDataSource("childModelSegments");
    DataSource<? extends AbstractPMMLData> miningModelPojo = executor.newDataSource("miningModelPojo");
    List<String> possiblePackages = this.calculatePossiblePackageNames("SampleMine");
    Class<? extends RuleUnit> ruleUnitClass = this.getStartingRuleUnit("Start Mining - SampleMine", (InternalKnowledgeBase) kbase, possiblePackages);
    assertNotNull(ruleUnitClass);
    data.insert(request);
    resultData.insert(resultHolder);
    executor.run(ruleUnitClass);
    // console.close();
    resultData.forEach(rd -> {
        assertEquals(request.getCorrelationId(), rd.getCorrelationId());
        assertEquals("OK", rd.getResultCode());
        if (rd.getSegmentationId() == null) {
            assertNotNull(rd.getResultValue("Fld5", null));
            String value = rd.getResultValue("Fld5", "value", String.class).orElse(null);
            assertEquals("tgtZ", value);
            AbstractTreeToken token = rd.getResultValue("MissingTreeToken", null, AbstractTreeToken.class).orElse(null);
            assertNotNull(token);
            assertEquals(0.6, token.getConfidence().doubleValue(), 0.0);
            assertEquals("null", token.getCurrent());
        }
    });
    int segmentsExecuted = 0;
    for (Iterator<SegmentExecution> iter = childModelSegments.iterator(); iter.hasNext(); ) {
        SegmentExecution cms = iter.next();
        assertEquals(request.getCorrelationId(), cms.getCorrelationId());
        if (cms.getState() == SegmentExecutionState.COMPLETE)
            segmentsExecuted++;
    }
    assertEquals(1, segmentsExecuted);
}
Also used : PMMLRequestData(org.kie.api.pmml.PMMLRequestData) PMML4Result(org.kie.api.pmml.PMML4Result) SegmentExecution(org.kie.pmml.pmml_4_2.model.mining.SegmentExecution) InternalRuleUnitExecutor(org.drools.core.impl.InternalRuleUnitExecutor) RuleUnitExecutor(org.kie.api.runtime.rule.RuleUnitExecutor) AbstractTreeToken(org.kie.pmml.pmml_4_2.model.tree.AbstractTreeToken) Test(org.junit.Test) DroolsAbstractPMMLTest(org.kie.pmml.pmml_4_2.DroolsAbstractPMMLTest)

Example 12 with InternalRuleUnitExecutor

use of org.drools.core.impl.InternalRuleUnitExecutor in project drools by kiegroup.

the class ScorecardTest method testScorecard.

@Test
public void testScorecard() throws Exception {
    RuleUnitExecutor executor = createExecutor(source1);
    PMMLRequestData requestData = createRequest("123", "Sample Score", 33.0, "SKYDIVER", "KN", true);
    PMML4Result resultHolder = new PMML4Result();
    List<String> possiblePackages = calculatePossiblePackageNames("Sample Score", "org.drools.scorecards.example");
    Class<? extends RuleUnit> unitClass = getStartingRuleUnit("RuleUnitIndicator", (InternalKnowledgeBase) kbase, possiblePackages);
    assertNotNull(unitClass);
    executor.run(unitClass);
    Collection<? extends EntryPoint> eps = ((InternalRuleUnitExecutor) executor).getKieSession().getEntryPoints();
    eps.forEach(ep -> {
        System.out.println(ep);
    });
    data.insert(requestData);
    resultData.insert(resultHolder);
    executor.run(unitClass);
    assertEquals(3, resultHolder.getResultVariables().size());
    Object scorecard = resultHolder.getResultValue("ScoreCard", null);
    assertNotNull(scorecard);
    Double score = resultHolder.getResultValue("ScoreCard", "score", Double.class).orElse(null);
    assertEquals(41.345, score, 0.000);
    Object ranking = resultHolder.getResultValue("ScoreCard", "ranking");
    assertNotNull(ranking);
    assertTrue(ranking instanceof LinkedHashMap);
    LinkedHashMap map = (LinkedHashMap) ranking;
    assertTrue(map.containsKey("LX00"));
    assertTrue(map.containsKey("RES"));
    assertTrue(map.containsKey("CX2"));
    assertEquals(-1.0, map.get("LX00"));
    assertEquals(-10.0, map.get("RES"));
    assertEquals(-30.0, map.get("CX2"));
    Iterator iter = map.keySet().iterator();
    assertEquals("LX00", iter.next());
    assertEquals("RES", iter.next());
    assertEquals("CX2", iter.next());
}
Also used : PMMLRequestData(org.kie.api.pmml.PMMLRequestData) PMML4Result(org.kie.api.pmml.PMML4Result) InternalRuleUnitExecutor(org.drools.core.impl.InternalRuleUnitExecutor) RuleUnitExecutor(org.kie.api.runtime.rule.RuleUnitExecutor) Iterator(java.util.Iterator) LinkedHashMap(java.util.LinkedHashMap) Test(org.junit.Test) DroolsAbstractPMMLTest(org.kie.pmml.pmml_4_2.DroolsAbstractPMMLTest)

Aggregations

InternalRuleUnitExecutor (org.drools.core.impl.InternalRuleUnitExecutor)12 RuleUnitExecutor (org.kie.api.runtime.rule.RuleUnitExecutor)12 Test (org.junit.Test)10 PMML4Result (org.kie.api.pmml.PMML4Result)10 PMMLRequestData (org.kie.api.pmml.PMMLRequestData)10 DroolsAbstractPMMLTest (org.kie.pmml.pmml_4_2.DroolsAbstractPMMLTest)9 SegmentExecution (org.kie.pmml.pmml_4_2.model.mining.SegmentExecution)6 Iterator (java.util.Iterator)3 LinkedHashMap (java.util.LinkedHashMap)3 KieBase (org.kie.api.KieBase)3 Resource (org.kie.api.io.Resource)3 KieRuntimeLogger (org.kie.api.logger.KieRuntimeLogger)3 PMML4Data (org.kie.api.pmml.PMML4Data)3 KieHelper (org.kie.internal.utils.KieHelper)3 AbstractTreeToken (org.kie.pmml.pmml_4_2.model.tree.AbstractTreeToken)3 Map (java.util.Map)2 KieServices (org.kie.api.KieServices)2 KieContainer (org.kie.api.runtime.KieContainer)2 ScoreCard (org.kie.pmml.pmml_4_2.model.ScoreCard)2 FileNotFoundException (java.io.FileNotFoundException)1