サーバー側のカスタマイズ server-side-customization

Java™ API java-apis

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

SocialComponent インターフェイス socialcomponent-interface

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

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

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

SocialCollectionComponent インターフェイス socialcollectioncomponent-interface

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

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

SocialComponentFactory インターフェイス socialcomponentfactory-interface

SocialComponentFactory (ファクトリ)は、SocialComponent をフレームワークに登録します。 ファクトリは、複数のソーシャルコンポーネントが識別された場合に、特定の resourceType に使用できるソーシャルコンポーネントとその優先度ランキングをフレームワークに知らせる手段を提供します。

SocialComponentFactory は、選択した SocialComponent のインスタンスを作成し、DI プラクティスを使用して SocialComponent で必要なすべての依存関係を工場から挿入できるようにする役割を担います。

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

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

SocialComponentFactory.getPriority () メソッドの実装は、getResourceType ()によって返された特定の resourceType に使用されるファクトリの最大値を返す必要があります。

SocialComponentFactoryManager インターフェイス socialcomponentfactorymanager-interface

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

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

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

HTTP API -POSTリクエスト http-api-post-requests

PostOperation クラス postoperation-class

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

PostOperation エンドポイント実装は、操作が応答する値に sling.post.operation を設定します。 :operation パラメーターが値に設定されたすべてのPOSTリクエストは、この実装クラスにデリゲートされます。

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

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

SocialOperation クラス socialoperation-class

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

AbstractSocialOperation を拡張すると、SocialComponents を再利用して JSON 応答を送信できます。

SocialOperationResult クラス socialoperationresult-class

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

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

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

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

  • 作成操作用の 201
  • 更新操作用の 200
  • 削除操作用の 204

OperationException クラス operationexception-class

リクエストが有効でない場合や他のエラーが発生した場合、操作を実行すると OperationExcepton がスローされます。 例えば、内部エラー、パラメーター値が正しくない、権限が正しくないなど。 OperationException は、HTTP ステータスコードとエラーメッセージで構成され、PostOperatoin に対する応答としてクライアントに返されます。

OperationService クラス operationservice-class

ソーシャルコンポーネントフレームワークでは、操作を実行する責任があるビジネスロジックを SocialOperation クラス内に実装するのではなく、OSGi サービスに委任することをお勧めします。 ビジネスロジックに OSGi サービスを使用すると、SocialOperation エンドポイントによって動作する SocialComponent ールを他のコードと統合し、異なるビジネスロジックを適用できます。

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

  • performBeforeActions()

    チェック/前処理および検証が可能

  • performAfterActions()

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

OperationExtension クラス operationextension-class

OperationExtension クラスは、操作に挿入できるカスタムコードの一部で、ビジネスニーズに合わせて操作をカスタマイズできます。 コンポーネントのコンシューマーは、コンポーネントに機能を動的かつ増分的に追加できます。 拡張機能/フックパターンを使用すると、開発者は拡張機能自体に専念でき、操作やコンポーネント全体をコピーして上書きする必要がなくなります。

サンプルコード sample-code

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

ベストプラクティス best-practices

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

ユーザー生成コンテンツへのアクセスについては、UGC 用ストレージリソースプロバイダー(SRP)も参照してください。

recommendation-more-help
81e2cd9d-0789-409d-b87c-2a8ce4f28791