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);
}
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());
}
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());
}
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());
}
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());
}
Aggregations