SRP と UGC の基本事項

はじめに

ストレージリソースプロバイダー(SRP)および SRP とユーザー生成コンテンツ(UGC)との関係について詳しくは、コミュニティコンテンツストレージおよびストレージリソースプロバイダーの概要を参照してください。

ドキュメントのこの節では、SRP および UGC に関する基本情報について説明します。

StorageResourceProvider API

SocialResourceProvider API(SRP API)は、様々な Sling リソースプロバイダー API の拡張です。ページネーションとアトミックインクリメントのサポートが含まれます(集計とスコアリングに役立ちます)。

日付、有用性、投票数などによる並べ替えが必要なので、SCF コンポーネントにはクエリが必要です。すべてのSRPオプションには、グループ化に依存しない柔軟なクエリメカニズムがあります。

SRP 格納場所には、コンポーネントのパスが組み込まれます。ルートパスはASRP、MSRP、JSRPなど、選択したSRPオプションに依存するので、SRP APIを常にUGCにアクセスするために使用する必要があります。

SRP API は、抽象クラスではなくインターフェイスです。新しいリリースにアップグレードする際に、内部実装の将来の改善のメリットが失われるので、カスタム実装は軽くおこなわないでください。

SRP API を使用するための手段は、提供されるユーティリティ(SocialResourceUtilities パッケージで見つかるものなど)です。

AEM 6.0 以前からアップグレードする場合、すべての SRP の UGC の移行が必要になります。そのために、オープンソースのツールを使用できます。AEM Communities 6.3へのアップグレードを参照してください。

メモ

以前は、UGC にアクセスするためのユーティリティは SocialUtils パッケージ内にありましたが、このパッケージはなくなりました。

代わりのユーティリティについては、SocialUtils リファクタリングを参照してください。

UGC にアクセスするためのユーティリティメソッド

UGC にアクセスするには、SRP から UGC へのアクセスに適したパスを返し、SocialUtils にあった廃止されたメソッドに替わる、SocialResourceUtilities パッケージのメソッドを使用します。

以下に、サーブレットでの resourceToUGCStoragePath() メソッドの使用の最小限の例を示します。

import com.adobe.cq.social.srp.utilities.api.SocialResourceUtilities;

@Reference
private SocialResourceUtilities socialResourceUtilities;

@Override
protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
  String ugcPath = socialResourceUtilities.resourceToUGCStoragePath(request.getResource());
  // rest of servlet
}

その他の SocialUtils の代替については、SocialUtils のリファクタリングを参照してください。

コーディングのガイドラインについては、SRP による UGC へのアクセスを参照してください。

注意

resourceToUGCStoragePath()が返すパスは、ACLチェックには適していません。

Utility Method to Access ACLs

一部の SRP 実装(ASRP や MSRP など)では、コミュニティコンテンツは ACL 検証が提供されないデータベースに格納されます。シャドウノードは、ACLを適用できるローカルリポジトリ内の場所を提供します。

SRP API を使用すると、すべての SRP オプションによって、すべての CRUD 操作の前にシャドウの場所の同じチェックが実行されます。

ACL をチェックするには、リソースの UGC に適用される権限のチェックに適したパスを返すメソッドを使用します。

以下に、サーブレットでの resourceToACLPath() メソッドの使用の単純な例を示します。

import com.adobe.cq.social.srp.utilities.api.SocialResourceUtilities;

@Reference
private SocialResourceUtilities socialResourceUtilities;

@Override
protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
  String aclPath = socialResourceUtilities.resourceToACLPath(request.getResource());
  // rest of servlet
}
注意

resourceToACLPath()から返されるパスは、UGC自体にアクセスするのには適していません。

格納場所に関する以下の説明は、JSRP または MSRP を使用した開発時に役立つ場合があります。現在、JSRP(CRXDE Lite)とMSRP(MongoDBツール)用なので、ASRPに格納されたUGCにアクセスするUIはありません。

コンポーネントの場所

メンバーがパブリッシュ環境で UGC を入力する場合、AEM サイトの一部としてのコンポーネントとやり取りしています。

このようなコンポーネントの例として、コミュニティコンポーネントガイドサイトに存在するコメントコンポーネントが挙げられます。 ローカルリポジトリ内のコメントノードへのパスは次のとおりです。

  • コンポーネントのパス= /content/community-components/en/comments/jcr:content/content/includable/comments

シャドウノードの場所

UGC の作成によって、必要な ACL が適用されるシャドウノードも作成されます。ローカルリポジトリ内の対応するシャドウノードへのパスは、シャドウノードのルートパスをコンポーネントのパスに先頭に配置した結果です。

  • ルートパス= /content/usergenerated
  • コメントシャドウノード= /content/usergenerated/content/community-components/en/comments/jcr:content/content/includable/comments

UGC の場所

UGC はこれらの場所のどちらにも作成されず、SRP API を呼び出すユーティリティメソッドの使用によってのみアクセスする必要があります。

  • ルートパス= /content/usergenerated/asi/srp-choice
  • JSRPのUGCノード= /content/usergenerated/asi/jcr/content/community-components/en/comments/jcr:content/content/includable/comments/srzd-let_it_be_

JSRP の場合、UGC ノードはそれが入力された AEM インスタンス(オーサーまたはパブリッシュ)上にのみ存在することに注意してください。​パブリッシュインスタンスで入力した場合、オーサーのモデレートコンソールからモデレートはできません。

このページ