drools:如何从org.kie.api.runtime.rule.QueryResultsRow检索数据

时间:2014-08-05 18:11:20

标签: drools

我正在将应用程序从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 = ????
}

1 个答案:

答案 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