...

Chatter ワークブック - Amazon Web Services

by user

on
Category: Documents
9

views

Report

Comments

Transcript

Chatter ワークブック - Amazon Web Services
Chatter ワークブック | 目次 | i
目次
Chatter ワークブックについて..........................................................................................................................................................2
チュートリアル 1: 案内と設定..........................................................................................................................................................3
ステップ 1: Chatter プロファイルの設定.............................................................................................................................3
ステップ 2: データのフォロー..............................................................................................................................................4
ステップ 3: ユーザのフォロー..............................................................................................................................................5
ステップ 4: Chatter グループの作成.....................................................................................................................................7
まとめ.......................................................................................................................................................................................7
チュートリアル 2: プラットフォームでの開発...............................................................................................................................9
ステップ 1: Visualforce ページの作成....................................................................................................................................9
ステップ 2: ユーザ状況更新機能の追加.............................................................................................................................10
ステップ 3: ニュースフィードの表示と検索.....................................................................................................................12
ステップ 4: 自動テストの追加............................................................................................................................................13
まとめ.....................................................................................................................................................................................14
チュートリアル 3: Java クライアントからの Chatter アクセス...................................................................................................15
ステップ 1: Java プロジェクトの作成.................................................................................................................................15
ステップ 2: Java アプリケーションの作成.........................................................................................................................16
ステップ 3: アプリケーションの実行.................................................................................................................................17
ステップ 4: 状況の更新........................................................................................................................................................18
ステップ 5: ニュースフィードの取得.................................................................................................................................19
まとめ.....................................................................................................................................................................................20
チュートリアル 4: NET クライアントからの Chatter アクセス.................................................................................................21
ステップ 1: Partner WSDL のダウンロード.......................................................................................................................21
ステップ 2: Visual Studio でのコンソールプロジェクトの作成......................................................................................21
ステップ 3: login メソッドの作成.......................................................................................................................................22
ステップ 4: 状況更新メソッドの作成.................................................................................................................................23
ステップ 5: 状況更新の検索................................................................................................................................................25
まとめ.....................................................................................................................................................................................26
Chatter ワークブック | Chatter ワークブックについて | 2
Chatter ワークブックについて
Salesforce Chatter は、Force.com で作成するアプリケーションに豊富な共同作業機能を追加し、人々とアプリケー
ションやデータのやり取りまたは人同士のやり取りの形を変えるアプリケーションを作成できます。Chatter ワー
クブックは、Salesforce Chatter の主なコンポーネントと、Chatter 機能を使用するアプリケーションの開発方法を
紹介するものです。
ご利用になる前に
Chatter と Force.com 開発の両方をサポートする Force.com 環境が必要です。このチュートリアルは、Force.com
Developer Edition 環境で実行するよう設計されており、この環境は http://developer.force.com/join から無償で入手
できます。
チュートリアル 3 を完了するには、何らかの Java IDE が必要です。Eclipse または Force.com IDE をお勧めしま
す。チュートリアル 4 を完了するには、Microsoft Visual Studio か無償の Microsoft Visual Studio Express が必要で
す。
ワークブックの構成
4 つあるチュートリアルは、どの順序で進めても構いませんが、まず、チュートリアル 1 とチュートリアル 2 を
完了することをお勧めします。Chatter と連携するクライアントの作成に興味をお持ちなら、使用する言語にあ
わせてチュートリアル 3 かチュートリアル 4 を選択してください。
•
•
•
•
チュートリアル 1 では、基本事項を説明します。標準の Salesforce Chatter アプリケーションを使用して進め
ます。投稿、フィード、グループ、コメントといった基盤となるさまざまな概念を紹介します。
チュートリアル 2 では、Force.com でごく簡単な Chatter アプリケーションを作成します。Chatter をサポート
するデータモデルとのやり取りについて学びます。これは Chatter 機能を備えたアプリケーション作成の出発
点です。
チュートリアル 3 では、Chatter データモデルとやり取りする外部 Java クライアントの作成方法を示します。
アプリケーションは、チュートリアル 2 で作成したアプリケーションと機能的には同じですが、Java で作成す
ること、また、Force.com 環境とリモートで連携する点が異なります。
チュートリアル 4 は、チュートリアル 3 と同じですが、クライアント実装言語として Microsoft .NET を使用
します。
もうひとこと...
各ステップの最後に、必要に応じて「もうひとこと...」セクションがあります。すぐ先に進みたい場合は、次の
ステップに移ってください。ただし、ここにはさまざまな有益な情報があるため、興味のある方は是非お読みく
ださい。
•
•
•
Chatter 開発をさらに探索するには、『Chatter 早見表』(http://developer.force.com/cheatsheets) を参
照してください。
Force.com の詳細を学んだり、豊富なリソースセットにアクセスしたりするには、Developer Force
(http://developer.force.com) にアクセスしてください。
Force.com での開発の入門ガイドとしては、『Force.com Workbook』(http://developer.force.com/workbook)
があります。
Chatter ワークブック | チュートリアル 1: 案内と設定 | 3
チュートリアル 1: 案内と設定
レベル: 初心者; 所要時間: 25 分
Salesforce Chatter には、ユーザプロファイル、状況更新、コメント、グループ、フィードなど、豊富な機能が揃っ
ています。これらの機能を使用して、Force.com アプリケーションに共同作業で役立つ社会的な側面を加味する
ことができます。Chatter を利用することによって、この共同作業においてデータレコードが 1 つの役割を果た
すため、人々は、ほかの人をフォローするだけではなく、彼らにとって重要なデータもフォローできます。実際
に、アプリケーションでは、人とデータを相互により緊密なものにできます。
このチュートリアルでは、Chatter の基本的な機能を見ていきます。これから、ユーザ、投稿、状況更新、コメ
ント、フィード、ユーザやデータのフォロー、グループについて学んでいきます。また、Chatter データモデル
でこれらの機能を形成するオブジェクトの名前についても学びます。こうした概念のすべてを、今後のチュート
リアルで使用します。設定するだけで、プログラミングはまだ行いません。
前提条件
Salesforce Chatter
このワークブックを進めるには、Salesforce Chatter が有効になっている環境が必要です。無料の Developer
Edition 環境のご利用をお勧めします。サインアップするには、http://developer.force.com/join にア
クセスしてください。
ステップ 1: Chatter プロファイルの設定
どのような共同作業環境であっても、自分がほかのユーザから簡単に特定、検索してもらえるよう、プロファイ
ルを設定することが重要です。最初のステップは、ログイン、Salesforce Chatter アプリケーションの検索、自分
のプロファイルの更新、最初の状況更新の作成です。
1. ブラウザで https://login.salesforce.com にアクセスします。
2. ユーザ名 (電子メールアドレスの形式) とパスワードを入力します。
3. 右上にあるアプリケーションのドロップダウンリストから、Salesforce Chatter を選択します。
4. [プロファイル] タブを選択します。自分が行った投稿やレコード更新と、自分のプロファイルに対してほか
の人が行った投稿が表示されます。
Chatter ワークブック | チュートリアル 1: 案内と設定 | 4
5. [自己紹介] 領域の鉛筆アイコンをクリックし、自分の役割と関心事を説明に追加します。ほかの人は、この
説明をもとに、フォローするかどうかを決定できます。[保存] をクリックします。
6. 必要に応じて、[写真の更新] を選択し、自分自身の写真をアップロードします。
7. 最後に、新しい状況更新を作成します。ユーザ状況項目をクリックし、[どんな作業をしていますか?] とある
テキストを [Chatter 初投稿] などに差し替えます。[共有] をクリックします。
これで、自分のユーザプロファイルの設定と、最初の状況更新を作成できました。Salesforce Chatter では、デー
タやほかのユーザをフォローできます。次のステップでは、いくつかのデータをフォローし、その後のステップ
では、フォローするユーザを作成します。
もうひとこと...
•
•
[プロファイル] タブには、自分をフォローしてくれるユーザと、自分がフォローしているユーザやデータレ
コードも表示されます。
自分のプロファイルへの投稿の種別は UserStatus です。投稿を作成するとき、ファイルを添付するか、リ
ンクを添付することができます。誰かほかのユーザのプロファイルへの投稿の種別は、投稿時にほかのオプ
ションを選択しなければ、TextPost です。投稿にファイルを含めると ContentPost となり、リンクを含め
ると LinkPost となります。投稿にコメントを残すこともできます。これは、FeedComment オブジェクトに
保存されます。
ステップ 2: データのフォロー
このステップでは、データレコードをフォローして、レコードに対する変更が Chatter フィードにどう反映され
るかを確認します。レコードをフォローする前に、フィード追跡を有効化する必要があります。
1. [設定] ➤ [カスタマイズ] ➤ [Chatter] ➤ [フィード追跡] をクリックします。
2. 取引先オブジェクトを選択します。オブジェクトを選択すると、その追跡項目が表示されます。
3. [従業員数] 項目のチェックボックスをオンにして [保存] をクリックします。
Chatter ワークブック | チュートリアル 1: 案内と設定 | 5
実際の効果を確認するには、取引先レコードをフォローして [従業員数] 項目を変更する必要があります。
1. ドロップダウンリストから、[セールス] アプリケーションを選択します。
2. [取引先] タブをクリックします。
3. ビューの条件から [すべての取引先] を選択したら、任意の取引先を選択して [フォロー] をクリックします。
4. このレコードに投稿すると、そのレコードをフォローするユーザの [ホーム] タブの [Chatter] フィードにその
投稿が表示されます。
5. ここで [編集] をクリックして、レコードを編集します。
6. [従業員数] 項目に移動し、「200」と入力します。[保存] をクリックします。
追跡項目を変更すると、行った変更がすべてのフォロー実行者に表示されます。これを確認する手順は、次のと
おりです。
1. ドロップダウンリストから、[Salesforce Chatter] アプリケーションを選択します。
2. [ホーム] タブをクリックします。このタブには、NewsFeed が表示されます。これは、ユーザが行ったすべて
の投稿と更新、自分がフォローしているレコード、自分がメンバーになっているグループの一覧です。新た
な更新、この場合は、自分がフォローした取引先レコードの更新が表示され、[従業員数] 項目が変更された
ことを示します。
Chatter では、データをフォローすると同時に、特定のデータレコードについて会話することができます。デフォ
ルトのユーザインターフェースにある各データレコードには、関連する Chatter 投稿 (これをレコードフィードと
いいます) が表示されるようになり、あわせて、ほかにもそのデータをフォローしているユーザがいることを示
します。
もうひとこと...
•
•
•
取引先などの標準オブジェクトと自分で作成するカスタムオブジェクトのどちらも全く同じようにフォロー
できます。
Chatter では、自分がフォローするユーザやレコードが常に [プロファイル] タブに示されます。レコードを
フォローするようになったため、そのレコードの名前がフォロワーリストに入ります。
Chatter 投稿は、人またはレコードから行えます。レコードによる Chatter 投稿の種別は、TrackedChanges
です。その他、UserStatus、TextPosts、ContentPosts、および LinkPosts があり、Salesforce Chatter で
作成できる投稿のさまざまな種別を表します。
ステップ 3: ユーザのフォロー
Chatter は、共同作業を可能にするプラットフォームであるため、共同作業の相手となるユーザが複数必要にな
ります。このステップでは、ユーザの新規作成、作成したユーザとしてのログイン、元のユーザのフォロー、
Chatter ワークブック | チュートリアル 1: 案内と設定 | 6
ユーザの状況更新に対するコメント作成を行います。ユーザの作成では、新しいユーザの詳細を記載した電子
メールを受信する必要があるため、手頃な電子メールアドレスを取得する必要があります。
1. [設定] ➤ [ユーザの管理] ➤ [ユーザ] をクリックし、さらに [新規ユーザ] をクリックします。
2. 示された項目に、次のデータを入力します。
•
名: Joe
•
姓: Blogs
•
別名: jblogs
•
電子メール: 確認できる有効な電子メールアドレス
•
ユーザ名: 電子メールアドレスの形式で一意となる名前を選択します。たとえば、自分の電子メールアド
レスの先頭に chatter- を付けるなど。
メモ: ユーザ名は一意で、電子メールアドレスの形式であることが必要です。すべて同じ電子メー
ルアドレスを使用するユーザ名を複数持つことができます。たとえば、電子メールアドレスが
[email protected] である場合、[email protected][email protected][email protected] というように、異なる目的を持った複数の異なるログインユー
ザ名を持つことができます。これらすべてのユーザの電子メールアドレスは、同一の実在する
[email protected] です。
•
ユーザライセンス: [Salesforce] を選択 ([Salesforce Platform] ではない)
•
プロファイル: [システム管理者] を選択
3. [保存]、[ログアウト] の順にクリックします。
選択したユーザ名と仮のパスワードを示した電子メールが届きます。次のように、Joe Blogs としてログインしま
す。
1. https://login.salesforce.com/ にアクセスします。
2. Joe Blogs のユーザ名と仮のパスワードを入力します。
3. メッセージに従って、新規パスワードとセキュリティの質問を入力します。
これで Joe Blogs として作業できるようになりました。
1. Salesforce Chatter アプリケーションを選択します。
2. [人] タブをクリックします。
3. 自分のプロファイル (最初に作成したプロファイル) を検索し、[フォロー] をクリックします。
4. 自分の名前をクリックします。投稿一覧は、UserProfileFeed です。自分が作成した投稿を検索し、[コメ
ント] リンクをクリックしてテキストを入力します。[コメント] をクリックして保存します。
5. [ログアウト] をクリックします。
次に、自分自身としてログインし直し、次の要領で Joe をフォローします。
1. https://login.salesforce.com/ にアクセスし、自分のログイン情報でログインします。
2. Salesforce Chatter アプリケーションを選択します。
3. [プロファイル] タブをクリックします。これでページには、Joe Blogs が自分をフォローしていることが示さ
れ、Joe が残したコメントを見ることができます。
Chatter ワークブック | チュートリアル 1: 案内と設定 | 7
4. [ Joe Blogs] の名前または画像をクリックして選択します。[フォロー] をクリックします。これで、Joe をフォ
ローすることになります。
もうひとこと...
•
•
このステップでユーザをフォローする方法は、お気づきのとおり 2 通りあります。[人] タブで検索する方法
と、そのユーザのプロファイルを参照しているときに [フォロー] をクリックする方法です。
電子メール受信箱を見ると、Joe Blogs が投稿にコメントしたことを知らせる Salesforce Chatter からの電子メー
ルに気がつくでしょう。電子メール通知の切り替えは、[設定] ➤ [カスタマイズ] ➤ [Chatter] ➤ [設定] を選択
し、[ユーザ名・パスワード通知用電子メールの設定] オプションを変更することによって可能です。
ステップ 4: Chatter グループの作成
共同作業環境では、知識の共有や課題達成のためにグループを構成することがよくあります。このステップで
は、Chatter グループを作成して参加します。
1. [グループ] タブをクリックします。
2. [新規グループ] をクリックします。
3. グループの名前と、必要に応じて説明を入力し、[保存] をクリックします。
4. [追加/削除] をクリックして、グループに Joe Blogs を追加します。
5. ここで、グループに更新を投稿します。「記入する...」と表示されている項目に、 「グループ初更新!」と入
力し、[保存] をクリックします。グループの全員に (自分と Joe Blogs) にその更新が表示されます。
もうひとこと...
•
CollaborationGroupFeed には、グループに対するすべての更新が入っています。
•
•
各グループメンバーには、[ホーム] タブの Chatter フィードにグループからの更新が表示されます (NewsFeed)。
グループは、公開にも非公開にもできます。公開グループを作成すると、誰でもその更新を見ることができ、
また、グループに参加することもできます。非公開グループを作成すると、メンバーの参加には、明示的な
承認が必要です。
まとめ
このチュートリアルでは、Chatter プロファイルの作成、ユーザのフォロー、コメントの作成、グループの作成
の方法を学びました。Chatter のこの基本的機能では、Chatter で作成できるさまざまな種別の投稿があることを
紹介しました。
この最初のチュートリアルを進める間に、すべての投稿にさまざまなビューがいくつもあることに気がついたで
しょう。こうしたビューをフィードと呼びます。自分の [プロファイル] タブには、自分で作成したり、自分を対
象とする投稿や追跡変更が一覧されます。これが、UserProfileFeed です。グループには、そのグループに対
して行われた更新の一覧があり、CollaborationGroupFeed に保存されています。オブジェクトの各レコード
でも、そのレコードに対する投稿、またはレコードに対して作成された追跡変更のフィードが表示されます。こ
れをレコードフィードと呼びます。最後に、[ホーム] タブには、自分の更新、フォローしている人の状況更新、
Chatter ワークブック | チュートリアル 1: 案内と設定 | 8
フォローしているレコードに対する更新、自分がメンバーになっているグループが表示され、これを NewsFeed
と呼びます。
Chatter ワークブック | チュートリアル 2: プラットフォームでの開発 | 9
チュートリアル 2: プラットフォームでの開発
レベル: 中級者; 所要時間: 30 分
Salesforce Chatter は、Force.com プラットフォーム上に構築されています。そのため、Chatter 機能を拡張したり、
独自のアプリケーションに Chatter 機能を持たせることができます。このチュートリアルでは、これまでのチュー
トリアルの概念、特に NewsFeed と状況更新を取り入れ、プログラムで状況を更新し、それを表示するような
Visualforce ページを作成します。
ステップ 1: Visualforce ページの作成
このステップでは、Visualforce を使用してカスタムユーザインターフェースを作成します。Visualforce は、Force.com
のコンポーネントベースのユーザインターフェースフレームワークで、これを使用してカスタムページを作成で
きます。チュートリアルが終わるまでに、このページには自分の NewsFeed がリストされ、自分の状況更新のた
めの入力ボックスも表示されます。ただし、ページを作成する前に、開発モードを有効化することをお勧めしま
す。これにより、ページエディタが Visualforce に組み込まれ、開発しやすくなります。
1. [設定] ➤ [私の個人情報] ➤ [個人情報] ➤ [編集] をクリックします。
2. [開発モード] チェックボックスをオンにして [保存] をクリックします。
3. ブラウザで、現在の URL にテキスト「/apex/HelloWorld」を追加します。たとえば、現在の URL が
https://na1.salesforce.com/005A0000000hFv5 の場合、新しい URL は
https://na1.salesforce.com/apex/HelloWorld となります。エラーメッセージ「Apex ページ
「HelloWorld」は存在しません。」が表示されます。
メモ: サポートされていないブラウザでは、このエラーメッセージは表示されません。[設定] ➤ [開発]
➤ [ページ] をクリックし、[新規] をクリックすると、ページを作成できます。ページを作成したら、
先ほどの URL に戻ります。
4. [ページ HelloWorld の作成] リンクをクリックして、新しいページを作成します。
5. ブラウザの左下の [ページエディタ] リンクをクリックします。[ページエディタ] タブに新しいページのコー
ドとプレビューが表示されます (デフォルトのテキストが入っています)。
Chatter ワークブック | チュートリアル 2: プラットフォームでの開発 | 10
6. ページの見出しに「Congratulations」と表示したくない場合は、見出しのタグの内容を 「News Feed」に変更
し、コメントを削除します。そのとき、apex:page タグに属性 sidebar="false" を追加します。コードは
次のようになります。
<apex:page sidebar="false">
<h1>News Feed</h1>
</apex:page>
もうひとこと...
•
•
これでページのコードは標準 HTML のように見えます。Visualforce ページは、HTML タグと Visualforce 固
有のタグを組み合わせているからです。
組み込みのページエディタには、タグ補完機能と、各 Visualforce タグの働きを示す総合的なコンポーネント
参照機能があります。
ステップ 2: ユーザ状況更新機能の追加
Force.com が使用している Model-View-Controller (MVC) 設計パターンによって、ビューとスタイリングを、基に
なるデータベースやロジックから簡単に切り離すことができます。MVC では、ビュー (Visualforce ページ) はコ
ントローラと連動します。この場合、コントローラは Apex クラスで、ページに対する機能のいくつかを明らか
にします。たとえば、コントローラには、ボタンをクリックしたときに実行されるロジックが含まれています。
コントローラは、一般に、モデル (データベース) とも連動し、ビューで表示するデータを明らかにします。
このステップでは、Visualforce ページを変更してテキスト領域やボタンを置くようにし、そのボタンをクリック
するとテキスト領域にある値で Chatter 状況を更新するようなロジックを追加します。
1. Visualforce ページでページエディタが開いていない場合、左下の [ページエディタ] をクリックします。
2. <apex:page> タグを編集して HelloWorldController カスタムコントローラを含めるよう、コードを編集
します。
<apex:page controller="HelloWorldController" sidebar="false">
3. [保存] をクリックすると、HelloWorldController クラスが存在しないことを示し作成するよう促すメッセー
ジが表示されます。「Apex クラス「public class HelloWorldController」を作成」をクリックします。
メモ: このメッセージが表示されない場合、サポートされていないブラウザを使用している可能性があ
ります。クラスを作成するには、[設定] ➤ [開発] ➤ [Apex クラス] をクリックし、[新規] をクリックし
ます。クラスでテキスト HelloWorldController { } を追加したら、Visualforce ページの URL に戻
ります。
Chatter ワークブック | チュートリアル 2: プラットフォームでの開発 | 11
4. 見出し終わりの </h1> タグの直後に、フォームを追加し、テキスト入力領域とボタンを付けます。
<apex:form>
<apex:inputText value="{!status}"/>
<apex:commandButton value="Update" action="{!go}" reRender="recent"/>
</apex:form>
5. [保存] をクリックします。「status」というプロパティがないことを示し作成するよう促すメッセージが表示
されます。[Apex プロパティ「HelloWorldController.status」を作成] を選択します。
6. go() というメソッドがないことを示すメッセージが表示されます。[Apex メソッド「HelloWorldController.go」
を作成] をクリックします。
ここまでのところで、[制御項目] タブにコントローラのコードが表示されるようになったことに気付くでしょ
う。エディタからさまざまなコードを作成したため、ページを表示すると、フォームテキスト領域とボタンがあ
ることがわかります。生成されたコードは、次のとおりです。
public class HelloWorldController {
public PageReference go() {
return null;
}
public String status { get; set; }
}
テキスト領域に値を入力すると、作成したばかりの status プロパティにその値が割り当てられます。[Update]
ボタンをクリックすると、Visualforce ページはコントローラの go() メソッドを呼び出します。このメソッドは、
入力した値を使用してユーザの状況を更新します。この更新が、次に行う最後の課題です。
1. go() メソッドの内容を変更し、ユーザオブジェクトを検索し、UserInfo.getUserId() で現在ログインして
いるユーザを指定します。
public PageReference go() {
User u = [SELECT id, CurrentStatus FROM User WHERE id = :UserInfo.getUserId()];
return null;
}
2. 次に、CurrentStatus 項目に status プロパティにある値を設定し、データベースの User レコードを更新し
ます。
public PageReference go() {
User u = [SELECT id, CurrentStatus FROM User WHERE id = :UserInfo.getUserId()];
u.CurrentStatus = status;
update u;
return null;
}
もうひとこと...
•
go() メソッドで使用される Visualforce PageReference 型は、メッセージ完了後に表示されるページを判定
します。null を返すことで、新しいページを表示しないことを示します。
•
誰かの Chatter 状況を更新するには、その User レコードの CurrentStatus 項目を更新します。これで、種
別が UserStatus の新しい投稿が作成されました。
Chatter ワークブック | チュートリアル 2: プラットフォームでの開発 | 12
ステップ 3: ニュースフィードの表示と検索
現在のところ、ユーザ状況が更新されているかを確認するには [プロファイル] タブに移動する必要があります。
代わりに、更新するごとにページ上に自分の状況を表示するようにしましょう。[ホーム] タブの Chatter フィー
ドには、自分の投稿とフォローするユーザの投稿が表示されます。同じように、ただし表示は状況更新のみで、
コメントなどは無視するように制限して表示します。
1. 前のステップで作成した HelloWorldController に新しい getRecentStatusUpdates() メソッドを追加し
ます。第 1 行目の後ろに、次のコードを追加します。
public List<NewsFeed> getRecentStatusUpdates() {
}
2. ここで、UserStatus の更新である NewsFeed 項目の一覧を取得するクエリを使用します。投稿は日付ごとに
並べ替え、新しいものが最初にくるようにします。
public List<NewsFeed> getRecentStatusUpdates() {
List <NewsFeed> aNewsFeed =
[SELECT Type, CreatedDate, CreatedBy.name, FeedPost.body
FROM NewsFeed WHERE Type='UserStatus'
ORDER BY CreatedDate DESC LIMIT 10];
return aNewsFeed;
}
3. これで、このコードからは、UserStatus の更新である NewsFeed 項目の一覧が返ります。ここまでできた
ら、Visualforce ページを変更して、一覧を表示します。[ページエディタ] をクリックして、Visualforce マーク
アップを示したパネルを表示します。
4. <apex:commandButton> が含まれている行の下に、次のコードを挿入します。
<apex:outputPanel id="recent">
</apex:outputPanel>
5. 先ほど追加したコマンドボタンの属性が reRender="recent" であることに気付いたことでしょう。こうす
ることによって、ボタンがクリックされると AJAX ページの更新が行われ、"recent" という識別子で識別さ
れるページ上のブロックを更新します。先に進めて、ブロックの中にリストを置きます。outputPanel タグ
の間に次のコードを入力します。
<apex:dataList value="{!recentStatusUpdates}" var="update">
<apex:outputText value="{!update.feedpost.body}"/>
</apex:dataList>
6. [保存] をクリックします。
7. テキストを入力し、[Update] ボタンをクリックします。ページには、クエリボックスの下に一番新しい状況
更新が動的にリストされるのがわかります。
Chatter ワークブック | チュートリアル 2: プラットフォームでの開発 | 13
もうひとこと...
•
•
<apex:dataList> コンポーネントを 1 つのリストに繰り返し使用し、リスト内の各アイテムを変数に割り当
てます。示したコードでは、各アイテム (NewsFeed のインスタンス) を update という名前の変数に割り当て
ています。<apex:outputText> コンポーネントは値を出力します。この場合、NewsFeed レコードに関連付
けられた FeedPost の本文を取り込んでいます。ユーザの状況更新に対して、body 項目はユーザの状況更新
の一部として投稿されたテキストを持っています。
Visualforce ページは、クエリで取得したすべての値を出力するわけではありません。たとえば、CreatedDate
と CreatedBy.Name は無視されます。任意の練習課題として、これらの項目も表示するよう Visualforce ペー
ジを拡張してください。
ステップ 4: 自動テストの追加
HelloWorldController が機能することは分かりましたが、運用環境にコードをリリースする前に、自動テス
トが必要です。このステップでは、単独のテストメソッドをコントローラに追加し、期待通りに動作することを
確認します。テストメソッドを追加する手順は、次のとおりです。
1. [設定] ➤ [開発] ➤ [Apex クラス] をクリックします。
2. クラスの名前である HelloWorldController をクリックし、[編集] をクリックします。
3. 最後の閉じかっこの前に新しいメソッドを作成します。
@isTest
static void testUpdates() {
}
4. 中括弧 ({}) の中で、コントローラクラスの新しいインスタンスを作成します。
HelloWorldController h = new HelloWorldController();
5. status プロパティを割り当て、go() メソッドを呼び出して更新を投稿します。
h.status = 'hi';
h.go();
6. 状況更新のリストを返します。
List<NewsFeed> after = h.getRecentStatusUpdates();
7. ここで、取得したリストに、要素が少なくとも 1 つはあることと、最新の更新が、自分で作成したばかりの
状況更新に対応していることをテストする必要があります。元のクエリの ORDER BY 指定によって、最新の
投稿が最初にくることはわかっています。
System.assert(after.size() > 0 );
System.assertEquals(h.status, after[0].feedpost.body);
Chatter ワークブック | チュートリアル 2: プラットフォームでの開発 | 14
8. 完成したコードが、次のようになっていることを確認して、[保存] をクリックします。
@isTest
static void testUpdates() {
HelloWorldController h = new HelloWorldController();
h.status = 'hi';
h.go();
List<NewsFeed> after = h.getRecentStatusUpdates();
System.assert(after.size() > 0 );
System.assertEquals(h.status, after[0].feedpost.body);
}
9. [すべてのテストを実行] をクリックします。すべて合格すれば、画面には、テストを 1 つ実行し、コードカ
バー率が 100% であることが示されます。
もうひとこと...
•
•
テストは、コード開発の重要な部分です。これは非常に単純な例です。実際には、テストでは、さまざまな
使用例について、プラス、マイナス両方の結果を確認します。
@isTest アノテーションは、メソッドがテストメソッドであること、テスト中に呼び出す必要があることを
示します。
まとめ
Chatter の基盤にあるデータモデルは、Force.com のアプリケーションからアクセスでき、Chatter 機能に関連する
データを操作したり検索したりするアプリケーションが作成できます。このチュートリアルでは、ユーザの状況
を更新し、そのニュースフィードを検索するロジックを作成しました。独自のアプリケーション内のロジックの
いくつかに組み込んだり、http://developer.force.com/cheatsheets にある『Chatter 早見表』の例を利用
して拡張したりすることも考えられます。
Chatter ワークブック | チュートリアル 3: Java クライアントからの Chatter アクセス | 15
チュートリアル 3: Java クライアントからの Chatter アク
セス
レベル: 上級者; 所要時間: 30 分
Force.com では、多数の API を公開しており、そのなかの 1 つに Force.com Web サービス API があります。これ
を使用すると、SOAP ベースの Web サービスをサポートする任意の言語を使用して、プラットフォーム外部か
らデータレコードにアクセスし、操作することができます。Chatter データモデルについては、チュートリアル
1 で説明し、チュートリアル 2 で使用しましたが、この方法でもアクセスできます。このチュートリアルでは、
Force.com Web サービス API を Java で使用する方法を学びます。Java アプリケーションでは、Force.com プラッ
トフォームを使用した認証、状況の更新、ニュースフィードからの最新項目の表示を行います。このチュートリ
アルは、チュートリアル 4 と似ています。チュートリアル 4 では同じ処理を .NET を使用して実現します。
前提条件
Java
Eclipse か Force.com IDE、また Java JDK 6 (1.6) がコンピュータにインストールされていることが必要になり
ます。Java の知識が多少あることを想定しています。
実行時ライブラリ
Force.com Web Service Connector (WSC) は、オープンソースのコード生成ツールであり、Java から Force.com
Web サービスにアクセスするためのランタイムライブラリです。次の 2 つのライブラリが必要です。
•
wsc-18.jar - Force.com Web サービスにアクセスするための Web サービスクライアント。
•
partner-18.jar — WSC と Partner WSDL を使用する事前に生成済みの Java ライブラリ。
http://code.google.com/p/sfdc-wsc/downloads/list からダウンロードしてください。チュートリアルの説明は、
これらのライブラリがデスクトップにあることを想定しています。
ステップ 1: Java プロジェクトの作成
このステップでは、IDE で新しい Java プロジェクトを作成し、新しい WSC ライブラリを使用するようビルドパ
スを設定します。
1. Eclipse で、[ファイル] ➤ [新規] ➤ [プロジェクト] ➤ [ Java プロジェクト] をクリックします。
2. 「Chatter Tutorial」などと、プロジェクト名を入力します。
3. 選択されている JRE が 1.6 であることを確認します。
4. [完了] をクリックします。
ここで、プロジェクトを変更して、「前提条件」で挙げた 2 つの Java ライブラリをビルドパスに追加する必要が
あります。
1. ナビゲーションペインで、作成したばかりのプロジェクトを選択し、[プロジェクト] ➤ [プロパティ] ➤ [ Java
のビルド・パス] を選択します。
2. [ライブラリー] タブをクリックします。
Chatter ワークブック | チュートリアル 3: Java クライアントからの Chatter アクセス | 16
3. [外部 Jar の追加] をクリックし、その場所に移動します。
4. 両方のライブラリを選択して、[開く] をクリックします。
5. [OK] をクリックします。
もうひとこと...
WSDL (Web Services Description Language) は、Web サービスエンドポイントを記述したものです。Force.com Web
サービス API には、2 種類の WSDL があります。
•
•
Partner WSDL は汎用です。Force.com 環境にあるデータオブジェクトは、何らかの具体的な手法が反映され
たものではありません。汎用の「sObject」記述をすべて共有しています。これは、Partner WSDL を使用する
アプリケーションを作成すると、このチュートリアルでも行っているように、正しい権限、ユーザ名、パス
ワードを指定すれば、どのユーザの Force.com 環境内でも機能するということです。
Enterprise WSDL は、強い型付けです。この WSDL では、FooBar など持っているデータオブジェクトはどれ
も、Java FooBar にあるオブジェクトとして反映されます。もちろん、これは、WSDL が環境固有のもの (ほ
かのユーザがそのオブジェクトを持つことはできない) であることを意味します。その結果、コードは汎用
性、移植性が低くなりますが、一般には理解しやすいものになります。
ステップ 2: Java アプリケーションの作成
アプリケーションは、アプリケーションの機能をすべて含んでいる 1 つのクラスで構成します。このアプリケー
ションの作成を開始するには、次の手順で行います。
1. [ファイル] ➤ [新規] ➤ [クラス] をクリックします。
2. パッケージ名「com.developerforce.chatter」を入力します。
3. クラス名「ChatterMain」を入力し、main() メソッドプレースホルダ「public static void main(String[] args)」
を作成するチェックボックスをオンにします。
4. [完了] をクリックします。
5. エディタに新しいクラスが開きます。パッケージの宣言の後、必要なライブラリの import 文を追加します。
import
import
import
import
com.sforce.soap.partner.*;
com.sforce.soap.partner.sobject.*;
com.sforce.ws.*;
java.io.*;
6. クラス宣言の後、Force.com ログイン認証情報と Web Services Connector (WSC) からの接続オブジェクトを保
存するための static クラスメンバーを追加します。パスワードの最後にセキュリティトークンの追加が必要に
なる場合があります。
static final String USERNAME = "自分の SALESFORCE ユーザ名";
static final String PASSWORD = "自分の SALESFORCE パスワードとトークン";
static PartnerConnection connection;
7. クラス内の main() メソッドを、次のコードで置き換えます。このメソッドは、Force.com 認証情報を使用し
て (WSC ライブラリから) PartnerConnection オブジェクトを新規作成し、それを使用してプラットフォー
Chatter ワークブック | チュートリアル 3: Java クライアントからの Chatter アクセス | 17
ムへの新規接続を確立します。コードには、コメントアウトされているメソッド呼び出しが 2 つあります。
後のステップでこれらのメソッドを作成したら、ここにあるメソッド呼び出しのコメントを解除します。
public static void main(String[] args) throws Exception {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(USERNAME);
config.setPassword(PASSWORD);
connection = Connector.newConnection(config);
System.out.println("こんにちは " + connection.getUserInfo().getUserFullName());
//displayNewsFeed();
//updateStatus();
}
8. コードが、次のようになっていることを確認して、[保管] をクリックします。
package com.developerforce.chatter;
import
import
import
import
com.sforce.soap.partner.*;
com.sforce.soap.partner.sobject.*;
com.sforce.ws.*;
java.io.*;
public class ChatterMain {
static final String USERNAME = "[email protected]";
static final String PASSWORD = "password1Ud4VCrSU5YtYf7vbg7NaT1u9j";
static PartnerConnection connection;
public static void main(String[] args) throws Exception {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(USERNAME);
config.setPassword(PASSWORD);
connection = Connector.newConnection(config);
System.out.println("こんにちは " + connection.getUserInfo().getUserFullName());
//displayNewsFeed();
//updateStatus();
}
}
もうひとこと...
一般に、プラットフォームとやり取りするときに最初に行うことは、Force.com 環境を使用して接続を確立する
ことです。接続オブジェクト自体が、その後のやり取りには重要なものであり、プラットフォームとのやり取り
に必要なすべてのメソッドが含まれています。このステップにあるコードは、getUserInfo() メソッドを使用
して認証済みユーザに関する情報を抽出します。ほかのメソッドには、レコードの検索、挿入および更新を行う
ものがあり、また、Force.com 環境にあるオブジェクトに関するメタ データを取得するものもあります。
ステップ 3: アプリケーションの実行
ここで、アプリケーションをテストします。アプリケーションが組織に正常に接続できると、ユーザの氏名が表
示されます。
1. [実行] ➤ [別のユーザとして実行] ➤ [ Java アプリケーション] をクリックします。
2. ページ下部の [コンソール] タブをクリックします。
3. アプリケーションが組織に正常に接続できると、「Hello」の後ろに氏名が表示されます。
Chatter ワークブック | チュートリアル 3: Java クライアントからの Chatter アクセス | 18
もうひとこと...
Force.com には、さまざまな組み込みのセキュリティ対策があり、そのなかの 1 つによって、新規または信頼さ
れていない場所からのログインがあると追加のセキュリティが必要になるようにします。INVALID_LOGIN 例
外を受け取ったら、ユーザ名とパスワードが正しいかどうかを確認します。正しい場合、パスワードにセキュリ
ティトークンを追加する必要がでてきます。セキュリティトークンを取得するには、Web ブラウザを使用して組
織にログインし、[設定] ➤ [私の個人情報] ➤ [私のセキュリティトークンのリセット] にアクセスします。パス
ワードに追加する文字列を示した電子メールが送られてきます。
ステップ 4: 状況の更新
このステップでは、アプリケーションを変更して、新しいメソッド updateStatus() を使用して自分の状況を更
新します。
1. まず、updateStatus() メソッドを作成します。
private static void updateStatus() throws Exception {
}
2. 中括弧 ({}) の中で、ユーザに状況更新を求めます。
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
System.out.println("どんな作業をしていますか?");
3. user sObject を作成し、新しい状況更新を保持します。
SObject user = new SObject();
user.setType("User");
user.setId(connection.getUserInfo().getUserId());
user.setField("CurrentStatus", in.readLine());
4. update() メソッドを呼び出し、レコードを更新します。
SaveResult[] results = connection.update(new SObject[] { user });
5. エラーを確認します。
if (!results[0].isSuccess()) {
System.out.println("ユーザの状況の更新中にエラーが起こりました: "
+ results[0].getErrors()[0].getMessage());
}
else {
System.out.println("ユーザの状況の更新が成功しました。");
}
}
6. main() メソッド内の updateStatus(); のコメントを解除します。
7. ステップ 3: アプリケーションの実行 (ページ 17) の手順に従って、アプリケーションを実行します。
8. このとき、何か書き込むようメッセージが表示されます。Enter キーを押すと、Chatter 状況が更新されます。
Chatter ワークブック | チュートリアル 3: Java クライアントからの Chatter アクセス | 19
もうひとこと...
Partner WSDL を使用しているため、SObject と呼ばれる汎用型を使用して、自分の Force.com 環境にある実際の
オブジェクトをすべて表す必要があります。その結果、SObject に対し、それがどんな型を表すのかを示す必要
があります。上記のコードの場合、これを setType() メソッドの呼び出しで行っています。User オブジェクト
の作成、その ID の指定、CurrentStatus というオブジェクト上の項目の設定を効率良く行います。これはまさ
に、ユーザ状況を更新するためにチュートリアル 2 で行ったことです。
ステップ 5: ニュースフィードの取得
このステップでは、NewsFeed を検索し、結果を表示します。
1. 新しい displayNewsFeed() メソッドを追加します。
private static void displayNewsFeed() throws Exception {
System.out.println("状況の更新を照会中...");
QueryResult queryResults = connection.query
("SELECT Id, Type, CreatedDate, CreatedBy.name, FeedPost.body
FROM NewsFeed WHERE Type= 'UserStatus'
ORDER BY CreatedDate DESC, ID DESC LIMIT 10");
if (queryResults.getSize() > 0) {
for (SObject s : queryResults.getRecords()) {
System.out.println(s.getChild("FeedPost").getField("Body") );
}
}
}
2. ここで、main() メソッドにある displayNewsFeed() 呼び出しのコメントを解除します。
3. アプリケーションを再度実行し、状況更新リストを確認します。
Chatter ワークブック | チュートリアル 3: Java クライアントからの Chatter アクセス | 20
もうひとこと...
•
•
コードでは、NewsFeed オブジェクトに対する検索を実行します。これはチュートリアル 2: プラットフォー
ムでの開発 (ページ 9)で使用したクエリと同じものです。クエリの実行後、クエリの結果を使用して
QueryResults オブジェクトのインスタンスが作成されます。何らかの結果がある場合、コードは返された
レコードに対し繰り返し実行され、各フィード投稿の本文を表示します。
Partner WSDL を使用しているため、すべてのレコードの結果は汎用型の sObject です。そのため、Java では
オブジェクトにどの項目があるのかはわかりません。getChild() メソッドと getField() メソッドを使用す
ると、汎用オブジェクトを探して、必要なデータを取得することができます。
まとめ
このチュートリアルでは、Force.com 環境と連携する Java クライアントアプリケーションを作成しました。作成
した Java アプリケーションでは、Force.com プラットフォームでの認証、レコード (ユーザ状況を持っている User
レコード) の更新、クエリの実行を行います。接続オブジェクト上のほかのメソッドを探索して、ほかにどのよ
うなアクションを実行できるかを明らかにしたり、『Chatter 早見表』を参照して、Chatter データモデルに対し
て実行するクエリを探したりできます。
Chatter ワークブック | チュートリアル 4: NET クライアントからの Chatter アクセス | 21
チュートリアル 4: NET クライアントからの Chatter アク
セス
レベル: 上級者; 所要時間: 30 分
Force.com では、多数の API を公開しており、たとえば、Force.com Web サービス API などがあります。これを
使用すると、SOAP ベースの Web サービスをサポートする任意の言語を使用して、プラットフォーム外部から
データレコードにアクセスし、操作することができます。Chatter データモデルについては、チュートリアル 1
で説明し、チュートリアルの 2 で実際に使用しましたが、この方法でもアクセスできます。このチュートリアル
では、.NET クライアントを作成し、Force.com プラットフォームを使用した認証、状況の更新、ニュースフィー
ドからの最新項目の表示を行います。このチュートリアルは、チュートリアル 3 と似ています。チュートリアル
3 では同じ処理を Java を使用して実現します。
前提条件
Visual Studio
Microsoft の Visual Studio IDE に熟知していることを想定しています。
ステップ 1: Partner WSDL のダウンロード
開発を開始する前に、Partner WSDL をダウンロードする必要があります。Partner WSDL では、Force.com 環境
にあるデータオブジェクトは、いずれかの具体的な手法が反映されたものではありません。すべて汎用の「sObject」
記述を共有しています。これは、Partner WSDL を使用するアプリケーションを作成すると、このチュートリア
ルでも行っているように、正しい権限、ユーザ名、パスワードを指定すれば、どのユーザの Force.com 環境内で
も機能するということです。
1. Web ブラウザから、Force.com 環境にログインします。
2. [設定] ➤ [開発] ➤ [パートナー WSDL の作成] をクリックします。
3. ファイルをデスクトップに保存します。
もうひとこと...
WSDL の詳細は、「チュートリアル 3: Java クライアントからの Chatter アクセス」( ステップ 1: Java プロジェク
トの作成 (ページ 15)) の「もうひとこと...」を参照してください。
ステップ 2: Visual Studio でのコンソールプロジェクトの作成
このステップでは、新しい C# コンソールアプリケーションを作成し、Partner WSDL を参照として追加します。
1. [ファイル] ➤ [新しいプロジェクト] をクリックします。
2. テンプレートから、[コンソール アプリケーション] を選択します。
3. プロジェクトの名前を「ChatterConsole」とし、[OK] をクリックします。
4. ソリューション エクスプローラで [参照] をクリックし、[サービス参照の追加] を選択します。
Chatter ワークブック | チュートリアル 4: NET クライアントからの Chatter アクセス | 22
5. [詳細設定] をクリックします。
6. [サービス参照設定] ダイアログで、[Web 参照の追加] をクリックします。
7. Partner WSDL へのパスを入力します。
8. Web 参照名項目に、「PartnerWSDL」と入力して、[参照の追加] をクリックします。
ステップ 3: login メソッドの作成
アプリケーションは、アプリケーションの機能をすべて含んでいる 1 つのクラスで構成します。このアプリケー
ションの作成を開始するには、次の手順で行います。
1. Partner WSDL を使用するには、次の using 文を追加します。
using ChatterConsole.PartnerWSDL;
2. 次に、このチュートリアルで作成するすべてのメソッドの中で使用するには、SforceService オブジェクト
が必要です。またユーザ名とパスワードを入力すると、プログラムを実行するたびに再入力する必要がなく
なります。セキュリティトークンがある場合は、それをパスワードの後ろに追加します。次の行を追加しま
す。
private SforceService binding;
private static string USERNAME = "自分の SALESFORCE ユーザ名";
private static string PASSWORD = "自分の SALESFORCE パスワードとトークン";
3. login() メソッド用のメソッドの署名を追加します。
private bool login()
4. 次に、サービスオブジェクトを作成します。
binding = new SforceService();
5. ログインを試みて成功したら、SforceService オブジェクトを正しいエンドポイントにバインドし、ヘッ
ダーとセッション ID を設定します。ログインできなかった場合は、エラーの状況を確認して報告してくださ
い。
LoginResult lr;
try {
Console.WriteLine("ログイン中...");
lr = binding.login(USERNAME, PASSWORD);
binding.Url = lr.serverUrl;
binding.SessionHeaderValue = new SessionHeader();
binding.SessionHeaderValue.sessionId = lr.sessionId;
return true;
}
catch (Exception e){
// 障害をコンソールに報告する
Console.WriteLine(e.Message);
return false;
}
Chatter ワークブック | チュートリアル 4: NET クライアントからの Chatter アクセス | 23
6. これは、一時的に停止し、すべてが期待通りに機能しているかを確認するよいタイミングです。自動的に生
成される Main() に次のコードを挿入し、クラスのインスタンスを作成して、ログインを実行します。また、
Main() の最後に 2 行追加して、アプリケーションを終了するための入力を待ち、ゆっくりと作業の結果を確
認できるようにします。
Program chatProgram = new Program();
if (chatProgram.login()) {
Console.Write("成功!");
// updateStatus();
// queryForUpdates();
Console.WriteLine("\n\n終了するには Enter を押してください...");
Console.ReadLine();
} else {
Console.Write("ログインできませんでした。");
}
7. ここで、プロジェクトをビルドして実行します。コンソールには、「成功!」というメッセージが表示されま
す。
もうひとこと...
•
•
一般に、プラットフォームとやり取りするときに最初に行うことは、Force.com 環境を使用して接続を確立す
ることです。接続オブジェクト自体が、その後のやり取りには重要なものであり、プラットフォームとのや
り取りに必要なすべてのメソッドが含まれています。ほかのメソッドには、レコードの検索、挿入および更
新を行うものがあり、また、Force.com 環境にあるオブジェクトに関するメタ データを取得するものもありま
す。
接続に問題がある場合は、「チュートリアル 3: Java クライアントからの Chatter アクセス」( ステップ 3: アプ
リケーションの実行 (ページ 17)) の「もうひとこと...」を参照してください。
ステップ 4: 状況更新メソッドの作成
このステップでは、ログインした後、ユーザに状況を更新するよう求めるメソッドを作成します。
1. 次のように、状況更新を行う新規メソッドを作成します。
private void updateStatus() {
}
2. まず、ユーザに状況更新を要求します。
Console.Write("\n\nどんな作業をしていますか?\n");
string newStatus = Console.ReadLine();
3. sObject を作成して、正しい ID と種別を指定します。
sObject user = new sObject();
user.Id = binding.getUserInfo().userId;
user.type = "User";
Chatter ワークブック | チュートリアル 4: NET クライアントからの Chatter アクセス | 24
4. 次に XML 要素を作成し、CurrentStatus 値を保存します。
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
System.Xml.XmlElement statusElement = doc.CreateElement("CurrentStatus");
statusElement.InnerText = newStatus;
5. 次に、その要素を user オブジェクトに追加します。
user.Any = new System.Xml.XmlElement[] { statusElement };
6. ここで、Force.com からレコードを更新します。
SaveResult[] results = binding.update(new sObject[] { user });
7. 最後に、結果をコンソールに送ります。
for (int j = 0; j < results.Length; j++) {
if (results[j].success)
Console.WriteLine("状況が更新されました。\n");
else
Console.WriteLine("更新中にエラーが起こりました: " + results[j].errors[0].message +
"\n");
}
8. Main() メソッドで、ログインに成功した後に、updateStatus() の呼び出しを追加します。
9. プログラムを改めて実行すると、コンソールに出力があります。
10. Force.com 環境にログインして、Salesforce Chatter アプリケーションの [プロファイル] タブに移動すると、状
況を確認できます。
もうひとこと...
sObject の Any 項目は、そのオブジェクトに属する項目に関する情報を持つ XmlElements の配列です。XmlElement
を作成するとき、項目名を指定し、値を定義します。使用する WSC ライブラリがこの下位レベルの操作の多く
の部分を隠しているため、チュートリアル 3 で作成した Java コードでは、同じことを少し異なるやり方で行って
います。
Chatter ワークブック | チュートリアル 4: NET クライアントからの Chatter アクセス | 25
ステップ 5: 状況更新の検索
このステップでは、NewsFeed を検索し、結果を表示します。
1. 検索用にもう 1 つメソッドを作成します。このメソッドに対する呼び出しは、Main() のログインが成功した
ときのコードブロックで行ってください。
private void queryForUpdates()
2. まず、クエリを作成し、SforceService を使用して結果を取得します。
QueryResult qr = binding.query
("SELECT Id, Type, CreatedDate, CreatedBy.name, FeedPost.body
FROM NewsFeed WHERE Type='UserStatus'
ORDER BY CreatedDate DESC, ID DESC LIMIT 5");
3. ここで、結果を繰り返しコンソールに出力します。
if (qr.size > 0){
Console.WriteLine("\n状況の更新を照会中:");
for (int index = 0; index < qr.records.Length; index++){
Console.WriteLine("Id: " + qr.records[index].Id + " - " +
qr.records[index].Any[4].InnerText);
}
}
4. これで、ビルドと実行の準備ができました。F5 キーを押して、実行してください。コンソールウィンドウに
は、最新の状況更新が 5 件表示されます。
もうひとこと...
•
•
コードでは、NewsFeed オブジェクトに対する検索を実行します。これはチュートリアル 2: プラットフォー
ムでの開発 (ページ 9)で使用したクエリと同じものです。クエリの実行後、クエリの結果を使用して
QueryResult オブジェクトのインスタンスが作成されます。何らかの結果がある場合、コードは返されたレ
コードに対し繰り返し実行され、フィード投稿の本文を表示します。
Partner WSDL を使用しているため、返されるレコードはすべて汎用型の SObject です。そのため、含まれて
いる項目は、SObject の Any 項目から返される配列に蓄積されます。そのため、FeedPost.body 用のテキス
ト文字列を取得するために、どの配列要素を参照するかを知るには、最初に作成したクエリを見る必要があ
ります。この場合、配列インデックス (インデックスは 0 から開始) の 4 番目にある XmlElement の innerText、
つまり Any[4].InnerText ということになります。
Chatter ワークブック | チュートリアル 4: NET クライアントからの Chatter アクセス | 26
まとめ
このチュートリアルでは、Force.com 環境と連携する .NET アプリケーションを作成しました。作成したアプリ
ケーションは、Force.com プラットフォームでの認証、レコード (ユーザ状況を持っている User レコード) の更
新、クエリの実行を行います。接続オブジェクト上のほかのメソッドを探索して、ほかにどのようなアクション
を実行できるかを明らかにしたり、『Chatter 早見表』を参照して、Chatter データモデルに対して実行するその
他のクエリを探したりできます。
Fly UP