松崎 剛 Blog

This Blog's theme : エンタープライズ開発 (Server side)、Office サーバ開発

設定だけで(開発をせずに) ワークフローから Office ドキュメントの中身を更新する方法 (2)

設定だけで(開発をせずに) ワークフローから Office ドキュメントの中身を更新する方法 (2)

  • Comments 1

環境:
Office SharePoint Server (MOSS) 2007
SharePoint Designer 2007
Office Word 2007

設定だけで(開発をせずに) ワークフローから Office ドキュメン���の中身を更新する方法

  1. Word 2007 のテンプレート設定
  2. SharePoint Designer 2007 を使用したワークフロー設定
  3. InfoPath 2007 の場合 

こんにちは。

訳あって (Office 2007 のテクノロジーをまとめておきたいと考えています、、、)、かなり昔記載した こちらの投稿 の中身をすべて手順を追って記載しておきたいと思います。(そんなこと今更書かなくてもわかってるという方は、読み飛ばしてください)
今回は、その投稿で説明を割愛していた SharePoint Designer によるワークフロー作成から記載します。(前回、ドキュメント情報パネルと関連付いた Word ドキュメントのドキュメントライブラリを作成する手順で記載しています、、、)

ここでは、こちら のブログに添付した「Contoso 人事データベースからマネージャを取得する」というカスタムアクションを使用していますので、このブログからプロジェクト (添付ファイル) をダウンロードし readme.txt に従ってインストールをおこなっておいてください。(開発者でない方もインストールをおこなえるように手順を記載しました。このアクティビティを使わない方は、下記で「Contoso 人事データベースからマネージャを取得する」を使っている箇所は飛ばして進んでください。)
なお、この「Contoso 人事データベースからマネージャを取得する」というカスタムアクションは、内部では、実はマネージャの取得はおこなっておらず、そのまま入力されたユーザのアカウントを返すように実装されています(実際の開発ではコードやアクティビティ名などを変更して使用してください)。

今回は、ドキュメントを作成したユーザのマネージャを上記のアクティビティで取得して、このマネージャにタスクを割り当てて、タスクで「承認」がおこなわれたら前回作成したドキュメントの [承認者] 欄に承認者の名前を設定するようにワークフローを作成してみます。

  1. SharePoint Designer 2007 を起動します。

  2. サイトを開き、前回作成したドキュメントライブラリの存在するサイトを開きます。

  3. [ファイル] - [新規作成] - [ワークフロー] でワークフローを作成します。

  4. [このワークフローを適用する SharePoint リスト] 欄に、前回作成した Word のドキュメントライブラリを設定してつぎに進みます。



  5. では、フローを組み立てていきます。
    まずは、ドキュメントを作成したユーザのマネージャを取得してみましょう。ここで、上記でインストールした「Contoso 人事データベースからマネージャを取得する」を使用します。
    [アクション] のドロップダウンリストの中に、[Contoso 人事データベースからマネージャを取得する] というアクションが存在しますので、これを選択します。



  6. 上図で、[このユーザ] をクリックし、[現在のアイテムを作成したユーザ] を選択します。
    [変数] ボタンを押してみていただくとわかりますが、この設定によって、「マネージャのアカウント」、「マネージャの E メール」、「マネージャの名前」 という入れ物が自動生成されます。
    (上記の「Contoso 人事データベースからマネージャを取得する」をインストールしていない方は、このあたりは読み飛ばしてください)

  7. つぎに、タスクを割り当てます。
    SharePoint Designer でタスクを割り当てるときの考え方は、『ユーザから「承認した?」とか、「コメントは何?」といった、"データ" の収集をおこなう』 という考え方です。このため、[アクション] のドロップダウンリストから、今度は [ユーザからデータを収集する] を選択します。



  8. 上図で [ユーザ] をクリックし、[ワークフロー参照] の中の [マネージャのアカウント] を選択します。
    ただし上記の「Contoso 人事データベースからマネージャを取得する」をインストールしていない方は、ここは今回暫定として [現在のアイテムを作成したユーザ] を選択しておきましょう。(サンプルの 「Contoso 人事データベースからマネージャを取得する」 アクティビティの中でも、同一ユーザを返すようになっています)

  9. つぎに、上図の [データ] をクリックします。
    ここでは、「どのようなデータをタスクで収集させるか」をウィザードに従って設定できます。タスク名を適当に入力してすすむと、データを設定する画面 (下図) が表示されます。



  10. ここで、[追加] ボタンを押し、以下の 2 つのデータを設定してみましょう。

    フィールド名 : 承認フラグ
    情報の種類 : はい/いいえ (チェックボックス)

    フィールド名 : コメント
    情報の種類 : 複数行テキスト

  11. 入力をおこなったら、[完了] ボタンをおしてウィザードを終了します。

  12. つぎに、上記のタスクで割り当たった「承認フラグ」の値を取り出しますが、実は、「承認フラグ」の値は、設定した上記の「タスク」オブジェクトの中に入っています。
    そして、そのタスク ID が、上記で作成された変数「収集」(上図を参照)の中に入っています。ですので、以下の手順で、このタスク ID を使って中に入っている「承認フラグ」の値を取り出します。

    まず、[アクション] ドロップダウンリストから、こんどは [ワークフローの変数を設定する] を選択します。



  13. 上図の [ワークフローの変数] をクリックして、[新しい変数の作成 ...] で、以下の変数 (入れ物) を作成します。

    名前 : 取り出した承認フラグ
    種類 : ブール値

  14. つぎに、上図で [値] をクリックし、表示される [fx] ボタン (関数設定ボタン) を押します。
    表示される画面で [ソース] として [タスク] を選択します。

  15. 今回、タスクは 1 つだけしか作成していませんが、通常、複数のタスクを作成する可能性があります。このため、下図の画面の下段に「どのタスクアイテムであるか」を設定し、上段で「そのタスクの中のどの属性を取り出すか」を指定します。
    ですので、今回は、下図の画面のように設定します。



  16. これでタスクの中に設定された「承認フラグ」が、「取り出した承認フラグ」という入れ物に設定されました。

    つぎに、「承認されていたならば、、、」 という次のステップに進みます。
    ワークフローデザイナー右の [ワークフローステップの追加] をクリックして「ステップ 2」を追加します。



  17. [条件] ドロップダウンリストから、[データソースの比較] を選択します。([条件] 欄に下図のように設定されます)



  18. 左の [値] をクリックして、先ほど作成した [ワークフローデータ] の [取り出した承認フラグ] を選択します。

  19. つぎに右の [値] をクリックして、[有効] (true の意味です) を選択します。

  20. さいごに、前回作成したドキュメントアイテムの [承認者] 欄をワークフローから設定しましょう。
    [アクション] ドロップダウンリストから、[現在のアイテムにフィールドを設定する] を選択します。



  21. 上図の [フィールド] をクリックして「承認者」を選択し、[値] をクリックして [fx] をクリックし、[ワークフローデータ] の [マネージャの名前] を選択します。
    (上記の「Contoso 人事データベースからマネージャを取得する」をインストールしていない方は、ここは今回暫定として適当な文字列を入力しておきましょう。)

