No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Chatter を使用するパッケージアプリケーションの作成
Chatter のオブジェクト、項目設定、項目設定履歴は、パッケージ化が可能です。ただし、オブジェクト自体が追跡される場合は、オブジェクトの項目のみが追跡されます。たとえば、標準の取引先オブジェクトに新しいカスタム項目を作成できますが、取引先のフィード追跡を有効にしている場合にのみ項目が追跡されます。
Chatter を使用するアプリケーションを開発するときには、一部の組織では Chatter が有効にされていない場合があるということに注意してください。デフォルトでは、Chatter アプリケ���ションをアップロードすると、パッケージは Chatter を有効にしている組織のみが利用できます。組織に Chatter がない場合でもパッケージをインストールできるように、この動作を変更することができます。次の点に注意してください。
- 管理パッケージを使用する必要があります。Chatter 機能を含む未管理パッケージは、Chatter を有効にしている組織のみにインストールできます。
- 登録者組織が Chatter を有効にしていない場合、DML 操作、SOSL および SOQL コールでは実行時例外が発生します。Chatter 機能がないために発生する Apex の例外があれば、それを捕捉して処理する必要があります。これらの例外の種別は、SOSL コールおよび SOQL コールの場合は REQUIRED_FEATURE_MISSING_EXCEPTION です。DML コールの場合は、DML 例外の特定の REQUIRED_FEATURE_MISSING 状況コードを確認する必要があります。
- パッケージをアップロードするときに、Chatter 必須チェックボックスをオフにします (このチェックボックスは Chatter への Apex 参照がある場合は自動的にオンにされます)。
次の例では、フィードへの投稿とユーザのフィードの取得を試みます。組織で Chatter が有効になっていない場合、このコードは REQUIRED_FEATURE_MISSING 例外を捕捉します。このコード例は不完全なものなので、機能しません。
1public void addFeedItem(String post, Id objId) {
2 FeedItem fpost = new FeedItem();
3 // Get the parent ID of the feed
4 fpost.ParentId = objId;
5 fpost.Body = post;
6 try{
7 insert fpost;
8 } catch (System.DmlException e) {
9 for (Integer i = 0; i < e.getNumDml(); i++) {
10 // Chatter not endabled, do not insert record
11 System.assertEquals(StatusCode.REQUIRED_FEATURE_MISSING, e.getDmlType(i));
12 System.Debug('Chatter not enabled in this organization:' + e.getDMLMessage());
13 }
14 }
15}
16
17 public List<NewsFeed> getMyFeed() {
18 List<NewsFeed> myfeed;
19 try{
20 myfeed = [SELECT Id, Type, CreatedById, CreatedBy.FirstName,CreatedBy.LastName,
21 CreatedDate, ParentId, Parent.Name,FeedItemId, Body,
22 Title, CreatedById, LinkUrl,
23 (SELECT Id, FieldName, OldValue, NewValue
24 FROM FeedTrackedChanges ORDER BY Id DESC),
25 (SELECT Id, CommentBody, CreatedDate, CreatedById,
26 CreatedBy.FirstName, CreatedBy.LastName
27 FROM FeedComments ORDER BY CreatedDate DESC, ID DESC LIMIT 10)
28 FROM NewsFeed
29 ORDER BY CreatedDate DESC, ID DESC LIMIT 20];
30 } catch(System.RequiredFeatureMissingException e){
31 // The above has returned an empty NewsFeed
32 // Chatter is not enabled in this organization
33 myfeed = new List<NewsFeed>{};
34 System.Debug('Chatter not enabled in organization:' + e.getMessage());
35 }
36 return myfeed;
37 }