ワークフローを使った SharePoint Team Services の拡張

Download sample code サンプルのダウンロード (spclb.exe)

Koji Kato, Theresa Venhuis, Amit Chopra
Microsoft Corporation

April 2001
日本語版最終更新日 2001 年 8 月 16 日

対象 :
   Microsoft® Office XP Developer

概要 : Office XP の SharePoint™ Team Services は、チームがプロジェクトに関する情報やドキュメントを共有し、互いに共同作業する場所を Web 上に提供します。この資料は、ワークフロー処理を使用してビジネス ルールを適用することにより、SharePoint Team Services を強化する方法を説明しています。セキュリティやイメージ (署名、承認印) などの高度な問題も、この資料で説明しています。

spclb.exe サンプル ファイルのダウンロード (73 KB)

目次

はじめに
ワークフローを SharePoint リストに追加する
通知を使用してワークフローを強化する
セキュリティを使用してワークフローを強化する
イメージを使用してワークフローを強化する

はじめに

この資料では、SharePoint Team Services のリストとドキュメント ライブラリの機能の強化を中心に説明します。SharePoint Team Services のリストとドキュメント ライブラリは、物理的に Microsoft SQL Server™ のテーブルとして格納され、その後 SharePoint リストとして参照されます。Office XP Developer は SQL Server ワークフロー デザイナを提供します。このワークフロー デザイナを使って、 SQL Server のテーブルに対してワークフローを有効にします。

この資料は、読者が SharePoint Team Services、SQL Server の管理、 Visual Basic® Scripting Edition (VBScript)、および ActiveX® Data Objects (ADO) に精通していることを前提としています。SQL Server 2000 は、SharePoint Team Services を構成するコンピュータにインストールされている必要があります。この必要条件は、Office XP Developer の前提条件から生じています。この資料で推奨するオペレーティング システムは Microsoft Windows® 2000 です。

この資料は、次のことを想定しています。

  • SharePoint Team Services が構成されるコンピュータの既定の Web サイトで、標準の SharePoint チーム Web サイトが確立されています。

    1) 匿名参照が無効にされている。
    2) このワークフローを利用するユーザーが追加されている。

  • SharePoint Team Services 用のデータベースは同じコンピュータに存在します。

  • SQL Server ワークフロー サービスを含めて完全にインストールされた Office XP Developer により SharePoint Team Services が構成されているコンピュータで作業します。

  • 電子メールを送信するために、SMTP サービスが正しくインストールされ、構成されています。

  • 以下の手順で SMTP が設定されています。
    インターネット サービス マネージャを起動し、既定の SMTP 仮想サーバーのプロパティを開きます。配信タブから詳細ボタンをクリックし、配信の詳細ダイアログを開きます。”スマート ホスト” にサーバー名を記述します。

この資料で提供するサンプル コードは、以下のすべての手順をこの資料で指定している順序で実行したときのみ機能するように設計されています。ほかのソリューションでは正しく実行される保証はありません。

ワークフローを SharePoint リストに追加する

以下の 5 つの手順に従ってワークフローを SharePoint リストに追加します。

  1. SharePoint リストを作成します。

  2. ワークフローを追加します。

  3. SharePoint をカスタマイズします。

  4. テーブルのデザインを変更します。

  5. ビジネス ルールの適用を確認します。

SharePoint リストの作成

SharePoint リストはブラウザを使って作成できます。

  1. SharePoint チーム Web サイトに移動します。

  2. ページの上部にある [リスト] を選択して、[リスト] ページに移動します。

  3. [新しいリスト] を選択して、[ページの作成] ページに移動します。

  4. [カスタム リスト] を選択して、[新しいリスト] ページに移動します。

    • [名前] フィールドに「WFL」と入力します。

    • [説明] フィールドに「ワークフローを持つリスト」と入力します。

    • [はい] を選択して、[クイック起動] バーにこのリストを表示します。

  5. [作成] を選択します。

