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