サーバー側のカスタマイズ

⇐ 機能の基本事項 クライアント側のカスタマイズ ⇒
SCF Handlebars ヘルパー ⇒

Java API

メモ

Communities API のパッケージの場所は、次のメジャーリリースにアップグレードされる際に変更されることがあります。

SocialComponent インターフェイス

SocialComponent は、AEM Communities 機能のリソースを表す POJO です。各 SocialComponent は、リソースが正確に表されるように、クライアントにデータを提供する公開された GETters を持つ特定の resourceType を表すのが理想的です。 必要に応じて、すべてのビジネスロジックとビューロジックは SocialComponent にカプセル化されます。サイト訪問者のセッション情報も含まれます。

このインターフェイスは、リソースを表すために必要な GETter の基本セットを定義します。重要なことは、インターフェイスは、Handlebars テンプレートをレンダリングしリソースの GET JSON エンドポイントを公開するために必要な、Map<String, Object> getAsMap() および String toJSONString() メソッドを規定するということです。

すべての SocialComponent クラスがインターフェイスを実装する必要があります com.adobe.cq.social.scf.SocialComponent

SocialCollectionComponent インターフェイス

SocialCollectionComponent インターフェイスは、他のリソースのコレクションであるリソースをより適切に表すように SocialComponent インターフェイスを拡張します。

すべての SocialCollectionComponent クラスは、インターフェイスcom.adobe.cq.social.scf.SocialCollectionComponent を実装する必要があります

SocialComponentFactory インターフェイス

SocialComponentFactory(ファクトリ)は、SocialComponent をフレームワークに登録します。ファクトリは、複数の SocialComponent が識別された場合に、特定の resourceType に対して使用可能な SocialComponents と、その優先順位をフレームワークに知らせる手段を提供します。

SocialComponentFactory は、選択された SocialComponent のインスタンスを作成し、SocialComponent に必要なすべての依存関係をファクトリから DI パッケージを使用して挿入できるようにします。

SocialComponentFactory は OSGi サービスであり、コンストラクター経由で SocialComponent に渡すことができる他の OSGi サービスにアクセスできます。

すべての SocialComponentFactory クラスは、インターフェイス com.adobe.cq.social.scf.SocialComponentFactory を実装する必要があります。

SocialComponentFactory.getPriority() メソッドの実装では、getResourceType() が返す、指定された resourceType に対してファクトリが使用されるように、最も高い値を返す必要があります。

SocialComponentFactoryManager インターフェイス

SocialComponentFactoryManager(マネージャー)は、フレームワークに登録されたすべての SocialComponent を管理し、特定のリソース(resourceType)に対して使用される SocialComponentFactory を選択します。特定の resourceType にファクトリが登録されていない場合、マネージャは指定されたリソースに最も近いスーパータイプを持つファクトリを返します。

SocialComponentFactoryManager は OSGi サービスであり、コンストラクター経由で SocialComponent に渡すことができる他の OSGi サービスにアクセスできます。

OSGi サービスへのハンドルは、com.adobe.cq.social.scf.SocialComponentFactoryManager を呼び出すことによって取得されます。

HTTP API - POST 要求

PostOperation クラス

HTTP API POST エンドポイントは、SlingPostOperation インターフェイス(パッケージorg.apache.sling.servlets.post )を実装することによって定義される PostOperation クラスです。

PostOperation エンドポイント実装は、sling.post.operation を操作の応答先の値に設定します。その値に設定された :operation パラメーターを持つすべての POST 要求は、この実装クラスに委任されます。

PostOperation は、操作に必要なアクションを実行する SocialOperation を呼び出します。

PostOperation は、結果を SocialOperation から受け取り、適切な応答をクライアントに返します。

SocialOperation クラス

SocialOperation endpoint は AbstractSocialOperation クラスを拡張し、メソッドをオーバーライドします。 performOperation(). このメソッドは、操作の完了に必要なすべてのアクションを実行し、SocialOperationResult を返すか、または OperationException をスローします。後者の場合は、HTTP エラーステータスとメッセージ(使用可能な場合)が、通常の JSON 応答または成功 HTTP ステータスコードの代わりに返されます。

拡張ガイド AbstractSocialOperation ~の再利用を可能にする SocialComponents をクリックして JSON 応答を送信します。

SocialOperationResult クラス

SocialOperationResult クラスは、SocialOperation の結果として返され、SocialComponent、HTTP ステータスコードおよび HTTP ステータスメッセージで構成されます。

SocialComponent は、操作の影響を受けたリソースを表します。

作成操作の場合、SocialComponent に含まれる SocialOperationResult は作成されたリソースを表し、更新操作の場合、操作によって変更されたリソースを表します。削除操作の場合は SocialComponent は返されません。

使用される成功 HTTP ステータスコードは次のとおりです。

  • 作成操作の場合は 201
  • 更新操作の場合は 200
  • 削除操作の場合は 204

OperationException クラス

OperationExcepton は、操作の実行時に、要求が無効であるかその他のエラーが発生した場合に(内部エラー、不正なパラメーター値、不適切な権限など)スローされることがあります。OperationException は、HTTP ステータスコードおよびエラーメッセージで構成され、これらは PostOperatoin に対する応答としてクライアントに返されます。

OperationService クラス

ソーシャルコンポーネントフレームワークでは、操作を実行するビジネスロジックを SocialOperation クラスに委任する代わりに、OSGi サービスに委任することもできます。 ビジネスロジックの OSGi サービスを使用すると、SocialComponentSocialOperation エンドポイントの影響を受ける)を他のコードと統合でき、異なるビジネスロジックを適用できます。

すべての OperationService クラスは AbstractOperationService を拡張し、実行される操作に関連付けることができる追加拡張を可能にします。サービス内の各操作は SocialOperation クラスによって表されます。OperationExtensions クラスは、操作の実行中に以下のメソッドを呼び出すことによって呼び出すことができます。

  • performBeforeActions()

    事前チェック/前処理および検証を許可

  • performAfterActions()

    リソースをさらに変更したり、カスタムイベントやワークフローなどを呼び出したりできます

OperationExtension クラス

OperationExtension クラスは、操作に挿入できるコードのカスタム部分であり、ビジネスニーズに合うように操作をカスタマイズできます。コンポーネントのユーザーは、動的および増分的にコンポーネントに機能を追加できます。拡張/フックパターンにより、開発者は拡張自体に集中でき、操作およびコンポーネント全体をコピーして上書きする必要はなくなります。

サンプルコード

サンプルコードを Adobe Marketing Cloud GitHub リポジトリで入手できます。次のいずれかのプレフィックスが付いたプロジェクトを検索します。 aem-communities または aem-scf.

ベストプラクティス

AEM Communities 開発者向けの様々なコーディングガイドラインおよびベストプラクティスについては、コーディングのガイドラインの節を参照してください。

関連トピック UGC 用ストレージリソースプロバイダー (SRP) ユーザー生成コンテンツへのアクセスについて説明します。

⇐ 機能の基本事項 クライアント側のカスタマイズ ⇒
SCF Handlebars ヘルパー ⇒

このページ