-1

我想在执行之前禁用 WF4 流程图上的一些步骤。我的流程图非常简单,一个起始节点和 3 个序列,每个序列都有一个 WriteLine 活动:“步骤 1”、“步骤 2”、“步骤 3”。

我想禁止“步骤 2”序列,所以控制台必须写“步骤 1”\n“步骤 3”,这是我的代码(它与顺序工作流完美配合,但不适用于流程图!!)

Activity a = new Activity1();
Activity customActivity = Customize(a);
WorkflowInvoker.Invoke(customActivity);
Console.ReadLine();

static System.Activities.Activity Customize(System.Activities.Activity scheme)
{
    var activities = WorkflowInspectionServices.GetActivities(scheme);
    var rootActivity = activities.FirstOrDefault();

    if (rootActivity is Sequence)
    {
        var seqActivities = ((Sequence)rootActivity).Activities;
        var badActivity = seqActivities.FirstOrDefault(a => a.DisplayName == "Step2");
        seqActivities.Remove(badActivity);
    }

    if (rootActivity is Flowchart)
    {
        var seqActivities = ((Flowchart)rootActivity).Nodes.Cast<FlowStep>().ToList();
        var badActivity = seqActivities.FirstOrDefault(a => a.Action.DisplayName == "Step2");
        bool b = ((Flowchart)rootActivity).Nodes.Remove(badActivity);
    }

    return scheme;
}

谢谢你的帮助!

4

1 回答 1

1

有两种方法可以做到这一点。

  1. 如果使用ActivityXamlServices.Load()动态加载 XAML,则可以在实际加载和执行 XAML 之前更新它。最后 XAML 只是 XML。
  2. 您可以将活动包装在FlowDecision活动中,并且仅在需要时执行。
于 2012-02-08T16:01:46.350 回答