機械翻訳について

queryMore操作によるアカウント・レコードからの名前とIDsの取得

Salesforce.comから2000を超えるレコードをフェッチする必要がある場合は、queryMore操作を使用します。 長いテキスト・タイプの3つ以上のカスタム・フィールドを選択し、問合せ操作で必須のレコード・セットを返さないSOQL問合せを入力した場合は、queryMore操作を使用できます。

このユースケースでは、queryMore操作を使用して、すべてのアカウント・レコードの名前とIDsをSalesforce.comから取得する方法について説明します。 このユースケースでは、SOAPアダプタを統合を実行するためのトリガーとして使用します。

queryMore操作は、query操作から次のオブジェクト・レコード・セットを取得します。

SOQLの問合せ関数は、一連のレコードを取得し、queryLocator要素に表されるサーバー側のカーソルを作成します。 queryMore操作では、後続のチャンクのレコードが処理され、新しく生成されたqueryLocatorが返されます。 通常、結果セットのすべてのレコードが処理されるまでqueryMore操作を繰り返しコールします。

次の重要な変数が使用されます:

  • batchSize: 各Salesforceトリガーに返されるレコード数を表すリクエスト・ヘッダー。 デフォルト値は200、最小許容サイズは200、最大値は2000です。

  • queryLocator: 最後に取得されたレコードを指し示す値。 最初は、値はありません。 したがって、空の一重引用符('')でローカルqueryLocatorを初期化できます。

  • size: 前の反復で取得されたレコード数を含む変数。

  • done: ソースにフェッチしたレコードより多くのレコードがあるかどうかを示すブール変数。 フェッチするレコードがない場合、その値はtrueです。 そうでない場合は、falseです。

ノート:

  • このオーケストレートされた統合では、200個以上のレコードを取得する方法が表示されます(batchSizeが200に設定されている場合はSalesforceから)。 データを使用するには、whileアクション・ループ内で必要な操作を実行します。 検証のために、各Salesforceトリガーについて返されるレコード数をカウントできます。

  • Salesforce集計問合せでは、queryMore操作はサポートされていません。

  • ネストした問合せを使用する際に、親オブジェクトでqueryMoreコールを使用すると、前の結果のすべての子カーソルが無効になります。

  1. SOAPアダプタおよびSalesforceアダプタ接続を作成します。
  2. アプリ駆動オーケストレートされた統合を作成します。
  3. SOAPアダプタ接続をトリガー接続として統合にドラッグします。
  4. SOAPアダプタの横のワークスペースに割当てアクションをドラッグします(この例では、「初期化」という名前です)。
    この割当てアクションでは、$doneおよび$querylocator変数をローカルに宣言して初期化します。
    これらの変数は、falseおよび'' (一重引用符では値は1つの引用符ではない)と$done$querylocatorの値で初期化されます。 $countRecords変数は、取得されて0に初期化されたレコードをカウントします。
    usequery_assign.pngの説明は以下のとおりです
    「図usequery_assign.pngの説明」
  5. 割当てアクションの下にあるwhileアクションをドラッグし、条件を$done= 'false'に設定します。
    usequery_while.pngの説明は以下のとおりです
    「図usequery_while.pngの説明」
    whileアクション・ループは、$doneの値がfalseのままである場合に繰り返されます。
  6. Salesforceアダプタ・エンドポイントを構成します。
    1. Salesforceアダプタをwhileアクション内の起動接続としてドラッグします。
    2. 「基本情報」ページで、エンドポイント名を入力します(この例ではSFDC_Demoという名前)。
    3. アクション・ページで、「問合せ情報」を選択します。
    4. 操作ページで、「操作の選択」フィールドで「問合せ」を選択し、「削除済およびアーカイブ済のレコード」フィールドで「除外」を選択します。
    5. テキスト・ボックスにSOQL問合せを入力し、「テストMy Query」をクリックして入力問合せを検証します。
      Select id, name, BillingCity from Account

      Select id, name, BillingCityは、すべてのレコードのSalesforce AccountオブジェクトからID、名前および請求市区町村を取得します。

    6. ヘッダー・ページで、必要な「バッチ・サイズ」 (200の最小値を可能にする)を2000の最大値に設定します。
    7. Summaryページで、入力した値を確認します。

    ノート:

    構成されたSalesforceアダプタ・エンドポイントのスコープは、whileアクションに限定されます。 したがって、Salesforceの入力値とwhileアクション以外の出力値にはアクセスできません。
  7. マッパーで、ローカルのソース$queryLocator変数をリクエスト・マッパーのターゲットQueryLocator要素にマップします。 繰返しごとに、Salesforceエンドポイントの入力はqueryLocator値で、最初に構成された割当てアクション(“” (空の値)で初期化されます(「初期化」という名前)。 これは、2番目の割当てアクション(「更新」という名前)に含まれるSalesforceエンドポイント・レスポンスを使用して動的に更新されます。
    usequery_mapper1.pngの説明は以下のとおりです
    「図usequery_mapper1.pngの説明」
  8. Salesforceアダプタ(この例では「更新」という名前)の横にある割当てアクションをドラッグします。
    1. Salesforce出力変数を含むローカル変数($done$queryLocator)を更新します。
      • $done変数の場合:


        usequery_exp1.pngの説明は以下のとおりです
        「図usequery_exp1.pngの説明」
      • $queryLocator変数の場合:


        usequery_exp2.pngの説明は以下のとおりです
        「図usequery_exp2.pngの説明」
      • $countRecords変数の場合:
        usequery_exp3.pngの説明は以下のとおりです
        図usequery_exp3.pngの説明

        count()関数は、Node-setに分類された「関数」にあります。 これは、入力としてNode-setを取り、Node-setで使用可能なノードの数を戻します。 レコードNode-setcount ()に渡されます。 マッピング後、関数コールは次のようになります。 : count($SFDC_E/nsmpr3:queryResponse/nsmpr3:QueryResults/nsmpr3:records)

  9. マッパーでレスポンスをマップします。 ステータスとしてOperation Successfully Completed文字列を入力します。 $countRecords変数で使用可能なレコード数は、それぞれoutputString1およびoutputString2に渡されます。
    usequery_mapper2.pngの説明は以下のとおりです
    「図usequery_mapper2.pngの説明」
  10. トラッキング参照用の任意の変数を指定してトラッカを更新します。
    完了した統合は次のようになります。
    usequery_orch.pngの説明は以下のとおりです
    「図usequery_orch.pngの説明」