Search in sources :

Example 11 with KieServices

use of org.kie.api.KieServices in project drools by kiegroup.

the class IncrementalCompilationTest method testIncrementalTypeDeclarationOnInterface.

@Test
public void testIncrementalTypeDeclarationOnInterface() {
    // DROOLS-861
    String drl1 = "import " + Service.class.getCanonicalName() + "\n" + "rule A when\n" + "    Service( )\n" + "then\n" + "end";
    String drl2 = "import " + Service.class.getCanonicalName() + "\n" + "declare Service @role( event ) end\n" + "rule A when\n" + "    Service( )\n" + "then\n" + "end";
    KieServices ks = KieServices.Factory.get();
    ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
    KieModule km = createAndDeployJar(ks, releaseId1, drl1);
    KieContainer kc = ks.newKieContainer(releaseId1);
    KieSession ksession = kc.newKieSession();
    ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.0");
    createAndDeployJar(ks, releaseId2, drl2);
    kc.updateToVersion(releaseId2);
}
Also used : CompletionService(java.util.concurrent.CompletionService) ExecutorCompletionService(java.util.concurrent.ExecutorCompletionService) ExecutorService(java.util.concurrent.ExecutorService) Service(org.kie.api.Service) KieServices(org.kie.api.KieServices) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ReleaseId(org.kie.api.builder.ReleaseId) InternalKieModule(org.drools.compiler.kie.builder.impl.InternalKieModule) KieModule(org.kie.api.builder.KieModule) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Example 12 with KieServices

use of org.kie.api.KieServices in project drools by kiegroup.

the class IncrementalCompilationTest method testIncrementalCompilationWithTimerNode.

