Search in sources :

Example 31 with KieSessionConfiguration

use of org.kie.api.runtime.KieSessionConfiguration in project drools by kiegroup.

the class FireUntilHaltAccumulateTest method setUp.

@Before
public void setUp() {
    final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newByteArrayResource(drl.getBytes()), ResourceType.DRL);
    if (kbuilder.hasErrors()) {
        System.err.println(kbuilder.getErrors().toString());
    }
    final KieBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
    config.setOption(EventProcessingOption.STREAM);
    final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(config);
    kbase.addPackages(kbuilder.getKnowledgePackages());
    final KieSessionConfiguration sessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    sessionConfig.setOption(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
    this.statefulSession = kbase.newKieSession(sessionConfig, null);
    this.stockFactory = new StockFactory(kbase);
}
Also used : KieBaseConfiguration(org.kie.api.KieBaseConfiguration) KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) Before(org.junit.Before)

Example 32 with KieSessionConfiguration

use of org.kie.api.runtime.KieSessionConfiguration in project drools by kiegroup.

the class MBeansMonitoringTest method testAggregatedAndDispose.

@Test
public void testAggregatedAndDispose() throws Exception {
    String drl = "package org.drools.compiler.integrationtests\n" + "rule ND\n" + "when\n" + "    String() \n" + "    not ( Double() ) \n" + "then\n" + "    // do nothing. \n" + "end\n" + "rule ND2\n" + "salience 1\n" + "when\n" + "    $s : String() \n" + "    not ( Double() ) \n" + "then\n" + "    try { Thread.sleep(10); } catch (Exception e) { }\n" + "    insert( new Double(0) );\n" + "    retract( $s );\n" + "end\n";
    KieServices ks = KieServices.Factory.get();
    KieModuleModel kproj = ks.newKieModuleModel();
    KieBaseModel kieBaseModel1 = kproj.newKieBaseModel(KBASE1).setDefault(true).setEventProcessingMode(EventProcessingOption.STREAM);
    KieSessionModel ksessionModel1 = kieBaseModel1.newKieSessionModel(KSESSION1).setDefault(true).setType(KieSessionModel.KieSessionType.STATEFUL).setClockType(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
    KieBaseModel kieBaseModel2 = kproj.newKieBaseModel(KBASE2).setDefault(false);
    KieSessionModel ksessionModel2 = kieBaseModel2.newKieSessionModel(KSESSION2).setDefault(true).setType(KieSessionModel.KieSessionType.STATELESS);
    ReleaseId releaseId1 = ks.newReleaseId("org.kie.test", "mbeans", "1.0.0");
    createKJar(ks, kproj, releaseId1, null, drl);
    String containerId = "myContainerId";
    KieContainer kc = ks.newKieContainer(containerId, releaseId1);
    KieBase kiebase = kc.getKieBase(KBASE1);
    KieSessionConfiguration sessionConf = ks.newKieSessionConfiguration();
    sessionConf.setOption(ForceEagerActivationOption.YES);
    KieSession ksession = kc.newKieSession(KSESSION1, sessionConf);
    MBeanServer mbserver = ManagementFactory.getPlatformMBeanServer();
    KieSessionMonitoringMXBean aggrMonitor = JMX.newMXBeanProxy(mbserver, DroolsManagementAgent.createObjectNameBy(containerId, KBASE1, KieSessionType.STATEFUL, KSESSION1), KieSessionMonitoringMXBean.class);
    long tft = 0;
    print(aggrMonitor);
    checkAgendaTotals(aggrMonitor, 0, 0, 0);
    checkTotalFactCount(aggrMonitor, 0);
    tft = checkTotalFiringTimeGEQ(aggrMonitor, tft);
    checkTotalSessions(aggrMonitor, 1);
    assertNull(aggrMonitor.getStatsForRule("ND"));
    assertNull(aggrMonitor.getStatsForRule("ND2"));
    assertFalse(aggrMonitor.getStatsByRule().containsKey("ND"));
    assertFalse(aggrMonitor.getStatsByRule().containsKey("ND2"));
    ksession.insert("Ciao");
    ksession.fireAllRules();
    print(aggrMonitor);
    checkAgendaTotals(aggrMonitor, 2, 1, 1);
    checkTotalFactCount(aggrMonitor, 1);
    tft = checkTotalFiringTimeGEQ(aggrMonitor, tft + 1);
    checkTotalSessions(aggrMonitor, 1);
    checkStatsForRule(aggrMonitor, "ND", 1, 1, 0);
    checkStatsForRule(aggrMonitor, "ND2", 1, 0, 1);
    checkStatsByRule(aggrMonitor, "ND", 1, 1, 0);
    checkStatsByRule(aggrMonitor, "ND2", 1, 0, 1);
    ksession.fireAllRules();
    print(aggrMonitor);
    checkAgendaTotals(aggrMonitor, 2, 1, 1);
    checkTotalFactCount(aggrMonitor, 1);
    tft = checkTotalFiringTimeGEQ(aggrMonitor, tft);
    checkTotalSessions(aggrMonitor, 1);
    checkStatsForRule(aggrMonitor, "ND", 1, 1, 0);
    checkStatsForRule(aggrMonitor, "ND2", 1, 0, 1);
    checkStatsByRule(aggrMonitor, "ND", 1, 1, 0);
    checkStatsByRule(aggrMonitor, "ND2", 1, 0, 1);
    LOG.debug("---");
    KieSession ksession2 = kc.newKieSession(KSESSION1, sessionConf);
    ksession2.insert("Ciao");
    ksession2.fireAllRules();
    print(aggrMonitor);
    checkAgendaTotals(aggrMonitor, 4, 2, 2);
    checkTotalFactCount(aggrMonitor, 2);
    tft = checkTotalFiringTimeGEQ(aggrMonitor, tft + 1);
    checkTotalSessions(aggrMonitor, 2);
    checkStatsForRule(aggrMonitor, "ND", 2, 2, 0);
    checkStatsForRule(aggrMonitor, "ND2", 2, 0, 2);
    checkStatsByRule(aggrMonitor, "ND", 2, 2, 0);
    checkStatsByRule(aggrMonitor, "ND2", 2, 0, 2);
    ksession.dispose();
    checkTotalSessions(aggrMonitor, 1);
    checkTotalFactCount(aggrMonitor, 1);
    ksession2.dispose();
    checkTotalSessions(aggrMonitor, 0);
    checkTotalFactCount(aggrMonitor, 0);
    LOG.debug("--- NOW for the STATELESS ---");
    tft = 0;
    StatelessKieSession stateless = kc.newStatelessKieSession(KSESSION2, sessionConf);
    StatelessKieSessionMonitoringMXBean aggrMonitor2 = JMX.newMXBeanProxy(mbserver, DroolsManagementAgent.createObjectNameBy(containerId, KBASE2, KieSessionType.STATELESS, KSESSION2), StatelessKieSessionMonitoringMXBean.class);
    print(aggrMonitor2);
    checkAgendaTotals(aggrMonitor2, 0, 0, 0);
    checkRuleRuntimeTotals(aggrMonitor2, 0, 0);
    tft = checkTotalFiringTimeGEQ(aggrMonitor2, tft);
    checkTotalSessions(aggrMonitor2, 0);
    assertNull(aggrMonitor2.getStatsForRule("ND"));
    assertNull(aggrMonitor2.getStatsForRule("ND2"));
    assertFalse(aggrMonitor2.getStatsByRule().containsKey("ND"));
    assertFalse(aggrMonitor2.getStatsByRule().containsKey("ND2"));
    stateless.execute("Ciao");
    print(aggrMonitor2);
    checkAgendaTotals(aggrMonitor2, 2, 1, 1);
    checkRuleRuntimeTotals(aggrMonitor2, 2, 1);
    tft = checkTotalFiringTimeGEQ(aggrMonitor2, tft + 1);
    checkTotalSessions(aggrMonitor2, 1);
    checkStatsForRule(aggrMonitor2, "ND", 1, 1, 0);
    checkStatsForRule(aggrMonitor2, "ND2", 1, 0, 1);
    checkStatsByRule(aggrMonitor2, "ND", 1, 1, 0);
    checkStatsByRule(aggrMonitor2, "ND2", 1, 0, 1);
    stateless.execute("Ciao");
    print(aggrMonitor2);
    checkAgendaTotals(aggrMonitor2, 4, 2, 2);
    checkRuleRuntimeTotals(aggrMonitor2, 4, 2);
    tft = checkTotalFiringTimeGEQ(aggrMonitor2, tft + 1);
    checkTotalSessions(aggrMonitor2, 2);
    checkStatsForRule(aggrMonitor2, "ND", 2, 2, 0);
    checkStatsForRule(aggrMonitor2, "ND2", 2, 0, 2);
    checkStatsByRule(aggrMonitor2, "ND", 2, 2, 0);
    checkStatsByRule(aggrMonitor2, "ND2", 2, 0, 2);
    StatelessKieSession stateless2 = kc.newStatelessKieSession(KSESSION2, sessionConf);
    LOG.debug(stateless + " " + stateless2);
    checkTotalSessions(aggrMonitor2, 2);
    stateless2.execute("Ciao");
    print(aggrMonitor2);
    checkAgendaTotals(aggrMonitor2, 6, 3, 3);
    checkRuleRuntimeTotals(aggrMonitor2, 6, 3);
    tft = checkTotalFiringTimeGEQ(aggrMonitor2, tft + 1);
    checkTotalSessions(aggrMonitor2, 3);
    checkStatsForRule(aggrMonitor2, "ND", 3, 3, 0);
    checkStatsForRule(aggrMonitor2, "ND2", 3, 0, 3);
    checkStatsByRule(aggrMonitor2, "ND", 3, 3, 0);
    checkStatsByRule(aggrMonitor2, "ND2", 3, 0, 3);
    KieContainer kc2 = ks.newKieContainer("kc2", releaseId1);
    assertEquals(5, mbserver.queryNames(new ObjectName("org.kie:kcontainerId=" + ObjectName.quote(containerId) + ",*"), null).size());
    kc.dispose();
    assertEquals(0, mbserver.queryNames(new ObjectName("org.kie:kcontainerId=" + ObjectName.quote(containerId) + ",*"), null).size());
    assertEquals(1, mbserver.queryNames(new ObjectName("org.kie:kcontainerId=" + ObjectName.quote("kc2") + ",*"), null).size());
}
Also used : GenericKieSessionMonitoringMXBean(org.kie.api.management.GenericKieSessionMonitoringMXBean) KieSessionMonitoringMXBean(org.kie.api.management.KieSessionMonitoringMXBean) StatelessKieSessionMonitoringMXBean(org.kie.api.management.StatelessKieSessionMonitoringMXBean) KieServices(org.kie.api.KieServices) ReleaseId(org.kie.api.builder.ReleaseId) KieSessionModel(org.kie.api.builder.model.KieSessionModel) ObjectName(javax.management.ObjectName) KieBaseModel(org.kie.api.builder.model.KieBaseModel) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieBase(org.kie.api.KieBase) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) StatelessKieSessionMonitoringMXBean(org.kie.api.management.StatelessKieSessionMonitoringMXBean) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) InternalKieContainer(org.drools.core.impl.InternalKieContainer) KieContainer(org.kie.api.runtime.KieContainer) MBeanServer(javax.management.MBeanServer) Test(org.junit.Test)

