您可以创建自定义工作流步骤来查询异步操作表并检查子工作流的状态。
查询以获取子工作流的状态:
<?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
-
如果没有,则添加逻辑以处理故障