Show Menu
主題×

MSM推出衝突

如果在Blueprint分支和相依即時副本分支中建立具有相同頁面名稱的新頁面,則可能會發生衝突。
這些衝突需要在推出時處理並解決。

衝突處理

當衝突頁面確實存在時(在Blueprint和即時副本分支中),MSM可讓您定義應如何處理(甚至是如果)這些頁面。
為確保轉出未遭封鎖,可能的定義可包括:
  • 首次推出時,哪個頁面(藍圖或即時副本)會優先,
  • 將重新命名哪些頁面(以及如何重新命名),
  • 這會如何影響任何發佈的內容。
    AEM(現成可用)的預設行為是發佈的內容不會受到影響。 因此,如果在即時副本分支中手動建立的頁面已發佈,該內容仍會在衝突處理和轉出後發佈。
除了標準功能外,還可新增自訂的衝突處理常式,以實作不同的規則。 這些動作也可以允許以個別程式進行發佈動作。

範例藍本

在以下幾節中,我們使用在Blueprint和即時副本分支(手動建立)中建立的新頁面示例來說明各種衝突解決方法: b
  • blueprint: /b
    首頁;1頁,bp-level-1
  • live copy: /b
    在即時副本分支中手動建立的頁面;包含1個子頁面, lc-level-1
    • 在發佈時與子頁 /b 面一起啟動為。
推出前
展開之前的藍圖 在轉存之前先使用拷貝 發佈之前先發佈
b (在Blueprint分支中建立,準備推出) b (在即時副本分支中手動建立) b (包含在即時副本分支中手動建立之頁面b的內容)
/bp-level-1 /lc-level-1 (在即時副本分支中手動建立) /lc-level-1 (包含在即時副本分支中 ,手動建立之頁面child-level-1的內容)

轉出管理員與衝突處理

轉出管理員可讓您啟用或停用衝突管理。
這是使用 Day CQ WCM Rovolt Manager的OSGi配置完成的 :
  • 使用手動建立的頁面處理衝突 :
    ( rolloutmgr.conflicthandling.enabled )
    如果轉出管理員應處理來自即時副本中建立且名稱存在於藍圖的頁面的衝突,則設為true。

衝突處理程式

AEM使用衝突處理常式來解決將內容從Blueprint轉出至即時副本時存在的任何頁面衝突。 重新命名頁面是解決此類衝突的一種(通常)方法。 可以操作多個衝突處理程式以允許選擇不同的行為。
AEM提供:
    • ResourceNameRolloutConflictHandler
  • 實作自訂處理常 式的可能性
  • 允許您設定每個單獨處理程式的優先順序的服務排名機制。 使用排名最高的服務。

預設衝突處理程式

預設衝突處理程式:
  • 呼叫 ResourceNameRolloutConflictHandler
  • 使用此處理常式時,Blueprint頁面會優先。
  • 此處理常式的服務排名設定為低(即屬性的預設值), service.ranking 因為自訂處理常式需要較高的排名。 不過,排名並非確保必要時靈活性的絕對最小值。
此衝突處理常式優先於Blueprint。 即時副本頁 /b 面會移動(在即時副本分支內)至 /b_msm_moved
  • live copy: /b
    會移至(在即時副本中) /b_msm_moved 。 這可當成備份,並確保不會遺失任何內容。
    • lc-level-1 未移動。
  • blueprint: /b
    已推出至即時副本頁面 /b
    • bp-level-1 會推出至livecopy。
推出後
推出後的藍圖 轉出後即可使用拷貝 推出後即時複製 轉出後發佈
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 面則保持不變。
  • blueprint: /b
    完全不複製,但會被忽略。
  • live copy: /b
    保持不變。

推出後

推出後的藍圖 推出後即時複製 轉出後發佈
b b (無變動;具有在即時副本分支中手動建立的頁面b的內容) b (無變動;包含在即時副本分支中手動建立之頁面b的內容)
/bp-level-1 /lc-level-1 (無變更) /lc-level-1 (無變更)

服務排名

OSGi service排名可用來定義個別衝突處理常式的優先順序。