Refine search
@Test public void testQueryWithOptionalOr() { // DROOLS-1386 String str = "package org.test\n" + "import " + Question.class.getCanonicalName() + "\n" + "import " + QuestionVisible.class.getCanonicalName() + "\n" + "query QuestionsKnowledge\n" + " $question: Question()\n" + " $visible: QuestionVisible(question == $question) or not QuestionVisible(question == $question)\n" + "end\n"; KieSession ksession = new KieHelper().addContent( str, ResourceType.DRL ).build().newKieSession(); Question question = new Question(); ksession.insert( question ); QueryResults results = ksession.getQueryResults("QuestionsKnowledge"); assertEquals( 1, results.size() ); QueryResultsRow row = results.iterator().next(); assertSame( question, row.get( "$question" ) ); QuestionVisible questionVisible = new QuestionVisible( question ); ksession.insert( questionVisible ); results = ksession.getQueryResults("QuestionsKnowledge"); assertEquals( 1, results.size() ); row = results.iterator().next(); assertSame( question, row.get( "$question" ) ); assertSame( questionVisible, row.get( "$visible" ) ); } }
context.loadTaskVariables(task); kieSession.insert(task); kieSession.fireAllRules(); Set<Assignment> assignments = new TreeSet<>(); String queryName = System.getProperty("org.jbpm.task.assignment.rules.query"); 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");
@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() ); }
@Test public void testQuery2() throws Exception { KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_Query.drl")); KieSession session = createKieSession( kbase ); session.fireAllRules(); QueryResults results = getQueryResults(session, "assertedobjquery" ); assertEquals( 1, results.size() ); assertEquals( new InsertedObject( "value1" ), ((InternalFactHandle) results.iterator().next().getFactHandle( "assertedobj" )).getObject() ); }
private static void execute(KieContainer kc) { KieSession ksession = kc.newKieSession("rule2KS"); Person p1 = new Person(35, "xu", "handsome"); Person p2 = new Person(30, "hua", "handsome"); ksession.insert(p1); ksession.insert(p2); ksession.fireAllRules(); QueryResults results = ksession.getQueryResults("people2"); System.out.println("we have " + results.size() + " people over the age of 30"); System.out.println("These people are are over 30:"); for (QueryResultsRow row : results) { Person person = (Person) row.get("person"); System.out.println(person.getName() + "\n"); } ksession.dispose(); } }
@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()); } }
@Test public void withResultOfSize1Test() { prepare1(); clock.advanceTime(1, TimeUnit.SECONDS); ksession.insert(new QueryItemPojo()); ksession.insert(new SolicitFirePojo()); int fired = ksession.fireAllRules(); assertEquals(1, fired); assertEquals(1, myGlobal.size()); assertEquals(1, ((QueryResults) myGlobal.get(0)).size()); } @Test
kSession.insert( "trigger" ); kSession.fireAllRules(); QueryResults qrs = kSession.getQueryResults( "Cold", "MockCold", Variable.v ); assertTrue( qrs.iterator().hasNext() ); Object val = qrs.iterator().next().get( "$result" ); Assert.assertEquals( 0.56, val );
session.insert( "faa" ); session.fireAllRules(); for ( Object o : session.getObjects() ) { System.out.println( ">>> " + o ); assertEquals( 1, session.getObjects().size() ); Query q1 = session.getKieBase().getQuery( "org.drools.abductive.test", "foo" ); Query q2 = session.getKieBase().getQuery( "org.drools.abductive.test", "bar" ); QueryResults q20res = new FlatQueryResults((QueryResultsImpl) session.getQueryResults( "bar", "foo", Variable.v )); assertEquals( 1, q10res.size() ); assertEquals( 1, q11res.size() ); assertEquals( 1, q20res.size() ); QueryResultsRow row10 = q10res.iterator().next(); QueryResultsRow row11 = q11res.iterator().next(); QueryResultsRow row20 = q20res.iterator().next(); assertEquals( "foo", row10.get( "$s" ) ); assertEquals( "foo", row11.get( "$s" ) ); assertEquals( "foo", row20.get( "$s" ) ); Object foo = row20.get( "$foo" );
TraitFactory.setMode( mode, ks.getKieBase() ); ks.fireAllRules(); QueryResults res = ks.getQueryResults( "QueryTraitA" ); assertEquals( 1, res.size() );
@Test public void deleteFactTwiceTest() { FactHandle george = ksession.insert(new Person("George", 19)); QueryResults results = ksession.getQueryResults("countPerson"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(1L); ksession.delete(george); results = ksession.getQueryResults("countPerson"); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(0L); ksession.delete(george); Assertions.assertThat(results).isNotEmpty(); Assertions.assertThat(results.iterator().next().get("$personCount")).isEqualTo(0L); }
ksession.setGlobal("myGlobal", myGlobal); ksession.insert(new QueryItemPojo()); ksession.insert(new SolicitFirePojo()); int fired = ksession.fireAllRules(); assertEquals(1, fired); assertEquals(1, myGlobal.size()); assertEquals(2, ((QueryResults) myGlobal.get(0)).size()); // notice 1 is manually inserted, 1 get inserted from rule's RHS, for a total of 2.
@Test public void testEventGenerationMaxTimeAndMaxItems() throws DroolsParserException, IOException, Exception{ KieBase kbase = loadKnowledgeBase(TEST_RULE_FILE); KieSession ksession = kbase.newKieSession(); // create unrestricted event generator SimpleEventGenerator myGenerator = new SimpleEventGenerator(ksession , new SimpleEventListener(ksession)); // generate at most 10 events not exceeding 1 min, starting from the session clock myGenerator.addEventSource("Conveyor1", new Event(EventType.CUSTOM, null), PseudoSessionClock.timeInSeconds(4), PseudoSessionClock.timeInSeconds(6), PseudoSessionClock.timeInMinutes(1), 10); myGenerator.generate(); assertEquals(ksession.getQueryResults("all inserted events").size(), ksession.getQueryResults("all inserted events with generation time < 1 min").size()); assertTrue(ksession.getQueryResults("all inserted events with generation time < 1 min").size()<=10); }
TraitFactory.setMode( mode, ks.getKieBase() ); ks.setGlobal( "list", list ); ks.fireAllRules(); QueryResults res = ks.getQueryResults( "queryA" ); Iterator<QueryResultsRow> iter = res.iterator(); Object a = iter.next().get( "$x" ); assertFalse( iter.hasNext() ); assertEquals( 1, res.size() );
results.size() ); results.size() ); results.size() ); results = getQueryResults( session, "2 persons with the same status" ); assertEquals( 2, results.size() ); results = getQueryResults( session, "2 persons with the same status" ); assertEquals( 1, results.size() ); results.size() ); results.size() );
private void doIt(Object o1, Object o2, String query, int expected, boolean doUpdate, boolean doRetract) { KieSession knowledgeSession = knowledgeBase.newKieSession(); try { knowledgeSession.insert( o1 ); FactHandle handle2 = knowledgeSession.insert( o2 ); if ( doUpdate ) { knowledgeSession.update( handle2, o2 ); } else if ( doRetract ) { knowledgeSession.retract( handle2 ); handle2 = knowledgeSession.insert( o2 ); } QueryResults queryResults = knowledgeSession.getQueryResults( query ); assertEquals( expected, queryResults.size() ); } finally { knowledgeSession.dispose(); } }
KieSession ksession = kbase.newKieSession(); ksession.fireAllRules(); assertEquals( 2.0, ksession.getQueryResults( "getNeuron" ).iterator().next().get( "$value" ) );
@Test public void testQueryWithParams() throws Exception { KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_QueryWithParams.drl")); KieSession session = createKieSession( kbase ); session.fireAllRules(); String queryName = "assertedobjquery"; String [] arguments = new String[]{"value1"}; QueryResultsImpl resultsImpl = (QueryResultsImpl) session.getQueryResults( queryName, arguments ); QueryResults results = getQueryResults( session, queryName, arguments ); assertEquals( 1, results.size() ); InsertedObject value = new InsertedObject( "value1" ); assertEquals( value, ((InternalFactHandle) results.iterator().next().getFactHandle( "assertedobj" )).getObject() ); assertEquals( value, results.iterator().next().get("assertedobj") ); results = getQueryResults( session, "assertedobjquery", new String[]{"value3"} ); assertEquals( 0, results.size() ); results = getQueryResults( session, "assertedobjquery2", new String[]{null, "value2"} ); assertEquals( 1, results.size() ); assertEquals( new InsertedObject( "value2" ), ((InternalFactHandle) results.iterator().next().getFactHandle( "assertedobj" )).getObject() ); results = getQueryResults(session, "assertedobjquery2", new String[]{"value3", "value2"} ); assertEquals( 1, results.size() ); assertEquals( new InsertedObject( "value2" ), ((InternalFactHandle) results.iterator().next().getFactHandle( "assertedobj" )).getObject() ); }
@Test public void testQuery() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("org/drools/compiler/integrationtests/simple_query_test.drl"), ResourceType.DRL); if (kbuilder.hasErrors()) { fail(kbuilder.getErrors().toString()); } InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); ksession = createKnowledgeSession(kbase); ksession.insert( new Cheese( "stinky", 5 ) ); ksession.insert( new Cheese( "smelly", 7 ) ); List<Command<?>> commands = new ArrayList<Command<?>>(); commands.add(CommandFactory.newQuery("numStinkyCheeses", "simple query")); Command<?> cmds = CommandFactory.newBatchExecution(commands); ExecutionResults result = (ExecutionResults) ksession.execute(cmds); assertNotNull("Batch execution result is null!", result); Object queryResultsObject = result.getValue("numStinkyCheeses"); assertTrue("Retrieved object is null or incorrect!", queryResultsObject != null && queryResultsObject instanceof QueryResults); assertEquals( 1, ((QueryResults) queryResultsObject).size() ); }
@Test public void testQueryRemoval() throws Exception { KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("simple_query_test.drl")); KieSession session = createKieSession( kbase ); final Cheese stilton = new Cheese( "stinky", 5 ); session.insert( stilton ); session = SerializationHelper.getSerialisedStatefulKnowledgeSession(session, true); org.kie.api.runtime.rule.QueryResults results = session.getQueryResults( "simple query" ); assertEquals( 1, results.size() ); Rule rule = kbase.getKiePackage( "org.drools.compiler.test" ).getRules().iterator().next(); assertEquals( "simple query", rule.getName()); kbase.removeQuery( "org.drools.compiler.test", "simple query" ); assertTrue( kbase.getKiePackage( "org.drools.compiler.test" ).getRules().isEmpty() ); try { results = session.getQueryResults( "simple query" ); } catch ( Exception e ) { assertTrue( e.getMessage().endsWith( "does not exist") ); } }