0

我有两个带有各自 ActivityDesigner 的自定义 NativeActivity(Root 和 Final): 在此处输入图像描述

在根 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?

非常感谢!

4

2 回答 2

1

FinalActivity 在树中的位置。从设计者看来,它是 RootActivity 的一部分,但它的源代码不包含任何地方的引用 FinalActivity。

于 2012-03-14T13:11:24.863 回答
0

我不知道 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);
    }

}
于 2012-03-14T14:07:46.633 回答