(57)【要約】  アプリケーションにおける操作を他のアプリケーションへの依存性に基づいて自動的に実施するための方法、システム、及びコンピュータで読み取り可能な記憶媒体が開示される。第１のアプリケーションを起動するコマンドが受信され得る。第１のアプリケーションは、少なくとも１つの別のアプリケーションによって提供されるデータを使用するように構成される。第１のアプリケーションが第２のアプリケーションによって提供されるデータを使用するように構成されるかどうかの判定がなされる。この判定は、コマンドの受信に応答して実施される。第１のアプリケーションが第２のアプリケーションによって提供されるデータを使用するように構成されることの判定に応答して、第２のアプリケーションの実行が開始される。
2014532909.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
コマンドを受信することであって、
前記コマンドが、第１のアプリケーションを起動することであり、
前記第１のアプリケーションが、少なくとも１つの別のアプリケーションによって提供されるデータを使用するように構成される、受信することと、
前記第１のアプリケーションが第２のアプリケーションによって提供されるデータを使用するように構成されるかどうかを判定することであって、
前記判定することが、前記コマンドの受信に応答して実施される、判定することと、
前記第１のアプリケーションが前記第２のアプリケーションによって提供されるデータを使用するように構成されることの判定に応答して、前記第２のアプリケーションの実行を開始することと、を含む、方法。
【請求項２】
前記第１のアプリケーションの実行を開始することを更に含み、
前記第１のアプリケーションの実行を開始することが、前記第２のアプリケーションの前記実行に応答して実施される、請求項１に記載の方法。
【請求項３】
前記判定することが、通知を送信することを含み、
前記通知が、前記第１のアプリケーションを起動する前記コマンドの前記受信を示す、請求項１に記載の方法。
【請求項４】
第１のエンティティが、前記第１のアプリケーションを操作し、
第２のエンティティが、前記第２のアプリケーションを操作し、
前記第２のエンティティが、前記第２のアプリケーションが前記第１のアプリケーションに前記データを提供するように構成されるかどうかを判定することを実施し、
前記第２のエンティティが、前記通知の受信に応答して前記判定することを実施する、請求項３に記載の方法。
【請求項５】
前記第２のアプリケーションが第３のアプリケーションによって提供される他のデータを使用するように構成されるかどうかを判定することと、
前記第２のアプリケーションが前記第３のアプリケーションによって提供される他のデータを使用することの判定に応答して、前記第３のアプリケーションの実行を開始することと、を更に含み、
前記第３のアプリケーションの実行を開始することが、前記第２のアプリケーションの前記実行を開始することの前に実施される、請求項３に記載の方法。
【請求項６】
前記第２のアプリケーションが前記第３のアプリケーションからの前記他のデータを使用することを判定することが、二次通知の受信に応答して実施され、
前記二次通知が、前記第２のアプリケーションが実行されることを示す、請求項５に記載の方法。
【請求項７】
第３のエンティティが、前記第３のアプリケーションを操作し、
前記第３のエンティティが、前記第２のアプリケーションが前記第３のアプリケーションからの前記他のデータを使用することを判定し、
前記第３のエンティティが、前記第２のアプリケーションが前記二次通知の前記受信に応答して前記第３のアプリケーションからの前記他のデータを使用することの前記判定を実施する、請求項６に記載の方法。
【請求項８】
複数のアプリケーション間の依存性を判定することを更に含み、
前記依存性が、前記複数のアプリケーションの前記第１のアプリケーションが、少なくとも、前記第１のアプリケーションが前記第２のアプリケーションによって提供されるデータを使用するという理由から、前記複数のアプリケーションの前記第２のアプリケーションに依存していることを示し、
前記依存性を判定することが、前記コマンドの前記受信に応答して実施される、請求項１に記載の方法。
【請求項９】
前記第２のアプリケーションの実行を開始することが、前記依存性に基づく、請求項８に記載の方法。
【請求項１０】
前記第２のアプリケーションにロックを適用することを更に含み、
前記適用することが、前記第１のアプリケーションが前記第２のアプリケーションによって提供されるデータを使用するように構成されることの前記判定に応答して実施され、
前記ロックが、前記第２のアプリケーションが前記第１のアプリケーションを起動する前記コマンドと関連付けられることを示し、
前記ロックが、前記第２のアプリケーションに開始される別の動作を防ぎ、
前記別の動作が、別のコマンドと関連付けられた動作であり、
前記別のコマンドが、前記第１のアプリケーションを起動する前記コマンド以外のコマンドである、請求項１に記載の方法。
【請求項１１】
装置であって、
１つ以上のプロセッサと、
第１のアプリケーションであって、
前記第１のアプリケーションが、前記１つ以上のプロセッサを使用して実行されるように構成される、第１のアプリケーションと、
コマンドモジュールであって、
前記コマンドモジュールが、前記第１のアプリケーションを起動するコマンドを受信するように構成される、コマンドモジュールと、
通知モジュールであって、
前記通知モジュールが、通知を送信するように構成され、
前記通知が、前記第１のアプリケーションを起動する前記コマンドの受信を示し、
前記通知モジュールが、応答通知を受信するように更に構成され、
前記応答通知が、第２のアプリケーションが実行していることを示す、通知モジュールと、を備える、装置。
【請求項１２】
前記第１のアプリケーションが、前記応答通知を受信することに応答して実行されるように構成される、請求項１１に記載の装置。
【請求項１３】
前記応答通知が、前記第１のアプリケーションが前記第２のアプリケーションによって提供されるデータに依存していることを更に示す、請求項１１に記載の装置。
【請求項１４】
前記コマンドモジュールが、前記第１のアプリケーションを停止するコマンドを受信するように更に構成され、
前記通知モジュールが、別の通知を送信するように更に構成され、
前記別の通知が、前記第１のアプリケーションを停止する前記コマンドの受信を示し、
前記通知モジュールが、別の応答通知を受信するように更に構成され、
前記別の応答通知が、前記第３のアプリケーションが前記第１のアプリケーションによって提供されるデータに依存していることを示す、請求項１１に記載の装置。
【請求項１５】
前記応答通知が、前記第３のアプリケーションが前記通知モジュールが前記別の通知の前記送信を実施することに応答して停止されることを更に示す、請求項１４に記載の装置。
【請求項１６】
１つ以上のプロセッサによって、
コマンドを受信することであって、
前記コマンドが、第１のアプリケーションを起動することである、受信することと、
通知を送信することであって、
前記通知が、前記コマンドの受信を示す、送信することと、
応答通知を受信することであって、
前記応答通知が、第２のアプリケーションが実行していることを示す、受信することと、を行うように、実行可能であるプログラム命令を記憶する、コンピュータで読み取り可能な記憶媒体。
【請求項１７】
前記応答通知が、前記第１のアプリケーションが前記第２のアプリケーションからのデータに依存していることを更に示す、請求項１６に記載のコンピュータで読み取り可能な記憶媒体。
【請求項１８】
前記プログラム命令が、
前記第１のアプリケーションを実行することであって、
前記第１のアプリケーションが、前記応答通知の受信に応答して実行され、
前記応答通知が、前記第２のアプリケーションが前記通知の前記送信に応答して実行していることを更に示す、前記第１のアプリケーションを実行するように、更に実行可能である、請求項１６に記載のコンピュータで読み取り可能な記憶媒体。
【請求項１９】
前記プログラム命令が、
前記第１のアプリケーションを停止するコマンドを受信することと、
別の通知を送信することであって、
前記別の通知が、前記第１のアプリケーションを停止する前記コマンドの受信を示す、送信することと、
別の応答通知を受信することであって、
前記別の応答通知が、前記第３のアプリケーションが前記第１のアプリケーションからのデータに依存していることを示す、受信することと、を行うように、更に実行可能である、請求項１６に記載のコンピュータで読み取り可能な記憶媒体。
【請求項２０】
前記応答通知が、前記第３のアプリケーションが前記別の通知の前記送信に応答して停止されることを更に示す、請求項１６に記載のコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、複数のアプリケーションの実行の管理に関する。特に、本出願は、他のアプリケーションへのかかるアプリケーションの依存性に基づく、それらの操作の自動的実施に関する。
【背景技術】
【０００２】
分散型コンピューティングシステムは、各々が１つ以上のアプリケーションを含み得る複数のシステムを含むことができる。各かかるアプリケーションは、企業アプリケーションなどの多層（ｎ層）アプリケーションの一部であってもよい。例えば、３層アプリケーションは、提示層と、処理層と、データ管理層とを含むことができる。各かかる層は、論理的及び／又は物理的に別個のプロセスであってもよい。ｎ層アプリケーションアーキテクチャは、ソフトウェア開発者らが柔軟かつ再利用可能なアプリケーションを作成するのを可能にする。例えば、かかるｎ層アーキテクチャを使用することによって、開発者らは、アプリケーション全体（即ち、ｎ層アプリケーションに対応するアプリケーション全体）を書き換えるか又はアップグレードする必要がなく、１度に１層のアプリケーションを変更又は追加することができる。一例として、３層アプリケーションは、提示層と、処理層と、データ層とを含むことができる。
【０００３】
３層アプリケーションの例として、提示層は、多層アプリケーションの最上のレベルであってもよい。例えば、オンラインショッピングのための企業アプリケーションの場合、提示層におけるアプリケーションは、商品閲覧、購買、及びショッピングカートの中身などのサービスに関する情報を表示することができる。この提示アプリケーションは、様々な方法によって他の層におけるアプリケーションと通信することができる。
【０００４】
この例を続けると、アプリケーション層は、データベース層のアプリケーション（複数可）からアクセスされるデータなどのデータに様々な処理を実施することができる。この処理されたデータは、提示アプリケーションに渡されてもよい。この例における第３の層は、データベース層であってもよい。データベース層は、様々なデータベース（複数可）からのデータにアクセスする（例えば、記憶し、検索する）アプリケーションを含むことができる。
【０００５】
企業アプリケーションを実装するこれらのアプリケーションは、互いに依存性を有することができる。例えば、ウェブアプリケーションは、金融アプリケーション（複数可）に依存する（例えば、それによって生成及び／又は提供されるデータを使用する）ことができる。金融アプリケーション（複数可）は、データベースアプリケーションによって提供されるデータに依存していてもよい。したがって、ウェブアプリケーションが実行しているとき、金融アプリケーション（複数可）もまた、ウェブアプリケーションにデータを提供するために実行しているはずである。同様に、金融アプリケーション（複数可）が実行しているとき、データベースアプリケーション（複数可）もまた、金融アプリケーション（複数可）にデータを提供するように実行しているはずである。
【発明の概要】
【課題を解決するための手段】
【０００６】
アプリケーションにおける操作を他のアプリケーションへの依存性に基づいて自動的に実施するための様々なシステム及び方法が開示される。例えば、一方法は、コマンドを受信することを含む。コマンドは、第１のアプリケーションを起動することである。第１のアプリケーションは、少なくとも１つの別のアプリケーションによって提供されるデータを使用するように構成される。本方法はまた、第１のアプリケーションが第２のアプリケーションによって提供されるデータを使用するように構成されるかどうかを判定することを含む。この判定は、コマンドの受信に応答して実施される。本方法はまた、第１のアプリケーションが第２のアプリケーションによって提供されるデータを使用するように構成されることの判定に応答して、第２のアプリケーションの実行を開始することを含む。
【０００７】
いくつかの実施形態では、本方法は、第１のアプリケーションの実行を開始することを含み、第１のアプリケーションの実行を開始することは、第２のアプリケーションの実行に応答して実施される。いくつかの実施形態では、この判定は、通知を送信することを含み、通知は、第１のアプリケーションを起動するコマンドの受信を示す。いくつかの実施形態では、第１のエンティティが、第１のアプリケーションを操作し、第２のエンティティが、第２のアプリケーションを操作する。第２のエンティティは、通知の受信に応答して、第２のアプリケーションが第１のアプリケーションにデータを提供するように構成されるかどうかを判定する。いくつかの実施形態では、本方法は、第２のアプリケーションが第３のアプリケーションによって判定される他のデータを使用するように構成されるかどうかを判定することを含む。本方法はまた、第２のアプリケーションが第３のアプリケーションによって提供される他のデータを使用することの判定に応答して、第３のアプリケーションの実行を開始することを含む。第３のアプリケーションの実行を開始することは、第２のアプリケーションの実行を開始する前に実施される。いくつかの実施形態では、第２のアプリケーションが第３のアプリケーションからの他のデータを使用することを判定することは、二次通知の受信に応答して実施される。二次通知は、第２のアプリケーションが実行されることを示す。
【０００８】
いくつかの実施形態では、第３のエンティティが、第３のアプリケーションを操作する。第３のエンティティは、二次通知の受信に応答して、第２のアプリケーションが第３のアプリケーションからの他のデータを使用することを判定する。いくつかの実施形態では、本方法はまた、複数のアプリケーション間の依存性を判定することを含む。依存性は、第１のアプリケーションが、少なくとも、第１のアプリケーションが第２のアプリケーションによって提供されるデータを使用するという理由から、第２のアプリケーションに依存していることを示す。この依存性の判定は、コマンドの受信に応答して実施される。いくつかの実施形態では、第２のアプリケーションの実行を開始することは、依存性に基づいている。いくつかの実施形態では、本方法はまた、第１のアプリケーションが第２のアプリケーションによって提供されるデータを使用するように構成されることの判定に応答して、第２のアプリケーションにロックを適用することを含む。ロックは、第２のアプリケーションが第１のアプリケーションを起動するコマンドと関連付けられることを示す。ロックは、第２のアプリケーションで開始される別の動作を防ぐ。別の動作は、別のコマンドと関連付けられた動作である。別のコマンドは、第１のアプリケーションを起動するコマンド以外のコマンドである。
【０００９】
１つ以上のプロセッサと、第１のアプリケーションと、コマンドモジュールと、通知モジュールとを備える装置が開示される。第１のアプリケーションは、１つ以上のプロセッサを使用して実行されるように構成される。コマンドモジュールは、第１のアプリケーションを起動するコマンドを受信するように構成される。通知モジュールは、通知を送信するように構成される。通知は、第１のアプリケーションを起動するコマンドの受信を示す。通知モジュールは、応答通知を受信するように更に構成される。応答通知は、第２のアプリケーションが実行していることを示す。
【００１０】
いくつかの実施形態では、第１のアプリケーションは、応答通知を受信することに応答して実行されるように構成される。応答通知は、第２のアプリケーションが、コマンドモジュールが通知の送信を実施することに応答して実行していることを更に示す。いくつかの実施形態では、コマンドモジュールは、第１のアプリケーションを停止するコマンドを受信するように更に構成される。通知モジュールは、別の通知を送信するように更に構成される。別の通知は、第１のアプリケーションを停止するコマンドの受信を示す。通知モジュールは、別の応答通知を受信するように更に構成される。別の応答通知は、第３のアプリケーションが第１のアプリケーションによって提供されるデータに依存していることを示す。いくつかの実施形態では、応答通知は、第３のアプリケーションが、通知モジュールが別の通知の送信を実施することに応答して停止されることを更に示す。
【００１１】
１つ以上のプロセッサによって実行可能であるプログラム命令を含むコンピュータで読み取り可能な媒体が開示される。プログラム命令は、コマンドを受信するように実行可能であり、コマンドは、第１のアプリケーションを起動することである。プログラム命令は、通知がコマンドの受信を示す通知を送信するように更に実行可能である。プログラム命令は、第２のアプリケーションが実行していることを応答通知が示す応答通知を受信するように更に実行可能である。
【００１２】
いくつかの実施形態では、応答通知は、第１のアプリケーションが第２のアプリケーションからのデータに依存していることを更に示す。いくつかの実施形態では、プログラム命令は、第１のアプリケーションを実行するように更に実行可能である。第１のアプリケーションは、応答通知の受信に応答して実行される。応答通知は、第２のアプリケーションが通知の送信に応答して実行していることを更に示す。いくつかの実施形態では、プログラム命令は、第１のアプリケーションを停止するコマンドを受信するように更に実行可能である。プログラム命令は、別の通知を送信するように更に実行可能である。別の通知は、第１のアプリケーションを停止するコマンドの受信を示す。プログラム命令は、別の応答通知を受信するように更に実行可能である。別の応答通知は、第３のアプリケーションが第１のアプリケーションからのデータに依存していることを示す。いくつかの実施形態では、応答通知は、第３のアプリケーションが別の通知の送信に応答して停止されることを更に示す。
【図面の簡単な説明】
【００１３】
本出願の実施形態は、添付の図面を参照することによってより良く理解され、その多くの目的、特徴、及び利点が当業者に明らかにされ得る。
【図１】一実施形態に従う、企業アプリケーション層と、ウェブアプリケーション層と、金融アプリケーション層と、データベースアプリケーション層とを含む多層アプリケーションを図示するブロック図である。
【図２Ａ】一実施形態に従う、通知基盤と、通知モジュールとを含む通知システムを図示するブロック図である。
【図２Ｂ】一実施形態に従う、通知システムの例示的な実装を図示するブロック図である。
【図３】一実施形態に従う、様々なアプリケーションの依存性を示す依存性グラフのブロック図である。
【図４】一実施形態に従う、アプリケーションの実行を別のアプリケーションへの依存性に基づいて開始するための方法を図示するフローチャートである。
【図５】一実施形態に従う、アプリケーションの停止を別のアプリケーションへの依存性に基づいて開始するための方法を図示するフローチャートである。
【図６】一実施形態に従う、コマンドによって指定されるようにアプリケーションにおける操作を実施するための方法を図示するフローチャートである。
【図７】一実施形態に従う、アプリケーションに対するコマンドを示す通知を処理するための方法を図示するフローチャートである。
【図８】本出願の実施形態が実装され得るネットワークアーキテクチャを図示するブロック図である。
【図９】本出願の実施形態を実装するのに好適なコンピュータシステムの一例を図示するブロック図である。
【００１４】
本出願の実施形態は、様々な修正及び代替形態の影響を受けやすいが、特定の実施形態は、図面及び詳細な説明における例として提供される。図面及び詳細な説明は、実施形態を開示される特定の形態に限定することを意図しないことが理解されるべきである。その代わりに、添付の「特許請求の範囲」によって定義されるように本発明の趣旨及び範囲内に含まれる全ての修正、均等物、及び代替を網羅することを意図する。
【発明を実施するための形態】
【００１５】
本発明の実施形態は、アプリケーションの実行を別のアプリケーションへの依存性に基づいて開始することを対象にする。これらのアプリケーションは、ｎ層アーキテクチャを使用して実装される企業アプリケーションの一部であってもよい。企業アプリケーションは、分散型アプリケーションであってもよく、ウェブアプリケーションと、金融アプリケーションと、データベースアプリケーションとを含むことができる。かかる企業アプリケーションの実行は、ウェブアプリケーション、金融アプリケーション、及びデータベースアプリケーションの各々の実行を含むべきである。一例として、かかる企業アプリケーションの実行を開始すると、ウェブアプリケーションを起動するコマンドが受信される。しかしながら、企業アプリケーションアーキテクチャでは、ウェブアプリケーションは、１つ以上の金融アプリケーションによって提供されるデータに依存してもよい。更に、各金融アプリケーションは、１つ以上のデータベースアプリケーションによって提供されるデータに依存してもよい。
【００１６】
ウェブアプリケーションを起動するコマンドを受信する、ウェブアプリケーションは、このウェブアプリケーションによって使用されるデータを提供する金融アプリケーション（及び／又は別のアプリケーション）があるかどうかを判定する。一例として、ウェブアプリケーションによって使用されるデータを提供する金融アプリケーションが識別される。この金融アプリケーションは、ウェブアプリケーションが起動され得る前に起動されるはずである。金融アプリケーションの実行が開始すると、ウェブアプリケーションが起動され得る。一実装形態では、ウェブアプリケーションは、金融アプリケーションの実行が完了した後に起動されてもよい。しかしながら、金融アプリケーションはそれ自体が、データベースアプリケーション（及び／又は別のアプリケーション）によって提供されるデータに依存する場合がある。したがって、この更なる依存性が判定され、データベースアプリケーションは、金融アプリケーションが起動され得る前に起動される（あるいは、データベースアプリケーションの実行が完了する）。
【００１７】
同様に、アプリケーションに対する他のコマンド（例えば、金融アプリケーションを停止するコマンド）を受信すると、この金融アプリケーションに対する依存性が判定される。例えば、この金融アプリケーションによって提供されるデータを使用するウェブアプリケーションが識別され得る。金融アプリケーションが停止され得る前に、ウェブアプリケーションの実行が、まず停止されるべきである。多層アプリケーションモデルにおけるアプリケーションの実行を起動及び停止する以外のコマンドに対する操作は、アプリケーション間の様々な依存性に基づいて同様に実施され得る。
【００１８】
図１は、一実施形態に従う、企業アプリケーション層と、ウェブアプリケーション層と、金融アプリケーション層と、データベースアプリケーション層とを含む企業アーキテクチャ１００を図示するブロック図である。図１は、企業アプリケーション１０２Ａ及び１０２Ｂを含む企業アプリケーション層１０２を示す。図１はまた、ウェブアプリケーション１０４Ａ〜１０４Ｃを含むウェブアプリケーション層１０４を示す。図１はまた、金融アプリケーション１０６Ａ〜１０６Ｅを含む金融アプリケーション層１０６を示す。図１はまた、データベースアプリケーション１０８Ａ〜１０８Ｆを含むデータベースアプリケーション層を示す。図１は、３層アプリケーション１０４〜１０８を含む多層アプリケーション（即ち、企業アプリケーション１０２Ａ〜１０２Ｂ）を示すが、多層アプリケーションは、所望に応じて、更なる又はより少ない層からのアプリケーションを含み得ることに留意されたい。
【００１９】
したがって、企業アプリケーション１０２Ａ及び１０２Ｂは、ウェブアプリケーション１０４、金融アプリケーション１０６、及びデータベース１０８からのアプリケーションを含む、多層アプリケーションである。ウェブアプリケーション１０４Ａ〜１０４Ｃは、グラフィカル・ユーザ・インターフェース（ＧＵＩ）をユーザに提示するウェブベースのアプリケーションであってもよい。例えば、ウェブアプリケーションは、ウェブサーバソフトウェアアプリケーションを含むことができる。このウェブブラウザアプリケーションは、別のコンピュータと通信して、そのコンピュータ上のウェブブラウザでＧＵＩを提示することができる。金融アプリケーション１０６Ａ〜１０６Ｅは、データを処理して、ウェブアプリケーション１０４Ａ〜１０４Ｃによる使用のためにこのデータを提供するアプリケーションを含むことができる。データベースアプリケーション１０８Ａ〜１０８Ｆは、データベース（複数可）にアクセスして、金融アプリケーション１０６Ａ〜１０６Ｅによる使用のためにかかるデータを提供するアプリケーションを含むことができる。
【００２０】
一実施形態では、企業アプリケーションによって使用される実際のアプリケーションは動的に変更することができ、これらの変更についての情報は、各アプリケーションに利用可能でなくてもよい。一実施形態では、ウェブアプリケーション１０４Ａは、ウェブアプリケーション１０４Ａがデータのために依存する金融アプリケーション１０６Ａを識別する情報を有してもよいが、ウェブアプリケーション１０４Ａは、金融アプリケーション１０６Ａがデータのために依存するアプリケーションを識別する情報を有しなくてもよい。別の実施形態では、企業アプリケーション１０２Ａは、ウェブアプリケーション１０４Ａ〜１０４Ｃのうちどれが企業アプリケーション１０２Ａによって使用されるかを識別する情報を有してもよいが、ウェブアプリケーション１０４Ａは、金融アプリケーション（複数可）のうち（例えば、金融アプリケーション１０６Ａ〜１０６Ｅの中で）どれがウェブアプリケーション１０４Ａによって使用されるかを識別する情報を有しなくてもよい。例えば、ウェブアプリケーション１０４Ａは、金融アプリケーション１０６Ａ〜１０６Ｅのうちの１つ以上からのデータを使用することができるが、ウェブアプリケーション１０４Ａは、ウェブアプリケーション１０４Ａが、データのために金融アプリケーション１０６Ａ〜１０６Ｅのうちのどれに依存するかを識別する情報を有しなくてもよい。更に別の実施形態では、ウェブアプリケーション１０４Ａは、アプリケーション１０４Ｂ、１０４Ｃ、１０６Ａ〜１０６Ｅ、及び／又は１０８Ａ〜１０８Ｆのうちのどのアプリケーションが金融アプリケーションであるか識別する情報さえ有しなくてもよい。したがって、実装形態に応じて、ウェブアプリケーション１０４Ａは、ウェブアプリケーション１０４Ａが依存するアプリケーションを識別する情報を有してもよいが、識別されたアプリケーションの依存性を識別する情報を有しなくてもよい。本開示を考慮すれば理解されるように、この依存性情報は、他の操作によって使用されてもよい。
【００２１】
一実施形態では、実行を開始する操作に対するコマンドなどのコマンドを受信すると、ウェブアプリケーション１０４Ａ（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、他のアプリケーション１０４Ｂ、１０４Ｃ、１０６Ａ〜１０６Ｅ、及び／又は１０８Ａ〜１０８Ｆにこのコマンドを通知することができる。このコマンドによって指定される操作は、応答がこの通知に受信されるまでウェブアプリケーション１０４Ａに関して実施されない。一実装形態では、金融アプリケーション１０６Ａ（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、かかる通知に応答することができる。この応答は、金融アプリケーション１０６Ａがウェブアプリケーション１０４Ａによって使用されるデータを提供することを示すことができる。この応答はまた、ウェブアプリケーション１０４Ａに開始され得るコマンド（例えば、ウェブアプリケーション１０４Ａの実行が開始され得る）に対応する操作を示すことができる。
【００２２】
一実施形態では、上記の例の増進のために、１０６Ａ以外のアプリケーション、即ち、アプリケーション１０４Ｂ、１０４Ｃ、１０６Ｂ〜１０６Ｅ、及び／又は１０８Ａ〜１０８Ｆ（むしろ、これらのアプリケーションをホストするエンティティ、又はこれらのアプリケーションと関連付けられた通知モジュール）は、これらのアプリケーション１０４Ｂ、１０４Ｃ、１０６Ｂ〜１０６Ｅ、及び／又は１０８Ａ〜１０８Ｆのいずれもウェブアプリケーション１０４Ａによって使用されるデータを提供しないことを示す応答（複数可）で応答することができる。別の実施形態では、１０６Ａ以外のアプリケーション、即ち、アプリケーション１０４Ｂ、１０４Ｃ、１０６Ｂ〜１０６Ｅ、及び／又は１０８Ａ〜１０８Ｆ（むしろ、これらのアプリケーションをホストするエンティティ、又はこれらのアプリケーションと関連付けられた通知モジュール）は、ウェブアプリケーション１０４Ａによって送信されるこれらの通知に単純に応答することができない。本実施形態では、タイムアウト又は別の機構は、１０６Ａ以外のこれらのアプリケーション、即ち、アプリケーション１０４Ｂ、１０４Ｃ、１０６Ｂ〜１０６Ｅ、及び／又は１０８Ａ〜１０８Ｆがウェブアプリケーション１０４Ａによって使用されるデータを提供しないことを判定するために使用されてもよい。
【００２３】
一実施形態では、通知を受信するアプリケーション（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、それがこの通知を送信したアプリケーションによって使用されるデータを提供するかどうかを判定することができる。上記の例に従って、金融アプリケーション１０６Ａ（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、ウェブアプリケーション１０４Ａからの通知を受信すると、それがウェブアプリケーション１０４Ａによって使用されるデータを提供すること（即ち、そのウェブアプリケーション１０４Ａが金融アプリケーション１０６Ａに依存していること）を判定することができる。しかしながら、この依存性を示す応答をウェブアプリケーション１０４Ａに送信し戻す前に、金融アプリケーション１０６Ａ（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、それがそれ自体、別のアプリケーションに依存しているかどうかを判定する必要がある場合がある。一実施形態では、金融アプリケーション１０６Ａ（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、金融アプリケーション１０６Ａが受信された通知と関連付けられた操作を実施したいことを各々が示し、又は金融アプリケーション１０６Ａの可能な依存性を示す、１つ以上の更なる通知を送信することができる。
【００２４】
上述されるものと同様に、別のアプリケーション（例えば、データベースアプリケーション１０８Ａ）（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、金融アプリケーション１０６Ａからの更なる通知を受信すると、それが金融アプリケーション１０６Ａによって使用されるデータを提供すること（即ち、その金融アプリケーション１０６Ａがデータベースアプリケーション１０８Ａに依存していること）を判定することができる。次に、データベースアプリケーション１０８Ａ（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、それが依存している他のアプリケーションがない（即ち、データベースアプリケーション１０８Ａによって使用されるデータを提供する他のアプリケーションがない）ことを判定することができる。次に、データベースアプリケーション１０８Ａは、即ち、金融アプリケーション１０６Ａからの更なる通知を受信することに応答して実行されてもよい。データベースアプリケーション１０８Ａの実行が開始すると、データベースアプリケーション１０８Ａの実行を示す応答が金融アプリケーション１０６Ａに送信されてもよい。金融アプリケーション１０６Ａがこの応答を受信すると、金融アプリケーション１０６Ａは実行されてもよい。金融アプリケーション１０６Ａの実行が開始すると、金融アプリケーション１０６Ａの実行を示す別の応答がウェブアプリケーション１０４Ａに送信されてもよい。ウェブアプリケーション１０４Ａがこの更なる応答を受信すると、受信されたコマンドに対する操作によって示されるように、ウェブアプリケーション１０４Ａは実行されてもよい。いくつかの実施形態では、金融アプリケーションの実行の成功など、アプリケーションの実行を成功させる際に、この金融アプリケーションのあらゆる依存性が満たされることも示す応答が送信され得ることに留意されたい。
【００２５】
結果として、企業アプリケーション１０２Ａのアプリケーションの各々の依存性は、ウェブアプリケーション１０４Ａの依存性がある実行から他の実行へ変更されるとしても維持され得る。本明細書に記載される通知システムを使用することによって、企業アプリケーションの構造は、かかる企業アプリケーションの各実行前に依存性の全てを識別する情報を有するアプリケーションなしで動的に変更され得る。一実施形態では、各アプリケーションは、この各アプリケーションが依存している別のアプリケーション（複数可）を識別する情報のみを有してもよいが、これらの別のアプリケーション（複数可）が依存しているアプリケーションを識別する情報を有しなくてもよい。例えば、ウェブアプリケーション１０４Ａは、金融アプリケーション１０６Ａへの依存を識別する情報を有してもよい。しかしながら、ウェブアプリケーション１０４Ａは、金融アプリケーション１０６Ａの依存性を識別する情報を有しないであろう。別の実施形態では、各アプリケーションは、この各アプリケーションが依存している別のアプリケーション（複数可）を識別する情報でさえ有しないであろう。
【００２６】
本明細書に記載される方法は、各企業アプリケーション１０２Ａ〜１０２Ｂに対する他のコマンドに適用されてもよい。例えば、企業アプリケーション１０２Ａの実行中（即ち、ウェブアプリケーション１０４Ａ、金融アプリケーション１０６Ａ、及びデータベースアプリケーション１０８Ａが実行しているとき）、金融アプリケーション１０６Ａの実行を停止するようにコマンドが受信される。しかしながら、一実施形態では、企業アプリケーション１０２Ａの実行中、金融アプリケーション１０６Ａの実行は、金融アプリケーション１０６Ａに依存しているあらゆるアプリケーションが最初に停止された後に停止されてもよい。したがって、金融アプリケーション１０６Ａ（むしろ、このアプリケーションをホストするエンティティ、又はこのアプリケーションと関連付けられた通知モジュール）は、金融アプリケーション１０６Ａの実行を停止することに対するコマンドを示す通知を送信してもよい。金融アプリケーション１０６Ａに依存しているアプリケーション（むしろ、各かかるアプリケーションをホストするエンティティ、又はかかるアプリケーションと関連付けられた通知モジュール）、ウェブアプリケーション１０４Ａなどが応答することができる。
【００２７】
例えば、ウェブアプリケーション１０４Ａは、金融アプリケーション１０６Ａからの通知を受信すると、ウェブアプリケーション１０４Ａに依存しているアプリケーションがあるかどうかを判定することができる。この判定は、更なる通知を送信することによってなされてもよい。これらの更なる通知の各々は、ウェブアプリケーション１０４Ａの実行を停止する意図を示し、及び／又はウェブアプリケーション１０４Ａに依存しているアプリケーションがあるかどうかを問い合わせることができる。別の実施形態では、この判定は、更なる通知を送信することなくなされてもよい。ウェブアプリケーション１０４Ａに依存している他のアプリケーションがないことをウェブアプリケーション１０４Ａ（むしろ、このアプリケーションをホストするエンティティ）が判定すると、ウェブアプリケーション１０４Ａの実行は、金融アプリケーション１０６Ａへの応答を送信しながら停止されてもよい。金融アプリケーション１０６Ａがこの応答を受信すると、金融アプリケーション１０６Ａの実行は停止されてもよい。一実施形態では、本明細書に記載される停止実行コマンドの場合、停止されているアプリケーション（例えば、金融アプリケーション１０６Ａ）によって使用されるデータを提供する別のアプリケーション（例えば、データベースアプリケーション１０８Ａ）は、この停止実行コマンドによって必ずしも影響を受けない。
【００２８】
図２Ａは、一実施形態に従う、通知基盤と、通知モジュールとを含む通知システム２００を図示するブロック図である。通知システムは、例えば、図１に記載される、多層アプリケーションによる通知及び／又は応答を通信するために使用されてもよい。
【００２９】
通知システムは、通知モジュール２０２Ａ〜２０２Ｄと、通知ブロードキャストモジュール２０４と、通知基盤２０６とを含む。通知モジュール２０２Ａは、企業アプリケーション１０２Ａなどの企業アプリケーションと関連付けられる。通知モジュール２０２Ｂは、ウェブアプリケーション１０４Ａなどのウェブアプリケーションと関連付けられる。通知モジュール２０２Ｃは、金融アプリケーション１０６Ａなどの金融アプリケーションと関連付けられる。通知モジュール２０２Ｄは、データベースアプリケーション１０８Ａなどのデータベースアプリケーションと関連付けられる。通知基盤２０６は、通知モジュール２０２Ａ〜２０２Ｄ間の通知（及び応答）を送信及び受信することを容易にする。
【００３０】
通知ブロードキャストモジュール２０４は任意であり、いくつかの実施形態で使用されてもよい。一実施形態では、通知モジュール２０２Ｂは、その関連したウェブアプリケーション１０４Ａが全ての他の通知モジュール、例えば、通知モジュール２０２Ａ、２０２Ｃ、及び２０２Ｄに受信されたコマンドによって示されるように起動されることを示す通知などの通知を送信することができる。別の実施形態では、通知モジュール２０２Ｂは、かかる通知を通知ブロードキャストモジュール２０４に送信することができる。通知ブロードキャストモジュール２０４は、通知モジュール２０２Ｂからのかかる通知を受信することに応答して、更なる通知（例えば、実質的に類似の通知）を通知モジュール２０２Ａ、２０２Ｃ、及び２０２Ｄに送信することができる。一実施形態では、通知モジュール２０２Ａ〜２０２Ｄの各々はまた、それぞれのアプリケーションが操作を実施したことなどを示す、他の通知モジュール２０２Ａ〜２０２Ｄからの応答を受信することができる。
【００３１】
図２Ｂは、一実施形態に従う、通知システムの例示的なネットワークシステム２００Ｂを図示するブロック図である。ネットワークシステム２００Ｂは、システム２０８Ａ〜２０８Ｄを含み、これは、各々がネットワーク２１０を使用して他のシステム２０８Ａ〜２０８Ｄと通信することができる。システム２０８Ａは、企業アプリケーション２１２を含み、システム２０８Ｂは、ウェブアプリケーション２１４を含み、システム２０８Ｃは、金融アプリケーション２１６を含み、システム２０８Ｄは、データベースアプリケーション２１８を含む。更に、システム２０８Ａ〜２０８Ｄの各々は、それぞれの通知モジュール２２０Ａ〜２２０Ｄ、並びにそれぞれのコマンドモジュール２２４Ａ〜２２４Ｄを含む。ネットワークシステム２００Ｂはまた、通知コントローラ２２２を含むことができる。
【００３２】
一実施形態では、システム２０８Ａ〜２０８Ｄのうちの１つ以上は、仮想マシンを使用して実装されてもよい。各仮想マシンは、物理的コンピュータハードウェアの様式でコンピュータ命令を実行する物理的コンピュータのソフトウェア実装であってもよい。ハイパーバイザ（図示せず）は、ソフトウェア及び／又はハードウェアで実装されてもよく、各システム２０８Ａ〜２０８Ｄに仮想マシンを同時にサポートする能力を提供してもよい。ハイパーバイザは、仮想マシン間でコンピュータリソース（例えば、処理能力、メモリなど）の配分を調整することによってかかる能力を提供することができ、そのため仮想マシンが物理的コンピュータと同様な働きをするようにする。仮想マシンは、ソフトウェアで実装され、物理的ハードウェアに同様にコンピュータ命令を実行することができる。各仮想マシンは、ホストコンピュータが単にその仮想マシンの制御下にあるかのように動作することができるため、ホストコンピュータシステムのリソースを共有してもよい。例えば、システム２０８Ａ〜２０８Ｄのうちの１つ以上は、仮想マシンを使用して実装されてもよく、各かかる仮想マシンは、それぞれのアプリケーション、通知モジュール、及びコマンドモジュールを実行することができる。
【００３３】
一実施形態では、各システム２０８Ａ〜２０８Ｄは、それぞれのアプリケーション２１２〜２１８をホストすることができる。システム２０８Ａ〜２０８Ｄは各々、オベレーティングシステムと、それぞれのアプリケーション２１２〜２１８と関連付けられるサービスグループとを含むことができる。一実施形態では、サービスグループ（図示せず）は、依存性など、各アプリケーションのデータを含む各アプリケーションに対するデータ構造であってもよい。しかしながら、各かかるサービスグループは、各企業アプリケーションの依存性の一部分のみを含んでもよい。一実施形態では、企業アプリケーション２１２はそれ自体が、多層アプリケーションであってもよく、したがってアプリケーション２１４〜２１８などの複数の分散型アプリケーションを含み得ることに留意されたい。換言すれば、企業アプリケーション２１２の実行は、アプリケーション２１４〜２１８の各々の実行を含むことができる。
【００３４】
各コマンドモジュール２２４Ａ〜２２４Ｄは、数ある中でも実行を起動又は停止するコマンド、実行を休止するコマンドなどの１つ以上のコマンドを受信することができる。コマンドモジュールは、ソフトウェア、ハードウェア、又はこれらの組み合わせのうちの１つ以上として実装されてもよい。一実施形態では、コマンドモジュールは、受信されたコマンドによって指定されるように、関連したアプリケーションにおける操作を開始することができる。
【００３５】
例えば、コマンドモジュール２２４Ｂは、受信されたコマンドによって示されるように、ウェブアプリケーション２１４の起動実行を開始することができるが、他のアプリケーションへの依存性を判定した後にのみ開始することができる。別の実施形態では、コマンドモジュールは、オペレーティングシステムなど、システムのソフトウェアエンティティと通信して、受信されたコマンドによって指定される操作を実施することができる。例えば、コマンドモジュール２２４Ｂは、システム２０８Ｂのオペレーティングシステムと通信して、受信されたコマンドによって指定されるように、ウェブアプリケーション２１４の実行を開始することができる。
【００３６】
通知モジュール２２０Ａ〜２２０Ｄは、アプリケーション２１２〜２１８間の依存性を判定するために送信／受信されたものなど、通知を送信し、及び／又は応答を受信することができる。通知モジュール２２０Ａ〜２２０Ｄは、図２Ａの通知モジュール２０２Ａ〜２０２Ｄを実装することができる。一実施形態では、各通知モジュール２２０Ａ〜２２０Ｄは、それぞれのコマンドモジュール２２４Ａ〜２２４Ｄと通信することができる。例えば、コマンドモジュール２２４Ｂは、ウェブアプリケーション２１４の実行を開始するコマンドを受信することができる。ウェブアプリケーション２１４の実行を開始する前に、コマンドモジュール２２４Ｂは、通知モジュール２２０Ｂと通信することができ、通知モジュール２２０Ｂにこの受信されたコマンド及び／又は意図を知らせて、ウェブアプリケーション２１４の実行を開始する。一実施形態では、ウェブアプリケーション２１４は、１つ以上の応答が（例えば、通知モジュール２２０Ｂによって）受信されるまで（コマンドによって示されるように）実行されない。各かかる応答は、別のシステム、例えば、システム２０８Ｃがウェブアプリケーション２１４によって使用されるデータを提供し得るアプリケーション（例えば、金融アプリケーション２１６）を含むことを示すことができる。各かかる応答はまた、ウェブアプリケーション２１４が依存しているデータを別のシステム上のこのアプリケーションが提供することを示す。
【００３７】
通知コントローラ２２２は、システム２００Ｂの任意の部分である。通知コントローラは、図２Ａの通知ブロードキャストモジュール２０４を実装することができる。一実施形態では、通知コントローラ２２２は、通知モジュール間の通知を受信、送信、及び／又はルートを決めることができる。例えば、通知モジュール２２０Ｂは、通知コントローラ２２２に通知を送信することができる。次に、通知コントローラは、システム２００Ｂ内の全てのシステム及び／又は通知モジュールにこの通知をブロードキャストすることができる。通知モジュール２２０Ｃは、応答を通知モジュール２２０Ｂに直接送信し戻すことができ、及び／又は通知モジュール２２０Ｃは、応答を通知コントローラ２２２に送信し戻すことができる。次に、通知コントローラ２２２は、この応答を通知コントローラ２２０Ｂに送信することができる。一実施形態では、通知コントローラ２２２は、ある特定のアプリケーションが別のアプリケーションによる使用にデータを提供するように実行している（あるいは、実行した）かどうかを示すフラグを採用することができる。
【００３８】
例えば、システム２０８Ｃは、金融アプリケーション２１６を実行する際に、応答をシステム２０８Ｂに送信し戻すことができる。金融アプリケーション２１６の実行が開始すると、システム２０８Ｃは、ネットワーク２１０を介するなどウェブアプリケーション２１４によって使用されるデータを提供することができる。一実施形態では、アプリケーション、例えば、ウェブアプリケーション２１４及び金融アプリケーション２１６はまた、共通の場所、例えば、共通データストアに位置するデータにアクセスすることができる。本実施形態では、システム２０８Ｃは、金融アプリケーション２１６がこの共通の場所でデータへの必要とされる操作を実施すると、応答をシステム２０８Ｂに送信し戻すことができる。したがって、システム２０８Ｂは、システム２０８Ｂがこの応答を受信するまでウェブアプリケーション２１４における操作を実施しない。
【００３９】
図３は、一実施形態に従う、様々なアプリケーションの依存性３００を示す依存性グラフのブロック図である。図３は、ウェブアプリケーション３０２Ａ及び３０２Ｂと、金融アプリケーション３０４Ａ〜３０４Ｃと、データベースアプリケーション３０６Ａ〜３０６Ｄとの間の依存性３００を示す。図示されるように、ウェブアプリケーション３０２Ａは、金融アプリケーション３０４Ａ及び３０４Ｂに依存している。ウェブアプリケーション３０２Ｂは、金融アプリケーション３０４Ｃに依存している。金融アプリケーション３０４Ａは、データベースアプリケーション３０６Ａ及び３０６Ｂに依存している。金融アプリケーション３０４Ｂは、データベースアプリケーション３０６Ｂ及び３０６Ｃに依存している。金融アプリケーション３０４Ｃは、データベースアプリケーション３０６Ｃ及び３０６Ｄに依存している。データベースアプリケーション３０６Ａ〜３０６Ｄは、その他のアプリケーションに依存していない。
【００４０】
一実施形態では、システム２０８Ｂのコマンドモジュール２２４Ｂがウェブアプリケーション２１４の実行を開始するコマンドを受信するなど、ウェブアプリケーションと関連付けられたシステムが実行を開始するコマンドを受信する際に、ウェブアプリケーションは、このウェブアプリケーションが依存するアプリケーション（複数可）と関連付けられたシステム（複数可）が準備ができていることを（例えば、応答を介して）示すまで実行されない。図３に示される例では、金融アプリケーション３０４Ａ及び３０４Ｂの両方と関連付けられたシステム（複数可）は、例えば、システム２０８Ｂへの応答を介して、ウェブアプリケーション３０２が依存しているデータを提供する準備ができていることを示すであろう。しかしながら、各金融アプリケーション３０４Ａ及び３０４Ｂと関連付けられたシステム（複数可）は、金融アプリケーション３０４Ａ及び３０４Ｂが依存しているデータを提供する準備ができていることをデータベースアプリケーション３０６Ａ〜３０６Ｃと関連付けられたシステム（複数可）が最初に示すまでこの表示を（ウェブアプリケーション３０２Ａに）示さないであろう。一実施形態では、金融アプリケーション３０４Ａ及び３０４Ｂは、これらの表示がウェブアプリケーション３０２に示される前に実行される。別の実施形態では、金融アプリケーション３０４Ａ及び３０４Ｂは、これらの表示がウェブアプリケーション３０２Ａに示される前に共通の場所でデータに機能する。
【００４１】
一実施形態では、ウェブアプリケーション３０２Ａと関連付けられたシステムが実行を開始するコマンドを受信する際に、そのウェブアプリケーションに対する依存性における各アプリケーションにロックが適用される。この例では、ロックは、ウェブアプリケーション３０２Ａ、金融アプリケーション３０４Ａ及び３０４Ｂ、並びにデータベースアプリケーション３０６Ａ〜３０６Ｃに適用されるであろう。このロックは、ウェブアプリケーション３０２Ａからデータベースアプリケーション３０６Ａ〜３０６Ｃへの通知の伝搬中にこれらのアプリケーションの各々に適用されてもよい。結果として、ロックを有するアプリケーションは、別のコマンドと関連付けられる通知及び／又は操作によってアクセスされ得ない。一実施形態では、各アプリケーションに対するサービスグループは、そのアプリケーションに対するロックを実装することができる。一実施形態では、ロックは、所定のアプリケーションが異なるタイプの操作によってアクセスされるのを防ぐことができる。例えば、データベースアプリケーション３０６Ｃは、金融アプリケーション３０４Ｂによってロックされ、データベースアプリケーション３０６Ｃの実行を開始するための操作に関する金融アプリケーション３０４Ｃによって更に使用され（及びそれからの通知への応答で応答し）てもよい。しかしながら、このロックは、他の操作（停止、休止など）がデータベースアプリケーション３０６Ｃに適用されるのを防ぐであろう。
【００４２】
図４は、一実施形態に従う、アプリケーションの実行を別のアプリケーションへの依存性に基づいて開始するための方法４００を図示するフローチャートである。方法４００は、代替の実施形態を導き出すために当業者によって修正されてもよい。また、本実施形態における工程は順次示される。しかしながら、いくつかの工程は、図示されるのとは異なる順に生じてもよく、いくつかの工程は同時に実施されてもよく、いくつかの工程は、他の工程と組み合わされてもよく、いくつかの工程は、別の実施形態で不在でもよい。方法４００は、図１〜３に関連して記載される要素の変化を参照して記載される。
【００４３】
４０２では、第１のアプリケーションの実行を開始するようにコマンドが受信される。例えば、図２Ｂを参照すると、システム２０８Ｂのコマンドモジュール２２４Ｂは、ウェブアプリケーション２１４を実行するコマンドを受信することができる。しかしながら、システム２０８Ｂは、それが、ウェブアプリケーション２１４が依存性を有するかどうかを判定するまで、ウェブアプリケーション２１４を実行しない。
【００４４】
４０４では、第１のアプリケーションが第２のアプリケーションに依存しているかどうかの判定がなされる。例えば、図２Ｂを参照すると、システム２０８Ｂは、１つ以上の通知を送信することなどによって、この判定を行うことができる。一実施形態では、システム２０８Ｂはまた、システム２０８Ｃなどの別のシステムと通信して、アプリケーション２１４に対する依存性を判定することができる。本実施形態に従って、システム２０８Ｂは、システム２０８Ｃ及び／又は他のシステムと通信して、ウェブアプリケーション２１４に対する依存性の少なくとも一部分を判定することができる。例えば、通知モジュール２２０Ｂは、この判定を行うときに、応答（例えば、別の通知モジュール及び／又は通知コントローラからの）を受信するのを待つか、又はタイムアウトを待つことができる。
【００４５】
４０６では、第１のアプリケーションが第２のアプリケーションに依存している場合、方法４００は、要素４０８を実行する。第１のアプリケーションが第２のアプリケーションに依存していない場合、方法４００は、要素４１０を実行する。
【００４６】
４０８では、第２のアプリケーションの実行が開始される。一実施形態では、金融アプリケーション２１６は、通知（通知モジュール２２０Ｂ及び／又は通知コントローラ２２２からなど）を受信することに応答してシステム２０８Ｃによって実行される。別の実施形態では、金融アプリケーションの実行が開始すると、ウェブアプリケーションをホストするシステムに応答が送信される。本開示を考慮すれば理解されるように、金融アプリケーションの実行はそれ自体が、他のアプリケーションに依存していてもよい。
【００４７】
４１０では、第１のアプリケーションの実行が開始される。一実施形態では、ウェブアプリケーション２１４は、金融アプリケーション（ウェブアプリケーション２１４によって使用されるデータを提供する）が実行していることを示す応答を受信することに応答して実行される。
【００４８】
図５は、一実施形態に従う、アプリケーションの停止を別のアプリケーションへの依存性に基づいて開始するための方法５００を図示するフローチャートである。方法５００は、代替の実施形態を導き出すために当業者によって修正されてもよい。また、本実施形態における工程は順次示される。しかしながら、いくつかの工程は、図示されるのとは異なる順に生じてもよく、いくつかの工程は同時に実施されてもよく、いくつかの工程は、他の工程と組み合わされてもよく、いくつかの工程は、別の実施形態で不在でもよい。方法５００は、図１〜３に関連して記載される要素の変化を参照して記載される。
【００４９】
５０２では、第１のアプリケーションの実行を停止するようにコマンドが受信される。例えば、図２Ｂを参照すると、システム２０８Ｃのコマンドモジュール２２４Ｃは、金融アプリケーション２１６を停止するコマンドを受信することができる。しかしながら、システム２０８Ｃは、それが、金融アプリケーション２１６に依存しているアプリケーションがあるかどうかを判定するまで、金融アプリケーション２１６の実行を停止しない。
【００５０】
５０４では、第２のアプリケーションが第１のアプリケーションに依存しているかどうかの判定がなされる。例えば、図２Ｂを参照すると、システム２０８Ｃは、１つ以上の通知を送信することなどによって、この判定を行うことができる。一実施形態では、システム２０８Ｃはまた、システム２０８Ｂなどの別のシステムと通信して、アプリケーション２１６に対する依存性を判定することができる。本実施形態に従って、システム２０８Ｃは、システム２０８Ｂ及び／又は他のシステムと通信して、金融アプリケーション２１６に対する依存性の少なくとも一部分を判定することができる。例えば、通知モジュール２２０Ｃは、この判定を行うときに、応答（例えば、別の通知モジュール及び／又は通知コントローラからの）を受信するのを待つか、又はタイムアウトを待つことができる。
【００５１】
５０６では、第２のアプリケーションが第１のアプリケーションに依存している場合、方法５００は、要素５０８を実行する。第２のアプリケーションが第２のアプリケーションに依存していない場合、方法５００は、要素５１０を実行する。
【００５２】
５０８では、第２のアプリケーションの停止が開始される。一実施形態では、ウェブアプリケーション２１４は、通知（通知モジュール２２０Ｃ及び／又は通知コントローラ２２２からなど）を受信することに応答してシステム２０８Ｂによって停止される。一実施形態では、ウェブアプリケーションが停止されると、金融アプリケーションをホストするシステムに応答が送信されてもよい。また、ウェブアプリケーションの実行はそれ自体が、他のアプリケーションに依存していてもよい。
【００５３】
５１０では、第１のアプリケーションの停止が開始される。一実施形態では、金融アプリケーション２１６は、ウェブアプリケーション（金融アプリケーション２１４によって提供されるデータを使用する）が停止したことを示す応答を受信することに応答して停止される。
【００５４】
図６は、一実施形態に従う、コマンドによって指定されるようにアプリケーションにおける操作を実施するための方法を図示するフローチャートである。方法６００は、代替の実施形態を導き出すために当業者によって修正されてもよい。また、本実施形態における工程は順次示される。しかしながら、いくつかの工程は、図示されるのとは異なる順に生じてもよく、いくつかの工程は同時に実施されてもよく、いくつかの工程は、他の工程と組み合わされてもよく、いくつかの工程は、別の実施形態で不在でもよい。方法６００は、図１〜３に関連して記載される要素の変化を参照して記載される。
【００５５】
６０２では、第１のアプリケーションに対してコマンドが受信される。図２Ｂを参照すると、コマンドは、システム２０８Ｂのコマンドモジュール２２４Ｂで受信される。コマンドは、数ある中でも起動実行コマンド、停止実行コマンド、又は休止実行コマンドのうちの１つであってもよい。コマンドは、ウェブアプリケーション２１４などの第１のアプリケーションに実施される操作を指すことができる。この操作は、後述されるように、依存性が判定されるまで第１のアプリケーションに実施されない。
【００５６】
６０４では、１つ以上の通知が送信される。一実施形態では、この通知は、第１のアプリケーションに対するコマンドを示すことができる。別の実施形態では、この通知は、コマンド（この操作を指定する）それ自体を示すことなく第１のアプリケーションに操作が実施されることを示すことができる。更に別の実施形態では、この通知は、操作及び／又はコマンドを示すことなく第１のアプリケーションが依存しているアプリケーションがあるかどうかを問い合わせることができる。例えば、ウェブアプリケーション２１４に対する起動実行コマンドを示す通知が送信されてもよい。本明細書に記載されるように、通知は、通知モジュール２２０Ｂによって通知コントローラ２２２（次にこの通知を他のシステムに伝搬し得る）に送信されてもよく、及び／又は通知モジュール２２０Ｂは、通知を他のシステムに送信することができる。実装に応じて、通知モジュール２２０Ｂは、これらの通知（複数可）を再送して、他の通知モジュール（複数可）が応答するのに十分な時間が与えられたことを確実にすることができる。
【００５７】
６０６では、方法６００は、通知（複数可）への１つ以上の応答を待つ。例えば、通知モジュール２２０Ｂは、他のシステム（又は通知コントローラ２２２）からの応答（複数可）を待つことができる。換言すれば、要素６０６は、第１のアプリケーションの依存性の判定を待つ。通知モジュール２２０Ｂは、タイムアウト又は別の機構を使用して、システム２０８Ｂが、受信されたコマンドによって指定される操作を実施するのに過度に長く待たないことを確実にすることができる。例えば、通知モジュール２２０Ｂは、この操作を実施する前に所定の時間量待つことができる。方法６００のフローチャートのために、タイムアウト又は別の機構は、通知への応答として通知モジュール２２０Ｂによって解釈されてもよい。
【００５８】
６０８では、通知への応答（複数可）が受信される場合、操作（複数可）は、コマンドによって指定されるように第１のアプリケーションに実施される。例えば、通知への応答（複数可）が通知モジュール２２０Ｂによって受信されると、システム２０８Ｂは、ウェブアプリケーション２１４の実行を開始することができる。
【００５９】
図７は、一実施形態に従う、アプリケーションに対するコマンドを示す通知を処理するための方法を図示するフローチャートである。方法７００は、代替の実施形態を導き出すために当業者によって修正されてもよい。また、本実施形態における工程は順次示される。しかしながら、いくつかの工程は、図示されるのとは異なる順に生じてもよく、いくつかの工程は同時に実施されてもよく、いくつかの工程は、他の工程と組み合わされてもよく、いくつかの工程は、別の実施形態で不在でもよい。方法７００は、図１〜３に関連して記載される要素の変化を参照して記載される。
【００６０】
７０２では、通知が受信される。一実施形態では、この通知は、第１のアプリケーションに対するコマンドを示すことができる。別の実施形態では、この通知は、コマンド（この操作を指定する）それ自体を示すことなく第１のアプリケーションに操作が実施されることを示すことができる。更に別の実施形態では、この通知は、操作及び／又はコマンドを示すことなく第１のアプリケーションが依存しているアプリケーションがあるかどうかを問い合わせることができる。例えば、図２Ｂを参照すると、通知は、システム２０８Ｃの通知モジュール２２０Ｃによって受信されてもよい。この通知は、通知モジュール２２０Ｂ及び／又は通知コントローラ２２２によって送信されてもよい。
【００６１】
７０４では、受信された通知に関するアプリケーションがあるかどうかに対する判定がなされる。例えば、システム２０８Ｃは、それが受信された通知に関するアプリケーションを含むかどうかを判定することができる。この例では、システム２０８Ｃは、それが通知に関する金融アプリケーション２１６を含む（例えば、ホストする）ことを判定することができる。システム２０８Ｃは、例えば、ウェブアプリケーション２１４が金融アプリケーション２１６によって提供されるデータに依存していることを示し得る独自の内部データ構造を検査することによって、この判定を行うことができる。この場合、システム２０８Ｃによる方法７００の実行は、要素７０６に進むことができる。更に、この依存性が判定された場合、システム２０８Ｃは、要素７１０を参照して後述されるように、金融アプリケーション２１６における操作を実施する予定である。一実施形態では、このアプリケーションへのロックがあるが、このロックが通知によって示されるように同じ操作タイプのためであっても、操作は、要素７０６に進むことができる。
【００６２】
別の例では、システム２０８Ｄは、システム２０８Ｂから類似の通知を受信することができる。しかしながら、システム２０８Ｄは、それがこの通知に関連するアプリケーションを含まないことを判定することができる。したがって、システム２０８Ｄは、ウェブアプリケーション２１４がデータベースアプリケーション２１８によって提供されるデータに依存していないことを判定することができる。この場合、システム２０８Ｄによる方法７００の実行は停止することができる。一実施形態では、受信された通知に関するアプリケーションがあるが、このアプリケーションがそれへのロックを有し、かつこのロックが別の操作タイプのためであっても、システム２０８Ｄによる方法７００の実行は停止することができる。一実施形態では、受信された通知に関するアプリケーションがあるが、このアプリケーションがそれへのロック、又は別の操作タイプのためであるロックを有しても、システム２０８Ｄによる方法７００の実行は、このロックが解除されるまで待つことができる。
【００６３】
７０６では、更なる通知（複数可）が送信される。一実施形態では、この更なる通知は、コマンドを示すことなく第２のアプリケーションに操作が実施されることを示すことができる。更に別の実施形態では、この更なる通知は、操作又はコマンドを示すことなく第２のアプリケーションが依存しているアプリケーションがあるかどうかを問い合わせることができる。例えば、図２Ｂを参照すると、更なる通知は、システム２０８Ｄの通知モジュール２２０Ｄによって受信されてもよい。この更なる通知は、通知モジュール２２０Ｃ及び／又は通知コントローラ２２２によって送信されてもよい。一実施形態では、ロックは、第２のアプリケーションに適用されてもよく、これは、この第２のアプリケーションに実施される操作のタイプを示してもよい。
【００６４】
７０８では、方法７００は、更なる通知（複数可）への１つ以上の応答を待つ。例えば、通知モジュール２２０Ｃは、他のシステム（又は通知コントローラ２２２）からの応答（複数可）を待つことができる。通知モジュール２２０Ｃは、タイムアウト又は別の機構を使用して、システム２０８Ｃが、要素７０２で受信される通知に関する操作を実施するのに過度に待たないことを確実にすることができる。例えば、通知モジュール２２０Ｃは、この操作を実施する前に所定の時間量待つことができる。方法７００のフローチャートのために、タイムアウト又は別の機構は、通知への応答として通知モジュール２２０Ｃによって解釈されてもよい。
【００６５】
７１０では、更なる通知への応答（複数可）が受信される場合、操作（複数可）は、第２のアプリケーションに実施される。上述されるように、依存性が要素７０４で判定される場合、要素７０２の通知を受信するシステム（例えば、システム２０８Ｃ）は、第２のアプリケーション（例えば、金融アプリケーション２１６）へのある特定の操作を実施する予定である。例えば、更なる通知（複数可）への応答（複数可）が通知モジュール２２０Ｃによって受信されると、システム２０８Ｃは、金融アプリケーション２１６の実行を開始することができる。
【００６６】
７１２では、通知への応答（複数可）が送信される。したがって、各かかる応答は、要素７０２の通知を受信するシステムがその通知を送信するシステムのアプリケーションによって使用されるデータを提供し得ることを示すことができる。一実施形態では、各かかる応答は、操作（要素７０２で受信される通知に関する）が実施されたことを示すことができる。例えば、要素７０２で受信される通知への応答は、通知モジュール２２０Ｃによって送信されてもよい。この応答は、システム２０８Ｃが金融アプリケーション２１６の実行を開始したことを示すことができる。この応答はまた、金融アプリケーションによって提供されるデータがウェブアプリケーション２１４によって使用される準備ができていることを、両方のアプリケーションが共通ストレージに位置するデータにアクセスしているようなときに示すことができる。
【００６７】
ネットワークアーキテクチャの要素は、異なるコンピュータシステム及びネットワークを使用して実装されてもよい。１つのかかるネットワーク環境の例が、図８を参照して後述される。
【００６８】
図８は、１つ以上のクライアントが様々なネットワーク接続を介してサーバへのアクセスを備えているネットワークアーキテクチャ８００を図示する簡略化されたブロック図である。図８に図示されるように、クライアント８０２（１）〜（Ｎ）がネットワーク８１０に連結されるため、ネットワーク７１０を介してサーバ８０６（システム（複数可）２０８Ａ〜２０８Ｄ及び／又は通知コントローラ２２２を実装するために使用され得る）にアクセスすることができる。他のサーバ（図示せず）は代わりに、システム（複数可）２０８Ａ〜２０８Ｄ及び／又は通知コントローラ２２２を実装するために使用されてもよい。クライアントは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバ、携帯電話、スマートフォン、ネットワークが使用可能な携帯情報端末（ＰＤＡ）などを使用して実装されてもよい。サーバ８０６にアクセスするためにクライアント８０２（１）〜（Ｎ）によって使用され得るネットワーク８１０の一例がインターネットである。あるいは、サーバ８０６へのアクセスは、イーサネット（登録商標）、ＩＥＥＥ  ８０２．１１ｘ、又はいくつかの他の通信プロトコルを利用してローカルエリアネットワーク（ＬＡＮ）によって提供されてもよい。理解されるように、サーバ８０６は、それに直接連結されるクライアント（図示せず）によってアクセスされてもよい。
【００６９】
図８にも図示されるように、サーバ８０６は、サーバストレージデバイス８０８に連結され、これは、クラスタ共有容量などのデータ容量を含む。サーバストレージデバイス８０８は、単一のストレージデバイス又はストレージデバイスの集まりとして実装されてもよい。サーバストレージデバイス８０８はまた、ストレージエリアネットワークとして実装されてもよく、これは、遠隔ストレージデバイスをサーバ（例えば、サーバ８０６）に連結して、遠隔ストレージデバイスが、例えばサーバのＯＳにローカル接続のストレージデバイスとして現れるようにする。
【００７０】
本開示を考慮すれば、当業者であれば、サーバストレージデバイス８０８が内部又は外部ハードディスクドライブ（ＨＤＤ）、光ドライブ（例えば、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷなど）、フラッシュメモリドライブ（例えば、ＵＳＢメモリスティックなど）、テープドライブなどを含むがこれらに限定されない任意のタイプのコンピュータで読み取り可能な記憶媒体によって実装され得ることを理解するであろう。あるいは、当業者であれば、本開示を考慮すれば、ネットワークアーキテクチャ８００が本ネットワークの考察に密接な関係がなく、かつ本明細書では更に考察されないルータ、ファイアウォールなどの他の構成要素を含み得ることも理解するであろう。当業者であれば、他の構成が可能であることも理解するであろう。例えば、クライアント８０２（１）〜（Ｎ）は、サーバ又はインターネットを使用することなくサーバストレージデバイス８０８に直接連結されてもよく、サーバ８０６は、クライアント及びサーバの両方を実装するために使用されてもよく、ネットワークアーキテクチャ８００は、クライアント８０２（１）〜（Ｎ）を使用することなく実装されてもよく、以下同様に行われる。
【００７１】
ネットワークアーキテクチャ８００の例示的な実装として、サーバ８０６は、クライアント８０２（１）〜（Ｎ）によって生成されたデータへの要求をサーバストレージデバイス８０８で記憶されたデータにサービスする。多層アプリケーションのアプリケーションのうちのいずれかが、図４〜７によって図示される様式で他のサーバのうちの１つを使用して実装されてもよい。
【００７２】
図９は、本開示を実装するのに好適なコンピュータシステム９１０のブロック図を図示する。コンピュータシステム９１０は、数ある中でもシステム（複数可）２０８Ａ〜２０８Ｄ及び／又は通知コントローラ２２２などのネットワーク化されたシステム２００Ｂで様々なコンピュータシステムの例示であってもよい。コンピュータシステム９１０は、コンピュータシステム９１０の主要なサブシステムを相互接続するバス９１２を含み、主要なサブシステムには、中央処理装置９１４、システムメモリ９１７（典型的には、ＲＡＭを含むが、ＲＯＭ、フラッシュＲＡＭなども含み得る）、入力／出力コントローラ９１８、オーディオ出力インターフェース９２２を介するスピーカシステム９２０などの外部オーディオデバイス、ディスプレイアダプタ９２６を介するディスプレイ画面９２４などの外部デバイス、シリアルポート９２８及び９３０、キーボード９３２（キーボードコントローラ９３３でインターフェース接続される）、ストレージインターフェース９３４、フロッピーディスク９３８（「フロッピー」は登録商標、以下同じ）を受容するように動作可能であるフロッピーディスクドライブ９３７、ファイバチャネルネットワーク９９０と接続するように動作可能であるホスト・バス・アダプタ（ＨＢＡ）インターフェースカード９３５Ａ、ＳＣＳＩバス９３９に接続するように動作可能であるホスト・バス・アダプタ（ＨＢＡ）インターフェースカード９３５Ｂ、及び光ディスク９４２を受容するように動作可能である光ディスクドライブ９４０などが含まれる。同様に、マウス９４６（又はシリアルポート９２８を介してバス９１２に連結された他のポイントアンドクリックデバイス）、モデム９４７（シリアルポート９３０を介してバス９１２に連結される）、及びネットワークインターフェース９４８（バス９１２に直接連結される）が含まれる。
【００７３】
バス９１２は、上述のように、中央処理装置９１４とシステムメモリ９１７との間のデータ通信を可能にし、システムメモリ９１７は、リードオンリーメモリ（ＲＯＭ）又はフラッシュメモリ（いずれも図示せず）と、ランダムアクセスメモリ（ＲＡＭ）（図示せず）とを含んでもよい。ＲＡＭは概して、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリである。ＲＯＭ又はフラッシュメモリは、他のコードと共に、周辺コンポーネンツとの相互作用等の基本的なハードウェアの動作を制御する、ベーシック・インプット／アウトプット・システム（ＢＩＯＳ）を含むことができる。コンピュータシステム９１０に常駐するアプリケーションは概して、ハードディスクドライブ（例えば、固定ディスク９４４）、光ドライブ（例えば、光ドライブ９４０）、フロッピーディスクユニット９３７、又は他の記憶媒体などのコンピュータで読み取り可能な媒体に記憶され、それを介してアクセスされる。加えて、アプリケーションは、ネットワークモデム９４７又はインターフェース９４８を介してアクセスされるときにアプリケーション及びデータ通信技術に従って変調される電子信号の形態であってもよい。
【００７４】
ストレージインターフェース９３４は、コンピュータシステム９１０のその他のストレージインターフェースと同様に、固定ディスクドライブ９４４等の、記憶及び／又は情報の検索のための、標準的なコンピュータで読み取り可能な媒体に接続することができる。固定ディスクドライブ９４４は、コンピュータシステム９１０の一部であってもよく、独立していて、他のインターフェースシステムを介してアクセスされてもよい。モデム９４７は、電話回線を介してリモートサーバへの直接接続を提供してもよく、インターネット・サービス・プロバイダ（ＩＳＰ）経由でインターネットに接続してもよい。ネットワークインターフェース９４８は、ＰＯＰ（ポイント・オブ・プレゼンス）を介したインターネットへのダイレクトネットワークリンクを介してリモートサーバへの直接接続を提供してもよい。ネットワークインターフェース９４８は、デジタル携帯電話接続、セルラー・デジタル・パケット・データ（ＣＤＰＤ）接続、又はデジタル衛星データ接続等を含む無線技術を使用して、かかる接続を提供してもよい。
【００７５】
他の多くのデバイス又はサブシステム（図示せず）も同様の方法で接続することができる（例えば、文書スキャナ、デジタルカメラ等）。逆に、図９に示されるデバイスの全てが、本開示を実践するために存在する必要はない。デバイス及びサブシステムは、図９に示されるものとは異なる手法で相互接続されてもよい。図９に示されるものなどのコンピュータシステムの動作は、当該技術分野において容易に既知であり、本出願では詳細に考察されない。本開示を実装するようにかかるアプリケーションにおける操作を他のアプリケーションへのそれらの依存性に基づいて自動的に実施するためのコード（例えば、図４〜７の方法を参照して上述される）などは、システムメモリ９１７、固定ディスク９４４、光ディスク９４２、又はフロッピーディスク９３８のうちの１つ以上などのコンピュータで読み取り可能な記憶媒体に記憶されてもよい。メモリ９２０はまた、プロセッサ９１０による命令の実行中に一時変数又は他の中間情報を記憶するために使用される。コンピュータシステム９１０に設けられたオペレーティングシステムは、ＭＳ−ＤＯＳ（登録商標）、ＭＳ−ＷＩＮＤＯＷＳ（登録商標）、ＯＳ／２（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、又は別の既知のオペレーティングシステムであってもよい。
【００７６】
更に、本明細書に記載される信号に関して、当業者であれば、信号が第１のブロックから第２のブロックに直接伝送されてもよく、又は信号がブロック間で変更（例えば、増幅、減衰、遅延、ラッチ、バッファ、反転、フィルタリング、又は別の方法で変更）されてもよいことを認識するであろう。上述される実施形態の信号は、あるブロックから次のブロックに伝送されると特徴付けられるが、本開示の他の実施形態は、信号の情報及び／又は機能面がブロック間で伝送される限り、かかる直接伝送された信号の代わりに変更された信号を含むことができる。ある程度、第２のブロックにおける信号入力は、関係する回路の物理的制約（例えば、いくらかの減衰及び遅延が必然的に存在する）により、第１のブロックからの第１の信号出力から得られた第２の信号として概念化されてもよい。したがって、本明細書で使用されるとき、第１の信号から得られた第２の信号は、回路制約によるか、又は第１の信号の情報及び／又は最終機能面を変更しない他の回路素子の通過によるものであろうとなかろうと、第１の信号又は第１の信号に対する何らかの変更を含む。
【００７７】
本発明は、いくつかの実施形態に関連して記載したが、本発明は、本明細書に記載される特定の形態に限定されることを意図しない。それとは逆に、添付の「特許請求の範囲」によって定義されるような本発明の範囲内に合理的に含まれ得るように、かかる代替、修正、及び均等物を網羅することを意図する。
【図１】
2014532909.tif 000003
【図２Ａ】
2014532909.tif 000004
【図２Ｂ】
2014532909.tif 000005
【図３】
2014532909.tif 000006
【図４】
2014532909.tif 000007
【図５】
2014532909.tif 000008
【図６】
2014532909.tif 000009
【図７】
2014532909.tif 000010
【図８】
2014532909.tif 000011
【図９】
2014532909.tif 000012
【国際調査報告】
2014532909.tif 000013