MS CRM:检查子工作流的状态

时间:2016-09-01 01:03:56

标签: dynamics-crm-2011 workflow

我正在设计一些工作流程。主工作流程调用一些子工作流程。如果子工作流失败,我需要等待一段时间,然后重新运行该子工作流。如果再次失败,则将任务发送到队列。 我在检查子工作流程的状态时遇到了麻烦。当它失败时,我将停止子工作流程并取消状态。

1 个答案:

答案 0 :(得分:0)

您可以创建自定义工作流步骤,以查询异步操作表并检查子工作流的状态。

查询以获取子工作流的状态:

<?xml version='1.0' encoding='utf-8'?>
<fetch distinct='false' no-lock='false' mapping='logical' page='1' count='100'>
  <entity name='asyncoperation'>
    <attribute name='statuscode' />
    <filter type='and'>
      <filter type='and'>
        <condition attribute='correlationid' operator='eq' value='{Correlation ID of workflow>' />
        <condition attribute='name' operator='eq' value='NAME OF CHILD WORKFLOW' />
      </filter>
    </filter>
  </entity>
</fetch>

它的示例查询,并按名称和相关ID匹配子项。如果您只有一次对子工作流程的调用,它将起作用。

您可以在此处找到异步进程的状态值列表:https://msdn.microsoft.com/en-us/library/gg309288.aspx

然后主要的工作流程步骤如下:

  • 致电儿童工作流程
  • 等一段时间
  • 调用自定义步骤以检查子工作流程的状态
  • 如果孩子状态良好 - 继续使用主
  • 如果没有添加逻辑来处理失败