Skip to main content

Salesforce オブジェクトからデータを抽出する

学習の目的

この単元を完了すると、次のことができるようになります。

  • リレーションクエリを使用して Data Mapper Extract を構築する。
  • 親 sObject からデータを取得する Integration Procedure を構築する。

はじめに

カスタマーサービスエージェントが取引先の主取引先責任者を更新、変更、作成する場合のガイド付きインタラクションを設計しているとします。また、カスタマーサービスエージェントが選択したオプションに応じて、異なる項目が表示されるようにしたいと考えています。次のようなインタラクションを想定しています。 

取引先の主取引先責任者を更新する場合のガイド付きインタラクション

このインタラクションに表示される項目に、どのようにしてデータが示されるのでしょうか? また、更新後のデータはどのような方法で保存されるのでしょうか? OmniStudio ストーリーのこの場面で登場するのが OmniStudio Data Mapper と Integration Procedure です。このストーリーの主役を務めるのは Data Mapper Extract です。Data Mapper Extract は Salesforce の取引先オブジェクトと取引先責任者オブジェクトからデータを取得します。その後、3 種類の Data Mapper Load のいずれかが、更新されたデータを各オブジェクトに保存します。どの Data Mapper Load を実行するかは、Integration Procedure が条件付きアクションを使用して判断します。 

基本的な Data Mapper (Data Mapper Turbo Extract など) は、一度に組織の 1 つの Salesforce オブジェクト (sObject) からデータを取り込みます。より強力な Data Mapper Extract も同じ処理を行いますが、Data Mapper Extract は複数の sObject からデータを取得することができます。

上記の例では、Update Account Primary Contact OmniScript で、取引先と取引先責任者の両方から主取引先責任者データを取得する必要があります。このデータは、取引先と取引先責任者の 2 つの sObject に保存されています。(主取引先責任者は、取引先レコードのカスタム項目です。)この OmniScript にデータを取り込むには、Data Mapper Extract を使用する必要があります。 

メモ

このモジュールの手順はデモのみを目的としています。OmniStudio は、Trailhead Playground 組織では有効化されません。

リレーションクエリを使用して Data Mapper Extract を構築する

クライアントアプリケーションで、一度に数種類のオブジェクトにクエリを実行できるようにする必要があります。こうしたクエリをサポートするために、SOQL には標準オブジェクトとカスタムオブジェクトに対するリレーションクエリという構文が用意されています。リレーションクエリは、オブジェクト間の親-子リレーションや子-親リレーションをトラバースして絞り込んだ結果を返します。

Data Mapper Extract を作成する場合の設定

リレーションクエリを使用して Data Mapper Extract を構築する手順は次のとおりです。 

  1. Data Mapper Extract を作成するときは、[Data Mapper Interface Name (Data Mapper インターフェース名)] 項目 (1) にわかりやすい名前を入力します。Data Mapper を命名する際のベストプラクティスは次のとおりです。
    • prefixVerbObjectDetail を参考にする。
    • キャメルケースを使用して読みやすくする。
    • Lightning Web コンポーネントに合わせて先頭を小文字にする。
  1. [Interface Type (インターフェース種別)] (2) で [Extract] を選択します。
  2. ここでは OmniScript 用のデータを取得するため、[Input Type (入力種別)] (3) と [Output Type (出力種別)] (4) に [JSON] (JavaScript オブジェクト表記) を選択します。

次に、Data Mapper Designer のタブを使用して、Extract で実行する処理を指定します。使用するタブは次のとおりです。

  • [Extract (抽出)] タブ
  • [Output (出力)] タブ
  • [Preview (プレビュー)] タブ

これらのタブを詳しく見ていきましょう。  

[Extract (抽出)] タブ

[Extract (抽出)] タブでは、Data Mapper が照会する sObject を指定し、そのオブジェクトから取得するデータを絞り込む検索条件を設定して、抽出する項目を指定します。 

Update Account Primary Contact OmniScript の例では、取引先オブジェクトからデータを抽出します。 

取引先オブジェクトからデータを抽出するように設定された [EXTRACT (抽出)] タブ

  1. [Extract Output Path (抽出出力パス)] (1) では、出力の最上位の JSON ノードを指定します。通常はソースオブジェクトと同じため、[Account (取引先)] を選択します。
  2. 読み込むデータを絞り込む検索条件を作成します。検索条件は 3 つの項目で構成されます。1 つ目の項目 (2) はソースオブジェクトの項目を参照し、2 つ目の項目 (3) は比較演算子です。3 つ目の項目 (4) は、引用符で囲まれたリテラル値、入力パラメーター、同じソースオブジェクトの別の項目のいずれかです。Update Account Primary Contact OmniScript の例でデータを取得する検索条件は、Id = AccountId になります。

[Output (出力)] タブ

[Output (出力)] タブでは、Extract Step JSON のデータを Output JSON に対応付けます。

[Output (出力)] タブで Extract JSON のデータを Output JSON に対応付ける

  1. グレーのプラス記号 (1) をクリックすると、空の対応付けがリストに追加されます。
  2. [Extract JSON Path (抽出 JSON パス)] 項目 (2) で、Extract Step JSON からソース項目を選択します。
  3. [Output JSON Path (抽出 JSON パス)] 項目 (3) で、任意の出力パスを指定します。

この時点で、Data Mapper が取引先オブジェクトからデータを抽出するようになります。データを 1 種類のオブジェクトから抽出する場合は、1 つの抽出ステップで事足ります。ただし、この Data Mapper は取引先責任者オブジェクトから主取引先責任者データ (取引先責任者の名前、メールアドレス、電話番号など) も抽出しなければなりません。 

