.net 4.0 嵌套ActivityDesigner执行
我有两个自定义的NativeActivity(根活动和最终活动)以及各自的ActivityDesigner: 在根本地活动中,我有:.net 4.0 嵌套ActivityDesigner执行,.net-4.0,workflow-foundation-4,activitydesigner,.net 4.0,Workflow Foundation 4,Activitydesigner,我有两个自定义的NativeActivity(根活动和最终活动)以及各自的ActivityDesigner: 在根本地活动中,我有: [ContentProperty("Body")] [Designer(typeof(RootActivityDesigner))] public class RootActivity : NativeActivity { public Activity Body { get; set; } protected override void Execut
[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);
}
}
}
[Designer(typeof(FinalActivityDesigner))]
public class FinalActivity : NativeActivity
{
protected override void Execute(NativeActivityContext context)
{
//Do Stuff
}
}
我最后的本土活动是:
[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);
}
}
}
[Designer(typeof(FinalActivityDesigner))]
public class FinalActivity : NativeActivity
{
protected override void Execute(NativeActivityContext context)
{
//Do Stuff
}
}
所以,当我创建一个新的工作流时,我会拖动第一个RootActivity,然后再拖动根主体中的其他活动,所有活动都可以正常工作,但最终性并没有被执行,所以“do stuff”不会被点击
怎么了
我必须调用context.ScheduleActivity(this.Body);也是为了最终性
非常感谢 最终性在树中的位置。从设计者的角度看,它似乎是RootActivity的一部分,但它的源代码在任何地方都不包含引用。我不知道Final在哪里或什么地方,但您必须以某种方式安排它。如果
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);
}
}
我试过这么做,但还是不行。在WF持久性数据库上,我发现以下错误:System.ArgumentNullException-值不能为null。参数名称:活动。我怀疑在“公共活动最终{get;set;}”行中,WF如何将最终结果与我的最终结果关联?位于树的底部。这是设计师的标记:这是我再次感兴趣的活动树。谁是它的父母,因为那是负责执行它的人。