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

Java 是否可以动态运行Drools规则?,java,drools,Java,Drools,我的drl文件中有以下内容 rule 1 when ... then ... end rule 2 when ... then ... end .... rule 40 when ... then ... end 我想做的是按照我想要的顺序执行规则。例如 先是40秒,然后是39秒……以此类推。 我读过关于显著性的文章,但是显著性的价值是很难确定的。我怎样才能做到按我想要的顺序阅读规则?Drools支持动态显著性。您可

我的drl文件中有以下内容

rule 1
  when
    ...
  then
    ...
end

rule 2
  when
    ...
  then
    ...
end

....

rule 40
  when
    ...
  then
    ...
end
我想做的是按照我想要的顺序执行规则。例如 先是40秒,然后是39秒……以此类推。
我读过关于显著性的文章,但是显著性的价值是很难确定的。我怎样才能做到按我想要的顺序阅读规则?

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

检查

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

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

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

....

rule 40
  salience( ruleOrders[40] )
  when
    ...
  then
    ...
end
如果从中获得每个规则的顺序,也可以使用绑定变量:

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

如何定义规则顺序?或者如何将ruleOrder注入drl规则这里有一个示例: