DataRaptor Turbo Extract と DataRaptor Load を作成する
学習の目的
この単元を完了すると、次のことができるようになります。
- DataRaptor Turbo Extract を作成する。
- DataRaptor Load を作成する。
- DataRaptor Load でレコードを作成するか更新するかがどう決まるかを説明する。
次は、シンプルなガイド付きユーザーインタラクションを示しています。ユーザーが取引先の電話番号や Web サイトなど、基本的なカスタマー取引先の詳細を更新します。ユーザーは Edit Account OmniScript のガイドに従ってプロセスを実行すればよいので、複雑な機能がバックグラウンドで実行されていても、ステップ自体は直観的で容易に完了できます。
では、ユーザーには表示されない複雑な機能について考えてみましょう。このインタラクションで使用する項目には、どのようにしてデータが表示されるのでしょうか? 更新されたデータはどのようにして保存されるのでしょうか? この機能は DataRaptor が担っています。取引先オブジェクトからデータを取得するのが DataRaptor Turbo Extract で、更新されたデータを元の取引先オブジェクトに保存するのが DataRaptor Load です。この単元では、この 2 つの DataRaptor を作成する方法を学習します。
準備はいいですか? では始めましょう。
DataRaptor Turbo Extract を作成する
前の単元では、DataRaptor を設定する準備が整ったら、OmniStudio アプリケーションの [OmniStudio DataRaptors] タブからアクセスできる OmniStudio DataRaptor Designer を使用することを学習しました。
DataRaptor Turbo Extract を作成する場合は、DataRaptor Designer の次のタブを使用して、Turbo Extract で実行する処理を指定します。
- [EXTRACT (抽出)] タブ
- [PREVIEW (プレビュー)] タブ
では、これらのタブを詳しく見ていき、タブで実行する必要があるステップの概要を把握しましょう。
[EXTRACT (抽出)] タブ
[EXTRACT (抽出)] タブでは、次を行う必要があります。
- DataRaptor でクエリする Salesforce オブジェクト (sObject) を指定する。
- オブジェクトから取得されるデータを判断する検索条件を設定する。
- 抽出する項目を指定する。
Edit Account OmniScript の例を使って、上記の設定を行う手順を説明します。
- Edit Account OmniScript では、取引先オブジェクトからデータを抽出する必要があるため、ソースオブジェクトとして [Account (取引先)] を選択します。
- [Extract Output Path (抽出出力パス)] (1) では、出力の最上位の JSON ノードを指定します。これは通常ソースオブジェクトと同じであるため、[Extract Output Path (抽出出力パス)] 項目に
Account
と入力します。 - 読み取り対象のデータを判断する検索条件を作成します。検索条件はソースオブジェクト (2) と比較演算子 (3)、および引用符で囲んだリテラル値か、入力パラメーターか、同じソースオブジェクトの別の項目 (4) という 3 つの項目で構成されます。この例では、Edit Account OmniScript のデータを取得するため、3 つの項目に Id =
AccountId
と入力します。 - [SEARCH FIELDS (項目を検索)] で、右矢印を使用して [Name (名前)]、[Phone (電話)]、[Website (Web サイト)] を選択します。これらが抽出する項目です。
- [SEARCH FIELDS (項目を検索)] (5) ボックスに項目リストを絞り込むための値を入力できます。Id 項目 (6) は常に出力に含まれています。
[PREVIEW (プレビュー)] タブ
[PREVIEW (プレビュー)] タブで DataRaptor の入力と出力をテストします。
[Input Parameters (入力パラメーター)] パネル (1) の [Key (キー)] に AccountId
、[Value (値)] に取引先の RecordId を入力して、キーと値のペアを指定します (RecordId を調べる方法は次に説明します)。DataRaptor Turbo Extract を実行すると、データが正しく抽出されていることを確認するために [Response (応答)] (2) ペインに結果が返されます。
Salesforce 内のすべてのレコードには一意の RecordId があります。取引先の RecordId は、組織で取引先レコードを開き、URL から RecordId をコピーするだけで簡単に取得できます。
これで Salesforce オブジェクトからレコードを取得する方法がわかりました。次は DataRaptor Load を使用して、更新されたデータをオブジェクトに保存する方法を見てみましょう。
DataRaptor Load を作成する
DataRaptor Load を作成する場合は、DataRaptor Designer の次のタブを使用して、DataRaptor Load で実行する処理を指定します。
- [OBJECTS (オブジェクト)] タブ
- [FIELDS (項目)] タブ
- [PREVIEW (プレビュー)] タブ
では、上記のタブを設定して DataRaptor Load を作成する手順を見ていきましょう。
[OBJECTS (オブジェクト)] タブ
[OBJECTS (オブジェクト)] タブでは、更新する Salesforce オブジェクトを指定します。
取引先オブジェクトにデータを書き込むので、[+ Add Object (+ オブジェクトを追加)] (1) をクリックし、[Account (取引先)] (2) を選択します。
[FIELDS (項目)] タブ
[FIELDS (項目)] タブでは、更新する Salesforce オブジェクトに入力データを対応付けます。
[INPUT JSON PATH (入力 JSON パス)] (1) で Salesforce オブジェクトに書き込むデータを含む JSON ノードのキーを指定します。[DOMAIN OBJECT FIELD (ドメインオブジェクト項目)] (2) で更新する Salesforce オブジェクトの項目を指定します。
- JSON を取得します。OmniScript を実行すると、インタラクションに必要なデータが読み込まれる Data JSON が作成されます。これが DataRaptor Load の入力データとして使用する OmniScript JSON です。OmniScript JSON は OmniScript の [Action Debugger (アクションデバッガー)] の [Request Data (要求データ)] ペイン (1) に表示されます。
- この JSON を [Input JSON (入力 JSON)] パネル (3) に貼り付けて入力対応付けを作成し、次に [Quick Match (クイックマッチ)] ボタン (4) を使用して入力対応付けをオブジェクトの項目と一致させます。
[PREVIEW (プレビュー)] タブ
[PREVIEW (プレビュー)] タブでは、DataRaptor の出力をテストします。
[Input (入力)] パネル (1) で OmniScript JSON の入力に変更を加えます。たとえば、取引先の電話番号や Web サイトを変更します。[Objects Created (作成されたオブジェクト)] (2) には作成されたオブジェクトが表示され、このオブジェクトは恒久的に保存されます。
作成か更新か: DataRaptor Load での決定方法
DataRaptor Load では、既存のデータの上書き、または新規レコードの作成 (そのデータがまだ存在していない場合) のいずれかの方法で、更新内容が Salesforce 内のレコードに保存されます。レコードを更新または挿入するこのプロセスを「更新/挿入」と呼びます。
DataRaptor の [FIELDS (項目)] の対応付けでは、[Upsert Key (更新/挿入キー) (1) チェックボックスをオンして、任意の項目を更新/挿入キーとして指定することができます。その場合、Salesforce 内の一意のレコードに一致する必要があります。
データがどのように更新/挿入されるかを制御するには、[Is Required For Upsert (更新/挿入に必須)] チェックボックスをオンにします。このチェックボックスをオンにすると、指定した項目にデータがない場合、レコードは更新/挿入されません。DataRaptor の [FIELDS (項目)] の対応付けでは、任意の項目を [Is Required For Upsert (更新/挿入に必須)] として指定することもできます。その場合、更新/挿入が行われるには、指定した項目にデータが存在していなければなりません。
では、[FIELDS (項目)] タブのこの AccountId の対応付けがどう動作するかを見てみましょう。
DataRaptor Load は、データの保存方法を決定する前に 2 つの条件をチェックします。
- 新しいレコードの [Is Required For Upsert (更新/挿入に必須)] 対象項目すべてにデータが入力されているか。
- 新しいレコードの [Upsert Key (更新/挿入キー)] 対象項目すべてが、Salesforce 内の一意のレコードと一致するか。
2 つの条件を組み合わせると、プロセスは次のようになります。
- DataRaptor Load は Input JSON 内の各オブジェクトの各項目を確認します。
- 項目が [Is Required For Upsert (更新/挿入に必須)] としてマークされている場合、その項目にデータがあるかどうかがチェックされます。
- すべての [Is Required For Upsert (更新/挿入に必須)] 対象項目にデータがなければなりません。データがない場合、そのレコードはスキップされます。
- 項目にデータがある場合、DataRaptor Load はその項目が更新/挿入キーかどうかをチェックし、更新/挿入キーであるすべての項目を比較します。
- 更新/挿入キーのすべてが Salesforce 内の既存のレコードの項目と一致した場合は、重複レコードを作成せずに対象レコードが更新されます。
- 既存のレコードに一致する項目が見つからなかった場合は、新しいレコードが作成されます。
この単元では、DataRaptor について詳しく説明しました。ただし、これは DataRaptor ジャーニーの始まりにすぎません。引き続きこのトレイルの他のモジュールに進み、他の種類の DataRaptor を作成する方法を学習することをお勧めします。