我正在将应用程序从drools 5.0.1移植到drools 6.0.1。在5.0.1中,以下查询代码工作正常:
import org.drools.QueryResults;
import org.drools.QueryResult;
QueryResults res = getSession().getQueryResults(
"the_query_name" , new Object[]{intActId} );
for ( QueryResult row : res ) {
ret = (RetrievedClass) row.get(0);
}
在6.0.1中,我应该使用kie API,但我不知道如何检索实际对象。 QueryResultsRow类没有get(int)方法或任何等价方法。它有get(字符串),但我不知道要传递什么字符串。
import org.kie.api.runtime.rule.QueryResults;
import org.kie.api.runtime.rule.QueryResultsRow;
QueryResults res = getSession().getQueryResults(
"the_query_name" , new Object[]{intActId} );
for ( QueryResultsRow row : results ) {
ret = ????
}
答案 0 :(得分:0)
由于您没有发布查询文本,请考虑Drools" Expert"手册:
query "people over the age of x" (int x, String y)
person : Person( age > x, location == y )
end
从结果行中检索某些内容:
for ( QueryResultsRow row : results ) {
Person person = ( Person ) row.get( "person" );
System.out.println( person.getName() );
}
另请阅读QueryResultRow继承的org.kie.api.runtime.rule.Row.get
的Javadoc:
get
Object get(String identifier)
Get the object that is bound to the given identifier
Parameters:
identifier - The identifier of the bound object