2012-03-27 81 views
3

我們希望實施一些功能,以便在出現或解決問題時出現錯誤,並且我們會使用try/catch塊跳過它,但仍然會喜歡通知用戶某些內容已被跳過。在SDL Tridion 2011發佈期間提高「警告」狀態

SDL Tridion 2011發佈隊列可按狀態進行過濾。其中一種狀態是「警告」。在模板代碼或自定義解析器中,是否可以使用API​​觸發發佈事務以具有「警告」狀態?

+0

Chris。 PublishTransaction類具有可設置的狀態屬性。你嘗試過使用它嗎?結果是什麼? – 2012-03-28 18:19:57

+0

我還沒有嘗試在模板中做這件事 - 我目前的挑戰是試圖在解析器中做到這一點,我不認爲PublishTransaction可用。 – 2012-03-28 18:23:54

回答

1

恐怕這是不可能的,但上面的答案可能會幫助您找到替代解決方案。

+1

不幸的是我認爲你是對的 – 2012-04-25 02:26:16

4

如果您在發佈期間只需要發出警告(例如發佈事務處理有狀態警告),則需要將PublishInstruction.MaximumNumberOfRenderFailures設置爲大於0的值。只要渲染錯誤的數量低於您指定的最大值,發佈的狀態將爲警告。

如果在渲染之外發生錯誤,則該指令將顯示爲失敗。另一方面,如果您想在GUI(在MessageCenter中)中顯示一條消息,並在'Warning'中出現問題,那麼您將需要一個更復雜的體系結構。弗蘭克一直在努力。這個想法(IIRC)是要有一個GUI部分,例如一個iframe輪詢一個服務,該服務返回該用戶的發佈操作的狀態。一個事件系統可以通過監視PublishInstruction來產生這些狀態,並且它會將它們寫入某種類型的存儲器(文件,數據庫,內存),然後該服務將輪詢。

+0

那麼當我抓到它時,我該如何提出錯誤?這隻能在模板代碼中完成嗎?任何關於這是否可以在自定義解析器中完成的想法? – 2012-03-27 19:07:54

+0

在模板代碼中,你完全不會理解它。讓它被拋出,它會被視爲1渲染失敗。然而,如果您在客戶解析器中發現異常,則會更棘手。您需要將「錯誤」推遲到模板代碼。你需要一些機制讓模板代碼知道它應該拋出異常。也許在組件或頁面上使用AppData?例如。自定義解析器捕獲異常,寫入AppData,然後繼續執行,並執行模板代碼,它所做的第一件事是讀取AppData尋找該標誌。如果找到,則從模板代碼中拋出異常。 – 2012-03-27 19:41:18

+0

謝謝@Mihai - 不幸的是,這不適合我的解析器。當解析器中的項失敗時,它們最終不會被添加到包中,因此它們永遠不會被渲染(因爲這樣的模板不會被執行)。似乎沒有辦法讓自定義解析器正常失敗,同時通知發佈隊列中的用戶。 – 2012-03-27 19:58:20

相關問題