結合、関連付け、サブレポート
複数のデータベーステーブルやクラスのプロパティを関連付けて、データを1つのレポートにまとめることができます。 以下の例では、プロパティを使用してクラスやテーブル間のリレーションシップを作る方法を示しています。
- 親ケースと子ケースのリレーションシップを使用して、子ケースのデータを親ケースのデータとともに表示します。 たとえば、Purchase Requestに含まれる購入注文をリストするレポートを作成する場合を考えてみます。 親Purchase OrderクラスのケースIDと子ケースのPurchase RequestクラスのケースIDを照合します。
- ケースとアサインメントのリレーションシップを使用して、システムが特定のケースや子ケースのアサインメントをどのように処理するかを示します。 たとえば、特定のケースに対応しているオペレーターを表示する場合を考えてみます。 ケースデータベーステーブルのオペレーター識別子と、アサインメントテーブルのオペレーターID列を照合します。
- ケースと履歴のリレーションシップを使用してパフォーマンスを監視します。 たとえば、特定のケースの完了に要した時間の合計を表示する場合を考えてみます。 ケースデータテーブルのケースIDと、履歴テーブルのケースIDを照合します。
レポートディフィニッションで、クラスまたはデータベーステーブルのリレーションシップを作成します。 クラス結合の設定、関連付けルールの参照、サブレポートの作成などにより、異なるクラスのデータを組み合わせることができます。
補足: Report Browserでレポートを作成すると、レポートディフィニッションルールがDev Studioで作成されます。
クラス結合
レポートディフィニッションでクラスリレーションシップを構築する際、クラス結合を構成します。
たとえば、各候補者のケースについて、現在のアサインメントとオペレーターを特定するレポートが必要だとします。
次の図で「+」アイコンをクリックすると、このレポートを構成する方法の詳細が表示されます。
クラス結合を作成するには、以下の基本的な手順に従います。
- 結合するクラスを決定します。
- クラス名と組み合わせて、結合されたクラスのエイリアスとなるプレフィックスを作成します。
- 一致しないインスタンスを含めるか、除外するかを決定します。
- クラスをどのように関連付けるかを示すフィルターを作成します。
Report Definition画面では、クラスをプライマリ結合に指定します。 このワークタイプがWork-から派生したものであれば、その結合の対象が実装クラスへかフレームワーククラスかを判断します。 これにより、確実に正しいデータセットに結合します。
注: パフォーマンス上の理由から、データベースレコードを取得するときに不要な結合は行わないでください。 レポートで参照する必要のないクラスへの結合を作成することは避けてください。
クラス結合の設定
Report Definition画面の「Data Access」タブの「Class name」フィールドで、結合するクラスを指定します。 各クラスのPrefix fieldに、テキストのプレフィックスを入力します。 このプレフィックスとクラス名を組み合わせて、結合されたクラスとそのプロパティのエイリアスとして使用します。 たとえば、「Benefits Enrollment」ケースを記述するWorkクラスに結合する場合、次の図のようにBEというプレフィックスを使います。
レポートの列にプロパティを追加する際にプレフィックスを付けることで、次の画像のように結合されたクラスのプロパティを識別しやすくなります。
「Type 」フィールドで、システムがデータをどのように結合するかを、以下のオプションのいずれかを選択して指定します。
タイプ | Description |
---|---|
Only include matching rows |
各クラスのインスタンスのうち、一致するインスタンスを他のクラスに持つものだけを含めます(データベース用語では内部結合と呼ばれる)。 |
Select Include all rows in this class |
結合された(プレフィックス)クラスに一致するものがない場合でも、ルールのApplies Toクラスのすべての適格なインスタンスを含めます(データベース用語では左結合と呼ばれる)。 |
Select Include all rows in joined class | Applies Toクラスに一致するものがない場合でも、結合された(プレフィックス)クラスのすべての適格なインスタンスを含めます(データベース用語では右結合と呼ばれる)。 |
フィルター条件
クラス間のリレーションシップを定義するフィルター条件を作成します。 フィルターでは、1つまたは複数のプロパティを使用してリレーションシップを確立します。 「Benefits Enrollment」クラスと「Candidate」クラスとの結合を検討します。 次の画像のように、子クラスである「Benefits Enrollment」クラスの.pxCoverInsKeyプロパティと親クラスであるCandidateクラスの.pzInsKeyプロパティを照合するフィルターを作成します。
補足: レポートのApplies Toクラスと異なるデータベースのクラスには結合できません。 列プロパティは、表示されている列である必要があります。 Optimizationツールを使用して、列を表示できます。
関連付けルール
複数のクラスを結合する別の方法として、関連付けルールを使用します。 クラス結合(各レポートに固有)とは異なり、関連付けはどのレポートでも再利用できます。 管理者など、適切な権限を持つユーザーは、ユーザーポータルでレポートを作成するときに関連付けを使用することもできます。
たとえば、Assign-WorkBasketクラスのレコードとWorkクラスのレコードを結合する場合を考えてみます。 標準のWorkBasket Assignment(pxWorkbasketAssignments)関連付ルールを使用してクラスを結合します。
次の画像のように、列を追加する際には、関連付けルールのクラス名をプレフィックスとして指定し、そのクラスに含まれるプロパティを選択します。
関連付けルールのプレフィックスを追加すると、「Data Access」タブの「Associations 」セクションに表示されます。
以下のインタラクションで理解度をチェックしてください。
サブレポート
サブレポートとは、データを取得するために他のレポートから呼び出されるレポートのことです。 サブレポートを使用すると、メインレポートの任意のレポートディフィニッションの結果を参照できます。 サブレポートとして使用されるレポートディフィニッションは、他のレポートと同様に実行できます。 複雑なレポート要件を満たすためには、一般的にサブレポートを使用します。 サブレポートを使用して結果をフィルタリングすることで、データを含めたり除外したりできます。 また、サブレポートを使用して、メインレポートの特定の行の集計計算を表示することもできます。
補足: IN句、HAVING句、WITH句を使ってデータを結合する方法として、サブレポートを検討してください。
他のレポートからの集約データを含めて、複雑なロジックを使用するレポートを管理します。 メインレポートで、他のレポートからの特定のデータを含めるために、Is equalやIs less thanなどの、集計関数を使用できます。 たとえば、マネージャーに関するメインレポートでは、そのマネージャー達の直属の部下全員の数をフェッチするサブレポートを参照できます。 10人を超える部下を持つマネージャーのみを表示するフィルター条件を設定できます。
サブレポートは、結合フィルターを使ってメインレポートとは異なるクラスで定義できます。 クラス結合や関連付けを使うのと同じように、異なるクラスのデータにアクセスできます。 たとえば、企業の財務報告書に、最新の従業員の経費をフェッチするプロパティを持つサブレポートを含めることができます。 このアプローチにより、最近の経費がどのように企業の予算に影響を及ぼしているのかを示すように、メインレポートの内容をフィルターすることができます。
以下のインタラクションでは、サブレポートを使用して、各オペレーターが最近更新した各Purchase Requestのタスク情報を表示します。 次の図の中央にある縦棒を左右に動かすと、左にサブレポートの構成が、右にサブレポートの出力結果が表示されます。
以下のインタラクションで理解度をチェックしてください。
このトピックは、下記のモジュールにも含まれています。
トレーニングを実施中に問題が発生した場合は、Pega Academy Support FAQsをご確認ください。