概要
- SalesforceのイベントをAppFlowに伝える方法を2通り紹介したいと思う。
AppFlowを使ったSalesforce同期
-
今まではSalesforce(以降SF)の情報をアプリケーションに同期する方法は下記のようなものが一般的だった。
- アプリケーション側でAPIを用意する。
- SFからアプリケーションのAPIのエンドポイントにリクエストを送る。
-
現在下記のような同期方法もあります。一見すると工程が増えて複雑ですが、諸事情により「SFからリクエストを投げる」部分の実装がなくてもSFの情報をアプリケーションに同期する事ができる。
- AppFlowにてSFの任意のオブジェクトの更新イベントを監視する。
- SFで任意のオブジェクトが更新されたことをきっかけにAppFlowがS3にSFの情報を書き出す。
- LambdaがS3に情報が書き出されたことをきっかけに実行され、S3から情報を取得しアプリケーションのエンドポイントにリクエストを送る。
-
今回は後者の方法で、SFからAppFlowにイベント発生を伝える方法を2通りまとめてみます。
方法1 「変更データキャプチャ」を使う
- この方法は簡単に設定ができるが、複雑なことはできない。
- 指定したSFのオブジェクトに何かしらの変化(登録・更新)などがあった場合に紐づくAppFlowを実行する。
- 例えば。。。
- SFのAccountオブジェクトにレコードが新規登録されたら「新規登録されたAccountオブジェクトの指定した項目をCSVとして出力」する事はできる。
- SFのAccountオブジェクトにレコードが新規登録され、Name項目が
太郎
だった時のみ「新規登録されたAccountオブジェクトの指定した項目をCSVとして出力」する事はできない。
- ようは監視対象のオブジェクトに何かしらの変化があった時にAppFlowを動かすことはできる。
- ただし「何かしらの変化」を独自にいじる事はできない。
方法2 「プラットフォームイベント」と「フロー」を使う
- この方法は少々設定が複雑だが、複雑なトリガー条件をつけることができる。
- 例えば。。。
- SFのAccountオブジェクトにレコードが新規登録され、Name項目が
太郎
だった時のみ「新規登録されたAccountオブジェクトの指定した項目をCSVとして出力」する事ができる。 - SFのAccountオブジェクトのレコードが更新され、何かしらのフラグ値の項目がONの場合のみ「更新されたAccountオブジェクトの指定した項目をCSVとして出力」する事ができる。
- SFのAccountオブジェクトにレコードが新規登録され、Name項目が
太郎
で、かつ、何かしらのフラグ値の項目がONの場合のみ「新規登録されたAccountオブジェクトの指定した項目をCSVとして出力」するといった条件の組み合わせも行うことができる。(orやandの演算子条件も選択できる)
- SFのAccountオブジェクトにレコードが新規登録され、Name項目が
- 流れとしては下記になる。
- プラットフォームイベントを定義する。
- プラットフォームイベントのメッセージ用オブジェクトが生成されるので、AppFlowに渡したい情報を項目として定義する。
- フローを定義する。
- フローのトリガーの条件(「Name項目が
太郎
」とか「何かしらのフラグ値の項目がON」)を設定する。 - フローの中で定義したプラットフォームイベント用オブジェクトの項目にAppFlowに渡したい情報を入れてレコードを作る。
- プラットフォームイベント用オブジェクトにレコードが作られたことを起点にAppFlowが実行されプラットフォームイベント用オブジェクトの内容をCSVに出力する。
まとめ
- 単純な条件でAppFlowでCSVを出力する → 変更データキャプチャを使う。
- 複雑な条件でAppFlowでCSVを出力する → プラットフォームイベントとフローを使う。