-1

実行する前に、WF4 フローチャートのいくつかのステップを無効にしたいと考えています。私のフローチャートは非常にシンプルで、開始ノードと、それぞれに WriteLine アクティビティを含む 3 つのシーケンスがあります: 「ステップ 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

これを行うには 2 つの方法があります。

  1. ActivityXamlServices.Load()を使用して XAML を動的に読み込む場合は、実際に読み込んで実行する前に XAML を更新できます。結局、XAML は単なる XML です。
  2. アクティビティをFlowDecisionアクティビティ内にラップし、必要なときにのみ実行できます。
于 2012-02-08T16:01:46.350 に答える