カスタマイズフレームワーク機能は、アップグレードしづらいコード(APIS など)またはコンテンツ(オーバーレイなど)などの拡張できない領域での違反が減少するように設計されています。
カスタマイズフレームワークには、API サーフェスとコンテンツ分類の 2 つのコンポーネントがあります。
AEM の以前のリリースでは、多くの API が Uber Jar を介して公開されていました。これらの API の一部は、お客様による使用を意図して公開されたものではなく、複数のバンドルにまたがって AEM 機能をサポートするために公開されたものです。今後は、アップグレードの観点からどの API が安全に使用できるかをお客様に示すために、Java API は、公開または非公開としてマークされます。その他の詳細を次に示します。
としてマークされた Java API Public
は、カスタム実装バンドルで使用および参照できます。
公開 API は、互換パッケージのインストールによる後方互換性があります。
互換パッケージには、後方互換性を確保するために互換 Uber JAR が含まれます。
としてマークされた Java API Private
は、AEMの内部バンドルでのみ使用されることを目的としており、カスタムバンドルでは使用できません。
このコンテキストでのPrivate
非公開およびPublic
公開の概念を、Java の クラスおよび クラスの概念と混同しないようにしてください。
AEM では、以前からオーバーレイの原理と Sling Resource Merger を使用して、ユーザーが AEM の機能の拡張およびカスタマイズをおこなうことができるようになっています。AEM コンソールと UI を強化する事前定義済みの機能は、/libs に格納されます。ユーザーは /libs の下は何も変更できませんが、/apps の下にコンテンツを追加して、/libs 内で定義されている機能をオーバーレイおよび拡張できます(詳しくは、「オーバーレイを使用した開発」を参照)。この場合も、AEM のアップグレード時に多数の問題が発生します。/libs 内のコンテンツが変更され、オーバーレイ機能が予期しない動作で破損することがあるからです。ユーザーは、sling:resourceSuperType
を介した継承によって、または sling:resourceType を使用して /libs 内のコンポーネントを直接参照することによって、AEM コンポーネントを拡張することもできます。同様のアップグレードの問題は、参照およびオーバーライドの使用例で発生する可能性があります。
安全に使用およびオーバーレイできる /libs の領域を容易に理解してより安全になるように、/libs 内のコンテンツは次の mixin によって分類されています。
公開(granite:PublicArea) - オーバーレイ、継承(sling:resourceSuperType
)または直接使用(sling:resourceType
)できるように、ノードを公開として定義します。公開としてマークされた /libs の下のノードは、互換パッケージを追加することで、アップグレードしても安全になります。通常、顧客は公開としてマークされたノードのみを利用する必要があります。
抽象(granite:AbstractArea) - ノードを抽象として定義します。ノードはオーバーレイまたは継承できます ( sling:resourceSupertype
) ですが、直接使用しないでください ( sling:resourceType
) をクリックします。
最終(granite:FinalArea) - ノードを最終として定義します。最終として分類されたノードは、オーバーレイも継承もできません。最終ノードは、 sling:resourceType
. 最終ノードの下のサブノードは、デフォルトで内部と見なされます。
内部(granite:InternalArea) - ノードを内部として定義します。内部として分類されたノードは、オーバーレイ、継承、直接使用のいずれもできません。これらのノードは、AEM の内部機能でのみ使用されます。
注釈なし - ノードはツリー階層に基づいて分類を継承します。/ root はデフォルトで公開です。親が内部または最終として分類されているノードも、内部として扱われます。
これらのポリシーは、Sling 検索パスに基づくメカニズムに対してのみ適用されます。その他の分野 /libs と同様に、クライアントサイドライブラリは Internal
の代わりに、標準の clientlib のインクルードでも使用できます。 このような場合は、お客様が引き続き内部分類に従うことが重要です。
CRXDE Liteで適用された Mixin は、次のようにマークされたコンテンツノードとツリーを表示します INTERNAL
はグレー表示になっています。 の場合 FINAL
灰色表示になっているのはアイコンだけです。 これらのノードの子もグレー表示されます。どちらの場合も、オーバーレイノード機能は無効になります。
公開
最終
内部
コンテンツヘルスチェック
AEM 6.4 にはヘルスチェックが付属しています。オーバーレイまたは参照されたコンテンツがコンテンツ分類と一致しない方法で使用された場合は、このヘルスチェックにより警告が表示されます。
Sling/Granite コンテンツアクセスチェックは、リポジトリを監視して、お客様のコードが AEM の保護されたノードに誤ってアクセスしていないかどうかを確認する新しいヘルスチェックです。
このヘルスチェックは /apps をスキャンし、通常は完了するまで数秒かかります。
この新しいヘルスチェックにアクセスするには、次の手順に従います。
AEM ホーム画面から、ツール/運営/ヘルスレポートに移動します。
次に示すように、Sling/Granite コンテンツアクセスチェックをクリックします。
スキャンが完了すると、警告のリストが表示され、誤って参照されている保護されたノードをエンドユーザーに通知します。
違反を修正すると、緑の状態に戻ります。
ヘルスチェックには、バックグラウンドサービスによって収集された情報が表示されます。バックグラウンドサービスでは、オーバーレイまたはリソースタイプがすべての Sling 検索パスにわたって使用される場合は常に、非同期的にチェックが実行されます。コンテンツ mixin が誤って使用された場合、違反が報告されます。