java - 是否可以动态运行 Drools 规则?

标签 java drools

我的 drl 文件中有以下内容

rule 1
  when
    ...
  then
    ...
end

rule 2
  when
    ...
  then
    ...
end

....

rule 40
  when
    ...
  then
    ...
end

我想做的是按照我想要的顺序执行规则。例如 首先是 40,然后是 39 第二……等等。 我读过有关显着性的内容,但显着性的值(value)很难确定。我怎样才能以我想要的顺序阅读规则?

最佳答案

Drools 支持动态显着性。您可以根据传入数据中的任何表达式来定义它:

检查 Role Attributes doc

但基本上您可以定义一个全局变量(数组或映射),您将其注入(inject)到上下文中,然后基于它定义显着性。例如:

rule 1
  salience( ruleOrders[1] )
  when
    ...
  then
    ...
end

rule 2
  salience( ruleOrders[2] )
  when
    ...
  then
    ...
end

....

rule 40
  salience( ruleOrders[40] )
  when
    ...
  then
    ...
end

如果您以某种方式从那里获得每个规则的顺序,您也可以使用绑定(bind)变量:

rule 1
  salience( $order )
  when
    Element( $order : order )
  then
    ...
end

关于java - 是否可以动态运行 Drools 规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35139054/

相关文章:

java - "if then else "使用规则引擎

Drools 工作台(业务中心)请求超时

java - 错误的类格式将包从 Java 7 构建到 Java 8

java - 在另一个 Jar 中对第三方库 (Jar) 的外部引用,而不将第二个库包装在第一个库中

java - 按钮代码使应用崩溃(重复)

java - java中有没有 "Constant Folding"这个概念?

drools - 如何使用 JSR94 使用 Drools 加载基于 Excel 的决策表?

java - 如何在 drools6 中创建动态显着性

java - 调用 addPages() 后添加 JFace 向导页面?

java - 将 @index 添加到字段后,对象化过滤器不起作用