Apigee Integration と Salesforce トリガーのスタートガイド

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

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

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

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

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

始める前に

  • Salesforce デベロッパー アカウントで、変更データ キャプチャ(CDC)が有効になっていることを確認します。このチュートリアルでは、必要なユーザー設定と一連の権限を持つ既存の Salesforce デベロッパー アカウントがあることを前提としています。Salesforce ユーザーの設定と権限セットについては、Salesforce トリガーを構成するをご覧ください。
  • 次の IAM ロールを Google Cloud プロジェクトの Apigee Integration サービス エージェントservice-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com)に割り当てます。
    • Pub/Sub 編集者
    • コネクタ管理者
    • Apigee 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;
  • コネクタに Cloud SQL for MySQL 接続を作成します。詳細については、Cloud SQL for MySQL 接続を作成するをご覧ください。
  • コネクタに Cloud Pub/Sub 接続を作成します。詳しくは、Cloud Pub/Sub 接続を作成するをご覧ください。

新しい統合を作成する

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

  1. Apigee UI で、Apigee 組織を選択します。
  2. [Develop] > [Integrations] の順にクリックします。
  3. [Create integration] をクリックします。
  4. [Create Integration] ダイアログで名前と説明を入力します。例: Demo-CDC-Opportunities
  5. 統合のリージョンを選択します。
  6. [Create] をクリックして統合デザイナーを開きます。

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

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

  1. 統合デザイナーで、[Add a task/trigger] > [Triggers] の順に選択して、使用可能なトリガーのリストを表示します。
  2. 統合デザイナーで、[Salesforce trigger] 要素をクリックして配置します。
  3. キャンバスで [Salesforce trigger] 要素をクリックして、トリガーの構成ペインを開きます。
  4. [Trigger Input] で、次の項目を構成します。
    • Event type: プルダウン リストから [Change Data Capture (CDC)] を選択します。
    • Salesforce instance configuration: プルダウン リストから [+ Add new Salesforce instance configuration] オプションをクリックします。

      [Add Salesforce instance configuration] ダイアログが表示されます。

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

      [Add Salesforce channel] ダイアログが表示されます。

      • Salesforce object name: 「Opportunity」と入力します。
      • [Add] をクリックします。
    • Operation: プルダウン リストから [Update] を選択します。

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

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

このチュートリアルでは、コネクタタスクとデータ マッピング タスクを使用します。各タスクの構成は次のとおりです。

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

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

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

    [Configure connector task] ダイアログが表示されます。

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

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

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

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

    [Configure connector task] ダイアログが表示されます。

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

データ マッピング タスクを構成する

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

  1. [Add a task/trigger] > [Tasks] の順に選択して、利用できるタスクのリストを表示します。
  2. 統合デザイナーで [Data Mapping] 要素をクリックして配置します。
  3. デザイナーの [Data Mapping] 要素をクリックして、タスクの構成ペインを開きます。
  4. [Open Data Mapping Editor] をクリックします。

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

  5. [+ Add new variable] をクリックして、次の出力変数を作成します。
    出力変数名 データ型
    OpportunityIsClosed Boolean
    OpportunityId String
    PubSubMessage String
  6. 次の表に示すように、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 トリガー要素からデータ マッピング要素にエッジ接続を追加します。
  2. 次のエッジ条件で、データ マッピング要素から Insert row to Cloud SQL Connector 要素にエッジ接続を追加します。
      $OpportunityIsClosed$ = TRUE
  3. 次のエッジ条件で、Data Mapping の要素から Cloud Pub/Sub コネクタの要素に別のエッジ接続を追加します。
      $OpportunityIsClosed$ = FALSE
エッジ接続を示すサンプル画像 エッジ接続を示すサンプル画像

統合をテストする

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

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

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

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

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

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

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

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

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

    Cloud SQL に移動

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

    Pub/Sub に移動

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