ワークフローの追加

ワークフローは、SQL Server ワークフロー デザイナから SharePoint リストに追加できます。

  1. [スタート] メニューから [プログラム]、[Microsoft Office XP Developer] の順にポイントし、[Microsoft Development Environment] を選択します。

  2. [ファイル] メニューの [新規作成]、[プロジェクト] の順に選択し、[新しいプロジェクト] ダイアログ ボックスを開きます。

    • [プロジェクトの種類] アイコンのセットから [Office Developer Projects] を選択します。

    • [テンプレート] アイコンのセットから [SQL Server ワークフロー プロジェクト] を選択します。

    • [プロジェクト名] テキスト ボックスに「SharePoint」と入力します。

    • プロジェクトの場所は既定値のまま残します。

  3. [OK] をクリックし、[新しい SQL Server ワークフロー プロジェクトの作成] ダイアログ ボックスを開きます。

    • [サーバー] ドロップダウン リスト ボックスで、 SharePoint チーム Web サイトが存在するコンピュータを選択します。

    • [データベース] ドロップダウン リスト ボックスで、SharePoint チーム Web サイトに対してデータベース computer _LM_W3SVC_1_Collab を選択します。

  4. [OK] をクリックして、[データベースの登録] ダイアログ ボックスを開きます。

  5. [OK] をクリックして、SharePoint データベースへのワークフローの追加処理を続行します。

  6. ソリューション エクスプローラで [SharePoint] を右クリックし、[新しい項目の追加] を選択して、[新しい項目の追加] ダイアログ ボックスを開きます。

    • [項目] アイコンのセットから [SQL ワークフロー項目] を選択します。

    • [テンプレート] アイコンのセットから [ワークフロー処理の追加] を選択します。

  7. [開く] をクリックし、[ワークフロー プロセスの追加] ダイアログ ボックスを開きます。

    • [メインまたは詳細ユーザー テーブル] ドロップダウン リスト ボックスで [ows_Project1_u_WFL] を選択します。
  8. [OK] をクリックし、編集用に新しいワークフロー プロセスを開きます。

  9. ツールボックスで [状態] シェイプを選択し、デザイン画面をクリックし、以下の状態を作成します (既定で、[作成された項目] と [削除された項目] が配置されます)。

    • 状態 1

    • 状態 2

    • 状態 3

    • 状態 4

  10. デザイン画面で各状態を選択しながら、[プロパティ] ウィンドウで、状態プロパティの [(オブジェクト名)] と [Caption] を以下のように変更します。

    状態 変更後のオブジェクト名 変更後の Caption
    状態 1 Draft 下書き
    状態 2 Reviewer1 承認者 1
    状態 3 Approved 承認済み
    状態 4 Rejected 却下
  11. ツールボックスで [状態遷移] シェイプをクリックし、デザイン画面で接続元と接続先の状態を選択し、以下の状態遷移を作成します。

    接続元 接続先 状態遷移
    作成された項目 下書き 作成 1
    下書き 承認者 1 変更 1
    承認者 1 承認済み 変更 2
    承認者 1 却下 変更 3
    下書き 削除された項目 削除 1
    承認済み 削除された項目 削除 2
    却下 削除された項目 削除 3
  12. ツールボックスで [状態内の遷移] シェイプをクリックし、[下書き] 状態をクリックして、状態遷移 [変更4] を作成します。

  13. デザイン画面を右クリックし、[ダイアグラムの配置] から [垂直] を選択します。

  14. デザイン画面で各状態遷移を選択しながら、[プロパティ] ウィンドウで状態遷移プロパティの [(オブジェクト名)] と [Caption] を以下のように変更します。

    状態遷移 変更後のオブジェクト名 変更後の Caption
    作成 1 Create 作成
    変更 1 Submit 申請
    変更 2 Approve 承認
    変更 3 Reject 却下
    変更 4 Edit 編集
  15. ソリューション エクスプローラで [ows_Project1_u_WFLWorkflow] を選択し、 [プロパティ] ウィンドウで [EnableWorkflow] プロパティが True であることを確認します。False の場合はドロップダウン リスト ボックスから True を選択します。

  16. ソリューション エクスプローラで [ows_Project1_u_WFLWorkflow] を選択し、 [プロパティ] ウィンドウで [DeletedRowsAvailable] プロパティが True であることを確認します。False の場合はドロップダウン リスト ボックスから True を選択します。

  17. [ファイル] メニューから [すべてを上書き保存] を選択します。

