2012-02-08 51 views
-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; 
} 

Thx for your help!

回答

1

有兩種方法可以做到這一點。

  1. 如果您使用ActivityXamlServices.Load()動態加載XAML,則可以在實際加載並執行之前更新XAML。最終,XAML只是XML。
  2. 您可以將活動包裝在FlowDecision活動中,只在需要時執行。
+0

txk回覆:) – SebFrance 2012-02-09 09:11:01