Application Integration でサポートされているコネクタをご覧ください。

Salesforce 変更データ キャプチャ(CDC)イベントの統合を呼び出す

Salesforce トリガーを使用して Application Integration でサンプル インテグレーションを作成する方法について説明します。以下の手順では、完全なインテグレーションの実行に必要なトリガー、タスク、コネクタ、データ マッピングを構成する方法について説明します。

このクイックスタートでは、次の図に示すように、Salesforce トリガーを使用して Salesforce 変更データ キャプチャ(CDC)イベントの Application Integration でインテグレーションを呼び出します。

サンプル シーケンス図 サンプル シーケンス図

Salesforce トリガーは、Salesforce 商談チャネルに登録されています。Salesforce の商談に関するデータが変更されると、Salesforce の商談のステータスを抽出する Application Integration が呼び出されます。ステータスが閉じられると、統合はコネクタを使用して商談の詳細を抽出し、データを Cloud SQL インスタンスに書き込みます。データの変更が発生してもステータスがオープンの場合、統合によりコネクタを使用して Pub/Sub トピックにメッセージが送信されます。

以下の手順では、統合の実行を成功させるために必要なトリガー、タスク、認証プロファイル、エッジ、変数、データ マッピングの構成方法について説明します。

始める前に

  • Salesforce デベロッパー アカウントで、変更データ キャプチャ(CDC)が有効になっていることを確認します。このチュートリアルでは、必要なユーザー設定と一連の権限を持つ既存の Salesforce デベロッパー アカウントがあることを前提としています。Salesforce ユーザーの設定と権限セットについては、Salesforce トリガーを構成するをご覧ください。
  • 次の IAM ロールを Google Cloud プロジェクトの Application Integration サービス エージェントservice-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com)に割り当てます。
    • Pub/Sub 編集者
    • Connectors 管理者
    • Application Integration の起動元
    IAM ロールの割り当ての詳細については、IAM のロールと権限をご覧ください。
  • Salesforce CDC データを格納する Cloud SQL テーブルを作成します。
    1. Google Cloud コンソールで [Cloud SQL インスタンス] ページに移動し、MySQL インスタンスに接続します。Cloud Shell から Cloud SQL for MySQL に接続するをご覧ください。

      Cloud SQL インスタンスに移動

    2. Cloud SQL インスタンス上に次の MySQL データベースを作成します。
      CREATE DATABASE SALESFORCE_TRIGGER_DEMO;
      USE SALESFORCE_TRIGGER_DEMO;
      
      CREATE TABLE OPPORTUNITIES
      (
           ID              INT NOT NULL AUTO_INCREMENT,
           NAME            VARCHAR(150) NOT NULL,
           AMOUNT          DOUBLE NOT NULL,
           DT_CLOSE        VARCHAR(150) NOT NULL,
           PRIMARY KEY     (ID)
      );
      COMMIT;
      
    3. 次のコマンドを実行して、テーブルが作成されたことを確認します。
      SELECT * FROM OPPORTUNITIES;
  • Connectors で、Cloud SQL for MySQL 接続を作成します。詳細については、Cloud SQL for MySQL 接続を作成するをご覧ください。
  • Connectors で、Cloud Pub/Sub 接続を作成します。詳しくは、Cloud Pub/Sub 接続を作成するをご覧ください。

新しい統合を作成する

新しい統合を作成するには、次の手順を行います。

  1. Google Cloud コンソールで [Application Integration] ページに移動します。

    Application Integration に移動

  2. ナビゲーション メニューで [統合] をクリックします。[統合リスト] ページが表示されます。
  3. [統合を作成] をクリックします。
  4. [統合の作成] ダイアログで名前と説明を入力します。例: Demo-CDC-Opportunities
  5. 統合のリージョンを選択します。
  6. [作成] をクリックして統合デザイナーを開きます。

Salesforce トリガーを追加して構成する

