(57)【要約】インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて分散非同期メッセージのシーケンシングを、少なくとも１つのデータプロセッサを用いて、コンピュータにより実行する方法であって：複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ；共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ；および、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ；を有し、シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する方法。【選択図】図８Ｂ
2015527658.tif 000002
【特許請求の範囲】
【請求項１】
インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて分散非同期メッセージのシーケンシングを、少なくとも１つのデータプロセッサを用いて、コンピュータにより実行する方法であって：
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ；
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ；および
前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ；を有し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する、方法。
【請求項２】
前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるか判断する、以下のステップを含む請求項１に記載の方法であって：
前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ；および
メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ；を有し、
メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され、
メッセージランクがシーケンスランクと同一でない場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために次に処理すべきメッセージとは判断されない、方法。
【請求項３】
請求項１又は２に記載の方法であって、アウトバウンドハンドラにおける与えられたシーケンスのメッセージの処理が完了した際に、前記与えられたシーケンスのシーケンスランクがインクリメントされ、シーケンスのシーケンスランクがインクリメントされたとき、オーバーフローストレージが、インクリメントされたシーケンスランクと同一であるメッセージランクを有するメッセージを含む場合、このメッセージをキューストレージに転送する、方法。
【請求項４】
請求項２又は３に記載の方法であって、受信した着信メッセージに、シーケンスのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む、方法。
【請求項５】
請求項４に記載の方法であって、割り当てられたメッセージランクは、前記シーケンスに１をプラスしてインクリメントした、インバウンドハンドラの任意の１箇所において最後に受信したメッセージのランクに相当している、方法。
【請求項６】
請求項１〜３の何れか１項目に記載の方法であって、インバウンドハンドラにおいて受信した着信メッセージには、シーケンス内のメッセージランクを示すインデックスが付与されている、方法。
【請求項７】
請求項２〜６のいずれか１項にに記載の方法であって、キューストレージが着信メッセージのシーケンスの、どのメッセージをも含んでおらず、着信メッセージのメッセージランクがシーケンスストレージに示されたシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される、方法。
【請求項８】
請求項１〜７のいずれか１項に記載の方法であって、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる、方法。
【請求項９】
請求項１〜８のいずれか１項に記載の方法であって、アウトバウンドハンドラは、メッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を含み、配信処理および肯定確認動作は独立している、方法。
【請求項１０】
請求項１〜９のいずれか１項に記載の方法であって、着信メッセージを受信してから、チェックするステップまで、すべてのインバウンドハンドラが前記シーケンスの別のメッセージを受信することを防止される、インバウンドをロックするステップを、着信メッセージがシーケンスストレージに格納されるまで、あるいは、キューストレージに送信されるまで実行し、前記インバウンドをロックするステップは、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれる、方法。
【請求項１１】
請求項１〜１０のいずれか１項に記載の方法であって、キューストレージからアウトバウンドハンドラに着信メッセージを転送後、すべての他のアウトバウンドハンドラが前記シーケンスの別のメッセージを受信することを、着信メッセージの処理が完了するまで防止される、アウトバウンドをロックするステップを実行し、アウトバウンドをロックするステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれている、方法。
【請求項１２】
請求項１１に記載の方法であって、アウトバウンドハンドラが利用可能であるとき、キューストレージの中の、前記メッセージのシーケンスのミューテックスをチェックし、ミューテックスがロックされていない場合のみ、前記メッセージを取得する、方法。
【請求項１３】
請求項２〜１２の何れか１項目に記載の方法であって、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスとメッセージの何れか一方に割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄される、方法。
【請求項１４】
ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも１つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項１〜１３の何れか１項目に記載の方法の実行を含む、非一時的コンピュータ可読媒体。
【請求項１５】
非同期メッセージをシーケンシングする分散並列型処理システムであって：
インバウンドハンドラ層であって、少なくとも１つのデータプロセッサを含む複数のインバウンドハンドラを含み、複数のインバウンドハンドラのそれぞれは、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、複数のインバウンドハンドラを含む、インバウンドハンドラ層；および、
アウトバウンドハンドラ層であって、少なくとも１つのデータプロセッサを含む複数のアウトバウンドハンドラを含み、複数のアウトバウンドハンドラのそれぞれは、複数の着信メッセージを独立して処理し転送するように構成されている、複数のアウトバウンドハンドラを含む、アウトバウンドハンドラ層、を含む分散並列型処理システムであって；システムは：
少なくとも１つのメモリを含むストレージ層を含み；当該ストレージ層は：
-  複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ；および
-  共有シーケンスストレージを含み；当該共有シーケンスストレージは：
-  着信メッセージの各シーケンスのステータスを維持し、更新するためのシーケンスステータスコンテキスト；および
-  インバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成された共有オーバーフローストレージ；を含み、
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも１つのデータプロセッサにより実行される以下のステップを実行するよう構成されたシステムであって：
-  シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取り出すステップ；および
-  シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージをオーバーフローストレージのメモリに格納し、さらなる処理のために保持する、ステップを実行するよう構成された非同期メッセージをシーケンシングする分散並列型処理システム。
【請求項１６】
複数の並列型インバウンドハンドラおよび複数の並列型アウトバウンドハンドラを有し、並列環境における少なくとも１つのサーバプリケーションと少なくとも１つのクライアントアプリケーション間で非同期メッセージを処理するために少なくとも１つのデータプロセッサを用いて、コンピュータにより実行する旅行モニタリング方法であって：
複数のインバウンドハンドラのうちの１つのインバウンドハンドラにおいて、受信メッセージを含むシーケンスを特定するシーケンス相関値が伴う着信メッセージを受信するステップと；
シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップと；
前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断するステップと；を有し、
シーケンスステータスが、複数のアウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し、
シーケンスステータスが、アウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し、
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む、旅行モニタリング方法。
【請求項１７】
請求項１６に記載の方法であって、処理済みのメッセージをアウトバウンドハンドラから、旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、および、地上業務の運用システムの少なくとも１つに転送する、方法。
【請求項１８】
請求項１６および１７の何れか１項に記載の方法であって、交通サービスのリファレンスは少なくとも、フライトナンバー、日付および予約クラスうちの１つを含む、方法。
【請求項１９】
請求項１６〜１８の何れか１項に記載の方法であって、メッセージは、搭乗客、キャンセルした乗客、追加の乗客の何れか１つを記述する、方法。
【請求項２０】
請求項１６〜１９の何れか１項に記載の方法であって、フライトの出発時刻または、フライト提示の終了、あるいは、プロモーションの終了のうちの何れか１つによって起動されるシーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与される、方法。
【請求項２１】
ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも１つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項１６〜２０の何れか１項に記載の方法からなる動作の実行を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に通信システムのデータおよび情報処理に関し、具体的には、分散並列処理環境において、シーケンスの非同期メッセージを処理する方法、装置、およびシステムに関する。
【背景技術】
【０００２】
サービスコールまたはイベント処理において、分散ソフトウェアアーキテクチャを使用する場合、メッセージの伝送は同期、あるいは非同期で行われる。メッセージは個々のフルレシピエント（Full recipient）に配信およびマルチキャストされ、各マルチキャストメッセージは個別に処理される。
【０００３】
図１は、一方は呼出システム１１０であり、もう一方は遠隔システム１２０である２つのシステム間のメッセージ、またはサービスコールの同期伝送を示し、呼出システム１１０がメッセージ処理の順序を制御する。この場合、呼出システム１１０は遠隔処理の結果を待ち、その結果、呼出側は、メッセージをサーバシステム、または遠隔システムで実際に処理する順序に関するマスターとなる。
【０００４】
呼出システム１１０からの第１メッセージＡの伝送１１１は、遠隔システム１２０で処理され、次に、処理済みメッセージＡ１２１として、呼出システム１１０に返される。一度、処理済みメッセージＡを受信すると、呼出システム１１０は第２メッセージＢの伝送１１３を、遠隔システム１２０に向けて行うことができる。第２メッセージＢは、次に、遠隔システム１２０によって処理され、処理済みメッセージＢ１２３は呼出システム１１０に返される。
【０００５】
このフローチャートで示した例は、呼出システム１１０と遠隔システム１２０間の同期の呼出し、またはメッセージの処理の順番を示し、サーバシステムまたは遠隔システム１２０の第１メッセージＡの処理１１２が、第２メッセージＢの処理１１４の前に行われていることがわかる。
【０００６】
図２は、呼出システム２１０とサーバシステムまたは遠隔システム２２０の間のメッセージまたはサービスコールの非同期伝送について示し、この呼出システム２１０は、サービスコールまたはメッセージをサーバシステムまたは遠隔システム２２０に送信し、これらのシステム２２０は、それ自体のスケジューリングに従って、メッセージの処理を行う。クライアントシステム、または呼出システム２１０は、メッセージ処理のタイミングの制御を緩める。
【０００７】
呼出システム２１０からの第１メッセージＡの伝送２１１は、遠隔システム２２０により処理される。その間に、呼出システム２１０は、第２メッセージＢの遠隔システム２２０への伝送２１３を開始している。第２メッセージＢは、次に、遠隔システム２２０によって処理されるが、メッセージＡが処理されるまで、処理済みメッセージＢを呼出システム２１０に返す判断はできない。
【０００８】
このフローチャートで示した例は、非同期の呼出し、または呼出システム２１０と遠隔システム２２０間のメッセージの処理の順番を示し、サーバシステムまたは遠隔システム２２０の第１メッセージＡの処理２１２が、第２メッセージＢの処理２１４とほぼ同時に行われることを示す。第２メッセージＢを第１メッセージＡより先に処理することも可能であるが、メッセージＡおよびＢを含むシーケンスの適合性に重大な影響を与える可能性がある。
【０００９】
図３は、分散システムにおけるサービスコールまたはメッセージの並列処理を例証するフローチャートである。分散システムにおいて、障害許容力とスケーラビリティの要件を満たすために、サービスコールまたはメッセージは、インスタンス化による並列処理および／またはマルチスレッディングでの処理が行われる。この図では、処理システムの３１０−１、３１０−２、…、および３１０−ｎに該当するインスタンス１、２、３、…、およびｎが、メッセージキュー３４０の４つのメッセージ１、２、３および４をインバウンドシーケンスによって処理する。
【００１０】
並列処理は、連続するサービスコールやメッセージを処理し完了させる順序を保証するものではない。しかし、サービスコールやメッセージ処理は、関連するイベントやメッセージ間のシーケンスの遂行を強く求めることがある。
【００１１】
図３に示す例では、メッセージ１はインスタンス２によって処理され、メッセージ２はインスタンス３によって処理され、メッセージ３はインスタンス１によって処理され、メッセージ４は、メッセージ２のようにインスタンス３によって処理される。メッセージの処理は調整されないので、メッセージ２が最初に処理され、次に、メッセージ１、メッセージ４、最後にメッセージ３が処理される。これは一貫性のない処理順序となる。
【００１２】
この図では、シーケンスは、サービスコールやメッセージの分散システムによる伝送および／または処理に関する順序を参照する。この順序は通常、業務処理、または業界標準により進められる。この順序に従わないことにより、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損や呼び出されたデータベースの破損に至る。
【００１３】
図４は、分散処理システムにおける非同期コールまたはメッセージの並列処理であり、メッセージ処理が順序通りに実行されないリスク、およびデータ破損のリスクが生じることを例証するフローチャートである。
【００１４】
同期環境では、遠隔システムへのメッセージ伝送を順次実行し、関連するメッセージ間のシーケンスフローを事実上制御するエミッタシステムまたは呼出システムによってシーケンシングが確保される。
【００１５】
遠隔システム４２０でのメッセージ処理の終了を判断できないので、このシーケンシングは、エミッタシステムまたは呼出システム４１０が非同期分散処理を取り扱う必要性が生じると不可能になる。図４は、第１メッセージＡの呼出システム４１０から遠隔システム４２０への伝送４１１に続く、第２メッセージＢの伝送４１３の、このリスクを示す。第２メッセージＢの処理４１４は、第１メッセージＡの処理４１４の処理４１２の前に開始する。したがって、メッセージ処理が逆になり、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損やデータベースの破損に至る。
【００１６】
したがって、本発明は、前述の問題を緩和し、格納する機能データやデータベースの不可逆的な破損を避けることを目的とする。
【発明の概要】
【００１７】
本発明の一実施形態は、インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて、分散非同期メッセージのシーケンシングをコンピュータで実行する方法を提供し、この方法は、少なくとも１台のデータプロセッサを用いて実行し：
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信するステップ；および
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理すべきメッセージであるかを判断するステップを含み、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理すべきメッセージであると判断された場合、その着信メッセージを共有キューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、共有キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する。
【００１８】
したがって、分散並列システムは、：多くのシーケンスに関係するメッセージを受信する、インバウンドハンドラ層に互いに平行に配列されたインバウンドハンドラ；および、共有シーケンスストレージ、キューストレージおよび共有オーバーフローストレージを含み、インバウンドハンドラからメッセージを受信し、それらをメモリに格納するように構成されたストレージ層、を含むルーターと見なすことができる。シーケンスストレージは、オーバーフローストレージを含んでもよい。分散並列システムは、同システムが、それぞれのシーケンス内で正確なメッセージのシーケンシングを確保しながら、アウトバウンドハンドラ層において互いに平行に配列され、処理のために共有キューストレージからメッセージを取得するように構成されたアウトバウンドハンドラをさらに含む。アウトバウンドハンドラは、処理を行い、場合によっては正しい受け手に配信するために、メッセージを受信するように構成される。
【００１９】
オーバーフローストレージおよびシーケンスストレージは、インバウンドハンドラおよびアウトバウンドハンドラに共有される。それらは、並列インバウンドハンドラおよび並列アウトバウンドハンドラによって共有して使用される。
【００２０】
したがって、本発明は、分散環境における様々なシーケンスの並列処理を実行しながら、同一のシーケンスに関するメッセージの順序を維持するためのソリューションを提供する。さらに、インバウンドハンドラをアウトバウンドハンドラから切り離すことによって、受け手のスループットからエミッタのスループットを分離することが可能になる。さらに、インバウンドハンドラおよびアウトバウンドハンドラの数を、高度かつ個別に拡張できる。また、本発明は、シーケンスとインバウンドハンドラまたはアウトバウンドハンドラ間に類似性が生じることを避けるので、インバウンドハンドラまたはアウトバウンドハンドラは、どのシーケンスのメッセージでも処理できる。したがって、一部のハンドラやアウトバウンドハンドラの停止が、メッセージの処理に影響しないので、本発明は、強い障害許容性を提供する。
【００２１】
本発明の方法はさらに、以下に示すさらなる機能およびステップの何れかを含んでよい。
【００２２】
一実施形態において、前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるかどうかの判断は：
・  前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ；および
・  メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ；を含み、
・  メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され；
・  メッセージランクがシーケンスランクよりも大きい場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージとは判断しない。
【００２３】
シーケンスに含まれ、特定の順序に処理されるべきメッセージは、メッセージランク番号を付与され、これは現在のメッセージランクの記述として参照される。メッセージランクは、シーケンス内のメッセージの順序を定義する。メッセージにはメッセージ発信者または、サードパーティによってメッセージランクが付与されることがある。メッセージランクは、シーケンスのメッセージの到着順に応じて、システムにより割り当てられる場合もある。
【００２４】
本明細書の記述通り、シーケンスランクは、与えられたシーケンスのどのメッセージが次に処理すべきかを定義する、つまり、次に処理されるべきメッセージが有するべきメッセージランクを定義する。
【００２５】
シーケンスランクは、シーケンスストレージ内に示されることが好ましい。
【００２６】
典型的に、アウトバウンドハンドラによってメッセージを処理することは、アウトバウンドハンドラがメッセージを受け手に送信または配信することを意味する。
【００２７】
有利なことに、アウトバウンドハンドラにおいて与えられたシーケンスのメッセージの処理が完了したら、前記与えられたシーケンスのシーケンスランクは、インクリメントされる。
【００２８】
シーケンスのシーケンスランクをインクリメントする際、方法は、オーバーフローストレージに、メッセージランクがインクリメントされ、シーケンスランクと同等であるメッセージが含まれるかをチェックし、次いで、このメッセージをキューストレージに転送することが好ましい。
【００２９】
有利な実施形態によれば、受信した着信メッセージに、シーケンス内でのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む。
【００３０】
割り当てられたメッセージランクは、前記シーケンスに１を加えてインクリメントした、インバウンドハンドラの任意の１箇所において最後に受信したメッセージのランクに相当していることが好ましい。したがって、着信メッセージが、前記シーケンスの第１メッセージであれば、メッセージランクは１となる。あるインバウンドハンドラで受信した前のメッセージのメッセージランクがＮであれば、新たに着信したメッセージに割り当てられるメッセージランクはＮ＋１となる。
【００３１】
別の有利な実施形態では、インバウンドハンドラで受信した着信メッセージには、シーケンス内でのメッセージランクを示すインデックスが付与されている。
【００３２】
メッセージランクがシーケンスランクよりも大きい場合、シーケンスのステータスを「保留（ｐｅｎｄｉｎｇ）」に設定することが好ましい。したがって、「保留」は、オーバーフローストレージ領域は、与えられたシーケンスの少なくとも１つのメッセージを含むが、この（これらの）メッセージのメッセージランクは、シーケンスランクと同等ではないことを意味する。
【００３３】
どのアウトバウンドハンドラも現在、前記シーケンスのメッセージを処理しておらず、そのシーケンスのメッセージがオーバーフローストレージ領域にない場合、典型的に、シーケンスステータスは、「待つ（ｗａｉｔｉｎｇ）」に設定される。少なくとも１つのアウトバウンドハンドラが現在、前記シーケンスのメッセージを処理している場合、典型的にシーケンスステータスは「処理中（ｐｒｏｃｅｓｓｉｎｇ）」に設定される。
【００３４】
有利なことに、キューストレージが着信メッセージのシーケンスのメッセージを含まない場合、そして、着信メッセージのメッセージランクがシーケンスストレージに示されるシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ、着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される。
【００３５】
したがって、メッセージにメッセージの発信者または第三者からメッセージランクが付与されていて、メッセージランクがシーケンスランクよりも大きい場合、メッセージは、オーバーフローストレージに格納される。他のメッセージランクの低いメッセージが処理される場合、メッセージランクが、先に格納したメッセージのメッセージランクに到達するまで、シーケンスランクはインクリメントされる。このメッセージは、次にシーケンスストレージ、より具体的には、オーバーフローストレージからリリースされ、一度、キューストレージおよびインバウンドハンドラが、このシーケンスのメッセージを格納せず、処理しなくなると、キューストレージに送信されることがある。
【００３６】
同様のことは、メッセージランクは付与されないものの、到着順に応じてシステムによりメッセージランクが割り当てられるメッセージについても適用される。
【００３７】
有利なことに、アウトバウンドハンドラにより、メッセージが適切に処理された場合、そのメッセージは、キューストレージから削除される。
【００３８】
有利なことに、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる。
【００３９】
有利な実施形態によると、アウトバウンドハンドラはメッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を含む。配信処理と肯定応答処理は、独立して作動するので、配信処理は、メッセージ送信後すぐに使用可能となる。
【００４０】
有利なことに、着信メッセージを受信し、チェックステップに進むまで、この方法は、着信メッセージがシーケンスストレージに格納されるか、キューストレージに送信されるまで、すべてのインバウンドハンドラが、前記シーケンスの他のメッセージを受信することを停止される、インバウンドロックステップを実行することを含む。
【００４１】
有利なことに、同一シーケンスの他のメッセージがアウトバウンドハンドラによって送信され、処理される間に、着信メッセージは、インバウンドハンドラによって受け入れられることが可能である。着信メッセージがロックからリリースされるために待つ必要が生じる状況は以下に限定される：
・  別の着信メッセージがストレージ層に格納されているか、インバウンドハンドラによって受信されている場合；および
・  前記シーケンスのメッセージに対する受け手の応答が、アウトバウンドハンドラによって受信され、処理されている場合。アウトバウンドハンドラが受け手から応答（肯定応答）を受信した場合、シーケンス、対応するランク、もしあれば、前記シーケンスに送信する次のメッセージを探す時間、およびランクのインクリメントはロックされる。
【００４２】
インバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。
【００４３】
着信メッセージを受信すると、インバウンドハンドラは、前記着信メッセージのシーケンスのシーケンス相関値をチェックし、その着信メッセージを受け取る前に、前記シーケンスのミューテックスパラメータを読むことが好ましい。ミューテックスがロックされていなければ、インバウンドハンドラは着信メッセージを受け取る。ミューテックスがロックされていると、着信メッセージはミューテックスがリリースされるのを待つ。
【００４４】
より具体的には、ミューテックスは、シーケンスストレージに含まれるシーケンスレジスターに格納される。
【００４５】
有利なことに、インバウンドハンドラおよびアウトバウンドハンドラのシーケンス１つに対し、ミューテックスは１つだけ存在する。キューストレージのストレージキューは、与えられたシーケンスに対し、アウトバウンドハンドラ層がそのシーケンスのメッセージの処理を完了するまで、１つのメッセージのみがアウトバウンドハンドラに伝播されることを確実にする。
【００４６】
アウトバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。
【００４７】
有利なことに、アウトバウンドハンドラが使用可能である場合、アウトバウンドハンドラは、処理が可能なメッセージがないかキューストレージをチェックし、前記メッセージを取り出して、処理を行う。アウトバウンドハンドラが使用可能であれば、アウトバウンドハンドラは、処理可能なメッセージがないか、キューストレージ８５０をチェックすることが好ましい。
【００４８】
メッセージがあれば、このメッセージは、前記与えられたシーケンスに対し、自動的に修正され、処理される。
【００４９】
一実施形態において、着信メッセージのシーケンスストレージ、具体的には、オーバーフローストレージへの格納時に、インバウンドハンドラは肯定応答メッセージを送信する。
【００５０】
典型的に、肯定応答メッセージは、メッセージの発信者に送信される。
【００５１】
有利なことに、シーケンスランクよりも大きいメッセージランクを有するメッセージが、そのメッセージランクがシーケンスランク（つまり、次に処理されるメッセージのランク）に合致しない限り、オーバーフローストレージに格納され、メッセージシーケンスはロックされる。
【００５２】
シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄されることが好ましい。別の方法として、または追加として、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄される。
【００５３】
別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも１台のデータプロセッサによるソフトウェアプログラム命令の実行は、本発明による方法の実行を含む動作の実行となる。
【００５４】
他の実施形態では、本発明は、非同期メッセージのシーケンシングを行う分散並列型処理システムに関し、分散並列型処理システムは：
・  それぞれが、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラ；
・  それぞれが、複数の着信メッセージを独立して処理し、転送する、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラ；および
・  ストレージ層を含み、前記ストレージ層は、少なくとも１つのメモリと：
・  複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ；および
・  シーケンスストレージ、を含み、前記シーケンスストレージは、着信メッセージのシーケンスのステータスを維持し、更新するシーケンスステータスコンテキスト（８０２）、およびインバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成されたオーバーフローストレージ、を含む。
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも１つのデータプロセッサにより実行される以下の処理を実行するよう構成されている。
シーケンスステータスが、アウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージ格納し、さらなる処理のために保持する。
【００５５】
追加の実施形態において、ストレージ層のキューストレージおよびシーケンスストレージは、インメモリーデータまたはファイルベースストレージに実装される。別の方法として、ストレージ層のキューストレージおよびシーケンスストレージは、クライアント／サーバストレージデータベースに実装される。
【００５６】
シーケンスステータスのチェックには、前記シーケンスのシーケンス相関値に基づくシーケンスのステータスを取得することを含んでいることが好ましい。
【００５７】
別の実施形態において、本発明は、複数の並列インバウンドハンドラと複数の並列アウトバウンドハンドラを有する並列環境における少なくとも１つのサーバプリケーションと少なくとも１つのクライアントアプリケーション間で非同期メッセージを処理するためにコンピュータにより実施される旅行モニタリング方法に関し、この方法は、少なくとも１つのデータプロセッサで以下のステップを実行する：
・  複数の並列インバウンドハンドラのうちの１つのインバウンドハンドラにおいて着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し；
・  シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし；
・  前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断し；
シーケンスステータスが、複数の並列アウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し；
シーケンスステータスが、アウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し；
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む。
【００５８】
本発明の方法はさらに、以下に示すさらなる機能およびステップの何れか１つを含む。
【００５９】
一度、処理されると、メッセージは、アウトバウンドハンドラから以下のうちの少なくとも１つに転送される。旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、地上業務の運用システム。
【００６０】
一実施形態では、交通サービスのリファレンスとして、フライトナンバー、日付および予約クラス以のうち少なくとも１つを含む。
【００６１】
一実施形態におけるメッセージは、搭乗客、キャンセルした搭乗客、追加の乗客のうち少なくとも１つを明示する。
【００６２】
一実施形態において、シーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与されていて、シーケンスタイムアウト値は、フライトの出発時刻または、フライト提示の終了、あるいはプロモーションの終了のうちの何れか１つによって起動される。
【００６３】
別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも１つのデータプロセッサによる当該ソフトウェアプログラム命令の実行は、本発明による上記方法の実行を含む動作の実行となる。
【００６４】
さらに別の実施形態で、本発明は、複数のインバウンドハンドラ、および複数のアウトバウンドハンドラを有し、メッセージを処理する少なくとも１つのプロセッサを含む分散並列システムにおいて、配信された非同期メッセージをコンピュータによりシーケンシングする方法に関し、この方法は、少なくとも１つのデータプロセッサを用いる、以下のステップを含む：
・  インバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し、前記シーケンス内の着信メッセージの順序を示すメッセージランクを判断し；
・  シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし：
シーケンスステータスがいずれのアウトバウンドハンドラも、前記シーケンスのメッセージを現時点で処理していないことを示し；
受信した着信メッセージが、シーケンス内でのメッセージランクを示す如何なるインデックスも付与されておらず、シーケンスストレージが前記シーケンスの処理すべきメッセージを未だに含んでいない場合；あるいは、
受信した着信メッセージは、シーケンス内のメッセージランク（シーケンスストレージに示されるシーケンスランクと同等）を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義し；
次に、着信メッセージをキューストレージに転送し、続いて、それを処理が可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも１つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、または、受信した着信メッセージが、シーケンス内のメッセージランク（シーケンスストレージに示されるシーケンスランクよりも大きい）を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義する場合、次に、着信メッセージをさらなる処理のためにオーバーフローストレージに格納する。
【図面の簡単な説明】
【００６５】
本発明の前記実施形態および他の態様の実施形態は、以下の図を参照することにより、さらに理解されよう。
【図１】図１Ａは呼出システムと遠隔システム間の同期コールまたはメッセージの処理の順序を例証するフローチャートである。
【図２】呼出システムと遠隔システム間の非同期コールまたはメッセージの処理の順序を例証するフローチャートである。
【図３】分散処理システムにおけるコールまたはメッセージの並列処理を例証するフローチャートである。
【図４】分散処理システムにおける非同期コールまたはメッセージの並列処理であり、メッセージ処理が順序通りに実行されないリスク、およびデータ破損のリスクが生じることを例証するフローチャートである。
【図５】本発明による、集中型および共有型シーケンスコンテキストにおける高レベルシーケンス管理を例証するブロック図である。
【図６】本発明による、伝送および処理チャンネル内でのシーケンスを特定する処理を例証するフローチャートである。
【図７】本発明による、非同期分散処理システムを例証する図である。
【図８Ａ】インバウンドハンドラがシーケンスＡの第１メッセージを受信する、本発明によるシーケンシング処理のステップを例証する図である。
【図８Ｂ】インバウンドハンドラがシーケンスＡの第２メッセージを受信する、本発明によるシーケンシング処理の別のステップを例証する図である。
【図８Ｃ】アウトバウンドハンドラがシーケンスＡの第１メッセージを処理する、本発明によるシーケンシング処理の別のステップを例証する図である。
【図８Ｄ】アウトバウンドハンドラがシーケンスＡの第１メッセージを処理した、本発明によるシーケンシング処理の別のステップを例証する図である。
【図８Ｅ】シーケンスが再配列された、本発明によるシーケンシング処理のステップを例証する図である。
【発明を実施するための形態】
【００６６】
以下の記述は、旅行業界への応用を意図するものであるが、本発明は、ホテル客室、レンタカー、鉄道チケットなどの旅行商品を始めとして、あらゆる用途のデータ処理に使用可能であるので、本発明は以下の例に限定されない。
【００６７】
本発明によると、メッセージの処理順序は、与えられたシーケンスの次のメッセージを送信する前に、メッセージのエミッタまたは呼出システムによって、非同期並列環境において、シーケンス内の各メッセージのランクを示すインデックスを付与することによって明示的に、あるいは、メッセージを順次配信して、そのメッセージの肯定応答が配信されるのを待つことによって非明示的に、定義される。
【００６８】
本発明は、同時に独立して実行される処理が、シーケンスと定義された、与えられたメッセージのセットを処理するためのシーケンシングの順序を順守することを確実にすることを目的とする。
【００６９】
その点に関し、本発明による分散非同期メッセージのシーケンシングを行うための、方法、装置、およびシステムは、様々な動作を実行するが、それらは下記に簡潔に説明し、後に図を用いて詳細に説明する。
【００７０】
与えられたシーケンスの各メッセージまたはサービスコールは、インタフェース定義によりタグ付けされ、それが属する特定のシーケンスを実際に参照する。
【００７１】
メッセージのシーケンス内のメッセージまたはサービスコールのランクは、下記の何れかである：
・  十分なインタフェースを介して、メッセージまたはサービスコールのエミッタ／送り手によって明示的に提供される。例えば、メッセージは、そのシーケンス内のメッセージのランクを定義するインデックスを有するフィールドを含む；または
・  シーケンス内のメッセージまたはサービスコールを、時間を超過して受信する場合の順序を使用して非明示的に提供される。
【００７２】
一度、シーケンスおよび、メッセージランク、またはサービスコールの順序が特定されると、シーケンスは適切に管理される必要がある。
【００７３】
図５は、本発明による、集中型および共有型シーケンスコンテキストにおける高レベルシーケンス管理を例証するブロック図である。この図は、システムの主要機能および主要ステップを詳述している。
【００７４】
非同期分散処理システムは、着信メッセージ５０１を受信するインバウンドハンドラ５１０、およびメッセージを処理し、それらを配信するよう構成される、アウトバウンドハンドラ５３０を含む。システムはまた、当該メッセージが属するシーケンスの順序を維持するため、メッセージ５０１の処理を保留する必要がある場合、インバウンドハンドラから受信したメッセージを格納することがある、オーバーフローストレージ領域５４０を含む。
【００７５】
システムは、複数の並列インバウンドハンドラ５１０と複数の並列アウトバウンドハンドラ５３０を含むが、図５は分かり易くするために簡潔に示されていることを理解されたい。
【００７６】
インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。したがって、複数のインバウンドハンドラを含むインバウンドハンドラ層は、アクセプター層とも呼ばれることがある。
【００７７】
アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。したがって、複数のアウトバウンドハンドラを含むアウトバウンドハンドラ層は、配信層とも呼ばれることがある。
【００７８】
インバウンドハンドラ５１０は、以下のうちの何れか１つを実行するよう構成される。パブリッシャーなどのエミッタからメッセージを受信する、メッセージのインテグリティのバリデーションを行う、シーケンスロックおよびステータスのバリデーションを行う、２領域のうちの１領域にメッセージを格納する（例：キューストレージまたは、オーバーフロー領域）、エミッタに応答する。
【００７９】
有利な実施形態によると、アウトバウンドハンドラ５３０は、２つの処理から構成される。デリバリー処理５３１と呼ばれる第１処理は、以下の何れか１つの処理を実行するように構成されている。ストレージキューからメッセージを入手する；そのメッセージを、通信チャネルを介して受け手に送信する；および、他の処理によって使用されることを停止する。
【００８０】
肯定応答処理５３２と呼ばれる第２処理は、以下の何れか１つの処理を実行するように構成されている。受け手から肯定応答を受信する；シーケンス管理を実行して次のメッセージを対応するシーケンス（もしあれば、ストレージキュー）に入れる；および、他の処理によって使用されることを停止する。
【００８１】
したがって、アウトバウンドハンドラ５３２により形成される配信層は、高い拡張性の要件に対応する非同期である。このように、システムは受け手の待ち時間に対し、独立している。より正確には、アウトバウンドハンドラは、第１シーケンスのメッセージを取得および配信し、次に、アウトバウンドハンドラが第１シーケンスのメッセージの配信に対する肯定応答を受信するまでに、第２シーケンスの別のメッセージを取得し、配信することができることを意味する。したがって、アウトバウンドハンドラは非同期的に多くのシーケンスからのメッセージを取り扱うことができ、それによって、常に各シーケンスの正確な順序を維持しながら、システムが送ることができるメッセージの数を増やすことができる。
【００８２】
本発明によると、ステートマシンが各シーケンスに使用される、中央共有シーケンスコンテキストが実装される。着信メッセージ５０１がインバウンドハンドラ５１０に受信される度に、それに対応するシーケンスコンテキストステータスがチェックされる（５２０）。一実施形態によれば、対応するシーケンスコンテキストが存在しない場合、動的および透過的に作成される。したがって、本発明は、システムにおいて前もってシーケンスを定義する必要はなく、この点については、全面的に動的である。さらに、メッセージに、シーケンス内のメッセージのランクを示すインデックスが付与されていない場合、メッセージランクは、メッセージの到着順序に応じてメッセージに割り当てられる：
・  アウトバウンドハンドラ層がシーケンスの次のメッセージを待っている状態（つまり、シーケンスステータスが「待ち（Ｗａｉｔｉｎｇ）」）であることを、シーケンスステータスが示した場合、着信メッセージ５０１が、アウトバウンドハンドラ５３０の標準的動作により通常通り処理（５２２）される（メッセージは非同期処理可能となる）；
・  あるいは、シーケンスのメッセージが現在、処理中である、つまり、シーケンスステータスが「処理中（Ｐｒｏｃｅｓｓｉｎｇ）」とシーケンスステータスが示す場合、着信メッセージ５０１は、後に処理（５２４）を受けるため、特定のシーケンスオーバーフローストレージ領域５４０に格納される。オーバーフローストレージ領域５４０は、着信メッセージの順序が失われないように構成／インデックス付けされる。このように、着信メッセージ５０１は、さらなる処理のために保持され、即時処理のために使用可能とはならない（シーケンスから除外）。
【００８３】
アウトバウンドハンドラ層は、標準的動作によって処理される、事実上、正しいシーケンスランクのメッセージを受信する。
【００８４】
一度、メッセージ５０１が処理されると、アウトバウンドハンドラ層がオーバーフローストレージ領域５４０のシーケンスにおいて処理する次のメッセージを探す。もし、そのようなメッセージが見つかったら、標準処理に基づいて、アウトバウンドハンドラ層にプッシュする。メッセージが見つからない場合、シーケンスステータスは、「待ち（Ｗａｉｔｉｎｇ）」の設定に戻される。
【００８５】
シーケンス内の各メッセージの順序は、維持される。シーケンスストレージは、シーケンスのメッセージの順序を維持するために、処理が義務づけられる次のメッセージのランクを示すシーケンスランクを定義する。シーケンスランクは、メッセージの処理が完了する度に、インクリメンタルに更新される。したがって、シーケンスランクは、カウンターと見なすことができる。
【００８６】
シーケンスランクに合致しない如何なる着信メッセージ（つまり、処理すべき次のメッセージのランク）も、処理すべき正しいメッセージがインバウンドハンドラ５１０に受信されるまで、オーバーフローストレージ領域５４０に格納される。このことは、シーケンスのランクおよび各メッセージのランクを考慮しながら、オーバーフローストレージ領域５４０において、挿入／削除動作が実行されることを意味する。
【００８７】
メッセージがオーバーフローストレージ領域５４０に格納され、シーケンス内で処理が保留されているので、シーケンス内の次のメッセージによってシーケンスのロックが外されることはない。このような状況は頻繁には起こらないが、本発明は、期限が切れたメッセージやシーケンスを破棄するなど、期限が切れたと考えられるシーケンスに対して動作を起こすためにシーケンスのコンテキストの中にインジケータを残す動的な方法を提供する。
【００８８】
一部のＭＯＭ（Ｍｅｓｓａｇｅ Ｏｒｉｅｎｔｅｄ Ｍｉｄｄｌｅｗａｒｅ）は、並列処理の利用を避けることによって、シーケンシング機能を提供する（つまり、これらは１件のデキューの消費者のみに対して実行する）。したがって、これらは、スケーラビリティを犠牲にして、シーケンスを保証する。Ｏｒａｃｌｅ（登録商標） Ａｄｖａｎｃｅｄ Ｑｕｅｕｉｎｇは典型例である。
【００８９】
他の一部のＭＯＭ（ＭＱ-Ｓｅｒｉｅｓなど）は、コリレータに基づくシーケンス機能を提供するが、これらは、処理するシーケンスのメッセージが論理的にグループ化されていることを要件とする。その上、グループのサイズに制限があり、ＭＯＭはデキュー処理に新たな制限が加えられていることがある。
【００９０】
本発明による分散並列型処理は、並列性とスケーラビリティを維持し、メッセージまたはサービスコールを関連付け、あるいはデキュー処理によって処理する方法において特別な制限がない、厳格なシーケンシングを提供する。本発明の方法、装置、およびシステムによる高度なスケーラビリティおよび障害許容力によって、以下が実現する：
・  「ポストおよびクイット」の原則を利用して、別の処理（肯定応答処理）は肯定応答を受信する役割を担いながら、メッセージがポストされ、肯定応答を待つことなく処理を行う、全面的な非同期配信処理を実行し、それによって非常に高度なメッセージスループットによる処理が可能になる；
・  および、全面的な分散処理を実行し、シーケンスとインバウンド／アウトバウンドハンドラ間の類似性を取り除くことによって、インバウンド／アウトバウンドハンドラは、どのシーケンスのメッセージの取扱いも可能になる。
【００９１】
メッセージシーケンシングの通常の方法に、モノプロセス構造に戻ることがあるが、これは、障害許容力とスケーラビリティにおいて重大で、時には受け入れられない制限がある。それに対して、本発明は、シーケンスの濃度を高く保ちながら、分散並列処理においてインバウンドハンドラレベルおよびアウトバウンドハンドラレベルの２段階で多くの利点を提供する。つまり、システムが多数のシーケンスを並列的に取り扱う必要があれば、本発明はシーケンス処理の並列化に多くの利点を提供する。
【００９２】
シーケンスの維持に関して、ストレージ領域、およびデキュー処理に前提条件はない：
・  インバウンドハンドラのメッセージ受け入れのキュー処理、およびアウトバウンドハンドラ層のメッセージ処理のキュー処理は、本発明によって達成されるので、シーケンスの保持をサポートする必要はない；
・  メッセージの並列ストレージおよび並列取得（つまり、キューイング／デキューイング）は、完全に維持される；
・  非制限的な実施形態によると、キューストレージ自体は、ノードに対してローカルになることができ、オーバーフローストレージ領域は、グローバルなままである（つまり、すべてのアウトバウンドハンドラに共有されている）。どのノードも与えられたシーケンスを処理することができるので、オーバーフローストレージは共有される必要があり、オーバーフローストレージは一意的なオーバーフロー領域にアクセスし、ストレージにおいて実際にキューおよびデキューイングを行う。キューストレージがすべてのアウトバウンドハンドラによって共有されない場合、単独のアウトバウンドハンドラまたは複数のアウトバウンドハンドラに専有とすることができる。キューストレージがすべてのアウトバウンドハンドラに共有されない場合、各メッセージは、１つのローカルのキューストレージのみによって受信される；
・  メッセージは、ステータスが変更されてオーバーフロー領域に配置するので、例外キューの必要がなく、拒絶メッセージのストレージは容易である。
【００９３】
本発明の方法、装置、およびシステムによると、メッセージシーケンスが、シーケンスの特定とシーケンス内のメッセージランクを特定することによって、分散並列モードにおいて処理される。特定することに加えて、シーケンスは、管理および再配列され、それには、シーケンスロックおよびタイムアウトが含まれる。これらの態様は、以下に詳述される。
【００９４】
シーケンスの特定
与えられた伝送チャネルにおいて共有されるメッセージまたはイベントのフロー中で、関連メッセージのセットは、シーケンスが優先されるので、明確に定義される必要がある。図６は、エミットシステム６１０およびプロセスシステム６３０間の伝送および処理チャネル６２０内で、シーケンスを識別する処理を例証するフローチャートである。
【００９５】
専用パラメータは、与えられた伝送に含まれる各メッセージ要素（messaging primitive）に提供される。この専用パラメータは、シーケンス識別子であり、シーケンス相関値とも呼ばれる。これは典型的に、メッセージのエミットシステムによって設定される英数字の値である。このパラメータは、関与する各構成要素によって使用され、同じシーケンスに属するメッセージを識別する。例えば、メッセージ１〜４は、伝送チャネル６２０内で解析され、メッセージ＃１〜＃４と識別される。これらの関連付けされ、順序付けされたメッセージは、同じ送信チャネル６２０を共有し、連続的にお互いを追跡することはない。これらは、送信チャネル６２０において、他のシーケンスに属するメッセージと結合する。
【００９６】
シーケンス相関パラメータは、与えられた送信および処理チェーンにおいて、個別の衝突する処理により共有されないことを確実にするために、定義される。この状況では、厳格に一意的であることが必須となる。このシーケンス相関パラメータの定義は、本システムを使用する業務処理の責務である。
【００９７】
シーケンス内のメッセージランクの識別
特定の順序によって処理される必要のあるメッセージは、以下の２種類に分類される：
・  第１種類のメッセージは、シーケンス内の順序またはランクがメッセージの作成時に判明し、メッセージの総数も、メッセージの作成時に判明することが好ましく、生成処理は、各メッセージの伝送要素に特定のメッセージランク番号を割り当てることができる。このメッセージランク番号は、次に、全体的なチェーンの一部として、最終処理が実行されるまで、各処理によって運ばれ、格納される；
・  第２種類のメッセージのシーケンス内の順序は、生成時に判断される。これらの第２種類のメッセージの処理は通常、インクリメンタルであり、つまり、処理内の各新規メッセージ（またはイベント）は、シーケンス内の前のメッセージの処理結果を変更する。その点において、メッセージのエミットシステムは、与えられたシーケンス内のメッセージランクもメッセージの数も把握しておらず、シーケンス内のメッセージの総数も把握していない。
分かり易くするために、この記述では、与えられたシーケンス内のメッセージのメッセージランク番号をメッセージランクと呼ぶ。
【００９８】
コアシーケンス管理
図７に例証するように、非同期分散処理システムは以下を含む：
・  複数のインバウンドハンドラ７１０、７２０、…、７４０が、インバウンドハンドラ層を形成する。インバウンドハンドラは着信メッセージ７１１、７２１、７３１、および７４１を受信し、それらを個別にキューストレージ７５０に格納し、これら着信メッセージ７１１、７２１、７３１、および７４１を問題なく受信したことを示す肯定応答を、エミットシステムに送る；
・  複数のアウトバウンドハンドラ７６０、７７０、…、７９０が、アウトバウンドハンドラ層を形成する。各アウトバウンドハンドラはキューストレージ７５０からメッセージを取得し、それらを処理するよう構成される。アウトバウンドハンドラはまた、処理済みメッセージのアプリケーションへの転送を担当する。
【００９９】
インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。
【０１００】
図８Ａは、インバウンドハンドラがエミットシステムから受信したシーケンスＡの第１メッセージをシーケンシング処理するステップを例証する図７の実施形態を改善した図である。ここでの改善によって、シーケンスストレージ８００と呼ばれる追加された構成要素が、複数のインバウンドハンドラ８１０、８２０、…、８４０と複数のアウトバウンドハンドラ８６０、８７０、…、８９０の間にストレージ層の一部として実装されている。シーケンスストレージ８００は以下を含む：
・  ミューテックスとも呼ばれる、集中型、または共有型シーケンスであるミューテックス８０４は、一度に、１つのハンドラのみが、与えられたシーケンス（または同じシーケンス相関値が付与されたもの）のメッセージを取り扱うことを確実にし、競合する場合、先着順とする；
・  ステータスとも呼ばれる、集中型または共有型シーケンスステータスコンテキスト８０２は、すべての処理の間のシーケンスステータスの共有を維持し、シーケンスは、シーケンス自体のシーケンス相関値により一意的に識別される。ステータスはまた、与えられたシーケンスの各イベントに対し、適用する動作を決定することができる；
・  「待ち（ｗａｉｔｉｎｇ）」ステータスは、次の着信メッセージを配信のためにキューに入れることを意味する；
・  「配信中（ｄｅｌｉｖｅｒｉｎｇ）」ステータスは、次の着信メッセージが保持されていることを意味する；
・  オーバーフロー、またはオーバーフローストレージ領域とも呼ばれる集中型または共有型オーバーフローストレージ８０６は、複数のアウトバウンドハンドラによって次に処理されるメッセージのみが、それらにアクセスできることを確実にし、他はこのオーバーフロー領域において「保留（ｐｅｎｄｉｎｇ）」とする。オーバーフローストレージは、インデックス付けされ、順序づけされた、現在のシーケンスステータスに関して、配信される準備ができていないシーケンスメッセージである。
【０１０１】
ステータス８０２、ミューテックス８０４、およびオーバーフローストレージ８０６の３つの構成要素は、文脈処理情報であり、キューストレージ８５０と同じ性質を有する。これらは、以下に実装される：
・  すべての分散処理が同じノードで実行される場合は、メモリーデータ、またはファイルベースのストレージ；または
・  サーバシステムが遠隔システムであるいくつかのノードで分散処理が実行される場合は、クライアント／サーバストレージデータベース。
【０１０２】
ストレージ層と標準メッセージストレージの間の最大の一貫性は、独自のトランザクションを共有する共有ＲＤＢＭＳエンジンに両者を実装することである。
【０１０３】
本発明の方法、装置、およびシステムによると：
・  キューストレージ８５０は、複数のインバウンドハンドラと複数のアウトバウンドハンドラの間のメッセージの交換を可能にし、シーケンスストレージ８００から独立して動作し；
・  シーケンスストレージ８００のオーバーフローストレージ８０６は、複数のインバウンドハンドラ８１０、８２０、…、８４０と複数のアウトバウンドハンドラ８６０、８７０、…、８９０間のメッセージ交換のシーケンシングを確実にする。
【０１０４】
図８Ａは、本発明の着信メッセージのシーケンシング処理を例証する：
・  メッセージ８０１−１は、シーケンス相関値「Ａ」に属し、インバウンドハンドラ８１０により受信する；
・  インバウンドハンドラ８１０は、８１２に示すように、シーケンス「Ａ」のミューテックス８０４をロックし、すべてのインバウンドハンドラ、またはアウトバウンドハンドラが、シーケンス相関値が「Ａ」のメッセージを取り扱うことを防ぐ；
・  インバウンドハンドラ８１０は、８１４に示すように、シーケンス「Ａ」の中央ステータスコンテキスト８０２に、シーケンスが存在しないか、シーケンスが「待ち（Ｗａｉｔｉｎｇ）」ステータスであるかをチェックする；
・  インバウンドハンドラ８１０は、８１４に示すように、シーケンス「Ａ」のステータスコンテキスト８０２を「処理中（Ｐｒｏｃｅｓｓｉｎｇ）」に設定する。本発明は、着信メッセージに、先に受信したメッセージに１をプラスしてインクリメントしたランクと同じ、メッセージランクを付与する。着信メッセージはこのシーケンスの最初のメッセージであるので、メッセージに割り当てられるメッセージランクは１に設定される。メッセージランクはシーケンスストレージ８００に、より正確には、シーケンスコンテキスト８０２に格納されるのが好ましい。インバウンドハンドラ８１０は、８１６に示すようにメッセージ８５１をキューストレージ８５０に格納することが好ましい；および
・  インバウンドハンドラ８１０は、メッセージエミッタに肯定応答を行い、シーケンス「Ａ」のミューテックス８０４をリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
【０１０５】
図８Ｂは、他の着信メッセージがシステムによって受信される、シーケンシング処理の次のステップを例証する：
・  第２メッセージ８０１−２はシーケンス「Ａ」に属し、インバウンドハンドラ８２０によって受信される；
・  インバウンドハンドラ８２０は、８２２に示すように、シーケンス「Ａ」のミューテックス８０４をロックし、インバウンドハンドラ８１０、８３０、または８４０、あるいは、アウトバウンドハンドラが、シーケンス「Ａ」内の別のメッセージを取り扱うことを防ぐ；
・  インバウンドハンドラ８２０は、８２４に示すように、シーケンスステータスが「処理中（Ｐｒｏｃｅｓｓｉｎｇ）」であるシーケンス「Ａ」の中央ステータスコンテキスト８０２をチェックする。メッセージは、どのアウトバウンドハンドラでも利用不可能なので、インバウンドハンドラ８２０は、８２６に示すように、メッセージ８０７をオーバーフローストレージ８０６に格納する。
先の着信メッセージに１をプラスしてインクリメントしたメッセージランクの値を着信メッセージにメッセージランクとして割り当てる。前のメッセージのメッセージランクが１であるので、着信メッセージに割り当てられるメッセージランクは、２となる。さらに、本発明は、そのシーケンスで処理されるべき次のメッセージのランクを定義するシーケンスランクをインクリメントする。同じシーケンスからの複数のメッセージがシーケンスストレージ８００に格納されている場合、これらのメッセージランクによってシステムは、キューストレージ８５０に転送されるべき正しいメッセージを識別することができる。正しいメッセージとは、シーケンスに定義されたシーケンスランクに対応するメッセージランクを有するメッセージである。有利なことに、これは着信メッセージがエミッタによって割り当てられたメッセージランクを有し、着信メッセージのランクが、インバウンドハンドラでの到着順にしたがって割り当てられたときに適用される；
・  インバウンドハンドラ８２０は、メッセージエミッタに肯定応答を行い、シーケンス「Ａ」のミューテックスをリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
【０１０６】
図８Ｃは、キューストレージのキューに格納されたメッセージが、アウトバウンドハンドラの１つに処理のためにデキューされる、シーケンシング処理の次のステップを例証する：
・  アウトバウンドハンドラ８７０のうちの１つが、８７１に示すように、キューストレージ８５０から、シーケンス「Ａ」のメッセージ８５１を取得する。本発明により、このメッセージは自動的に、処理されるべきシーケンスの次のメッセージである。したがって、そのランクは最後に処理されたメッセージのランクに１をプラスしてインクリメントした値である。この例証した実施形態において、キューストレージに格納されたメッセージは、シーケンスＡの最初のメッセージなので、そのランクは必然的に「１」となる；
・  アウトバウンドハンドラ８７０は、８７３に示すように、メッセージランク「１」が付与されたメッセージを、その受信者へのさらなる配信の前に、関係する受信者または、別のルーティング手段によって、配信する。一度、メッセージがステップ８７３によって送信されると、アウトバウンドハンドラ８７０が別の処理のために使用可能となる。これは、受け手から肯定応答を受信するまで、継続される。例えば、アウトバウンドハンドラ８７０は、他のシーケンスに関する別のメッセージを取得して送信することができるので、非同期配信を達成し、スループットが向上する。これも、エミッタのメッセージの肯定応答を受けることができる。したがって、ステップ８７３におけるメッセージのエミッタの応答時間によって、アウトバウンドハンドラが処理するメッセージおよび処理の数に制限がない；
・  受け手は、ステップ８７３で送信されたアウトバウンドハンドラ８７０の配信処理８７０１からのメッセージを受信する。これを受けて、受け手は、肯定応答メッセージをシステムに送信する。同じアウトバウンドハンドラ８７０の肯定応答処理８７０２、または別のアウトバウンドハンドラ８６０の肯定応答処理８６０２は、肯定応答メッセージを受信する。これは、図８Ｃに示すステップ８７４に該当する。
【０１０７】
図８Ｄは、次のメッセージが処理のために、アウトバウンドハンドラの１つに転送される前に、オーバーフローストレージ領域８０６に格納され、キューストレージ８５０に転送されるシーケンシング処理の次のステップを示す。図８Ｄに示されるステップは、本システムのインバウンドハンドラにおける肯定応答メッセージの受信８７５により、起動される：
・  アウトバウンドハンドラ８６０は、８６２に示すステータスコンテキスト８０２のシーケンスランクをチェックし、肯定応答したメッセージのシーケンス内で、処理すべき次のメッセージのランクを判断する。シーケンスランクは、「２」に設定されているので、アウトバウンドハンドラ８６０は、８０９に示すメッセージランク「２」を有するオーバーフローストレージ領域８０６からの、シーケンス「Ａ」のメッセージ８０７を取得する。このメッセージ８０７は、次に、キューストレージ８５０に格納され、すべてのアウトバウンドハンドラに対し、利用可能となる。ステータスコンテキスト８０２は「処理中（Ｐｒｏｃｅｓｓｉｎｇ）」のままである。シーケンスランクは、インクリメントされ、「３」に設定されるので、次に処理されるメッセージは「３」と同等のメッセージランクを有することを示す；
・  アウトバウンドハンドラ８６０は、停止し、キューストレージ８５０に格納されている別のメッセージの処理を行うよう準備する；
・  処理は、着信メッセージがすべてのシーケンスが処理され、配信されるまで、継続される。
【０１０８】
図８Ａ〜８Ｄに示す処理は、受信した着信メッセージのシーケンスインデックス（シーケンス内のメッセージのランクを示す）の有無については統一されている。それが提供されている場合、同じシーケンス内の受信順序に基づき、インバウンドハンドラによってランキングが生成されている場合でない限り、シーケンシングランクとして使用される。
【０１０９】
シーケンスの再配列
図８Ａ〜８Ｄに詳細に示した、着信メッセージが厳格なシーケンス順序に従ってインバウンドハンドラによって受信される処理に加えて、シーケンス外で受信したメッセージを処理するため、同じ処理を実行した。唯一の事実上の前提条件は、メッセージのエミッタが同じシーケンス内の各メッセージに対し、シーケンス内でのメッセージのランクを示すインデックスを提供することである。
【０１１０】
先に示した通り、本発明は、そのシーケンスで処理されるべき次のメッセージのランクを定義するシーケンスランクをインクリメントする。キューストレージ８５０が、与えられたシーケンスからメッセージを受信することができると、シーケンスランクがチェックされる。メッセージランクがシーケンスランクと同等のメッセージのみが、キューストレージ８５０に転送される。シーケンスランクと同等のメッセージランクを有するメッセージがシーケンスストレージ８００のオーバーフロー領域８０６にない場合、このシーケンスの処理は、インバウンドハンドラから正しいランクのメッセージを受信するまで、保留される。したがって、シーケンスランクは、処理すべきメッセージを示すカウンターのように作動する。シーケンスランクは、シーケンスストレージ８００内に格納されることが好ましい。
【０１１１】
図８Ｅは、シーケンスが再配列された着信メッセージ８０１のシーケンシング処理のステップを例証する：
複数のインバウンドハンドラ８１０、…、８４０、によって実行される前述の処理に加えて、インデックスの命令により行われた再配列に関するステップが追加される場合がある；
・  メッセージのインデックスにより示されるメッセージのランクは、シーケンスの順序を維持するため、次に処理されるメッセージのランクと比較される。シーケンス順序を維持するための、次に処理するメッセージのこのランクは、インクリメントして更新されるシーケンスランクによって、好ましくはシーケンスストレージにおいて示される；
・  メッセージのランクが８１８に示すようにシーケンスランクと一致する場合、着信メッセージ８１５はキューストレージ８５０に格納され、複数のアウトバウンドハンドラに使用可能となる。シーケンスステータスは「処理中（Ｐｒｏｃｅｓｓｉｎｇ）」に設定される。処理するシーケンスランクは、インクリメントされ、先述した処理が適用される；
・  インデックスにより示されるメッセージのランクが、シーケンスランク８１９を越える場合、メッセージ８１３は、オーバーフローストレージ８０６に格納される。シーケンスステータス８０２は「保留（Ｐｅｎｄｉｎｇ）」に設定される。メッセージは、事実上、処理されない。所望のメッセージランクを有する、処理すべきメッセージがインバウンドハンドラにより受信されると、シーケンシングは再開される。その場合、インバウンドハンドラは対応するメッセージをキューストレージに格納し、シーケンスステータスを「処理中（Ｐｒｏｃｅｓｓｉｎｇ）」に設定する。
【０１１２】
図８Ａ〜８Ｄに示す処理に関しては、アウトバウンドハンドラがメッセージに対する動作を終了すると、アウトバウンドハンドラは、オーバーフローストレージ８０６内で、メッセージランクがシーケンスランクに一致するメッセージを探す（シーケンスランクは、シーケンスの順序を維持するための、次に処理すべきメッセージのランクを示す）。もし該当するメッセージが見つかった場合、キューストレージ８５０に格納するが、もし該当メッセージが見つからなかった場合、シーケンスステータスは、「保留（Ｐｅｎｄｉｎｇ）」（このシーケンスのメッセージがオーバーフロー領域に存在するが、メッセージランクは、シーケンスランクと同等でない場合）または、「待ち（Ｗａｉｔｉｎｇ）」（オーバーフローストレージ領域にそのシーケンスのメッセージは存在しない）に設定される。
【０１１３】
シーケンスロックとタイムアウトの管理
前述した通り、与えられたシーケンスの受信メッセージは、これらのメッセージランクが処理すべきメッセージに合致しない限り、オーバーフロー８０６に格納される。これは、次と予想される処理すべきメッセージがインバウンドハンドラによって受信されない限り、シーケンス全体にとってはロック状態となる。
【０１１４】
特定の実施形態で、本発明は、このロック状態が処理によって要求されれば、時間的に制限されることを確実にする。この処理はさらに、長さ（秒、分、日数、など）によって表現されるグローバルなシーケンスタイムアウト値を定義する。
【０１１５】
他の実施形態では、シーケンスコンテキスト８０２は、シーケンスタイムアウトとして定義される絶対時刻値を含んでもよい。インバウンドハンドラまたはアウトバウンドハンドラが与えられたシーケンスコンテキスト記録にアクセスする度に、つまり、シーケンスに属するメッセージを何らかの方法で処理していて、シーケンスに対する動作を示す場合、この絶対時刻値は、現在のシステム時刻とシーケンスタイムアウト期間の総和である値により更新される。
【０１１６】
さらに別の実施形態では、シーケンスコンテキストのフルリストを定期的に起動し、スキャンするタイムアウトシーケンスコレクターを実装してもよい。この特別な実装によって、シーケンス期間が期限切れとなったシーケンスはいずれも、検出される。この処理は、選択を達成するために、シーケンスタイムアウト値を活用する。
【０１１７】
これが実装されることによって、本発明による方法、装置、およびシステムは以下のことが可能となる：
・  オーバーフローストレージ８０６およびシーケンスコンテキスト８０２における対応するメッセージを消去する；
・  特定のシーケンス期限イベントに対し、十分な処理と記録を実行する；
・アイテムを順番に取るか、見つかるまで次を待つ間はアイテムを無視して、同期をずらす；
・アラームを発する。
【０１１８】
本発明は、データ処理に多くのアプリケーションを有する。しかし、それは特に以下に示す内容について適している：
・  企業、より具体的には、ソフトウェア企業のインフラストラクチャのハブとし作動するアプリケーションが長時間のメッセージングを取扱うＡＭＳ（Ａｍａｄｅｕｓ Ｍｅｓｓａｇｉｎｇ Ｓｅｒｖｅｒ）などのメッセージングサーバ。予約業務を必要とする業界では、ＡＭＳは予約システムおよび出発管理システムの両方で使用される。シーケンシングは、すべてのテレタイプのトラフィックのために実行される。テレタイプのメッセージは、通常、ＴＴＹと呼ばれる。ＴＴＹタイプＢは、航空業界の標準であり、与えられた機能的コンテキストにおいて厳格な順序で処理を行う非同期チャネルを介してメッセージを交換する。例えば、第１メッセージは、搭乗客のリストを含み、第２リストは、非搭乗の乗客(suppressed passengers)を含み、第３リストは、追加の乗客のリストを含む。これらの乗客名簿は、順序を厳格に守る必要がある；
・  別の分野の用途として、例えば、ＯＨＦ（ＯＴＦ ｈｉｇｈ-ｌｅｖｅｌ ｆｒａｍｅｗｏｒｋ）があり、これは、保証された非同期配信を実行するための多くの用途で使用されるミドルウェアソフトウェアコンポーネントである。ＯＨＦのシーケンシングの主な使用方法として、ＣＤＢ（ｃｏｕｐｏｎ ｄａｔａｂａｓｅ）と電子チケット用途の間の同期化が挙げられる。限られた時間内に、１つのクーポンに多くの変更が加えられることはよくある。これらの変更は、同期を維持するため、正しい順序で、電子チケットアプリケーション、またはクーポンデータベースに転送される必要がある。
【０１１９】
上記では主に、エアラインまたはエアキャリアにより提供される旅行ソリューションについて取り上げたが、当業者は、本発明の実施形態が、エアラインの使用に限定されず、これらに限定されないが、船舶、鉄道、自動車、バスおよびホテルなどの旅行商品などを含む、他の種類の旅行様式および旅行提供業者にも適応できることを理解されたい。
【０１２０】
上記は、典型的かつ非限定の例を用いて様々な方法、装置、およびソフトウェアを全面から例証し、本発明の実施形態として運用するものである。しかし、上記説明を、添付の図面および請求項と併せると、様々な修正および改造は、関連技術の当業者には明らかにされよう。例の一部として、他の類似した、あるいは、同等の処理、または、アルゴリズム、およびデータ表記は、当業者によって試行されてもよい。さらに、各構成要素、関数、アルゴリズム（例：、など）の名称は単に記述的なもので、限定された意味を持つことを意図しておらず、これらの構成要素、関数、およびアルゴリズムは、適切であればどのような名称で呼んでもよい。本発明における教示の、そのような類似した修正はすべて、本発明の実施形態の範囲に含まれる。
【０１２１】
さらに、本発明の実施形態のいくつかの機能は、他の機能の対応する使用なしに、有利に利用される。そのため、上記説明は、これらに限定されることなく、本発明の原理、教示、および実施形態を単に説明するものである。
【０１２２】
本明細書で説明した様々な技術の実施形態は、ディジタル電子回路、コンピュータハードウェア、ハンドヘルド電子機器ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせに実装されてもよい。本実施形態は、データ処理装置（例：プログラマブルプロセッサ、コンピュータ、タブレット、または多数のコンピュータによって）によって実行されるか、データ処理装置の動作を制御するために、プログラム、またはソフトウェア製品として、つまり、情報キャリアに有形に具体化されたコンピュータプログラムとして（例：機械可読ストレージ装置、または伝播される信号内において）実装されてもよい。上記のコンピュータプログラムなどのプログラムは、コンパイルされた、あるいは、インタプリタされた言語を含む、如何なる形式のプログラミング言語で記述することが可能であり、スタンドアローンプログラム、モジュール、コンポーネント、サブルーチン、その他コンピューティング環境において使用が適切な装置を含む如何なる形式でも展開可能である。プログラムは、１台のコンピュータ、またはタブレット、複数のコンピュータ、またはタブレット、１つのサイト、または複数のサイトに分散して、通信ネットワーク、または無線ネットワークを介して相互接続して展開し、実行することが可能である。
【０１２３】
コンピュータプログラムを実行するのに適切なプロセッサの例として、汎用型および専用型マイクロプロセッサ、および、様々なタイプのディジタルコンピュータ、タブレット、または電子機器の１基以上のプロセッサが挙げられる。一般に、プロセッサは、ＲＯＭ（Ｒｅａｄ-ｏｎｌｙ ｍｅｍｏｒｙ）またはＲＡＭ（Ｒａｎｄｏｍ ａｃｃｅｓｓ ｍｅｍｏｒｙ）またはその両方から命令とデータを受ける。コンピュータの構成要素は、命令を実行する少なくとも１つのプロセッサと、命令およびデータを格納する１つ以上のメモリ装置を備える。一般に、コンピュータ、または電子機器は、データを受信、送信、および送受信するため、さらに、１つ以上の大容量ストレージ装置（例：磁気ディスク、光磁気ディスク、光ディスク）を有するか、効果的に結合されている。
【０１２４】
本実施形態は、バックエンドコンポーネントを含むコンピューティングシステム（例：データサーバ）、ミドルウェアコンポーネントを含むコンピューティングシステム（例：アプリケーションサーバ）、フロンドエンドコンポーネントを含むコンピューティングシステム（例：グラフィカルユーザーインタフェース、またはＷｅｂブラウザを有し、これらを介してユーザーは、実装プログラムと相互作用が可能なクライアントコンピュータ）、または、そのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントを組み合わせた、コンピューティングシステムに実装されてもよい。構成要素は、通信ネットワーク、無線ネットワーク、電気通信ネットワークなどの、ディジタルデータ通信の如何なる形式、または媒体により相互接続されてもよい。通信ネットワーク、または電気通信ネットワークの例として、ＬＡＮ（ｌｏｃａｌ ａｒｅａ ｎｅｔｗｏｒｋ）およびＷＡＮ（ｗｉｄｅ ａｒｅａ ｎｅｔｗｏｒｋ）がある（例：インターネットやＷｉｆｉネットワークなどの無線ネットワーク）。
【０１２５】
本明細書では、実装された特定の機能について説明してきたが、多くの修正、代替、変更、および等価が発生することを当業者は理解されたい。したがって、本明細書に記載の請求項には、本発明の実施形態の精神と範囲にしたがって、そのようなすべての修正や変更が含まれることを理解されたい。
【図１】
2015527658.tif 000003
【図２】
2015527658.tif 000004
【図３】
2015527658.tif 000005
【図４】
2015527658.tif 000006
【図５】
2015527658.tif 000007
【図６】
2015527658.tif 000008
【図７】
2015527658.tif 000009
【図８Ａ】
2015527658.tif 000010
【図８Ｂ】
2015527658.tif 000011
【図８Ｃ】
2015527658.tif 000012
【図８Ｄ】
2015527658.tif 000013
【図８Ｅ】
2015527658.tif 000014
【国際調査報告】
2015527658.tif 000015
2015527658.tif 000016
2015527658.tif 000017