Pegaでの基本の基本のコンセプトとしては、ルールとクラスがあります。
ルール
Pegaでは、公式的に「ルール」を以下のように定義しています。
A rule is a named business object that defines the behavior of part of an application。 ルールは、アプリケーションの一部の動作を定義する名前付きビジネスオブジェクトです。
すこし分かりにくいかもしれませんが、言い換えてみると、Pegaでのルールは、UIやデータモデル、ロジックなどPegaアプリケーションを構成する各々の部品です。
Javaなどのオブジェクト指向言語を使って開発されるアプリケーションのクラスや、SAP開発でのリポジトリオブジェクト(開発オブジェクト)に相当するものです。
Pegaは、ノンコーディング開発を謳っているため、コーディング上の用語を使用せずに、アプリケーションの各部品はそれぞれアプリケーションの一部の規則を定めているということから、「ルール」という名前を付けたでしょう。
ルールタイプ
ルールタイプはルールが所属しているタイプを定めております。Pegaでは多数のルールタイプが提供されており、その中に最も典型のは、画面のブロックを表すセクションや、ビジネスケースを表すケースタイプがあります。
ルールセット
ルールの開発とリリースを管理するには、ルールセットと呼ばれるグループにルールをまとめます。
ルールセットは名前(例:Pega-LP-ProcessAndRules:)とバージョン(例:07-10-01)で識別されます、ルールセットの内容を更新するには、新しいルールセットのバージョンを作成します。
レコード
アプリケーションを構成する各ルールは、それぞれのルールタイプのインスタンスとして作成されます。このルールタイプのインスタントはPegaでレコードとよばれます。
レコードは①ID、②ルールタイプ、③適用先のクラス(後続で説明)、④ルールセットの四つにより、Pegaシステム内にユニークで識別されます。
クラス
Pegaでは、公式的に「クラス」を以下のように定義しています。
A class groups a collection of rules or other objects. Each class defines capabilities (rules that include properties, activities, and HTML forms) that are available to other, subordinate classes, or to instances of the class。 クラスは、ルールまたは他のオブジェクトの集まりをグループ化したものです。各クラスは、他の下位クラス、 またはそのクラスのインスタンスで使用可能な機能(プロパティ、アクティビティ、およびHTMLフォームを 含むルール)を定義します。
(クラスの分類)
クラスは大きく下記の二つに分類することができます。
- concrete class
具象クラス。 - abstract class
抽象クラス
具象クラスは、インスタンスをデータベースに格納できます。対照的に、抽象クラスは通常、インスタンスを持たない、持つにしてもデータベースへの格納がなく、メモリ上の保持のみになります。
(クラスの階層)
Pegaではクラスに他のクラスを含めることもできます。
別のクラスを含むクラスは、親クラスと呼ばれ、別のクラスに含まれるクラスは、子クラスと呼ばれます。この親子関係によってPegaアプリケーションを構成する各クラスは一つのツリー構造で管理することができます。
各クラスの名前には、頭に親クラスの名前と区切り文字のハイフン(-)をふくめていますので、名前からクラス階層内でのクラスの位置を識別することができます。
(クラスの継承)
Pegaでクラスの間にルールを継承するには、パターン継承とダイレクト継承という2つの方法があります。
- パターン継承
パターン継承はクラス階層に則った親クラス(ビジネス上の関係を持ち、同じアプリケーションのクラスが多い)のルールをアクセスや上書きできます。 - ダイレクト継承
ダイレクト継承は、ダイレクトとして指定された親クラス(機能上の関係を持ち、別アプリケーションのクラスが多い)のルールをアクセスや上書きできます。
継承を通じてルールを再利用しようとすると、Pegaでは最初にパターン継承で(デフォルト、クラスの定義画面で変更可能)指定される親クラスから検索されます。その検索で見つからない場合に、ダイレクト継承で指定される親クラスが新たなパターン継承検索のベースとなって検索されます。このプロセスは、クラス階層の最後のクラスが検索されるまで繰り返されます。この最後のクラスを、最終ベースクラス、または@baseclassと呼びます。@baseclassを検索してもルールが見つからないと、ペガからエラーが返されます。