tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Streaming API 試してみました

ちょっと前にStreaming APIの話を聞いて試してみようと思っていたので、Streaming API 開発者ガイドを見ながらDeveloper環境で試してみました。なので詳細はStreaming API 開発者ガイドに載っています。

Streaming API 開発者ガイド
http://developerforcejp.s3.amazonaws.com/developer/docs/api_streaming/api_streaming.pdf

ステップ 1: オブジェクトを作成する

動作検証用のカスタムオブジェクトを作成します。

こんな感じです。
f:id:tyoshikawa1106:20130801222140p:plain

ここでの作業はName項目とDescription項目とStatus項目の作成になります。
自動採番値や選択リスト値の中身はStreaming API 開発者ガイドに載っています。

ステップ 2: PushTopic を作成する

開発者コンソールから次の処理を実行します。

PushTopic pushTopic = new PushTopic();
pushTopic.Name = 'InvoiceStatementUpdates';
pushTopic.Query = 'SELECT Id, Name, Status__c, Description__c FROM Invoice_Statement__c';
pushTopic.ApiVersion = 28.0;
pushTopic.NotifyForOperations = 'All';
pushTopic.NotifyForFields = 'Referenced';
insert pushTopic;

PushTopicは標準オブジェクトです。ステップ1のカスタムオブジェクトが正しく作成できていれば問題なくINSERT処理が実谷されます。上手くいかないときはAPI名が間違っている可能性があります。(最初試した時にオブジェクトのAPI名を間違えていてエラーを発生させてました。)

ステップ 3: PushTopic チャネルに登録する

1. ブラウザで、http://workbench.developerforce.com に移動します。
2. [Environment (環境)] で [Production (本番)] を選択します。
3. [API Version (API バージョン)] で 28.0 を選択します。
4. サービスの利用規約に同意し、[Login with Salesforce (Salesforce でログイン)] をクリックします。
5. データベースへの接続が確立されると、[Select (選択)] ページが表示されます。
6. [queries (クエリ)] > [Streaming Push Topics (ストリーミング転送トピック)] をクリックします。
7. [Push Topic (転送トピック)] 項目で InvoiceStatementUpdates を選択します。
8. [登録] をクリックします。

難しそうなことが書いてありますが、指示どおりに作業すれば問題なく登録できました。

workbench.developerforce.com

f:id:tyoshikawa1106:20130801222716p:plain

queries → Streaming Push Topics

f:id:tyoshikawa1106:20130801223007p:plain

ステップ 4: PushTopic チャネルをテストする

1. [data (データ)] > [挿入] をクリックします。
2. [Object Type (オブジェクト種別)] で、Invoice_Statement__c を選択します。[Single Record (単一レコード)] 項
目が選択されていることを確認し、[Next (次へ)] をクリックします。
3. Description__c 項目に値を入力します。
4. [Confirm Insert (挿入を確認)] をクリックします。
5. [Streaming Push Topics (ストリーミング転送トピック)] ブラウザウィンドウに切り替えます。InvoiceStatement
レコードが作成されたという通知が表示されます。通知では、PushTopic クエリの SELECT ステートメント
で定義したId、Status__c、およびDescription__c 項目が返されます。

こんな感じの画面です。
f:id:tyoshikawa1106:20130801223427p:plain

項目に登録する値を指定します。OwnerIDの入力欄は最初登録するときには出なかった気がします。
f:id:tyoshikawa1106:20130801223559p:plain

登録するとこんな感じの画面が表示されます。
f:id:tyoshikawa1106:20130801223807p:plain

ステップ 5: 静的リソースを作成する

開発ガイドでは別の章に分けられていますがこのまま続けます。

1.http://www.salesforce.com/us/developer/docs/api_streaming_VF_code_sample/streaming_api_interactive_visualforce_demo-v25.zipから、静的リソースファイルの .zip ファイルをダウンロードします。

2. streaming_api_interactive_visualforce_demo-v25.zipを解凍して次のように静的リソースにアップします。
f:id:tyoshikawa1106:20130801224133p:plain

ステップ 6: Visualforce ページを作成する

次のソースのページを作成します。

こんな感じの画面が表示されます。
f:id:tyoshikawa1106:20130801224813p:plain

この画面を開いたまま別のブラウザで InvoiceStatement レコードを作成または変更します。Visualforce ページにイベント通知が表示されます。


だいたいこんな感じです。どこか設定内容に記載漏れがあるかもしれませんが、一応これで動作することまで確認できました。またの機会にもう少し動かしてみようと思います。