if (queryName != null) { logger.debug("Query {} is going to be used to retrieve results from working memory", queryName); QueryResults results = kieSession.getQueryResults(queryName); results.forEach(row -> assignments.add((Assignment)row.get("assignment"))); } else { logger.debug("No query defined, retrieving all facts of type Assignment"); Assignment selected = assignments.iterator().next(); logger.debug("Selected assignment is {} for task {}", selected, task); return selected;
@Test public void testDeclaredLengthWindowInQuery() { EntryPoint entryPoint = ksession.getEntryPoint("EventStream"); TestEvent event; for (int i = 1; i <= 10; i++) { event = new TestEvent(null, "lengthDec", null); entryPoint.insert(event); assertEquals((i < 5 ? i : 5), ((Long) ksession .getQueryResults("TestDeclaredLengthWindow") .iterator().next().get("$eventCount")).intValue()); } }
public void runQueryListenerTest( QueryListenerOption option ) throws IOException, ClassNotFoundException { String str = ""; str += "package org.drools.compiler.integrationtests\n"; str += "import " + Cheese.class.getCanonicalName() + " \n"; str += "query cheeses(String $type) \n"; str += " $cheese : Cheese(type == $type) \n"; str += "end\n"; KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBaseFromString(str)); KieSession ksession = createKieSession( kbase, option ); // insert some data into the session for ( int i = 0; i < 10000; i++ ) { ksession.insert( new Cheese( i % 2 == 0 ? "stilton" : "brie" ) ); } // query the session List<Cheese> cheeses; for ( int i = 0; i < 100; i++ ) { org.kie.api.runtime.rule.QueryResults queryResults = ksession.getQueryResults( "cheeses", new Object[]{"stilton"} ); cheeses = new ArrayList<Cheese>(); for ( QueryResultsRow row : queryResults ) { cheeses.add( (Cheese) row.get( "$cheese" ) ); } assertEquals( 5000, cheeses.size() ); } }
@Test public void testQueryWithCollect() throws Exception { KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_Query.drl")); KieSession session = createKieSession( kbase ); session.fireAllRules(); QueryResults results = getQueryResults( session, "collect objects" ); assertEquals( 1, results.size() ); final QueryResultsRow row = results.iterator().next(); final List list = (List) row.get( "$list" ); assertEquals( 2, list.size() ); }
expectedXml += " </identifiers>\n"; expectedXml += " <row>\n"; row = it1.next(); expectedXml += " <org.drools.camel.testdomain.Cheese>\n"; expectedXml += " <type>stilton</type>\n"; expectedXml += " </row>\n"; expectedXml += " <row>\n"; row = it1.next(); expectedXml += " <org.drools.camel.testdomain.Cheese>\n"; expectedXml += " <type>stilton</type>\n"; expectedXml += " </identifiers>\n"; expectedXml += " <row>\n"; row = it2.next(); expectedXml += " <org.drools.camel.testdomain.Cheese reference=\"../../../../result/query-results/row/org.drools.camel.testdomain.Cheese\"/>\n"; expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />"; for ( org.kie.api.runtime.rule.QueryResultsRow result : results ) { list = new ArrayList(); list.add( result.get( "stilton" ) ); list.add( result.get( "cheddar" ) ); newSet.add( list );
assertEquals( 3, results.size() ); assertEquals( 2, results.getIdentifiers().length ); list.add( result.get( "stilton" ) ); list.add( result.get( "cheddar" ) ); newSet.add( list ); assertEquals( set, newSet ); for ( org.kie.api.runtime.rule.QueryResultsRow result : flatResults ) { list = new ArrayList(); list.add( result.get( "stilton" ) ); list.add( result.get( "cheddar" ) ); newSet.add( list );
@Test public void testQueryFromCode() { final String drl = "import org.drools.compiler.oopath.model.Thing;\n" + "query isContainedIn( Thing $x, Thing $y )\n" + " $y := /$x/children\n" + "or\n" + " ( $z := /$x/children and isContainedIn( $z, $y; ) )\n" + "end\n"; final Thing smartphone = new Thing("smartphone"); final List<String> itemList = Arrays.asList(new String[] { "display", "keyboard", "processor" }); itemList.stream().map(item -> new Thing(item)).forEach((thing) -> smartphone.addChild(thing)); final KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); ksession.insert(smartphone); final QueryResults queryResults = ksession.getQueryResults("isContainedIn", new Object[] { smartphone, Variable.v }); final List<String> resultList = StreamSupport.stream(queryResults.spliterator(), false) .map(row -> ((Thing) row.get("$y")).getName()).collect(Collectors.toList()); assertThat(resultList).as("Query does not contain all items").containsAll(itemList); ksession.dispose(); }
@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()); } }
private void verifyWithQueryNoPersonsPresentInFacts() { QueryResults results = ksession.getQueryResults("persons"); assertThat(results).isNotEmpty(); results = ksession.getQueryResults("persons"); assertThat(results).isNotEmpty(); final QueryResultsRow resultsRow = results.iterator().next(); assertThat(resultsRow.get("$persons")).isInstanceOf(List.class); final List<Object> persons = (List<Object>) resultsRow.get("$persons"); assertThat(persons).isEmpty(); }
@Test public void testQueryWithCollect() throws Exception { KnowledgeBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_Query.drl")); StatefulKnowledgeSession session = createKnowledgeSession( kbase ); session.fireAllRules(); org.kie.api.runtime.rule.QueryResults results = session.getQueryResults( "collect objects" ); assertEquals( 1, results.size() ); final QueryResultsRow row = results.iterator().next(); final List list = (List) row.get( "$list" ); assertEquals( 2, list.size() ); }
assertEquals( 4, results.size() ); List names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() ); assertEquals( 3, results.size() ); names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() ); names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() ); assertTrue( names.contains( "yoda" ) ); results = ksession.getQueryResults( "peeps", names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() ); assertTrue( names.contains( "darth" ) ); names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() );
assertEquals( 3, results.size() ); assertEquals( 2, results.getIdentifiers().length ); final Set newSet = new HashSet(); for ( final org.kie.api.runtime.rule.QueryResultsRow result : results ) { list = new ArrayList(); list.add( result.get( "stilton" ) ); list.add( result.get( "cheddar" )); newSet.add( list ); assertEquals( set, newSet );
session.insert(new BeanA(seed)); final QueryResults results = session.getQueryResults("Query"); Assertions.assertThat(results).hasSize(numberOfObjects); for (final QueryResultsRow row : results) { final BeanA bean = (BeanA) row.get("bean"); Assertions.assertThat(bean.getSeed()).isEqualTo(seed);
@Test public void testTimeWindow() throws InterruptedException { EntryPoint entryPoint = ksession.getEntryPoint("EventStream"); final long results[] = new long[] { 1, 2, 3, 3, 3 }; TestEvent event; for (int i = 0; i < 5; i++) { event = new TestEvent(null, "time", null); entryPoint.insert(event); assertEquals(results[i], ksession.getQueryResults("TestTimeWindow") .iterator().next().get("$eventCount")); clock.advanceTime(100, TimeUnit.MILLISECONDS); } }
private <T> void verifyFactsWithQuery(final Class<T> expectedClassOfFacts, final String queryToGetFacts, final T... factsToVerify) { final QueryResults results = ksession.getQueryResults(queryToGetFacts); assertThat(results).isNotEmpty(); final QueryResultsRow resultsRow = results.iterator().next(); assertThat(resultsRow.get("$" + queryToGetFacts)).isInstanceOf(List.class); final List<Object> objects = (List<Object>) resultsRow.get("$" + queryToGetFacts); assertThat(objects).hasSize(factsToVerify.length); assertThat(objects).hasOnlyElementsOfType(expectedClassOfFacts); assertThat(objects).containsAll(Arrays.asList(factsToVerify)); }
ksession.insert( p4 ); org.kie.api.runtime.rule.QueryResults results = ksession.getQueryResults( "peeps", new Object[]{Variable.v, Variable.v, Variable.v, Variable.v} ); assertEquals( 4, results.size() ); List names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() ); assertEquals( 4, names.size() ); assertTrue( names.contains( "luke" ) ); assertTrue( names.contains( "darth" ) ); results = ksession.getQueryResults( "peeps", new Object[]{p1, Variable.v, Variable.v, Variable.v} ); assertEquals( 1, results.size() ); names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() ); assertEquals( 1,
assertEquals( 2, results.size() ); List names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() ); assertEquals( 1, results.size() ); names = new ArrayList(); for ( org.kie.api.runtime.rule.QueryResultsRow row : results ) { names.add( ((Person) row.get( "$p" )).getName() );
@Test(timeout = 20000) public void testQueries() throws InterruptedException { final int numberOfObjects = 100; final TestExecutor exec = counter -> { final String query = "import " + BeanA.class.getCanonicalName() + ";\n" + "query Query " + " bean : BeanA( seed == "+ counter +" ) " + "end"; final KieBase base = getKieBase(query); final KieSession session = base.newKieSession(); try { final BeanA bean = new BeanA(counter); session.insert(bean); for (int i = 0; i < numberOfObjects; i++) { if (i != counter) { session.insert(new BeanA(i)); } } final QueryResults results = session.getQueryResults("Query"); Assertions.assertThat(results).hasSize(1); for (final QueryResultsRow row : results) { Assertions.assertThat(row.get("bean")).isEqualTo(bean); } return true; } finally { session.dispose(); } }; parallelTest(NUMBER_OF_THREADS, exec); }