SharePoint のカスタマイズ

SharePoint に組み込みのカスタマイズ機能を使用して、ユーザーがワークフローとの対話に使うユーザー インターフェイス要素を作成します。

  1. SharePoint チーム Web サイトに移動します。

  2. ページの上部にある [リスト] を選択して、[リスト] ページに移動します。

  3. [新しいリスト] を選択して、[ページの作成] ページに移動します。

  4. [カスタム リスト] を選択して、[新しいリスト] ページに移動します。

    • [名前] フィールドに「State for WFL」と入力します。

    • [説明] フィールドに「ワークフローの状態のルックアップ リスト」と入力します。

    • [いいえ] を選択して、[クイック起動] バーにこのリストを表示しません。

  5. [作成] を選択して、[State for WFL] ページに移動します。

  6. [新しいアイテム] を選択して [新しいアイテム] ページに移動し、[保存して閉じる] をクリックして以下のタイトルを持つエントリを作成します。エントリは以下の順序で作成する必要があります。

    • 下書き

    • 承認者 1

    • 承認済み

    • 却下

  7. ページの上部にある [リスト] を選択して、[リスト] ページに移動します。

  8. [WFL] を選択して、以前に作成したリストに移動します。

  9. [設定と列の変更] を選択し、[WFL のカスタマイズ] ページに移動します。

  10. [WFL のカスタマイズ] ページの [列] セクションで [新しい列の追加] を選択し、 [列の追加] ページに移動します。

    • [列名] フィールドに「State」と入力します。

    • 情報の種類として [参照] を選択します。

    • [情報の取得先] ドロップダウン リスト ボックスから [State for WFL] を選択します。

    • [OK] をクリックして、[WFL のカスタマイズ] ページに戻ります。

  11. [WFL のカスタマイズ] ページの [列] セクションで [新しい列の追加] を選択し、 [列の追加] ページに移動します。

    • [列名] フィールドに「Reviewer1」と入力します。

    • 情報の種類として [参照] を選択します。

    • [情報の取得先] ドロップダウン リスト ボックスから既定の [ユーザー情報] をそのまま使用します。

    • [OK] をクリックして、[WFL のカスタマイズ] ページに戻ります。

テーブル デザインの変更

SharePoint 組み込みのカスタマイズ機能を使用して作成したユーザー インターフェイス要素をワークフローに結び付けるには、テーブル デザインにわずかな変更が必要になります。

  1. [スタート] メニューから [プログラム]、[Microsoft SQL Server] の順にポイントし、[Enterprise Manager] を選択します。

  2. 次のノードを順番に展開します。 [コンソール ルート] | [Microsoft SQL Server] | [SQL Server グループ] | computer | [データベース] | computer _LM_W3SVC_1_Collab |[テーブル]

  3. [ows_Project1_u_WFL] を右クリックし、[テーブルのデザイン] を選択します。

  4. 列名 modStateId を選択し、[数式] プロパティに以下の数式を入力します。

    ([tp_State])
    

  5. リレーションシップの削除を警告するダイアログ ボックスで [はい] をクリックし、警告をオーバーライドします。

  6. [上書き保存] アイコンをクリックし、デザインの変更を適用します。

  7. 変更を確認するための [上書き保存] ダイアログ ボックスで [はい] をクリックします。

ビジネス ルールの適用の確認

