この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

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 必須チェックボックスをオフにできない場合は、パッケージ内に Chatter に対する特別な要件があるコンポーネントが含まれています。これは、たとえば、Chatter に依存するカスタムレポートタイプをパッケージ化した場合に発生します。Chatter 必須チェックボックスをオフにできない場合、パッケージは Chatter を有効にしている組織のみにインストールできます。

    メモ

次の例では、フィードへの投稿とユーザのフィードの取得を試みます。組織で 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   }