次の方法で共有


ビジネス ルール エンジンにおけるクラス継承のサポート

オブジェクト指向プログラミング (OOP) 言語の主要な機能の 1 つが、継承です。 継承では、既存のクラスの機能をすべて使用して、元のクラスを書き直すことなく、その機能を拡張できます。

ビジネス ルール フレームワークでは、実装とインターフェイスの 2 種類のクラス継承がサポートされています。 実装の継承は、追加のコーディングなしで、基本クラスのプロパティおよびメソッドを使用する機能です。 インターフェイスの継承は、プロパティおよびメソッドの名前だけを使用しますが、子クラスは実装を提供する必要があります。

ルールは共通の基本クラスで記述できますが、エンジンにアサートされるオブジェクトはクラスから派生させることができます。 次の例では、 RegularEmployeeContractEmployee は基本クラス 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 型を条件に含むすべてのルールは、アサーションの後に再評価されます。 この例では実装が継承されています。 派生クラスのみがアサートされる場合でも、派生クラスではなく基本クラスのメソッドを使用してルールが記述されると基本クラスもアサートされます。

参照

ルール エンジン