Search in sources :

Example 1 with StockTick

use of org.drools.modelcompiler.domain.StockTick in project drools by kiegroup.

the class ExternalisedLambdaTest method testCep.

@Test
public void testCep() throws Exception {
    String str = "import " + StockTick.class.getCanonicalName() + ";" + "rule R when\n" + "    $a : StockTick( company == \"DROO\" )\n" + "    $b : StockTick( company == \"ACME\", timeFieldAsLong after[5,8] $a.timeFieldAsLong )\n" + "then\n" + "  System.out.println(\"fired\");\n" + "end\n";
    KieModuleModel kmodel = KieServices.get().newKieModuleModel();
    kmodel.newKieBaseModel("kb").setDefault(true).setEventProcessingMode(EventProcessingOption.STREAM).newKieSessionModel("ks").setDefault(true).setClockType(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
    KieSession ksession = null;
    try {
        ksession = getKieSession(kmodel, str);
    } catch (NonExternalisedLambdaFoundException e) {
        fail(e.getMessage());
    }
    SessionPseudoClock clock = ksession.getSessionClock();
    ksession.insert(new StockTick("DROO").setTimeField(0));
    ksession.insert(new StockTick("ACME").setTimeField(6));
    assertEquals(1, ksession.fireAllRules());
    ksession.insert(new StockTick("ACME").setTimeField(10));
    assertEquals(0, ksession.fireAllRules());
}
Also used : StockTick(org.drools.modelcompiler.domain.StockTick) NonExternalisedLambdaFoundException(org.drools.modelcompiler.util.lambdareplace.NonExternalisedLambdaFoundException) SessionPseudoClock(org.kie.api.time.SessionPseudoClock) KieModuleModel(org.kie.api.builder.model.KieModuleModel) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 2 with StockTick

use of org.drools.modelcompiler.domain.StockTick in project drools by kiegroup.

the class CepTest method testNegatedAfter.

@Test
public void testNegatedAfter() throws Exception {
    String str = "import " + StockTick.class.getCanonicalName() + ";" + "rule R when\n" + "    $a : StockTick( company == \"DROO\" )\n" + "    $b : StockTick( company == \"ACME\", this not after[5s,8s] $a )\n" + "then\n" + "  System.out.println(\"fired\");\n" + "end\n";
    KieSession ksession = getKieSession(getCepKieModuleModel(), str);
    SessionPseudoClock clock = ksession.getSessionClock();
    ksession.insert(new StockTick("DROO"));
    clock.advanceTime(6, TimeUnit.SECONDS);
    ksession.insert(new StockTick("ACME"));
    assertEquals(0, ksession.fireAllRules());
    clock.advanceTime(4, TimeUnit.SECONDS);
    ksession.insert(new StockTick("ACME"));
    assertEquals(1, ksession.fireAllRules());
}
Also used : StockTick(org.drools.modelcompiler.domain.StockTick) SessionPseudoClock(org.kie.api.time.SessionPseudoClock) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 3 with StockTick

use of org.drools.modelcompiler.domain.StockTick in project drools by kiegroup.

the class CepTest method testBeforeOnLongFields.

@Test
public void testBeforeOnLongFields() throws Exception {
    String str = "import " + StockTick.class.getCanonicalName() + ";\n" + "declare StockTick @timestamp(timeFieldAsLong) end\n" + "rule R when\n" + "    $a : StockTick( company == \"DROO\" )\n" + "    $b : StockTick( company == \"ACME\", timeFieldAsLong before[5,8] $a.timeFieldAsLong )\n" + "then\n" + "  System.out.println(\"fired\");\n" + "end\n";
    KieSession ksession = getKieSession(getCepKieModuleModel(), str);
    SessionPseudoClock clock = ksession.getSessionClock();
    ksession.insert(new StockTick("ACME").setTimeField(0));
    ksession.insert(new StockTick("DROO").setTimeField(6));
    assertEquals(1, ksession.fireAllRules());
    ksession.insert(new StockTick("DROO").setTimeField(10));
    assertEquals(0, ksession.fireAllRules());
}
Also used : StockTick(org.drools.modelcompiler.domain.StockTick) SessionPseudoClock(org.kie.api.time.SessionPseudoClock) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 4 with StockTick

use of org.drools.modelcompiler.domain.StockTick in project drools by kiegroup.

the class CepTest method testBefore.

@Test
public void testBefore() throws Exception {
    String str = "import " + StockTick.class.getCanonicalName() + ";" + "rule R when\n" + "    $a : StockTick( company == \"DROO\" )\n" + "    $b : StockTick( company == \"ACME\", this before[5s,8s] $a )\n" + "then\n" + "  System.out.println(\"fired\");\n" + "end\n";
    KieSession ksession = getKieSession(getCepKieModuleModel(), str);
    SessionPseudoClock clock = ksession.getSessionClock();
    ksession.insert(new StockTick("ACME"));
    clock.advanceTime(6, TimeUnit.SECONDS);
    ksession.insert(new StockTick("DROO"));
    assertEquals(1, ksession.fireAllRules());
    clock.advanceTime(4, TimeUnit.SECONDS);
    ksession.insert(new StockTick("DROO"));
    assertEquals(0, ksession.fireAllRules());
}
Also used : StockTick(org.drools.modelcompiler.domain.StockTick) SessionPseudoClock(org.kie.api.time.SessionPseudoClock) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 5 with StockTick

use of org.drools.modelcompiler.domain.StockTick in project drools by kiegroup.

the class CepTest method testDeclaredSlidingWindowWithEntryPoint.

@Test
public void testDeclaredSlidingWindowWithEntryPoint() throws Exception {
    String str = "import " + StockTick.class.getCanonicalName() + ";\n" + "declare window DeclaredWindow\n" + "    StockTick( company == \"DROO\" ) over window:time( 5s ) from entry-point ticks\n" + "end\n" + "rule R when\n" + "    $a : StockTick() from window DeclaredWindow\n" + "then\n" + "  System.out.println($a.getCompany());\n" + "end\n";
    KieSession ksession = getKieSession(getCepKieModuleModel(), str);
    SessionPseudoClock clock = ksession.getSessionClock();
    EntryPoint ep = ksession.getEntryPoint("ticks");
    clock.advanceTime(2, TimeUnit.SECONDS);
    ep.insert(new StockTick("DROO"));
    clock.advanceTime(2, TimeUnit.SECONDS);
    ep.insert(new StockTick("DROO"));
    clock.advanceTime(2, TimeUnit.SECONDS);
    ep.insert(new StockTick("ACME"));
    clock.advanceTime(2, TimeUnit.SECONDS);
    ep.insert(new StockTick("DROO"));
    assertEquals(2, ksession.fireAllRules());
}
Also used : StockTick(org.drools.modelcompiler.domain.StockTick) SessionPseudoClock(org.kie.api.time.SessionPseudoClock) EntryPoint(org.kie.api.runtime.rule.EntryPoint) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Aggregations

StockTick (org.drools.modelcompiler.domain.StockTick)35 Test (org.junit.Test)35 KieSession (org.kie.api.runtime.KieSession)35 SessionPseudoClock (org.kie.api.time.SessionPseudoClock)29 ArrayList (java.util.ArrayList)6 IOException (java.io.IOException)4 Arrays (java.util.Arrays)4 Collection (java.util.Collection)4 List (java.util.List)4 TimeUnit (java.util.concurrent.TimeUnit)4 Assertions (org.assertj.core.api.Assertions)4 ClockType (org.drools.core.ClockType)4 Global (org.drools.model.Global)4 Model (org.drools.model.Model)4 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)3 Query (org.drools.model.Query)3 Query2Def (org.drools.model.Query2Def)3 Rule (org.drools.model.Rule)3 Variable (org.drools.model.Variable)3 ModelImpl (org.drools.model.impl.ModelImpl)3