次の方法で共有


Windows SharePoint Services ワークフローの作成

Windows SharePoint Services ワークフローとは何でしょうか。それは基本的に 2 つのものから構成されます。ワークフローがユーザーと対話するために使用するフォームと、ワークフローの動作を定義するロジックです。Windows SharePoint Services ワークフローがどのように作成されるかを理解するには、この両方を知る必要があります。

Windows SharePoint Services ワークフローは Web ブラウザでユーザーと通信するため、フォームの表示は Microsoft ASP.NET に依存しています。それに従って、これらのフォームは ASPX ページとして定義されます。Windows SharePoint Services ワークフローがそのフォームを表示することができるのは、ライフサイクルの 4 つの段階においてです。

  • 関連付け : Windows SharePoint Services 管理者は、ワークフローを特定のドキュメント ライブラリまたはリストに関連付けます。この関連付けから生じるすべてのワークフロー インスタンスに適用するオプションを、管理者が設定できる可能性もあります。ワークフロー作成者がこれを可能にすることを選択する場合、作成者は管理者がこの情報を指定できるようなフォームを提供する必要があります。

  • 初期化 : ワークフローの開始者は、インスタンスの実行を始める際に、オプションを指定できる場合があります。たとえば、前述の承認シナリオの場合、そのオプションにはワークフロー参加者のリストを指定することや、おのおのがそのタスクを完了するべき時間を決めることがあります。ワークフローがこれを可とする場合、作成者は、先の図の手順 3. で示されたように、ワークフローの開始者がこれらのオプションを設定できるフォームを提供する必要があります。

  • タスク完了 : 実行中のワークフロー インスタンスでは、ワークフローの参加者にフォームが表示され、参加者がタスクを完了する必要があります。先の図の手順 6. で示されたように、このフォームは前のシナリオで承認者たちがドキュメントにコメントし、承認か拒否かを示すために使用したものです。

  • 変更 : 上記のシナリオにはありませんでしたが、ワークフローの作成者は、ワークフローの実行中にそれを変更可能なようにすることもできます。たとえば、ワークフローの実行が開始された後に新たな参加者を加えたり、タスク完了の期限を延長することが可能であるようにできます。このオプションが使用される場合、ワークフローはこの時点でフォームを表示し、参加者が何を変更するべきかを指定できるようにする必要があります。

Windows SharePoint Services 上だけで作成されたワークフローは、そのフォームを ASPX ページとして定義します。一方、Office SharePoint Server を使用するワークフローは、InfoPath で作成されたフォームも使用できます。これについては後述します。どちらの場合でもワークフローのロジックは常に一連のアクティビティとして定義されます。これは WF に基づく他のワークフローと同じです。ワークフローのロジックとフォームを特定するために、Microsoft は 2 つのツールを提供しています。それぞれのツールは異なるユーザーを対象としています。ソフトウェア開発者には Visual Studio 2005 にホストされる WF Workflow Designer をお使いいただけます。インフォメーション ワーカー、専門の技術者でない方には、コードを書かずにワークフローを作成できる、Office SharePoint Designer をお使いいただけます。以下の 2 つのセクションでは、それぞれのツールを使用して Windows SharePoint Services のワークフローを作成する方法を説明します。

Visual Studio 2005 および WF Workflow Designer を使用したワークフローの作成

ワークフローは多くの点でフローチャートに似ています。それを考えると、開発者がワークフローの動作を指定できるようなグラフィカル ツールの提供が有効です。WF にとってそのツールは Workflow Designer で、これは Windows Workflow Foundation の Visual Studio 2005 拡張の一部です。開発者は WF Workflow Designer を使用してワークフローのアクティビティと、それが実行されるべき順序を図式的に定義できます。次の画面は、それがどのようなものかを示す単純な例です。

Windows SharePoint Services のワークフロー例

使用可能なアクティビティは、画面左のツールボックスに表示されています。開発者はこれらのアクティビティをデザイン画面にドラッグすれば、ワークフローの手順を定義できます。各アクティビティのプロパティは右下隅の [プロパティ] ウィンドウで設定できます。

