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

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

Java API

メモ

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

SocialComponent インターフェイス

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

このインターフェイスは、リソースを表すために必要な 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 をフレームワークに登録します。ファクトリは、複数のSocialComponentsが識別された場合に、特定の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 クラス

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

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 サービスを使用すると、SocialComponentSocialOperation エンドポイントの影響を受ける)を他のコードと統合でき、異なるビジネスロジックを適用できます。

すべての 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.

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

このページ