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