【问题标题】:How to retrieve fact objects from decision tables in Drools 4.x如何从 Drools 4.x 中的决策表中检索事实对象
【发布时间】:2010-02-17 22:53:06
【问题描述】:

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

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

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

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

RuleBase ruleBase = RuleBaseFactory.newRuleBase();
StatefulSession session = ruleBase.newStatefulSession(); 
MyFacts nmrs = new MyFacts();
session.insert(nmrs);
session.fireAllRules();

用于检索查询的 drools 文件如下所示:

query "resultQuery"
    response :  Outcome()
end

谢谢

【问题讨论】:

    标签: drools rule-engine business-rules drools-flow


    【解决方案1】:

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

    您还可以获取所有事实句柄的集合,并(丑陋)通过查找 instanceof Outcome 等进行迭代......

    【讨论】:

    • 当我尝试使用 StringReader(queryString) 在包生成器中将查询添加为 addPackageFromDRL 时,由于某种原因它失败了。我必须在最后一个规则文件之前做一个丑陋的黑客攻击
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多