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 起動元
- Salesforce CDC データを格納する Cloud SQL テーブルを作成します。
- Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動し、MySQL インスタンスに接続します。Cloud Shell から Cloud SQL for MySQL に接続するをご覧ください。
- 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;
- 次のコマンドを実行して、テーブルが作成されたことを確認します。
SELECT * FROM OPPORTUNITIES;
- コネクタに Cloud SQL for MySQL 接続を作成します。詳細については、Cloud SQL for MySQL 接続を作成するをご覧ください。
- コネクタに Cloud Pub/Sub 接続を作成します。詳しくは、Cloud Pub/Sub 接続を作成するをご覧ください。
新しい統合を作成する
新しい統合を作成するには、次の操作を行います。
- Apigee UI で、Apigee 組織を選択します。
- [Develop] > [Integrations] の順にクリックします。
- [Create integration] をクリックします。
- [Create Integration] ダイアログで名前と説明を入力します。例:
Demo-CDC-Opportunities
- 統合のリージョンを選択します。
- [Create] をクリックして統合デザイナーを開きます。
Salesforce トリガーを追加して構成する
統合に Salesforce トリガーを追加して構成するには、次の操作を行います。
- 統合デザイナーで、[Add a task/trigger] > [Triggers] の順に選択して、使用可能なトリガーのリストを表示します。
- 統合デザイナーで、[Salesforce trigger] 要素をクリックして配置します。
- キャンバスで [Salesforce trigger] 要素をクリックして、トリガーの構成ペインを開きます。
- [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 instance connection name: Salesforce インスタンスの接続名を入力します。例:
- Salesforce channel configuration: プルダウン リストから [+ Add new Salesforce channel configuration] をクリックします。
[Add Salesforce channel] ダイアログが表示されます。
- Salesforce object name: 「
Opportunity
」と入力します。 - [Add] をクリックします。
- Salesforce object name: 「
- Operation: プルダウン リストから [Update] を選択します。
プロパティへの変更は自動的に保存されます。
タスクを追加して構成する
このチュートリアルでは、コネクタタスクとデータ マッピング タスクを使用します。各タスクの構成は次のとおりです。
Cloud SQL for MySQL 接続を使用してコネクタタスクを構成する
Cloud SQL for MySQL 接続を使用して、既存の Cloud SQL テーブルにレコードを挿入するようにコネクタタスクを構成するには、次の操作を行います。
- 統合デザイナーで、[+Add a task/trigger] > [Tasks] をクリックして使用可能なタスクのリストを表示します。
- 統合デザイナーで [Connectors] 要素をクリックして配置します。
- デザイナーで [Connectors] タスク要素をクリックして、コネクタタスクの構成ペインを表示します。
- [
Insert row to Cloud SQL
」に変更します。
] をクリックし、コネクタ名を「 - [Configure task] をクリックします。
[Configure connector task] ダイアログが表示されます。
- [Configure connector task] ダイアログで、次の操作を行います。
- 接続リージョンを選択します。
- リージョンを選択すると、[Connection] 列が表示されます。使用可能な接続のリストから、Cloud SQL for MySQL 接続を選択します。
- 接続を選択すると、[Type] 列が表示されます。[Entities] を選択し、使用可能なエンティティのリストから [OPPORTUNITIES] を選択します。
- タイプを選択すると、[Operation] 列が表示されます。[Create] を選択します。
- [Done] をクリックして接続の構成を完了し、ペインを閉じます。
Cloud Pub/Sub 接続を使用してコネクタタスクを作成する
次の手順で、Cloud Pub/Sub 接続を使用して Pub/Sub メッセージを公開するようにコネクタタスクを構成します。
- 統合デザイナーで、[+Add a task/trigger] > [Tasks] をクリックして使用可能なタスクのリストを表示します。
- 統合デザイナーで [Connectors] 要素をクリックして配置します。
- デザイナーで [Connectors] タスク要素をクリックして、コネクタタスクの構成ペインを表示します。
- [
Publish to cloud pub/sub
」に変更します。
] をクリックし、コネクタ名を「 - [Configure task] をクリックします。
[Configure connector task] ダイアログが表示されます。
- [Configure connector task] ダイアログで、次の操作を行います。
- 接続リージョンを選択します。
- リージョンを選択すると、[Connection] 列が表示されます。使用可能な接続のリストから Pub/Sub 接続を選択します。
- 接続を選択すると、[Type] 列が表示されます。[Actions] を選択し、使用可能なアクションのリストから [publishMessage] を選択します。
- [Done] をクリックして接続の構成を完了し、ペインを閉じます。
データ マッピング タスクを構成する
次の手順でデータ マッピング タスクを構成します。
- [Add a task/trigger] > [Tasks] の順に選択して、利用できるタスクのリストを表示します。
- 統合デザイナーで [Data Mapping] 要素をクリックして配置します。
- デザイナーの [Data Mapping] 要素をクリックして、タスクの構成ペインを開きます。
- [Open Data Mapping Editor] をクリックします。
データ マッピング エディタを使用すると、使用可能な変換関数を使用して、入力変数を出力変数にマッピングできます。出力は、他の統合タスクまたはトリガーの変数として使用できます。データを変数として渡す方法の詳細については、Apigee Integration で変数を使用するをご覧ください。
- [+ Add new variable] をクリックして、次の出力変数を作成します。
出力変数名 データ型 OpportunityIsClosed
Boolean
OpportunityId
String
PubSubMessage
String
- 次の表に示すように、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)
マッピングが完了したら、ペインを閉じます。変更は自動的に保存されます。
エッジ接続を追加する
エッジは、統合内の 2 つの要素間の接続です。エッジ条件には、エッジで接続されたタスクに渡す統合の制御条件を指定できます。エッジとエッジの条件の詳細については、エッジをご覧ください。
- Salesforce トリガー要素からデータ マッピング要素にエッジ接続を追加します。
- 次のエッジ条件で、データ マッピング要素から Insert row to Cloud SQL Connector 要素にエッジ接続を追加します。
$OpportunityIsClosed$ = TRUE
- 次のエッジ条件で、Data Mapping の要素から Cloud Pub/Sub コネクタの要素に別のエッジ接続を追加します。
$OpportunityIsClosed$ = FALSE
統合をテストする
新しい統合をテストするには:
- 統合デザイナー ツールバーの [Test] をクリックし、[Salesforce トリガー] を選択します。
[Test Integration] ダイアログが表示されます。
- [Test Integration] をクリックします。
Salesforce インスタンスにログインして、商談のステータスを「クローズ」に変更し、Cloud SQL のタスクをテストします。
Salesforce インスタンスにログインして、商談に関する別の詳細を変更して、Pub/Sub タスクをテストします。ただし、商談のステータスは「オープン」のままにしておきます。
テストの詳細については、統合をテストして公開するをご覧ください。
統合が成功したことを確認するには:
- [Cloud SQL] ページに移動します。 データベースと Cloud SQL のログを調べて、新しい行の挿入を確認します。
- [Pub/Sub] ページに移動します。 Pub/Sub トピックを選択してから、[メッセージを表示する] をクリックして、統合によって送信されたメッセージの受信を確認します。
- Apigee Integration ログを調べて、特定の統合のステータスを確認します。ログを表示するには:
- 統合デザイナーのツールバーで、[Logs] をクリックします。
- [Execution Logs] ページでは、統合の実行の試行ごとに関する詳細を確認できます。各エントリには、以下のような実行の試行の詳細が含まれます。
- 統合名
- 実行 ID
- ステータス
- 開始時刻
- 期間
- 統合バージョン
- トリガー ID
- 実行された統合の横にある展開矢印(>)をクリックすると、展開された統合のタスクと変数のリストと、タスクのステータスと変数のペイロードが表示されます。