実行する前に、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;
}
ありがとうございます!