Show Menu
トピック×

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

Java API

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

SocialComponent インターフェイス

SocialComponent は、AEM Communities 機能のリソースを表す POJO です。各SocialComponentは、クライアントにデータを提供するGETterを公開した特定のresourceTypeを表すので、リソースを正確に表すことが理想的です。 必要に応じて、すべてのビジネスロジックとビューロジックがSocialコンポーネントにカプセル化されます。この中には、サイト訪問者のセッション情報も含まれます。
このインターフェイスは、リソースを表すために必要な GETter の基本セットを定義します。重要なことは、インターフェイスは、Handlebars テンプレートをレンダリングしリソースの GET JSON エンドポイントを公開するために必要な、Map<String, Object> getAsMap() および String toJSONString() メソッドを規定するということです。
All SocialComponent classes must implement the interface com.adobe.cq.social.scf.SocialComponent

SocialCollectionComponent インターフェイス

SocialCollectionComponent インターフェイスは、他のリソースのコレクションであるリソースをより適切に表すように SocialComponent インターフェイスを拡張します。
すべてのSocialCollectionComponentクラスで、com.adobe.cq.soscial.scf.SocialCollectionComponentインターフェイスを実装する必要があります

SocialComponentFactory インターフェイス

SocialComponentFactory(ファクトリ)は、SocialComponent をフレームワークに登録します。ファクトリは、特定のresourceTypeに対して使用できるSocialComponentsが何か、およびその優先順位ranking&ast;をフレームワークに知らせる手段を提供します。複数の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 クラス

Each SocialOperation endpoint extends the AbstractSocialOperation class and overrides the method performOperation(). This method performs all actions needed to complete the operation and return a SocialOperationResult or else throw an OperationException , in which case an HTTP error status with a message, if available, is returned in place of the normal JSON response or success HTTP status code.
Extending AbstractSocialOperation makes possible the reuse of SocialComponents to send JSON responses.

SocialOperationResult クラス

SocialOperationResult クラスは、 SocialOperation の結果として返され、 SocialComponent 、HTTP ステータスコードおよび HTTP ステータスメッセージで構成されます。
SocialComponent は、操作の影響を受けたリソースを表します。
作成操作の場合、 SocialComponent に含まれる SocialOperationResult は作成されたリソースを表し、更新操作の場合、操作によって変更されたリソースを表します。削除操作の場合は SocialComponent は返されません。
使用される成功 HTTP ステータスコードは、以下のとおりです。
  • 作成操作の場合は 201
  • 更新操作の場合は 200
  • 削除操作の場合は 204

OperationException クラス

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

OperationService クラス

The social component framework recommends that the business logic responsible for performing the operation not be implemented within the SocialOperation class, but instead delegated to an OSGi service. ビジネスロジックの OSGi サービスを使用すると、 SocialComponent SocialOperation エンドポイントの影響を受ける)を他のコードと統合でき、異なるビジネスロジックを適用できます。
すべての OperationService クラスは AbstractOperationService を拡張し、実行される操作に関連付けることができる追加拡張を可能にします。サービス内の各操作は SocialOperation クラスによって表されます。 OperationExtensions クラスは、操作の実行中に以下のメソッドを呼び出すことによって呼び出すことができます。
  • performBeforeActions() 事前確認/前処理と検証を可能にする
  • performAfterActions() リソースをさらに変更したり、カスタムイベントやワークフローを呼び出したりできます。

OperationExtension クラス

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

サンプルコード

サンプルコードを Adobe Marketing Cloud GitHub リポジトリで入手できます。Search for projects prefixed with either aem-communities or aem-scf .

ベストプラクティス

AEM Communities 開発者向けの様々なコーディングガイドラインおよびベストプラクティスについては、 コーディングのガイドライン の節を参照してください。
See also Storage Resource Provider (SRP) for UGC to learn about accessing user generated content.