@Test
public void testIncrementalCompilationWithTimerNode() throws Exception {
    // DROOLS-1195
    String drl1 = "package fr.edf.distribution.brms.common.test\n" + "import " + DummyEvent.class.getCanonicalName() + "\n" + "declare DummyEvent\n" + "    @role( event )\n" + "    @timestamp( eventTimestamp )\n" + "end\n" + "rule \"RG_TEST_TIMER\"\n" + "timer (int: 0 1; start=$expirationTimestamp , repeat-limit=0 )\n" + "    when\n" + "       $dummy: DummyEvent (id == 'timer', $expirationTimestamp : systemTimestamp )\n" + "    then\n " + "System.out.println(\"1\");\n" + "end\n";
    String drl2 = "package fr.edf.distribution.brms.common.test\n" + "import " + DummyEvent.class.getCanonicalName() + "\n" + "declare DummyEvent\n" + "    @role( event )\n" + "    @timestamp( eventTimestamp )\n" + "end\n" + "rule \"RG_TEST_TIMER_NEW\"\n" + "timer (int: 0 1; start=$expirationTimestamp , repeat-limit=0 )\n" + "    when\n" + "       $dummy: DummyEvent (id == 'timer', $expirationTimestamp : systemTimestamp )\n" + "		DummyEvent (id == 'timer_match')\n" + "    then\n " + "System.out.println(\"1\");\n" + "end\n" + "rule \"RG_OTHER_RULE\"\n" + "    when\n" + "       $dummy: DummyEvent ( id == 'timer' )\n" + "    then\n " + "System.out.println(\"2\");\n" + "end\n";
    long now = System.currentTimeMillis();
    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));
    KieContainer kc = ks.newKieContainer(releaseId1);
    KieSession kieSession = kc.newKieSession();
    DummyEvent dummyEvent = new DummyEvent();
    dummyEvent.setId("timer");
    dummyEvent.setEventTimestamp(now);
    dummyEvent.setSystemTimestamp(now + TimeUnit.HOURS.toMillis(1));
    DummyEvent other = new DummyEvent();
    other.setId("timer_match");
    other.setEventTimestamp(now);
    kieSession.insert(dummyEvent);
    kieSession.insert(other);
    ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "2.0.0");
    deployJar(ks, createKJar(ks, kproj, releaseId2, null, drl2));
    kc.updateToVersion(releaseId2);
    PseudoClockScheduler scheduler = kieSession.getSessionClock();
    scheduler.setStartupTime(now);
    scheduler.advanceTime(1, TimeUnit.DAYS);
    assertEquals(2, kieSession.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 13 with KieServices

use of org.kie.api.KieServices in project drools by kiegroup.

the class IncrementalCompilationTest method testIncremenatalCompilationAddingFieldToDeclaredType.

@Test
public void testIncremenatalCompilationAddingFieldToDeclaredType() {
    // DROOLS-2197
    String declares1 = "declare Address\n" + "   streetName : String\n" + "   city : String\n" + "end";
    String declares2 = "declare Address\n" + "   streetName : String\n" + "   city : String\n" + "   flg: String\n" + "end";
    String rules1 = "rule R when\n" + "    a : Address( city == \"Antibes\" )\n" + "then\n" + "    a.setStreetName(\"Av. Jean Medecin\");\n" + "end";
    String rules2 = "rule R when\n" + "    a : Address( city == \" Paris \" )\n" + "then\n" + "    a.setStreetName(\" Champs Elisees \");\n" + "end";
    KieServices ks = KieServices.Factory.get();
    KieFileSystem kfs = ks.newKieFileSystem();
    ReleaseId id = ks.newReleaseId("org.test", "foo", "1.0-SNAPSHOT");
    KieBuilder kieBuilder = ks.newKieBuilder(kfs);
    kfs.generateAndWritePomXML(id);
    kfs.write(ks.getResources().newReaderResource(new StringReader(declares1)).setResourceType(ResourceType.DRL).setSourcePath("declares.drl"));
    kfs.write(ks.getResources().newReaderResource(new StringReader(rules1)).setResourceType(ResourceType.DRL).setSourcePath("rules.drl"));
    kieBuilder.buildAll();
    KieContainer kc = ks.newKieContainer(id);
    KieSession ksession = kc.newKieSession();
    ksession.fireAllRules();
    kfs.write(ks.getResources().newReaderResource(new StringReader(declares2)).setResourceType(ResourceType.DRL).setSourcePath("declares.drl"));
    kfs.write(ks.getResources().newReaderResource(new StringReader(rules2)).setResourceType(ResourceType.DRL).setSourcePath("rules.drl"));
    IncrementalResults results = ((InternalKieBuilder) kieBuilder).incrementalBuild();
    System.out.println(results.getAddedMessages());
    assertEquals(0, results.getAddedMessages().size());
    Results updateResults = kc.updateToVersion(id);
    assertEquals(0, updateResults.getMessages().size());
}
Also used : KieFileSystem(org.kie.api.builder.KieFileSystem) InternalKieBuilder(org.kie.internal.builder.InternalKieBuilder) IncrementalResults(org.kie.internal.builder.IncrementalResults) Results(org.kie.api.builder.Results) StringReader(java.io.StringReader) KieServices(org.kie.api.KieServices) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ReleaseId(org.kie.api.builder.ReleaseId) InternalKieBuilder(org.kie.internal.builder.InternalKieBuilder) KieBuilder(org.kie.api.builder.KieBuilder) IncrementalResults(org.kie.internal.builder.IncrementalResults) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Example 14 with KieServices

use of org.kie.api.KieServices in project drools by kiegroup.

the class IncrementalCompilationTest method testChangedPackage.

@Test
public void testChangedPackage() {
    // DROOLS-1742
    String drl1 = "package org.a\n" + "rule \"RG_1\"\n" + "    when\n" + "        Boolean()\n" + "        Integer()\n" + "    then\n" + "        System.out.println(\"RG_1\");" + "end\n";
    String drl2 = "package org.b\n" + "rule \"RG_2\"\n" + "    when\n" + "        Boolean()\n" + "        String()\n" + "    then\n" + "        System.out.println(\"RG_2\");" + "end\n";
    KieServices ks = KieServices.Factory.get();
    ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
    ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.0");
    createAndDeployJar(ks, releaseId1, drl2, drl1);
    KieContainer kieContainer = ks.newKieContainer(releaseId1);
    KieSession kieSession = kieContainer.newKieSession();
    kieSession.insert("test");
    assertEquals(0, kieSession.fireAllRules());
    createAndDeployJar(ks, releaseId2, drl1);
    kieContainer.updateToVersion(releaseId2);
    assertEquals(0, kieSession.fireAllRules());
}
Also used : KieServices(org.kie.api.KieServices) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) ReleaseId(org.kie.api.builder.ReleaseId) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Example 15 with KieServices