これで、ワークフローの SharePoint リストへの追加が完了しました。ビジネス ルールの適用を確認するために、以下の手順を実行します。

  1. [新しいアイテム] を選択し、[保存して閉じる] をクリックして、タイトルに「適用 1」、状態(State)に「(なし)」を持つアイテムを作成します。レコードの作成に失敗することを確認します (状態が有効ではありません)。

  2. [新しいアイテム] を選択し、[保存して閉じる] をクリックして、タイトルに「適用 2」、状態(State)に「下書き」を持つアイテムを作成します。レコードの作成が成功することを確認します。

  3. [適用 2] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認済み] に変更後、[保存して閉じる] をクリックして保存します。レコードの更新に失敗することを確認します (これは有効な状態遷移ではありません)。

  4. [適用 2] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認者 1] に変更後、[保存して閉じる] をクリックして保存します。レコードの更新が成功することを確認します (これは有効な状態遷移です)。

  5. [適用 2] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認済み] に変更後、[保存して閉じる] をクリックして保存しますレコードの更新が成功することを確認します (これは有効な状態遷移です)。

通知を使用してワークフローを強化する

通知は承認者間の相互作用を調整します。この資料では、次に SharePoint で定義されたワークフローに通知を追加していきます。

この資料では、ワークフロー固有のユーザー管理の問題点を解決し、ワークフローに通知を追加する方法を説明します。

ワークフロー ユーザー管理

SQL Server ワークフロー デザイナは SQL Server に独立したユーザー管理テーブルを追加します。このユーザー管理テーブルは、SQL Server のログイン プロパティから定期的に作成されます。

SharePoint リストに通知を追加するには、このユーザー管理テーブルが SharePoint ユーザー リストのすべてのメンバに関する情報を保持している必要があります。

以下の手順を実行して SQL Server のログイン プロパティを設定します。

  1. [スタート] メニューから [プログラム]、[Microsoft SQL Server] の順にポイントし、[Enterprise Manager] を選択します。

  2. 次のノードを順番に展開します。 [コンソール ルート] | [Microsoft SQL Server] | [SQL Server グループ] | computer | [セキュリティ]

  3. [ログイン] を右クリックし、[新規ログイン] を選択して、[SQL Server ログインのプロパティ – 新規ログイン] ダイアログ ボックスを開きます。

  4. [Windows 認証] を選択し、[ドメイン] ドロップダウン リスト ボックスからユーザーのドメインを選択します。

  5. [名前] テキスト ボックスにそのユーザーの NT アカウントを入力します。ユーザーを検索する必要がある場合は、[...] をクリックして [SQL Server ログインのプロパティ – 新規ログイン] ダイアログ ボックスを開き、そこでユーザーを探します。

  6. [データベース アクセス] タブを選択します。

  7. データベース [computer _LM_W3SVC_1_Collab] の権限をチェックします。この結果、 SharePoint データベースへのアクセスが許可されます。

  8. [OK] をクリックして、Enterprise Manager に戻ります。

  9. 追加するすべてのメンバに対して、手順 3 から 8 までを繰り返します。

  10. すべてのメンバを追加した後に、[スタート] メニューから [プログラム]、[Microsoft Office XP Developer] の順にポイントし、[SQL Server ワークフロー マネージャ] を選択することにより、SQL Server ワークフロー マネージャを起動します。

  11. [ユーザー情報] タブを選択します。

  12. [同期] を選択し、[ユーザー ディレクトリ同期設定] ダイアログ ボックスを開きます。ネットワークで Exchange 5.5 Server を実行している場合は、[Exchange 5.5 と同期する] を選択し、 [Exchange Server] テキスト ボックスにサーバー名を指定します。ネットワークで Exchange 2000 Server を実行しているか Active Directory がセットアップされている場合は、[Exchange 2000 または Active Directory と同期する] を選択します。ネットワークで Exchange 5.5 も Exchange 2000 / Active Directory も実行されていない場合は、[ディレクトリ サービスを使用しないで同期する] を選択します。

  13. [OK] をクリックして、SQL Server ワークフロー マネージャに戻ります。

  14. [すぐに同期] を選択して、ユーザー管理テーブルを更新します。

