2014-01-20 99 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. 调用更新以更改数据库中这些属性的值。

相关问题