ストレージリソースプロバイダー(SRP)および SRP とユーザー生成コンテンツ(UGC)との関係について詳しくは、コミュニティコンテンツストレージおよびストレージリソースプロバイダーの概要を参照してください。
ドキュメントのこの節では、SRP および UGC に関する基本情報について説明します。
SocialResourceProvider API(SRP API)は、様々な Sling リソースプロバイダー API の拡張です。ページネーションとアトミックな増分のサポートが含まれます(集計とスコアリングに役立ちます)。
日付、有用性、投票数などによる並べ替えが必要なので、SCF コンポーネントにはクエリが必要です。すべての SRP オプションには、バケット化に依存しない柔軟なクエリメカニズムがあります。
SRP 格納場所には、コンポーネントのパスが組み込まれます。SRP API は常に UGC にアクセスするために使用する必要があります。ルートパスは、ASRP、MSRP、JSRP など、選択した SRP オプションに応じて異なるからです。
SRP API は、抽象クラスではなくインターフェイスです。新しいリリースにアップグレードする際に、内部実装に対する今後の改善のメリットが失われるので、カスタム実装を軽くおこなわないでください。
SRP API を使用するための手段は、提供されるユーティリティ(SocialResourceUtilities パッケージで見つかるものなど)です。
AEM 6.0 以前からアップグレードする場合、すべての SRP の UGC の移行が必要になります。そのために、オープンソースのツールを使用できます。詳しくは、 AEM Communities 6.3 へのアップグレード.
以前は、UGC にアクセスするためのユーティリティは SocialUtils パッケージ内にありましたが、このパッケージはなくなりました。
代わりのユーティリティについては、SocialUtils リファクタリングを参照してください。
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 チェック.
一部の 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 ツール)
コンポーネントの場所
メンバーがパブリッシュ環境で UGC を入力する場合、AEM サイトの一部としてのコンポーネントとやり取りしています。
このようなコンポーネントの例として、 コメントコンポーネント が コミュニティコンポーネントガイド サイト。 ローカルリポジトリ内のコメントノードへのパスは次のとおりです。
シャドウノードの場所
UGC の作成によって、必要な ACL が適用されるシャドウノードも作成されます。ローカルリポジトリ内の対応するシャドウノードへのパスは、シャドウノードのルートパスの前にコンポーネントパスを指定した結果です。
UGC の場所
UGC はこれらの場所のどちらにも作成されず、SRP API を呼び出すユーティリティメソッドの使用によってのみアクセスする必要があります。
JSRP の場合、UGC ノードはそれが入力された AEM インスタンス(オーサーまたはパブリッシュ)上にのみ存在することに注意してください。パブリッシュインスタンスで入力した場合、作成者のモデレートコンソールからモデレートを実行することはできません。