注意 同期に失敗する場合は、手順 12 で [ディレクトリ サービスを使用しないで同期する] の再選択を試みてください。

  1. 手順 12 で [ディレクトリ サービスを使用しないで同期する] を選択した場合は、各ユーザーを選択し、[プロパティ] を選択して、[ユーザー プロパティ] ダイアログ ボックスを開きます。

    • [電子メール] テキスト ボックスに電子メール アドレスを入力します。

    • [管理者] テキスト ボックスで、そのユーザーの管理者を指定します。

    • [OK] をクリックします。

通知の追加

この資料では、SharePoint リストでのワークフローを実現するための関数群をコード ライブラリアン データベースで提供しています。

以下の手順は、アイテムが [承認者 1] 状態に申請されるときは承認者に、アイテムが [承認済み] 状態に承認されるときは作成者に、またアイテムが [却下] 状態に却下されるときは作成者に、それぞれ通知を送信するためのコードを追加します。

  1. [スタート] メニューから [プログラム]、[Microsoft Office XP Developer] の順にポイントし、[Microsoft Development Environment] を選択します。

  2. [ファイル] メニューの [最近使ったプロジェクト] を選択し、[SharePoint] ソリューションを開きます。

  3. ソリューション エクスプローラで [ows_Project1_u_WFLWorkflow] をダブルクリックしてワークフロー プロセスを開きます。

  4. [表示] メニューの [コード ライブラリアン] を選択します。

  5. [コード ライブラリアン] メニューの [追加] を選択後、[既存のライブラリ] を選択して、[開く] ダイアログ ボックスを起動します。

  6. サンプルの [SharePoint.CLB] を選択し、[開く] をクリックして、SharePoint コード ライブラリを開きます。

  7. コード ライブラリアンで [SharePoint.CLB] ノードを展開します。

  8. コード ライブラリアンで [共通] を選択します。

  9. [編集] メニューの [すべて選択] を選択し、[コピー] を選択します。

  10. デザイン画面を右クリックし、[コードの表示] を選択します。

  11. [編集] メニューの [貼り付け] を選択し、関数群をスクリプト エディタに貼り付けます。

  12. 以下の状態遷移イベント ハンドラを作成します。

注意 spSendUserInfoMail は、電子メールの送信先のユーザーを表すインデックス値を持つ列名、電子メールの件名を表す文字列、および電子メールの本文を表す文字列を受け取ります。インデックス値は SharePoint ユーザー テーブルの外部キーです。

<pre IsFakePre="true" xmlns="http://www.w3.org/1999/xhtml">

Sub Submit_OnChange spSendUserInfoMail "tp_Reviewer1", "申請", "承認依頼が来ています。" End Sub

Sub Approve_OnChange spSendUserInfoMail "tp_Author", "承認", "あなたの申請は承認されました。" End Sub

Sub Reject_OnChange spSendUserInfoMail "tp_Author", "却下", "あなたの申請は却下されました。" End Sub

  1. [ファイル] メニューの [すべてを上書き保存] を選択して、ワークフローを保存します。

通知の確認

これで、SharePoint リストへの通知の追加が完了しました。以下の手順で、作成したリストに移動後、これを確認できます。

  1. [新しいアイテム] を選択し、[保存して閉じる] をクリックすることにより、タイトルに「適用 3」、状態(State)に「下書き」を持つアイテムを作成します。レコードの作成に成功することを確認します。

  2. [適用 3] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認者 1] に変更し、[承認者 1] を自分自身に変更後、[保存して閉じる] をクリックして保存します。通知を受信することを確認します。

  3. [適用 3] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認済み] に変更後、[保存して閉じる] をクリックして保存します。通知を受信することを確認します。

セキュリティを使用してワークフローを強化する

