支援商務規則引擎中的類別繼承
「物件導向程式設計」(OOP) 語言的其中一個主要功能為繼承。 繼承是指可以使用現有類別的所有功能,並且不需重新撰寫原始類別即可擴充這些功能。
「商務規則架構」支援兩種類型的類別繼承:實作和介面。 實作繼承是指不需撰寫額外的程式碼,即可使用基底類別的屬性與方法。 介面繼承是指只能使用屬性與方法的名稱,但是子類別必須提供實作。
這些規則可以根據一般基底類別來撰寫,但是引擎中已判斷提示的物件可以源自衍生類別。 在下列範例中, RegularEmployee 和 ContractEmployee 是基類 Employee的衍生類別。
class Employee
{
public string Status()
{
// member definition
}
public string TimeInMonths()
{
// member definition
}
}
class ContractEmployee : Employee
{
// class definition
}
class RegularEmployee : Employee
{
// class definition
}
假設您有下列規則。
規則 1
IF Employee.TimeInMonths < 12
THEN Employee.Status = "New"
在執行時間,如果使用者判斷提示兩個物件,一個 是 ContractEmployee 的實例,另一個是 RegularEmployee的實例,則會根據稍早所述的規則來評估這兩個物件實例。
使用者也可以使用 Assert來判斷提示動作中的衍生類別物件。 這將導致重新評估在條件中包含衍生物件及其基底型別的規則,如下列範例所示。
規則 2
IF Employee.Status = "Contract"
THEN Employee.Bonus = false
Assert(new ContractEmployee())
在其條件中包含 Employee 類型或 ContractEmployee 類型的所有規則,都會在判斷提示之後重新評估。 此範例中的繼承類型為實作。 即使只判斷提示了衍生類別,若使用基底類別而不是衍生類別中的方法來撰寫規則,也會判斷提示基底類別。