(57)【要約】  ワークフローの外部にある動的状態マネジャを用いることによりワークフローを動的にリセットし、ワークフローインスタンスとのホストの対話を可能にするシステムおよび方法。イベント駆動型のワークフローまたは状態機械ワークフローが供給されることができ、一回限りのイベントが用いられて、ワークフロー自体の一部としてモデル化されていない状態にワークフローをリセットおよび操作し、また、実行時に動的に関係を作成する。
2009522648.tif 000002
【特許請求の範囲】
【請求項１】
ワークフロー状態（１０２）をリセットして、イベントを介して状態間の関係を動的に作成する、ワークフローの外部にある動的状態マネジャ（１０５）と、
前記動的状態マネジャ（１０５）に状態を渡して、前記ワークフローのインスタンスのリセットにより前記状態を駆動するホストアプリケーション（１２０）と
のコンピュータ実行可能コンポーネントを備えることを特徴とするコンピュータによって実装されるシステム。
【請求項２】
前記ワークフローを特定の点で停止し、前記ホストからの入力を待つ対話型アクティビティコンポーネントをさらに備えることを特徴とする請求項１に記載のコンピュータによって実装されるシステム。
【請求項３】
アプリケーションナビゲーションコントロールに関連付けられた前記ワークフローは、ブラウザに表示されることを特徴とする請求項２に記載のコンピュータによって実装されるシステム。
【請求項４】
前記ワークフローは、各表示と各状態との間に１対１の関連付けすることを特徴とする請求項３に記載のコンピュータによって実装されるシステム。
【請求項５】
前記ホストによって供給されるナビゲーション経路をさらに備えることを特徴とする請求項４に記載のコンピュータによって実装されるシステム。
【請求項６】
前記ナビゲーション経路は、「次ページ（ｇｏ−ｔｏ）」の形態を有することを特徴とする請求項５に記載のコンピュータによって実装されるシステム。
【請求項７】
前記イベントはユーザインタフェースに対応することを特徴とする請求項５に記載のコンピュータによって実装されるシステム。
【請求項８】
前記イベントは、前記ワークフローロジックの一部としてモデル化されていない一回限りのイベントであることを特徴とする請求項５に記載のコンピュータによって実装されるシステム。
【請求項９】
ホストによって送信されたイベントに基づいて、ワークフローの外部にある動的状態マネジャにより状態をアクティブに設定するコンピュータ実行可能動作と、
前記ワークフローの現在の状態を前記状態に移すコンピュータ実行可能動作と
を備えることを特徴とするコンピュータによって実装される方法。
【請求項１０】
前記送信されるイベントは、ブラウザに表示されたユーザインタフェースに基づくことを特徴とする請求項９に記載のコンピュータによって実装される方法。
【請求項１１】
前記状態が利用可能であるかどうかを確認することをさらに備えることを特徴とする請求項９に記載のコンピュータによって実装される方法。
【請求項１２】
前記状態が利用可能でない場合はエラーメッセージを送信することをさらに備えることを特徴とする請求項１１に記載のコンピュータによって実装される方法。
【請求項１３】
前記ワークフローを一時停止することをさらに備えることを特徴とする請求項１１に記載のコンピュータによって実装される方法。
【請求項１４】
前記状態を実行することをさらに備えることを特徴とする請求項１３に記載のコンピュータによって実装される方法。
【請求項１５】
イベントを使用して状態を遷移させることをさらに備えることを特徴とする請求項１４に記載のコンピュータによって実装される方法。
【請求項１６】
前記状態が前記ワークフローの最後の状態であるかどうかを確認することをさらに備えることを特徴とする請求項１５に記載のコンピュータによって実装される方法。
【請求項１７】
前記状態が前記ワークフローの最後の状態でない場合、前記状態を実行することをさらに備えることを特徴とする請求項１６に記載のコンピュータによって実装される方法。
【請求項１８】
前記ワークフローに関連付けられたワークフロープロバイダによりワークフローインスタンスをロードすることをさらに備えることを特徴とする請求項１６に記載のコンピュータによって実装される方法。
【請求項１９】
前記イベントが前記状態によって消費されない場合、前記イベントを別の状態に渡すことをさらに備えることを特徴とする請求項１７に記載のコンピュータによって実装される方法。
【請求項２０】
ワークフロー状態をリセットする手段（１０５）と、
現在のワークフロー状態を新しいワークフロー状態に駆動する手段（１０５）と
のコンピュータ実行可能コンポーネントを備えることを特徴とするコンピュータによって実装されるシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
高コスト、低性能のデータ処理システムから、低コスト、高性能の通信システム、問題解決システム、および娯楽システムへのコンピュータおよびネットワーク技術の発展により、通信、請求の支払い、買い物、予算編成、情報収集等の日常作業を行う負担を軽減する、費用対効果が大きく、時間を節約する手段がもたらされた。現在、有線または無線技術を介してインターネットにつながれたコンピューティングシステムは、世界中に存在する多数のウェブサイトやサーバにある豊富な情報に容易にほぼ瞬時にアクセスする経路をユーザに提供することができる。
【０００２】
例えば、そのような「ワールドワイドウェブ」ネットワークでは、ユーザは、自身が「行きたい」サイトまたは目的ページのアドレスを指定することができる。ユーザは次いで、選択したサイトに入り、すると目的ページあるいはサイトのホームページがユーザの表示画面に表示される。通例、ウェブサイトおよびサーバを介して入手できる情報は、ウェブクライアント（例えばコンピュータ）で実行されるウェブブラウザを介してアクセスされる。例えば、ウェブユーザは、ウェブブラウザを配備し、ウェブサイトのユニフォームリソースロケータ（ＵＲＬ）（例えばウェブアドレスおよび／またはインターネットアドレス）をウェブブラウザのアドレスバーに入力し、キーボードのＥｎｔｅｒキーを押すか、マウスで「ｇｏ」ボタンをクリックすることにより、そのウェブサイトにアクセスすることができる。目標の画面が表示された時、その画面は、予期された情報あるいは求められる情報を提示しない場合が多く、その場合、ユーザは、アクセスする別の目標アドレスを指定しなければならない。
【０００３】
ページナビゲーションに関わるプロセスは、アプリケーション間の通信に依拠して自動化されることができ、一方、他のプロセスは、当該プロセスの開始や、そのプロセスが使用する文書の承認、発生する例外的な状況の解決等を人に依拠する。いずれの場合も、ユーザと当該プロセスに関係するソフトウェアのアクティビティを記述したワークフロー（例えばページフローコントロール）と称される個別の一続きの段階を規定するのが一般的である。そのようなワークフローが定義されると、その定義を中心としてアプリケーションが構築されて、業務プロセスを支援することができる。
【０００４】
現在、コンピュータシステムとそれに関連するソフトウェアは、企業およびその他の組織が各自のワークフローを改良できるツールを提供している。ソフトウェアツールを使用して、業務ワークフローのプロセスやスケジュールをモデル化し、非効率な点や可能な改良点を明らかにすることができる。また、プロセスが、人、部門、工場、さらには別個の企業間のデータ交換を伴う場合には、コンピュータシステムとネットワークが使用されてそのような交換を実施することができる。そのようなシステムとソフトウェアツールは、さらに、ビジネスに関連する情報に一般的に伴う大規模な計算や他のデータまたは情報の処理を実施することができる。
【０００５】
したがって、ワークフローの管理には、組織の業務プロセスにおける情報の流れと制御の効果的な管理が含まれ、そのような情報処理の自動化は、現在のビジネス界に多くの効率面の改良をもたらしている。さらに、そのようなワークフロー管理の自動化により、現在、企業とその他の組織は、インターネット等の世界規模のコンピュータネットワークを含むコンピュータシステムでワークフロー処理を実行することにより、さらに業績を向上させることができるようになっている。
【０００６】
ワークフローに基づく典型的なアプリケーションは、しばしば、満たされるべき複数の条件を必要とする。そのような条件の１つは、例えば、業務規則に基づいて意思決定する能力である。そのような規則には、単純な規則（例えば信用調査の結果に基づく肯定または否定の決定など）と、より複雑な規則（例えば最初の引き受けの決定を行うために評価されなければならない、可能性としては大きなセット）が含まれうる。別の要件は、当該ワークフローの外部にある他のソフトウェアおよび他のシステムとの通信である。例えば、アプリケーションの一部分から最初の要求が受け取られる可能性があり、一方、一部の側面（例えばクレジットサービスとの接触）が、他のウェブサービスあるいは技術を使用した通信を必要とする場合がある。満たされるべきさらなる条件は、ユーザとワークフローの適切な対話である。例えば、ワークフローは、通例は、ユーザインタフェース自体を表示すること、または他のソフトウェアを通じて人間と対話することが可能でなくてはならない。さらに、ワークフローの全存続期間にわたって状態を維持する能力が、満たされる必要がある別の条件である。したがって、ソフトウェアでワークフローを作成し、実行することは、固有の課題を呈する。
【０００７】
現在、ワークフローシステムをページフロー制御と併合するための解決法が複数ある。そのような解決法には、例えばモデルビューコントローラ（ＭＶＣ）、ページコントローラ、フロントコントローラのパターンを用いて、ウェブページナビゲーションを調整する解決法が含まれうる。そうした解決法では、ユーザは、ハードコードされた関係を用いて、あらかじめ定義された一連のページ間を移動することができる。それでも、すでに処理されたページをサブミットするには、関係が前もって定義されることが必要となる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、任意のページセット間の関係のすべての可能な組み合わせをモデル化することは困難になる可能性がある。そのような複雑性のため、開発者と分析者は、最も一般的で、生じる可能性の高いページ間の関係、例えば「ｈａｐｐｙ  ｐａｔｈ」をモデル化することを余儀なくされる。そのため、開発者は、サブミットされた最後のページを常に把握することを必要とする再サブミットロジックを、開発するページの内部に構築せざるを得ない可能性がある。一般に、ページフローの定義を可能にする機構は存在せず、ページフローの定義が可能な場合、エンドユーザは、ページ間の形式上の関係が定義されることなくフローを再配置することができる。
【０００９】
したがって、従来のシステムおよび機器に伴う上述した典型的な欠陥を克服する必要がある。
【課題を解決するための手段】
【００１０】
以下に、クレームされた主題のいくつかの態様の基本的な理解を提供するために、簡略化した要約を提供する。この要約は、広範囲にわたる概要ではない。主要／不可欠な要素を明らかにするものでも、クレームされた主題の範囲を詳述するものでもない。その唯一の目的は、その後に提示されるより詳細な説明の前置きとして、簡略化した形でいくつかの概念を示すことである。
【００１１】
本発明は、ワークフローの外部にある動的状態マネジャを用いることによりワークフロー状態を動的にリセットし、また、ワークフローインスタンスとホストの対話を可能にするシステムおよび方法を提供する。そのような動的状態マネジャは、ワークフローの外側から（例えばワークフロー自体の一部として構築されずに）ワークフローの状態を管理することができる。そのため、ワークフローの一回限りの状態変化をモデル化する必要性が軽減される。したがって、イベント駆動型のワークフローが供給されることができ、一回限りのイベントが用いられて、ワークフロー自体の一部としてモデル化されていない状態にワークフローをリセットおよび操作し、また、実行時に動的に関係を作成する。ホストは、ワークフロープロバイダを呼び出し、設定された状態を（例えば特定の状態とＵＩとともに）渡し、次いでワークフローランタイムが選択される。動的状態マネジャは、設定状態を受け取って、ワークフローインスタンスをリセットすることによりその状態を駆動する。ワークフロー状態は、一時停止（例えばイベントを待つ）に関する通知をワークフローランタイムに送信することもでき、通知はワークフロープロバイダに戻り、その後ホストに通信される。
【００１２】
関連する態様で、対話型アクティビティコンポーネントは、特定の点でワークフローを停止し（例えばワークフローランタイムをアイドルに設定する）、ワークフローを再開するためのホストからの入力を待つことができる。ホストは、ワークフローインスタンスをロードするためにワークフロープロバイダを呼び出すことができる。その後、イベントが設定されることができ、このイベントは、ユーザインタフェース（例えばワークフローのある状態に対応するウェブページ）に対応することができる。したがって、ホストは、ナビゲーション経路に関する情報を供給することができる（例えば「次ページ」の形で）。
【００１３】
次いで、動的状態マネジャにより、そのワークフローのある状態の利用可能性に関して確認が提供されることができる。その状態が存在しない場合は、ユーザにエラーが表示されることができる。そうでなくその状態が存在する場合は、動的状態マネジャは、ワークフロー中で実行するためにその状態をアクティブに設定することができる。その後実行されると、ワークフローは、イベントが新しい状態に遷移するのを待つことができ、ホストから遷移イベントが受領されると、ワークフローは、新しい状態に移ることができる。次いで、確認が行われて、その状態がワークフローインスタンス中で最後の状態であるかどうかを調べる。最後の状態である場合、方法論は終了する。最後の状態でない場合、方法論は、戻って別の状態を実行する。本発明は、上記に限定されず、ウェブページ以外にも、本発明は、ウェブサービス、システムサービスの実行等に適用できることを理解されたい。
【００１４】
本発明の特定の方法によれば、初めに、アプリケーションナビゲーションコントロール（例えばページフロー制御フロー）の一部である表示（例えばページ）がブラウザ内に表示され、ユーザは、サブミットするためにそのページ内の情報を完成させる。その後、その表示に関連付けられたワークフローインスタンスがロードされ、ワークフローの状態が、その表示に関連付けられた状態に設定される。通例は、表示と状態の間に１対１の関連付けが存在する。状態が設定されると、表示によって生成されたイベントは、消費のためにワークフローインスタンスに渡される。イベントは、ワークフローインスタンスの現在の状態に渡される。状態は、そのイベントが消費されることができるかどうかを判定する。イベントが現在の状態によって消費される場合は、関連付けられたハンドラが、状態遷移が必要とされるかどうかを判定することができる。そうでなくイベントが現在の状態に消費されない場合は、そのイベントは次いで、消費のために、その状態を含んでいる状態に渡される。
【００１５】
上述の目的およびそれに関連する目的を達成するために、下記の説明および添付図面と関連して、クレームされた主題の特定の例示的態様が本明細書に記載される。それらの態様は、主題が実施されることが可能な各種方式を示し、それら方式はすべて、クレームされた主題の範囲内にあるものとする。その他の効果および新規の特徴は、図面と併せて以下の詳細な説明を検討することから明らかになろう。
【発明を実施するための最良の形態】
【００１６】
次いで添付図面を参照して本発明の各種態様が説明されるが、すべての図面を通じて、同様の参照符号は、同様の要素または対応する要素を指す。ただし、図面とそれに関連する詳細な説明は、クレームされた主題をここに開示される特定の形態に制限するものではないことを理解されたい。その意図するところは、クレームされた主題の主旨および範囲に該当するすべての変形形態、均等形態、および代替形態を包含することである。
【００１７】
本発明明細書で使用される場合、用語「コンポーネント」、「システム」、「サービス」、「マネジャ」等は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、実行中のソフトウェアを問わず、コンピュータに関連するエンティティを指すものとする。例えば、コンポーネントは、これらに限定されないが、プロセッサで実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および／またはコンピュータ等である。例示として、コンピュータで実行中のアプリケーションとコンピュータの両方がコンポーネントとなることができる。実行のプロセスおよび／またはスレッド内に１つまたは複数のコンポーネントが存在することができ、１つのコンポーネントが１台のコンピュータに局所化されても、かつ／または２つ以上のコンピュータ間に分散されてもよい。
【００１８】
本明細書では、単語「例示的な」を例、事例、あるいは例示の役割を果たすものとして使用する。本明細書で「例示的な」と記される態様や設計は、必ずしも、他の態様や設計より好ましい、あるいは有利であるとは解釈されるべきでない。
【００１９】
さらに、ここに開示される主題は、標準的なプログラミング技術および／またはエンジニアリング技術を使用して、システム、方法、装置、または製造物として実装されて、ここに詳細に述べられる態様を実装するようにコンピュータまたはプロセッサに基づく機器を制御するソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを作り出すことができる。本明細書で使用される用語「コンピュータプログラム」は、任意のコンピュータ可読機器、担体、または媒体からアクセスすることが可能なコンピュータプログラムを包含するものとする。例えば、コンピュータ可読媒体には、これらに限定しないが、磁気記憶装置（例えばハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ）、光ディスク（例えばコンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ））、スマートカード、およびフラッシュメモリ機器（例えばカード、スティック）が含まれうる。また、電子メールの送受信や、インターネットあるいはローカルエリアネットワーク（ＬＡＮ）等のネットワークへのアクセスで使用されるものなど、コンピュータ可読の電子データを搬送するために搬送波が使用されることができることを理解されたい。無論、当業者は、クレームされた主題の範囲および主旨から逸脱することなく、この構成に多くの変更が加えられてよいことを理解されよう。
【００２０】
初めに図１を参照すると、システム１０１のブロック図が示され、システム１０１は、ワークフローの外部にある動的状態マネジャ１０５を用いることによりワークフロー状態１０２を動的にリセットし、また、ホスト１２０がワークフローインスタンス１０２と対話することを可能にする。システム１０１は、動的状態マネジャ１０５を用いて、システム１０１に関連付けられたワークフローの一回限りの状態変化をモデル化する必要性を軽減する。したがって、イベント駆動型のワークフローが供給されることができ、一回限りのイベントが用いられて、当該ワークフローの一部としてモデル化されていない状態にワークフローをリセットおよび操作し、また、実行時に動的に関係を作成する。
【００２１】
そのようなワークフローは、アクティビティのマップとして定義された人間のプロセスまたはシステムプロセスをモデル化することができる。アクティビティは、ワークフロー中のステップであり、ワークフローの実行、再使用、比較の単位である。アクティビティのマップは、規則、アクション、状態、およびそれらの関係を表す。通例、ワークフローは、ワークフローエンジン／ランタイム１１０を介して実行され、ワークフローランタイムは、ホスト１２０で示すように、外部アプリケーションがいくつかの規則に従って当該ランタイムをホストすることを必要とする。ホスト１２０とワークフローシステム１００との間のデータ交換は、ビジネス文書および他のオブジェクトに関連するか、かつ／またはそれらを記述することができ、他のオブジェクトは、ワークフローアクティビティのために用いられるか、またはそれを容易にし、またはホストアプリケーション１２０との間でデータを通信するために使用されるワークフローのローカル変数間のフローのために用いられるか、またはそれを容易にするために使用される。
【００２２】
例えば、ホストアプリケーション１２０は、Ｗｏｒｋｆｌｏｗ  Ｐｒｏｖｉｄｅｒベースクラス１１７を通じて、ワークフローシステム１００に関連付けられたワークフロープロバイダ１１５と対話することができる。また、ホスト１２０は、１つまたは複数のプロセスの作成や、ワークフローの適正な実行のために必要とされる各種コンポーネント間の呼び出しの整理、分離機構のセットアップ等、いくつかの追加的で不可欠な態様を担うことができる。さらに、ホスト１２０は、拡張性の理由からマシン内の複数の中央演算処理装置（ＣＰＵ）を利用するために、または多数のワークフローインスタンスをマシン群で実行するために、複数のプロセスを作成することができる。ホスト１２０はさらに、ワークフローが長い待ちをしなければならない時に適用すべきポリシーを制御し、特定のイベントをリッスンし、それらのイベントをユーザまたは管理者に伝え、各ワークフローのタイムアウトおよび再試行を設定し、パフォーマンスカウンタを公開し、デバッグと診断のためにログ情報を書くことができる。
【００２３】
ワークフローシステム１０１に関連付けられたワークフローは、特にその目的のために確立されたサービスを通じて外界と通信することができ、そのようなサービスは、当該ワークフロー内部のイベント駆動型アクティビティが 中継する（ｈｏｏｋ  ｕｐ）イベントを発生させる。同様に、このサービスは、ワークフローがホスト１２０を呼び出し、データを送信するためのパブリックメソッドを公開する。ワークフローは、コンピュータシステムにおける実行のスケジュールの形で定義されることができる。スケジュールは、当該アクションに関連付けられた指定された並行性属性、依存性属性、およびトランザクション属性を有するアクションのセットを含むことができる。各スケジュールは、関連付けられたスケジュール状態を有することができ、スケジュール状態は、当該スケジュールの定義、スケジュール内における現在の位置、ならびに当該スケジュールに関連付けられたアクティブな、あるいは生きているデータおよびオブジェクトを含む。スケジュール内で、アクションのグループ化に基づいてトランザクションの境界が存在することができる。これに関して、トランザクションは、個々のアクション、トランザクション、またはそれらのグループを包含することができる。以下でさらに述べるように、アクションはグループ化して、順次実行されるシーケンスにされることができ、また、それらアクションが同時に実行されるタスクにされることもできる。したがって、グループ化に基づいて、スケジュール内のアクションとトランザクションについての並行性属性が解決されることができる。
【００２４】
ホスト１２０は、ワークフロープロバイダ１１５を呼び出し、設定された状態（例えば特定の状態とＵＩを伴う）を渡すことができ、その後、ワークフローランタイムが選択される。動的状態マネジャ１０５は、設定状態を受け取って、ワークフローインスタンス１１１をリセットすることによりその状態を駆動する。ワークフロー状態１０２は、一時停止（例えばイベントを待つ等）に関してワークフローランタイム１１０に通知を送ることもでき、その通知は、ワークフロープロバイダ１１５に送られ、次いでホスト１２０に通信される。
【００２５】
以下に示すのは、動的状態マネジャの例示的定義であり、ここでは、状態機械ワークフロー内の各状態は、あるウェブページに対応するものとする。
【００２６】
【表１】
2009522648.tif 000003
【００２７】
図２は、本発明の一態様による方法論２００を説明する。ここでは各種のイベントおよび／または動作を表す一連のブロックとして例示的な方法が図示され、説明されるが、本発明は、それらブロックの図示される順序によって限定されない。例えば、一部の動作またはイベントは、本発明により、本明細書で図示される順序とは異なる順序で、かつ／または他の動作またはイベントと同時に行われてよい。また、図示されるブロック、イベント、または動作のすべてが、本発明による方法論を実装するために必要とは限らない。さらに、本発明による例示的方法および他の方法は、本明細書に図示および記載される方法との関連で、ならびに図示または記載されない他のシステムおよび装置との関連で実装されてよいことが理解されよう。２１０で、ホストは、ワークフローインスタンスをロードするためにワークフロープロバイダを呼び出すことができる。例えば、ワークフローのインスタンスをロードするために、ワークフローインスタンス表現を格納した対応する永続ストアへのアクセスが提供されることができ、次いでその表現がワークフローインスタンスに変換され、ホストアプリケーションに提供される。その後、２２０で、イベントが設定されることができ、イベントは、ユーザインタフェース（例えばワークフローのある状態に対応するウェブページ）に対応することができる。したがって、ホストは、ナビゲーション経路に関する情報を供給することができる（例えば「次ページ」の形で）。次いで２３０で、動的状態マネジャがそのワークフローの状態の利用可能性を確認することができる。その状態が存在しない場合は、ユーザにエラーが表示されることができ、方法論は２３５で停止する。
【００２８】
そうでなく、その状態が存在する場合は、動的状態マネジャは、ワークフロー中で実行するために２４０でその状態をアクティブに設定することができる。その後２５０で実行されると、ワークフローは、イベントが新しい状態２６０に遷移するのを待つことができ、ホストから遷移イベントが受け取られると、ワークフローは２７０で新しい状態に移ることができる。次いで２８０で、確認が行われて、その状態がワークフローインスタンス中で最後の状態であるかどうかを調べる。最後の状態である場合、方法論は２９５で終了する。最後の状態でない場合、方法論は別の状態を実行するために動作２５０に戻る。
【００２９】
図３および４は、本発明の一態様による動的状態マネジャの特定の実装例３００および４００を示す。従来のシステム（ユーザが、各種のページ／ステップ間の複雑なロジックのモデル化を介してページナビゲーションを定義するワークフロータイプシステムと対話しなければならない）と異なり、本発明は、関連するロジックを簡略化する、状態管理の動的な考え方を可能にする。例えば、ワークフローの状態３１０、４１０は、当該イベントについての情報がワークフローによって処理される前にリセットされることができる。
【００３０】
図３および４に示すように、２つのバージョンのワークフローが存在し、すなわち、状態機械ワークフロータイプ３１５、４１５と、順次ワークフロータイプ３１７、４１７である。通例は、どのワークフローもいくつかのアクティビティを含んでおり、各アクティビティは、そのワークフローの機能の何らかの態様を行う。ワークフローは、それらアクティビティのコンテナとして機能し、アクティビティの存続期間と実行の順序を制御する手段を提供する。システムワークフローは、アクティビティを明確に定義された予測可能な方式で実行する傾向があるのに対し、人間のワークフローはそうではない。
【００３１】
こうした両方の必要性を扱うために、Ｗｉｎｄｏｗｓ（登録商標）  Ｗｏｒｋｆｌｏｗ  Ｆｏｕｎｄａｔｉｏｎは、２つの組み込みワークフロータイプを提供する。すなわち、あらかじめ定義されたパターンでアクティビティを実行することが可能な順次ワークフロー３１７、４１７と、発生次第外部のイベントに対応することが可能な状態機械ワークフロー３１５、４１５である。両タイプとも同じ実行時環境に依拠し、両タイプとも同じカスタムアクティビティを使用することができる。順次方式は、システムワークフローに適し、一方、状態機械は、システムワークフローよりも大まかに定義された人間ワークフローの性質をモデル化する手段を提供する。単一のワークフローが両方のスタイルの要素を組み合わせることができ、２つを組み合わせたものを可能にする。さらに、開発者がカスタムのワークフロータイプを作成することもできる。
【００３２】
ワークフローランタイム３１１、４１１は、ワークフローインスタンスを、アクティブサーバページ（ＡＳＰ．ｎｅｔアプリケーション）の内部でワークフローランタイムとしてプログラム的に管理する。さらに、対話型アクティビティコンポーネント３３０、４３０は、特定の点でワークフローの実行を停止し（例えばワークフローランタイムをアイドルに設定する）、ワークフローを再開するホストからの入力を待つことができる。ホスト（例えばウェブページ）は、ワークフローを別の状態に移すイベントを送信することができる。例えば、ホストは、ワークフローを再開して次の状態にする再開イベントを発生させる（ｆｉｒｅ）ことができる。図４はさらに、状態機械４５０内で再開と一時停止に分割された対話型アクティビティコンポーネントを示す。
【００３３】
対話型アクティビティコンポーネント３３０、４４０は、ユーザ入力を要求する各種の対話性の断絶時に、ユーザ入力とそれに関連する対話をワークフローに供給することができる。それにより、ワークフローと、そのワークフローに関連付けられたホストアプリケーションとの間で制御された／同期したデータ交換が可能になる。したがって、ワークフローの実行中の定義された時間に、ユーザコンテクストがワークフローインスタンスに関連付けられることができる。さらに、ワークフローは、一時停止中に、スイッチユーザコンポーネント３３２、４３２を介して、ワークフローのユーザに関連する情報等、ワークフローの状態に基づいてユーザインタフェース（ＵＩ）を駆動することができる。さらに、イベントハンドラ３３４、４３４は、現在の状態によって処理されないイベントを消費して、ある状態について定義された現在の制御フローが無効にされることを可能にする。したがって、ワークフローの状態がワークフローの外部から管理されることができ（例えばワークフロー自体の一部として構築されることなく）、ワークフローの一回限りの状態変化をモデル化する必要性が軽減される。
【００３４】
図５および６は、例示的なフローチャートを示し、ここでは、特定の点まで実行され、ワークフローを再開するためのホストからの入力を待つ対話型ワークフローが供給され、そのようなイベントは、ワークフローを別の状態に移すことができる。方法論５００に示すように、ワークフロープロセスは５０５で実行され、プロセス中の次の動作に進む。ワークフローの実行は、５１０で、実行すべき動作がワークフローの終了を示すかどうかを確認することができる。終了を示す場合、ワークフローの実行は５２０で終了する。そうでない場合、方法論は動作５３０に進み、ワークフローによって実行されるべき動作が調べられて、それが対話型のアクティビティであるかどうかを確認する。対話型のアクティビティである場合、５４０でワークフローが一時停止されて、上記で詳細に述べたように、ワークフローの状態を動的にリセットするためにホストアプリケーションとの対話を可能にする。そうでない場合、方法論は動作５０５に戻り、ワークフローが現在の動作を実行し、次の動作に進む。
【００３５】
図５に示すように、５４０におけるワークフローの一時停止の後、実行のフローは、５５０でワークフローを再開するためのホストからの入力を待ち、そのようなイベントはワークフローを別の状態に移すことができる。その後、図６の６６０で、イベントが設定されることができ、そのイベントは、そのような状態が実際に存在するものと想定して、ワークフローのある状態に対応するユーザインタフェース（例えばウェブページ）に対応することができる。したがって、ホストは、６７０で例えば「次ページ」の形でナビゲーション経路に関する情報を供給することができる。そのため、動的状態マネジャは、６８０で、ワークフロー中で実行するためにその状態をアクティブに設定することができる。その後、状態が実行されると、ワークフローは、イベントが新しい状態に遷移するのを待つことができ、ホストからの遷移イベントを受信すると、ワークフローは６９０でその新しい状態に移ることができる。したがって、ワークフローの状態がワークフローの外部から（例えばワークフロー自体の一部として構築されずに）管理されることができ、ワークフローの一回限りの状態変化をモデル化する必要性が軽減される。
【００３６】
図７および８は、イベント駆動型のワークフローの一例を示し、ここでは、一回限りのイベントが用いられて、ワークフロー自体の一部としてモデル化されている状態にワークフローをリセットおよび操作して、実行時に動的に関係を作成する。ウェブページアプリケーションは、ワークフロープロバイダを呼び出し、設定された状態（例えば特定の状態およびＵＩとともに）を渡すことができ、次いでワークフローランタイムが選択される。動的状態マネジャは、設定状態を受け取って、ワークフローインスタンスをリセットすることにより、その状態を駆動することができる。最初に、ページフロー制御フローの一部であるページがブラウザに表示され、ユーザはそのページをサブミットするためにページ内の情報を完成させる。その後、そのページに関連付けられたワークフローインスタンスがロードされ、ワークフローの状態が、そのページに関連付けられた状態に設定される。通例、ページと状態との間には１対１の関連付けがある。状態が設定されると、ページによって生成されるイベントが消費のためにワークフローインスタンスに渡される。イベントは、ワークフローインスタンスの現在の状態に渡される。状態は、その状態がそのイベントを消費することができるかどうかを判定する。イベントが現在の状態によって消費される場合は、関連付けられたハンドラが、状態遷移が必要であるかどうかを判定することができる。そうでなく、イベントが現在の状態に消費されない場合は、そのようなイベントは、消費のために、その状態を含んでいる状態に渡される。
【００３７】
例えば、選択された機能を備える電話機を購入するシナリオでは、開発者は、ユーザがウェブページを使用して情報を入力することを要求するワークフローアプリケーションを開発する場合がある。ウェブページは、あらかじめ定義されており、状態機械ワークフロー中の状態に対応付けられる。開発者の目標は、状態機械ワークフローを使用してアプリケーションの制御フローをモデル化することである。ページ内で定義されたイベントは、ある状態における入力としてモデル化されることができる。イベントのタイプに基づいて、状態機械は、完了するまで状態を変え、実行することができる。状態機械における状態の変化は、ページフローアプリケーションの制御フローを定義する。
【００３８】
イベントがページからワークフローにサブミットされる前に、状態機械ワークフローの現在の状態が、表示されているページに関連付けられた状態に位置づけられることができる。それにより、ユーザがｈａｐｐｙ  ｐａｔｈにあり、そのページにいることが予想されたかのように、イベントが操作されることが可能になる。このように、ワークフローの最後の設定状態とワークフローの新たに選択された状態との間に動的な関係が（再配置を介して）作成されることができる。携帯電話を購入する際のステップを図７のチャート７００に示す。ユーザが状態機械ワークフローの現在の状態に対応するページを操作している場合は、通例はその状態を変える、または再配置する必要はないことを理解されたい。一般に、状態は、ページと現在の状態が一致しない場合にのみリセットされる。
【００３９】
次いで図８を参照すると、順序８００が示され、ここではエンドユーザがステップ１、２、３、４、５をサブミットした後に購入すべきプランのタイプを再考することができる。本発明では、エンドユーザは、ブラウザのＢａｃｋボタンを押して、ステップ２である８２０に位置を変え、プリペイドのプランを選択し、その情報をサブミットし、ステップ５である８４０に移ることができる。ステップ５と２の関係は、事前に定義されておらず、そのため一回限りの関係として存在できることを理解されたい。また、キャンセルイベント８６０は、メインの状態機械ワークフローについてのイベントハンドラとしてモデル化されることができる。したがって、本発明は、関係が実行時に動的に作成されることができるフレームワークを提供する。それにより、解析者と開発者は、ページ間の最も一般的な実行パスだけをモデル化すれば済み、ワークフローモデルに対して定義された制御フローが、エンドユーザの要求に合わせて順応することが可能になる。
【００４０】
図９を参照して、本発明の各種態様を実装するための例示的環境９１０を説明する。例示的環境９１０は、コンピュータ９１２を含む。コンピュータ９１２は、処理装置９１４、システムメモリ９１６、およびシステムバス９１８を含む。システムバス９１８は、これらに限定されないが、システムメモリ９１６を含むシステムコンポーネントを処理装置９１４に結合する。処理装置９１４は、各種の利用可能なプロセッサのいずれでもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、処理装置９１４として用いられることができる。
【００４１】
システムバス９１８は、これらに限定しないが、１１ビットバス、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＳＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＶＬＢ（ＶＥＳＡローカルバス）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ  バス）、およびＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）を含む利用可能な各種のバスアーキテクチャを使用した、メモリバスまたはメモリコントローラ、ペリフェラルバスまたは外部バス、および／またはローカルバスを含む数種のバス構造のいずれでもよい。
【００４２】
システムメモリ９１６は、揮発性メモリ９２０と不揮発性メモリ９２２を含む。起動時などにコンピュータ９１２内の要素間に情報を転送する基本ルーチンを含んだ基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ９２２に格納される。限定ではなく例示として、不揮発性メモリ９２２には、ＲＯＭ（読み取り専用メモリ）、ＰＲＯＭ（プログラム可能ＲＯＭ）、ＥＰＲＯＭ（電気的にプログラム可能なＲＯＭ）、ＥＥＰＲＯＭ（電気的に消去可能なＲＯＭ）、またはフラッシュメモリが含まれうる。揮発性メモリ９２０には、外部キャッシュメモリとして機能するランダムアクセスメモリ（ＲＡＭ）が含まれる。限定ではなく例示として、ＲＡＭは、ＳＲＡＭ（シンクロナスＲＡＭ）、ＤＲＡＭ（ダイナミックＲＡＭ）、ＳＤＲＡＭ（シンクロナスＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ（ダブルデータレートＳＤＲＡＭ）、ＥＳＤＲＡＭ（エンハンストＳＤＲＡＭ）、ＳＬＤＲＡＭ（Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ）、およびＤＲＲＡＭ（ダイレクトＲａｍｂｕｓ  ＲＡＭ）等の多数の形態で入手することができる。
【００４３】
コンピュータ９１２は、取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含む。例えば、図９にはディスク記憶９２４を示す。ディスク記憶９２４には、これらに限定しないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、メモリスティック等の機器が含まれる。また、ディスク記憶９２４は、記憶媒体を単独で、またはこれらに限定しないがＣＤ−ＲＯＭ（コンパクトディスクＲＯＭデバイス）、ＣＤ−Ｒドライブ（ＣＤ記録可能ドライブ）、ＣＤ−ＲＷドライブ（ＣＤ書き換え可能ドライブ）、またはＤＶＤ−ＲＯＭ（デジタル多用途ディスクＲＯＭドライブ）を含む他の記憶媒体と組み合わせて含むことができる。システムバス９１８へのディスク記憶装置９２４の接続を容易にするために、通例はインタフェース９２６などの取り外し可能または取り外し不能インタフェースが使用される。
【００４４】
図９には、ユーザと、適切な動作環境９１０内に記載される基本的なコンピュータ資源との間の仲介役として機能するソフトウェアを記載していることを理解されたい。そのようなソフトウェアには、オペレーティングシステム９２８が含まれる。オペレーティングシステム９２８は、ディスク記憶９２４に記憶されることができ、コンピュータシステム９１２の資源を制御し、割り当てるように働く。システムアプリケーション９３０は、システムメモリ９１６またはディスク記憶９２４のいずれかに記憶されたプログラムモジュール９３２とプログラムデータ９３４を通じて、オペレーティングシステム９２８による資源の管理を利用する。本明細書に記載される各種コンポーネントは、各種のオペレーティングシステムまたはオペレーティングシステムの組み合わせで実装されることが可能であることを理解されたい。
【００４５】
ユーザは、入力装置９３６を通じてコンピュータ９１２にコマンドまたは情報を入力する。入力装置９３６には、これらに限定しないが、マウス、トラックボール、スタイラス、タッチパッド、キーボード等のポインティングデバイス、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ等が含まれる。上記およびその他の入力装置は、インタフェースポート９３８を介してシステムバス９１８を通じて処理装置９１４に接続する。インタフェースポート９３８には、例えばシリアルポート、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）が含まれる。出力装置９４０は、入力装置９３６と同タイプのポートのいくつかを使用する。したがって、例えば、ＵＳＢポートを使用してコンピュータ９１２に入力を提供し、コンピュータ９１２から出力装置９４０に情報を出力することができる。出力アダプタ９４２は、出力装置９４０の中にはモニタ、スピーカ、プリンタなど、特殊なアダプタを必要とするものがあることを説明するために提供されている。限定ではなく例示として、出力アダプタ９４２には、出力装置９４０とシステムバス９１８間の接続手段を提供するビデオカードおよび音声カードが含まれる。リモートコンピュータ９４４など、他の装置および／または装置のシステムが、入力と出力両方の機能を提供することに留意されたい。
【００４６】
コンピュータ９１２は、リモートコンピュータ９４４などの１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ９４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ネットワークノード等であり、通例は、コンピュータ９１２に関連して記載される要素の多くまたはすべてを備える。図を簡潔にするために、リモートコンピュータ９４４にはメモリ記憶装置９４６のみを図示する。リモートコンピュータ９４４は、ネットワークインタフェース９４８を通じて論理的にコンピュータ９１２に接続され、次いで通信接続９５０を介して物理的に接続される。ネットワークインタフェース９４８は、ローカルエリアネットワーク（ＬＡＮ）やワイドエリアネットワーク（ＷＡＮ）などの通信ネットワークを包含する。ＬＡＮ技術には、ＦＤＤＩ（ファイバ分散データインタフェース）、ＣＤＤＩ（銅線分散データインタフェース）、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＥＥＥ８０２．３、Ｔｏｋｅｎ  Ｒｉｎｇ／ＩＥＥＥ８０２．５等がある。ＷＡＮ技術には、これらに限定されないが、２地点間リンク、ＩＳＤＮ（総合サービスデジタル網）などの回路交換網およびその変種、パケット交換網、およびデジタル加入者回線（ＤＳＬ）がある。
【００４７】
通信接続９５０は、ネットワークインタフェース９４８をバス９１８に接続するために用いられるハードウェア／ソフトウェアを指す。通信接続９５０は、図示を分かりやすくするためにコンピュータ９１２の内部に示しているが、コンピュータ９１２の外部にあってもよい。ネットワークインタフェース９４８に接続するために必要なハードウェア／ソフトウェアには、単に例示の目的で、通常の電話グレードモデム、ケーブルモデム、ＤＳＬモデム等のモデム、ＩＳＤＮアダプタ、Ｅｔｈｅｒｎｅｔ（登録商標）カード等の内部および外部技術が含まれる。
【００４８】
図１０は、本発明のワークフロー実装を組み込むために用いられることができるコンピューティング環境例１０００の概略ブロック図である。システム１０００は、１つまたは複数のクライアント１０１０を含む。クライアント１０１０は、ハードウェアおよび／またはソフトウェア（例えばスレッド、プロセス、コンピューティングデバイス）とすることができる。システム１０００は、１つまたは複数のサーバ１０３０も含む。サーバ１０３０もハードウェアおよび／またはソフトウェア（例えばスレッド、プロセス、コンピューティングデバイス）とすることができる。サーバ１０３０は、例えば、本明細書に記載されるコンポーネントを用いることによってトランザクションを行うスレッドを収容することができる。クライアント１０１０とサーバ１０３間で可能な通信の１つは、２つ以上のコンピュータプロセス間で送信されるように適合されたデータパケットの形をとることが可能である。システム１０００は、クライアント１０１０とサーバ１０３間の通信を容易にするために用いられることができる通信フレームワーク１０５０を含む。クライアント１０１０は、クライアント１０１０にとってローカルな情報を格納するために用いられることができる１つまたは複数のクライアントデータストア１０６０に動作的に接続されている。同様に、サーバ１０３０は、サーバ１０３０にとってローカルな情報を格納するために用いられることができる１つまたは複数のサーバデータストア１０４０に動作的に接続されている。
【００４９】
上記の内容は各種の例示的態様を含む。言うまでもなく、それらの態様を説明するために構成要素や方法論のあらゆる着想可能な組み合わせを記載することは可能でなく、当業者は、多数のさらなる組み合わせおよび置き換えが可能であることを認識されよう。したがって、本明細書に記載される態様は、頭記の特許請求の範囲の主旨および範囲に該当するそのような改変、変更、および変形をすべて包含するものとする。さらに、用語「〜を含む」が詳細な説明または特許請求の範囲で使用される限りでは、この用語は、「〜を備える」が請求項中で移行語として用いられる場合の解釈と同様に包含的な意味とする。
【図面の簡単な説明】
【００５０】
【図１】ワークフロー状態をリセットする動的状態マネジャを有するワークフローの例示的システム図である。
【図２】本発明の例示的態様によるワークフロー状態をリセットする例示的方法論を説明する図である。
【図３】本発明の態様によるＡＳＰ（アクティブサーバページ）ウェブ開発技術の特定のシステム図である。
【図４】本発明のさらなる態様によるＡＳＰウェブ開発技術のさらなるシステム図である。
【図５】ワークフローを別の状態に移すためのホストからの入力を待つ対話型ワークフローが供給される例示的方法論を説明する図である。
【図６】ワークフローの状態をリセットするさらなる方法論を説明する図である。
【図７】本発明の態様によるイベント駆動型のワークフローに関連するステップの図である。
【図８】ワークフロー自体の一部としてモデル化されていない状態にワークフローをリセットし、操作するために用いられる一連の動作を説明する図である。
【図９】本発明の各種態様を実装するための例示的環境を説明する図である。
【図１０】本発明のルーティング永続サービスと併せてワークフローを実装するために用いられることができる追加的なコンピューティング環境の概略ブロック図である。
【図１】
2009522648.tif 000004
【図２】
2009522648.tif 000005
【図３】
2009522648.tif 000006
【図４】
2009522648.tif 000007
【図５】
2009522648.tif 000008
【図６】
2009522648.tif 000009
【図７】
2009522648.tif 000010
【図８】
2009522648.tif 000011
【図９】
2009522648.tif 000012
【図１０】
2009522648.tif 000013
【国際調査報告】
2009522648.tif 000014
2009522648.tif 000015