そのため、Data Mapper の [Extract (抽出)] タブに取引先責任者を 2 つ目の sObject として追加する代わりに、[Extract JSON Path] で親 sObject の項目のリレーション表記を使用します。  

Data Mapper のリレーション表記は、Salesforce のリレーションクエリに基づきます。こうした表記を使用して絞り込まれた結果を返すようにすれば、主 sObject に関連するオブジェクトからデータを取得する際の Data Mapper のパフォーマンスが向上します。 

では、Data Mapper でリレーションクエリを設定する方法を見てみましょう。[Extract JSON Path (抽出 JSON パス)] に、主取引先責任者 ID の項目が 4 つ表示されています。 

  • 1 つ目は Account:PrimaryContactId__c で、取引先オブジェクトの [主取引先責任者] 項目を参照します。
  • 残りの 3 つは、取引先責任者オブジェクトの各項目を参照します。
    • Account:PrimaryContactId__r.Email
    • Account:PrimaryContactId__r.FirstName
    • Account:PrimaryContactId__r.LastName

r. によって、Data Mapper の SOQL (Salesforce オブジェクトクエリ言語) クエリ内に、関連する取引先責任者 sObject の任意の項目からデータを取得するリレーションクエリが作成されます。 

Data Mapper の [Output (出力)] タブに表示されたリレーションクエリ

[Preview (プレビュー)] タブ

[Preview (プレビュー)] タブでは、Data Mapper の入出力をテストできます。 

[Preview (プレビュー)] タブの設定

[Input Parameters (入力パラメーター)] パネル (1) でキー/値ペアを指定します。この例では、[Key (キー)] に「AccountId」と入力し、[Value (値)] (2) には取引先の RecordId を入力します。Data Mapper Extract を実行すると、[Response (応答)] ペイン (3) に結果が返され、データが正しく抽出されたかどうかを確認できます。

Salesforce のすべてのレコードに一意の RecordId が設定されており、Data Mapper でプレビューするためにはこの ID が必要です。取引先の RecordId を確認するには、組織で取引先レコードを開き、URL から RecordId をコピーします。 

URL の Account/ と /view の間に取引先の RecordId が表示される

Data Mapper Extract を構築する方法がわかったところで、次は Update Account Primary Contact OmniScript に接続されている Integration Procedure にその Data Mapper Extract を接続します。

Integration Procedure を使用して親 SObject からデータを取得する

Data Mapper Extract を構築した後の次のステップは、Data Mapper から Update Account Primary Contact OmniScript にデータを渡す Integration Procedure を構築することです。

Data Mapper Extract Action の [Properties (プロパティ)] に Data Mapper の名前が表示され、[Input Paramaters (入力パラメーター)] に AccountId が指定されている。

  1. Integration Procedure で、[Available Components (コンポーネント)] パネルの Data Mapper Extract Action を [Structure (構造)] パネルにドラッグします。
  2. 用途がわかる名前 (例: DRGetPriContactDetails (1)) を付けます。
  3. Data Mapper Extract Action の [Properties (プロパティ)] パネルで、[Data Mapper Interface (Data Mapper インターフェース)] 項目 (2) で使用する Data Mapper Extract を選択します。
  4. [Input Paramaters (入力パラメーター)] (3) で、[Data Source (データソース)] と [Filter Value (検索条件値)] に AccountId を追加します。AccountId は RecordId の任意の名前ですが、要素と Salesforce 間でデータを適切にフローさせるには、各要素で同じ名前を使用する必要があります。

どのデータを Update Account Primary Contact OmniScript に返すべきかを Integration Procedure に指示する Response Action を追加したら、続いて Integration Procedure をテストします。

Integration Procedure の [Preview (プレビュー)] タブで、Data Mapper の [Preview (プレビュー)] タブで実行した手順を繰り返します。

Integration Procedure の [Preview (プレビュー)] タブ

  1. [Input Parameters (入力パラメーター)] パネルで、[Key (キー)] (1) に「AccountId」と入力し、[Value (値)] (2) には取引先の RecordId を入力します。
  2. [Execute (実行)] (3) をクリックすると、Integration Procedure が実行されます。
  3. [Response (応答)] ペイン (4) に結果が返され、データが正しく抽出されたかどうかを確認できます。

[Preview (プレビュー)] タブにはデバッグログもあり、Integration Procedure の各要素の入出力に問題があればここに表示されます。 

  • Data Mapper が Integration Procedure に接続されていることを確認するには、[DRGetPriContactDetails] を選択し、取引先情報が表示されることを確認します。

Integration Procedure の [Preview (プレビュー)] タブのデバッグログ

問題がなければ、Integration Procedure のこのバージョンを有効にできます。有効にすると、Update Account Primary Contact Account OmniScript でこの Integration Procedure を使用できるようになります。 

Integration Procedure を OmniScript に追加したら、OmniScript の [Preview (プレビュー)] タブを使用して機能していることを確認します。 

OmniScript の [Preview (プレビュー)] タブに主取引先責任者が表示される

  • [Context Id (コンテキスト ID)] 項目 (1) に RecordId を入力します。既存の主取引先責任者が表示されます (2)。

Salesforce から OmniScript 全体に主取引先責任者データを抽出する方法がわかったところで、次の単元に進み、OmniScript にある Type Ahead Block のデータを抽出する方法を学習しましょう。 

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む