Search in sources :

Example 21 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class IncrementalCompilationTest method createKJarWIthPackages.

private void createKJarWIthPackages(KieServices ks, ReleaseId releaseId1, String... pkgs) {
    String drl1 = "global java.util.List list;\n" + "rule R1 when\n" + "  String()\n" + "then\n" + "  list.add(\"R1\");" + "end\n";
    String drl2 = "global java.util.List list;\n" + "rule R2 when\n" + "  String()\n" + "then\n" + "  list.add(\"R2\");" + "end\n";
    KieModuleModel kproj = ks.newKieModuleModel();
    KieBaseModel kieBaseModel1 = kproj.newKieBaseModel("kbase1").setDefault(true);
    for (String pkg : pkgs) {
        kieBaseModel1.addPackage(pkg);
    }
    KieSessionModel ksession1 = kieBaseModel1.newKieSessionModel("ksession1").setDefault(true);
    KieFileSystem kfs = ks.newKieFileSystem();
    kfs.writeKModuleXML(kproj.toXML());
    kfs.generateAndWritePomXML(releaseId1);
    kfs.write("src/main/resources/pkg1/r1.drl", drl1);
    kfs.write("src/main/resources/pkg2/r2.drl", drl2);
    KieModule km = deployJar(ks, buildKJar(ks, kfs, releaseId1));
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) KieFileSystem(org.kie.api.builder.KieFileSystem) KieModuleModel(org.kie.api.builder.model.KieModuleModel) InternalKieModule(org.drools.compiler.kie.builder.impl.InternalKieModule) KieModule(org.kie.api.builder.KieModule) KieSessionModel(org.kie.api.builder.model.KieSessionModel)

Example 22 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class IncrementalCompilationTest method testRemoveRuleWithNonInitializedPath.

