議程與優先順序
若要瞭解商務規則引擎如何評估規則和執行動作,您需要瞭解 議程 和 優先順序的概念。
議程
議程是引擎用來佇列要執行的規則之排程。 引擎執行個體具有議程,並做為單一原則,而不是一系列的原則。 當事實判斷提示至工作記憶體,且符合指定規則的條件時,規則就會放置在議程中,並根據優先順序執行。 規則的動作會依照由上至下的順序來執行,接著再執行議程中下一個規則的動作。
屬於一個規則的動作會被視為一個區塊,如此可以在移到下一個規則之前先執行所有動作。 不論區塊中的其他動做為何,規則區塊中的所有動作都會執行。 如需判斷提示的詳細資訊,請參閱 引擎控制函式。
下列範例示範議程的運作方式。
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% |