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 Communities6.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/includable/comments/srzd-let_it_be_

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

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now