use of org.kie.api.KieServices in project drools by kiegroup.

the class IncrementalCompilationTest method testIncrementalCompilationWithAddedError.

@Test
public void testIncrementalCompilationWithAddedError() throws Exception {
    String drl1 = "package org.drools.compiler\n" + "rule R1 when\n" + "   $m : Message()\n" + "then\n" + "end\n";
    String drl2_1 = "package org.drools.compiler\n" + "rule R2_1 when\n" + "   $m : Message( message == \"Hi Universe\" )\n" + "then\n" + "end\n";
    String drl2_2 = "package org.drools.compiler\n" + "rule R2_2 when\n" + "   $m : Message( nonExistentField == \"Hello World\" )\n" + "then\n" + "end\n";
    KieServices ks = KieServices.Factory.get();
    KieFileSystem kfs = ks.newKieFileSystem().write("src/main/resources/r1.drl", drl1).write("src/main/resources/r2.drl", drl2_1);
    KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll();
    KieContainer kieContainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId());
    KieSession ksession = kieContainer.newKieSession();
    ksession.insert(new Message("Hello World"));
    assertEquals(1, ksession.fireAllRules());
    kfs.write("src/main/resources/r2.drl", drl2_2);
    IncrementalResults results = ((InternalKieBuilder) kieBuilder).createFileSet("src/main/resources/r2.drl").build();
    assertEquals(1, results.getAddedMessages().size());
    assertEquals(0, results.getRemovedMessages().size());
    kieContainer.updateToVersion(ks.getRepository().getDefaultReleaseId());
    ksession = kieContainer.newKieSession();
    ksession.insert(new Message("Hello World"));
    assertEquals(1, ksession.fireAllRules());
}
Also used : KieFileSystem(org.kie.api.builder.KieFileSystem) Message(org.drools.compiler.Message) KieServices(org.kie.api.KieServices) StatelessKieSession(org.kie.api.runtime.StatelessKieSession) KieSession(org.kie.api.runtime.KieSession) InternalKieBuilder(org.kie.internal.builder.InternalKieBuilder) KieBuilder(org.kie.api.builder.KieBuilder) IncrementalResults(org.kie.internal.builder.IncrementalResults) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Aggregations

KieServices (org.kie.api.KieServices)479 Test (org.junit.Test)385 KieContainer (org.kie.api.runtime.KieContainer)249 KieFileSystem (org.kie.api.builder.KieFileSystem)242 KieSession (org.kie.api.runtime.KieSession)239 ReleaseId (org.kie.api.builder.ReleaseId)214 KieBuilder (org.kie.api.builder.KieBuilder)146 InternalKieModule (org.drools.compiler.kie.builder.impl.InternalKieModule)119 KieModule (org.kie.api.builder.KieModule)104 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)99 KieModuleModel (org.kie.api.builder.model.KieModuleModel)78 ArrayList (java.util.ArrayList)76 Results (org.kie.api.builder.Results)73 KieBase (org.kie.api.KieBase)59 InternalKieBuilder (org.kie.internal.builder.InternalKieBuilder)49 KieBaseModel (org.kie.api.builder.model.KieBaseModel)45 IncrementalResults (org.kie.internal.builder.IncrementalResults)44 Message (org.drools.compiler.Message)43 Resource (org.kie.api.io.Resource)42 KieMavenRepository.getKieMavenRepository (org.kie.scanner.KieMavenRepository.getKieMavenRepository)28