2014-01-20 131 views
0

我正試圖找到一種方法來取消使用Dynamics CRM SDK的工作流程。目前我可以重試一個工作流程,但是我有問題能夠以編程方式取消。這可能嗎?Dynamics CRM SDK - 取消工作流程

+0

你們是不是要取消當前工作流程或取消了一批其他工作流程正在上運行服務器? – Nick

+0

我會查詢系統是否有掛起的工作流程,我知道應該已經完成​​,如果重試無效,請取消它們。 – widmayer

+0

處理這個問題的更好方法是在工作流程內定義一個邏輯,根據它可能失敗的原因來結束邏輯......但請查看我的答案,以下面如何以編程方式停止它 –

回答

3

啓動工作流:

ExecuteWorkflowRequest request = new ExecuteWorkflowRequest() 
       { 
        WorkflowId = Workflow.Id, 
        EntityId = entity.Id 
       }; 


       // Execute the workflow. 
       ExecuteWorkflowResponse response = 
        (ExecuteWorkflowResponse)service.Execute(request); 

來結束:

Entity operation = new Entity("asyncoperation") 
{ 
    Id = WorkflowRef.Id 
}; 

operation["statecode"] = new OptionSetValue(3); 
operation["statuscode"] = new OptionSetValue(32); 

organizationservice.Update(operation); 
+0

您可以將其封裝到每個如果需要,循環 –

1

你見過Asynchronous Operation States

顯然你只需要進行statecode的更新調用。

檢索和更新AsyncOperation國

監控和更新異步操作的狀態是 通常通過交互式的 的Microsoft Dynamics CRM Web應用程序的系統作業網格來完成。不過,您也可以使用 SDK編寫執行相同任務的代碼。

閱讀一個異步操作

  1. 的狀態檢索使用RetrieveMultiple方法或通過ID使用檢索方法,通過名稱的AsyncOperation。

  2. 閱讀AsyncOperation.StateCode屬性。

更改狀態代碼

  1. 根據容許操作狀態修改所檢索的狀態代碼屬性到一個新的值。您還可以更改 AsyncOperation.PostponeUntil屬性。

  2. 調用更新以更改數據庫中這些屬性的值。

相關問題