WF の Base Activity Library には、既に述べた、一連の基本的なアクティビティが提供されています。Windows SharePoint Services にも、Windows SharePoint Services のワークフロー作成用に特化された一連のアクティビティがあります。以下はそのうち最も重要なものです。

  • OnWorkflowActivated: Windows SharePoint Services のワークフローの標準の開始点です。一例を挙げると、このアクティビティは Windows SharePoint Services の管理者から、ワークフローがドキュメント ライブラリかリストに関連付けられる際の関連付けフォームを通じて情報を受け取ります。ワークフロー開始時の初期化フォームを通じて情報を受け取ることもあります。Windows SharePoint Services のワークフローはすべて、このアクティビティから始める必要があります。

  • CreateTask: タスク リストで特定のユーザーに割り当てられるタスクを作成します。たとえば、前述のシナリオの承認ワークフローは、このアクティビティを使用して、各参加者の使用するタスク リストにタスクを追加します。また、このアクティビティには SendEmailNotification プロパティがあります。true に設定すると、このタスクを作成した人物に自動的に電子メール メッセージを送信します。

  • OnTaskChanged: タスク完了フォームからの情報を受け取ります。前述のシナリオの承認ワークフローで、このアクティビティは、ドキュメントがそれぞれの参加者に承認された際の入力を受け取るために使用されました。

  • CompleteTask: タスクを完了されたものとしてマークします。

  • DeleteTask: タスク リストからタスクを削除します。

  • OnWorkflowModified: 変更フォームからの情報を受け取ります。変更フォームを使用して、ワークフローのこのインスタンスの動作を変更できます。ワークフロー作成者がこのアクティビティのインスタンスはワークフローに含めないことを選択すれば、そのワークフローを実行中に変更することはできません。

  • SendEmail: 指定された人物またはグループに電子メールを送信します。

  • LogToHistoryList: ワークフローの実行に関する情報を履歴リストに書き込みます。このリストの情報は、ユーザーがワークフローの進捗状況を確認し、またワークフローの完了後にその履歴を見るためなどに使用されます。この種のモニタリングを可能にするには、ワークフロー作成者がワークフロー実行時の適切な時点で情報を履歴リストに書き込む必要があります。Windows SharePoint Services はワークフロー進捗管理の独自メカニズムを提供しているため、WF 標準の追跡サービスをサポートしていません。

Windows SharePoint Services の簡単なワークフローの一般的なパターンは、OnWorkflowActivated アクティビティで始まり、CreateTask アクティビティを使用して、ワークフロー参加者にタスクを割り当てるというものです。ユーザーがタスクを完了するまで待つためには、BAL 標準の While アクティビティが使用される場合があります。これがいつ発生したかを確認するために (ユーザーはタスクに複数回の変更を行い、その後タスクを完了して、[タスク完了] チェック ボックスをチェックすることが考えられます)、While の中で OnTaskChanged アクティビティが実行され、ユーザーがフォームに入力したすべての情報を抽出しています。ユーザーがタスクを完了すると、CompleteTask アクティビティが実行され、DeleteTask が続く場合もあります。ワークフローはその後、CreateTask を使用してタスクを割り当て、次の参加者に進み、と続いていきます。そしてもちろん、電子メールの送信、履歴リストへの情報記録、任意のコードを実行する BAL の Code アクティビティに至るまで、さまざまなことが起こり得ます。

Windows SharePoint Services によるすべてのアクティビティは、Windows SharePoint Services 環境内でワークフローを動作させることが目的です。ワークフローが実行するビジネス ロジックは、ワークフローの作成者にすべて任されます。実際、Windows SharePoint Services のワークフローを作成する開発者は、Windows SharePoint Services と WF の提供するアクティビティのみを使うよう求められているわけではなく、自由に自身のカスタム アクティビティを作成し、使用できます。

前述のとおり、Windows Workflow Foundation はシーケンシャル ワークフローとステート マシン ワークフローの双方をサポートしています。WF Workflow Designer を使用して作成された Windows SharePoint Services のワークフローも、いずれかのオプションを使用できます。これを可能にするため、Windows SharePoint Services は、これらのワークフロー スタイルにそれぞれ 1 つずつ、合計 2 つのプロジェクト タイプを Visual Studio 2005 に追加しています。

どのスタイルを選択しようと、開発者はワークフローのロジック以上のものを定義する必要があります。開発者はワークフローが使用するべき ASPX フォームも指定する必要があります。このために、開発者は workflow.xml という名のファイルを使用します。このファイルは、Windows SharePoint Services のワークフローがフォームを表示できる 4 つの各段階で、必要に応じて表示されるべきフォームを開発者が指定するためのテンプレートを提供します。

開発者は Windows SharePoint Services のワークフローとそれが使用する ASPX フォームの間で情報を渡すための作業をする必要があります。Windows SharePoint Services は、Microsoft.Windows.SharePoint.Workflow ネームスペースを提供し、開発者にオブジェクト モデルを公開しています。このネームスペースを使用することによって、Windows SharePoint Services のワークフロー作成者は ASPX フォームからワークフローに、また逆方向に情報を渡すことができます。

