ロールアウトの競合 msm-rollout-conflicts
ブループリントのブランチと依存するライブコピーのブランチの両方で同じ名前の新しいページが作成されると、競合が発生することがあります。このような競合はロールアウト時に処理および解決する必要があります。
競合の処理 conflict-handling
競合するページが(ブループリントやライブコピーのブランチ内に)存在するとき、MSM ではそれらの処理方法(処理の有無を含む)を定義できます。
ロールアウトがブロックされないように、次の内容を定義します。
- ロールアウト時にどのページ(ブループリントまたはライブコピー)が優先されるか
- 名前を変更するページおよびその変更方法
- 公開済みのコンテンツにどのような影響があるか
標準の Adobe Experience Manager(AEM)のデフォルトの動作では、公開済みのコンテンツに影響はありません。つまり、ライブコピーのブランチに手動で作成されたページが公開されている場合、競合の処理およびロールアウト後にもそのコンテンツは公開されたままになります。
標準の機能に加えて、カスタマイズされた競合ハンドラーを追加して別のルールを実装できます。これらは、アクションを個別のプロセスとして公開することも許可します。
サンプルシナリオ example-scenario
以降の節では、(手動で作成された)ブループリントとライブコピーのブランチの両方で作成された新しいサンプルページ b
を使用して、競合を解決する様々な方法について説明します。
-
ブループリント:
/b
1 つの子ページを持つメインページ、
bp-level-1
-
ライブコピー:
/b
1 つの子ページを持つライブコピーブランチで手動作成されたページ、
lc-level-1
- 公開時に子ページと共に
/b
としてアクティベートされます。
- 公開時に子ページと共に
ロールアウト前 before-rollout
b
b
b
b
のコンテンツを含む/bp-level-1
/lc-level-1
/lc-level-1
child-level-1
のコンテンツを含むロールアウトマネージャーと競合の処理 rollout-manager-and-conflict-handling
ロールアウトマネージャーを使用すると、競合の管理をアクティベートまたはアクティベート解除できます。
これは、Day CQ WCM Rollout Manager の OSGi 設定を使用して行います。ロールアウトマネージャーが、ブループリントに存在する名前を使用してライブコピーで作成されたページからの競合を処理する場合は、手動で作成されたページで競合を処理(rolloutmgr.conflicthandling.enabled
)の値を true に設定します。
AEM には、競合の管理が無効になった場合の動作が事前定義されています。
競合ハンドラー conflict-handlers
AEM では、コンテンツをブループリントからライブコピーにロールアウトするときに存在するページの競合を、競合ハンドラーを使用して解決します。ページの名前変更は、このような競合を解決する一般的な方法です(唯一の方法ではありません)。別の動作を選択できるように、複数の競合ハンドラーを有効にすることもできます。
AEM には次の機能があります。
- デフォルトの競合ハンドラー:
ResourceNameRolloutConflictHandler
- カスタマイズされたハンドラーを実装可能
- 個別のハンドラーの優先度を設定するためのサービスランキングメカニズム
- 最もランキングの高いサービスが使用されます。
デフォルトの競合ハンドラー default-conflict-handler
デフォルトの競合ハンドラーは ResourceNameRolloutConflictHandler
です。
- このハンドラーを使用すると、ブループリントページが優先されます。
- このハンドラーのサービスランキングは低く設定されます。つまり、カスタマイズされたハンドラーのランキングを高くする必要があることを前提としているので、
service.ranking
プロパティのデフォルト値よりも低くなります。ただし、必要に応じて柔軟性を確保するために、このランキングは絶対最小値にはなりません。
この競合ハンドラーでは、ブループリントが優先されます。例えば、ライブコピーページ /b
は、ライブコピーのブランチ内で /b_msm_moved
に移動されます。
-
ライブコピー:
/b
ライブコピーで
/b_msm_moved
に移動されます。これはバックアップとして機能し、コンテンツが失われないようにします。lc-level-1
は移動されません。
-
ブループリント:
/b
ライブコピーページ
/b
にロールアウトされます。bp-level-1
はライブコピーにロールアウトされます。
ロールアウト後 after-rollout
b
b
b_msm_moved
b
b
のコンテンツを持つb
のコンテンツを持つb
(ライブコピーのブランチで手動で作成され、現在の名前は b_msm_moved
)のコンテンツを含む/bp-level-1
/bp-level-1
/lc-level-1
/lc-level-1
カスタマイズされたハンドラー customized-handlers
カスタマイズされた競合ハンドラーを使用すると、独自のルールを実装できます。サービスランキングメカニズムを使用することで、他のハンドラーとの関わり方を定義することもできます。
カスタマイズされた競合ハンドラーでは、次の操作を行うことができます。
- 要件に合わせて名前を付けることができます。
- 要件に合わせて開発および設定することができます。
- 例えば、ライブコピーページが優先されるようにハンドラーを開発できます。
- OSGi 設定を使用して設定できます。具体的には:
- サービスランキング:他の競合ハンドラーに対する相対的な順序を定義します(
service.ranking
)。- デフォルト値は
0
です。
- デフォルト値は
- サービスランキング:他の競合ハンドラーに対する相対的な順序を定義します(
競合処理が無効になった場合の動作 behavior-when-conflict-handling-deactivated
手動で競合処理を無効にすると、AEM では、競合するページに対して何のアクションも実行されません。競合しないページは、正常にロールアウトされます。
この場合は、ライブコピーが効率的に優先されます。ブループリントページ /b
はコピーされず、ライブコピーページ /b
はそのまま残ります。
-
ブループリント:
/b
コピーされず、無視されます。
-
ライブコピー:
/b
変更なし。
ロールアウト後 after-rollout-no-conflict
b
b
b
b
のコンテンツを持つb
のコンテンツを含む/bp-level-1,
/lc-level-1
/lc-level-1
サービスランキング service-rankings
OSGi サービスランキングは、個々の競合ハンドラーの優先度を定義するために使用できます。