現在表示中:

概要

メンバーがコミュニティ機能と対話する際には、通知やゲーミフィケーション(スコアおよびバッジ)のような非同期リスナーを呼び出す OSGi イベントが送信されます。

コンポーネントの SocialEvent インスタンスでは、トピックに対して発生するアクションがイベントとして記録されます。SocialEvent には、アクションに関連付けられている動詞を返すメソッドが用意されています。アクション動詞には、n-1 の関係があります。

次の各表では、このリリースに用意されているコミュニティコンポーネントで使用可能なトピックごとに、それぞれ定義されている動詞の説明を示します。

トピックと動詞

カレンダーコンポーネント
SocialEvent topic = com/adobe/cq/social/calendar

動詞 説明
POST メンバーがカレンダーイベントを作成
ADD メンバーがカレンダーイベントに関するコメントを追加
UPDATE メンバーのカレンダーイベントまたはコメントを編集
DELETE メンバーのカレンダーイベントまたはコメントを削除

 

コメントコンポーネント
SocialEvent topic = com/adobe/cq/social/comment

動詞 説明
POST メンバーがコメントを作成
ADD メンバーがコメントに返答
UPDATE メンバーのコメントを編集
DELETE メンバーのコメントを削除

 

ファイルライブラリコンポーネント
SocialEvent topic = com/adobe/cq/social/fileLibrary

動詞 説明
POST メンバーがフォルダーを作成
ATTACH メンバーがファイルをアップロード
UPDATE メンバーがフォルダーまたはファイルを更新
DELETE メンバーがフォルダーまたはファイルを削除

 

フォーラムコンポーネント
SocialEvent topic = com/adobe/cq/social/forum

動詞 説明
POST メンバーがフォーラムトピックを作成
ADD メンバーがフォーラムトピックに返答
UPDATE メンバーのフォーラムトピックまたは返答を編集
DELETE メンバーのフォーラムトピックまたは返答を削除

 

ジャーナルコンポーネント
SocialEvent topic = com/adobe/cq/social/journal

動詞 説明
POST メンバーがブログ記事を作成
ADD メンバーがブログ記事に関するコメントを追加
UPDATE メンバーのブログ記事またはコメントを編集
DELETE メンバーのブログ記事またはコメントを削除

 

Q&A コンポーネント
SocialEvent topic = com/adobe/cq/social/qna

動詞 説明
POST メンバーが Q&A 質問を作成
ADD メンバーが Q&A 回答を作成
UPDATE メンバーの Q&A 質問または回答を編集
SELECT メンバーの回答を選択
UNSELECT メンバーの回答の選択を解除
DELETE メンバーの Q&A 質問または回答を削除

 

レビューコンポーネント
SocialEvent topic = com/adobe/cq/social/review

動詞 説明
POST メンバーがレビューを作成
UPDATE メンバーのレビューを編集
DELETE メンバーのレビューを削除

 

評価コンポーネント
SocialEvent topic = com/adobe/cq/social/tally

動詞 説明
ADD RATING メンバーのコンテンツを上方評価
REMOVE RATING メンバーのコンテンツを下方評価

 

投票コンポーネント
SocialEvent topic = com/adobe/cq/social/tally

動詞 説明
ADD VOTING メンバーのコンテンツをアップ投票
REMOVE VOTING メンバーのコンテンツをダウン投票

 

モデレート対応コンポーネント
SocialEvent topic = com/adobe/cq/social/moderation

動詞 説明
DENY メンバーのコンテンツを拒否
FLAG-AS-INAPPROPRIATE メンバーのコンテンツにフラグを設定
UNFLAG-AS-INAPPROPRIATE メンバーのコンテンツのフラグを解除
ACCEPT モデレーターがメンバーのコンテンツを承認
CLOSE メンバーが編集および返答に対するコメントをクローズ
OPEN メンバーがコメントを再オープン

カスタムコンポーネントのイベント

カスタムコンポーネントの場合、SocialEvent 抽象クラスを拡張して、コンポーネントのイベントがトピックに対して発生するアクションとして記録されるようにする必要があります。

カスタムイベントは、各アクションに対して適切な動詞が返されるように、メソッド getVerb() をオーバーライドします。アクションに対して返される動詞の中には、共通して使用されるもの(POST など)もあれば、コンポーネント専用のもの(ADD RATING など)もあります。アクション動詞には、n-1 の関係があります。

カスタムコンポーネントイベントの疑似コード

package com.mycompany.recipe;

import org.osgi.service.event.Event;
import com.adobe.cq.social.scf.core.SocialEvent;
import com.adobe.granite.activitystreams.ObjectTypes;
import com.adobe.granite.activitystreams.Verbs;

/* 
 * The Recipe type, passed to RecipeEvent(), would be a custom Recipe class 
 * that extends either 
 *    com.adobe.cq.social.scf.SocialComponent 
 * or
 *    com.adobe.cq.social.scf.SocialCollectionComponent
 * See https://docs.adobe.com/docs/en/aem/6-2/develop/communities/scf/server-customize.html
 */

/**
 * Defines events that are triggered on a custom component, "Recipe".
 */
public class RecipeEvent extends SocialEvent<RecipeEvent.RecipeActions> {

    private static final long serialVersionUID = 1L;
    protected static final String PARENT_PATH = "PARENT_PATH";

    /**
     * The event topic suffix for Recipe events
     */
    public static final String RECIPE_TOPIC = "recipe";

    /**
     * @param recipe - the recipe resource on which the event was triggered
     * @param userId - the user id of the user who triggered the action
     * @param action - the recipe action that triggered this event
     */
    public RecipeEvent(final Recipe recipe, final String userId, final RecipeEvent.RecipeActions action) {
        String recipePath = recipe.getResource().getPath();
        String parentPath = (recipe.getParentComponent() != null) ? 
                             recipe.getParentComponent().getResource().getPath() : 
                             recipe.getSourceComponentId();
        this(recipePath, userId, parentPath, action);
    }

    /**
     * @param recipePath - the path to the recipe resource (jcr node) on which the event was triggered
     * @param userId - the user id of the user who triggered the action
     * @param parentPath - the path to the parent node of the recipe resource
     * @param action - the recipe action that triggered this event
     */
    public RecipeEvent(final String recipePath, final String userId, final String parentPath) {
        super(RECIPE_TOPIC, recipePath, userId, action, 
              new BaseEventObject(recipePath, ObjectTypes.ARTICLE), 
              new BaseEventObject(parentPath, ObjectTypes.COLLECTION),
              new HashMap<String, Object>(1) {
            private static final long serialVersionUID = 1L;
            {
                if (parentPath != null) {
                    this.put(PARENT_PATH, parentPath);
                }

            }
        });
    }

    private RecipeEvent (final Event event) {
      super(event);
    }

    /**
     * List of available recipe actions that can trigger a recipe event.
     */
    public static enum RecipeActions implements SocialEvent.SocialActions {
        RecipeAdded, 
        RecipeModified, 
        RecipeDeleted;


        @Override
        public String getVerb() {
            switch (this) {
                case RecipeAdded:
                    return Verbs.POST;
                case RecipeModified:
                    return Verbs.UPDATE;
                case RecipeDeleted:
                    return Verbs.DELETE;
                default:
                    throw new IllegalArgumentException("Unsupported action");
            }
        }
    }

}

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー