2012-12-06 46 views
6

在Core Service(SDL Tridion 2011 SP1)上使用GetSystemWideList操作時,我試圖爲PublishTransactionState應用過濾器。在GetSystemWideList中使用PublishTransactionState過濾器不起作用

如果我嘗試設置像PublishTransactionState.ScheduledForPublish或PublishTransactionState.WaitingForPublish這樣的過濾器值,我不會得到任何結果,即使我知道在隊列中存在具有此狀態的發佈事務。

var filter = new PublishTransactionsFilterData {ForRepository = new LinkToRepositoryData {IdRef = "tcm:0-69-1"}}; 
filter.PublicationTarget = new LinkToPublicationTargetData { IdRef = "tcm:0-1-65537" }; 
filter.PublishTransactionState = PublishTransactionState.ScheduledForPublish; 
//filter.StartDate = DateTime.Today.AddDays(-1); 

var transactions = coreServiceSession.GetSystemWideList(filter); 
Console.WriteLine(transactions.Count() + " publish transactions"); 

隨着filter.PublishTransactionState行的啓用,核心服務總是返回0個結果。有了這條評論,我們將按照預期獲取發佈事務的列表,其中包括一些狀態爲SceduledForPublish的事務。

其他過濾器,如StartDate過濾器按預期工作。

任何人都可用此業務?

+1

我可以很容易地重現您的問題:'State = ScheduleForPublish'有明確的結果,但將該條件添加到過濾器時不會返回任何結果。 –

+0

@FrankvanPuffelen:謝謝您的確認。 令我吃驚的是,我只是注意到對PublishTransactionState.Success的過濾功能正常工作。 另外,在CME中的發佈隊列中應用這些過濾器時,我會得到相同的行爲。 –

+0

不錯的問題,我們可以讓你感興趣的是承諾[區域51 Tridion具體提案](http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2)。如果您有時間,請使用同一個SO帳戶註冊。 –

回答

4

這是一個已知的問題已得到修復在2013年

沒有可用的修補程序的權利,但你可以通過請求列表而不設置PublishTransactionState屬性,然後處理後的結果解決它。

+0

在這種情況下,一定要將日期範圍設置爲未來,否則您將最終以超過必要的方式檢索更多事務。 –

+0

是的,代碼示例已經將StartDate顯示爲一天,以防發佈者有點忙。 //filter.StartDate = DateTime.Today.AddDays(-1); 當系統處理大量的發佈事務時,它會有相當的性能。您可能最終會涉水100個發佈事務來過濾一些預定的事務。 –

+0

在CM數據庫中找到更多信息。 PUBLISH_TRANSACTIONS表中的STATE列的值爲0而不是1(計劃發佈)。可能是一個錯誤,導致狀態0不存在。發佈狀態概述:sdllivecontent.sdl.com/LiveContent/content/en-US/ –