Loading
メールアドレスがデフォルトのログイン方式となります 続きを読む
コードではなくてクリックによる Salesforce の拡張
ストリーミング API による変更の登録

ストリーミング API による変更の登録

Codey Outfitters が Bayeux クライアントを実行すると、クライアントは商品公開チャネルで Streaming API に登録します。

Codey Outfitters は、価格や在庫の更新情報、新商品や取り扱いを中止したアウトドア用品に関する情報などを Visualforce ページで顧客に提供しています。この Visualforce ページのサンプルソースコードは Github で提供されており、自分の OData 4.0 プロデューサーに合わせて変更できます。

登録メカニズムの中心は src/js/channel/ServerConnection.js の _subscribeChannels メソッドです。

cometd.subscribe(channelName, function(event) {
  if (event && event.data && event.data.payload && 
      event.data.payload.ChangeEventHeader) {
    var header = event.data.payload.ChangeEventHeader;
    var entityName = header.entityName;
    var recordId = header.recordIds[0];
    var timestamp = header.commitTimestamp;
    var changeType = header.changeType;
        
    switch (changeType) {
      case "UPDATE":
        // Update logic ...
        break;
     case "CREATE":
        // Create logic
        break;
     case "DELETE":
        // Delete logic
        break;
    }
  }
}

Codey Outfitters の商品用の channelName は /data/Products__ChangeEvent です。チャネルで公開される各変更イベント通知は Bayeux 形式であり、商品在庫で更新されたレコードを表します。data.payload には、変更イベントデータと変更イベントの性質を示すヘッダーが含まれます。次のイベント通知例では、Codey Outfitters の商品レコードへの変更を記述しています。

{ 
  schema=”lswW55LyUCYeU7raSrmZ5A”,
  payload={
    ChangeEventHeader={
      commitUser=”005xx000001SvAn”, 
      sequenceNumber=15,
      entityName=”Products__x”,
      changeType=”UPDATE”, 
      changeOrigin=”Products?$deltaToken=3779”, 
      transactionKey=”f158f145-a...”, 
      commitTimestamp=1507759119826, 
      recordIds=[“x03xx0000000008”]
    },
    Name__c=”Camping Stove”,
    ExternalId=7801,
    UnitPrice__c=10.0,
    Stock__c=1500.0,
    OrderLimit__c=12.0,
    ProductId__c=7801.0
  },
  event={replayId=15}
}

各変更イベント通知は次の構造となります。

項目 説明
schema 変更イベントを定義する、バージョン管理されたスキーマ参照。
payload

変更イベントの詳細。

  • ChangeEventHeader — データ変更イベントの性質を示します。
  • レコードの項目と値 — OData プロデューサーには、値が変更されていない項目も含まれることがあります。現在の値を見るには、変更イベントヘッダーのレコード ID を使用して外部オブジェクトに対してクエリを実行します。
event チャネルのイベントストリームにおけるイベント通知の位置を参照する再生 ID。

各変更イベントヘッダーには次の項目が含まれます。

項目 説明
commitUser イベントを公開したユーザー。
sequenceNumber 変更イベントの連番。変更は、受信した順序で発生します。
entityName 外部オブジェクトの API 参照名。
changeType レコードに対して更新、作成、または削除のどれが行われたかを指定します。
changeOrigin 変更を要求するために使用するデルタリンク。OData プロデューサーは、前回の変更要求の実行中にデルタトークンを計算します。
transactionKey トランザクションの一意の識別子。
commitTimestamp 1970 年 1 月 1 日を起点としてミリ秒数として表される、変更イベント通知が公開されたタイムスタンプ。
recordIds 更新、作成、または削除された外部オブジェクトレコードの Salesforce ID。レコード項目の現在の値を見るには、このレコード ID を使用して外部オブジェクトに対してクエリを実行します。
nulledFields null に設定されている項目のリスト。
 
読み込み中
Salesforce Help | Article