統合に Salesforce トリガーを追加して構成するには、次の手順を行います。

  1. 統合デザイナーで、[タスク / トリガー] > [トリガー] の順に選択して、使用可能なトリガーのリストを表示します。
  2. 統合デザイナーで、Salesforce トリガー要素をクリックして配置します。
  3. キャンバスで [Salesforce CDC トリガー] 要素をクリックして、トリガーの構成ペインを開きます。
  4. [トリガー入力] で、次の項目を構成します。
    • イベントタイプ: プルダウン リストから [変更データ キャプチャ(CDC)] を選択します。
    • Salesforce インスタンス構成: プルダウン リストから [+ 新しい Salesforce インスタンス構成の追加] オプションをクリックします。

      [新しい Salesforce インスタンス構成の追加] ダイアログが表示されます。

      • Salesforce instance connection name: Salesforce インスタンスの接続名を入力します。例: CDC-PlatformUser
      • Salesforce domain: Salesforce のドメイン名を入力します。この情報は、[Salesforce アカウント] > [プロファイルの表示] ページで確認できます。
      • 認証プロファイル: 認証プロファイルを選択します。認証プロファイルが存在しない場合は、新しいプロファイルを作成します。詳細については、新しい認証プロファイルを作成するをご覧ください。
      • [追加] をクリックします。
    • Salesforce チャネル構成: プルダウン リストから [+ 新しい Salesforce チャネル構成の追加] をクリックします。

      [Salesforce チャネルの追加] ダイアログが表示されます。

      • Salesforce object name: 「Opportunity」と入力します。
      • [Add] をクリックします。
    • オペレーション: プルダウン リストから [更新] を選択します。

    プロパティへの変更は自動的に保存されます。

タスクを追加して構成する

このチュートリアルでは、ConnectorsData Mapping タスクを使用します。各タスクの構成は次のとおりです。

Cloud SQL for MySQL 接続を使用して Connectors タスクを構成する

Cloud SQL for MySQL 接続を使用して、既存の Cloud SQL テーブルにレコードを挿入するように Connectors タスクを構成するには、次の手順を行います。

  1. 統合デザイナーで、[タスク / トリガーを追加] > [タスク] をクリックして使用可能なタスクのリストを表示します。
  2. 統合デザイナーで [Connectors] 要素をクリックして配置します。
  3. デザイナーで [Connectors] タスク要素をクリックして、[Connectors タスク構成ペイン] を表示します。
  4. [] をクリックし、[Connectors] 名を「Insert row to Cloud SQL」に変更します。
  5. [タスクの構成] をクリックします。

    [コネクタ タスクの構成] ダイアログが表示されます。

  6. [コネクタ タスクの構成] ダイアログで、次の操作を行います。
    1. 接続リージョンを選択します。
    2. リージョンを選択すると、[Connection] 列が表示されます。使用可能な接続のリストから、Cloud SQL for MySQL 接続を選択します。
    3. 接続を選択すると、[タイプ] 列が表示されます。[エンティティ] を選択し、使用可能なエンティティのリストから [商談] を選択します。
    4. タイプが選択されると、[オペレーション] 列が表示されます。[作成] を選択します。
    5. [完了] をクリックして接続の構成を完了し、ペインを閉じます。

Cloud Pub/Sub 接続を使用したコネクタタスクを作成する

次の手順で、Cloud Pub/Sub 接続を使用して Pub/Sub メッセージを公開するように Connectors タスクを構成します。

  1. 統合デザイナーで、[タスク / トリガーを追加] > [タスク] をクリックして使用可能なタスクのリストを表示します。
  2. 統合デザイナーで [Connectors] 要素をクリックして配置します。
  3. デザイナーで [Connectors] タスク要素をクリックして、[Connectors タスク構成ペイン] を表示します。
  4. [] をクリックし、[Connectors] 名を「Publish to cloud pub/sub」に変更します。
  5. [タスクの構成] をクリックします。

    [コネクタ タスクの構成] ダイアログが表示されます。

  6. [コネクタ タスクの構成] ダイアログで、次の操作を行います。
    1. 接続リージョンを選択します。
    2. リージョンを選択すると、[Connection] 列が表示されます。使用可能な接続のリストから Pub/Sub 接続を選択します。
    3. 接続を選択すると、[タイプ] 列が表示されます。[アクション] を選択し、使用可能なアクションのリストから [publishMessage] を選択します。
    4. [完了] をクリックして接続の構成を完了し、ペインを閉じます。

データ マッピング タスクを設定する

