関連付け、クラス結合、サブレポート
関連付け、結合、およびサブレポートを使用した、さまざまなクラスの組み合わせ
レポートは、開発者やビジネスユーザーが作成して使用します。 開発者が必要とするレポートは、主にビジネスロジックの入力やエンドユーザーの画面に情報を表示するためのものです。 それと比較して、ビジネスユーザーが必要とするレポートは、ビジネス上の詳細な意思決定に役立つデータの分析のためのものです。 そのため、レポートブラウザーでは、ビジネスユーザーがポータルからレポートを作成できます。 ほとんどの場合、レポートに必要なデータは単一のクラスやテーブルから取得するものではないため、プロパティのセットを使用して異なるクラスやテーブルを結合する必要があります。 分析レポートを作成する場合は、これらのリレーションシップを構築する必要があり、Pega Platform™には、そのための関連付け、結合、およびサブレポートが用意されています。
関連付け
関連付けは、クラス間のリレーションシップを定義するルールで、レポートディフィニッションルールで使用できます。 プロパティのペアで一致する値に基づいて複数のクラス間のリレーションシップを確立することで、レポートのスコープを拡張できます。 他のクラスの特定のデータを参照することで関連付けルールを使用し、レポートをより包括的にすることができます。
Pega Platformは、ユーザーにシンプルな関連付けと高度な関連付けの両方を提供します。 2つのクラスの結合にはシンプルな関連付けを、複数の結合条件を指定する場合は高度な関連付けを使用します。 各関連付けルールは複数のレポートで再利用できます。
結合とサブレポートは、エンドユーザーポータルのビジネスユーザーには利用できません。 関連付けのみ使用可能で、比較的簡単に使用できます。 そのため、リードシステムアーキテクト(LSA)は、再利用性を高めるためのソリューションを設計する場合に、可能な限りアソシエーションの作成を推奨する必要があります。
クラスに関連付けが作成されると、その関連付けはクラス階層のどこでも使用できます。 ベストプラクティスとしては、エンタープライズレイヤー、または組織と上位アプリケーションレイヤーにまたがる使用で再利用可能なレイヤーで関連付けを作成します。
また、レポートエディタやレポートルールでも関連付けを使用します。 LSAは、レポート要件を慎重に検討し、事前に関連付けルールを構築することで、ビジネスパーソンが必要なデータすべてにアクセスするためのレポートを作成できるようにします。 この関連付けにより、ビジネスパーソンはクラスリレーションシップを把握する必要がなくなります。
例えば、Front Stage Group(FSG)のアプリケーションでは、Rooms Requestごとにホテルの情報と連絡先を取得するレポートが必要です。 ホテルアプリケーションのマネージャーはこのレポートが必要です。 Rooms Request、Hotel、およびContact テーブルの間に必要な関連付けを定義した場合、マネージャーはこの関連付けReport Browserで直接使用し、必要なフィールドをレポートにドラッグアンドドロップできます。 アプリケーション固有の関連付けだけでなく、Pega Platformですぐに使用できるいくつかの関連付けも、レポート作成の必要性に応じて再利用できます。
マネージャーは、Report Browserで新しいレポートを作成し、利用可能な関連付けから必要な列をドラッグアンドドロップできます。 関連付けが利用できない場合、マネージャーは開発チームに頼って、複数のソーステーブルからデータを引き出す必要があります。
クラス結合
デフォルトでは、レポートディフィニッションは、レポートが該当するクラスのみからのデータを含みます。 クラス結合機能を使用することで、レポートをより包括的にできます。 クラス結合は、両クラスが同じ列を持つ場合にのみ、2つのクラスを結合するのに役立ちます。
クラス結合には、Data accessタブで設定したタイプに基づく3種類の結合が含まれます。
- 一致する行のみを含む = INNER JOIN
- このクラスのすべての行を含む = LEFT OUTER JOIN
- 結合クラスのすべての行を含む = RIGHT OUTER JOIN
関連付けルールと比較すると、結合は、複数のレポートディフィニッションで再利用不可能であり、編集するレポートのみに適用されます。
たとえば、FSGアプリケーションでは、各Book Eventケースで作業している現在のアサインメントとオペレーターを特定するレポートが必要です。 Book Eventの情報は、Book Eventケースタイプにあります。 アサインメント情報は、ワークバスケットクラスにあります。 Book Eventクラスにレポートディフィニッションを作成し、ワークバスケットクラスへのクラス結合を設定します。 レポートディフィニッションでは、まず、レポートに結合するクラスとしてワークバスケットクラスを指定します。 次に、両方のクラスのレコードのキー値を一致させるフィルターを指定します(たとえば、候補者ケースのpzInsKey キー値とワークバスケットのpzRefObjectKeyキー値を一致させます)。
報告要件に応じて、LSAは関連付けおよびクラス結合を使用するタイミングを決定する必要があります。
サブレポート
サブレポートでは、特定の結合条件を使用して2つの異なるクラスを結合します。 2つ目のレポートの結果は、1つ目のレポートのフィルタリングに使用したり、1つ目のレポートの一部として表示したりできます。 Pega Platformのサブレポートは、WHERE句のサブクエリーとして使用されます。 また、FROM句のサブクエリー(「テーブルサブクエリー」)やSELECT句のサブクエリーもあります。
複雑なレポート要件を満たすためには、一般的にサブレポートを使用します。 たとえば、サブレポートを使用して結果をフィルタリングすることで、データを含めたり除外したりできます。 また、サブレポートを使用して、メインレポートの特定の行の集計計算を表示することもできます。 サブレポートの作成には、結合フィルターまたは集約の2つの異なる方法を使用できます。
たとえば、FSGアプリケーションで、すべてのBook Eventケースのリストを表示し、以下の内容を含むレポートを表示するとします。
- Book Eventケースが作成された場合の列。
- Book Eventを作成したオペレーター。
- ケースID。
これらの列はすべてBook Eventワーククラスから取得されます。 次に、Book Eventのサブケースである、最初のHotel Rooms Requestが解決された日付、最後のHotel Rooms Requestが解決された日付、およびHotel Rooms Request数の集計を行う必要があります。 これらの計算を含めるには、サブレポートを使用する必要があります。
LSAは、サブレポートがクラス結合と同じ結果セットを生成する場合があることを認識する必要があります。 クラス結合は、データベースが操作を実行するためのよりシンプルで直接的な方法であるため、このような場合には代わりにクラス結合を使用する必要があります。
関連付け、結合、およびサブレポートの詳細については、「Associations, joins and subreports」を参照してください。
このトピックは、下記のモジュールにも含まれています。
- 高度なクエリー設計 v3