別のフィールドの値に依存するDCLフィールドの値の作成

動的選択リスト・フィールド(DCL)のような、異なるフィールドの値に応じて異なる値が表示されるフィールドを作成できます。この例では、担当者に関連付けられているアカウントの住所が表示される「担当者の作成」ページのDCLフィールドを作成します。営業担当は、このフィールドを使用して、使用可能なアカウント住所から担当者の住所を選択できます。

動的選択リスト・フィールドの作成

ヒント: Oracle Visual Builder Studioでの設定の概要を示す、Oracle Cloud Customer Connectに関するビデオ: 依存DCLフィールドをご覧ください。
  1. サンドボックスでアプリケーション・コンポーザを開きます。
  2. 左パネルの「アプリケーション」フィールドで「CRMクラウド」が選択されていることを確認します。
  3. 「担当者」標準オブジェクトを展開します。
  4. 「フィールド」をクリックします。
  5. 「フィールド」ページで、「処理」>「作成」をクリックします。
  6. 選択リスト(動的)オプションを選択します。
  7. 動的選択リストの作成: 基本情報ページで、次のように入力します:
    フィールド サンプル入力 説明
    表示ラベル 請求先住所 UIでユーザーに表示されるラベル。
    表示幅 40 住所要素が表示されるボックスの幅。
    名前 BillToAddress 一意の内部名。
  8. 「制約」は選択されているデフォルト値のままにします。
  9. 「次」をクリックします。
  10. 「値リスト」ページで、次のように入力します:
    フィールド サンプル入力 説明
    関連オブジェクト 住所 値のソース。
    リスト選択表示値 この値はこのユース・ケースでは使用されないため、任意の値を選択できます。
  11. その他のセクションは空白のままにすることができます。
  12. 「発行」をクリックします。

DCLフィールドの動作の指定とレイアウトへの追加

  1. Visual Builder Studioを開きます。
  2. 「レイアウト」タブをクリックします。
  3. 「レイアウト」タブで、「CX Sales」>「Contact」をクリックします。

    「レイアウト」タブと「Contacts」が強調表示されているスクリーンショット。
  4. 「ルール・セット」>Create Layout (CX Sales)をクリックします。

    Create Layoutの動的フォームが強調表示されている「ルール・セット」タブ
  5. レイアウトのコピーも作成するオプションを選択して、デフォルト・ルールを複製します。
  6. 新しいルールにルールの条件を追加します。
  7. 新しいレイアウト・ルールの「開く」をクリックして、レイアウトのコピーを開きます。

    「開く」処理ボタンの場所が強調表示されているルール。
  8. 「PersonDEO_Bill_To_Address_id_c (請求先住所)」フィールドを見つけて、これをレイアウトに追加します(次のスクリーンショットでコールアウト1で強調表示されているもの)
  9. フィールド・テンプレートの変数を作成します:

    1. 引き続き「Contact」レイアウト・タブを使用し、「変数」をクリックします

    2. 変数の作成をクリックします(次のスクリーンショットのコールアウト1)。
    3. billToAddressesなどの変数IDを入力します。
    4. 「タイプ」「任意」を選択します。
  10. レイアウトに必要なフィールド・テンプレートを作成します:

    1. 「ルール・セット」タブをクリックします。
    2. 「フィールド」(右側)ペインの「テンプレート」フィールド(コールアウト2)で「作成」をクリックします。

      フィールドのテンプレートを作成するための主要ナビゲーションが示されているスクリーンショット
    3. 「テンプレートの作成」ウィンドウで、スペースを入れずに名前を入力し(billToAddressTemplateなど)し、拡張の有効化オプションを選択したままにします。
    4. 「作成」をクリックします。
    5. 「コード」オプションをクリックします
    6. 入力するサンプル・コードを次に示します:

      <template id="billToAddress">
        <oj-select-single label-hint="billToAddressID" data="[[$variables.billToAddresses]]" value="{{$value}}"></oj-select-single>
      </template>
      
  11. 次のことを行う処理チェーンを作成します:
    • レコードの更新されたフィールドがアカウント・パーティIDであるかどうかを確認します。
    • アカウント・パーティIDが更新された場合は、そのパーティIDを定数accountPartyNumberに格納します
    • そのパーティIDのすべての住所を返すRESTコールを作成します
    • 返された住所(FormattedAddresses)を配列に格納します。
    • 「担当者の作成」UIの一部になる変数billToAddressesに配列の値を割り当てます。
    1. 「Contacts」タブで、処理チェーンをクリックします。

      処理チェーン・タブが選択され、処理チェーンの作成ウィンドウが開いている
    2. 処理チェーンの作成(+処理チェーン)をクリックします。
    3. 処理チェーンの作成ウィンドウで、「JavaScript」オプションを選択したままにし、任意の名前をIDとして入力します。この例ではGetAddressesです。
    4. 「作成」をクリックします。
    5. 「コード」ビューに切り替えて、次のコードを入力します:
    6. 次にサンプルを示します:

      define([
        'vb/action/actionChain',
        'vb/action/actions',
        'vb/action/actionUtils',
        'ojs/ojarraydataprovider',
        ], (
        ActionChain,
        Actions,
        ActionUtils,
        ArrayDataProvider
      ) => {
        'use strict';
        class test extends ActionChain {
          /**
           * @param {Object} context
           * @param {Object} params
           * @param {{row:object,related:object[],fieldsToShow:string[]}} params.previous
           * @param {{row:object,previousRow:object,modifiedField:string,pickedRowsData:object,parentRow:object,mode:string}} params.event
           * @return {{row:object,related:object[],fieldsToShow:string[]}}
           */
          async run(context, { previous, event }) {
            const { $layout, $extension, $responsive, $user } = context;
            if (event.modifiedField === 'AccountPartyId') {
              const accountPartyNumber = event.pickedRowsData ['accounts.AccountPartyId'];
              const addressesResponse = await Actions.callRest(context, {
              endpoint: 'oracle_cx_salesUI:cx/getall_accounts-Address',
              uriParams:{
                 'accounts_Id': accountPartyNumber.PartyNumber,
              },
              });
             if (addressesResponse.ok){
             const billToAddresses = addressesResponse.body.items.map((address)=> {return {label:address.FormattedAddress,value:address.FormattedAddress}});
                   $layout.variables.billToAddresses = new ArrayDataProvider(billToAddresses,{keyattributes:"value"});
             }
            }
            if (event.modifiedField === 'PersonDEO_BillToAddress_Id_c'){
             debugger;
            }
          return previous;
          }
        }
        return test;
      });
  12. フィールド・テンプレートのイベント・リスナーを作成します:

    1. イベント・リスナー・タブをクリックします。
    2. 「リスナーの作成」ボタン(+イベント・リスナー)をクリックします。
    3. イベント・リスナーの作成ページで、「ContactsOnFieldValueChangeEvent」を選択します。
    4. 「次」をクリックします
    5. 先ほど作成した処理チェーンを選択します。この例では、GetAddressesです。
    6. 「終了」をクリックします。
  13. フィールドをテストします:

    1. 「プレビュー」ボタンをクリックして、新規に作成したフィールドをテストします。

      これは、Visual Builder Studioの「プレビュー」ボタンのスクリーンショットです。
    2. 「Contacts」リスト・ページの処理バー「担当者の作成」と入力します。
    3. 複数の住所を含むアカウントを選択します。
    4. 「請求先住所」フィールド内をクリックして、住所を選択します。