2012-03-14 88 views
0

我有兩個自定義NativeActivity的具有各自ActivityDesigner(根和Final): enter image description here嵌套ActivityDesigner執行

在Root NativeActivity的我有:

[ContentProperty("Body")] 
[Designer(typeof(RootActivityDesigner))] 
public class RootActivity : NativeActivity 
{ 
    public Activity Body { get; set; } 

    protected override void Execute(NativeActivityContext context) 
    { 
    if (this.Body != null) 
    { 
     context.ScheduleActivity(this.Body); 
    } 
    } 
} 

及最終NativeActivity的我有:

[Designer(typeof(FinalActivityDesigner))] 
public class FinalActivity : NativeActivity 
{ 
    protected override void Execute(NativeActivityContext context) 
    { 
    //Do Stuff 
    } 
} 

因此,當我創建一個新的工作流程時,首先拖動第一個RootActivity,然後拖動Root Body中的其他活動,除了未被執行的FinalActivity之外,它們都可以使用,所以「做東西」不會受到影響。

出了什麼問題?

我必須調用context.ScheduleActivity(this.Body);對於FinalActivity呢?

非常感謝!

回答

1

FinalActivity位於樹中。從設計者看來,它是RootActivity的一部分,但它的源代碼不包含任何地方的FinalActivity引用。

+0

位於樹的底部。這裏是設計者標記: <樹液:WorkflowItemPresenter項= 「{綁定路徑= ModelItem.Body}」 HintText = 「體」/> <我:FinalActivityDesigner高度= 「25」 的Horizo​​ntalAlignment = 「左」 ×: Name =「FinalActivityDesigner1」VerticalAlignment =「Bottom」/> 2012-03-15 11:15:36

+0

這是我再次感興趣的活動樹。這是誰的父母,因爲那是誰負責執行它。 – Maurice 2012-03-15 12:11:42

0

我不知道最終是在哪裏或什麼,但你安排它以某種方式。如果RootActivity是控制實體,那麼你可能會這樣做

public class RootActivity : NativeActivity 
{ 
    public Activity Body { get; set; } 
    public Activity Final { get; set; } 

    protected override void Execute(NativeActivityContext context) 
    { 
    if (this.Body != null) 
    { 
     context.ScheduleActivity(this.Body, OnBodyComplete); 
    } 
    } 
    // callback fired after Body completes execution 
    private void OnBodyComplete(NativeActivityContext context, 
           ActivityInstance completedInstance) 
    { 
     context.ScheduleActivity(Final); 
    } 

} 
+0

我試圖做到這一點,但仍然無法正常工作。在WF持久性數據庫中,我發現此錯誤: System.ArgumentNullException - 值不能爲空。參數名稱:活動。 我懷疑 「public Activity Final {get; set;}」 WF如何將Final與FinalActivity相關聯? – 2012-03-15 11:13:27