関連オブジェクトの標準オブジェクト・パネルの追加(1対多)
関連オブジェクトのパネルを追加することによって、オブジェクトの詳細ページを構成できます。このことにより、ユーザーは、レコードに関係するすべての関連情報を単一のページで簡単に表示できるようになります。カスタム・オブジェクト・パネルまたは標準オブジェクト・パネルを追加できます。このトピックでは、標準オブジェクト・パネルをオブジェクトの詳細ページに追加する方法(パネル・オブジェクトが1対多の関係で関連している場合)について説明します。
シナリオ
次に例を示します。この例では、支払オブジェクトとリード・オブジェクトの間に1対多の関係があります。実行時に、ユーザーが支払詳細ページで支払に対してリードを作成し、それらのリードを表示できる必要があります。
設定の概要
ユーザーが支払に対してリードを作成できるよう、支払詳細ページにリード・パネルおよびサブビューを追加します。
-
まず、アプリケーション・コンポーザで「リードの作成」スマート処理を作成します。
「前提条件: 作成スマート処理」を参照してください。
-
支払詳細ページに新しいリード・パネルを追加します。
「支払詳細ページへのリード・パネルの追加」を参照してください。
-
リード・パネルを追加した後、サブビューを追加できます。
「リード・パネルのサブビューの追加」を参照してください。
前提条件: 作成スマート処理
「リードの作成」スマート処理は、支払詳細ページとリード・サブビューの両方の処理バーから表示されます。ユーザーは、「リードの作成」スマート処理を選択して、リードの作成ページにナビゲートできます。
以前に非フラグメント実装の「リードの作成」スマート処理を作成している場合、このユース・ケースについて新しいスマート処理を作成する必要はありません。かわりに、既存のスマート処理を更新して、「作成」処理タイプ、オブジェクトおよびフィールド・マッピングを指定します。これにより、この新しいフラグメントベースの拡張でカスタム・スマート処理が引き続き確実に機能するようになります。
「リードの作成」スマート処理をまだ作成していない場合は、ここで作成します:
-
サンドボックスを作成します。
-
アプリケーション・コンポーザで、「共通設定」メニューにある「スマート処理」をクリックします。
-
ページの上部にある「作成」をクリックします。
-
「処理の種類」ページで、「UIベースの処理」をクリックし、「続行」をクリックします。
-
「基本詳細」ページの「名前」フィールドに、スマート処理名を入力します。
たとえば、
Create Lead
と入力します。 -
「オブジェクト」フィールドで、1対多関係のソース・オブジェクトを選択します。
この場合は、「支払」を選択し、「続行」をクリックします。
-
「可用性」ページの「アプリケーション」フィールドで、「営業」を選択します。
-
「UI可用性」フィールドで、「リスト・ページ」を選択し、「続行」をクリックします。
-
「処理タイプ」ページの「タイプ」フィールドで、「作成」を選択します。
-
「ターゲット・オブジェクト」フィールドの「トップレベル・オブジェクト」見出しで、1対多関係のターゲット・オブジェクトを選択します。
たとえば、「営業リード」を選択します。
-
「フィールド・マッピング」リージョンで、「追加」をクリックします。
-
「処理」列で、「編集」アイコンをクリックし、次のフィールド値を設定します:
属性のデフォルト
列
値
名前
ソース・オブジェクトのIDおよび関係名を保持する、1対多関係のターゲット・オブジェクトのフィールドを選択します。これは、ターゲット・オブジェクト(営業リード)の標準フィールドです。
フィールド名の形式は、常に
<Source object name>_Id_<Relationship name>
です。たとえば、支払ID PaymentLead1M (Payment_Id_PaymentLead1M)を選択します。ノート:ターゲット・オブジェクトのこのフィールドは、アプリケーション・コンポーザには表示されません。
タイプ
属性
値
「Record ID (Id)」を選択します。これは、ソース・オブジェクト(支払)の標準フィールドです。
このことは、ユーザーがリードを作成するときに、作成スマート処理によって、支払のIDがリード・レコードの支払ID PaymentLead1M (Payment_Id_PaymentLead1M)属性にデフォルト設定されることを意味します。
-
「完了」をクリックします。
-
「続行」をクリックします。
-
「処理詳細」ページの「ナビゲーション・ターゲット」フィールドで、「ローカル」を選択し、「続行」をクリックします。
-
「レビューおよび発行」ページで、「発行」をクリックします。
支払詳細ページへのリード・パネルの追加
支払詳細ページに新しいリード・パネルを追加するには:
-
Visual Builder Studioで、「アプリケーションUI」タブをクリックします。
-
「cx-custom」 > 「payment_c」を展開し、「payment_c-detail」ノードをクリックします。
-
「payment_c-detail」タブで、ページ・デザイナ・サブタブをクリックします。
-
「コード」ボタンをクリックします。
-
ページ・デザイナでページを表示していることを確認します。
-
キャンバスのcx-detailフラグメントの
</oj-vb-fragment>
終了タグのすぐ下に、次のコードを追加します:<oj-dynamic-container layout="PanelsContainerLayout" layout-provider="[[ $metadata.dynamicContainerMetadata.provider ]]" class="oj-flex-item oj-sm-12 oj-md-1"></oj-dynamic-container> <oj-dynamic-container layout="SubviewContainerLayout" layout-provider="[[ $metadata.dynamicContainerMetadata.provider ]]"> </oj-dynamic-container>
-
パネルの
<oj-dynamic-container>
タグを強調表示します。 -
「プロパティ」ペインのケース1リージョンで、セクションの追加アイコンをクリックし、新規セクションをクリックします。
-
「タイトル」フィールドに、
Leads Panel
など、セクションのタイトルを入力します。 -
「ID」フィールドで、値を
leadsPanel
のままにします。ノート:サブビューを作成するときにRESTオブジェクト名を使用するため、このIDにはRESTオブジェクト名を使用しないでください。
-
「OK」をクリックします。
-
「プロパティ」ペインで、先ほど追加したLeads Panelセクションをクリックします。
ページ・デザイナでテンプレート・エディタの「payment_c-detail」タブが表示され、リード・パネル・テンプレートの設計を続行できます。
「コード」ボタンをクリックします。
-
「コンポーネント」パレットで、「フィルタ」フィールドに
cx-panel
と入力します。 -
cx-panelフラグメントを、テンプレート・エディタのleadsPanelテンプレート・タグの間にドラッグ・アンド・ドロップします。
-
次のパラメータをフラグメント・コードに追加して、下のサンプルのようなコードにします。
leads
およびPayment_Id_PaymentLead1M
は、必ず、関連オブジェクト名および外部キー・フィールドの適切な値に置き換えてください。ノート:外部キー・フィールドの名前の形式は、常に
<Source object name>_Id_<Relationship name>
です。ターゲット・オブジェクト(リード)のREST describeを実行して、フィールド名を取得することもできます。<template id="leadsPanel"> <oj-vb-fragment bridge="[[vbBridge]]" class="oj-sp-foldout-layout-panel" name="oracle_cx_fragmentsUI:cx-panel"> <oj-vb-fragment-param name="resource" value='[[ {"name": "leads", "primaryKey": "Id", "endpoint": "cx" } ]]'> </oj-vb-fragment-param> <oj-vb-fragment-param name="sortCriteria" value='[[ [{"attribute": "LastUpdateDate","direction": "desc" }] ]]'> </oj-vb-fragment-param> <oj-vb-fragment-param name="query" value='[[ [{"type": "qbe", "params": [{"key": "Payment_Id_PaymentLead1M", "value": $variables.id }]}] ]]'> </oj-vb-fragment-param> <oj-vb-fragment-param name="context" value="[[ {} ]]"></oj-vb-fragment-param> <oj-vb-fragment-param name="extensionId" value="{{ $application.constants.extensionId }}"></oj-vb-fragment-param> </oj-vb-fragment> </template>
次の表では、カスタム・パネルについて指定できるパラメータの一部について説明します。
カスタム・パネルのパラメータ
パラメータ名 説明 sortCriteria 最終更新日に基づいた降順ソートなど、パネルでデータをソートする方法を指定します。 query パネルでデータを問い合せるための基準を含めます。 -
< ページに戻るをクリックします。
-
「コード」ボタンをクリックします。
-
次にサブビューを追加するための準備が整いました。
パネルをパネル・リージョンに追加したら、必要な作業は終わりです。標準オブジェクト・パネルには、デフォルトで表示される属性のセットが構成されています。ただし、パネルを構成する必要がある場合は、構成することもできます。「パネルの内容の構成」を参照してください。
サブビューを追加したら、パネルをテストできます。それは次に行います。
リード・パネルのサブビューの追加
関連オブジェクト・パネルをカスタム・オブジェクトの詳細ページに追加したら、次はサブビューを追加します。
-
payment_c-detailページで、サブビューの
<oj-dynamic-container>
タグを強調表示します。 -
「プロパティ」ペインのケース1リージョンで、セクションの追加アイコンをクリックし、新規セクションをクリックします。
-
「タイトル」フィールドに、
Leads
など、セクションのタイトルを入力します。 -
「ID」フィールドで、値を
leads
のままにします。ノート:このIDにはREST APIオブジェクト名を使用します。
-
「OK」をクリックします。
-
「プロパティ」ペインで、先ほど追加したLeadsセクションをクリックします。
ページ・デザイナでテンプレート・エディタの「payment_c-detail」タブが表示され、leadsテンプレートの設計を続行できます。
-
「コード」ボタンをクリックします。
- 「コンポーネント」パレットで、「フィルタ」フィールドに
cx-subview
と入力します。 - cx-subviewフラグメントを、テンプレート・エディタのleadsテンプレート・タグの間にドラッグ・アンド・ドロップします。
- 次のパラメータをフラグメント・コードに追加して、下のサンプルのようなコードにします。
leads
およびPayment_Id_PaymentLead1M
は、必ず、オブジェクトおよび外部キー・フィールドの適切な値に置き換えてください。ノート: 外部キー・フィールドの名前の形式は、常に<Source object name>_Id_<Relationship name>
です。ターゲット・オブジェクト(リード)のREST describeを実行して、フィールド名を取得することもできます。<template id="leads"> <oj-vb-fragment bridge="[[vbBridge]]" name="oracle_cx_fragmentsUI:cx-subview"> <oj-vb-fragment-param name="resource" value='[[ {"name": "leads", "primaryKey": "Id", "endpoint": "cx" } ]]'> </oj-vb-fragment-param> <oj-vb-fragment-param name="sortCriteria" value='[[ [{"attribute": "LastUpdateDate","direction": "desc" }] ]]'> </oj-vb-fragment-param> <oj-vb-fragment-param name="query" value='[[ [{"type": "qbe", "params": [{"key": "Payment_Id_PaymentLead1M", "value": $variables.id }]}] ]]'> </oj-vb-fragment-param> <oj-vb-fragment-param name="context" value="[[ {} ]]"></oj-vb-fragment-param> <oj-vb-fragment-param name="extensionId" value="{{ $application.constants.extensionId }}"></oj-vb-fragment-param> </oj-vb-fragment> </template>
次の表では、サブビューについて指定できるパラメータの一部について説明します:
サブビューのパラメータ
パラメータ名 説明 sortCriteria 最終更新日に基づいた降順ソートなど、サブビューでデータをソートする方法を指定します。 query サブビューでデータを問い合せるための基準を含めます。 -
payment_c-detailページから動的コンテナ・コンポーネントをコメント・アウトします。
-
< ページに戻るをクリックします。
-
「コード」ボタンをクリックします。
-
パネルおよびサブビューを格納する動的コンテナ・コンポーネントをコメント・アウトします。
ノート:さらにパネルおよびサブビューを追加するには、まず、その動的コンテナ・コンポーネントを非コメント化する必要があります。
-
サブビューを追加したら、必要な作業は終わりです。標準オブジェクトのサブビューには、デフォルトで表示される属性のセットが構成されています。ただし、サブビューを構成する必要がある場合は、構成することもできます。「サブビュー・レイアウトの構成」を参照してください。
パネルおよびサブビューのテスト
payment_c-listページからアプリケーション拡張をプレビューして、サブビューをテストします。
payment_c-listページから、「プレビュー」ボタンをクリックして、ランタイム・テスト環境の変更を表示します。
-
結果のプレビュー・リンクは次のようになります:
https://<servername>/fscmUI/redwood/cx-custom/payment_c/payment_c-list
-
プレビュー・リンクを次のように変更します:
https://<servername>/fscmUI/redwood/cx-custom/application/container/payment_c/payment_c-list
ノート:プレビュー・リンクに
/application/container
を追加する必要があります。次のスクリーンショットは、データを含むリスト・ページがどのように見えるかを示しています。
-
データが存在する場合、リスト・ページで任意のレコードをクリックして、詳細ページにドリルダウンできます。ヘッダー・リージョンとパネルを含む詳細ページが表示されます。
「営業リード」パネルが表示されるようになりました。
-
処理バーで、「リードの作成」処理を選択します。
「リードの作成」ページが表示されます。一般的な「リードの作成」ページの例を次に示します:
リードを作成すると、リードの詳細ページにナビゲートされます。ブラウザの戻るボタンをクリックして支払詳細ページに戻ると、「営業リード」パネルに新しいリードが表示されます。
-
「営業リード」パネルで、先ほど作成したリードのリンクをクリックして、リードの詳細ページにナビゲートします。
ブラウザの戻るボタンをクリックします。
-
「すべて表示」リンクをクリックして、サブビューにドリルダウンします。
-
「営業リード」サブビューで、リードをクリックして、リードの詳細ページにナビゲートします。
ブラウザの戻るボタンをクリックします。
Gitのプッシュ・コマンドを使用して、作業内容を保存します。
「Git」タブにナビゲートし、変更をレビューして、Gitのプッシュを実行します(コミットとGitリポジトリへのプッシュの両方が行われます)。