ビジネス ルール エンジンにおけるクラス継承のサポート
オブジェクト指向プログラミング (OOP) 言語の主要な機能の 1 つが、継承です。 継承では、既存のクラスの機能をすべて使用して、元のクラスを書き直すことなく、その機能を拡張できます。
ビジネス ルール フレームワークでは、実装とインターフェイスの 2 種類のクラス継承がサポートされています。 実装の継承は、追加のコーディングなしで、基本クラスのプロパティおよびメソッドを使用する機能です。 インターフェイスの継承は、プロパティおよびメソッドの名前だけを使用しますが、子クラスは実装を提供する必要があります。
ルールは共通の基本クラスで記述できますが、エンジンにアサートされるオブジェクトはクラスから派生させることができます。 次の例では、 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 の 1 つのインスタンスと RegularEmployee のインスタンスの 2 つのオブジェクトをアサートした場合、両方のオブジェクト インスタンスが前述の規則に対して評価されます。
また、ユーザーは Assert を使用して、アクション内の派生クラス オブジェクトを アサートすることもできます。 これにより、次の例に示すように、派生オブジェクトとその基本型を条件に含むルールは再評価されます。
規則 2
IF Employee.Status = "Contract"
THEN Employee.Bonus = false
Assert(new ContractEmployee())
Employee 型または ContractEmployee 型を条件に含むすべてのルールは、アサーションの後に再評価されます。 この例では実装が継承されています。 派生クラスのみがアサートされる場合でも、派生クラスではなく基本クラスのメソッドを使用してルールが記述されると基本クラスもアサートされます。