(57)【要約】  ワークフローインスタンスとワークフローホストの間のメッセージングをモデル化するためのデータバインドワークフローアクティビティを提供する。ワークフロー作成者は、基礎となるメッセージング技術の詳細を指定せずに、データソースをワークフロー内の各データバインドアクティビティに関連付ける。ワークフローインスタンス内のデータバインドアクティビティは、データを交換するために、ワークフローホスト内のデータソースサービスと通信する。
2008544400.tif 000002
【特許請求の範囲】
【請求項１】
ワークフローホストと実行中ワークフローインスタンスの間でプロトコルを意識しないメッセージングを実施する方法であって、
ワークフローとワークフローホストの間のメッセージング操作をモデル化するための事前定義されたワークフローデータアクティビティの選択物をユーザから受信するステップと、
データソース定義を指定するステップであって、前記指定されたデータソース定義は前記ワークフローの実行中インスタンスと前記ワークフローホストの間で通信されるメッセージデータを格納するためのデータオブジェクトを定義し、前記ワークフローホストは前記ワークフローインスタンスをインスタンス化する、ステップと、
前記選択されたデータアクティビティを前記指定されたデータソース定義にバインドするステップと、
前記ワークフローと前記ワークフローホストの間のメッセージングを実施するための前記ワークフロー内の複数のアクティビティのうちの１つとして前記バインドされたデータアクティビティを参照するステップと
を含むことを特徴とする方法。
【請求項２】
前記データソース定義指定ステップは、前記データソース定義に対応する識別子を前記ユーザから受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記事前定義されたワークフローデータアクティビティの前記選択物を受信するステップは、アプリケーションプログラミングインターフェースを介して前記選択物を受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ワークフローインスタンスの実行中に、
前記指定されたデータソース定義ごとに前記データオブジェクトを生成するステップと、
前記ワークフローホストに前記生成されたデータオブジェクトを送信するステップであって、前記ワークフローホストは前記データオブジェクトに前記メッセージデータを取り込むステップと、
前記取込み済みデータオブジェクトを前記ワークフローホストから受信するステップと、
前記受信された取込み済みデータオブジェクト内の前記メッセージデータを処理するステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記メッセージデータはデータ要求に対応し、前記データオブジェクトに前記要求されたデータを取り込み、前記取込み済みデータオブジェクトを前記ワークフローホストに送信するステップをさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記事前定義されたデータアクティビティはメッセージングプロトコルを意識しないことを特徴とする請求項１に記載の方法。
【請求項７】
１つまたは複数のコンピュータ読取り可能媒体は、請求項１に記載の方法を実施するためのコンピュータ実行可能命令を有することを特徴とする請求項１に記載の方法。
【請求項８】
ワークフロー環境内のプロトコルを意識しないメッセージングのためのコンピュータ実施システムであって、
実行のためのワークフローインスタンスを作成するためにワークフローをインスタンス化するためのワークフローホストと、
それぞれが前記ワークフローインスタンスと前記ワークフローホストの間のメッセージング操作をモデル化し、それぞれがメッセージデータ格納のために前記ワークフローインスタンスの実行中にデータオブジェクトを生成する、前記ワークフローで使用するための事前定義された１つまたは複数のデータアクティビティであって、前記データオブジェクトは前記ワークフローインスタンスから前記ワークフローホストに通信される、事前定義されたデータアクティビティと、
前記データオブジェクトに前記メッセージデータを取り込み、処理のために前記取込み済みデータオブジェクトを前記ワークフローインスタンスに通信するための前記ワークフローホストに関連するデータソースサービスと
を含むことを特徴とするコンピュータ実施システム。
【請求項９】
前記データオブジェクトに関連するデータ構造体を定義するためのデータソース定義をさらに含むことを特徴とする請求項８に記載のコンピュータ実施システム。
【請求項１０】
前記データオブジェクトを表す前記データ構造体がそれ上に格納されたコンピュータ読取り可能媒体をさらに含み、前記データ構造体は、
前記実行中ワークフローインスタンスと前記ワークフローホストの間の通信するために使用されるプロトコルを識別する値を格納するためのプロトコルタイプフィールドと、
前記メッセージデータを格納するためのペイロードフィールドと、
前記データオブジェクトの前記データソース定義を識別する値を格納するためのソースフィールドとを含むことを特徴とする請求項９に記載のコンピュータ実施システム。
【請求項１１】
前記事前定義されたデータアクティビティは、前記データを前記実行中ワークフローインスタンスから前記ワークフローホストに通信するための更新データアクティビティ、実行中ワークフローインスタンスが前記ワークフローホストに前記データを照会することを可能にするための選択データアクティビティ、前記実行中ワークフローインスタンスが前記ワークフローホストからの前記データの受信を待つことを可能にするためのデータ待機アクティビティ、および前記実行中ワークフローインスタンスが前記ワークフローホストへの照会要求に対応する前記データを受信するのを待つことを可能にするための照会データ待機アクティビティのうちの１つまたは複数を含むことを特徴とする請求項８に記載のコンピュータ実施システム。
【請求項１２】
前記ワークフロー内でプロトコルを意識しないメッセージングを実施する手段をさらに含むことを特徴とする請求項８に記載のコンピュータ実施システム。
【請求項１３】
前記生成されたデータオブジェクトを処理するために前記データソースサービスによってアクセス可能な複数のデータハンドラをさらに含み、前記データソースサービスは、
前記実行中ワークフローインスタンスから前記生成されたデータオブジェクトを受信するステップであって、前記生成されたデータオブジェクトはそれに関連するペイロードを有する、ステップと、
前記受信されたデータオブジェクトを処理するために前記複数のデータハンドラのうちの１つを呼び出すステップと、
データソースからデータを受信するステップと、
公開されたデータオブジェクトを作成するために前記受信されたデータを前記メッセージデータとして前記ペイロードに取り込むステップと、
前記公開されるデータオブジェクトを作成するために前記実行中ワークフローインスタンスに送信するステップとを実施することを特徴とする請求項８に記載のコンピュータ実施システム。
【請求項１４】
ユーザが前記ワークフローを作成することを可能にするアプリケーションプログラミングインターフェースをさらに含むことを特徴とする請求項８に記載のコンピュータ実施システム。
【請求項１５】
ワークフローインスタンスとワークフローホストの間のメッセージングのためのコンピュータ実行可能コンポーネントを有する１つまたは複数のコンピュータ読取り可能媒体であって、前記コンポーネントは、
ワークフローインスタンスとワークフローホストの間のメッセージング操作をモデル化するための事前定義されたワークフローデータアクティビティの選択物をユーザから受信するためのユーザインターフェースコンポーネントと、
データソース定義を指定するためのプロパティコンポーネントであって、前記指定されたデータソース定義は前記ワークフローインスタンスと、前記ワークフローインスタンスをインスタンス化する前記ワークフローホストの間で通信されるメッセージデータを格納するためのデータオブジェクトを定義し、前記プロパティコンポーネントは、前記ユーザインターフェースコンポーネントを介して選択された前記データアクティビティを前記指定されたデータソース定義にバインドし、前記ユーザインターフェースコンポーネントはさらに、前記ワークフローインスタンスと前記ワークフローホストの間のメッセージングを実施するために前記ワークフロー内の複数のアクティビティのうちの１つとして前記バインドされたデータアクティビティを参照する、プロパティコンポーネントと、
前記ワークフローインスタンスの実行中に、前記指定されたデータソース定義ごとに前記データオブジェクトを生成し、
前記データオブジェクトにメッセージデータを取り込む前記ワークフローホストに、前記生成されたデータオブジェクトを送信し、
前記取込み済みデータオブジェクトを前記ワークフローホストから受信し、
前記受信された取込み済みデータオブジェクト内の前記メッセージデータを処理するためのインスタンスコンポーネントと
を含むことを特徴とするコンピュータ読取り可能媒体。
【請求項１６】
前記インスタンスコンポーネントはさらに、前記データオブジェクトにデータを取り込み、フォームの更新のために前記取込み済みデータオブジェクトを前記ワークフローホストに送信することを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１７】
前記データソース定義は、前記メッセージデータのためのスキーマを定義することを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１８】
前記インスタンスコンポーネントはさらに、前記メッセージデータをユーザに表示することを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１９】
前記生成されたデータオブジェクトを前記インスタンスコンポーネントから受信し、前記受信されたデータオブジェクトに前記メッセージデータを取り込み、前記取込み済みデータオブジェクトを前記ワークフローインスタンスに送信するためのホストコンポーネントをさらに含むことを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項２０】
前記データソース定義は、前記ワークフローインスタンスと前記ワークフローホストの間の通信のためのプロトコルを識別することを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データセントリックワークフローに関する。
【背景技術】
【０００２】
ワークフローは、ビジネスプロセスをモデル化するものである。一般的なワークフロー技術を使用して開発されたワークフローアプリケーションは、開発者がデータを２つのアプリケーション間で交換されているメッセージと考えるものと見込んでいる。この一般的な手法によって、ワークフロー開発者は、実行中ワークフローインスタンスと、そのワークフローをインスタンス化したアプリケーション（たとえばワークフローホスト）の間でデータを渡すために従う必要がある通信交換およびプロトコルを定義することを強いられる。しかし、多くのワークフロー開発者は、メッセージング、またはメッセージ交換のモデル化のニュアンスを理解していない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の実施形態は、ワークフローメッセージングをモデル化するための抽象化を提供する。
【課題を解決するための手段】
【０００４】
具体的には、本発明の実施形態は、ワークフローのフレームワーク内に固有のデータ構成体を設けることによってデータセントリックなワークフローアプリケーションの開発を容易にする。この構成体によって、開発者は、メッセージング通信およびプロトコルを見えないようにしながら、ワークフローをワークフローインスタンスとワークフローホストの間のデータ交換としてモデル化することができる。本発明の態様によって、ワークフローは、基礎をなすメッセージング技術を意識しない（ａｇｎｏｓｔｉｃ）ものとなることができる。
【０００５】
この要約は、以下の詳細説明においてさらに述べられる選択された概念について簡略化された形で述べるために提供されている。この要約は、特許請求の範囲中に記載された主題の主な特徴または本質的な特徴を識別するためのものではなく、また特許請求の範囲中に記載された主題の範囲を定める助けとして使用するためのものでもない。
【０００６】
他の特徴は、本明細書の以下で一部明らかになり、また一部指摘されている。
【０００７】
対応する参照符号は、諸図面にわたって対応する部分を示す。
【発明を実施するための最良の形態】
【０００８】
図１は、例示的なワークフローを示している。本発明の実施形態は、ビジネスプロセスなどのプロセスを表すワークフローで動作可能である。ビジネスプロセスは、予測可能かつ反復可能な結果をもたらす順序付けられたタスク、アクティビティなどに依存する。操作手順、制度上の実用的知識、および組織の情報リソースを含めて、ビジネスプロセスは、定義された事業目的を効率的で時宜を得たやり方で満たすように設計されている。効率的な環境では、プロセスの機能コンポーネントは、容易に識別され、常に変化する企業要件に対処するように適応され展開される。ワークフローは、ビジネスプロセス内のタスクの一部と対話するエンドユーザの体験である。タスクは、人または機械によって実施される仕事の単位をそれぞれが表すアクティビティ、コンポーネントなどとしてモデル化される。
【０００９】
ワークフローホストは、ワークフローインスタンスを作成するためにワークフローをインスタンス化する。ワークフローホストとワークフローは、ワークフローインスタンスの実行中にメッセージを交換し、または別のやり方で通信する。一実施形態では、これらの各交換のメッセージングの詳細は、ワークフロー作成中にユーザによってモデル化されなければならない。こうした作成プロセスは、ワークフローインスタンスとワークフローホストの間のあらゆる通信のためのローカルサービスインターフェースを定義すること（たとえば通信プロトコルの指定）、ワークフローホストでこのインターフェースを実装すること、このインターフェースをワークフロー環境内の通信サービスとして登録すること、およびワークフローホストで実装されたインターフェースと通信する厳密に型指定された（ｓｔｒｏｎｇｌｙ  ｔｙｐｅｄ）ワークフローアクティビティを生成することを伴う。一部のワークフローは、インターフェース、メソッド（たとえば、チャネル、ポート）を使用して通信する。
【００１０】
本発明の実施形態は、ワークフローとの型指定されない通信のやり方を提供するために、図５に示されるようにワークフローホストと実行中ワークフローインスタンスの間の通信を抽象化しモデル化する。ワークフローインスタンスとの通信は、知られているチャネルを使用して実施され、データは、ワークフローの特定のインスタンスとの通信の決定的要因である。（たとえばデータバインドされたアクティビティを介した）抽象化によって、開発者または他のユーザがメッセージングの詳細をモデル化することなしにワークフロー環境内の通信をモデル化することが可能となる。ユーザは、通信構成体またはメッセージ概念を知る必要はない。メッセージングの詳細は、オブジェクト通信サービス、またはワークフロー環境内の他の通信層によって自動的に対処される。したがって、抽象化は、基礎となるメッセージング技術を意識しないものである。本発明の態様のデータセントリックな手法は、任意のアプリケーションまたはユーザとのデータ交換を実施する。
【００１１】
具体的には、ワークフローホストは、（たとえばフォームを介して）ユーザから、または（たとえばデータアクセスプロトコルを使用して）外部システムから情報を収集し、処理のために実行中ワークフローインスタンスにデータを渡して戻す。一実施形態では、ユーザからデータを得るためにワークフローホストプログラマによって使用されるフォーム技術の一部は、メッセージング概念をワークフロープログラマから見えないようにする。本発明の態様は、ワークフローホストと実行中ワークフローインスタンスの間で渡されたデータを表すための特定のデータソース定義（たとえばスキーマまたは型定義）に関連するデータオブジェクトを提供する。開発者の混乱を減少させ、ワークフローデータオブジェクトとワークフローホストの間のデータバインディング体験を提供するために、ワークフローインスタンスとワークフローホストによって同じデータオブジェクトが操作されてもよい。一般に、（たとえばワークフローホストによってアクセス可能な）データソースは、データを消費し、またはデータ消費側（たとえばワークフローアクティビティ）にデータを提供するデータオブジェクトためのデータを提供する。一実施例では、ワークフローインスタンスとワークフローホストの間の対話は、フォーム固有のものではない。
【００１２】
図２を参照すると、例示的なフローチャートが、プロトコルを意識しないメッセージングを実施するための本発明の設計時間および実行時間態様の操作を示している。本発明の態様は、データソースに関して外部データをモデル化し、データソースをデータバインドアクティビティに関連付ける。一般に、ワークフロー開発者は、ワークフローアプリケーション内のデータソースを定義し、データソースをデータオブジェクト（たとえばコンテナまたはフォーム）に関連付け、同じデータオブジェクトを介して戻された修正済みのデータを受信する。この修正済みデータがワークフローインスタンスによって受信されると、決定および他のデータバインドが可能となる。
【００１３】
図２に示された方法は、ワークフローホストと実行中ワークフローインスタンスの間のプロトコルを意識しないメッセージングを実施する。一実施形態では、１つまたは複数のコンピュータ読取り可能媒体が、図２に示された方法を実施するためのコンピュータ実行可能命令またはコンポーネントを有する。例示的なコンピュータ実行可能コンポーネントは、ワークフローとワークフローホストの間のメッセージング操作をモデル化するための事前定義されたワークフローデータアクティビティの選択物をユーザから受信するためのユーザインターフェースコンポーネント２０２を含む。一実施形態では、事前定義されたワークフローデータアクティビティの選択物を受信することは、アプリケーションプログラミングインターフェースを介して選択物を受信することを含む。ユーザにとって、事前定義されたデータアクティビティは、メッセージングプロトコルを意識しないものである。
【００１４】
このコンポーネントはさらに、データソース定義を指定し、選択されたデータアクティビティを指定されたデータソース定義にバインドし、そのバインドされたデータアクティビティをワークフローとワークフローホストの間のメッセージングを実施するワークフロー内の複数のアクティビティのうちの１つとして参照するためのプロパティコンポーネント２０４を含む。データソース定義は、ワークフローの実行中インスタンスとワークフローホストの間で通信されるメッセージデータを格納するためのデータオブジェクトを定義する。ワークフローホストは、ワークフローインスタンスをインスタンス化する。データソースの定義の指定は、たとえば、データソース定義に対応する識別子をユーザから受信すること、またはメッセージデータのためのスキーマを定義することを含んでもよい。一実施形態では、ユーザは、データソース定義およびプログラムに関連するデータオブジェクトを定義し、または別のやり方でワークフロー内のデータオブジェクトにアクセスする。
【００１５】
このコンピュータ実行可能コンポーネントはさらに、インスタンスコンポーネント２０６を含み、このインスタンスコンポーネント２０６は、ワークフローインスタンスの実行中に、指定されたデータソース定義ごとにデータオブジェクト生成し、生成されたデータオブジェクトをワークフローホストに送信する。ワークフローホスト内のホストコンポーネント（図５を参照）は、データオブジェクトにメッセージデータを取り込み（ｐｏｐｕｌａｔｅ）、その取込み済みデータオブジェクトをワークフローインスタンス内のインスタンスコンポーネントに送信する。インスタンスコンポーネント２０６は、取込み済みデータオブジェクトをワークフローホストから受信し、受信された取込み済みデータオブジェクト内のメッセージデータを処理する。一実施形態では、メッセージデータは、データの要求に対応する。こうした実施形態では、インスタンスコンポーネント２０６は、データオブジェクトに、要求されたデータを取り込み、（たとえばフォームの更新のために）取込み済みデータオブジェクトをワークフローホストに送信する。
【００１６】
データバインドアクティビティは、ワークフロー作成者およびワークフローホスト開発者がメッセージ交換のためのローカルサービスインターフェースを定義する必要がないように、基礎となるメッセージング機構をカプセル化する。一般に、ローカルサービスインターフェースの任意の実装形態が、ワークフローと、この抽象化を使用するホストとの間でデータを交換するために使用されてもよい。一実施例では、この抽象化を使用したデータ交換を可能にするために、汎用ローカルサービスインターフェースが定義される。
【００１７】
一実施例では、本発明の実施形態は、以下の４つのデータバインドアクティビティ、すなわちＵｐｄａｔｅＤａｔａ、ＳｅｌｅｃｔＤａｔａ、ＷａｉｔＦｏｒＤａｔａおよびＷａｉｔＦｏｒＱｕｅｒｙを提供する。ＵｐｄａｔｅＤａｔａアクティビティは、ワークフローが外部データを更新することを可能にする。ＳｅｌｅｃｔＤａｔａアクティビティは、ワークフローが外部データを求めて照会することを可能にする。ＷａｉｔＦｏｒＤａｔａアクティビティは、外部データについてのワークフロー内の待機点をモデル化する。ＷａｉｔＦｏｒＱｕｅｒｙアクティビティは、データ照会要求に対応するワークフロー内の待機点をモデル化する。一実施形態では、外部データは、ワークフローホストによってアクセス可能なデータベース内に存在することも、フォームから得られたデータであることもある。たとえば、フォームに接続する場合、データはワークフロー内に格納され、ＵｐｄａｔｅＤａｔａアクティビティは、データが修正されたことをフォームに通知する。
【００１８】
以下の表は、これらの各データアクティビティのプロパティについて記述している。コンテキストプロパティ内のアクティブ化プロパティは、データバインドアクティビティＷａｉｔＦｏｒＤａｔａおよびＷａｉｔＦｏｒＱｕｅｒｙのアクティブ化プロパティにマップされる。これらのアクティビティのいずれかが真に設定されたアクティブ化を有する場合、コンテキストプロパティは、値として真を有するアクティブ化プロパティを含む。
【００１９】
【表１】
2008544400.tif 000003
【００２０】
データソースは、外部データスキーマを表す。たとえば、データソースは、フォームおよびワークフローへ／から送信されるデータのためのローカルコンテナであり得る。データソースは、その中に格納されたデータの形式および／または構造を定義する。本発明の一実施形態は、拡張可能マークアップ言語スキーマ定義（ＸＳＤ：ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ  ｓｃｈｅｍａ  ｄｅｆｉｎｉｔｉｏｎ）および共通言語ランタイム（ＣＬＲ：ｃｏｍｍｏｎ  ｌａｎｇｕａｇｅ  ｒｕｎｔｉｍｅ）型ベースのデータソースを提供する。しかし、オブジェクトまたはデータの構造について記述するために使用されるいずれの形式も、データソースを定義するために使用されてもよい。たとえば、データソースを定義するために、インターフェース定義言語（ＩＤＬ：ｉｎｔｅｒｆａｃｅ  ｄｅｆｉｎｉｔｉｏｎ  ｌａｎｇｕａｇｅ）またはウェブサービス記述言語（ＷＳＤＬ：ｗｅｂ  ｓｅｒｖｉｃｅｓ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）が使用されてもよい。以下の表は、データオブジェクトを自動生成するための定義として型（たとえばクラス）定義を使用する例示的な型／オブジェクトデータソースのプロパティについて記述している。
【００２１】
【表２】
2008544400.tif 000004
【００２２】
以下の表は、データオブジェクトを自動生成するためのスキーマ定義としてＸＳＤ定義を使用する例示的なＸＳＤ／ＸＭＬデータソースのプロパティについて記述している。
【００２３】
【表３】
2008544400.tif 000005
【００２４】
次に図３を参照すると、ブロック図が、２つのデータアクティビティを有するシーケンシャルワークフロー３０２を示している。この実施例では、ワークフロー作成者は、ｕｐｄａｔｅＤａｔａ１アクティビティ３０４を介してデータをアップロードし、ｗａｉｔＦｏｒＤａｔａ１アクティビティ３０６を介してワークフローホストからのデータ変更イベント待つためのワークフロー３０２を設計している。ワークフロー開発者が体験することは、データソースを構成すること、およびこれらのデータバインドアクティビティ３０４、３０６を構成することを含む。
【００２５】
データソースは、ユーザインターフェースを介して、またアプリケーションプログラミングインターフェースを介してプログラムによって構成されてもよい。一実施例では、ＯｂｊｅｃｔＤａｔａＳｏｕｒｃｅのインスタンスが作成され、ＤａｔａＣｏｎｔｅｘｔアクティビティのＤａｔａＳｏｕｒｃｅｓコレクションに追加される。次いで、ＯｂｊｅｃｔＤａｔａＳｏｕｒｃｅ（以下の表に示される）のプロパティが構成されてもよい。
【００２６】
【表４】
2008544400.tif 000006
【００２７】
開発者は、２つのデータバインドアクティビティ（たとえばＵｐｄａｔｅＤａｔａおよびＷａｉｔＦｏｒＤａｔａ）をワークフローに追加する。開発者は、ユーザインターフェースを介して、またはアプリケーションプログラミングインターフェースを介してプログラムによって、これらのデータバインドアクティビティのプロパティを構成する。たとえば、図４は、シーケンシャルワークフロー４０２内の各データアクティビティに関連するプロパティおよびプロパティ値を含めて、図３のシーケンシャルワークフロー３０２などのシーケンシャルワークフロー４０２を示している。表５は、図４に示されたＵｐｄａｔｅＤａｔａデータバインドアクティビティのプロパティ４０４を示している。表６は、図４に示されたＷａｉｔＦｏｒＤａｔａデータバインドアクティビティのプロパティ４０６を示している。
【００２８】
【表５】
2008544400.tif 000007
【００２９】
【表６】
2008544400.tif 000008
【００３０】
ワークフローホスト開発者が体験することは、実行中ワークフローインスタンスにイベント（たとえばデータ交換イベント）をサブミットするためにデータソースサービスと共に働くコードを書くことを含む。たとえば、データソースサービスは、ＤａｔａＣｈａｎｇｅｄおよびＤａｔａＱｕｅｒｙイベントを発生させるためのメソッドをワークフローに提供する。ワークフローホスト開発者は、オブジェクト通信サービス（ＯＣＳ：ｏｂｊｅｃｔ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｓｅｒｖｉｃｅ）インターフェースまたは他のローカルサービスインターフェースを実装する必要はない。以下のワークフローホストコードの抜粋は、データソースサービスを利用して、ワークフローにＤａｔａＣｈａｎｇｅｄイベントを出す。
【００３１】
【表７】
2008544400.tif 000009
【００３２】
次に図５を参照すると、ブロック図が、実行中ワークフローインスタンス５０２とワークフローホスト５０４の間の対話を示している。一般に、ワークフローホスト５０４は、フォームまたは外部アプリケーション（図示せず）からイベントを受信し、処理のためにワークフローインスタンス５０２にデータオブジェクト５１０を処理し公開する。ドキュメントシナリオでは、ワークフローホスト５０４は、ワークフローインスタンス５０２からデータオブジェクト５０９のペイロード内のデータオブジェクトの型を取り出し、その型に関連したフォームを識別し、データオブジェクト５０９を拡張可能マークアップ言語（ＸＭＬ）に直列化し、ドキュメントレポジトリ（図示せず）内にＸＭＬを格納する。
【００３３】
図５の実施例では、コンピュータで実施されるシステムが、ワークフロー環境内でプロトコルを意識しないメッセージングを提供している。このシステムは、実行のためのワークフローインスタンスを作成するためにワークフローをインスタンス化するワークフロー５０２ホストを含む。このシステムは、ワークフローで使用するためのフォームデータアクティビティ５０６など、事前定義された１つまたは複数のデータアクティビティをも含む。フォームデータアクティビティ５０６は、「ホストへのデータ送信」アクティビティ５０８と「ホストからのデータ受信」アクティビティ５１１とを含む。事前定義されたデータアクティビティ５０８、５１１はそれぞれ、ワークフローインスタンス５０２とワークフローホスト５０４の間のメッセージング操作をモデル化する。事前定義されたデータアクティビティ５０８は、メッセージデータを格納するためにワークフローインスタンスの実行中にデータオブジェクト５０９を生成する。データオブジェクト５０９は、ワークフローインスタンス５０２からワークフローホスト５０４に通信される。データ構造体を定義するデータソース定義が、データオブジェクト５０９に関連付けられる。このシステムはさらに、データオブジェクト５０９にメッセージデータを取り込み、その取込み済みデータオブジェクトを処理のためにデータオブジェクト５１０としてワークフローインスタンス５０２に通信するための、ワークフローホスト５０４に関連するデータソースサービス５１２を含む。
【００３４】
図５のシステムは、データオブジェクト５０９を表すデータ構造体を格納するコンピュータ読取り可能媒体（図示せず）をも含む。このデータ構造は、プロトコルタイプフィールド５１８と、ペイロードフィールド５２０と、ソースフィールド５２２とを含む。プロトコルタイプフィールド５１８は、実行中ワークフローインスタンス５０２とワークフローホスト５０４の間の通信で使用されるプロトコルを識別する値を格納する。ペイロードフィールド５２０は、メッセージデータを格納する。ソースフィールド５２２は、データオブジェクト５０９のためのデータソース定義を識別する値を格納する。データソース定義は、ワークフローインスタンス５０２とワークフローホスト５０４の間の通信のためのプロトコルを識別する。
【００３５】
ワークフローホスト内のデータソースサービス５１２は、ホスト処理空間内の５１４でヘルパークラスをインスタンス化することによってデータオブジェクト内のメッセージのペイロードをワークフローホスト内のアプリケーションに転送する。ワークフローホスト開発者は、データソースを定義するとき、ワークフロー定義内でこれらのヘルパークラスを構成する。ヘルパークラスインスタンスが作成されまたは呼び出されると、ホスト５０４は、インスタンス化されたヘルパークラス（たとえばデータハンドラ）を介してメッセージのペイロードに対する制御を行う。ホスト５０４によって管理されたいずれのクライアントも、このデータを受信し、その内容を更新することができる。ヘルパークラスは、データオブジェクトを処理するための複数のデータハンドラを含む。ホスト５０４内の通信サービス５１６は、取込み済みのデータオブジェクト５１０をワークフローインスタンス５０２に通信する。
【００３６】
ワークフローホスト５０４によって提供される例示的なデータソースサービス５１２は、以下に示されたメソッドを含む。第１のメソッドは、ワークフローへのＤａｔａＣｈａｎｇｅｄのイベントを生成し、第２のメソッドは、ワークフローへのＤａｔａＱｕｅｒｉｅｄのイベントを生成し、照会結果を受信する。
【００３７】
ｖｏｉｄＲａｉｓｅＤａｔａＣｈａｎｇｅｄ（ＩＤｉｃｔｉｏｎａｒｙ＜ｓｔｒｉｎｇ，ｏｂｊｅｃｔ＞ｃｏｎｔｅｘｔＰｒｏｐｅｒｔｉｅｓ，ｏｂｊｅｃｔ  ｍｓｇ）
ｏｂｊｅｃｔＲａｉｓｅＤａｔａＱｕｅｒｉｅｄ（ＩＤｉｃｔｉｏｎａｒｙ＜ｓｔｒｉｎｇ，ｏｂｊｅｃｔ＞ｃｏｎｔｅｘｔＰｒｏｐｅｒｔｉｅｓ，ｏｂｊｅｃｔ  ｍｓｇ）
引き数「ＩＤｉｃｔｉｏｎａｒｙ＜ｓｔｒｉｎｇ，ｏｂｊｅｃｔ＞ｃｏｎｔｅｘｔＰｒｏｐｅｒｔｉｅｓ」は、ワークフローインスタンス識別子、ワークフロー型、データソースの修飾名、および（たとえばメッセージがアクティブ化メッセージである場合の）アクティブ化値など、コンテキストプロパティを含む。引き数「ｏｂｊｅｃｔ  ｍｅｓｓａｇｅ」は、データオブジェクト５１０、またはワークフローに送信されるメッセージを表す。
【００３８】
一実施形態では、以下の操作が、実行時に、ワークフローインスタンス５０２とワークフローホスト５０４の間のメッセージを介して実施される。アクティブ化イベントが、ワークフロー定義によって受信され、ワークフローインスタンス５０２が作成される。ワークフローインスタンス５０２は、アクティブ化イベントについての情報で初期化される。実行中ワークフローインスタンス５０２内で、アクティビティ５０６など、データバインドアクティビティ（たとえばフォームデータアクティビティまたはデータアクティビティ）が発生する。データバインドアクティビティ５０６コンテナによって含まれたアクティビティ５０８は、データオブジェクト５０９を生成し、ワークフローホスト５０４に送信する。ワークフローホスト５０４に関連するデータソースサービス５１２は、ワークフローインスタンス５０２からデータオブジェクト５０９を受信する。データソースサービス５１２は、受信されたデータオブジェクト５０９を処理するためにワークフローホスト５０４上のデータハンドラを呼び出す。ワークフローインスタンス５０２では、別のアクティビティ５１１（たとえば「ホストからのデータ受信」）が、照会要求またはサブミットイベントがワークフローホスト５０４から受信されるまで待機する。照会要求がワークフローインスタンス５０２内のアクティビティ５１１によって受信される場合、要求は処理され、「ホストへのデータアップロード」アクティビティ（図示せず）を使用して結果がワークフローホスト５０４に送信される。サブミットイベントがワークフローインスタンス５０２内のアクティビティ５１１によって受信される場合、イベントは処理され、アクティビティ５０６は、完了とマーク付けされる。ワークフローインスタンス５０２は、ワークフローアプリケーションが終了するまで、そのデータアクティビティのすべてを処理し続ける。
【００３９】
本発明の実施形態は、図式化されたまたはオブジェクトベースのフォーム技術、ならびに任意の第三者外部アプリケーションについて本明細書で述べられたワークフロー操作をサポートする。
【００４０】
例示的な動作環境
図６は、コンピュータ１３０の形の汎用コンピューティング装置の一例を示している。本発明の一実施形態では、コンピュータ１３０などのコンピュータは、本明細書で示され述べられた他の図面で使用するのに適している。コンピュータ１３０は、１つまたは複数のプロセッサまたは処理装置１３２と、システムメモリ１３４とを有する。示された実施形態では、システムバス１３６は、システムメモリ１３４を含めて様々なシステム構成要素をプロセッサ１３２に結合する。バス１３６は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレイテッドグラフィックポートおよびプロセッサ、または様々なバスアーキテクチャのいずれかを使用したローカルバスを含めて、複数のタイプのバス構造のいずれかの１つまたは複数を表す。限定するためではなく、例を挙げると、こうしたアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ：Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ビデオ電子規格協会（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとして知られる周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００４１】
コンピュータ１３０は一般に、少なくとも何らかの形のコンピュータ読取り可能媒体を有する。揮発性と不揮発性媒体、取外し可能と取外し不可能媒体の両方を含むコンピュータ読取り可能媒体は、コンピュータ１３０によってアクセス可能な任意の使用可能媒体であり得る。限定するためではなく、例を挙げると、コンピュータ読取り可能媒体は、コンピュータ記憶媒体と通信媒体とを含む。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装された揮発性と不揮発性、取外し可能と取外し不可能媒体を含む。たとえば、コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、またコンピュータ１３０によってアクセス可能な他の任意の媒体が含まれる。通信媒体は一般に、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータを搬送波や他の移送機構などの変調されたデータ信号として実施し、また任意の情報送達媒体を含む。当業者は、信号内の情報を符号化するなどのやり方でその特性の１つまたは複数が設定されまたは変更された、変調されたデータ信号についてよく知っている。有線ネットワークや直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線などの無線媒体、および他の無線媒体は、通信媒体の例である。上記内容のいずれかの組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれる。
【００４２】
システムメモリ１３４は、取外し可能および／または取外し不可能、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。示された実施形態では、システムメモリ１３４は、読出し専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１３８とランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１４０とを含む。起動時などにコンピュータ１３０内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１４２は一般に、ＲＯＭ１３８に格納される。ＲＡＭ  １４０は一般に、処理装置１３２によって即時にアクセス可能であり、かつ／またはそれによる操作を現在受けているデータおよび／またはプログラムモジュールを含む。限定するためではなく、例示するために、図６に、オペレーティングシステム１４４、アプリケーションプログラム１４６、他のプログラムモジュール１４８およびプログラムデータ１５０を示す。
【００４３】
コンピュータ１３０は、他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶装置媒体を含むこともできる。たとえば、図６は、取出し不可能な不揮発性の磁気媒体から読み出し、またはそこに書き込むハードディスクドライブ１５４を示している。図６は、取外し可能な不揮発性の磁気ディスク１５８から読み出しまたはそこに書き込む磁気ディスクドライブ１５６、およびＣＤ−ＲＯＭや他の光媒体などの取外し可能な不揮発性の光ディスク１６２から読み出しまたはそこに書き込む光ディスクドライブ１６０をも示している。例示的な動作環境内で使用してもよい他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶媒体には、それだけに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ１５４、磁気ディスクドライブ１５６および光ディスクドライブ１６０は一般に、インターフェース１６６などの不揮発性メモリインターフェースによってシステムバス１３６に接続される。
【００４４】
上記で論じられ、図６に示されたドライブまたは他の大容量記憶装置、およびその関連のコンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、およびコンピュータ１３０のための他のデータの記憶域を提供する。図６で、たとえばハードディスクドライブ１５４は、オペレーティングシステム１７０、アプリケーションプログラム１７２、他のプログラムモジュール１７４およびプログラムデータ１７６を格納するものとして示されている。これらの構成要素は、オペレーティングシステム１４４、アプリケーションプログラム１４６、他のプログラムモジュール１４８およびプログラムデータ１５０と同じでも、それとは異なっていてもよいことに留意されたい。少なくともそれらがそれぞれ異なるコピーであることを示すために、オペレーティングシステム１７０、アプリケーションプログラム１７２、他のプログラムモジュール１７４およびプログラムデータ１７６には、それぞれ異なる番号がここでは付与されている。
【００４５】
ユーザは、キーボード１８０およびポインティングデバイス１８２（たとえばマウス、トラックボール、ペンまたはタッチパッド）などの入力装置またはユーザインターフェース選択装置を用いてコンピュータ１３０内にコマンドおよび情報を入力してもよい。他の入力装置（図示せず）には、マイク、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナなどが含まれ得る。これらおよび他の入力装置は、システムバス１３６に結合されたユーザ入力インターフェース１８４を介して処理装置１３２に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ：ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）などの他のインターフェースおよびバス構造によって接続されてもよい。モニタ１８８または他のタイプの表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１３６に接続される。モニタ１８８に加えて、コンピュータはしばしば、出力周辺インターフェース（図示せず）を介して接続してもよいプリンタおよびスピーカなど、他の周辺出力装置（図示せず）を含む。
【００４６】
コンピュータ１３０は、リモートコンピュータ１９４など、１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境内で動作してもよい。リモートコンピュータ１９４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、コンピュータ１３０に関して上記で述べた要素の多くまたはすべてを一般に含む。図６に示された論理接続は、ローカルエリアネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）１９６と広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）１９８とを含むが、さらに他のネットワークを含むこともできる。ＬＡＮ  １３６および／またはＷＡＮ  １３８は、有線ネットワーク、無線ネットワーク、その組合せなどであってもよい。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびグローバルコンピュータネットワーク（たとえばインターネット）では一般的である。
【００４７】
ローカルエリアネットワーキング環境内で使用される場合は、コンピュータ１３０は、ネットワークインターフェースまたはアダプタ１８６を介してＬＡＮ  １９６に接続される。広域ネットワーキング環境内で使用される場合は、コンピュータ１３０は一般に、モデム１７８、またはインターネットなどのＷＡＮ  １９８を介して通信を確立する他の手段を含む。内部にあることも、外部にあることもあるモデム１７８は、ユーザ入力インターフェース１８４または他の適切な機構を介してシステムバス１３６に接続される。ネットワーク化された環境では、コンピュータ１３０に関して示したプログラムモジュール、またはその一部は、リモートメモリ記憶装置（図示せず）内に格納してもよい。限定のためではなく、例示するために、図６は、メモリ装置内に常駐するリモートアプリケーションプログラム１９２を示している。示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよい。
【００４８】
一般に、コンピュータ１３０のデータプロセッサは、コンピュータの様々なコンピュータ読取り可能媒体内にそれぞれ異なるときに格納された命令を用いてプログラムされる。プログラムおよびオペレーティングシステムは一般に、たとえばフロッピー（登録商標）ディスクまたはＣＤ−ＲＯＭ上に分散される。それらは、そこからコンピュータの２次メモリにインストールされロードされる。実行時、それらは、コンピュータの１次電子メモリに少なくとも部分的にロードされる。本明細書で述べられた本発明の態様は、こうした媒体がマイクロプロセッサまたは他のデータプロセッサと共に後述の諸ステップを実行するための命令またはプログラムを含む場合、これらのおよび他の様々なタイプのコンピュータ読取り可能記憶媒体を含む。本発明の実施形態は、本明細書で述べられた諸方法および技術に従ってプログラムされる場合、コンピュータ自体をも含む。
【００４９】
例示するために、オペレーティングシステムなど、プログラムおよび他の実行可能プログラムコンポーネントは、個別のブロックとしてここでは示されている。しかし、こうしたプログラムおよび構成要素は、様々なときにコンピュータの異なる記憶コンポーネント内に常駐し、コンピュータのデータプロセッサによって実行されることが認識されよう。
【００５０】
コンピュータ１３０を含めて例示的なコンピューティングシステム環境に関連して述べられているが、本発明の態様は、他の複数の汎用または特別目的のコンピューティングシステム環境または構成で動作可能である。このコンピューティングシステム環境は、本発明の態様の使用または機能の範囲に関する限定について示唆するものではない。さらに、このコンピューティングシステム環境は、例示的な動作環境内に示された構成要素のいずれか１つまたは組合せに関する依存関係または要件を有するものと解釈すべきでない。本発明の態様で使用するのに適し得るよく知られているコンピューティングシステム、環境および／または構成の例には、それだけに限らないが、パーソナルコンピュータ、サーバコンピュータ、携帯型またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、携帯電話、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれる。
【００５１】
本発明の実施形態について、１つまたは複数のコンピュータまたは他の装置によって実行されるプログラムモジュールなど、コンピュータ実行可能命令の一般的な文脈で述べることができる。一般にプログラムモジュールには、それだけに限らないが、ルーチン、プログラム、オブジェクト、コンポーネント、および特定のタスクを実施しまたは特定の抽象データ型を実装するデータ構造体が含まれる。本発明の実施形態は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実施される分散コンピューティング環境内で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含めて、ローカルとリモートの両方のコンピュータ記憶媒体内に位置してもよい。
【００５２】
インターフェースは、ソフトウェアアーキテクチャの文脈では、ソフトウェアモジュール、コンポーネント、コード部分または他のコンピュータ実行可能命令シーケンスを含む。インターフェースは、たとえば、第１のモジュールの代理でコンピューティングタスクを実施するために第２のモジュールにアクセスする第１のモジュールを含む。一実施例では、第１および第２のモジュールは、たとえばオペレーティングシステムによって提供されるアプリケーションプログラミングインターフェース（ＡＰＩ：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅｓ）、（たとえばピアツーピアアプリケーション通信用の）コンポーネントオブジェクトモデル（ＣＯＭ：ｃｏｍｐｏｎｅｎｔ  ｏｂｊｅｃｔ  ｍｏｄｅｌ）インターフェース、および（たとえばウェブサービス間の通信用の）拡張可能マークアップ言語メタデータ交換形式（ＸＭＩ：ｍｅｔａｄａｔａ  ｉｎｔｅｒｃｈａｎｇｅ  ｆｏｒｍａｔ）インターフェースを含む。
【００５３】
インターフェースは、Ｊａｖａ（登録商標）２プラットフォームエンタープライズエディション（Ｊ２ＥＥ：Ｊａｖａ（登録商標）２  Ｐｌａｔｆｏｒｍ  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ）、ＣＯＭまたは分散ＣＯＭ（ＤＣＯＭ：ｄｉｓｔｒｉｂｕｔｅｄ  ＣＯＭ）の実施例における密結合の同期実装であってもよい。あるいはまたはさらに、インターフェースは、（たとえば簡易オブジェクトアクセスプロトコルを使用した）ウェブサービスなどにおける疎結合の非同期実装であってもよい。一般にインターフェースは、以下の特性、すなわち密結合、疎結合、同期および非同期のいずれかの組合せを含む。さらに、インターフェースは、標準のプロトコル、独自仕様の（ｐｒｏｐｒｉｅｔａｒｙ）プロトコル、または標準と独自仕様プロトコルの任意の組合せに準拠してもよい。
【００５４】
本明細書で述べられたインターフェースはすべて、単一のインターフェースの一部とすることができ、あるいは別個のインターフェースまたはその任意の組合せとして実装してもよい。インターフェースは、機能を提供するためにローカルに実行しても、リモートに実行してもよい。さらに、インターフェースは、追加の機能を含むことも、本明細書で示されまたは述べられたものより少ない機能を含むこともある。
【００５５】
動作においてコンピュータ１３０は、本発明の態様を実施するために、図面に示されたものなどのコンピュータ実行可能命令を実行する。ハードウェア、ソフトウェア、ファームウェア、コンピュータ実行可能コンポーネント、および／またはコンピュータ実行可能命令は、ワークフロー内でプロトコルを意識しないメッセージングを実施する手段を構成するものである。
【００５６】
以下の実施例は、本発明の実施形態をさらに示している。あるシナリオでは、開発者は、ユーザが何らかのフォーム技術（たとえばウェブフォーム）を使用して情報を入力すること求めるワークフローアプリケーションの開発に関心を持っている。フォームについては、上記で定義されており、それ自体のスキーマ定義を有する。開発者は、ワークフローアプリケーションの内部のステップとしてフォームの対話およびデータ要素をモデル化することを望む。フォームとワークフローの対話は、フォームを書き換える必要なしに行われると予想される。これを達成するために、開発者は、フォームデータアクティビティと呼ばれるワークフローステップまたはビルディングブロックを使用し、それをワークフロー定義に追加する。開発者は、フォームスキーマ定義を指すためにこのオブジェクトに関連するデータソースを構成する（たとえばスキーマ定義はＸＭＬスキーマとして表され得る）。この関連付けによってマッピング型が自動生成され、このマッピング型から、オブジェクトインスタンスがワークフローの実行中にワークフロー内部で作成される。このオブジェクトインスタンスは、開発者によって、それぞれフォームにデータを送信し、またそこからデータを取り出すために操作される。実行時に、このオブジェクトインスタンスは、ワークフローホストによって直列化され、非直列化され、情報がフォームに入れられ、またそこから取り出される。これは、フォームの修正を伴わずに行われる。
【００５７】
別のシナリオでは、開発者は、実行する外部レガシーシステムからのデータに依存するワークフローアプリケーションの開発に関心を持っている。この実施例では、外部システムは、そのデータにアクセスするためのデータベースインターフェースだけを提供し、ウェブサービスインターフェースは有さない。開発者は、ワークフローと外部のレガシーシステムの間のデータ交換をモデル化することを望む。ワークフローステップは、レガシーシステムにデータを求めるワークフローステップが実行されるごとに、情報がレガシーシステムによって更新されるのを待つ。これを達成するために、開発者は、データアクティビティと呼ばれるワークフローステップまたはビルディングブロックを使用し、それをワークフロー定義に追加する。開発者は、オブジェクトデータソースを指すために、このオブジェクトに関連したデータソースを構成する。この構成ステップの間、開発者は、外部システムとワークフローインスタンスの間でデータを交換するための型ライブラリおよび型（たとえばクラス）を定義する。この関連付けによって、ワークフローインスタンスの実行中にワークフロー定義内の選択された型のオブジェクトインスタンスを作成する。このオブジェクトインスタンスは、開発者によって、それぞれデータをレガシーシステムに送信し、またそこから取り出すために操作される。実行時に、このオブジェクトは、ワークフローホストによって提供された変換コードを介して、外部システムに渡され、それによって照会される。この実施例では、ワークフローホストは、新しい型を取り入れずに外部レガシーシステムとワークフローインスタンスの間のデータ交換を容易にする。
【００５８】
ワークフローがドキュメントレビュープロセスをモデル化する一実施例では、ドキュメントをレビューするためのインターフェース（たとえばＩＤｏｃｕｍｅｎｔＲｅｖｉｅｗＩｎｔｅｒｆａｃｅ）が、以下に示される。
【００５９】
【表８】
2008544400.tif 000010
【００６０】
この実施例では、オブジェクト「ｏ」は、以下に示すような引き数のフラットリストを捕捉する型のインスタンスに対応する。
【００６１】
【表９】
2008544400.tif 000011
【００６２】
ＤｏｃｕｍｅｎｔＲｅｖｉｅｗＩｎｆｏ型は、通信されているデータの形状／スキーマについて記述する。この型は、ワークフロー作成者によって作成され、ワークフローホスト開発者は、この実施例では何も実装する必要はない。
【００６３】
本発明の態様は、標準インターフェースとの通信やり方を知っているデータバインドアクティビティを標準ローカルサービスインターフェースに備えることによって、メッセージング機構がワークフロー作成者から見えないようにする。ワークフロー作成者は、交換されているデータのスキーマを記述する（たとえばローカルサービスインターフェースのメソッドの引き数のフラットリストを、本明細書で述べられたＤｏｃｕｍｅｎｔＲｅｖｉｅｗＩｎｆｏクラスなどのクラス定義に変換する）。一実施例では、標準ローカルサービスインターフェースは、ＩＤａｔａＳｏｕｒｃｅＳｅｒｖｉｃｅと呼ばれ、以下に示されている。以下に示されたＩＤａｔａＳｏｕｒｃｅＳｅｒｖｉｃｅは、例示的なものにすぎず、一部の実施形態では、ＩＤａｔａＳｏｕｒｃｅＳｅｒｖｉｃｅは公開されない。逆に、ＤａｔａＳｏｕｒｃｅＳｅｒｖｉｃｅのメソッド、ＲａｉｓｅＤａｔａＣｈａｎｇｅｄおよびＲａｉｓｅＤａｔａＱｕｅｒｉｅｄは公開される。
【００６４】
【表１０】
2008544400.tif 000012
【００６５】
ＤａｔａＳｏｕｒｃｅＳｅｒｖｉｃｅと呼ばれる例示的な実装形態が、以下に示される。
【００６６】
【表１１】
2008544400.tif 000013
【００６７】
本明細書で示され述べられた諸方法の実行または実施順は、特に指定されていない限り、必須ではない。すなわち、諸方法の要素は、特に指定されていない限り、任意の順序で実施してもよく、諸方法は、本明細書で開示されたものより多い要素を含むことも、少ない要素を含むこともある。たとえば、特定の要素を別の要素の前に、それと同時に、またはその後に実行しまたは実施することは、本発明の実施形態の範囲内であることが企図されている。
【００６８】
本発明の実施形態の要素について述べるとき、冠詞「一（ａ、ａｎ）」、「前記（ｔｈｅ、ｓａｉｄ）」は、諸要素のうちの１つまたは複数があることを意味するものである。用語「含む（ｃｏｍｐｒｉｓｉｎｇ、ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｖｉｎｇ）」は、包含的なものであり、リストされた諸要素以外に追加の要素があり得ることを意味する。
【００６９】
本発明の実施形態の範囲から逸脱せずに上記構成、製品および方法に様々な変更を加えることができるように、上記説明に含まれ、添付の図面に示されたすべての事柄は、限定的な意味ではなく、例示的なものと解釈すべきである。
【図面の簡単な説明】
【００７０】
【図１】タスクおよび制御フロー複合アクティビティを含む例示的なワークフローを示す図である。
【図２】本発明の設計時間および実行時間態様の操作を示す例示的なフローチャートである。
【図３】２つのデータアクティビティを有するシーケンシャルワークフローを示すブロック図である。
【図４】図３のシーケンシャルワークフロー、ならびにシーケンシャルワークフロー内の各データアクティビティに関連するプロパティおよびプロパティ値を示すブロック図である。
【図５】実行中ワークフローインスタンスとワークフローホストの間の対話を示すブロック図である。
【図６】本発明の態様が実施されてもよい適切なコンピューティングシステム環境の一例を示すブロック図である。
【図１】
2008544400.tif 000014
【図２】
2008544400.tif 000015
【図３】
2008544400.tif 000016
【図４】
2008544400.tif 000017
【図５】
2008544400.tif 000018
【図６】
2008544400.tif 000019
【国際調査報告】
2008544400.tif 000020