Windows SharePoint Services のワークフローとそのフォームが作成されると、開発者はそれを、Windows SharePoint Services 3.0 が機能と呼ぶものにパッケージ化する必要があります。Windows SharePoint Services の管理者はこの機能をインストールする必要があります。それは、ワークフローのアセンブリを対象となるシステムのグローバル アセンブリ キャッシュにインストールすることを含みます。これで新しいワークフローは、ドキュメント ライブラリやリストと関連付けできるワークフロー テンプレートとして管理者に見えるようになります。

ソフトウェア開発者にとって、Visual Studio と WF Workflow Designer を使用して Windows SharePoint Services のワークフローを作成することは、特に複雑ではありません。開発者はこの環境での作業の特性を理解する必要がありますが、作業の多くは開発者が精通しているものです。しかし、Windows SharePoint Services のワークフローを作成したいのは、ソフトウェア開発者ばかりではありません。以下に説明するように、Office SharePoint Designer を使用すれば、プロの開発者ではなくともワークフローを作成することができます。

Office SharePoint Designer 2007 を使用したワークフローの作成

Office SharePoint Designer 2007 は、個別ライセンスの必要な 2007 Office system のコンポーネントです。インフォメーション ワーカーその他が (ワークフローとして実行される) アプリケーション ロジックを Windows SharePoint Services サイトに追加できるようにします。これは疑いなく有益な目的ですが、Office SharePoint Designer はまた別の重要な問題を解決するものでもあります。開発者が Visual Studio を使用して Windows SharePoint Services のワークフローを作成する場合、他のすべてのアプリケーションと同様、ワークフローは Windows SharePoint Services サーバーにインストールされる必要があります。しかし多くの Windows SharePoint Services 管理者は、好き勝手なコードがサーバーに展開されることを許しません。システムを不安定にするリスクが大きすぎると信じているからです。しかし、ドキュメントやリスト アイテムに関連付けられた簡単なビジネス ロジックを作成することができることは非常に有益であり、多くの Windows SharePoint Services ユーザーがそれを必要としています。Office SharePoint Designer は、それほど技術的でない人々にもワークフローを作成できるようにするばかりでなく、ビジネス ロジックを Windows SharePoint Services サーバー上で定義し、展開するための、より安全な方法を提供することによって、この問題を解決します。

Office SharePoint Designer が処理しようとするワークフロー シナリオは、Visual Studio と WF Workflow Designer が処理するものとは多少異なっています。Visual Studio と WF Workflow Designer が複雑なアプリケーションを作成できることは間違いありません。一方、Office SharePoint Designer の目的は、ユーザーが Windows SharePoint Services のサイトにビジネス ロジックを追加できるようにすることです。たとえば、あるサイトにユーザーが変更要求を提出できるリストがあるとします。Office SharePoint Designer を使えば、変更要求が受理、または却下されたとき提出者に自動的に通知されるワークフローを作成できます。同様に、カスタム ワークフローで特定のドキュメント ライブラリに新しいドキュメントが追加されるときは、常に特定のユーザー グループに通知することもできます。この種のカスタム通知の発行は複雑ではありません。ワークフローの作成は簡単です。しかし、管理者はユーザーの書いたコードをインストールしたがらないため、Windows SharePoint Services の以前のバージョンでは複雑な作業でした。

ここに明らかな疑問があります。Office SharePoint Designer を使用して作成されたロジックは、なぜ違う扱いを受けるのでしょうか。いったい何が、Windows SharePoint Services の管理者に、このツールを使って作られたワークフローを、彼らが責任を持つシステムに喜んで展開するようにさせるのでしょうか。その答えは、Office SharePoint Designer を使用して作られたワークフローには、管理者によってコントロールされるリスト上のアクティビティしか使用できないからです。サイト管理者は、開発者が作成したカスタム アクティビティをこのリストに含める選択をすることもできますが、義務ではありません。ワークフローには何ができるのかを正確に定義することによって、Windows SharePoint Services の管理者は、Office SharePoint Designer を使用して作成されたロジックの展開がシステムを不安定にしないことにより確信をもてるようになります。

それが開発者ではなくインフォメーション ワーカーを意図しているため、また単純なシナリオを強調しているために、Office SharePoint Designer は、Visual Studio がホストする WF Workflow Designer とは異なるワークフロー作成モデルを使用しています。グラフィカルなアプローチの代わりに、Office SharePoint Designer は規則ベースのアプローチを使用します。それは多くの人に馴染みのあるツール、Outlook の自動仕分けウィザードに似ています。以下の画面は Office SharePoint Designer のユーザーがワークフローの手順を定義する方法を説明しています。