以上で完了しました。

では動かしてみましょう。
SharePoint で、前回作成したドキュメントライブラリにドキュメントを作成し ([承認者] 欄は空にしておきましょう)、このワークフローをスタートしてみましょう (開始時の自動実行を設定した方は登録と同時に実行されます)。すると、まずタスクが作成されます。

そしてそのタスクを開いて、[承認フラグ] をチェックしてタスクを完了すると、

ワークフローが完了し、ドキュメントの中の [承認者] 欄にマネージャの名前が設定されます。

タスク割り当てのフォームを (ヘッダーを付けるなどして) もっとかっこよくしたい場合には、SharePoint Designer を使って、作成された .aspx のフォームを編集することができます。

なお、ここでご紹介したようなタスク割り当てを伴うワークフローには注意するべき点があります。
開発者の方はご存じかと思いますが、上記のようにカスタムなタスクフォームを作成した場合、内部ではカスタムのコンテンツタイプや列というものがサイトに生成され、これがタスクリストに割り当てられます。
試しに [タスク] フォルダを表示し、[設定] - [リストの設定] を見ると、下記のようにワークフローの中で設定したコンテンツタイプと列が表示されます。

そして、SharePoint Designer でワークフローの削除をおこなっても、これらの設定は (サイトにおこなわれた設定であるため) 残り続けます。

つまり、SharePoint Designer でワークフローの削除や、作成を中止した場合には、上記のタスクリストの中に作成されたカスタムの 「コンテンツタイプ」、「列」、さらには、サイトに設定された同じカスタムの 「コンテンツタイプ」、「列」 を確実に削除するようにしてください (そうしないと、ゴミとなって残り続けることでしょう)。
また、ワークフローを複数作成する場合にも上記のように「承認フラグ」のような一般的な名前を毎回使用していると、似た名前の列がどんどん増えていくことになります。ですので、収集するデータの命名は、他のワークフローとぶつからないような命名をおこなっておきましょう。

 

Leave a Comment
  • Please add 1 and 8 and type the answer here:
  • Post