议程和优先级

若要了解业务规则引擎如何评估规则和执行操作,需要了解 议程优先级的概念。

议程

议程是引擎对要执行的规则进行排队时使用的计划。 议程用于引擎实例,它对单个策略而不是一系列策略起作用。 将事实添加到工作内存中并且满足给定规则的条件时,该规则将被放置在议程上并根据优先级执行。 从上至下按顺序执行规则的操作,然后执行议程中下一个规则的操作。

属于某一规则的操作被视为一个模块,这样,在继续到下一个规则之前将执行该规则的所有操作。 将执行规则模块中的所有操作,而不管模块中的其他操作。 有关断言的详细信息,请参阅 引擎控制函数

以下示例说明议程是如何工作的:

Rule1

IF  
Fact1 == 1  
THEN  
Action1  
Action2  

Rule2

IF  
Fact1 > 0  
THEN  
Action3  
Action4  

我们将值为 1 的事实 Fact1 添加到引擎中。 由于 Rule1 和 Rule2 的条件都得到了满足,因此两个规则都移至议程,以便执行它们的操作。

工作内存 议程
Fact1(值=1) Rule1

- Action1
- Action2

Rule2

- Action3
- Action4

优先度

每个规则都设置了执行优先级,所有规则的默认优先级为 0。 优先级可以大于、等于或小于 0,数字越大优先级越高。 操作按照从最高优先级到最低优先级的顺序执行。

以下示例说明优先级如何影响规则的执行顺序:

Rule1(优先级 = 0)

IF  
Fact1 == 1  
THEN  
Discount = 10%  

Rule2(优先级 = 10)

IF  
Fact1 > 0  
THEN  
Discount = 15%  

两条规则的条件都已得到满足,但首先执行 Rule2,因为它具有更高的优先级。 最终折扣为 10%,因为它是对 Rule1 执行操作的结果,如下表所示:

工作内存 议程
Fact1(值=1) Rule2

折扣 = 15%

Rule1

折扣 = 10%

另请参阅

规则引擎