【问题标题】:Nested ActivityDesigner execution嵌套的 ActivityDesigner 执行
【发布时间】:2012-03-14 12:04:48
【问题描述】:

我有两个带有各自 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?

非常感谢!

【问题讨论】:

    标签: .net-4.0 workflow-foundation-4 activitydesigner


    【解决方案1】:

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

    【讨论】:

    • 位于树的底部。这是设计器标记:
    • 又是我感兴趣的活动树。谁是它的父母,因为那是负责执行它的人。
    【解决方案2】:

    我不知道 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 Persistance 数据库中,我发现了这个错误:System.ArgumentNullException -Value cannot be null。参数名称:活动。我怀疑在线“public Activity Final { get; set; }” WF 如何将 Final 与我的 FinalActivity 关联?
    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2013-09-18
    • 2015-03-15
    • 1970-01-01
    相关资源
    最近更新 更多