ワークフロー マークアップでのルールの使用
ワークフロー マークアップでルールまたはルール条件を使用する場合、ワークフロー内の子アクティビティを参照するには、GetActivityByName を使用する必要があります。たとえば、myCustomActivity というカスタム アクティビティに Foo という int プロパティがあり、この Foo をルール条件で使用する場合、次のようになります。
((myCustomActivityType)(this.GetActivityByName("myCustomActivity"))).Foo > 10
![]() |
---|
GetActivityByName メソッドは Activity 型を返します。そのため、このプロパティにアクセスするには、戻り値を適切な型にキャストする必要があります。 |
コード分離ファイル中では、アクティビティはワークフローのプロパティとして定義されるので、ルールは次の方法でアクティビティに直接アクセスすることができます。
this.myCustomActivity.Foo > 10
WhileActivity アクティビティと ReplicatorActivity アクティビティの子アクティビティには異なる方法でアクセスする必要があります。これは、WhileActivity アクティビティの各回の実行、および ReplicatorActivity アクティビティが作成するすべての子アクティビティは、それぞれ独自のコンテキスト内に存在しているためです。つまり、System.Workflow.Activities.ReplicatorActivity.DynamicActivities または System.Workflow.Activities.WhileActivity.DynamicActivity から受け取るアクティビティは、ワークフローのコンテキストからのもので、その子アクティビティの別のインスタンスです。実行中の実際のインスタンスを入手するには、以下の例に示すように、GetActivityByName メソッドを使用する必要があります。
((myCustomActivity)(this.GetActivtyByName("instanceOfCustomActivity", true))).Foo > 5
2 番目のパラメータは、子アクティビティをワークフローのコンテキストから取得するか、インスタンスのコンテキストから取得するかを指定します。WhileActivity または ReplicatorActivity の中で実行しているインスタンスが必要なので、パラメータは true に設定する必要があります。
関連項目
概念
Copyright © 2007 by Microsoft Corporation.All rights reserved.