ワークフローの重要な側面に一意識別があります。現在の承認者だけがリスト アイテムを編集できるような場合、あるいは作成者だけがワークフローにリスト アイテムを申請できるような場合に一意識別という概念が重要になります。

注意 SharePoint もセキュリティ機能を提供しますが、ワークフローではより細かいセキュリティ (たとえば、現在の状態に依存するような) が必要になります。

以下では、SharePoint の動作の概要を簡単に説明し、ワークフローにセキュリティを追加する方法を説明します。

SharePoint の動作

SharePoint は管理ページで設定したエージェント アカウントを使用してデータベースにアクセスします。データベースの観点からは、更新を実行する NT アカウントは常に固定されており、データベースを更新している現在のユーザーは標準の SQL Server のセキュリティ機能からは識別できません。

データベースを更新しているユーザーの ID は、SharePoint リストのフィールド値として使用できます。列 tp_Author はリスト アイテムの作成者に対する SharePoint ユーザー リストの外部キー値を保持します。列 tp_Editor はリスト アイテムを最後に編集したユーザーに対する SharePoint ユーザー リストの外部キー値を保持します。

この ID 情報を利用して、ワークフローにセキュリティを設定する制約を作成できます。

ワークフローへのセキュリティの追加

セキュリティ関数群は SharePoint.CLB からコピーされたコードの 1 つです。

以下の手順で、次のようなときにデータベースの更新を制限するコードを追加します。

  • リスト アイテムが承認者に申請され、現在のユーザーが作成者ではないとき。

  • リスト アイテムが承認され、現在のユーザーが承認者ではないとき。

  • リスト アイテムが却下され、現在のユーザーが承認者ではないとき。

このような場合はすべて、更新が失敗したことを示す通知が現在のユーザーに送信されます。

  1. [スタート] メニューから [プログラム]、[Microsoft Office XP Developer] の順にポイントし、[Microsoft Development Environment] を選択します。

  2. [ファイル] メニューの [最近使用したプロジェクト] を選択し、[SharePoint] ソリューションを開きます。

  3. ソリューション エクスプローラで [ows_Project1_u_WFLWorkflow] をダブルクリックしてワークフロー プロセスを開きます。

  4. デザイン画面を右クリックし、[コードの表示] を選択します。

  5. 以下の状態遷移イベント ハンドラを作成します。

注意 spUserInfoValidate は、現在のユーザーが SharePoint リスト フィールドで指定されているユーザーかどうかを確認し、ブール値の結果を返すヘルパ関数です。結果が False の場合に、指定した件名と本文で通知が送信されます。spNextReviewerValidate は SharePoint リスト フィールドが SharePoint ユーザー リストの有効な外部キーを保持しているかどうかを確認し、ブール値の結果を返すヘルパ関数です。結果が False の場合に、指定した件名と本文で通知が送信されます。

<pre IsFakePre="true" xmlns="http://www.w3.org/1999/xhtml">

Function Submit_OnChangeValidate Submit_OnChangeValidate = spUserInfoValidate("tp_Author", "申請エラー", "申請に失敗しました。") and spNextReviewerValidate("tp_Reviewer1", "Submission Failure", "承認者が正しく指定されていません。") End Function

Function Approve_OnChangeValidate Approve_OnChangeValidate = spUserInfoValidate("tp_Reviewer1", "承認エラー","承認に失敗しました。") End Function

Function Reject_OnChangeValidate Reject_OnChangeValidate = spUserInfoValidate("tp_Reviewer1", "却下エラー", "却下に失敗しました。") End Function

  1. [ファイル] メニューの [すべてを上書き保存] を選択して、ワークフローを保存します。

セキュリティの確認

