ksession.setGlobal( "list", list ); EntryPoint aep = ksession.getEntryPoint( "a-ep" ); aep.insert( new A() ); EntryPoint bep = ksession.getEntryPoint( "b-ep" ); bep.insert( new B() ); EntryPoint cep = ksession.getEntryPoint( "c-ep" ); cep.insert( new C() ); aep = ksession.getEntryPoint( "a-ep" ); assertEquals( 1, aep.getFactHandles().size() ); bep = ksession.getEntryPoint( "b-ep" ); assertEquals( 1, bep.getFactHandles().size() ); cep = ksession.getEntryPoint( "c-ep" ); assertEquals( 1, cep.getFactHandles().size() ); aep = ksession.getEntryPoint( "a-ep" ); assertEquals( 0, aep.getFactHandles().size() ); bep = ksession.getEntryPoint( "b-ep" ); assertEquals( 0, bep.getFactHandles().size() ); cep = ksession.getEntryPoint( "c-ep" ); assertEquals( 1, cep.getFactHandles().size() );
InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); Rete rete = kBase.getRete(); FactHandle f1 = ksession.insert( "f1" ); EntryPoint ep = ksession.getEntryPoint( "xxx" ); try { ep.update( f1, "s1" ); fail( "Should throw an exception" ); } catch ( IllegalArgumentException e ) { ep.retract( f1 ); fail( "Should throw an exception" ); } catch ( IllegalArgumentException e ) { ksession.update( f1, "s1" ); assertNotNull( ksession.getObject( f1 ) ); ksession.retract( f1 );
kSession.setGlobal( "list", list ); FactHandle fhGo1 = kSession.insert( "go1" ); kSession.fireAllRules(); assertTrue( list.contains( "-neg" ) ); assertEquals( 1, kSession.getEntryPoint( "DEFAULT" ).getObjects().size() ); //just go1 assertEquals( 1, getNegativeObjects(kSession).size() ); assertTrue( list.contains( "+pos" ) ); assertEquals( 3, kSession.getEntryPoint( "DEFAULT" ).getObjects().size() ); //go1, go2, pos assertEquals( 1, getNegativeObjects(kSession).size() ); assertFalse( list.contains( "-neg" ) ); assertTrue( list.contains( "+pos" ) ); assertEquals( 2, kSession.getEntryPoint( "DEFAULT" ).getObjects().size() ); //go2, pos assertEquals( 0, getNegativeObjects(kSession).size() ); assertFalse( list.contains( "-neg" ) ); assertFalse( list.contains( "+pos" ) ); assertEquals( 0, kSession.getEntryPoint( "DEFAULT" ).getObjects().size() ); assertEquals( 0, getNegativeObjects(kSession).size() );
public Boolean call() throws Exception { EntryPoint ep = ksession.getEntryPoint("EP" + index); FactHandle[] fhs = new FactHandle[15]; for (int j = 0; j < 3; j++) { for (int i = 0; i < 5; i++) { fhs[i * 3] = ep.insert("" + i); fhs[i * 3 + 1] = ep.insert(new Long(i)); fhs[i * 3 + 2] = ep.insert(new Integer(i)); } for (int i = 0; i < 5; i++) { if (i == index+j) continue; ep.delete(fhs[i * 3]); ep.delete(fhs[i * 3 + 1]); ep.delete(fhs[i * 3 + 2]); } } return true; } }
@Test public void testExpires() throws Exception { EntryPoint entryPoint = kieSession.getEntryPoint("EventStream"); StockTick event = new StockTick(); FactHandle handle = entryPoint.insert(event); assertTrue(entryPoint.getFactHandles().contains(handle)); kieSession.fireAllRules(); assertTrue(entryPoint.getFactHandles().contains(handle)); advanceTime(5, TimeUnit.SECONDS); kieSession.fireAllRules(); assertFalse(entryPoint.getFactHandles().contains(handle)); }
@Test @Ignore //FIXME I used to keep all null-context fields... but then memory would blow up. Now I keep only the last one, but then I must override that for accumulates... public void testAggregate() throws Exception { getKSession().getEntryPoint("in_Limit").insert(18); EntryPoint ep = getKSession().getEntryPoint("in_Age"); ep.insert(10); ep.insert(20); ep.insert(30); ep.insert(40); getKSession().fireAllRules(); checkFirstDataFieldOfTypeStatus(getKbase().getFactType(packageName,"Summa"),true,false, null,90.0); checkGeneratedRules(); }
@Test public void testCenterBasedClustering() throws Exception { setKSession( getModelSession( source1, VERBOSE ) ); setKbase( getKSession().getKieBase() ); KieSession kSession = getKSession(); kSession.fireAllRules(); //init model kSession.getEntryPoint( "in_Fld0" ).insert( "y" ); kSession.getEntryPoint( "in_Fld1" ).insert( 2.0 ); kSession.getEntryPoint( "in_Fld2" ).insert( -1.0 ); kSession.fireAllRules(); FactType mu = kSession.getKieBase().getFactType( packageName, "DistanceMembership" ); Collection mus = kSession.getObjects( new ClassObjectFilter( mu.getFactClass()) ); assertTrue( mus.size() > 0 ); for ( Object x : mus ) { Integer ix = (Integer) mu.get( x, "index" ); String lab = (String) mu.get( x, "label" ); Double m = (Double) mu.get( x, "mu" ); if ( ix == 0 ) { assertEquals( "Klust1", lab ); assertEquals( 41.1, m, 0.001 ); } else if ( ix == 1 ) { assertEquals( "Klust2", lab ); assertEquals( 14704.428, m, 0.001 ); } } checkGeneratedRules(); }
ksession.setGlobal( "list", list ); EntryPoint aep = ksession.getEntryPoint( "a-ep" ); aep.insert( new A() ); EntryPoint bep = ksession.getEntryPoint( "b-ep" ); bep.insert( new B() ); EntryPoint cep = ksession.getEntryPoint( "c-ep" ); cep.insert( new C() ); aep = ksession.getEntryPoint( "a-ep" ); assertEquals( 1, aep.getFactHandles().size() ); bep = ksession.getEntryPoint( "b-ep" ); assertEquals( 1, bep.getFactHandles().size() ); cep = ksession.getEntryPoint( "c-ep" ); assertEquals( 1, cep.getFactHandles().size() ); aep = ksession.getEntryPoint( "a-ep" ); assertEquals( 0, aep.getFactHandles().size() ); bep = ksession.getEntryPoint( "b-ep" ); assertEquals( 0, bep.getFactHandles().size() ); cep = ksession.getEntryPoint( "c-ep" ); assertEquals( 1, cep.getFactHandles().size() );
@Test public void testComplexFunctionsNested2() throws Exception { setKSession( getModelSession( source2, VERBOSE ) ); setKbase( getKSession().getKieBase() ); FactType userAge1 = getKbase().getFactType( packageName, "UserAge" ); FactType userAge2 = getKbase().getFactType( packageName, "UserAgeComplex" ); FactHandle h = getKSession().getEntryPoint( "in_Age" ).insert( 10.0 ); getKSession().fireAllRules(); checkFirstDataFieldOfTypeStatus( userAge1, true, false, null, 6270.0 ); checkFirstDataFieldOfTypeStatus( userAge2, true, false, null, 44.1 ); System.out.println( "_________________________________________________________________" ); FactType age = getKbase().getFactType( packageName, "Age" ); Object aged = getKSession().getObjects( new ClassObjectFilter( age.getFactClass() ) ).iterator().next(); getKSession().delete( getKSession().getFactHandle( aged ) ); getKSession().fireAllRules(); assertEquals( 0, getKSession().getFactCount() ); getKSession().getEntryPoint( "in_Age" ).insert( 20.0 ); getKSession().fireAllRules(); checkFirstDataFieldOfTypeStatus( userAge1, true, false, null, 9570.0 ); checkFirstDataFieldOfTypeStatus( userAge2, true, false, null, 115.2 ); getKSession().getEntryPoint( "in_Age" ).insert( 30.0 ); getKSession().fireAllRules(); checkFirstDataFieldOfTypeStatus( userAge1, true, false, null, 12870.0 ); checkFirstDataFieldOfTypeStatus( userAge2, true, false, null, 306.3 ); assertEquals( 4, getKSession().getFactCount() ); checkGeneratedRules(); }
final EntryPoint ep = ksession.getEntryPoint("testep2"); ksession.setGlobal("list", list); ksession.insert(new Cheese("cheddar")); ksession.fireAllRules(); ep.insert(new Person("darth")); Thread.sleep(500); ksession.halt();
@Test public void testFactLeak() throws InterruptedException { //DROOLS-131 String drl = "package org.drools.test; \n" + "global java.util.List list; \n" + "" + "" + "rule Intx when\n" + " $x : Integer() from entry-point \"x\" \n" + "then\n" + " list.add( $x ); \n" + "end"; int N = 1100; KieBase kb = loadKnowledgeBaseFromString( drl ); final KieSession ks = kb.newKieSession(); ArrayList list = new ArrayList(); ks.setGlobal( "list", list ); new Thread(ks::fireUntilHalt).start(); try { for ( int j = 0; j < N; j++ ) { ks.getEntryPoint( "x" ).insert( new Integer( j ) ); } Thread.sleep( 1000 ); } finally { ks.halt(); ks.dispose(); assertEquals( N, list.size() ); } }
"\n"; final KieBaseConfiguration kbconfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbconfig.setOption(EventProcessingOption.STREAM); final KieSession session = kbase.newKieSession(); final EntryPoint ep01 = session.getEntryPoint("ep01"); session.insert(hiwaesdk); final long LIMIT = 20; ep01.insert(new IntEvent((int) i)); //Thread.sleep (0x1); } if (i % 1000 == 0) { System.out.println(i); session.halt(); session.dispose();
final KieBaseConfiguration kbconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbconf.setOption(EventProcessingOption.STREAM); final KieBase kbase = loadKnowledgeBaseFromString(kbconf, str); final KieSession ksession = kbase.newKieSession(); final EntryPoint ep = ksession.getEntryPoint("X"); final List list = new ArrayList(); ksession.setGlobal("list", list); ecs.submit(() -> { try { ksession.fireUntilHalt(); return true; } catch (final Exception e) { if (currentTimeInMillis > lastTimeInserted) { lastTimeInserted = currentTimeInMillis; ep.insert(new StockTick(j++, s, 0.0, 0));
@Test public void testDeclaredLengthWindowInRule() { EntryPoint entryPoint = ksession.getEntryPoint("EventStream"); List<Long> result = new ArrayList<Long>(); ksession.setGlobal("result", result); TestEvent event; for (int i = 1; i <= 10; i++) { event = new TestEvent(null, "lengthDec", null); entryPoint.insert(event); ksession.fireAllRules(); assertEquals((i < 5 ? i : 5), result.get(result.size() - 1) .longValue()); } }
@Test public void testProperties() throws Exception { getKSession().getEntryPoint( "in_Vallued" ).insert(1); getKSession().getEntryPoint( "in_Intervalled" ).insert(8.3); getKSession().getEntryPoint( "in_Cat" ).insert("aa"); getKSession().getEntryPoint( "in_Sort" ).insert(1); getKSession().fireAllRules(); Collection<EventFactHandle> fact1 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Vallued").getFactClass())); assertEquals( 1, fact1.size() ); //assertEquals(true, getKbase().getFactType(packageName, "Vallued").get(fact1.iterator().next().getObject(), "continuous")); Collection<EventFactHandle> fact2 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Intervalled").getFactClass())); assertEquals( 1, fact2.size() ); //assertEquals(true, getKbase().getFactType(packageName,"Intervalled").get(fact2.iterator().next().getObject(),"continuous")); Collection<EventFactHandle> fact3 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Cat").getFactClass())); assertEquals( 1, fact3.size() ); //assertEquals(true, getKbase().getFactType(packageName,"Cat").get(fact3.iterator().next().getObject(),"categorical")); Collection<EventFactHandle> fact4 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Sort").getFactClass())); assertEquals( 1, fact4.size() ); //assertEquals(true, getKbase().getFactType(packageName,"Sort").get(fact4.iterator().next().getObject(),"ordinal")); checkGeneratedRules(); }
public Boolean call() throws Exception { List results = new ArrayList(); ksession.setGlobal("results" + index, results); ksession.insert("ACME" + index); EntryPoint ep = ksession.getEntryPoint("EP" + index); for (int i = 0; i < 12; i++) { ep.insert(new StockTick(1, "ACME" + index, i - 50)); ep.insert(new StockTick(2, "DROO" + index, i)); ep.insert(new StockTick(3, "ACME" + index, i)); } return true; } }
@Test public void testFromEntryPoint() throws InstantiationException, IllegalAccessException { PackageDescr pkg = DescrFactory .newPackage().name("org.drools") .newRule().name("from rule") .lhs() .pattern("String").id("s", false).from().entryPoint("EventStream").end() .end() .rhs("//System.out.println(s);") .end().getDescr(); KiePackage kpkg = compilePkgDescr( pkg, "org.drools" ); assertEquals( "org.drools", kpkg.getName() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( Collections.singletonList( kpkg ) ); KieSession ksession = createKnowledgeSession(kbase); EntryPoint ep = ksession.getEntryPoint( "EventStream" ); ep.insert( "Hello World!" ); int rules = ksession.fireAllRules(); assertEquals( 1, rules ); }
@Test public void testLengthWindow() { EntryPoint entryPoint = ksession.getEntryPoint("EventStream"); TestEvent event; for (int i = 1; i <= 20; i++) { event = new TestEvent(null, "length", null); entryPoint.insert(event); assertEquals((i < 10 ? i : 10), ((Long) ksession.getQueryResults("TestLengthWindow") .iterator().next().get("$eventCount")).intValue()); } }
" then \n" + "end"; KieBaseConfiguration kbconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); kbconf.setOption( EventProcessingOption.STREAM ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( kbconf ); Resource resource = ResourceFactory.newByteArrayResource( timerRule.getBytes() ); Collection<KiePackage> kpackages = buildKnowledgePackage( resource, ksession.getEntryPoint( "Test" ).insert( type.newInstance() ); ksession.fireAllRules(); ksession = disposeAndReloadSession( ksession,