2011-11-08 41 views
1

在我的自定義工作流任務在Sharepoint 2010中完成後,目前正面臨此錯誤。它顯示錯誤「發生錯誤」,我懷疑工作流沒有正確終止。如何以編程方式終止工作流?我看到大多數網站要求我們使用下面的代碼,但我不知道如何實現代碼。如何終止Sharepoint 2010中的工作流程

SPWorkflowCollection 
itemWorkflowCollection= listItem.Workflows; 
foreach (SPWorkflow itemWorkflow in itemWorkflowCollection) 
{ 
    //cycle workflows associated to the item (listItem) 
    if (!itemWorkflow.IsCompleted && itemWorkflow.InternalState == SPWorkflowState.Running) 
    { 
    foreach (SPWorkflowTask taskWorkflow in itemWorkflow.Tasks) 
    { 
     //cycle throught all tasks associated to the workflow 
     //if task is not completed 
     if (taskWorkflow["PercentComplete"].ToString() != 「1″) 
     { 
     //you can cancel or change the running tasks before canceling the workflow 
     taskWorkflow["Status"] = 「Canceled」; 
     taskWorkflow["PercentComplete"] = 1; 
     web.AllowUnsafeUpdates = true; 
     taskWorkflow.Update(); 
     } 
    } 
    SPWorkflowManager.CancelWorkflow(itemWorkflow); 
    } 
} 

回答

0

您顯示代碼取消工作流是未完成及其內部狀態運行。如果是這種情況,所有相關的工作流程任務都將被取消,並最終取消工作流程。 如果您在工作流程(WF)上執行此代碼,其狀態爲「發生錯誤」什麼都不會發生

「發生錯誤」表示WF發生錯誤的原因是被SharePoint取消了 - 無需嘗試終止該WF,因爲它已經終止。

你現在需要做的是找出爲什麼這個WF拋出一個錯誤。首先檢查工作流程狀態頁面(有任何類似「無法發送電子郵件」的錯誤描述?),那麼你可以檢查Windows事件日誌中是否有錯誤(可能沒有相關的錯誤),最後,最重要的是你在您的ULS日誌中找到錯誤描述和更多信息。

+0

我不確定如何檢查事件日誌中的錯誤 –

+0

我真的不確定如何調試此錯誤 –

+0

您沒有指定錯誤Dwayne。您只說「發生錯誤」 - 您需要檢查標準的Sharepoint源錯誤,正如我之前所說的。 –

相關問題