@Test
public void testRemoveRuleWithNonInitializedPath() {
    // DROOLS-1177
    String drl1 = "import " + MyEvent.class.getCanonicalName() + "\n" + "declare MyEvent @role( event ) end\n" + "rule \"RG_TEST_1\"\n" + "    when\n" + "       $dummy: MyEvent (id == 1)\n" + "		$other: MyEvent (this != $dummy)\n" + "    then\n" + "        retract($other);\n" + "end\n" + "rule \"RG_TEST_2\"\n" + "    when\n" + "       $dummy: MyEvent (id == 1)\n" + "    then\n" + "        retract($dummy);\n" + "end\n";
    String drl2 = "import " + MyEvent.class.getCanonicalName() + "\n" + "declare IMyEvent @role( event ) end\n" + "rule \"RG_TEST_2\"\n" + "    when\n" + "       $dummy: MyEvent (id == 1)\n" + "    then\n" + "        retract($dummy);\n" + "end\n";
    KieServices ks = KieServices.Factory.get();
    KieModuleModel kproj = ks.newKieModuleModel();
    KieBaseModel kieBaseModel1 = kproj.newKieBaseModel("KBase1").setDefault(true).setEventProcessingMode(EventProcessingOption.STREAM);
    KieSessionModel ksession1 = kieBaseModel1.newKieSessionModel("KSession1").setDefault(true).setType(KieSessionModel.KieSessionType.STATEFUL);
    ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
    deployJar(ks, createKJar(ks, kproj, releaseId1, null, drl1));
    KieContainer kc = ks.newKieContainer(releaseId1);
    KieSession ksession = kc.newKieSession();
    ksession.insert(new MyEvent(0));
    ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.0");
    deployJar(ks, createKJar(ks, kproj, releaseId2, null, drl2));
    kc.updateToVersion(releaseId2);
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieServices(org.kie.api.KieServices) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ReleaseId(org.kie.api.builder.ReleaseId) KieSessionModel(org.kie.api.builder.model.KieSessionModel) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Example 23 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class IncrementalCompilationTest method testIncrementalCompilationWithSlidingWindow.

@Test
public void testIncrementalCompilationWithSlidingWindow() {
    // DROOLS-881
    String drl1 = "import " + MyEvent.class.getCanonicalName() + "\n" + "declare MyEvent @role( event ) end\n" + "rule A when\n" + "    Number($number : intValue)\n" + "              from accumulate( MyEvent($id : id) over window:time(10s), sum($id) )\n" + "then\n" + "    System.out.println(\"1. SUM : \" + $number);\n" + "end\n" + "\n" + "rule B when\n" + "    Number($number : intValue)\n" + "              from accumulate( MyEvent($id : id) over window:time(10s), count($id) )\n" + "then\n" + "    System.out.println(\"1. CNT : \" + $number);\n" + "end";
    String drl2 = "import " + MyEvent.class.getCanonicalName() + "\n" + "declare MyEvent @role( event ) end\n" + "rule A when\n" + "    Number($number : intValue)\n" + "              from accumulate( MyEvent($id : id) over window:time(10s), sum($id) )\n" + "then\n" + "    System.out.println(\"2. SUM : \" + $number);\n" + "end\n" + "\n" + "rule B when\n" + "    Number($number : intValue)\n" + "              from accumulate( MyEvent($id : id) over window:time(10s), count($id) )\n" + "then\n" + "    System.out.println(\"2. CNT : \" + $number);\n" + "end";
    KieServices ks = KieServices.Factory.get();
    KieModuleModel kproj = ks.newKieModuleModel();
    KieBaseModel kieBaseModel1 = kproj.newKieBaseModel("KBase1").setDefault(true).setEventProcessingMode(EventProcessingOption.STREAM);
    KieSessionModel ksession1 = kieBaseModel1.newKieSessionModel("KSession1").setDefault(true).setType(KieSessionModel.KieSessionType.STATEFUL).setClockType(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
    ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
    deployJar(ks, createKJar(ks, kproj, releaseId1, null, drl1));
    ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.0");
    deployJar(ks, createKJar(ks, kproj, releaseId2, null, drl2));
    KieContainer kc = ks.newKieContainer(releaseId1);
    KieSession ksession = kc.newKieSession();
    PseudoClockScheduler clock = ksession.getSessionClock();
    ksession.insert(new MyEvent(1));
    ksession.fireAllRules();
    clock.advanceTime(7, TimeUnit.SECONDS);
    kc.updateToVersion(releaseId2);
    ksession.fireAllRules();
    clock.advanceTime(7, TimeUnit.SECONDS);
    kc.updateToVersion(releaseId1);
    ksession.fireAllRules();
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieServices(org.kie.api.KieServices) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ReleaseId(org.kie.api.builder.ReleaseId) PseudoClockScheduler(org.drools.core.time.impl.PseudoClockScheduler) KieSessionModel(org.kie.api.builder.model.KieSessionModel) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Example 24 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class AbstractKieProject method indexKieModule.

private void indexKieModule(Map<String, InternalKieModule> kJarFromKBaseName, InternalKieModule kJar, boolean isMainModule) {
    boolean defaultKieBaseFromMain = false;
    boolean defaultKieSessionFromMain = false;
    boolean defaultStatelessKieSessionFromMain = false;
    KieModuleModel kieProject = kJar.getKieModuleModel();
    for (KieBaseModel kieBaseModel : kieProject.getKieBaseModels().values()) {
        if (kieBaseModel.isDefault()) {
            if (defaultKieBase == null || (isMainModule && !defaultKieBaseFromMain)) {
                defaultKieBase = kieBaseModel;
                defaultKieBaseFromMain = isMainModule;
            } else {
                defaultKieBase = null;
                log.warn("Found more than one default KieBase: disabling all. KieBases will be accessible only by name");
            }
        }
        kBaseModels.put(kieBaseModel.getName(), kieBaseModel);
        // should already be set, but just in case
        ((KieBaseModelImpl) kieBaseModel).setKModule(kieProject);
        kJarFromKBaseName.put(kieBaseModel.getName(), kJar);
        for (KieSessionModel kieSessionModel : kieBaseModel.getKieSessionModels().values()) {
            if (kieSessionModel.isDefault()) {
                if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATEFUL) {
                    if (defaultKieSession == null || (isMainModule && !defaultKieSessionFromMain)) {
                        defaultKieSession = kieSessionModel;
                        defaultKieSessionFromMain = isMainModule;
                    } else {
                        defaultKieSession = null;
                        log.warn("Found more than one default KieSession: disabling all. KieSessions will be accessible only by name");
                    }
                } else {
                    if (defaultStatelessKieSession == null || (isMainModule && !defaultStatelessKieSessionFromMain)) {
                        defaultStatelessKieSession = kieSessionModel;
                        defaultStatelessKieSessionFromMain = isMainModule;
                    } else {
                        defaultStatelessKieSession = null;
                        log.warn("Found more than one default StatelessKieSession: disabling all. StatelessKieSessions will be accessible only by name");
                    }
                }
            }
            // should already be set, but just in case
            ((KieSessionModelImpl) kieSessionModel).setKBase(kieBaseModel);
            kSessionModels.put(kieSessionModel.getName(), kieSessionModel);
        }
    }
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) KieSessionModelImpl(org.drools.compiler.kproject.models.KieSessionModelImpl) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieBaseModelImpl(org.drools.compiler.kproject.models.KieBaseModelImpl) KieSessionModel(org.kie.api.builder.model.KieSessionModel)

Example 25 with KieSessionModel

use of org.kie.api.builder.model.KieSessionModel in project drools by kiegroup.

the class KieBaseModelImpl method newKieSessionModel.

/* (non-Javadoc)
     * @see org.kie.kproject.KieBaseModel#addKSession(org.kie.kproject.KieSessionModelImpl)
     */
public KieSessionModel newKieSessionModel(String name) {
    KieSessionModel kieSessionModel = new KieSessionModelImpl(this, name);
    Map<String, KieSessionModel> newMap = new HashMap<String, KieSessionModel>();
    newMap.putAll(this.kSessions);
    newMap.put(kieSessionModel.getName(), kieSessionModel);
    setKSessions(newMap);
    return kieSessionModel;
}
Also used : HashMap(java.util.HashMap) KieSessionModel(org.kie.api.builder.model.KieSessionModel)

Aggregations

KieSessionModel (org.kie.api.builder.model.KieSessionModel)31 KieModuleModel (org.kie.api.builder.model.KieModuleModel)25 KieBaseModel (org.kie.api.builder.model.KieBaseModel)24 KieServices (org.kie.api.KieServices)18 Test (org.junit.Test)15 ReleaseId (org.kie.api.builder.ReleaseId)15 KieContainer (org.kie.api.runtime.KieContainer)14 KieSession (org.kie.api.runtime.KieSession)11 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)10 KieFileSystem (org.kie.api.builder.KieFileSystem)8 KieBuilder (org.kie.api.builder.KieBuilder)6 InternalKieContainer (org.drools.core.impl.InternalKieContainer)5 KieModule (org.kie.api.builder.KieModule)5 InternalKieModule (org.drools.compiler.kie.builder.impl.InternalKieModule)4 PseudoClockScheduler (org.drools.core.time.impl.PseudoClockScheduler)4 MBeanServer (javax.management.MBeanServer)3 ObjectName (javax.management.ObjectName)3 KieBase (org.kie.api.KieBase)3 StringReader (java.io.StringReader)2 ArrayList (java.util.ArrayList)2