ワークフロー内のワークフロー タスク フォーム データにアクセスする
最終更新日: 2010年5月7日
適用対象: SharePoint Server 2010
ワークフロー タスクを作成する際、そのプロパティ データは SPWorkflowTaskProperties オブジェクトから取得されます。このオブジェクトには、CreateTask アクティビティの TaskProperties プロパティを通じてアクセスできます。このオブジェクトには、すべてのワークフロー タスクの標準である情報、およびタスク スキーマに含まれるカスタム プロパティが含まれています。TaskProperties プロパティに対して指定する SPWorkflowTaskProperties オブジェクト変数を初期化することで、ワークフローに渡されるタスク データを使用することができます。
注意
TaskProperties プロパティを通じてアクセスする SPWorkflowTaskProperties オブジェクトには、単に新しく作成されるタスクに関する初期化情報が含まれています。このオブジェクトがタスク自体に動的にバインドされることはありません。タスクに対する変更は、この SPWorkflowTaskProperties オブジェクトに格納されるデータには反映されません。
SPWorkflowTaskProperties オブジェクトには、AssignedTo、DueDate、StartDate、TaskType など、SharePoint Foundation のすべてのワークフロー タスクの標準プロパティ セットが含まれています。
さらに、オブジェクトには、ExtendedProperties プロパティによって表される、カスタム タスク プロパティを格納するためのハッシュ テーブルも含まれています。プロパティ名を ExtendedProperties プロパティのインデックスとして渡すことで、特定のカスタム プロパティにアクセスできます。
Microsoft SharePoint Server 2010 は、データを含むタスク フィールドに基づいてハッシュ テーブル内の各カスタム データ値に名前を付けます。たとえば、comments という名前のテキスト フィールドがワークフロー タスク内にある場合は、ExtendedProperties プロパティ ハッシュ テーブル内のそのフィールドのデータのインデックス名も comments となります。
注意
ExtendedProperties ハッシュ テーブルには、標準フィールドとカスタム フィールドの両方が設定されます。ただし、標準ワークフロー タスク タイプ フィールドは、同じ名前のカスタム フィールドとの名前競合が発生する可能性を防ぐために、名前ではなく、GUID インデックスで表されます。標準ワークフロー タスク フィールドには、ExtendedProperties ハッシュ テーブルを通じてではなく、各プロパティを通じてアクセスすることをお勧めします。
一般に、各タスク関連アクティビティの TaskProperties プロパティを、その特定のタスクを作成した CreateTask アクティビティの TaskProperties プロパティに対して定義したオブジェクト変数にバインドします。このオブジェクト変数は、タスクにデータを渡すための導管として使用されます。
アクティビティ プロパティの設定の詳細については、「Windows Workflow Foundation SDK」を参照してください。
Microsoft InfoPath 2010 ワークフロー タスク フォームからのデータは、ワークフロー関連付けまたは開始フォームの場合と同様、ワークフローに直接渡されません。タスク フォームは、タスク アイテム内のフォーム スキーマに対応するフィールドを直接変更します。これらの変更は、ワークフローが OnTaskChanged イベントを待機している場合にのみ、ワークフローに渡されます。InfoPath フォームからデータを受信するには、OnTaskChanged など、対応するイベントに対してイベント受信側アクティビティが必要です。OnTaskChanged オブジェクトの AfterProperties プロパティにバインドされる SPWorkflowTaskProperties オブジェクトは、タスク内の変更されたフィールドを格納します (変更されたフィールドのみを格納します)。既定では、InfoPath フォームは、フォームのスキーマに一致するフィールドを使用してタスクを変更します。
ワークフローでワークフロー タスク フォーム データにアクセスするには
データが標準ワークフロー タスク フィールドのデータの場合は、SPWorkflowTaskProperties オブジェクトの該当するプロパティを使用してアクセスします。
たとえば、ワークフロー タスクの OnTaskChanged アクティビティの AfterProperties プロパティを、wfTaskProps という名前の SPWorkflowTaskProperties オブジェクト変数に設定するとします。AssignedTo プロパティにアクセスするには、コード内で次のように参照します。
wfTaskProps.AssignedTo.ToString()
wfTaskProps.AssignedTo.ToString()
データがカスタム フィールドのデータの場合は、フィールド名を SPWorkflowTaskProperties オブジェクトの ExtendedProperties プロパティのインデックス値として使用してアクセスします。
たとえば、comments という名前のカスタム プロパティにアクセスするには、コード内で次のように参照します。
wfTaskProps.ExtendedProperties["comments"].ToString()
wfTaskProps.ExtendedProperties("comments").ToString()
関連項目
タスク
[方法] InfoPath ワークフロー フォームをデザインする
[方法] ワークフロー タスク フォームをデザインしてタスク データを使用する