イベントチャネルへの登録
学習の目的
この単元を完了すると、次のことができるようになります。
- [変更データキャプチャ] ページで変更イベント通知に対してオブジェクトを有効にする。
- EMP コネクタを使用して変更イベントチャネルに登録する。
- Salesforce で更新を行い、変更イベント通知を生成する。
変更データキャプチャの基礎を学習したところで、実際に Salesforce で変更を生成し、変更イベントを受信しましょう。このセクションでは、従業員レコードを作成して変更します。
従業員カスタムオブジェクトを作成する
この演習を開始する前に、従業員カスタムオブジェクトを定義する必要があります。最初のステップでは、カスタムオブジェクトを作成します。Trailhead Playground 組織または Developer Edition 組織で一緒に手順を進めることができます。Trailhead Playground にアクセスするには、右上隅にあるプロファイル画像をクリックしてから [ハンズオン組織] をクリックし、起動したい組織のユーザー名をクリックします。
- [設定] から、[オブジェクトマネージャー] タブをクリックして、[作成] > [カスタムオブジェクト] を選択します。
- 次の値を入力します。
表示ラベル: Employee
(従業員)
表示ラベル (複数形)): Employees
(従業員)
(可能な場合は [母音で始まる場合はチェック] を選択)。
オブジェクト名: Employee
(従業員)
レコード名: Employee Name
(従業員名)
3.[カスタムオブジェクトの保存後、新規カスタムタブウィザードを起動する] を選択します。
4.[保存] をクリックします。
5.[新規カスタムタブ] ページで、[タブスタイル] に [ビル] タブを選択します。
6.[次へ] | [次へ] | [保存] をクリックします。
7.[項目とリレーション] をクリックして、[新規] をクリックします。
8.項目ウィザードに従って次の 3 つの項目を作成します。
データ型: Text (テキスト)、項目の表示ラベル: Last Name
(姓)、項目名: Last_Name
、長さ: 50
、必須: Yes (はい)
データ型: Text (テキスト)、項目の表示ラベル: First Name
(名)、項目名: First_Name
、長さ: 50
データ型: Number (数値)、項目の表示ラベル: Tenure
(在職期間)、長さ: 18
、小数点の位置: 0
、項目名: Tenure
変更通知に対して従業員オブジェクトを有効にする
変更通知を受信する前に、関心のあるオブジェクトを選択する必要があります。選択しないと、適切なチャネルに登録しても通知を受信しません。このセクションでは、従業員カスタムオブジェクトを選択して従業員レコードの変更をリスンします。
- [設定] から、[クイック検索] ボックスに
「Change Data Capture」
(変更データキャプチャ) と入力し、[変更データキャプチャ] をクリックします。 - [使用可能なエンティティ] で、[Employee (Employee__c) ] を選択し、[>] 矢印をクリックします。
- [保存] をクリックします。
EMP コネクタを使用して登録する
次に、EMP コネクタを使用して、Employee (従業員) レコードの変更イベントを生成して登録する方法を示します。このセクションでは、変更イベントを生成して受信する手順を説明し、変更イベントの例で確認できるようにします。このバッチを獲得する目的で必ずしも次の手順を実行する必要はありません。後々 EMP コネクタを使用して変更イベントに登録するときに、この手順を参照できます。
前提条件
- Git: Git の「Downloads」 (ダウンロード) を参照してください。
- Apache Maven: この例では、Apache Maven を使用して EMP コネクタプロジェクトを作成します。https://maven.apache.org/index.html からダウンロードしてインストールします。
- Java Development Kit 8 以降: Java の「Downloads」 (ダウンロード) を参照してください。
- Developer Edition 組織または Trailhead Playground 組織。Trailhead Playground 組織のユーザー名とパスワードの取得方法についての詳細は、「Trailhead Playground の管理」モジュールの「Trailhead Playground のユーザー名とパスワードの取得」単元を参照してください。
- 組織に信頼できる IP アドレス範囲を設定していない場合は、パスワードに追加するセキュリティトークンが必要です。詳細については、「セキュリティトークンのリセット」」と「組織の信頼済み IP 範囲の設定」を参照してください。
手順
- EMP-Connector GitHub リポジトリのローカルコピーを取得する手順は、次のとおりです。
-
$ git clone
https://github.com/forcedotcom/EMP-Connector.git
-
- EMP-Connector ツールを作成する手順は、次のとおりです。
$ cd EMP-Connector
$ mvn clean package
-
mvn
コマンドによって EMP-Connector プロジェクトディレクトリのtarget
フォルダーに生成される JAR ファイル。生成されたtarget/emp-connector-0.0.1-SNAPSHOT-phat.jar
という JAR ファイルに、コネクタとLoginExample
機能が含まれます。この JAR にはコネクタのすべての連動関係が含まれているため、それらを個別にダウンロードする必要がありません。
- EMP コネクタを Developer Edition 組織または Trailhead Playground 組織に対して実行するには、次のコマンドを入力し、Trailhead Playground 組織または Salesforce 組織のログイン情報と登録するチャネルを指定します。この例では、チャネルは
/data/Employee__ChangeEvent
です。$ java -jar target/emp-connector-0.0.1-SNAPSHOT-phat.jar <username> <password> /data/Employee__ChangeEvent
EMP-Connector ツールを Employee__c のチャネルに登録した後、従業員レコードへの変更または新規レコードの作成が行われると、通知が生成され、ツールによってコンソールに出力されます。
従業員レコードを作成する
では、レコードを変更していくつか変更イベント通知を受信しましょう。最初に、従業員レコードを作成します。
- アプリケーションランチャー () で、[Employees (従業員)] を見つけて選択します。
- [新規] をクリックします。
- 次の項目に入力します。
- Employee Name (従業員名):
e-100
- Last Name (姓):
Smith
- First Name (名):
Patricia
- Employee Name (従業員名):
- [保存] をクリックします。
従業員レコードを保存すると、コンソールに変更通知が次のように表示されます。
{ "schema": "-pszPCNGMHqUPU1ftkjxEA", "payload": { "LastModifiedDate": "2019-09-25T20:36:12.000Z", "OwnerId": "005RM000001vI4mYAE", "CreatedById": "005RM000001vI4mYAE", "ChangeEventHeader": { "commitNumber": 65840604581, "commitUser": "005RM000001vI4mYAE", "sequenceNumber": 1, "entityName": "Employee__c", "changeType": "CREATE", "changedFields": [], "changeOrigin": "com/salesforce/api/soap/47.0;client=SfdcInternalAPI/", "transactionKey": "00051d2e-a65a-3e97-03fc-cdf4e16d5d3c", "commitTimestamp": 1569443772000, "recordIds": [ "a00RM0000004ICTYA2" ] }, "CreatedDate": "2019-09-25T20:36:12.000Z", "First_Name__c": "Patricia", "LastModifiedById": "005RM000001vI4mYAE", "Name": "e-100", "Last_Name__c": "Smith" }, "event": { "replayId": 15053 } }
従業員レコードを更新する
次に、作成したレコードを更新しましょう。在職期間項目に値を追加し、名項目を変更します。
- 従業員レコードの詳細ページで、[編集] をクリックします。
- [First Name (名)] 項目を
「Trish」
に変更します。 - [Tenure (在職期間)] に
「3」
と入力します。 - [保存] をクリックします。
従業員レコードを更新すると、次の変更イベントメッセージが生成されます。変更イベントには、ヘッダー項目に加えて新規および変更された項目のみが含まれています。
{ "schema": "-pszPCNGMHqUPU1ftkjxEA", "payload": { "LastModifiedDate": "2019-09-25T20:38:11.000Z", "ChangeEventHeader": { "commitNumber": 65840825286, "commitUser": "005RM000001vI4mYAE", "sequenceNumber": 1, "entityName": "Employee__c", "changeType": "UPDATE", "changedFields": [ "LastModifiedDate", "First_Name__c", "Tenure__c" ], "changeOrigin": "com/salesforce/api/soap/47.0;client=SfdcInternalAPI/", "transactionKey": "00051d4a-7640-5b8c-c6d1-b8db4ce4cf2f", "commitTimestamp": 1569443892000, "recordIds": [ "a00RM0000004ICTYA2" ] }, "First_Name__c": "Trish", "Tenure__c": 3.0 }, "event": { "replayId": 15054 } }
従業員レコードを削除する
次に、従業員レコードを削除したらどうなるか確認しましょう。
- Trish の詳細ページで、ドロップダウンメニューから [削除] を選択します。
- 確認ポップアップで [削除] をクリックします。
削除すると、次のイベントメッセージが生成されます。削除の変更イベントにはレコードやシステム項目は含まれません。
{ "schema": "-pszPCNGMHqUPU1ftkjxEA", "payload": { "ChangeEventHeader": { "commitNumber": 65841052769, "commitUser": "005RM000001vI4mYAE", "sequenceNumber": 1, "entityName": "Employee__c", "changeType": "DELETE", "changedFields": [], "changeOrigin": "com/salesforce/api/soap/47.0;client=SfdcInternalAPI/", "transactionKey": "00051d67-b628-09dc-15a0-05101183b4d1", "commitTimestamp": 1569444019000, "recordIds": [ "a00RM0000004ICTYA2" ] } }, "event": { "replayId": 15055 } }
従業員レコードを復元する
レコードを削除すると、そのレコードは論理削除され、一定期限内であれば復元できます。Apex でレコードを復元しましょう。
- クイックアクセスメニュー () をクリックし、[開発者コンソール] を選択します。
- 開発者コンソールで、[Debug (デバッグ)] をクリックし、[Open Execute Anonymous Window (実行匿名ウィンドウを開く)] を選択します。
- 新しいウィンドウで、次のコードを入力し、ID プレースホルダーを recordIds ヘッダー項目で返された ID 値に置き換えます。
recordIds
項目は、前のステップでレコードを削除した後に受信した変更イベントメッセージに含まれています。
Employee__c record = [SELECT Id,Name FROM Employee__c WHERE Id='ID_Placeholder' ALL ROWS]; undelete record;
- [実行] をクリックします。
復元すると、次のイベントメッセージが生成されます。復元されたレコードの変更イベントには、元の削除されたレコードから項目が含まれます。
{ "schema": "-pszPCNGMHqUPU1ftkjxEA", "payload": { "LastModifiedDate": "2019-09-25T20:43:31.000Z", "OwnerId": "005RM000001vI4mYAE", "CreatedById": "005RM000001vI4mYAE", "ChangeEventHeader": { "commitNumber": 65841428802, "commitUser": "005RM000001vI4mYAE", "sequenceNumber": 1, "entityName": "Employee__c", "changeType": "UNDELETE", "changedFields": [], "changeOrigin": "com/salesforce/api/soap/47.0;client=devconsole", "transactionKey": "00051d9a-2fd0-e4de-a8e6-09f68b7ca54c", "commitTimestamp": 1569444212000, "recordIds": [ "a00RM0000004ICTYA2" ] }, "CreatedDate": "2019-09-25T20:36:12.000Z", "First_Name__c": "Trish", "LastModifiedById": "005RM000001vI4mYAE", "Tenure__c": 3.0, "Name": "e-100", "Last_Name__c": "Smith" }, "event": { "replayId": 15056 } }
リソース