获取子活动子树(Get Child Activity Subtree)

2019-10-17 06:00发布

我将一个传统的工作流系统WF4让我有过一对夫妇跳火圈,使其匹配与我们的应用程序的API。 所以,我会尽量保持这个问题explination尽可能简单。 :)

我有一个自定义的活动,接受一个序列作为参数,然后执行它。 在此之前执行它,定制活动需要遍历序列(和它的分支机构等),寻找特定类型的子活动 - 那么它在这些特定的子活动,一些报告。

我知道这是可能在验证过程中的时间穿越活动的孩子子树时,一个约束可以使用GetChildSubtree activiy,但是这并没有给我在运行时访问列表。 我也知道它也可以执行使用ActivityValidationServices从主机应用了类似的电话,但不会对我的情况下工作,要么。

那么什么是从一个自定义活动的执行方法中得到孩子子树的活动列表的最佳方式?

提前致谢!

马库斯。

Answer 1:

你可能想看看WorkflowInspectionServices类,它提供了与活动树的运行时元的工作方法 。 特别是GetActivities方法。

GetActivities返回活动的所有直接儿童,包括活动,委托处理程序,变量的默认和参数表达式。 现在,您可以编写扩展方法返回包括内分支的所有活动:

public static IEnumerable<Activity> GetInnerActivities(this Activity activity)
{
    var children = WorkflowInspectionServices.GetActivities(activity);

    foreach (var child in children)
    {
        children = children.Concat(child.GetChildren());
    }

    return children;
}

现在得到一个指定类型的所有活动的内心活动:

activity.GetInnerActivities().OfType<MySpecificType>();


文章来源: Get Child Activity Subtree