代码之家  ›  专栏  ›  技术社区  ›  Tom Hanson

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

  •  0
  • Tom Hanson  · 技术社区  · 8 年前

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

    1 回复  |  直到 8 年前
        1
  •  0
  •   MarioZG    8 年前

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

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

    <?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

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

    • 调用子工作流
    • 等一段时间
    • 调用自定义步骤以检查子工作流的状态
    • 如果孩子的状态正常-继续main
    • 如果没有,则添加逻辑以处理故障