共用方式為


議程與優先順序

若要瞭解商務規則引擎如何評估規則和執行動作,您需要瞭解 議程優先順序的概念。

議程

議程是引擎用來佇列要執行的規則之排程。 引擎執行個體具有議程,並做為單一原則,而不是一系列的原則。 當事實判斷提示至工作記憶體,且符合指定規則的條件時,規則就會放置在議程中,並根據優先順序執行。 規則的動作會依照由上至下的順序來執行,接著再執行議程中下一個規則的動作。

屬於一個規則的動作會被視為一個區塊,如此可以在移到下一個規則之前先執行所有動作。 不論區塊中的其他動做為何,規則區塊中的所有動作都會執行。 如需判斷提示的詳細資訊,請參閱 引擎控制函式

下列範例示範議程的運作方式。

Rule1

IF  
Fact1 == 1  
THEN  
Action1  
Action2  

Rule2

IF  
Fact1 > 0  
THEN  
Action3  
Action4  

將事實 Fact1 (其值為 1) 判斷提示至引擎。 因為同時符合 Rule1 與 Rule2 的條件,所以這兩個規則都會移到議程中以執行其動作。

工作記憶體 議程
Fact1 (value=1) Rule1

- Action1
- Action2

Rule2

- Action3
- Action4

優先順序

要執行的優先順序會設定在每個個別規則上,而所有規則的預設優先順序均為 0。 優先順序的範圍可從 0 的任一邊開始,數目愈大則優先順序愈高。 會依照最高優先順序到最低優先順序的順序來執行動作。

下列範例顯示優先順序如何影響規則執行的順序。

Rule1 (priority = 0)

IF  
Fact1 == 1  
THEN  
Discount = 10%  

Rule2 (priority = 10)

IF  
Fact1 > 0  
THEN  
Discount = 15%  

已同時符合兩個規則的條件,但是會先執行 Rule2,因為它的優先順序比較高。 最終的折扣是 10%,因為它是為 Rule1 執行的動作之結果,如下表所示。

工作記憶體 議程
Fact1 (value=1) Rule2

折扣 = 15%

Rule1

Discount = 10%

另請參閱

規則引擎