Java 如何从会话访问DRL内部创建的事实?

Java 如何从会话访问DRL内部创建的事实?,java,drools,rule-engine,kie,Java,Drools,Rule Engine,Kie,我创建了一个DRL文件,如下所示- rule 'CHECK_AGE_LIMIT' when $payroll : Payroll(); Participant(null != dob, $dob : dob); Plan(null!= eligibilityAge, $eligibilityAge:eligibilityAge); eval (!(Peri

我创建了一个DRL文件,如下所示-

rule 'CHECK_AGE_LIMIT'
       when        
              $payroll : Payroll();
              Participant(null != dob, $dob : dob);
              Plan(null!= eligibilityAge, $eligibilityAge:eligibilityAge);
              eval (!(Period.between($dob, LocalDate.now()).getYears() > $eligibilityAge))
       then
            Result $result = new Result(false, "Age Eligibility Not Met");
            insert( $result ); 
       end
如何访问调用Java类的结果

这就是我对DRL的称呼-

    commands.add(CommandFactory.newFireAllRules());
    commands.add(CommandFactory.newGetObjects(GET_OBJECTS_KEY));
    ExecutionResults executionResults = kSession.execute(CommandFactory.newBatchExecution(commands));
虽然我可以访问我传递给DRL的所有事实,但我似乎找不到访问的方法,即如何访问结果


我知道我可以将结果作为事实传递给DRL。只是想了解是否有办法访问在DRL中创建的内容。

我相信GetObjectsCommand是一种方法。请确保您正在传递正确的筛选器-似乎您正在将字符串传递给getObjectsCommand构造函数,该构造函数指定的是“输出标识符”,而不是筛选器。 下面是一个与您的用例兼容的示例:

ObjectFilter filter = new ObjectFilter() {
    @Override
    public boolean accept(Object object) {
        if (object instanceof Result) {
            return true;
        }
        return false;
    }
};
commands.add(CommandFactory.newGetObjects(filter));

明确地说,您正在尝试访问添加到工作内存中的
$result
?作为
GET\u OBJECTS\u KEY
,您到底在传递什么?@roddyoffrozenpeas well no。。虽然我知道我可以访问$result可以访问。。。我想检查是否可以创建一个新的
结果
,并从调用的Java服务器访问它class@AntonGiertli获取\u对象\u键=“\u获取对象”