(57)【要約】  ルーティング持続サービスおよび関連検索コンポーネントを利用することを介して、ワークフロー管理、および複数の持続ストアとのワークフローのやり取りを供給するシステムおよび方法。ルーティング持続サービスは、各ワークフローを対応する持続ストアに経路指定し、および／または割り当て、関連検索コンポーネントは、ワークフローインスタンスと複数の持続サービスとの間のキャッシング関連を管理する。したがって本発明は、一般的な抽象ワークフロープロバイダについての複数の具体的な実装を並行使用するための拡張可能および／または接続可能なメカニズムを促進する。
2009522639.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装されるシステムであって、
各ワークフローインスタンスを対応する持続サービス実装に経路指定するルーティング持続サービス（１４０）を有するワークフローシステム（１００）と、
複数の持続サービス実装（１４１、１４５）であって、前記対応する持続サービス実装が、前記ルーティング持続サービス（１４０）によってワークフロータイプに割り当てられる複数の持続サービス実装（１４１、１４５）と
であるコンピュータ実行可能コンポーネントを備えることを特徴とするコンピュータ実装されるシステム。
【請求項２】
前記ワークフローシステムは、ワークフローインスタンスと持続サービス実装との間のキャッシング関連を管理する関連検索コンポーネントをさらに備えることを特徴とする請求項１に記載のコンピュータ実装されるシステム。
【請求項３】
前記関連検索コンポーネントは、表形式の配列をさらに備えることを特徴とする請求項２に記載のコンピュータ実装されるシステム。
【請求項４】
前記関連検索コンポーネントは、ワークフロー識別の配列をさらに備えることを特徴とする請求項２に記載のコンピュータ実装されるシステム。
【請求項５】
前記複数の持続サービス実装は、データベース、ＸＭＬ／テキストファイル、およびインメモリストレージの少なくとも１つを備えることを特徴とする請求項１に記載のコンピュータ実装されるシステム。
【請求項６】
ホストアプリケーションと持続ストアとの間のやり取りを提供するワークフロープロバイダクラスをさらに備えることを特徴とする請求項１に記載のコンピュータ実装されるシステム。
【請求項７】
前記ワークフローインスタンスは、前記ルーティング持続サービスによって登録可能であることを特徴とする請求項２に記載のコンピュータ実装されるシステム。
【請求項８】
前記複数の持続サービス実装は異なるアプリケーションに適合することを特徴とする請求項６に記載のコンピュータ実装されるシステム。
【請求項９】
コンピュータ実装される方法であって、
ワークフローシステムに関連付けられる各ワークフローインスタンスを、ルーティングサービスプロバイダを介して、対応する持続サービス実装に割り当てることと、
ワークフローインスタンスを前記対応する持続サービスから取得することと
であるコンピュータ実行可能なアクトを含むことを特徴とするコンピュータ実装される方法。
【請求項１０】
ルーティング登録情報を登録することをさらに含むことを特徴とする請求項９に記載のコンピュータ実装される方法。
【請求項１１】
前記ルーティングサービスプロバイダを確認することをさらに含むことを特徴とする請求項１０に記載のコンピュータ実装される方法。
【請求項１２】
ワークフローインスタンスを作成することをさらに含むことを特徴とする請求項９に記載のコンピュータ実装される方法。
【請求項１３】
前記ワークフローインスタンスと持続サービス実装との間の関連を、識別を介して登録することをさらに含むことを特徴とする請求項１２に記載のコンピュータ実装される方法。
【請求項１４】
ロード方法および保存方法の１つを、前記持続サービス実装から呼び出すことをさらに含むことを特徴とする請求項１３に記載のコンピュータ実装される方法。
【請求項１５】
前記持続サービス実装に関連付けられるデータストアに接続することをさらに含むことを特徴とする請求項１４に記載のコンピュータ実装される方法。
【請求項１６】
ワークフロー状態表示を取得することをさらに含むことを特徴とする請求項１５に記載のコンピュータ実装される方法。
【請求項１７】
前記ワークフロー状態表示をワークフローインスタンスに変換することをさらに含むことを特徴とする請求項１６に記載のコンピュータ実装される方法。
【請求項１８】
前記ワークフローインスタンスをホストに返すことをさらに含むことを特徴とする請求項１７に記載のコンピュータ実装される方法。
【請求項１９】
前記持続サービス実装の保存方法を呼び出すことをさらに含むことを特徴とする請求項１８に記載のコンピュータ実装される方法。
【請求項２０】
コンピュータ実装されるシステムであって、
複数のデータストアについての持続関連機能をワークフローのランタイムに組み込むための手段（１４０）と、
ワークフローインスタンスと複数の持続サービスとの間の関係をキャッシュするための手段（２２０）と
であるコンピュータ実行可能なコンポーネントを備えることを特徴とするコンピュータ実装されるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の並行ワークフロー持続スキームに関する。
【背景技術】
【０００２】
典型的に、今日企業で採用されるすべてのソフトウェアは、ビジネスプロセスをサポートする。そのようなプロセスのいくつかは、アプリケーションの中で通信だけに依拠して完全に自動化されているが、他のものは、人々が、プロセスを開始し、プロセスが使用するドキュメントを承認し、発生するいずれかの例外的な状況を解決することに依拠する。いずれの場合でも、共通しているのは、プロセスに関与する人々およびソフトウェアのアクティビティ（activity）を記述するワークフローとして知られている、個別の一連のステップを特定することである。そのようなワークフローを定義すると、アプリケーションを、ビジネスプロセスをサポートする定義に関して構築することができる。
【０００３】
換言すると、ワークフローは一般に、組織の中の情報および制御のフローである。企業は、効果的に競争するために、そのようなプロセスを定義し、文書化し、合理化しようと絶えず努める。ビジネスの場では、これらのプロセスには、販売および注文の処理、購入業務、在庫の制御および管理、製造および生産管理、出荷および受取、支払勘定などが含まれる。
【０００４】
現在、コンピュータシステムおよび関連ソフトウェアは、企業および他の組織が自己のワークフローを改善することができるツールを提供する。ソフトウェアツールを使用して、企業のワークフローのプロセスまたはスケジュールをモデル化し、非効率性および可能性のある改善を識別することができる。さらに、プロセスが、人々、部門（department）、建物（plant）の間で、または別々の会社の間でも、データの交換を伴う場合、コンピュータシステムおよびネットワークを使用して、そのような交換を実装することができる。そのようなシステムおよびソフトウェアツールはさらに、大規模な計算、および典型的にビジネス関連情報と関連付けられる他のデータまたは情報の処理を実装することができる。
【０００５】
したがって、ワークフロー管理には、組織のビジネスプロセスにおける情報フロー制御の効率的な管理が含まれ、そのような情報処理の自動化は、現代のビジネスの世界に多くの効果的な改善をもたらした。さらに、そのようなワークフロー管理の自動化により、企業および他の組織が、インターネットなどのグローバルコンピュータネットワークを含むコンピュータシステムでワークフロートランザクションを実行することによって、さらに実績（performance）を改善することが現在可能となっている。
【０００６】
典型的なワークフローベースのアプリケーションは、複数の条件が満たされることを必要とすることが多い。例えば、そのような条件の１つは、ビジネスルールに基づいて決定を行う能力である。そのようなルールは、簡単なルール（例えば、信用調査の結果に基づく、はい／いいえの決定など）と、より複雑なルール（例えば、最初の引受決定を行うために評価しなければならない、大きくなる可能性のあるセット（potentially large set））を含むことができる。別の必要条件は、ワークフローの外にある他のソフトウェアおよび他のシステムとの通信である。例えば、最初の要求を、アプリケーションの一部分から受信することができるが、いくつかの局面（例えば、クレジットサービスに連絡すること）では、他のウェブサービスまたは技術を使用する通信を要求することができる。満たされるべきさらなる条件は、ユーザとのワークフローの適切なやり取りである。例えば、ワークフローは典型的に、ユーザインタフェース自体を表示すること、または他のソフトウェアを通じて人間とやり取りすることができなければならない。さらに、ワークフローのライフタイムを通じて状態（state）を維持する能力が、満たされる必要がある他の条件である。したがって、ソフトウェアでワークフローを作成し、実行することは、固有の課題（unique challenge）をもたらす。
【０００７】
例えば、いくつかのビジネスプロセスは、完了するのに何時間、何日間、または何週間もかかる可能性があり、そのような長さの時間の間のワークフローの現在の状態についての情報を維持することを求めている。さらに、そのような種類の長期ワークフロー（long-running workflow）は、典型的にノンブロッキングの方法で別のソフトウェアと通信することも要求され、非同期通信により問題が引き起こされる可能性がある。同時に、ソフトウェア中で固定されたやり取りのモデル化は、比較的容易であるが、消費者は、オンザフライでビジネスプロセスを変更する能力などのさらなる柔軟性を引き続き要求する傾向がある。種々のアプリケーションを取り扱うことはさらに、ワークフローの作成および管理に関係する複雑性を増加させる可能性がある。
【０００８】
ワークフローツールに関する多くのアプリケーションは、企業または組織の内部にある。モデムまたは他のタイプの通信リンクを有するネットワーク化されたコンピュータの出現によって、リモートロケーションでのコンピュータシステムは現在、互いに容易に通信することができる。そのような向上された通信により、コンピュータシステムのワークフローアプリケーションを会社内の離れた施設の間で使用することが可能になる。例としては、適切な販売員による確認のために、本社から、離れた場所の営業所に顧客注文を転送し、確認を本社へ返送することが挙げられる。ワークフローアプリケーションはまた、異なる会社間の企業取引の処理に特に有用である可能性がある。典型的なアプリケーションでは、売り手−買い手の関係を有する２つの会社は、購入注文、製品の出荷、請求、および集金の発生と処理を自動化することを望むことがある。
【０００９】
例えば、顧客関係管理（ＣＲＭ：customer relationship management）などの特定の問題、または金融サービスなどの特定のバーティカルマーケットをターゲットとするアプリケーションを、ワークフローに関して構築することができる。そのような種類のアプリケーションは一般に、多くの異なるビジネスプロセスを実装する。Ｗｉｎｄｏｗｓ（登録商標）  Ｗｏｒｋｆｌｏｗ  Ｆｏｕｎｄａｔｉｏｎなどの一般的なワークフローファンデーションでそれらのプロセスを動かすロジックを構築することにより、アプリケーションを、より速く構築し、より迅速に変更し、より簡単にカスタマイズすることができる。さらに、そのようなプロセスを自動化することにより、他では不可能な著しい効率の向上をもたらすことができる。
【００１０】
しかし、そのようなワークフロー技術の会社間アプリケーションは、複数の会社の協力、ならびに個々の会社の既存のコンピュータシステムおよびアプリケーションの適切なインタフェーシングおよび適切な持続サービス（persistence service）の実装を必要とする。さらに、そのようなワークフローとやり取りするホストアプリケーションは、典型的に同じ持続メカニズムを利用せざるを得ない。そのようなアプローチは、柔軟性を提供するものではなく、したがって異なるアプリケーションが異なるバックエンドとのやり取りを必要とする場合には適当ではない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、従来のシステムおよびデバイスに関連する上述の例示的な欠点を克服することが必要である。
【課題を解決するための手段】
【００１２】
以下は、特許請求される対象のいくつかの態様についての基本的な理解を与えるために、簡略化した要約を提示する。この要約は広範な概要ではない。主要な／重要な要素を識別すること、または特許請求される対象の範囲を線引きすることを意図するものではない。その唯一の目的は、後に提示されるより詳細な説明に対する前置きとして、いくつかの概念を簡略化した形式で提示することである。
【００１３】
本発明は、ルーティング持続サービス（routing persistence service）および関連検索コンポーネント（association lookup component）を利用することを介して、ワークフロー管理、ならびに複数の持続サービス実装／ストアとのワークフローのやり取りを供給するシステムおよび方法を提供する。ルーティング持続サービスは、ワークフロータイプを持続ストアに経路指定（route）し、および／または割り当て、ワークフローの状態に関するデータ（プロパティ値、現在のアクティビティ、実行シーケンス、中断情報、再開時間、メタデータ、タイムスタンプなど）は、持続ストアに保存される。したがって、ルーティング持続サービスは、持続関連機能（persistence related functionality）をワークフローのランタイム（runtime）に組み込み、ワークフローのインスタンスのそれぞれを、対応する持続サービス実装（persistence service implementation）に登録することができる。さらに、そのようなルーティング持続サービスは、関連検索コンポーネントとやり取りして、ワークフローインスタンスと複数の持続サービス実装との間のキャッシング関連（caching association）を管理する。したがって、１つの持続サービスとやり取りするための従来のワークフローランタイムの典型的な制限とは関係なく、本発明により２つ以上の持続サービスが、ワークフローに適合し、および／またはやり取りすることが可能となる。さらに、そのようなシステムは、一般的で抽象的なワークフロープロバイダについての複数の具体的な実装を同時使用するための、拡張可能および／またはプラグ可能なメカニズムを促進することができる。
【００１４】
例えば、ルーティング持続サービスを、最初に登録し、続いてワークフローに関連付けられるホストサービスによって確認する（verify）ことができる。ワークフロープロバイダのタイプに基づいて、所望の持続サービス実装を（例えば、プログラム的に、および／または構成設定を介して）選択することができ、ワークフローを作成することができる。次に、ワークフローは、インメモリ、リレーショナルデータストア、ＸＭＬ／テキストファイルなどの所望の持続サービス実装に関連付けられる識別（identification）を割り当てることができ、異なるタイプのワークフローを異なる持続ストアに割り当てる（および／またはやり取りする）ことができる。
【００１５】
本発明の態様による関連方法では、ホストアプリケーションは、最初にワークフローのエンジンおよび／またはランタイムに関連付けられるルーティング持続サービスを確認することによって、動作中のワークフローにアクセスすることができる。続いて、ワークフローインスタンス識別（例えば、ＩＤ番号など）に基づいて、対応する持続サービスは関連検索コンポーネント（例えば、表形式の配列（tabular arrangement））を介して、ロード方法（load method）を呼び出すこと、および／または保存方法（save method）を呼び出すことができる。次いで、ワークフローインスタンスに（例えば、ホストアプリケーションを介して）アクセスすることが可能である。
【００１６】
ワークフローのインスタンスを保存することに関する本発明のさらなる態様によると、最初に、ワークフローに関連付けられるルーティング持続サービスが確認される。続いてワークフローインスタンスに基づいて、そのようなワークフローインスタンスについてワークフロー状態表示（workflow state representation）が生成される。次いで、そのようなワークフロー状態表示に関連付けられるデータを持続状態（persistence state）に保存することができる。
【００１７】
関連方法では、ワークフローのインスタンスをロードするために、ルーティング持続サービスが最初に確認され、対応する持続ストアへのアクセスが提供される。続いてワークフローインスタンス状態表示を、そのような対応する持続ストアから取得する。次いで、そのような表示は、ワークフローインスタンスに変換され、例えばホストアプリケーションに提供される。
【００１８】
本発明のさらなる態様によると、持続ストアの中のワークフローインスタンスを、関連検索コンポーネントから登録解除することができる。例えば、ワークフローが完了すると、ワークフローインスタンス識別とルーティング持続サービスとの間の関連付け（association）は、（例えば、メモリ内の表の関連付けから）登録が解除される。
【００１９】
複数の持続ストアに適合する／やり取りすることによって、本発明は、異なる種類のアプリケーションが異なるバックエンドと通信するのが可能にするように、ワークフローファンデーションモデルを向上させる。例えば、顧客関係管理（ＣＲＭ）は、顧客データベースとやり取りすることができるが、ワークフローを活用する別のカスタムメイドのアプリケーションは、別の持続サービス実装を利用する。
【００２０】
前述および関連する目的の達成のために、特許請求される対象の特定の例示的な態様を、以下の説明および添付の図面に関連して本明細書で説明する。これらの態様は、本対象を実施することができる様々な方法を示すものであり、それらのすべては、特許請求される対象の範囲内であることが意図される。他の利点および新規の特徴は、添付の図面とともに考慮される場合に、以下の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【００２１】
ここで本発明の様々な態様を、同様の参照番号が同様または類似の要素を指す添付の図面を参照して説明する。しかし、図面およびそれに関連する詳細な説明は、特許請求される対象を、開示される特定の形式に限定することを意図するものではないことを理解されたい。むしろ、その意図は、特許請求される対象の精神および範囲内にあるすべての変更形態、同等の物、および代替形態を包含することである。
【００２２】
本明細書で使用される際、「コンポーネント」、「システム」、「サービス」などの用語は、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータ関連のエンティティを指すことが意図されている。例えば、コンポーネントは、限定ではないが、プロセッサで稼動するプロセス、プロセッサ、オブジェクト、実行可能ファイル（executable）、実行スレッド、プログラム、および／またはコンピュータとすることができる。例として、コンピュータで稼動するアプリケーションとコンピュータの両方とも、コンポーネントとすることができる。１つまたは複数のコンポーネントは、プロセスおよび／または実行スレッド内に存在することができ、コンポーネントを、１つのコンピュータ上に局所化すること、および／または２つまたはそれ以上のコンピュータ間に分散することができる。
【００２３】
「例示的」という語は、本明細書では例、実例または具体例としての役割を果たすことを意味するように使用される。「例示的」であるとして本明細書で説明される任意の態様または設計は、必ずしも他の態様または設計よりも好ましいもの、または有利なものとして解釈されるべきではない。
【００２４】
さらに、ソフトウェア、ファームウェア、ハードウェア、もしくはそれらの任意の組合せを作成して、コンピュータもしくはプロセッサベースのデバイスを制御して、本明細書で詳述される態様を実装するように、開示される対象を、標準的なプログラミングおよび／またはエンジニアリング技術を使用するシステム、方法、装置または生成物として実装することができる。本明細書で使用される場合のコンピュータプログラムという用語は、任意のコンピュータ読み取り可能なデバイス、キャリア、または媒体からアクセス可能なコンピュータプログラムを含むことが意図されている。例えば、コンピュータ読み取り可能な媒体は、磁気ストレージデバイス（例えば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストライプなど）、光ディスク（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）など）、スマートカード、およびフラッシュメモリデバイス（例えば、カード、スティック）を含むことができるが、これらに限定されるものではない。さらに、搬送波を、電子メールの送受信の際に、またはインターネットもしくはローカルエリアネットワーク（ＬＡＮ）などのネットワークにアクセスする際に使用されるようなコンピュータ読み取り可能な電子データを搬送するために用いることができることを認識されたい。当然のことながら、当業者であれば、特許請求される対象の範囲または精神から逸脱することなく、この構成に対して多くの変更を行うことができることは理解されよう。
【００２５】
最初に図１を参照すると、ルーティング持続サービス１４０を利用して、ワークフローの管理、および複数の持続サービス実装／ストア１４１〜１４５（ｎを整数として１からｎまで）とのワークフローのやり取りを可能にする、ワークフローシステム１００のブロック図が図示されている。ワークフローは、アクティビティのマップ（map）として定義される人間またはシステムのプロセスをモデル化することができる。アクティビティとは、ワークフローの中のアクト（act）であり、ワークフローについての実行（execution）、再使用、および構成の単位である。アクティビティのマップは、ルール、アクション、状態、およびそれらの関係を表す。典型的に、ワークフローは、ワークフローエンジン／ランタイム１１０を介して稼動し、ワークフローランタイムは、ホスト１２０によって示されているように、いくつかのルールに従って、ワークフローランタイムをホストするために外部アプリケーションを必要とする。
【００２６】
ホスト１２０は、ワークフロープロバイダベースクラス（Workflow Provider Base Class）１３５を通じて、ワークフロープロバイダ（Workflow Provider）１３０とやり取りする。さらに、ホスト１２０は、１つまたは複数のプロセスの作成、ワークフローの適切な実行のために必要とされる様々なコンポーネント間の呼び出しのマーシャリング（marshaling of call）、および分離メカニズムのセットアップなどの、多くの追加的で重要な態様に関与する可能性がある。さらにホスト１２０は、スケーラビリティの理由でマシン内の複数の中央処理装置（ＣＰＵ）を利用するために、またはマシンのファーム（farm）で多数のワークフローインスタンスを実行するために、複数のプロセスを作成することができる。ホスト１２０はさらに、ワークフローの待ち時間が長くなりそうなときに適用するポリシー（policy）を制御し、特定のイベントを聞いてそれらをユーザまたは管理者に伝え、それぞれのワークフローについてタイムアウトおよび再試行を設定し、パフォーマンスカウンタを公開し、デバッギングおよび診断の目的でログ情報を書き込むことができる。
【００２７】
ワークフローシステム１００に関連付けられるワークフローは、そのために特に確立されたサービスを通じて、外部と通信することができ、そのようなサービスは、ワークフロー内のイベントドリブンのアクティビティがフックする（hook up）こととなるイベントを起こすことができる。同様に、このサービスは、ワークフローについてのパブリックメソッド（public method）を公開して、ホストを呼び出すため、ホストにデータを送信する。ワークフローを、例えばコンピュータシステム内の実行のためのスケジュールの形式で定義することができる。スケジュールには、特定の並列性（concurrency）、依存性（dependency）、およびそれらと関連付けられるトランザクションの属性を有するアクション（action）のセットを含めることができる。それぞれのスケジュールは、スケジュールの定義、スケジュール内の現在の位置、ならびにそのスケジュールと関連付けられるアクティブもしくはライブ（live）のデータおよびオブジェクトを含む、関連スケジュール状態（associated schedule state）を有する。スケジュール内では、トランザクション境界（transaction boundary）はアクションのグループ分け（grouping）に基づいて存在することができる。このことに関して、トランザクションは、個々のアクションもしくはトランザクション、またはそれらのグループを含むことができる。以下でさらに論じられるように、アクションを、シリアル方式で（serial fashion）実行されるシーケンスと、アクションが並行して実行されるタスクとにグループ分けすることができる。したがって、このグループ分けに基づいて、並行性の属性（concurrency attribute）を、スケジュール内のアクションおよびトランザクションで決定する（resolve）ことができる。
【００２８】
典型的に、ワークフローは、実行する間、状態を維持する。そのような状態は、ワークフローの開発者によって定義されるデータおよびプロパティの値と、内部実行状態（internal execution state）との両方を含むことができる。さらに実行状態（execution state）は、実行シーケンス（execution sequence）を伴う現在のアクティビティ、および任意の関連ある中断情報（relevant suspension information）（例えば、遅延による中断が導入された場合に、ワークフローを再開する時間など）を含むことができる。さらに、実行シーケンスと関連付けられるメタデータを、トラックする（例えば、アクティビティ実行のタイムスタンプなど）ことができ、そのような情報を、実行されたワークフローについての後の分析に使用することができる。
【００２９】
典型的にはこの情報のすべてを、いくつかの持続ストア１４１〜１４５に保存しなければならない。本発明のワークフローシステム１００は、ワークフロープロバイダイダ１３０を利用して、基礎をなすストレージと共通のアプリケーションプログラムインタフェース（ＡＰＩ）とのやり取りを抽象化する（abstract）ことができ、ワークフローを、例えば（ワークフロー開発者によって定義される）名前の組合せによって、また固有の識別子（identifier）によって識別することができる。したがって、ワークフロープロバイダは、ワークフローの新たなインスタンスを作成し、識別子を与えられたシリアライズされたインスタンス（serialized instance）をロードし、ワークフローインスタンスを保存し、そして既存のワークフローを列挙することを可能にすることができる。複数のワークフローを有するアプリケーションは、本発明の一態様により、異なるワークフローインスタンスについて異なるプロバイダタイプ／実装を選択することができる。これにより、ワークフローは、例えば異なる持続セマンティクス（persistence semantics）、または異なるデータベースのバックエンドを使用することができる。
【００３０】
図１に図示されるように、ルーティング持続サービス１４０は、ワークフローインスタンスを、複数の持続ストア１４１〜１４５から選択される持続ストアに経路指定し、および／または割り当てる。このように、ワークフローの状態に関するデータ（プロパティ値、現在のアクティビティ、実行シーケンス、中断情報、再開時間、メタデータ、タイムスタンプなど）は、持続ストアに保存される。したがって、ルーティング持続サービス１４０は、持続関連機能をワークフローのランタイムに組み込み、ワークフローインスタンスのそれぞれを対応する持続サービスに登録することができる。さらに、そのようなルーティング持続サービスは、以下で詳細に説明されるように、関連検索コンポーネント（図示せず）とやり取りして、ワークフローインスタンスと複数の持続サービスとの間のキャッシング関連を管理する。したがって、１つの持続サービスとやり取りするための従来のワークフローランタイムの典型的な制限とは関係なく、本発明により、２つ以上の持続サービスが、ワークフローに適合する（および／またはやり取りする）ことが可能となる。
【００３１】
以下は、本発明の特定の態様による例示的なルーティング持続サービスプロバイダを提供する。
【００３２】
【表１】
2009522639.tif 000003
【００３３】
【表２】
2009522639.tif 000004
【００３４】
【表３】
2009522639.tif 000005
【００３５】
ここで図２を参照すると、関連検索コンポーネント２２０とやり取りして、ワークフローインスタンスと複数の持続サービス２３２〜２３４との間のキャッシング関連を管理する、ルーティング持続サービス２１０のブロック図が図示されている。したがって、ワークフローを、インメモリ、関連データストア、ＸＭＬテキストファイルなどの所望の持続ストアに関連付けられるべき識別に割り当てることができ、個々のワークフローを、異なる持続ストアに割り当てる（および／またはやり取りする）ことができる。関連検索コンポーネント２２０は、その検索についてワークフローインスタンスに関連付けられるプロパティ情報（例えば、属性）を受信することができる。検索コンポーネント２２０は、ワークフローインスタンスを持続サービスに対応させる（例えば、表形式の）検索リスト（lookup list）を含むことができる。
【００３６】
検索コンポーネント２２０はさらに、ワークフローインスタンスに関連付けられる情報（例えば、データタイプ（DataType）、データベースおよび／またはオブジェクト）を取得する／利用する。この情報は、例えばワークフローに関連付けられるプロパティを含むことができる。少なくとも部分的に、プロパティ情報とワークフローインスタンスに関連付けられる情報とに基づいて、検索コンポーネントは、構成された検索制御（configured lookup control）（例えば、ＩＤ、ディスプレイ値、およびそれらと関連付けるのに必要なメタデータ）を生成することができる。このように、プロパティ値、現在のアクティビティ、実行シーケンス、中断情報、再開時間、メタデータ、およびタイムスタンプなどは、対応する持続ストア２３０〜２３４に保存される。さらに、持続ストアをワークフローＩＤに基づいて選択することができる。クエリ（query）を、ワークフローストアに実行要求（submit）して、クエリ基準（query criteria）に基づいて合致するワークフローを見つけ出すことができる。
【００３７】
本発明の一態様により、システム２００は、ＩＤと、ワークフローインスタンスおよび持続サービス実装を関連付けるのに必要とされるメタデータの持続性を組み込む。例えば、ワークフローおよびワークフローインスタンスの状態に関するデータは、プロパティ値、現在のアクティビティ、実行シーケンス、中断情報、再開時間、メタデータ、およびタイムスタンプなどを含むことができ、持続ストアに保存される。ワークフロープロバイダのタイプおよびワークフローインスタンスに基づいて、所望の持続サービス実装２３０〜２３４を、（例えば、プログラム的に、および／または構成設定、タグを使用するページ構成などを介して）選択することができ、ワークフローインスタンスは、その中で持続する。複数の持続ストア２３０〜２３４に適合する／やり取りすることによって、ワークフローファンデーションのモデルは、異なるタイプのアプリケーションが異なるバックエンドと通信することを可能にするように向上される。例えば、顧客関係管理（ＣＲＭ）は、顧客データベースとやり取りすることができるが、ワークフローを活用する別のカスタムメイドのアプリケーションは、別の持続サービス実装を利用する。
【００３８】
関連検索コンポーネント２２０は、識別子からワークフローインスタンスまでマッピングを介してトレースすることによって、（例えば、識別子のソースからターゲットのワークフローインスタンスへの）依存性（dependency）を利用することができる。例えば、識別子がワークフローインスタンスに対応するように、階層合致リスト（hierarchy match list）を生成することができる。このように、マッピング定義ツール（mapping definition tool）は、識別子（ソース）からワークフローインスタンス（ターゲット）へのデータ変換を図式的（graphically）に特定することを可能にすることができる。
【００３９】
先に説明されるように、関連検索コンポーネント２２０は、ワークフローインスタンスに関連付けられる識別情報（例えば、データタイプ、データベースおよび／またはオブジェクト）を取得する。この情報は、例えば、ワークフローインスタンスに関連付けられるプロパティを含むことができる。少なくとも部分的に、プロパティ情報とワークフローインスタンスに関連付けられる情報とに基づいて、関連検索コンポーネント２２０は、それぞれの持続サービス実装および／またはデータストアに接続し、ワークフロー状態表示２３０〜２３４を取得することができる。そのようなワークフロー状態表示を、返すために、ワークフローインスタンスに変換することができる。
【００４０】
図３は、本発明の一態様による、ワークフローを作成し、持続サービス実装とともに登録するための例示的なフローチャート３００を図示する。本明細書では、例示的な方法を、様々なイベントおよび／またはアクトについての一連のブロック表示として図示し、説明するが、本発明は、そのようなブロックの図示される順序によって限定されるものではない。例えば、いくつかのアクトまたはイベントは本発明に従って、本明細書で図示される順序とは別に、異なる順序で、および／または他のアクトもしくはイベントと並行して、生じることがある。さらに、本発明による方法を実装するために、図示されるすべてのブロック、イベントまたはアクトが必要とされるわけではない。さらに、本発明による例示的な方法および他の方法を、本明細書で図示され説明される方法と関連して、また図示もしくは説明されていない他のシステムおよび装置と関連して、実装することができることは理解されよう。最初に３１０で、ワークフローシステムに関連付けられるルーティング持続サービス（routing persistence service）を確認する。そのようなルーティング持続サービスは、ワークフローを、複数の持続ストアから選択される１つの持続ストアに経路指定および／または割り当てることができる。したがって、ワークフローの状態に関連するデータ（例えば、プロパティ値、現在のアクティビティ、実行シーケンス、中断情報、再開時間、メタデータ、タイムスタンプなど）は、持続ストアに保存される。したがって、ルーティング持続サービスは、持続関連機能をワークフローのランタイムに組み込み、ワークフローのインスタンスのそれぞれを、対応する持続サービスに登録することができる。３２０で、ワークフロープロバイダのタイプに基づいて、持続サービス実装は、（例えば、プログラム的に、および／または構成設定を通じて）指定および／または取得される。３３０で、ワークフローを作成し、識別に関連付けることができ、そのような識別は３４０で、ワークフローインスタンスと対応する持続サービス実装との間で登録される。
【００４１】
図４は、本発明の一態様にかかる、ワークフローランタイムによるルーティング持続サービスに関する例示的な登録方法４００を図示する。最初に４１０で、ルーティング持続サービスに関連した情報が、例えばウェブ構成を介して、および／またはプログラム的に取得される。そのようなルーティング持続サービスは、その後４２０で、ワークフローシステムに関連してオペレーションを開始し、以下で詳細に説明されるようにワークフローインスタンスを持続サービス実装に登録／登録解除（un-register）するためのマッピングを作成することができる。本発明の態様により、１つの関連について複数の実装が存在し得ることを理解されたい。例えば、複数のワークフローを有するアプリケーションは、本発明の態様によって、ワークフロータイプそれぞれについて異なるプロバイダ実装を選択することができる。これによりワークフローは、異なる持続セマンティクス、または異なるデータベースのバックエンドを使用することが可能になる。ワークフローインスタンスを、データベースまたは同等のストレージにシリアライズすることができ、その後ワークフローの中断の間に、そこからワークフローインスタンスを取り出し、デシリアライズ（deserialize）し、再開することができる。例えば、ワークフローは、多くの理由で中断される可能性がある。すなわち、アクティビティ実行のキャンセル、実行を継続するアクティビティの不能、後の実行を延期するために導入される特定の遅延、および後の実行が異なるユーザによって行われることを必要とするユーザコンテキストの切り替えなどの理由である。同じワークフロー定義（例えば、タイプ／クラス）に由来する２つのワークフローインスタンスは、異なる持続ストアを有するか、または利用することができることを理解されたい。
【００４２】
図５は、本発明の一態様による、ワークフローのランタイムを介してホストアプリケーションにより稼働中のワークフローにアクセスする方法を図示する。ホストアプリケーションは、５１０で、最初にワークフローエンジンおよび／またはランタイムに関連付けられるルーティング持続サービスを確認することによって、稼働中のワークフローにアクセスすることができる。続いて５２０で、ワークフローインスタンス識別（例えば、ＩＤ番号）に基づいて、対応する持続サービスは、関連検索コンポーネント（例えば、表形式の配列）を介して、ロード方法５３０を呼び出す、および／または保存方法５４０を呼び出すことができる。その後ワークフローインスタンスに（例えば、ホストアプリケーションを介して）アクセスすることができる。複数の持続ストアに適合する／やり取りすることによって、本発明は、異なる種類のアプリケーションを可能にするようにワークフローファンデーションを向上させる。
【００４３】
図６は、図５のアクト５３０にかかるワークフローのインスタンスをロードするための関連方法６００を図示する。図６に図示されるように、ルーティング持続サービスは、最初に６１０で確認され、６２０で持続ストアに対するアクセスが提供され、６３０でワークフローインスタンスの状態表示が、対応する持続ストアから取得される。その後そのような表示を、６４０でワークフローインスタンスに変換することができる。次いでワークフローインスタンスを、その操作に関するホストアプリケーションに提供することができる。
【００４４】
同様に、図７は、図５のアクト５４０で図示されるようなワークフローのインスタンスを保存するための方法７００を図示する。最初に、７１０でワークフローに関連付けられるルーティング持続サービスが確認され、保存されるべきワークフローが７２０で取得される。続いて７３０で、ワークフロー状態表示が、ワークフローインスタンスに関して生成される。そのような表示に関連するデータを、その後７４０で、データストアおよび／または持続サービス実装に保存することができる。このようにして７５０で、ワークフローランタイムの保存イベントを起こすことができ、上記で詳しく説明されたように、ワークフローインスタンスにアクセスすることができる。
【００４５】
図８は、持続ストアの中のワークフローインスタンスを関連検索コンポーネントから登録解除する方法８００を図示する。例えば、ワークフローが完了すると、ワークフローインスタンスの識別とルーティング持続サービスとの間の関連は、（例えば、メモリ内の表の関連から）登録解除される。最初に８１０で、ワークフローに関連付けられるルーティング持続サービスが確認される。続いて８２０で、ワークフローが完了したかチェックされる。完了している場合、８３０で、ホストにそのように通知することができる。続いて８４０で、ワークフローインスタンス識別とルーティング持続サービスとの間の関連を、登録解除することができる。
【００４６】
開示される対象の様々な態様に関するコンテキストを提供するために、図９および１０とともに以下の議論は、開示される対象の様々な態様を実装することができる適切な環境についての、簡潔で一般的な説明を提供することが意図される。本対象を、１つのコンピュータおよび／または複数のコンピュータで実行するコンピュータプログラムのコンピュータ実行可能命令の一般的なコンテキストで上述したが、当業者であれば、本発明を、別のプログラムモジュールとの組合せでも実装することができることが理解されよう。一般に、プログラムモジュールには、特定のタスクを実行および／または特定の抽象データタイプを実施するルーティン、プログラム、コンポーネント、およびデータ構造などが含まれる。さらに当業者であれば、本発明の方法を、シングルプロセッサもしくはマルチプロセッサのコンピュータシステム、ミニコンピューティングデバイス、メインフレームコンピュータ、およびパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス（例えば、携帯情報端末（ＰＤＡ）、電話機、時計）、マイクロプロセッサベースもしくはプログラム可能な家庭用電子機器もしくは産業用電子機器などを含む、他のコンピュータシステム構成で実施することができることが理解されよう。図示される態様を、通信ネットワークを通じてリンクされるリモート処理デバイスによってタスクが実行される、分散コンピューティング環境で実施することもできる。しかし、本発明のすべての態様ではなくても一部の態様を、スタンドアローンのコンピュータで実施することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートの両方のメモリストレージデバイスに配置することができる。
【００４７】
図９を参照すると、コンピュータ９１２を含む、本発明の様々な態様を実装するための例示的環境９１０が説明されている。コンピュータ９１２には、処理ユニット９１４、システムメモリ９１６、およびシステムバス９１８が含まれる。システムバス９１８は、限定ではないがシステムメモリ９１６を含むシステムコンポーネントを処理ユニット９１４に結合する。処理ユニット９１４は、様々な利用可能なプロセッサのいずれかとすることができる。デュアルマイクロプロセッサおよび他のマイクロプロセッサのアーキテクチャを、処理ユニット９１４として利用することもできる。
【００４８】
システムバス９１８は、メモリバスもしくはメモリコントローラ、周辺バスもしくは外部バス、および／または様々な利用可能なバスアークテクチャのいずれかを使用するローカルバスを含む、いくつかのバス構造のいずれかとすることができ、様々な利用可能なバスアークテクチャには、限定ではないが、１１ビットバス、ＩＳＡ（Industrial Standard Architecture）、ＭＳＡ（Micro-Channel Architecture）、ＥＩＳＡ（Extended ISA）、ＩＤＥ（Intelligent Drive Electronics）、ＶＬＢ（VESA Local Bus）、ＰＣＩ（Peripheral Component Interconnect）、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Advanced Graphics Port）、ＰＣＭＣＩＡ（Personal Computer Memory Card International Association bus）、およびＳＣＳＩ（Small Computer Systems Interface）が含まれる。
【００４９】
システムメモリ９１６は、揮発性メモリ９２０、および不揮発性メモリ９２２を含む。起動の間などに、コンピュータ９１２内の要素の間で情報を転送する基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）は、不揮発性メモリ９２２の中に格納される。限定ではなく例として、不揮発性メモリ９２２は、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、またはフラッシュメモリを含むことができる。揮発性メモリ９２０は、外部キャッシュメモリとして機能するＲＡＭを含む。限定ではなく例として、ＲＡＭは、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＥＳＤＲＡＭ、ＳＬＤＲＡＭ、およびＤＲＲＡＭなどの多くの形式で利用可能である。
【００５０】
コンピュータ９１２は、リムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータストレージ媒体も含む。図９は、例えばディスクストレージ９２４を示す。ディスクストレージ９２４には、限定ではないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックなどのデバイスが含まれる。さらに、ディスクストレージ９２４は、限定ではないがＣＤ−ＲＯＭ、ＣＤ−Ｒドライブ、ＣＤ−ＲＷドライブ、またはＤＶＤ−ＲＯＭなどの光ディスクドライブを含む他のストレージ媒体と別に、またはそれとの組合せでストレージ媒体を含むことが可能である。ディスクストレージデバイス９２４のシステムバス９１８への接続を容易にするために、典型的にはインタフェース９２６などのリムーバブルまたは非リムーバブルのインタフェースが使用される。
【００５１】
図９は、適切なオペレーティング環境９１０の中で説明されるユーザと基本的なコンピュータリソースとの間の媒介（intermediary）としての機能するソフトウェアを説明しているということを理解されたい。そのようなソフトウェアには、オペレーティングシステム９２８が含まれる。ディスクストレージ９２４に格納することができるオペレーティングシステム９２８は、コンピュータシステム９１２のリソースを制御し、割り当てるように機能する。システムアプリケーション９３０は、オペレーティングシステム９２８によりリソースの管理を利用して、プログラムモジュール９３２およびプログラムデータ９３４を通じて、システムメモリ９１６またはディスクストレージ９２４のいずれかに格納される。本明細書で説明される様々なコンポーネントを、様々なオペレーティングシステム、またはオペレーティングシステムの組合せで実装することができることを理解されたい。
【００５２】
ユーザは、入力デバイス９３６を通じて、コンピュータ９１２にコマンドまたは情報を入力する。入力デバイス９３６には、限定ではないが、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナ、ＴＶチューナーカード、デジタルカメラ、デジタルビデオカメラ、およびウェブカメラなどが含まれる。これらおよび他の入力デバイスは、インタフェースポート９３８を介して、システムバス９１８を通じて処理ユニット９１４に接続する。インタフェースポート９３８には、例えばシリアルポート、パラレルポート、ゲームポート、およびＵＳＢが含まれる。出力デバイス９４０は、入力デバイス９３６と同じタイプのポートのいくつかを使用する。したがって、例えばＵＳＢポートを使用して、入力をコンピュータ９１２に提供し、コンピュータ９１２からの情報を出力デバイス９４０に出力することができる。特定のアダプタを必要とする他の出力デバイス９４０の中に、モニタ、スピーカ、およびプリンタなどのいくつかの出力デバイス９４０が存在するということを示すために、出力アダプタ９４２を載せている。出力アダプタ９４２には、限定ではなく例として、出力デバイス９４０とシステムバス９１８との間の接続手段を提供するビデオおよびサウンドカードが含まれる。他のデバイスおよび／またはデバイスのシステムは、リモートコンピュータ９４４のように入力と出力との両方の能力を提供するということに留意されたい。
【００５３】
コンピュータ９１２は、リモートコンピュータ９４４などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境の中で動作することができる。リモートコンピュータ９４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースのアプライアンス、およびピアデバイスもしくは他の一般的なネットワークノードなどとすることができ、典型的には、コンピュータ９１２に関して説明された要素の多くまたはすべてを含む。簡潔さのため、メモリストレージデバイス９４６のみが、リモートコンピュータ９４４とともに示されている。リモートコンピュータ９４４は、ネットワークインタフェース９４８を通じてコンピュータ９１２に論理的に接続され、通信接続９５０を介して物理的に接続される。ネットワークインタフェース９４８は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）などの通信ネットワークを含む。ＬＡＮ技術には、ＦＤＤＩ、ＣＤＤＩ、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＥＥＥ８０２．３、およびＴｏｋｅｎ  Ｒｉｎｇ／ＩＥＥＥ８０２．５などが含まれる。ＷＡＮ技術には、限定ではないが、ポイントツーポイントリンク、ＩＳＤＮおよびその変形などの回線交換ネットワーク、パケット交換ネットワーク、ならびにＤＳＬが含まれる。
【００５４】
通信接続９５０は、ネットワークインタフェース９４８をバス９１８に接続するのに利用されるハードウェア／ソフトウェアを指す。通信接続９５０は、例として、明確さのためにコンピュータ９１２の内部に示されているが、コンピュータ９１２の外部にあることも可能である。ネットワークインタフェース９４８への接続に必要なハードウェア／ソフトウェアには、単に例示の目的であるが、標準の電話機グレードのモデム（regular telephone grade modem）、ケーブルモデムおよびＤＳＬモデム、ＩＳＤＮアダプタ、ならびにＥｔｈｅｒｎｅｔ（登録商標）カードなどの、内部的および外部的技術（internal and external technology）が含まれる。
【００５５】
図１０は、本発明のワークフロー実装を組み込むのに利用することができるサンプルのコンピューティング環境１０００の概略的なブロック図である。システム１０００には、１つまたは複数のクライアント１０１０が含まれる。クライアント１０１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。システム１０００には、１つまたは複数のサーバ１０３０も含まれる。サーバ１０３０も、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。サーバ１０３０は、例えば、本明細書で説明されるコンポーネントを利用することにより変換を実行するスレッドを収容することができる。クライアント１０１０とサーバ１０３０との間の１つの可能な通信は、２つまたはそれ以上のコンピュータプロセスの間で伝送されるように構成されたデータパケットの形式とすることができる。システム１０００には、クライアント１０１０とサーバ１０３０との間の通信を容易にするのに使用することができる通信フレームワーク１０５０が含まれる。クライアント１０１０は、クライアント１０１０にローカルに情報を格納するのに利用されることが可能な１つまたは複数のクライアントデータストア１０６０に、動作可能に接続される。同様に、サーバ１０３０は、サーバ１０３０にローカルに情報を格納するのに利用されることが可能な１つまたは複数のサーバデータストア１０４０に、動作可能に接続される。
【００５６】
上述されたものには、様々な例示的な態様が含まれる。当然のことながら、これらの態様を説明するために、コンポーネントまたは方法のすべての考えられる組合せを述べることは不可能であるが、当業者であれば、多くのさらなる組合せおよび置き換えが可能であるということが理解されよう。したがって、本明細書で説明される態様は、添付の請求項の精神および範囲内に収まる、すべてのそのような代替形態、変更形態、および変形形態を包含することが意図される。さらに「含む」という語が詳細な説明または特許請求の範囲のいずれかにおいて使用される限りにおいては、そのような語は、「備える」が請求項の中で用いられるときに変形語（transitional word）として解釈されるように、「備える」という語と同様に包括的であることが意図される。
【図面の簡単な説明】
【００５７】
【図１】本発明の一態様による、複数の持続ストアとやり取りするルーティング持続サービスを有するワークフローの例示的なシステム図である。
【図２】複数の持続サービス実装とやり取りする関連検索コンポーネントのブロック図である。
【図３】本発明の一態様による、新たなワークフローを登録／作成する方法を示す図である。
【図４】ワークフローランタイムへのルーティング持続サービスプロバイダの登録のフローチャートである。
【図５】本発明の一態様による、稼働中のワークフローにアクセスする方法を示す図である。
【図６】ワークフローのインスタンスをロードするためのデータストアのやり取りを示す図である。
【図７】ワークフローのインスタンスを保存するためのデータストアのやり取りを示す図である。
【図８】本発明の一態様による、完了したワークフローの関連を登録解除することを示す図である。
【図９】本発明の様々な態様を実装するための例示的環境を示す図である。
【図１０】ワークフローを本発明のルーティング持続サービスとともに実装するのに使用されることが可能な、さらなるコンピューティング環境の概略的なブロック図である。
【図１】
2009522639.tif 000006
【図２】
2009522639.tif 000007
【図３】
2009522639.tif 000008
【図４】
2009522639.tif 000009
【図５】
2009522639.tif 000010
【図６】
2009522639.tif 000011
【図７】
2009522639.tif 000012
【図８】
2009522639.tif 000013
【図９】
2009522639.tif 000014
【図１０】
2009522639.tif 000015
【国際調査報告】
2009522639.tif 000016
2009522639.tif 000017