【问题标题】:Dynamics CRM SDK - Cancel WorkflowDynamics CRM SDK - 取消工作流
【发布时间】:2014-01-20 15:35:19
【问题描述】:

我正在尝试找到一种使用 Dynamics CRM SDK 取消工作流的方法。目前我可以重试工作流程,但我无法以编程方式取消工作流程。这可能吗?

【问题讨论】:

  • 您是要取消当前的工作流还是取消一批正在服务器上运行的其他工作流?
  • 我会向系统查询我知道应该完成的暂停工作流,如果重试不起作用,则取消它们。
  • 处理此问题的更好方法是在工作流中定义一个逻辑,以根据它可能失败的原因结束它......但请查看下面关于如何以编程方式停止它的答案跨度>

标签: dynamics-crm-2011


【解决方案1】:

启动工作流程:

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);

【讨论】:

  • 如果需要,您可以将其封装到 for each 循环中
【解决方案2】:

你见过Asynchronous Operation States吗?

显然您只需要对statecode 进行更新调用。

检索和更新 AsyncOperation 状态

监控和更新异步操作的状态是 通常通过“系统作业”网格以交互方式完成 Microsoft Dynamics CRM Web 应用程序。但是,您也可以使用 用于编写执行相同任务的代码的 SDK。

读取异步操作的状态

  1. 使用 RetrieveMultiple 方法按名称或使用 Retrieve 方法按 ID 检索 AsyncOperation。

  2. 读取 AsyncOperation.StateCode 属性。

更改状态码

  1. 根据允许的操作状态,将检索到的状态码属性修改为新值。你也可以改变 AsyncOperation.PostponeUntil 属性。

  2. 调用 Update 以更改数据库中这些属性的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多