0

それぞれの ActivityDesigner を持つ 2 つのカスタム NativeActivity (ルートと最終) があります。 ここに画像の説明を入力

ルートの 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 に答える