Отключить шаг на блок-схеме - PullRequest
0 голосов
/ 08 февраля 2012

Я хотел бы отключить некоторые шаги в блок-схеме 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;
}

Спасибо за помощь!

1 Ответ

1 голос
/ 08 февраля 2012

Есть два способа сделать это.

  1. Если вы динамически загружаете XAML с помощью ActivityXamlServices.Load () , вы можете обновить XAML перед его фактической загрузкой и выполнением. В конце концов, XAML - это просто XML.
  2. Вы можете заключить действия в действия FlowDecision и выполнять их только тогда, когда хотите.
...