共用方式為


如何在商務規則中分析相同類型的多個物件

在許多實例中,您將針對某一類型撰寫商務規則,預期判斷提示至引擎的該類型的每個執行個體可依照規則分別分析與作用。 不過,在某些實例中,您想要在規則中同時分析指定類型的多重執行個體。

例如,使用 FamilyMember 類別實例的規則。

IF FamilyMember.Role == Father  
AND FamilyMember.Role == Son  
AND FamilyMember.Surname == FamilyMember.Surname  
THEN FamilyMember.AddChild(FamilyMember)  

此規則會識別屬於系的FamilyMember實例,以及另一個是Son的實例。 如果實例與姓氏相關, Son 實例就會新增至「父」實例上的子系集合。 如果規則中個別分析了每個 FamilyMember 實例,則永遠不會引發此規則,因為在此案例中, FamilyMember 只有一個角色— 系或 系。

因此,您必須在規則中指示引擎應一起分析多個執行個體,且您需要一個區分規則中每個執行個體識別的方法。 實例識別碼屬性可用來提供這項功能。 當事實在 [事實總管] 中已選取時,可在 [屬性] 視窗中使用此欄位。 將事實或成員拖曳至規則中之前,應該先變更欄位的值。

使用 實例識別碼 屬性,將會重建規則。 對於使用FamilyMemberSon實例的規則引數,[實例識別碼] 欄位會從預設值 0 變更為 1。 當實例識別碼從 0 變更,並將事實或成員拖曳到規則編輯器時,實例識別碼的值會顯示在 類別之後的規則中。

IF FamilyMember.Role == Father  
AND FamilyMember(1).Role== Son  
AND FamilyMember.Surname == FamilyMember(1).Surname  
THEN FamilyMember.AddChild(FamilyMember(1))  

現在,假設 將「父 」實例和 Son 實例判斷提示到引擎中。 此引擎將針對各種執行個體組合評估此規則。 假設 「父 」和 「子 」實例具有相同的姓氏, 則 Son 實例會如預期般新增至 「父 」實例。

注意

實例識別碼只會用於指定規則評估的內容中。 它不會在執行原則時附加到物件執行個體,而且與判斷提示物件的順序無關。 每個物件執行個體都會在該類型的所有規則引數中評估。