如何从Drools 4.x中的决策表中检索事实对象

如何从Drools 4.x中的决策表中检索事实对象,drools,rule-engine,business-rules,drools-flow,Drools,Rule Engine,Business Rules,Drools Flow,我们的团队正在使用Drools规则流进行评估。现在我们计划迁移到决策表 在Drools ruleflow版本中,我们曾经拥有DRL文件,这些文件具有查询组件,用于从工作内存中提取在DRL文件上下文中创建的对象 我被困在决策表中做同样的事情?我们正在使用StatefulSession来触发规则。此外,这些事实被插入规则的RHS中;我们在发射时没有FactHandles 用于引导Drools规则引擎的代码如下: RuleBase ruleBase = RuleBaseFactory.newRuleB

我们的团队正在使用Drools规则流进行评估。现在我们计划迁移到决策表

在Drools ruleflow版本中,我们曾经拥有DRL文件,这些文件具有查询组件,用于从工作内存中提取在DRL文件上下文中创建的对象

我被困在决策表中做同样的事情?我们正在使用StatefulSession来触发规则。此外,这些事实被插入规则的RHS中;我们在发射时没有FactHandles

用于引导Drools规则引擎的代码如下:

RuleBase ruleBase = RuleBaseFactory.newRuleBase();
StatefulSession session = ruleBase.newStatefulSession(); 
MyFacts nmrs = new MyFacts();
session.insert(nmrs);
session.fireAllRules();
query "resultQuery"
    response :  Outcome()
end
用于检索查询的drools文件如下所示:

RuleBase ruleBase = RuleBaseFactory.newRuleBase();
StatefulSession session = ruleBase.newStatefulSession(); 
MyFacts nmrs = new MyFacts();
session.insert(nmrs);
session.fireAllRules();
query "resultQuery"
    response :  Outcome()
end

谢谢

目前还不直接支持XLS决策表中的查询。但是,决策表编译到drl本身,因此可以通过编程方式在事实之后向drl添加查询(可能在单独的drl文件中)


您还可以获取所有事实句柄的集合,并(丑陋地)迭代查找结果的实例,等等

当我尝试在带有StringReader(queryString)的package builder中将查询添加为addPackageFromDRL时,由于某种原因它失败了。我不得不对最后一个规则文件做一个可怕的修改