2009-11-02 44 views
0

看看是否有其他人遇到了這個問題並解決了它。將ModerationInformation.Status從Approved設置爲pending可以刪除

我有一個不使用任務的列表(而不是庫)的Visual Studio順序工作流程,批准過程是通過列表項上的批准/拒絕OOTB按鈕完成的。批准是2階段批准,如果第一階段完成(通過點擊Approve OOTB按鈕),我將ModerationInformation.Status從批准狀態重新設置爲掛起,然後發送電子郵件給第二階段批准者。

我的問題是,當我將ModerationInformation.Status設置爲從Approved待定,因此永遠不會有批准的版本,創建者失去了查看該項目的權限,並且我從SharePoint中收到「找不到項目」錯誤對於創建該項目的人員。第一級和第二級批准者和具有批准權限的任何人都可以看到該項目。

更多的背景信息。我使用來更新moderationinformation代碼是

我從工作流事件的屬性,並得到一個鉤到所述列表項

properties.Item.ModerationInformation.Status = SPModerationStatusType.Pending; properties.Item.Update();

任何人都可以幫忙。

回答

0

嘗試使用properties.Item.SystemUpdate();這可以防止SHarePoint觸發任何附加的EventReceivers等。我也有同樣的事情發生。恕我直言,這與項目進入更新模式的事實有關,然後SharePoint基本上已經控制了該項目(因爲工作流程通常以系統帳戶運行),但仍會將您發回到返回URL(即EditItem列表頁面)。由於SharePoint可能仍在對項目進行工作(並且在使用item.Update()時,它會經歷所有事件等等),因此您不能再打開它,因爲您不是系統帳戶。

當SharePoint完成後(發送電子郵件等)後,用戶可以再次訪問該項目。

就像我說的,在長時間運行(即長於2到3秒)EventReceivers/Workflows期間發生了同樣的事情。

+0

SystemUpdate在這種情況下對結果沒有任何影響。我可以離開項目2天,創建者仍然無法訪問它,因此它不是工作流程/事件處理程序的持續時間。這是與SharePoint刪除列表項上的某些權限有關的,因此我決定在更新期間再次設置創建者權限。似乎解決了這個問題。但感謝您的建議 – 2009-11-03 13:38:04

相關問題