ワークフロー タスク フォーム (Microsoft SharePoint Server 2010)
最終更新日: 2010年4月7日
適用対象: SharePoint Server 2010
ワークフロー内のタスクのためにユーザー設定のフォームを指定することができます。ワークフロー タスクはコンテンツ タイプが割り当てられる SharePoint アイテムなので、ワークフロー内のタスクの種類に対して使用するユーザー設定のフォームは、コンテンツ タイプによって決まります。
ワークフロー タスクの編集フォームに関する概念的な情報の詳細については、ワークフローのタスク フォーム (SharePoint Foundation) の、「Microsoft SharePoint 2010 Software Development Kit (SDK)」を参照してください。
ワークフロー タスク フォームを指定する
ワークフロー タスクのために Microsoft InfoPath 2010 編集フォームを指定するには、以下の手順を実行します。
ワークフロー定義ファイルで、Workflow 要素の TaskListContentTypeId 属性を次のコンテンツ タイプに設定します。
TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160"
Microsoft SharePoint Server 2010 に含まれるこのコンテンツ タイプは、ユーザー設定のタスクの表示と、InfoPath フォームのレンダリング用の Office Forms Server コントロールを含む編集フォームを指定します。
ワークフロー テンプレート定義の Metadata 要素に、要素を 1 つ追加します。追加する要素は TaskID_FormURN 要素 (Workflow) で、N は、ワークフロー内でそのタスクの種類に割り当てた整数を表します。この要素は、このタスクと共に使用する InfoPath 2010 フォームの URN に設定します。たとえば、次のように指定します。
<MetaData> … <Task0_FormURN>urn:schemas-adventureworks-com:workflow:ReviewRouting-Review</Task0_FormURN> … </MetaData>
ワークフローによって作成されるタスクの種類と区別するため、ワークフロー内では各タスクの種類に整数の識別子を割り当てます。最初のタスクの種類は 0、2 番目は 1、のように続きます。これにより、各タスクの種類に、異なるコンテンツ タイプや異なるフォームを割り当てることができます。これらのタスクの種類の識別子は、特定のワークフロー内でのみ一意にする必要があります。たとえば、タスクを作成するどのワークフローでも、タスク 0 のタスクの種類を割り当てられますが、すべてのワークフローにわたってタスクの種類を同じにする必要はありません。
ワークフロー定義スキーマの詳細については、Microsoft SharePoint 2010 Software Development Kit (SDK) の「ワークフロー定義」を参照してください。
ワークフロー タスク フォームでの処理
ユーザーがワークフロー タスクを編集または表示するリンクをクリックすると、SharePoint Server 2010 は Workflow 要素の TaskListContentTypeId 属性を調査し、タスク コンテンツの種類を特定します。次に、コンテンツの種類の定義が調査され、ユーザー設定のフォームが指定されているかどうかが判断されます。ワークフロー タスクのために InfoPath 編集フォームを使用している場合は、コンテンツの種類を、ユーザー設定のタスク表示と、InfoPath フォームのレンダリング用の Office Forms Server コントロールを含む編集フォームを指定する種類に設定します。SharePoint Server 2010 はこのユーザー設定フォームを読み込み、このフォームが次に SharePoint Server 2010 によって渡されたタスク ID に基づいて適切な TaskID_FormURN 要素 (Workflow) 要素を調査します。ユーザー設定ページでは、そのタスクの種類に対して指定されているフォームが読み込まれます。
このページでは、タスクを表す SPListItem オブジェクトの XML プロパティのコンテンツも取得され、セカンダリ データ ソースとしてフォームに渡されます。
ユーザーが変更内容をフォームに送信すると、ホストしているページは AlterTask メソッドを呼び出し、SPListItem オブジェクトおよび更新されたデータをパラメータとして渡します。このメソッドは、指定された XML で、指定された SPListItem オブジェクトを更新します。
SharePoint Server 2010 は、AlterTask メソッドで渡された XML を処理し、次の方法で SPItem メソッドを渡します。XML 内の名前付きプロパティが、SPWorkflowTask オブジェクトのプロパティと一致する場合、SharePoint Server 2010 はこの XML プロパティ値を、一致するオブジェクト プロパティとして扱います。SPWorkflowTask オブジェクトのプロパティと一致しない XML プロパティはすべて連結され、オブジェクトの "こぼれ" フィールドに格納されます。GetExtendedPropertiesAsHashtable メソッドを使用すると、このデータにアクセスできます。
プログラミングを容易にするため、開発者はタスクの種類のためにコンテンツの種類を作成し、各タスクのコンテンツの種類のスキーマを、指定された編集タスク フォームのスキーマと正確に一致させることを強くお勧めします。この方法により、プロパティの 1 対 1 のマッピングが提供され、"こぼれ" フィールドを解析して追加の値を抽出する必要がなくなります。
SharePoint Server 2010 は、AlterTask メソッドが呼び出されると、OnTaskChanged イベントを発生させます。このイベントを処理するには、ワークフローに OnTaskChanged イベントの処理を追加します。このイベントの AfterProperties プロパティには、変更されたタスク プロパティが含まれます。
関連項目
タスク
[方法] InfoPath ワークフロー フォームをデザインする
[方法] ワークフロー内のワークフロー タスク フォーム データにアクセスする
[方法] ワークフロー タスク フォームをデザインしてタスク データを使用する
概念
SharePoint Server 2010 でのワークフロー
ワークフローの関連付けと初期化フォーム (Microsoft SharePoint Server 2010)
ワークフロー変更フォーム (Microsoft SharePoint Server 2010)
ワークフロー タスク フォーム (Microsoft SharePoint Server 2010)