次の手順でデータ マッピング タスクを構成します。

  1. [タスク / トリガーを追加] > [タスク] の順に選択して、利用できるタスクのリストを表示します。
  2. 統合デザイナーで [データ マッピング] 要素をクリックして配置します。
  3. デザイナーの [データ マッピング] 要素をクリックして、タスクの構成ペインを開きます。
  4. [データ マッピング エディタを開く] をクリックします。

    データ マッピング エディタを使用すると、使用可能な変換関数を使用して、入力変数を目的の出力変数にマッピングできます。出力は、他の統合タスクまたはトリガーの変数として使用できます。データを変数として渡す方法の詳細については、Application Integration で変数を使用するをご覧ください。

  5. [+ 新しい変数を追加] をクリックして、次の出力変数を作成します。
    出力変数名 データ型
    OpportunityIsClosed Boolean
    OpportunityId String
    PubSubMessage String
  6. 次の表に示すように、SalesforceTriggerCdcPayload 変数とSalesforceTriggerCdcPayload変数間で次のマッピングを作成します。
    入力 出力
    SalesforceTriggerCdcPayload.GET_PROPERTY("IsClosed").TO_BOOLEAN() OpportunityIsClosed
    SalesforceTriggerCdcPayload.GET_PROPERTY("Id").TO_STRING() OpportunityId
    OpportunityId.TO_DOUBLE() connectorInputPayload.ID(Insert row to Cloud SQL)
    SalesforceTriggerCdcPayload.GET_PROPERTY("Name").TO_STRING() connectorInputPayload.NAME(Insert row to Cloud SQL)
    SalesforceTriggerCdcSnapshot.GET_PROPERTY("Amount").TO_DOUBLE() connectorInputPayload.AMOUNT(Insert row to Cloud SQL)
    SalesforceTriggerCdcSnapshot.GET_PROPERTY("CloseDate").TO_STRING() connectorInputPayload.DT_CLOSE(Insert row to Cloud SQL)
    OpportunityId.CONCAT(" is still open") PubSubMessage
    PubSubMessage connectorInputPayload.message(Publish to cloud pub/sub)
  7. マッピングが完了したら、ペインを閉じます。変更は自動的に保存されます。

エッジ接続を追加する

エッジは、インテグレーション内の 2 つの要素間の接続であり、エッジ条件は、エッジで接続されたタスクに渡すインテグレーションの制御条件を指定できます。エッジとエッジの条件の詳細については、エッジをご覧ください。

  1. Salesforce トリガーの要素から Data Mapping の要素にエッジ接続を追加します。
  2. 次のエッジ条件で、Data Mapping の要素から Insert row to Cloud SQL Connector の要素にエッジ接続を追加します。
      $OpportunityIsClosed$ = TRUE
  3. 次のエッジ条件で、Data Mapping の要素から Cloud Pub/Sub コネクタの要素に別のエッジ接続を追加します。
      $OpportunityIsClosed$ = FALSE
エッジ接続を示すサンプル画像 エッジ接続を示すサンプル画像

統合をテストする

新しい統合をテストするには:

  1. 統合デザイナー ツールバーの [テスト] をクリックし、[Salesforce トリガー] を選択します。

    [Test Integration] ダイアログが表示されます。

  2. [Test Integration] をクリックします。

Salesforce インスタンスにログインして、商談のステータスを「クローズ」に変更し、Cloud SQL のタスクをテストします。

Salesforce インスタンスにログインして、商談に関する別の詳細を変更して、Pub/Sub タスクをテストします。ただし、商談のステータスは「オープン」のままにしておきます。

テストの詳細については、統合をテストして公開するをご覧ください。

統合が成功したことを確認するには:

  • [Cloud SQL] ページに移動します。

    [Cloud SQL] に移動

    データベースと Cloud SQL のログを調べて、新しい行の挿入を確認します。
  • [Pub/Sub] ページに移動します。

    [Pub/Sub] に移動

    Pub/Sub トピックを選択してから、[メッセージを表示] をクリックして、統合によって送信されたメッセージの受信を確認します。
  • Application Integration ログを調べて、特定の統合のステータスを表示します。ログを表示するには:
    1. 統合デザイナーのツールバーで、[ログ] をクリックします。
    2. [実行ログ] ページでは、統合の実行の試行ごとに関する詳細を確認できます。各エントリには、以下のような実行の試行の詳細が含まれます。
      • 連携名
      • 実行 ID
      • ステータス
      • 開始時間
      • 期間
      • 統合バージョン
      • トリガー ID
    3. 実行された統合の横にある展開の矢印(>)をクリックすると、展開された統合のタスクと変数のリストと、タスクのステータスと変数のペイロードが表示されます。