これで、SharePoint リストへのセキュリティの追加が完了しました。以下の手順で、作成したリストに移動後、これを確認できます。

  1. あるユーザー (ユーザー A) としてログオンし、[新しいアイテム] を選択し、[保存して閉じる] をクリックすることにより、タイトルに「適用 4」、状態(State)に「下書き」を持つアイテムを作成します。レコードの作成に成功することを確認します。

  2. あるユーザー (ユーザー B) としてログオンし、作成したリストに移動します。[適用 4] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認者 1] に変更し、[承認者 1] をユーザー A に変更後、[保存して閉じる] をクリックして保存します。レコードの更新に失敗し、ユーザー B が申請に失敗したことを示す通知を受信することを確認します。

  3. ユーザー A としてログオンし、作成したリストに移動します。[適用 4] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認者 1] に変更し、[承認者 1] をユーザー B に変更後、[保存して閉じる] をクリックして保存します。レコードの更新に成功し、ユーザー B が申請に成功したことを示す通知を受信することを確認します。

  4. ユーザー A としてログオンし、作成したリストに移動します。[適用 4] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認済み] に変更し、[保存して閉じる] をクリックして保存します。レコードの更新に失敗し、ユーザー A が承認に失敗したことを示す通知を受信することを確認します。

  5. ユーザー B としてログオンし、作成したリストに移動します。[適用 4] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認済み] に変更し、[保存して閉じる] をクリックして保存します。レコードの更新に成功し、ユーザー A が承認に成功したことを示す通知を受信することを確認します。

イメージを使用してワークフローを強化する

ワークフローの承認でビジュアルな表現 (たとえば、署名や承認印) が好まれる場合があります。この資料では SharePoint リストにこのような機能を追加する 1 つのアプローチを説明します。

イメージ レジストリの作成

ここでのイメージ レジストリの定義は、ユーザーが共通に使用できるイメージのリストのことです。イメージ リストは SharePoint リストとして簡単に作成できます。

  1. SharePoint チーム Web サイトに移動します。

  2. ページの上部にある [リスト] を選択して、[リスト] ページに移動します。

  3. [新しいリスト] を選択して、[作成] ページに移動します。

  4. [カスタム リスト] を選択して、[新しいリスト] ページに移動します。

    • [名前] フィールドに「Image Registry」と入力します。

    • [説明] フィールドに「イメージのリスト」と入力します。

    • [はい] を選択して、[クイック起動] バーにこのリストを表示します。

  5. [作成] を選択し、[Image Registry] ページに移動します。

  6. [設定と列の変更] を選択し、[カスタマイズ] ページに移動します。

  7. [カスタマイズ] ページの [列] セクションで [新しい列の追加] を選択し、 [列の追加] ページに移動します。

    • [列名] フィールドに「Image」と入力します。

    • 情報の種類として [ハイパーリンクまたは画像] を選択します。

    • [URL の形式] ドロップダウン リスト ボックスから [画像] を選択します。

    • [OK] をクリックして、[カスタマイズ] ページに戻ります。

  8. ["Image Registry" に戻る] を選択して、[Image Registry] ページに戻ります。

これで、Image Registry が作成されたので、以下の手順で使用するイメージを追加します。

  1. SharePoint チーム Web サイトに移動します。

  2. ページの上部にある [リスト] を選択して、[リスト] ページに移動します。

  3. [Image Registry] を選択して、以前に作成したリストに移動します。

  4. [新しいアイテム] を選択して、[新しいアイテム] ページに移動します。

    • [タイトル] フィールドにイメージのタイトルを入力します。

    • [Image] フィールドにイメージの URL を入力します。

    • [保存して閉じる] をクリックして、[Image Registry] ページに戻ります。

  5. すべてのイメージに対して手順 4 を繰り返します。ユーザーはこのイメージ リストから承認をどのようにビジュアル化するかを選択できます。署名や承認印をスキャンしたイメージを追加できます。

注意 イメージをイメージ レジストリに追加するためには、イメージを HTTP アクセス可能な場所に配置しておく必要があります。

イメージ レジストリと関連して機能するフィールドの作成

