2016-01-20 68 views
0

問題:當項目從一個桶文件夾移動到另一個CM服務器上,他們從第二CM服務器問題與Sitecore的多服務器CM環境bucketable項目的知名度

簡要消失簡介:

我們爲我們的網站CM1和CM2設置了兩臺CM服務器。我們有一個項目存儲桶,存儲具有三個嵌套文件夾的項目:年,月,日。 該項目最初是使用創建日期創建的,我們有一個自定義路徑解析器,根據字段「到期日期」更新項目的路徑,然後每當「截止日期」字段被修改時將項目移動到新的存儲桶中並保存該項目。

下面的代碼是在項目上運行保存:

  /*move the saved item according to release/due date*/ 
     BucketManager.MoveItemIntoBucket(savedItem, bucketItem); 
     /*delete previous parent if it has no child (delete empty buckets)*/ 
     if (BucketManager.IsItemContainedWithinBucket(removeItem)) 
     { 
      if (!removeItem.HasChildren) 
      { 
       removeItem.Delete(); 
      } 
     } 

以下設置是爲了實現根據「到期日」的接口IDynamicBucketFolderPath的GetFolderPath方法(Sitecore.Buckets.dll):

<setting name="BucketConfiguration.DynamicBucketFolderPath"> 
    <patch:attribute name="value"> FullyQualifiedPathOfTheClassWithGetFolderPathMethod, AssemblyName </patch:attribute> 
</setting> 

問題描述:

  1. 當我們在CM1服務器上的項目桶中創建項目時,該項目會在使用當前日期創建的年,月,日文件夾中創建。 如果在CM2服務器上選中了相同的項目,則在此處可見。 最初'到期日'字段爲空。

  2. 當'到期日'字段在CM1服務器上用新日期修改並且該項目被保存時,該項目將移動到截止日期爲'截止日期'的新創建的存儲桶文件夾中。 如果在CM2服務器上選中了相同的項目,那麼它現在不存在。

看來這個項目沒有得到與目前在Sitecore.Buckets.dll BucketManager類的MoveItemIntoBucket方法在兩臺服務器上同步。

如果我們現在從CM1的內容編輯器中的開發人員功能區爲同一項目執行「更新項目」,則同樣開始出現在CM2服務器上,但我們不希望每當有新項目時手動執行「更新項目」 bucketable項目被創建。

什麼可能導致此行爲?我怎樣才能解決這個問題?

+1

您是否爲兩個CM服務器啓用了擴展配置? –

+0

即使在第二臺服務器的內容編輯器中,我也無法看到該項目。當該項目最初在一個CM服務器上創建時,它在第二個CM服務器的內容編輯器中的相同路徑上也可用,但是一旦我更新「發佈日期」字段,然後項目移動到具有新日期的另一個存儲桶中,從第二個CM服務器的內容編輯器中消失(雖然它在第一個CM服務器的內容編輯器中在新創建的路徑中可用)在這裏縮放配置幫助嗎?我們曾嘗試在另一臺服務器上手動重建索引,但它不起作用。 – Renuka

+0

要添加到此項中,只要項目移動到現有文件夾結構中,它就會在兩臺服務器的內容編輯器中可見,只有在更改時創建'發佈日期'中具有年份,月份的新存儲桶文件夾時纔會出現問題發佈日期。所以,問題在於沒有在其他服務器上更新文件夾,因爲該項目不可見。 – Renuka

回答

1

根據您的描述我相信您沒有啓用您的內容管理服務器的縮放設置。與Sitecore中的普通項目不同,Bucketed項目的界面在很大程度上依賴於搜索。假設您使用開箱即用的Lucene實現,每個CM服務器都維護自己的索引。如果未啓用Scaling配置,則只有進行更改的服務器纔會更新其搜索索引。擴展配置將啓用事件,以便遠程服務器也知道這些更改。

Sitecore Search Scaling Guide的第24頁介紹瞭如何啓用縮放配置以及可用的設置。請確保您爲兩個內容管理服務器啓用了Sitecore.Buckets.Scaling.config。

如果您有多個CD服務器,同樣適用,因此請確保爲這些服務器啓用適當的縮放配置。