use of org.kie.api.runtime.rule.QueryResults in project drools by kiegroup.
the class PatternDSLTest method testQueryInvokingQuery2.
@Test
public void testQueryInvokingQuery2() {
final org.drools.model.Query2Def<java.lang.String, java.lang.String> queryDef_isRelatedTo2 = query("isRelatedTo2", java.lang.String.class, "x", java.lang.String.class, "y");
final org.drools.model.Query2Def<java.lang.String, java.lang.String> queryDef_isRelatedTo = query("isRelatedTo", java.lang.String.class, "x", java.lang.String.class, "y");
org.drools.model.Query isRelatedTo_build = queryDef_isRelatedTo.build(queryDef_isRelatedTo2.call(true, queryDef_isRelatedTo.getArg1(), queryDef_isRelatedTo.getArg2()));
final org.drools.model.Variable<org.drools.modelcompiler.domain.Relationship> var_$pattern_Relationship$4$ = declarationOf(org.drools.modelcompiler.domain.Relationship.class, "$pattern_Relationship$4$");
org.drools.model.Query isRelatedTo2_build = queryDef_isRelatedTo2.build(pattern(var_$pattern_Relationship$4$).expr("$expr$63$", queryDef_isRelatedTo2.getArg1(), (_this, x) -> org.drools.modelcompiler.util.EvaluationUtil.areNullSafeEquals(_this.getStart(), x), betaIndexedBy(java.lang.String.class, org.drools.model.Index.ConstraintType.EQUAL, 0, _this -> _this.getStart(), x -> x), reactOn("start")).expr("$expr$64$", queryDef_isRelatedTo2.getArg2(), (_this, y) -> org.drools.modelcompiler.util.EvaluationUtil.areNullSafeEquals(_this.getEnd(), y), betaIndexedBy(java.lang.String.class, org.drools.model.Index.ConstraintType.EQUAL, 1, _this -> _this.getEnd(), y -> y), reactOn("end")));
Model model = new ModelImpl().addQuery(isRelatedTo_build).addQuery(isRelatedTo2_build);
KieBase kieBase = KieBaseBuilder.createKieBaseFromModel(model);
KieSession ksession = kieBase.newKieSession();
ksession.insert(new Relationship("A", "B"));
ksession.insert(new Relationship("B", "C"));
QueryResults results = ksession.getQueryResults("isRelatedTo", "A", "B");
assertEquals(1, results.size());
String paramName = ((QueryImpl) ksession.getKieBase().getQuery("defaultpkg", "isRelatedTo")).getParameters()[1].getIdentifier();
assertEquals("B", results.iterator().next().get(paramName));
}
use of org.kie.api.runtime.rule.QueryResults in project drools by kiegroup.
the class QueryTest method testNonPositionalQuery.
@Test
public void testNonPositionalQuery() {
String str = "import " + Result.class.getCanonicalName() + ";" + "import " + Person.class.getCanonicalName() + ";" + "query findPerson( String $n, int $a )\n" + " $p : Person(name == $n, age == $a)\n" + "end";
KieSession ksession = getKieSession(str);
ksession.insert(new Person("Mark", 39));
ksession.insert(new Person("Mario", 41));
QueryResults results = ksession.getQueryResults("findPerson", "Mario", 41);
assertEquals(1, results.size());
Person p = (Person) results.iterator().next().get("$p");
assertEquals("Mario", p.getName());
}
use of org.kie.api.runtime.rule.QueryResults in project drools by kiegroup.
the class QueryTest method testQueryOneArgument.
@Test
public void testQueryOneArgument() {
String str = "import " + Person.class.getCanonicalName() + ";" + "query olderThan( int $age )\n" + " $p : Person(age > $age)\n" + "end ";
KieSession ksession = getKieSession(str);
ksession.insert(new Person("Mark", 39));
ksession.insert(new Person("Mario", 41));
QueryResults results = ksession.getQueryResults("olderThan", 40);
assertEquals(1, results.size());
Person p = (Person) results.iterator().next().get("$p");
assertEquals("Mario", p.getName());
}
use of org.kie.api.runtime.rule.QueryResults in project drools by kiegroup.
the class QueryTest method testPositionalRecursiveQueryWithUnification.
@Test
public void testPositionalRecursiveQueryWithUnification() {
String str = "import " + Relationship.class.getCanonicalName() + ";" + "query isRelatedTo(String x, String y)\n" + " Relationship (x, y;)\n" + " or\n" + " ( Relationship (z, y;) and ?isRelatedTo(x, z;))\n" + "end";
KieSession ksession = getKieSession(str);
ksession.insert(new Relationship("A", "B"));
ksession.insert(new Relationship("B", "C"));
QueryResults results = ksession.getQueryResults("isRelatedTo", "A", "C");
assertEquals(1, results.size());
final QueryResultsRow firstResult = results.iterator().next();
Object resultDrlx = firstResult.get("z");
assertTrue("B".equals(resultDrlx));
}
use of org.kie.api.runtime.rule.QueryResults in project drools by kiegroup.
the class QueryTest method testQueryCalling2Queries.
@Test
public void testQueryCalling2Queries() {
String str = "import " + Person.class.getCanonicalName() + ";" + "query isPersonOlderThan(Person p, int ageFrom)\n" + " Person(this == p, age > ageFrom)\n" + "end\n" + "\n" + "query isPersonYoungerThan(Person p, int ageTo)\n" + " Person(this == p, age < ageTo)\n" + "end\n" + "query getPersonsBetween(int ageFrom, int ageTo) \n" + " p : Person()\n" + " isPersonOlderThan(p, ageFrom;) and isPersonYoungerThan(p, ageTo;)\n" + "end\n" + "\n";
KieSession ksession = getKieSession(str);
ksession.insert(new Person("Mark", 39));
ksession.insert(new Person("Mario", 41));
QueryResults results = ksession.getQueryResults("getPersonsBetween", 40, 50);
assertEquals(1, results.size());
Person p = (Person) results.iterator().next().get("p");
assertEquals("Mario", p.getName());
}
Aggregations