Example 33 with KieSessionConfiguration

use of org.kie.api.runtime.KieSessionConfiguration in project drools by kiegroup.

the class CommonTestMethodBase method createKieSession.

protected KieSession createKieSession(KieBase kbase, KieSessionOption option) {
    KieSessionConfiguration ksconf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    ksconf.setOption(option);
    return kbase.newKieSession(ksconf, null);
}
Also used : KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration)

Example 34 with KieSessionConfiguration

use of org.kie.api.runtime.KieSessionConfiguration in project drools by kiegroup.

the class AbductionTest method getSessionFromString.

protected KieSession getSessionFromString(String drlString, KieBaseConfiguration kbConf) {
    KieHelper kieHelper = new KieHelper();
    kieHelper.addContent(drlString, ResourceType.DRL);
    Results res = kieHelper.verify();
    if (res.hasMessages(Message.Level.ERROR)) {
        fail(res.getMessages(Message.Level.ERROR).toString());
    }
    if (kbConf == null) {
        kbConf = KieServices.Factory.get().newKieBaseConfiguration();
    }
    kbConf.setOption(EqualityBehaviorOption.EQUALITY);
    KieBase kieBase = kieHelper.build(kbConf);
    KieSessionConfiguration ksConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    ((SessionConfiguration) ksConf).setBeliefSystemType(BeliefSystemType.DEFEASIBLE);
    return kieBase.newKieSession(ksConf, null);
}
Also used : QueryResults(org.kie.api.runtime.rule.QueryResults) FlatQueryResults(org.drools.core.runtime.rule.impl.FlatQueryResults) Results(org.kie.api.builder.Results) KieBase(org.kie.api.KieBase) KieHelper(org.kie.internal.utils.KieHelper) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) SessionConfiguration(org.drools.core.SessionConfiguration)