Windows SharePoint Services のワークフロー オーサリング

各手順に条件とアクションを指定できます。条件は、上の図の条件文に見られるように、その手順でアクションが実行されるべきかどうかを決定します。選択できるアクションには、To Do アイテムの割り当て、電子メールの送信などがあります。これらのアクションは、実際には Windows SharePoint Services のアクティビティによってそれぞれ実行されます。ここで使用されるアクティビティは、Visual Studio と WF Workflow Designer で使用されたものと同じです。たとえば、上の図の [電子メールを送信する] のオプションは SendEmail アクティビティに対応し、[To Do アイテムを割り当てる] は CreateTask アクティビティのやや特化されたバージョンです。このアクションのリストには、開発者の作成したカスタム アクティビティも含めて、このサイトの Windows SharePoint Services の管理者が許可する他のアクティビティを含めることもできます。

ユーザー インターフェイスは Visual Studio と WF Workflow Designer によって使用されるグラフィカルなアプローチとは大きく異なって見えますが、Office SharePoint Designer は標準の WF ワークフローを作成します。実際にできるのは、WF ルール エンジンを使用して表現された条件によるシーケンシャル ワークフローです。ただし、このツールで作成されたワークフローには、いくつかの制限があります。たとえば、Visual Studio と WF Workflow Designer を使用して作成されたものとは違い、実行中に変更できません。また、作成できるのはシーケンシャル ワークフローのみで、ステート マシンのものはサポートされていません。同様に、このツールで作成されたワークフローは、設計時に特定のドキュメント ライブラリやリストに対して作成されることはできません。後からどのライブラリやリスト、コンテンツにも関連付けできるような汎用のワークフロー テンプレートを作成することもできません。これはワークフローの使い方を限定する一方で、ワークフローの展開をよりシンプルにします。事実、ユーザーが Office SharePoint Designer でワークフローの作成を終えると、このツールは自動的にワークフローをターゲット サイトに展開します。このプロセスは、Visual Studio と WF Workflow Designer を使用して作成したワークフローに必要な、複数段階の展開プロセスに比べて大幅に複雑さが軽減されています。

Office SharePoint Designer を使用して作成したワークフローは、カスタマイズされたフォームを表示することもできます。ワークフロー作成者が ASPX ページを作成する必要はなく、ツールによってページが生成されます。作成者は、どのフィールドを含めるかなど、ページの外観について詳細を指定し、残りの作業は Office SharePoint Designer によって処理されます。ただし、Windows SharePoint Services ワークフローのライフ サイクルでフォームが使用される 4 つの段階のうち、Office SharePoint Designer によって作成されたワークフローで使用できるのは、初期化とタスク完了の 2 つだけです。このツールで作成されたワークフローは特定のドキュメント ライブラリかリストに関連付けられている必要があります。関連付け手順は必要なく、関連付けフォームもありません。このワークフローは実行中に変更できないため、変更フォームも不要です。

Office SharePoint Designer は、Windows SharePoint Services のワークフローを作成するため以外にも使用できます。たとえば、Windows SharePoint Services サイトを作成したり、サイトのマスタ ページを編集して、サイトのページの外観を変更できます。ASP.NET のデータ バインド サポートに依存するものである、外部データとの接続にも使用できます。しかし、Windows SharePoint Services サイト上で実行するロジックを作成する必要のあるインフォメーション ワーカーにとって、Office SharePoint Designer の最も重要な要素は、ワークフロー作成のサポートです。

Windows SharePoint Services は、ドキュメント志向のワークフロー作成のために多くの機能を提供しています。しかし最終的に、それは開発、実行用のプラットフォームです。それ自体は、エンド ユーザーが直接使用できるワークフロー機能を提供していません。購入してすぐにそのまま使用できるワークフロー アプリケーションが必要である場合、Windows SharePoint Services は十分ではありません。Windows SharePoint Services だけを使用して作成されたワークフローには、Office クライアント アプリケーションで参加者同志が対話できないなど他の制約もあります。Office SharePoint Server は、これらの制限すべてを克服する方法を提供しています。これについて次に説明します。

このブックをダウンロードする

このトピックは、簡単に読んだり印刷したりできるように、次のダウンロード可能なブックに収められています。

入手できるすべてのブックの一覧については、「Office SharePoint Server 2007 のダウンロード可能なブック」を参照してください。