【问题标题】:Setting globals in Drools在 Drools 中设置全局变量
【发布时间】:2010-12-21 14:18:44
【问题描述】:

如何在 Drools 4 中从规则中设置全局变量?如果规则触发,我想设置一个布尔值,以便它可以从另一个显着性较低的规则中读取它。

【问题讨论】:

    标签: drools globals jboss-rules


    【解决方案1】:

    假设您使用的是 Drools 5.x,您可以在规则结果中执行此操作:

    kcontext.getKnowledgeRuntime().setGlobal(name, value);

    【讨论】:

    • 对不起,我忘了说它是 Drools 4
    【解决方案2】:

    你也许可以这样做:

    drools.getWorkingMemory().setGlobal...(类似于上面,kris 所说的)。

    【讨论】:

      【解决方案3】:

      我不会在这里使用全局变量。您正在从其他事实中推断出一个新事实,您只需“插入”新事实并让其他规则触发。

      rule "some rule"
      when
          //…
      then
          insert(new MyNewFact())
      end
      

      无法保证 Drools 会重新评估您的规则以响应插入(新)全局并且您的其他规则可能不会触发。但是,它将重新评估以响应插入(或撤回或修改)的事实。

      【讨论】:

        猜你喜欢
        • 2017-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-18
        • 2020-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多