Example 35 with KieSessionConfiguration

use of org.kie.api.runtime.KieSessionConfiguration in project drools by kiegroup.

the class DefeasibilityTest method getSession.

protected KieSession getSession(String ruleFile) {
    KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    try {
        System.setProperty("drools.negatable", "on");
        kBuilder.add(ResourceFactory.newClassPathResource(ruleFile), ResourceType.DRL);
        if (kBuilder.hasErrors()) {
            System.err.println(kBuilder.getErrors());
            fail();
        }
    } finally {
        System.setProperty("drools.negatable", "off");
    }
    InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase();
    kBase.addPackages(kBuilder.getKnowledgePackages());
    KieSessionConfiguration ksConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    ((SessionConfiguration) ksConf).setBeliefSystemType(BeliefSystemType.DEFEASIBLE);
    KieSession kSession = kBase.newKieSession(ksConf, null);
    return kSession;
}
Also used : KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) KieSession(org.kie.api.runtime.KieSession) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) SessionConfiguration(org.drools.core.SessionConfiguration)

Aggregations

KieSessionConfiguration (org.kie.api.runtime.KieSessionConfiguration)188 KieSession (org.kie.api.runtime.KieSession)166 Test (org.junit.Test)157 KieBase (org.kie.api.KieBase)122 ArrayList (java.util.ArrayList)96 PseudoClockScheduler (org.drools.core.time.impl.PseudoClockScheduler)71 KieHelper (org.kie.internal.utils.KieHelper)68 List (java.util.List)59 KieBaseConfiguration (org.kie.api.KieBaseConfiguration)57 StockTick (org.drools.compiler.StockTick)40 SessionPseudoClock (org.kie.api.time.SessionPseudoClock)39 EntryPoint (org.kie.api.runtime.rule.EntryPoint)28 Arrays.asList (java.util.Arrays.asList)27 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)25 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)22 Date (java.util.Date)18 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)18 StockTickInterface (org.drools.compiler.StockTickInterface)18 NamedEntryPoint (org.drools.core.common.NamedEntryPoint)16 SessionConfiguration (org.drools.core.SessionConfiguration)15