以下の手順には 2 つの目的があります。1 つは、ユーザーがイメージ レジストリからイメージを選択するフィールド (ドロップダウン リスト ボックス) を作成することです。もう 1 つは、ユーザーがイメージを参照できるフィールドを作成し、イメージを選択しているフィールドが変更されるときに必ずイメージを表示しているフィールドを更新するコードをワークフローに追加することです。

フィールドの追加

  1. SharePoint チーム Web サイトに移動します。

  2. ページの上部にある [リスト] を選択して、[リスト] ページに移動します。

  3. [WFL] を選択し、以前に作成したリストに移動します。

  4. [設定と列の変更] を選択し、[カスタマイズ] ページに移動します。

  5. [カスタマイズ] ページの [列] セクションで [新しい列の追加] を選択し、 [列の追加] ページに移動します。

    • [列名] フィールドに「Select1」と入力します。

    • 情報の種類として [参照] を選択します。

    • [情報の取得先] ドロップダウン リスト ボックスから [Image Registry] を選択します。

    • [標準のビューの追加] を選択します。

    • [OK] をクリックして、[カスタマイズ] ページに戻ります。

  6. [カスタマイズ] ページの [列] セクションで [新しい列の追加] を選択し、 [列の追加] ページに移動します。

    • [列名] フィールドに「Image1」と入力します。

    • 情報の種類として [ハイパーリンクまたは画像] を選択します。

    • ドロップダウン リスト ボックスから URL 形式の [画像] を選択します。

    • [OK] をクリックして、[カスタマイズ] ページに戻ります。

  7. ["WFL" に戻る] を選択して、[WFL] ページに戻ります。

ワークフローへのコードの追加

  1. [スタート] メニューから [プログラム]、[Microsoft Office XP Developer] の順にポイントし、[Microsoft Development Environment] を選択します。

  2. [ファイル] メニューの [最近使用したプロジェクト] を選択し、[SharePoint] ソリューションを開きます。

  3. ソリューション エクスプローラで [ows_Project1_u_WFLWorkflow] をダブルクリックしてワークフロー プロセスを開きます。

  4. デザイン画面を右クリックし、[コードの表示] を選択します。

  5. 選択フィールドに基づいてイメージを表示するためにフィールドを更新するプロシージャを追加します。

    Sub ProgrammaticUpdate
    modPropSet "tp_Image1", spTableLookup("ows_Project1_u_ImageRegistry", "[tp_ID] = " & modProp("tp_Select1"), "tp_Image")
    modPropUpdate
    End Sub
    

  6. このプロシージャはアイテムが承認または却下されたときに呼び出される必要があるので、状態遷移イベント ハンドラも変更する必要があります。

    Sub Approve_OnChange
    ProgrammaticUpdate
    spSendUserInfoMail "tp_Author", "承認", "あなたの申請は承認されました。"
    End Sub

Sub Reject_OnChange ProgrammaticUpdate spSendUserInfoMail "tp_Author", "却下", "あなたの申請は却下されました。" End Sub

  1. [ファイル] メニューの [すべてを上書き保存] を選択して、ワークフローを保存します。

イメージ統合の確認

これで、SharePoint リストへのイメージの統合が完了しました。以下の手順を使ってこれを確認します。

  1. [新しいアイテム] を選択し、[保存して閉じる] をクリックすることにより、タイトルに「適用 5」、状態(State)に「下書き」を持つアイテムを作成します。レコードの作成に成功することを確認します。

  2. [適用 5] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認者 1] に変更し、[承認者 1] を自分自身に変更後、[保存して閉じる] をクリックして保存します。レコードが正しく更新されることを確認します。

  3. [適用 5] を選択して、リスト アイテムを開きます。[アイテムの編集] を選択して、リスト アイテムを編集可能にし、状態(State)を [承認済み] に変更し、Select1 をあるイメージに変更後、[保存して閉じる] をクリックして保存します。レコードが正しく更新され、選択したイメージがリストに表示されることを確認します。