以下のシナリオのWFをSPDで作成する方法をご紹介します。
シナリオ
- 申請者は、ユーザーPicker(ユーザー型のプロパティのことです)を利用し、承認者を選択します。
- 承認者は、SharePointのフォームで承認・却下を実施します。
- 申請者が申請したアイテムのプロパティに承認の状態を反映させます。
必要最低限の設定(以下、
太字は
アクションを指します)
- ドキュメントライブラリに「承認者(ユーザ・グループ型)」・「承認状態(1行テキスト)」というプロパティを用意します。
- SharePoint DesignerからWFを新規作成します。
- (ステップ1の画面において)現在のアイテムでのフィールドの変更を待つを追加し、フィールド⇒承認者、に等しい⇒空でないに設定します(このアクションを追加するか、このステップ1をこのアクションのみにしないと動作しません)。
- 次に、ワークフローの変数を設定するにおいて、新しい変数(種類は文字列)を作成(この変数を承認者変数とします)し、次に値⇒fxを押して、現在のアイテムの承認者を選択します。
- ユーザーからデータを収集するを追加し、ユーザー⇒ワークフロー参照を選択し、ワークフローデータから変数:承認者変数として設定し、データ⇒承認用タスクを選択します。次へを押したあと、カスタムフォームフィールドを設定します。追加を押し、フィールド名:承認・却下と入力し、情報の種類:選択肢(メニューから選択)を選択し、次へを押します。選択肢に未承認と承認と却下を入力し、完了を押します。
- リストアイテムを更新するを追加し、リスト:現在のアイテムを選択し、追加を押します。フィールド:承認状態、割り当てる値を設定:fxを押して、ソース(S):ワークフロータスク(ワークフローが利用するタスクリスト名を選択)、フィールド(F):承認・却下、リストアイテムの検索のフィールド(I)、値(V):fxを押して、ソース(S):ワークフローデータ、フィールド(F):"変数:収集(ユーザーからデータを収集するアクションで作成される変数)"を選択します。
このカスタマイズでのポイントは
「6」です。ワークフローを開始したアイテムと、そのアイテムに関連するタスクを一意に識別するのに大変苦労しました(アイテムとタスクで同じプロパティを持つ必要があります)。今まで、私が試したパターンは、
パス(http://portal/sites/doclib/ファイル名)と
上記のIDで識別する方法です。パスだと同じファイル名がある時点で一意に識別できないという問題が起きます…ちなみにパスを一致させるのも工夫が必要です。
同じ値がないので・・・

ほかの方法を知っているかたは教えてください…あと、追記ですが、上記のIDで識別する場合は、変数で一意のIDを保持していますが、IISResetを実行しても変数の値は消去されません