(57)【要約】  メッセージは、メッセージ処理エンジンによって分散メッセージングシステムにおいて処理される。メッセージターゲットは、第１の規格または第2のレガシー規格に従って動作する。データベースコミット指示を受信することに応じて、第１の規格に従って動作する通知されるべき各メッセージターゲットに対してメッセージエンベロープが生成され、各メッセージエンベロープ内の少なくとも1つのメッセージが生成される。同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係が計算される。少なくともそれぞれのメッセージエンベロープのメッセージの規格とメッセージの機能とに基づいて、各メッセージエンベロープ内のメッセージ間のメッセージ依存関係が計算される。メッセージは、メッセージエンベロープ依存関係とメッセージ依存関係とに基づくシーケンスで、それぞれのメッセージターゲットに送信される。
2020524329.tif 000002
【特許請求の範囲】
【請求項１】
複数のメッセージターゲットを有する分散メッセージングシステムにおいてメッセージを処理するための方法であって、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第１の規格に従って動作し、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第2のレガシー規格に従って動作し、前記方法は、メッセージ処理エンジンによって実行され、前記方法は、
複数のデータベースコミット指示を受信するステップであって、各データベースコミット指示はデータベースレコードの変更を示す、ステップと、
前記複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、前記第１の規格に従って動作する通知されるべき各メッセージターゲットのためのメッセージエンベロープと、各メッセージエンベロープ内の少なくとも1つのメッセージとを生成するステップと、
同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係を計算するステップであって、前記メッセージエンベロープ依存関係は、前記同じメッセージターゲットのための前記メッセージエンベロープの順序を定義する、ステップと、
少なくとも前記それぞれのメッセージエンベロープの前記メッセージの前記規格と前記メッセージの機能とに基づいて、各メッセージエンベロープ内の前記メッセージ間のメッセージ依存関係を計算するステップであって、前記メッセージ依存関係は、各メッセージエンベロープ内の前記メッセージの順序を定義する、ステップと、
前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記それぞれのメッセージターゲットに前記メッセージを送信するステップと
を含む、方法。
【請求項２】
前記第１の規格に従って動作するデータベースシステムから前記複数のデータベースコミット指示のうちの第1のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットのためのメッセージエンベロープを生成し、各メッセージエンベロープ内の少なくとも1つのメッセージを生成するステップであって、
前記第１の規格に従って動作する第1のメッセージターゲットに中継されるべき複数の相互依存する第1のメッセージを有する第1のメッセージエンベロープを生成することであって、前記複数の相互依存する第1のメッセージは、前記第１の規格に従って指定されることと、
前記第2のレガシー規格に従って動作する第2のメッセージターゲットに中継されるべき1つの第2のメッセージを生成することであって、前記第2のメッセージは、前記第2のレガシー規格に従って指定されることと
を含む、ステップと、
前記第1のメッセージエンベロープと、前記第1のメッセージターゲットに対してすでに保留中の他のメッセージエンベロープとの間のメッセージエンベロープ依存関係を計算するステップであって、前記エンベロープ依存関係は、前記第1のメッセージターゲットに関する前記メッセージエンベロープの前記順序を定義する、ステップと、
少なくとも前記第1のメッセージターゲットと前記第1のメッセージの前記機能とに基づいて、前記第1のメッセージエンベロープの前記第1のメッセージ間の前記メッセージ依存関係を計算するステップであって、前記メッセージ依存関係は、各メッセージエンベロープ内の前記メッセージの前記順序を定義する、ステップと、
前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記第1のメッセージを前記第1のメッセージターゲットに送信するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記第２の規格に従って動作するレガシーデータベースシステムから、前記複数のデータベースコミット指示のうちの第2のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットにのための第3のメッセージを生成するステップであって、前記第3のメッセージは、前記第2のレガシー規格に準拠するメッセージであり、
前記第3のメッセージの前記メッセージターゲットに送信されることが保留されている他のメッセージがないと判定することに応じて、前記第3のメッセージに関するメッセージ依存関係を計算することなく前記第3のメッセージを送信すること、または、
前記第3のメッセージの前記メッセージターゲットに送信されるために少なくとも1つの他のメッセージが保留中であると判定することに応じて、少なくとも前記メッセージターゲットと前記第3のメッセージの前記機能とに基づいて、前記第3のメッセージの前記メッセージ依存関係を計算することであって、前記メッセージ依存関係は、前記第3のメッセージの前記メッセージターゲットに関する前記メッセージの前記順序を定義する、ことと、前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記第3のメッセージの前記メッセージターゲットに前記少なくとも1つの他のメッセージと前記第3のメッセージとを送信することと
を行う、ステップをさらに含む、請求項2に記載の方法。
【請求項４】
各メッセージエンベロープについて、少なくとも前記メッセージの前記規格とメッセージタイプとに応じて、前記複数の相互依存するメッセージの各々に所与の優先度値を割り当てるステップと、
前記割り当てられた優先度値に基づいて、各メッセージエンベロープについて前記メッセージ間の前記メッセージ依存関係を計算するステップと
を含む、請求項1から3のいずれか一項に記載の方法。
【請求項５】
メッセージが前記メッセージの前記メッセージエンベロープ内のいかなる他のメッセージから独立しており、前記メッセージの前記メッセージエンベロープがいかなる他のメッセージエンベロープから独立していると判定することに応じて、前記メッセージを送信するステップを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
送信された前記メッセージの前記メッセージ依存関係と、前記メッセージの前記メッセージエンベロープ内の前記メッセージの前記順序における次のメッセージ、もしあれば、の前記メッセージ依存関係とを更新するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記送信されたメッセージが前記送信されたメッセージの前記メッセージエンベロープ内のメッセージの前記順序において最後のメッセージであったと判定することに応じて、前記送信されたメッセージの前記メッセージエンベロープの前記メッセージエンベロープ依存関係を更新するステップと、前記メッセージエンベロープの順序において、もしあれば、次のメッセージエンベロープの前記エンベロープ依存関係を更新するステップとをさらに含む、請求項5または6に記載の方法。
【請求項８】
前記第１の規格が、国際航空輸送協会の新流通規格プログラムに準拠している、請求項1から5のいずれか一項に記載の方法。
【請求項９】
複数のメッセージターゲットを有する分散メッセージングシステムにおいてメッセージを処理するためのメッセージ処理エンジンであって、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットが、第１の規格に従って動作し、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットが、第2のレガシー規格に従って動作し、前記メッセージ処理エンジンが、
複数のデータベースコミット指示を受信することであって、各データベースコミット指示はデータベースレコードの変更を示す、ことと、
前記複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、前記第１の規格に従って動作する通知されるべき各メッセージターゲットのためのメッセージエンベロープと、各メッセージエンベロープ内の少なくとも1つのメッセージとを生成することと、
同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係を計算することであって、前記メッセージエンベロープ依存関係が、前記同じメッセージターゲットのための前記メッセージエンベロープの順序を定義する、ことと、
少なくとも前記それぞれのメッセージエンベロープの前記メッセージの前記規格と前記メッセージの機能とに基づいて、各メッセージエンベロープ内の前記メッセージ間のメッセージ依存関係を計算することであって、前記メッセージ依存関係が、各メッセージエンベロープ内の前記メッセージの順序を定義する、ことと、
前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記それぞれのメッセージターゲットに前記メッセージを送信することと
を行うように構成された、メッセージ処理エンジン。
【請求項１０】
前記第１の規格に従って動作するデータベースから前記複数のデータベースコミット指示のうちの第1のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットに対するメッセージエンベロープを生成し、各メッセージエンベロープ内の少なくとも1つのメッセージを生成することであって、
前記第１の規格に従って動作する第1のメッセージターゲットに中継されるべき複数の相互依存する第1のメッセージを有する第1のメッセージエンベロープを生成することであって、前記複数の相互依存する第1のメッセージは、前記第１の規格に従って指定されることと、
前記第2のレガシー規格に従って動作する第2のメッセージターゲットに中継されるべき1つの第2のメッセージを生成することであって、前記第2のメッセージは、前記第2のレガシー規格に従って指定されることと
を含む、ことと、
前記第1のメッセージエンベロープと、前記第1のメッセージターゲットに対してすでに保留中の他のメッセージエンベロープとの間のメッセージエンベロープ依存関係を計算することであって、前記エンベロープ依存関係は、前記第1のメッセージターゲットに関する前記メッセージエンベロープの前記順序を定義する、ことと、
前記第1のメッセージターゲットと前記第1のメッセージの前記機能とに基づいて、前記第1のメッセージエンベロープの前記第1のメッセージ間の前記メッセージ依存関係を計算することであって、前記メッセージ依存関係は、各メッセージエンベロープ内の前記メッセージの前記順序を定義する、ことと、
前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記第1のメッセージを前記第1のメッセージターゲットに送信することと
を行うようにさらに構成された、請求項9に記載のメッセージ処理エンジン。
【請求項１１】
前記第２の規格に従って動作するレガシーデータベースシステムから、前記複数のデータベースコミット指示のうちの第2のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットに対する第3のメッセージを生成することであって、前記第3のメッセージは、前記第2のレガシー規格に準拠するメッセージであり、
前記第3のメッセージの前記メッセージターゲットに送信されることが保留されている他のメッセージがないと判定することに応じて、前記第3のメッセージに関するメッセージ依存関係を計算することなく前記第3のメッセージを送信すること、または、
前記第3のメッセージの前記メッセージターゲットに送信されるために少なくとも1つの他のメッセージが保留中であると判定することに応じて、少なくとも前記メッセージターゲットと前記第3のメッセージの前記機能とに基づいて、前記第3のメッセージの前記メッセージ依存関係を計算することであって、前記メッセージ依存関係は、前記第3のメッセージの前記メッセージターゲットに関する前記メッセージの前記順序を定義する、ことと、前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで、前記第3のメッセージの前記メッセージターゲットに前記少なくとも1つの他のメッセージと前記第3のメッセージとを送信することと
を行うようにさらに構成された、請求項10に記載のメッセージ処理エンジン。
【請求項１２】
請求項4から8のいずれか一項に記載の方法を実行するようにさらに構成された、請求項9から11のいずれか一項に記載のメッセージ処理エンジン。
【請求項１３】
複数のメッセージターゲットを有する分散メッセージングシステムにおいてメッセージを処理するためのコンピュータプログラム製品であって、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第１の規格に従って動作し、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第2のレガシー規格に従って動作し、前記コンピュータプログラム製品は、前記プログラムがコンピュータ上で実行されると、請求項1から8のいずれか一項に記載の方法を実行するためのコンピュータ可読記憶媒体上に記憶されたプログラムコード命令を含む、コンピュータプログラム製品。
【請求項１４】
複数のメッセージターゲットを有する分散メッセージングシステムにおいてメッセージを処理するためのコンピュータプログラムであって、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第１の規格に従って動作し、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第2のレガシー規格に従って動作し、前記コンピュータプログラムは、請求項1から8のいずれか一項に記載の方法を実行するように構成された、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してメッセージ処理に関する。より具体的には、本発明は、メッセージとメッセージ順序との間の依存関係を順守するメッセージ処理に向けられている。
【背景技術】
【０００２】
従来技術において、様々なメッセージ処理システムが知られている。
【０００３】
US7,240,097B2は、並行処理のためにメッセージの順序を保ることができるシステムについて説明している。メッセージシステムは、受信された入力メッセージをすぐに処理し、メッセージを宛先に送信するとき、入力メッセージの順序を維持する。
【０００４】
US8,200,765B2は、メッセージの重要度値に基づく順序でメッセージが出力キューに入れられる集中型システムについて説明しており、すなわち、より重要度の高いメッセージは、より重要度の低いメッセージよりも優先される。入力キューと出力キューの両方が用いられる。提案されたシステムは、集中型データベース接続を有する分散/並列システム方式で展開配置され、各ファームノードサーバにおいて出力キューが用いられる。メッセージの順序付けは、メッセージが出力キューに入れられる前に計算される。
【０００５】
US2007/0124398A1は、割り当てられたシーケンス識別子に従って受信器にメッセージを送信することができる。提案された方法は、1つのエンベロープにのために生成されたメッセージを優先させることができ、エンベロープは、シーケンス識別子を用いて互いに接続される。
【０００６】
US7,680,793B2は、コミットタイムスタンプに基づいた順序でメッセージを送信する。、メッセージは、ビジネス価値とコミットタイムスタンプの両方に基づいた順序で送信される。
【０００７】
US8,875,155B2は、メッセージのグループについてのメッセージ順序を管理する。
【０００８】
EP2811437は、特に、HTTP(ハイパーテキスト転送プロトコル)、SOAP(簡易オブジェクトアクセスプロトコル)、またはXML(拡張マークアップ言語)ベースのメッセージについて、入来メッセージを順序付けるためのSOA(サービス指向アーキテクチャ)を提案する。
【０００９】
さらに、テレタイプまたは略してTTYメッセージなどの特定のメッセージ規格が知られている。例えば、EP2254046B1は、TTYメッセージの送信順序を決定するためのTTYメッセージのメッセージ順序付けについて説明している。
【００１０】
さらに、以下、略してNDCと称される「ニュー・ディストリビューション・ケイパビリティ(New Distribution Capability)」規格が、2015年に国際航空輸送協会(International Air Transport Association)(IATA)によって交付された。NDCは、航空会社と横断的販売網(global distribution system)(GDS)との間のXMLベースのデータ伝送規格の開発および市場での採用のための航空会社配信フォーマットである。例えば、NDCは、航空会社が旅行代理店からの購買要求に直接応答し、注文処理を管理することを可能にし、真の比較購買を可能にする。NDCは、システムまたはソフトウェアまたはデータベースではなく、航空会社と旅行代理店との間で情報を交換するための規格である。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】US7,240,097B2
【特許文献２】US8,200,765B2
【特許文献３】US2007/0124398A1
【特許文献４】US7,680,793B2
【特許文献５】US8,875,155B2
【特許文献６】EP2811437
【特許文献７】EP2254046B1
【特許文献８】EP2693337A1
【発明の概要】
【発明が解決しようとする課題】
【００１２】
レガシーフォーマットに準拠したメッセージと、レガシーフォーマットの後継、すなわち、新しいフォーマットに準拠したメッセージの両方が正しいメッセージ順序で受信器に送信されることを保証しつつ、両方のフォーマットに準拠したメッセージを処理することができるメッセージ処理システムを提供することが目的である。具体的には、NDC規格およびTTYなどのレガシーフォーマットに準拠したXMLベースのメッセージを統一的に処理することができるメッセージ処理システムを提供することが目的である。
【００１３】
NDCは、1つのデータベース変更コミットが1つのメッセージターゲットへの複数のメッセージをトリガすることを可能にする。これらのメッセージは、異なるタイプのものであり得、異なる送信方法に送信され得、一定の依存関係と因果関係とを有し得る。したがって、NDCメッセージフローをサポートし、同時に、より単純な機能を有するレガシーメッセージシステムをサポートすることについて後方互換性を有し、それによって、2つの独立したメッセージシステムではなく、両方のタイプのメッセージフローが統合かつ一体化された方法でサポートされるメッセージシステムを提供することが目的である。さらに、オープンかつ拡張可能であり、したがって、NDC規格よりも広い範囲の機能さえもサポートしうる将来のメッセージ規格をサポートし得るメッセージシステムを提供することが目的である。
【００１４】
これらの目的は、独立請求項によって対処され、解決される。
【課題を解決するための手段】
【００１５】
第1の態様によれば、メッセージ処理エンジンによって分散メッセージングシステムにおいてメッセージを処理する方法が提供される。複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは、第１の規格に従って動作し、複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは、第2のレガシー規格に従って動作する。方法は、メッセージ処理エンジンによって実行される。
【００１６】
複数のデータベースコミット指示が受信され、各データベースコミット指示は、データベースレコードの変更を示す。複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、第１の規格に従って動作する通知されるべき各メッセージターゲットのためにメッセージエンベロープが生成され、各メッセージエンベロープ内の少なくとも1つのメッセージが生成される。
【００１７】
同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係が計算される。メッセージエンベロープ依存関係は、同じメッセージターゲットのためのメッセージエンベロープの順序を定義する。
【００１８】
少なくともそれぞれのメッセージエンベロープのメッセージの規格とメッセージの機能とに基づいて、各メッセージエンベロープ内のメッセージ間のメッセージ依存関係が計算される。メッセージ依存関係は、各メッセージエンベロープ内のメッセージの順序を定義する。
【００１９】
メッセージは、メッセージエンベロープ依存関係とメッセージ依存関係とに基づいた順序でそれぞれのメッセージターゲットに送信される。
【００２０】
第2の態様によれば、上記の方法を実施するように構成されたメッセージシステムが提供される。
【００２１】
第3の態様によれば、コンピュータ上で実行されているときに上記の方法を実施するコンピュータプログラム製品が提供される。
【００２２】
さらなる態様は、従属請求項によって記載されている。
【００２３】
本発明について、添付図面を参照して説明する。同様の参照番号は、通常、同一または機能的に同様の要素を示す。
【図面の簡単な説明】
【００２４】
【図１】本明細書で説明する機能レベルのメッセージ処理方法に関するフローチャートである。
【図２】本明細書で説明する機能レベルのメッセージ処理方法に関するフローチャートである。
【図３】本明細書で説明する機能レベルのメッセージ処理方法に関するフローチャートである。
【図４】本明細書で説明する機能レベルのメッセージ処理方法に関するフローチャートである。
【図５】本明細書で説明するメッセージ処理システムによって定義されるメッセージエンベロープレベルおよびメッセージレベルにおける依存関係を視覚化する図である。
【図６】メッセージ処理システムの例示的なプロセス指向の図である。
【図７】メッセージ処理システムに関する例示的なハードウェアアーキテクチャを示す図である。
【図８】メッセージおよび依存関係処理の実装形態例に関するより詳細なフローチャートである。
【図９】メッセージおよび依存関係処理の実装形態例に関するより詳細なフローチャートである。
【図１０】メッセージ送信プロセスの実装形態例に関する詳細なフローチャートである。
【図１１】メッセージエンベロープおよびメッセージと、メッセージエンベロープとメッセージとの間の依存関係とを維持するテーブルの異なる状態を示す図である。
【図１２】メッセージエンベロープおよびメッセージと、メッセージエンベロープとメッセージとの間の依存関係とを維持するテーブルの異なる状態を示す図である。
【図１３】メッセージエンベロープおよびメッセージと、メッセージエンベロープとメッセージとの間の依存関係とを維持するテーブルの異なる状態を示す図である。
【図１４】データベーステーブルおよび/または要求クライアントの内部アーキテクチャの例示的な概略図である。
【発明を実施するための形態】
【００２５】
図6〜図14に関してより具体的な実装形態例を説明する前に、いくつかのより一般的な態様について、図1〜図5を参照して説明する。
【００２６】
一般に、メッセージターゲットに送信されるべきメッセージの順序は、メッセージ処理システムにおいて対処されるべき一つの側面である。例えば、予約メッセージの正しい順序は、GDS内の情報フローについて維持されるべきである。例えば、予約システムのデータベースにおけるブッキング(予約)は、1つまたはいくつかの変更コミットにおいて変更される。システム全体のデータ整合性を維持するため、受信器は、メッセージ交換の形でブッキング変更の、すなわち、それらの変更コミットの、対応する通知を順番に受信することになっている。変更コミットの順序が変更された場合、GDSインスタンスおよび/または航空会社システム間でレコード間の矛盾または不一致が生じる。例えば、旅行代理店は、2回の連続する変更コミットにおいて、フライトのキャンセルを行い、次いで、異なる日にちの同じフライトを再予約する。顧客、すなわち、航空会社は、正しい同期をとるために、まずキャンセルメッセージを受信する必要があり、次にようやくフライト再予約のためのメッセージを受信する。したがって、メッセージターゲットへの正しいメッセージシーケンスは、レコードの矛盾を回避するために、予約がブッキングソースとブッキングターゲットとの間で一貫性が保たれることを保証する。
【００２７】
GDS予約同期フローなどの今日のメッセージングフローでは、通常、1つのメッセージターゲットのために、GDSノード間で変更を交換するために、ブッキングレコードの変更コミットごとに最大1つのTTYメッセージ(いわゆる、乗客名レコード、別名PNRについてのトランザクション終了のエンベロープ)が生成される。従来のTTYフレームワークのための専用の方法がEP2254046Blによって提案されている。しかしながら、NDC予約の文脈においては、シナリオは、変化しており、なぜならば、NDC規格の実装は、通常、NDC仕様に従って動作し、したがって、NDC機能を実装するメッセージターゲットに対する1つの予約レコード変更コミットについて、複数のメッセージをトリガすることが想定されているからである。それらの複数のメッセージは、異なるメッセージタイプ(TTY、XML、またはさらには将来の他のタイプ)、異なるメッセージ機能(メッセージの追加または削除など)、送信方法(同期:メッセージが送信され、同じセッションにおいて確認応答が受信され、次いで、メッセージ配信が成功したことがわかった後、セッションが閉じられる、または、非同期:セッションは、メッセージが送信された送信者側で閉じられ、別のセッションを介して確認応答が送信者に送り返される)を有してもよく、それらは、様々な伝送プロトコルおよびネットワークプロトコル(HTTP/SOAPなど)、ならびにメッセージ間の関係を定義する送信優先度も用いてもよい。また、レガシーTTYメッセージフローは、メッセージ処理システムによって依然として維持されるべきであり、すなわち、TTYフローおよびNDCフローは予約レコードを同期するために共存するので、メッセージ処理システムは、後方互換性を有する必要がある。したがって、堅牢性、後方互換性を達成し、安定性を維持するために、新しいメッセージ処理メカニズムが求められている。
【００２８】
要約すると、この新しいメッセージ処理メカニズムは、NDC予約の文脈における、互いに依存関係がある複数のメッセージが1つの変更コミットに対してトリガされ、したがって、良好に定義された順序でメッセージターゲットに送信される必要があるというメッセージシーケンスの問題に対処するものである。新しいメッセージ処理は、NDCメッセージフローおよびレガシーTTYフローを、TTY、XML、および他のメッセージタイプが使用されるハイブリッドモードにおけるブッキングレコードを同期する1つの汎用メッセージ処理フレームワークに統合するという問題に対処するものでもある。
【００２９】
これらの問題に対処するために、2つの別個の独立したメッセージ処理システムによってレガシーメッセージフローとNDCメッセージフローとを処理するのではなく、一体化された方法でメッセージを処理し、メッセージ順序を管理することが提案される。図1を参照すると、メッセージは、メッセージ処理エンジンによって分散メッセージングシステムにおいて処理される。
【００３０】
分散メッセージングシステムは、複数のタイプのメッセージターゲットを含む。複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは、第１の規格に従って動作し、複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは、第2のレガシー規格に従って動作する。本明細書で使用されるメッセージターゲットという用語は、横断的販売網(GDS)、出発制御システム(DCS)、ワイドエリアネットワーク(WAN)などの大規模システム、または航空会社などの特定の組織のローカルエリアネットワーク(LAN)、ならびに個々の受信局を含む様々なレベルにおけるメッセージ宛先を含む。
【００３１】
いくつかの実施形態において、第１の規格に従って動作するメッセージターゲットは、完全に後方互換性があり、したがって、第２の規格にも従って動作し、すなわち、第２の規格に従ってメッセージを処理するようにも構成され、一方、第２の規格に従って動作するメッセージターゲットは、第１の規格を実装しておらず、したがって、第２の規格に従ってメッセージを処理することができないレガシーメッセージターゲットである。したがって、一般に、本明細書に記載される第１の規格への言及は、実際には、第１の規格および第２の規格と、第１の規格および第２の規格に準拠するそれぞれのメッセージとを包含し、一方、本明細書に記載される第２の規格への言及は、第２の規格に準拠するメッセージターゲットおよびメッセージのみを包含する。
【００３２】
再び図1を参照すると、2において、メッセージ処理エンジンによって複数のデータベースコミット指示が受信される。各データベースコミット指示は、データベースレコードの変更を示す。データベースコミット指示は、検索クエリと、メッセージ処理エンジンの上流に位置するデータベース内のデータベースレコードへの変更を確定するデータベースコミットとの間に、乗客名レコード(PNR)などのデータベースレコードに対して行われたすべての変更のコンテナである。したがって、上流データベースにおいて変更がコミットされるたびに、データベース変更コミット指示が生成され、メッセージ処理エンジンに公開される。したがって、データベースコミット指示は、メッセージ処理エンジンへの入力である。
【００３３】
複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、4において、第１の規格に従って動作する通知されるべき各メッセージターゲットのためのメッセージエンベロープが生成され、各メッセージエンベロープ内の少なくとも1つのメッセージが生成される。本明細書で用いるメッセージエンベロープとは、送信されないが、メッセージエンベロープのメッセージをグループ化する参照を構成する特別なインスタンスと見なされる。これは、ディレクトリまたはフォルダがディレクトリ内に位置するすべてのファイルをグループ化するファイルの特別なインスタンスであるファイルシステムと類似している。以下、メッセージエンベロープおよびそのメッセージのセットは、メッセージリストとも呼ばれる。
【００３４】
一般に、メッセージ処理エンジンは、受信されたデータベースコミット指示によって影響を受けるメッセージターゲットを決定し、第１の規格に従って動作する通知されるべき各々の影響を受けるメッセージターゲットのためのメッセージエンベロープを生成する。メッセージエンベロープ内のすべてのメッセージは、このメッセージターゲットに宛てられ、良好に定義された順序でメッセージターゲットに送信されることになる。送信順序を決定および保証するために、本明細書では、2つの異なるレベルの依存関係、すなわち、メッセージエンベロープのレベルにおけるメッセージエンベロープ依存関係、およびメッセージレベルにおけるメッセージレベル依存関係が導入される。メッセージエンベロープ依存関係は、特定のメッセージターゲットのために生成されるすべてのメッセージエンベロープ間の順序を定義する。メッセージ依存関係は、特定のメッセージエンベロープ内のメッセージの順序を定義する。
【００３５】
したがって、メッセージエンベロープおよびメッセージエンベロープ内のメッセージの生成は、6における同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係の計算、および8における各メッセージエンベロープ内のメッセージ間のメッセージ依存関係の計算も伴う。
【００３６】
一般に、データベースコミット指示に対して作成されたメッセージエンベロープは、6において同じメッセージターゲットのためにすでに存在する他のメッセージエンベロープ、すなわち、以前のデータベースコミットメッセージの受信に応じてそのメッセージターゲットのために以前にすでに生成されているメッセージエンベロープに依存するように計算される。したがって、特定のメッセージターゲットのためのメッセージエンベロープは、特定のメッセージターゲットに影響を及ぼすデータベースコミットメッセージの受信順序に基づいて順序付けられる。
【００３７】
一方、メッセージ依存関係は、8において、少なくとも、それぞれのメッセージエンベロープのメッセージの規格と、メッセージの機能とに基づいて計算される。特に、第１の規格のメッセージは、レコードを追加する追加メッセージ、レコードを削除する削除メッセージ、レコードを分割する分割メッセージなど、異なる機能(以下「メッセージ名」とも呼ばれる)に分類され得る。
【００３８】
特定のメッセージエンベロープとメッセージとの間に確立され、特定の時点で有効な関係は、メッセージ依存関係マップとも呼ばれる。メッセージ依存関係マップは、1つまたは複数のデータベーステーブル内にメッセージ処理エンジンによって維持される。10において、メッセージは、メッセージエンベロープ依存関係とメッセージ依存関係とに基づいた順序でそれぞれのメッセージターゲットにメッセージ処理エンジンによって送信される。
【００３９】
様々なタイプのメッセージターゲットに加えて、データベースコミット指示を生成する様々なタイプのデータベースシステムが、分散メッセージングシステム内に存在し得る。1つのタイプのデータベースシステムは、第1の(新しい)規格に従って動作し、第１の規格にすでに準拠しているデータベースコミット指示を(および、後方互換性の理由のため、第２の規格に準拠したデータベースコミット指示も)出力し得る。他のタイプのデータベースシステムは、依然として第2のレガシー規格に従って動作し、したがって、レガシーデータベースコミット指示のみを出力する。
【００４０】
データベースコミットメッセージのソース(第１の規格に従って動作するデータベースシステム、または第2のレガシー規格に従って動作するデータベースシステム)に応じて、および、通知されるべきメッセージターゲットのタイプ(第１の規格に従って動作するメッセージターゲット、または第2のレガシー規格に従って動作するメッセージターゲット)に応じて、メッセージ処理の様々なケースが区別され得る。
【００４１】
図2によって視覚化されている第1のケースは、11において受信されたデータベースコミット指示が、第１の規格に従って動作するデータベースシステムからの複数のデータベースコミット指示のうちの第1のデータベースコミット指示であると仮定する。いくつかの実施形態において、このデータベースコミット指示は、例えば、以下でさらに説明するフラグによって、第１の規格に準拠するデータベースコミット指示としてマークされる。第１の規格に準拠するデータベースコミット指示を受信することに応じて、メッセージ処理エンジンは、通知されるべき第１の規格に従って動作する各メッセージターゲットのためにメッセージエンベロープを生成し、各メッセージエンベロープ内の少なくとも1つのメッセージを生成する。
【００４２】
ここでは、2つの異なるサブケースが区別され得る。省略して第1のメッセージターゲットとも呼ばれる、第１の規格を実装する通知されるべき各メッセージターゲットのために、12において、それぞれの第1のメッセージエンベロープが生成され、その各々は、通常、第１の規格に従って動作するそれぞれの第1のメッセージターゲットに中継されるべき複数の相互依存する第1のメッセージを含む。複数の相互依存する第1のメッセージは、第１の規格に従って指定される(これは一般に、上記ですでに説明したように、後方互換性の理由のために第２の規格に準拠する第2のメッセージに準拠するメッセージも包含する)。省略して第2のメッセージターゲットとも呼ばれる、第2のレガシー規格を実装する通知されるべき各メッセージターゲットのために、13において、第２の規格に従って動作する第2のメッセージターゲットに中継されるべき第2のメッセージ(メッセージターゲットごとに1つ)が生成される。第2のメッセージは、第2のレガシー規格に従って指定される。
【００４３】
メッセージ処理エンジンは、次いで、14において、第1のメッセージエンベロープと、第1のメッセージターゲットについてすでに保留中の他のメッセージエンベロープとの間のメッセージエンベロープ依存関係を計算する。エンベロープ依存関係は、第1のメッセージターゲットに関するメッセージエンベロープの順序を定義する。
【００４４】
メッセージ処理エンジンは、15において、少なくとも第1のメッセージターゲットと第1のメッセージの機能とに基づいて、第1のメッセージエンベロープの第1のメッセージ間のメッセージ依存関係をさらに計算する。メッセージ依存関係は、各メッセージエンベロープ内のメッセージの順序を定義する。
【００４５】
第1のメッセージは、次いで、16において、メッセージエンベロープ依存関係とメッセージ依存関係とに基づくシーケンスで第1のメッセージターゲットに送信される。
【００４６】
第2のレガシー規格を実装するメッセージターゲットのために生成される第2のメッセージに関連して、これらのメッセージは、関連するメッセージに対して他のメッセージが保留されていない場合、直接送信され、または、関連するメッセージターゲットに対する他の保留中メッセージが保留中である場合、メッセージレベル依存関係が計算される。後者の場合、第2のメッセージが、メッセージレベル依存関係コンピュータに従ってシーケンスで送信される。
【００４７】
図3によって視覚化された第2の場合は、17において受信されたデータベースコミット指示が、第2のレガシー規格に従って動作するデータベースシステムからの複数のデータベースコミット指示のうちの第2のデータベースコミット指示であると仮定する。いくつかの実施形態において、このデータベースコミット指示は、第１の規格を示すマーキングを含まず、したがって、メッセージ処理システムは、データベースコミット指示が第2のレガシー規格に準拠する指示であることを認識する。
【００４８】
第２の規格に従って動作するレガシーデータベースシステムからの複数のデータベースコミット指示のうちの第2のデータベースコミット指示を受信することに応じて、メッセージ処理エンジンは、メッセージターゲットに関する少なくとも1つのメッセージエンベロープが過去に生成されており、依然として保留中である限り、18において、通知されるべき各メッセージターゲットのために1つのメッセージを生成し、各メッセージターゲットに関するメッセージをそれぞれのターゲットに関する既存のメッセージエンベロープに潜在的に関連付ける。一般に、第2のデータベースコミットメッセージは、第2のレガシー規格に準拠するので、第2のレガシー規格に準拠するそれぞれのメッセージのみがメッセージ処理エンジンによって生成される。言い換えれば、第2のレガシー規格に準拠するデータベースコミット指示は、メッセージエンベロープの生成も、第１の規格に準拠するメッセージの生成も引き起こさない。
【００４９】
第１の規格に従って動作するメッセージターゲットと、第2のレガシー規格に従って動作するメッセージターゲットの両方に対して、メッセージ処理エンジンは、以下、第3のメッセージと呼ばれる、第２の規格に従ってフォーマットされた1つのメッセージを生成する。19において決定される、保留中のメッセージエンベロープおよび/またはメッセージのない各メッセージターゲットについて、第２の規格に従って生成された第3のメッセージは、20において、メッセージ依存関係の計算なしに、すぐに送信される。
【００５０】
19において決定される、保留中のメッセージエンベロープおよび/または少なくとも1つの保留中のメッセージを有するメッセージターゲットについて、第2のレガシー規格に従って生成されたメッセージは、一般に、保留中のメッセージエンベロープに関連付けられ、または、保留中のメッセージエンベロープがない場合、保留中のメッセージのシーケンス内に含められる。この場合、21において、メッセージ処理エンジンは、少なくとも、第1のメッセージターゲットと、第3のメッセージが第2のレガシー規格に準拠するメッセージであるという事実とに基づいて、第3のメッセージのメッセージ依存関係を計算する。計算されたメッセージ依存関係は、考慮されるメッセージターゲットに関する保留中のメッセージエンベロープの他のメッセージのシーケンス内の第3のメッセージの位置を定義する。
【００５１】
例えば、考慮されるメッセージターゲットが第１の規格に従って動作する場合、すなわち、それが第1のメッセージターゲットである場合、第1のメッセージを有する第1のエンベロープは、すでに保留中である場合がある。この場合、第3のメッセージは、一般に、メッセージエンベロープ内に含まれ、第1のメッセージを第3のメッセージに関連付けるメッセージ依存関係が計算される。22において、第1のメッセージおよび第3のメッセージは、メッセージエンベロープ依存関係とメッセージ依存関係とに基づくシーケンスで第1のメッセージターゲットに送信される。
【００５２】
いくつかの特定の場合、例えば、第3のメッセージが第1のメッセージエンベロープ内のすべての他のメッセージと比較して最も高い優先度を有するとされる場合、第3のメッセージは、直接送信され得、直接送信されるので、メッセージ依存関係は、計算されない。
【００５３】
図4を参照すると、任意選択で、24において、少なくとも、メッセージの規格とメッセージタイプとに依存して、複数の相互依存するメッセージの各々に所与の優先度値が割り当てられる。各メッセージエンベロープについてメッセージ間のメッセージ依存関係は、25において、割り当てられた優先度値に基づいて計算される。優先度値を定義するテーブルの例が、以下でさらに与えられる。
【００５４】
任意選択で、26において、メッセージがメッセージのメッセージエンベロープ内の他のメッセージから独立しており、メッセージのメッセージエンベロープが他のメッセージエンベロープから独立しているという判定に応じて、メッセージが送信される。さらに、27において、任意選択で、送信されたメッセージのメッセージ依存関係と、メッセージのメッセージエンベロープ内のメッセージの順序における次のメッセージのメッセージ依存関係とが更新される。以下でより詳細に説明するように、この更新は、メッセージエンベロープ内の次のメッセージ（もしあれば）を独立させ、したがって、送信される準備ができているようにする。
【００５５】
送信された最後のメッセージが現在のメッセージエンベロープの最後のメッセージである場合、送信された最後のメッセージのメッセージエンベロープのメッセージエンベロープ依存関係は、更新され、メッセージエンベロープの順序における次のメッセージエンベロープのメッセージエンベロープ依存関係も更新される。この更新は、送信された最後のメッセージのメッセージエンベロープが完全に処理され、次のメッセージエンベロープが独立をさせ、その結果、次のメッセージエンベロープの最初のメッセージもまた独立させ、したがって送信される準備ができているようにする。
【００５６】
任意選択で、第１の規格は、IATAの新流通規格(NDC)に準拠している。
【００５７】
いくつかの実施形態では、本明細書で説明する方法論は、例えば、GDS予約同期システムをレガシーTTYメッセージからハイブリッドメッセージのセット、すなわち、TTYメッセージ、XMLメッセージ、および潜在的に他のメッセージまで拡張する。
【００５８】
メッセージ処理の高レベルビューが図5によって示されている。例として、予約レコードBの変更コミット指示34において航空(air)セグメント「キャンセル-再予約」が発生した。変更コミット指示B2およびB3は、GDS予約プロセス32からメッセージ生成および順序付けプロセス42によって受信される。変更コミット指示B2は、予約レコードBに関するフライトセグメントXX123のキャンセルを示し、変更コミット指示B3は、予約レコードBへのフライトセグメントXX123の追加を示す。メッセージ生成および順序付けプロセス42は、別の予約レコードAに関連する変更コミットA0、A1、A2、およびA3などの、GDS予約プロセス32によって保持される他の予約レコードに関する変更コミット34も受信する。
【００５９】
理想的には、変更コミット指示34は、順序付けられた方法でGDS予約プロセス32によって出力される。しかしながら、順序A0、A3、A2、A1においてGDS予約プロセス32によって送信される予約レコードAに関連する変更コミットについて例示的に示されているように、これは、常にそうであるとは限らない。例えば、GDS予約プロセス32は、上記で説明したように、実際には2つの異なるデータベース、すなわち、(例えば、予約レコードBを管理する)第１の規格に従って動作するデータベースシステム、および(例えば、予約レコードAを管理する)第2のレガシー規格に従って動作する別のデータシステムから始まる場合がある。
【００６０】
(他の予約レコードに関連する他の変更コミット34とともに)予約レコードBに関する例示的な「キャンセル-再予約」フローの変更コミット34を受信することに応じて、メッセージ生成および順序付けプロセス42は、予約レコードBに関する例示的な「キャンセル-再予約」フローのこれらの変更コミット指示34が、NDC規格などの最先端の規格(すなわち、第2のレガシー規格とは対照的な第１の規格)に準拠する変更コミットであることを認識する。例えば、予約レコードBに関する例示的な「キャンセル-再予約」フローの変更コミット指示34は、NDC変更コミット指示としてそれらを識別する特別なインジケータを含む。
【００６１】
変更コミット指示34がNDC変更コミットであると認識することに応じて、メッセージ生成および順序付けプロセス42は、通知されるべき各メッセージターゲットのためのメッセージエンベロープ36を作成し、ここで、メッセージターゲット49aは、NDCなどの第１の規格に従って動作し、1つまたは複数のメッセージ38は、メッセージエンベロープ36に属する。メッセージエンベロープは、認識されたNDC変更コミット34に関連し、メッセージターゲット49aに送信されるべき1つまたは複数のメッセージをグループ化する。さらに、メッセージ生成および順序付けプロセス42は、2つのレベル、すなわち、メッセージエンベロープレベルならびにメッセージレベルにおいて依存関係を確立する。両方のレベルにおける依存関係は、以下、依存関係マップとも呼ばれる。
【００６２】
メッセージエンベロープ36を作成する目的は、このメッセージエンベロープのメッセージが送信され得るかどうか、およびいつ送信され得るか、すなわち、メッセージエンベロープ36のメッセージが、他の変更コミット34のために生成された他のメッセージ38との依存関係がないかどうかを管理および判定することである。その意味において、機能的な観点から、メッセージエンベロープ36は、そのメッセージエンベロープ36に属するすべてのメッセージ38に関する基準ノードを構成する(したがって、メッセージエンベロープも、以下「R」と略記する)。
【００６３】
新たに作成されるメッセージエンベロープ36は、該当する予約レコードのための1つまたは複数の他のメッセージエンベロープ36が該当するメッセージターゲット49aに対してすでに存在する場合、既存のメッセージエンベロープレベル依存関係マップ内に含められる。図3の例では、フライトセグメントXX123のキャンセルを示す変更コミット指示B2がメッセージ生成および順序付けプロセス42によって受信される。メッセージ生成および順序付けプロセス42は、メッセージターゲット49aが通知されるべきであると判定し、メッセージエンベロープR2と、メッセージエンベロープR2に属する3つのメッセージ2.1XML、2.2XML、および2.3TTYを作成する。
【００６４】
次に、変更コミット指示B3が受信される。メッセージ生成および順序付けプロセス42は、メッセージターゲット49aが通知されるべきであると再び判定し、メッセージ3.1XML、3.2XML、および3.3XMLのセットを有するさらなるメッセージエンベロープR3を作成する。点線矢印37によって示すように、メッセージエンベロープR3がメッセージエンベロープR2に依存するという点で、メッセージエンベロープR2とR3との間の依存関係が確立される。
【００６５】
加えて、メッセージエンベロープ36内で、メッセージ38が同様に並べ替えられ、すなわち、メッセージレベル依存関係マップが確立される。図5の例では、矢印39によって示すように、メッセージエンベロープR2内のメッセージ順序は、2.1XML、2.2XML、および2.3TTYであり、メッセージエンベロープR3内のメッセージ順序は、3.1XML、3.2XML、および3.3XMLである。いくつかの実施形態において、メッセージレベル依存関係マップは、より高い優先度値を有するメッセージがより低い優先度値を有するメッセージよりもメッセージ依存関係マップにおいて上流に位置するように、事前定義されたメッセージ優先度値に基づいて確立される。
【００６６】
次に、メッセージ生成および順序付けプロセス42は、やはり予約レコードBに関連する変更コミット指示B4を受信する。変更コミット指示B4は、レガシー予約システムから発生し、メッセージ生成および順序付けプロセス42は、第１の規格に従って動作するメッセージターゲット49aがやはり通知されるべきであると判定する。したがって、メッセージ生成および順序付けプロセス42は、TTYメッセージであるメッセージ4TTYを生成し、それを、EP2254046B1によって説明されているTTYフレームワークメカニズムに従って既存の依存関係マップにソートする。図5の例では、メッセージ4TTYがメッセージ2.3TTYに依存するように、メッセージ4TTYに対してメッセージレベル依存関係が計算される(提示の理由のため、ここでは、例えば、図5に示されていない予約レコードBに関連する他の以前のTTYメッセージがメッセージターゲット49aに対して依然として保留中であるため、メッセージ2.3TTYがまだ送信され得なかったと想定される)。
【００６７】
メッセージエンベロープレベルおよびメッセージレベルにおける依存関係マップは、メッセージターゲット49にメッセージを送信するシーケンスを制御する。一般に、特定のメッセージエンベロープ36が他のメッセージエンベロープ36に依存しない場合、特定のメッセージエンベロープ36のメッセージは、メッセージターゲット49にのみ送信される。したがって、図5の例では、メッセージエンベロープR3のメッセージ3.1XML、3.2XML、および3.3XMLは、メッセージエンベロープR2が完全に処理された後、すなわち、メッセージエンベロープR2のすべてのメッセージがメッセージターゲット49aに正常に送信された後にのみ送信される。メッセージエンベロープ内で、メッセージの送信順序は、メッセージレベル依存関係によって決定される。図5の例では、メッセージエンベロープR2内のメッセージ送信順序は、最初にメッセージ2.1XML、次いでメッセージ2.2XML、最後にメッセージ2.3TTYである。メッセージエンベロープR3について、メッセージ送信順序は、最初にメッセージ3.1XML、次いでメッセージ3.2XML、最後に3.3XMLである。メッセージ4TTYは、メッセージ2.3TTYが正常に送信された後に送信され得、すなわち、メッセージ4TTYは、メッセージ3.1XMLと並行して送信される。
【００６８】
レガシーデータベースシステムから受信された変更コミット指示34は、一般に、第2のレガシー規格のみに準拠するメッセージに変換され、図5の例では、TTYメッセージに変換される。該当する所与のメッセージターゲットに対して保留中の以前のメッセージがなくても、これらのメッセージは、メッセージエンベロープレベル依存関係とメッセージレベル依存関係とを計算することなく、すぐに送信され得る。図5の例では、予約レコードAは、レガシーデータベースシステムによって維持され、したがって、変更コミット指示A0、A1、A2、およびA3は、TTYメッセージのみに変換される。例えば、変更コミット指示A0を受信することに応じて、メッセージ生成および順序付けプロセス42は、メッセージターゲット49b(第2のレガシー規格に従って動作しているメッセージターゲット)が通知されるべきであると判定し、メッセージターゲット49bに対して保留中の他のメッセージがないので次いですぐに送信されるメッセージ0TTYを生成する。同様に、変更コミット指示A1は、メッセージ0TTYがすでにメッセージターゲット49bに正常に送信されていると仮定して、メッセージ1TTYの生成をトリガし、メッセージ1TTYは再び、メッセージレベル依存関係を計算することなくすぐに送信される。
【００６９】
一般に、メッセージが別のメッセージの正常な配信に依存しないと判定することに応じて、メッセージは、送信されるのに適格であり、メッセージ送信キューに渡されると決定され、ここで、この依存関係は、メッセージエンベロープレベルおよびメッセージレベルにおける依存関係マップによって定義される。例えば、メッセージターゲット49からの受信確認応答を受信することによって、特定のメッセージの正常な配信が認識された場合、この特定のメッセージの依存関係状態は、メッセージ処理システムによって更新される。この依存関係状態の更新に応じて、特定のメッセージに依存する他のメッセージの依存関係状態は、次いで「依存」から「独立」に更新され、これらの他のメッセージを送信することが次に開始されるという効果がある。特定のメッセージエンベロープ36のメッセージレベル依存関係マップ内の最後のメッセージがメッセージターゲット49に正常に配信された、すなわち、特定のメッセージエンベロープ36のすべてのメッセージが送信されたと判定することに応じて、特定のメッセージエンベロープ36は、完全に処理されたと考えられ、特定のメッセージエンベロープ36に依存する次のメッセージエンベロープのメッセージエンベロープレベルにおける依存関係状態は、「依存」から「独立」に更新される。これは、次のメッセージエンベロープのメッセージレベル依存関係マップの最初のメッセージを、送信する準備ができているようにし、次のメッセージエンベロープのこの最初のメッセージを送信することが開始される。このプロセス全体は、メッセージエンベロープのすべてのメッセージがそれらのメッセージターゲットに送信されるまで、同じように継続する。
【００７０】
上記で使用したTTYおよびXMLは、異なるメッセージ規格に準拠する様々なタイプのメッセージの例である。TTYは、1つまたは複数のレガシーメッセージサブタイプを用いるレガシー規格の例である。XMLは、例えば、様々なデータシステム操作機能に関する複数のメッセージサブタイプを用いる新世代規格の例である。通常、様々なタイプのメッセージターゲット、すなわち、様々なメッセージ規格を実装するメッセージターゲットに対して、様々なメッセージタイプが生成される。図5の例は、2つの特定のタイプのメッセージターゲット、すなわち、レガシー規格のみを実装する(すなわち、新世代規格ではない)TTYメッセージターゲット49bと、NDC規格などの新世代規格を実装するXMLメッセージターゲット49a(上記で説明したように、XMLメッセージターゲット49aは、潜在的に後方互換性があり、したがって、レガシーメッセージを同様に処理することができる場合がある)とを示す。
【００７１】
本メッセージ処理システムは、2つのメッセージ規格のメッセージを処理することに限定されず、拡張可能であり、そのような新しい規格を実装するメッセージターゲット49cに対する、1つまたは複数のさらなる規格およびタイプに準拠するメッセージを処理するのに一般的に適している。メッセージエンベロープレベルおよびメッセージレベルにおいて依存関係を確立する概念は、例えば、新しい規格/タイプのメッセージと既存の規格/タイプのメッセージとの関係を定義する優先度値を新しい規格/タイプのメッセージに割り当てることによって、任意の他の新しいメッセージ規格およびタイプを処理するために使用され得る。
【００７２】
ここで、説明のより具体的な部分に目を向け、上記で説明した一般的なメッセージ処理メカニズムの特定の実装形態例について、図6〜図14を参照して次に説明する。
【００７３】
メッセージ処理エンジン50を実装するための例示的なプロセスアーキテクチャが図6によって示されている。システムアーキテクチャは、専用および/または共有ハードウェアリソースを使用してソフトウェアによって実装される以下の構成要素を含む。
-  レガシーGDS変更コミット指示を生成するレガシー横断的販売網(GDS)。
-  NDC PNR変更コミット指示を生成し、これらの変更コミット指示がNDC変更コミット指示(したがって、第１の規格に準拠する)であり、メッセージターゲットが依然としてTTYメッセージターゲットなどの第2のレガシー規格に従って動作することを通知される場合を除き、NDC規格に従って処理されるべきであることを示すフラグでこれらの変更コミットにマークするNDC予約エンジン40。
-  TTYメッセージ、XMLメッセージ、または他のタイプのメッセージなどのあらゆる種類の予約メッセージを生成するNDCメッセージ生成および順序付けプロセス42。NDCメッセージ生成および順序付けプロセス42は、メッセージ依存関係マップを計算する。
-  NDCメッセージ生成および順序付けプロセス42の一部を形成するTTYメッセージ順序付けエンジン43。TTYメッセージ順序付けエンジン43は、例えば、EP2254046B1によって説明されているように、TTYメッセージの送信順序を決定するTTYメッセージの依存関係特性を計算する。
-  メッセージ優先度値を記憶するメッセージ優先度テーブル44。メッセージ優先度値は、分析結果に基づいて事前に計算され、要求されたときまたは適切なときはいつでも更新され得る。
-  少なくとも2つのレベルにおける依存関係マップ、すなわち、メッセージエンベロープについてのメッセージエンベロープレベルにおける依存関係マップと、メッセージについてのメッセージレベルにおける依存関係チェーンとを記憶する依存関係マップおよびメッセージテーブル45。
-  メッセージ送信を制御し、エンベロープレベルにおける依存関係マップとメッセージレベルにおける依存関係チェーンとを更新する主プロセスであるメッセージ送信状態機械46。メッセージ送信状態機械46は、メッセージキュー46aと、2つのサブプロセス、すなわち、
-  一貫してメッセージをデキューし、ターゲット49に送信するメッセージ送信器サブプロセス47、ならびに、
-  メッセージ応答のリスナーであるメッセージ応答受信器サブプロセス48とを含む。ターゲット応答受信器サブプロセス48は、送信器デキュー動作をコミットし、メッセージターゲット49から受信された受信確認応答に応答して依存関係マップおよびメッセージテーブル45内の変更を追跡するために、メッセージエンベロープレベルにおける依存関係マップとメッセージレベルにおける依存関係チェーンとを更新する。
【００７４】
これらのシステムアーキテクチャ構成要素は、図6におけるブロックを接続する矢印によって示されるように、以下のように互いに対話する。
【００７５】
NDC予約エンジン40は、例えば、新しい旅行予約に応じて新しいデータベースレコードを作成するか、または、既存の旅行予約の変更に応じて既存のデータレコードを更新する。新しいデータベースレコードの作成および既存のデータベースレコードの更新は、それぞれ、NDC予約エンジン40がNDCメッセージ生成および順序付けプロセス42に公開する(矢印N01)変更コミット指示を生成する。NDC予約エンジン40から発生するすべての公開は、NDC予約変更コミットとして、すなわち、NDC予約エンジン40から発生するデータベース変更コミット指示としてマークされる(例えば、フラグが立てられる)。
【００７６】
レガシーGDS予約エンジン41は、例えば、新しい旅行予約に応じて、新しいデータベースレコードを作成するか、または、既存の旅行予約の変更に応じて既存のデータレコードを更新し得る。新しいデータベースレコードの作成および既存のデータベースレコードの更新は、それぞれ、レガシーGDS予約エンジン41がNDCメッセージ生成および順序付けプロセス42に公開する(矢印N02)変更コミット指示を生成する。しかしながら、レガシーGDS予約エンジン41によって公開された変更コミット指示は、マークもされず、フラグも立てられない。
【００７７】
レガシーGDS予約エンジン41からの変更コミット指示を受信することに応じて、NDCメッセージ生成および順序付けプロセス42は、通知されるべきメッセージターゲットのためのTTYメッセージのみを生成する。
【００７８】
NDC予約エンジン40からのデータベース変更コミット指示を受信することに応じて、NDCメッセージ生成および順序付けプロセス42は、通知されるべきNDCメッセージターゲットに関するメッセージエンベロープと、それぞれのメッセージエンベロープに関連付けられたメッセージとを生成する。この目的のため、NDCメッセージ生成および順序付けプロセス42は、メッセージ優先度テーブル44からメッセージ優先度値を取得し(取得要求を表す矢印N05および取得応答を表す矢印N06)、また、依存関係マップおよびメッセージテーブル45から現在のメッセージエンベロープおよび関連付けられるメッセージに関する情報を取得し、新たに生成されたメッセージエンベロープおよび関連付けられるメッセージを依存関係マップおよびメッセージテーブル45に挿入する(取得および挿入要求を表す矢印N03ならびに取得および挿入応答を表す矢印N04)。NDCメッセージ生成および順序付けプロセス42とメッセージ優先度テーブル44および依存関係マップおよびメッセージテーブル45の対話について、特定の例に基づいて以下でさらに説明する。
【００７９】
さらに、NDCメッセージ生成および順序付けプロセス42は、特定のメッセージがいかなる他のメッセージにも依存しないことを判定し得、これは、このメッセージがメッセージターゲット49に送信される準備ができていることを意味する。この状況では、NDCメッセージ生成および順序付けプロセス42は、動作N03(取得要求)およびN04(取得応答)を介して依存関係マップおよびメッセージテーブル45から特定のメッセージを取得し、特定のメッセージを表すメッセージキュー項目を生成し、動作N07を介して、メッセージキュー項目をメッセージ送信状態機械46のメッセージキュー46aに入れる。
【００８０】
続いて、メッセージキュー項目は、動作N08によってメッセージ送信状態機械46によってデキューされ、メッセージ送信器サブプロセス47によって正しいメッセージターゲット49に送信される(矢印N09)。メッセージ送信状態機械46のメッセージ応答受信器サブプロセス48によって、メッセージターゲット49からメッセージ応答(受信の確認など)が受信され得る(矢印N10)。
【００８１】
メッセージターゲット49からの応答が受信された後、すなわち、特定のメッセージがメッセージターゲット49に正常に配信された後、メッセージ送信状態機械46は、依存関係マップおよびメッセージテーブル45内の特定のメッセージのメッセージ依存関係状態を更新する(矢印N11)。この更新は、次のメッセージをいかなる他のメッセージからも独立させ得、すなわち、この次のメッセージまたはこれらの次のメッセージの送信が次に開始され得る。この目的のために、事前に特定のメッセージの正常な配信によって独立したメッセージは、メッセージ送信状態機械46によって取得され(矢印N12)、メッセージキュー46aにキューされる。動作N08、N09、およびN10は、次いで、上記で説明したのと同じように実行される。
【００８２】
メッセージ優先度テーブル44の例は、以下の通りである。
【００８３】
【表１】
2020524329.tif 000003
【００８４】
「メッセージターゲット」というカラムは、メッセージの宛先を定義し、すなわち、すべての既知のメッセージターゲット49をリストする。「メッセージタイプ」というカラムは、メッセージ規格、すなわち、メッセージタイプTTYなどのレガシー規格、または、XMLメッセージを使用するNDCなどの現在の規格のいずれかに準拠するメッセージ規格を示す。メッセージ規格/タイプに応じて、「メッセージ名」というカラムにおいて示される様々なメッセージサブタイプのメッセージが存在し得る。上記の例で示したように、レガシー規格は、異なるメッセージタイプを規定しておらず、すべてのTTYメッセージがメッセージ名TTYと呼ばれる場合がある。しかしながら、XMLタイプのメッセージを使用する新しい規格は、削除メッセージ(「DEL」)および追加メッセージ(「ADD」)などの異なるメッセージを定義し得る。さらに、第3の規格(「NEW」)は、汎用メッセージ(「GEN」)を定義し得る。
【００８５】
「優先度値」というカラムは、特定のメッセージターゲットに宛てられるべき所与のメッセージタイプおよびメッセージ名のすべてのメッセージに関するメッセージ優先度値を定義する。したがって、優先度値は、メッセージターゲットのレベル、規格のレベル、およびメッセージサブタイプ/名のレベルにおいてメッセージ間を区別することを可能にする。上記の例では、「優先度値」カラムの値は、以下の意味を有し、すなわち、0の優先度値は、メッセージがまったく送信されるべきではないことを意味する。これは、例えば、特定の機能を有するメッセージが、第１の規格によってすでに指定されているが、実際に展開配置されているメッセージターゲットによってまだサポートされていない場合に妥当である。上記のテーブル44の例では、これは、例えば、メッセージ処理エンジン50によって内部ですでに生成されているが、メッセージターゲットにおける実装の欠如のために(まだ)送信されていないSPLITメッセージの場合である。優先度値が設定されていない場合(「NULL」)、メッセージエンベロープのレベルにおける依存関係が存在しないとき、メッセージは、送信され得ない。エンベロープのメッセージは、それらの優先度値に従って、より高い値の優先度値からより低い値への優先度値に相互依存している。
【００８６】
メッセージ優先度テーブル44は、一般に静的であるが、いつでも設定可能である。新しいターゲットが追加され得、様々なターゲットについて新しいメッセージタイプが追加され得、また、所与のメッセージタイプについて新しいメッセージ名が追加され得る。さらに、例えば、特定のターゲットが除去されるべきとき、既存の行が更新または削除され得る。優先度値は、同様に設定可能であり得る。
【００８７】
いくつかの実施形態では、メッセージ優先度テーブル44は、データベースシステムによってホストされないが、例えば、バッチサーバのメモリキャッシュファイルの形で記憶される。キャッシュファイルは、必要に応じて、または適切であるように任意のサーバと同期され得る。例えば、メッセージ優先度テーブル44への変更は、バッチサーバのコンテンツ管理システムによって行われ、次いで、すべての展開配置されたサーバにブロードキャストされ得る。
【００８８】
一方、依存関係マップおよびメッセージテーブル45は、任意の所与の時点におけるメッセージ処理システムの現在の状態を表すので、依存関係マップおよびメッセージテーブル45は、非常に動的である。したがって、いくつかの実施形態において、依存関係マップおよびメッセージテーブル45は、データベースシステムによってホストされる。本明細書で説明するメッセージ処理システムは、依存関係マップおよびメッセージテーブル45をリアルタイムで読み取り、挿入し、更新するために複数のライブセションを実行し得る。
【００８９】
依存関係マップおよびメッセージテーブル45のカラムの例示的な定義は、以下の通りである。
【００９０】
【表２】
2020524329.tif 000004
【００９１】
2つの依存関係状態RD_STATおよびD_STATは、メッセージが送信されていた場合、値「送信」(S)を取り得、または、ターゲットへ送信されるべきメッセージが存在しない(例えば、テーブルエントリがメッセージではなくメッセージエンベロープを表す)場合、「無効(void)」(V)を取り得、または、メッセージがメッセージレベルにおいて別のメッセージに依存している場合、もしくはメッセージのメッセージエンベロープが別のメッセージエンベロープに依存している場合、「依存」(D)を取り得、依存関係が存在しない(=送信される準備ができている)場合、「N」を取り得、または、依存関係がまだ識別されていない場合、例えば、対応するメッセージが現在なくなっている場合、すなわち、NDCメッセージ生成および順序付けプロセス42において未解決である場合、「未知」(U)を取り得る。RD_STATセルが満たされ、D_STATセルが空のままである場合、テーブルエントリは、メッセージエンベロープを表す。例えば、
【００９２】
【数１】
2020524329.tif 000005
【００９３】
のメッセージリストに関するメッセージエンベロープは、
【００９４】
【数２】
2020524329.tif 000006
【００９５】
として示される。
【００９６】
いくつかの実施形態において、メッセージ処理システム50は、図7に示すように、それぞれの潜在的に複数のプロセスインスタンス54を有するサーバ52のアレイとして展開配置される。負荷バランス機能は、サーバ52のプロセスインスタンス54全体にわたって、および/またはサーバアレイのサーバ52にわたってメッセージ処理負荷を分散させ得る。したがって、メッセージ処理システム50は、潜在的なトラフィックの増加に対処するために拡張可能である。
【００９７】
メッセージ処理システム50は、依存関係マップおよびメッセージテーブル45を維持する少なくとも1つのデータベースサーバ56を特徴とする(冗長性および/または性能の理由のために追加のデータベースが存在する場合がある)。すべてのプロセスインスタンス54は、データベースサーバ56に接続される。グローバルに見ると、メッセージ処理システム50は、図6に示すすべての構成要素と、旅行代理店クライアントなどのさらなる構成要素とを備えるより大きな分散システムの情報処理チェーン内の1つのステージを構成する。一方、各々の個々のプロセスインスタンス54が一度に1つのレコードエンベロープを処理することができるので、メッセージ処理システム50は、並列処理を実行する。
【００９８】
上記で説明したように、NDCメッセージ生成および順序付けプロセス42は、メッセージ処理システム50のメインプロセスである。NDCメッセージ生成および順序付けプロセス42は、レガシーTTYメッセージ順序付けエンジン43を含み、メッセージ優先度テーブル44ならびに依存関係マップおよびメッセージテーブル45と対話する。図6によって示されているオブションN01〜N07は、次に説明するように、図8の例示的なプロセスフローチャートによって実施され得る。
【００９９】
602において、NDC予約エンジン40またはレガシーGDS予約エンジン41からデータベース変更コミット指示が受信されるたびに、NDCメッセージ生成および順序付けプロセス42は、最初に604において、データベース変更コミットによって影響を受け、したがって、NDC予約エンジン40またはレガシーGDS予約エンジン41において発生した予約レコード変更についてターゲットに通知する1つまたは複数のメッセージを受信することになるメッセージターゲット49のリストを構築する。
【０１００】
一般に、異なるターゲット49のためのメッセージは、依存関係になく、すなわち、第1のターゲットへの第1のメッセージは、第2のターゲットへの第2のメッセージの状態に関係なく送信され得る。したがって、すでに上記で説明したように、メッセージエンベロープレベルの依存関係は、同じメッセージターゲットのためのメッセージエンベロープ間でのみ確立され、すなわち、メッセージエンベロープレベルの依存関係は、メッセージエンベロープのメッセージ間、したがって、1つの同じメッセージターゲットのためのメッセージ間でのみ確立される。その結果、図8によって示されているように、NDCメッセージ生成および順序付けプロセス42は、リスト内のメッセージターゲット49を次々に処理する。所与のデータベース変更コミット指示について、図8によって示されている以下のアクティビティによって通知されるべき各メッセージターゲットのために、1つまたは複数のメッセージを有する新しいメッセージエンベロープ(図8の右側)、またはレガシーメッセージ(図8の左側)のいずれかを生成することによって、メッセージ依存関係マップが構築または拡張され得る。
【０１０１】
606において、NDCメッセージ生成および順序付けプロセス42は、604において確立されたメッセージターゲットリストの終わりに到着したかどうかをチェックする。そうである場合、受信されたデータベース変更コミット指示は、完全に処理されているので、図8のプロセスは、終了する。そうでない場合、プロセスは、メッセージターゲットリスト上の次のメッセージターゲット49に進み、608においてこの次のターゲットを読み取り、次のターゲットが第１の規格(すなわち、この例ではNDC)または第2のレガシー規格(すなわち、この例ではTTYメッセージのみを処理する)のどちらに従って動作するかを判定する。プロセスは、次いで610において、受信されたデータベース変更コミット指示がNDCコミットとしてマークされているかどうか、すなわち、NDC予約エンジン40またはレガシーGDS予約エンジン41のどちらのコミット指示であるかをチェックする。
【０１０２】
ボックス608および610の2つの決定は、現在の受信器が図8の左側または右側のどちらを介して処理されるかを決定する。データベース変更コミット指示がNDC予約エンジン40から始まり、したがって、第１の規格に即し、現在のメッセージターゲットが第１の規格に従って動作すると判定することに応じて、ボックス610の「yes分岐」が選択される。他のすべての場合、すなわち、610においてデータベース変更コミット指示がレガシーGDS予約エンジン41から始まると判定すること、および/または608において現在のメッセージターゲットが第2のレガシー規格に従って動作すると判定することに応じて、ボックス610の「no分岐」が選択される。図8によって示されているプロセス全体の両方の分岐は、依存関係マップとメッセージテーブル45とを使用する。考慮されているメッセージターゲットに関する他の以前の保留中のメッセージが保留中ではないのでTTYメッセージが直接送信されない限り、ボックス610の左側の「no分岐」は、メッセージレベルの依存関係ならびにメッセージ自体を依存関係マップおよびメッセージテーブル45内に記憶する。ボックス610の右側の「yes分岐」は、メッセージエンベロープレベルおよびメッセージレベルの依存関係、ならびにメッセージ自体を依存関係マップおよびメッセージテーブル45内に記憶する。
【０１０３】
レガシー/非NDCメッセージターゲットおよび/またはレガシー変更コミット指示について、NDCメッセージ生成および順序付けプロセス42、より具体的にはTTY順序付けエンジン43は、アクティビティ612〜624によってTTYメッセージを生成する。TTYメッセージは、612においてフォーマットされ、614において初期化したTTY依存関係項目である。ここで、TTYメッセージに関するメッセージ優先度値がメッセージ優先度テーブル44から取得される。616が、現在のTTYメッセージが606においてリストから選択されたターゲットに関する第1のメッセージであると判定した場合、すなわち、このターゲットについて保留中の以前のTTYメッセージが存在しない場合、TTYメッセージは、メッセージ送信状態機械46に渡され、キュー46aに直接入れられる。依存関係マップおよびメッセージテーブル45は、次いで、620においてコミットされ、プロセス全体は、626においてターゲットリスト上の次のターゲットに移動する。606において検証されるように、ターゲットリストの終わりに到達した場合、プロセスは、終了する。
【０１０４】
616において、1つまたは複数の他のXMLおよび/またはTTYメッセージが606において以前に選択された現在のメッセージターゲットに対してすでに保留中であると判定することに応じて、NDCメッセージ生成および順序付けプロセス42は、622においてTTYメッセージのメッセージレベル依存関係状態を計算し、すなわち、パラメータD_STATがTTYメッセージに対して設定される。D_STATが「N」であると計算された場合、すなわち、TTYメッセージについて依存関係が存在しない場合、TTYメッセージは、メッセージターゲット49に直接送信され得る。したがって、上記で説明したのと同様に、TTYメッセージは、メッセージ送信状態機械46に渡され、618においてキュー46aに直接入れられ、プロセスは、上記で説明したように進行する。動作624が「N」以外のメッセージの任意の他の依存関係状態を判定した場合、依存関係マップおよびメッセージテーブル45は、次いで、620においてコミットされ、プロセス全体は、626においてターゲットリスト上の次のターゲットに移動する。
【０１０５】
TTYレガシーメッセージを処理することのさらなる詳細について、参照により本明細書に組み込まれるEP2254046B1において、特に、EP2254046B1の図5、図6、および図7と、段落[0030]〜[0034]における付随する説明とにおいて説明されている。
【０１０６】
608において決定されるように、NDC規格を実装するメッセージターゲット49について、610において決定されるように、現在処理されている変更コミット指示がNDCフラグを立てられているならば、NDCメッセージ生成および順序付けプロセス42は、図8のアクティビティ612〜624によって1つまたは複数のNDCメッセージを生成する。
【０１０７】
628において、第１の規格(ここでは、XMLベースのNDC)に従っておよび/または第２の規格(ここでは、TTYベースのレガシーメッセージ規格)に従って、1つまたは複数のメッセージが生成される。動作630および632は、動作614および616と機能的に類似しているが、614および616とは異なり、メッセージエンベロープレベルにおける依存関係チェーンに関係する。630において、1つまたは複数のNDCメッセージのためのメッセージエンベロープが作成され、メッセージエンベロープの依存関係状態RD_STATが初期化される。632におけるチェックは、作成されたメッセージエンベロープが、依存関係マップおよびメッセージテーブル45内に記憶されたメッセージエンベロープ依存関係マップ内の現在のループにおいて考慮されている現在のターゲット49についての第1のメッセージエンベロープであるかどうかを判定する。632において、現在のターゲットに関する以前のメッセージエンベロープが存在しないと判定することに応じて、新たに作成されたメッセージエンベロープは依存関係を持たず、パラメータRD_STATは、次いで、634において、それに応じてNに設定される。一方、632において、現在のターゲット49に関する1つまたは複数のメッセージエンベロープが依存関係マップおよびメッセージテーブル45内にすでに存在すると判定することに応じて、パラメータRD_STATは、次いで、636において、それに応じてDに設定される。RD_STATが634または636において計算された後、プロセス638は、依存関係マップおよびメッセージテーブル45内に存在するメッセージエンベロープを記憶するために呼び出される。
【０１０８】
638における依存関係マップおよびメッセージテーブル45における正常なコミットの後、プロセス640は、
【０１０９】
【数３】
2020524329.tif 000007
【０１１０】
のメッセージ依存関係チェーン、すなわち、現在のループのターゲット49に向けられたメッセージエンベロープ内のメッセージの依存関係を構築するために呼び出される。動作640は、メッセージ優先度テーブル44内の事前定義されたメッセージ優先度値を利用する。
【０１１１】
動作640の詳細なフローチャート図が図9において示されている。ここで図9を参照すると、図9の702において示されているように図8の動作640の入力は、
i)メッセージエンベロープ
【０１１２】
【数４】
2020524329.tif 000008
【０１１３】
、
ii)メッセージリスト
【０１１４】
【数５】
2020524329.tif 000009
【０１１５】
、ならびに
iii)メッセージリスト内のメッセージのメッセージ名、タイプ、およびターゲット、である。
【０１１６】
出力は、入力に対して構築された依存関係項目のリストである。第1のプロセス704および706は、メッセージ優先度テーブル44を読み取り、メッセージリスト内のメッセージ
【０１１７】
【数６】
2020524329.tif 000010
【０１１８】
の優先度値を見出すことを目的とする。入力メッセージリストは、次いで、より高い優先度値からより低い優先度値にソートされる。ソートされたメッセージリストは、
【０１１９】
【数７】
2020524329.tif 000011
【０１２０】
として示される。
【０１２１】
メッセージが順番にソートされ、次いで、チェック708を介してメッセージリスト内の各メッセージをループすると、チェック710は、最初に、現在考慮されているメッセージがメッセージ優先度テーブル44内に定義された有効な優先度値を有しているかどうかを判定する。現在考慮されているメッセージが710における有効な優先度値を有していると判定することに応じて、さらなるチェック720は、メッセージがメッセージリスト内の第1のメッセージ
【０１２２】
【数８】
2020524329.tif 000012
【０１２３】
であるかどうかを判定するために呼び出される。イエスである場合、722において、メッセージ
【０１２４】
【数９】
2020524329.tif 000013
【０１２５】
のD_IDが
【０１２６】
【数１０】
2020524329.tif 000014
【０１２７】
のIDに割り当てられる。次いで、
【０１２８】
【数１１】
2020524329.tif 000015
【０１２９】
のRD_STAT値がNまたはVのどちらであるか、すなわち、メッセージエンベロープが他のメッセージエンベロープから独立しているかどうかがさらにチェックされる(724)。これが真である場合、現在のメッセージは、726において独立として設定され、すなわち、
【０１３０】
【数１２】
2020524329.tif 000016
【０１３１】
についてのRD_STATに設定される。そうでない場合、メッセージは、728において依存であるように、すなわち、
【０１３２】
【数１３】
2020524329.tif 000017
【０１３３】
についてのRD_STATに設定される。図9のプロセスは、次いで、738においてメッセージリスト内の次のメッセージに移動する。
【０１３４】
720において判定されるように、現在のループ内で処理されるメッセージがもはや最初のメッセージではない場合、730において、メッセージ
【０１３５】
【数１４】
2020524329.tif 000018
【０１３６】
のD_IDは、メッセージ
【０１３７】
【数１５】
2020524329.tif 000019
【０１３８】
のIDに割り当てられる。次いで、現在のループのメッセージの優先度値が0に等しいかどうかを判定するために、さらなるチェック732が実行される。上記のように、0の優先度値は、メッセージがまったく送信されるべきではないことを意味する。したがって、優先度値=0が認識された場合、
【０１３９】
【数１６】
2020524329.tif 000020
【０１４０】
のD_STATがVに設定される。そうでない場合、それぞれ、動作734および736において、
【０１４１】
【数１７】
2020524329.tif 000021
【０１４２】
のD_STATがDに設定される。図9のプロセスは、次いで、738において、メッセージリスト内の次のメッセージに移動する。
【０１４３】
現在のメッセージの優先度値が720において定義されていないと決定された場合、これは、メッセージがメッセージエンベロープ
【０１４４】
【数１８】
2020524329.tif 000022
【０１４５】
のみに依存することを意味する。したがって、D_IDは、712(動作722と同一である)において常に
【０１４６】
【数１９】
2020524329.tif 000023
【０１４７】
のIDに設定され、メッセージのD_STATは、メッセージエンベロープのD_STATが714においてNまたはVのどちらであると判定されたかに応じて、7126においてD、または718においてVに設定される。図9のプロセスは、次いで、738においてメッセージリスト内の次のメッセージに移動する。
【０１４８】
ここで再び図8を参照すると、動作640が終了した後、メッセージエンベロープのメッセージが送信するためにメッセージキュー46aに入れられ得るかどうかを判定するために、メッセージエンベロープ依存関係RD_STATに対するチェック642が呼び出される。RD_STAT=Nである場合、動作644は、メッセージエンベロープの最初のメッセージ、すなわち、
【０１４９】
【数２０】
2020524329.tif 000024
【０１５０】
を、最初に送信するためにキュー46aに入れるように実行される。次いで、そのD_STATがNに等しいメッセージエンベロープの他のメッセージ
【０１５１】
【数２１】
2020524329.tif 000025
【０１５２】
も、644においてキュー46aに入れられる。
【０１５３】
642においてメッセージエンベロープのRD_STATがNではないと判定された場合、TTYメッセージが現在のループのメッセージターゲット49に関するメッセージ依存関係マップ内の
【０１５４】
【数２２】
2020524329.tif 000026
【０１５５】
であるかどうかを判定するために、さらなるチェック646が実行される。これが肯定的である場合、メッセージ依存関係マップは、648において更新され得る。より具体的には、
【０１５６】
【数２３】
2020524329.tif 000027
【０１５７】
は、648において、
【０１５８】
【数２４】
2020524329.tif 000028
【０１５９】
のD_IDを、P(i-1)のTTYメッセージに、または、TTYが存在しない場合、メッセージエンベロープ
【０１６０】
【数２５】
2020524329.tif 000029
【０１６１】
にリンクするために更新される。
【０１６２】
この段階において、動作644、646、および648がそれぞれ終了した後、メッセージリスト
【０１６３】
【数２６】
2020524329.tif 000030
【０１６４】
の計算は、完了し、(P(i),j)についての依存関係チェーンが定義される。加えて、D_STAT=Nのすべてのメッセージは、これらのメッセージをメッセージターゲット49に送信するためのメッセージキュー46aにすべて入れられている。結果は、次いで、コミット動作620を介してデータベースに記憶される。図8のプロセスは、次いで、626においてターゲットリスト内の次のメッセージターゲットに移動する。
【０１６５】
NDCメッセージ生成および順序付けプロセス42について、例えば、以下に示す例示的なテーブルIおよびテーブルIIにおけるメッセージリストの例示的な更新履歴を参照してさらに説明することができ、これらの表の両方は、特定の時点における依存関係マップおよびメッセージテーブル45の例である。
【０１６６】
この更新履歴の例では、2つの予約レコードAAAAAAおよびBBBBBBに関するコミット指示が、NDCメッセージ生成および順序付けプロセス42によって受信される。YYおよびZZと呼ばれる2つのメッセージターゲット49は、これら2つの予約レコードに関係しており、したがって、メッセージ処理システム50によって生成されるメッセージの受信者である。メッセージエンベロープエントリについて、最初の6つのカラムのみが満たされる。メッセージエントリは、第5番目のカラムのRD_STATに関する値を含まないが、このパラメータは、メッセージエンベロープレベルにおける依存関係を指すからである。
【０１６７】
【表３】
2020524329.tif 000031
【０１６８】
メッセージエンベロープAAAAAA(0)およびBBBBBB(0)は、予約レコードAAAAAAおよびBBBBBBのそれぞれの最初のメッセージエンベロープである。したがって、ID001および002を有するテーブルエントリは、各々、図8におけるチェック632において「シーケンスの最初」であるとして各々検出される。AAAAAA(1)は、最初のメッセージエンベロープであるが、メッセージターゲットZZに対して少なくとも1つのメッセージが生成される予約レコードAAAAAAに関連する最初のメッセージエンベロープである。結果として、ID004を有するメッセージエンベロープテーブルエントリは、同様に図8におけるチェック632において「シーケンスの最初」として検出される。これらのメッセージエンベロープは、それぞれのメッセージターゲット49に関する他のメッセージエンベロープに依存しないので、テーブルIに示すように、これらのメッセージエンベロープテーブルエントリは、パラメータD_IDセットを有さず、それらのそれぞれのRD_STATは、「V」に設定されている。したがって、メッセージ
【０１６９】
【数２７】
2020524329.tif 000032
【０１７０】
および
【０１７１】
【数２８】
2020524329.tif 000033
【０１７２】
は、それらがNDCメッセージ生成および順序付けプロセス42によって生成され、それらのD_STATがSに更新されると、すぐに送信され得る。
【０１７３】
【数２９】
2020524329.tif 000034
【０１７４】
は、メッセージリスト
【０１７５】
【数３０】
2020524329.tif 000035
【０１７６】
内の最初のメッセージであるが、それは、送信される必要がないものとして計算され(例えば、このTTYメッセージがメッセージターゲットに対する機能的な影響を持たないため、または、メッセージターゲットがTTYメッセージに対して配信停止にされていることがわかっているためであり、例えば、さらなる背景のために参照により本明細書に組み込まれるEP2254046B1の段落[0032]および図7を参照されたい)、したがって、そのD_STATは、最終的にVとして更新される。次いで、メッセージ
【０１７７】
【数３１】
2020524329.tif 000036
【０１７８】
は、送信され、そのD_STATは、Sに更新される。メッセージ
【０１７９】
【数３２】
2020524329.tif 000037
【０１８０】
、
【０１８１】
【数３３】
2020524329.tif 000038
【０１８２】
、および
【０１８３】
【数３４】
2020524329.tif 000039
【０１８４】
が計算され、それらは、送信するためにメッセージキュー46aに入れられる準備ができている。
【０１８５】
データベースレコードAAAAAAおよびBBBBBBへのさらなる変更によってトリガされると、テーブルIによるメッセージエンベロープおよびメッセージの処理がNDCメッセージ生成および順序付けプロセス42によって完了され、依存関係マップおよびメッセージテーブル45がちょうどコミットされたときに、データベースレコードAAAAAAのデータベース変更コミット指示2および10ならびにBBBBBBのデータベース変更コミット指示2が、NDCメッセージ生成および順序付けプロセス42によって受信される。メッセージキュー46aに渡されたメッセージは、まだターゲット49に送信されていない。
【０１８６】
データベースレコードAAAAAAの変更コミット指示2および10とデータベースレコードBBBBBBの変更コミット指示2とを受信することに応じて、2つのさらなるメッセージリスト、すなわち、
【０１８７】
【数３５】
2020524329.tif 000040
【０１８８】
および
【０１８９】
【数３６】
2020524329.tif 000041
【０１９０】
が、NDCメッセージ生成および順序付けプロセス42によって変更コミット指示AAAAAA(2)に対して生成される。さらに、1つのメッセージリスト、すなわち、
【０１９１】
【数３７】
2020524329.tif 000042
【０１９２】
が変更コミット指示AAAAAA(10)に対して生成され、1つのメッセージリスト、
【０１９３】
【数３８】
2020524329.tif 000043
【０１９４】
が変更コミット指示BBBBBB(2)に対して生成される。テーブルIIは、これらのメッセージリストのすべてがNDCメッセージ生成および順序付けプロセス42によって処理された後の依存関係マップおよびメッセージテーブル45を示す。
【０１９５】
【表４】
2020524329.tif 000044
【０１９６】
ソートされたリスト
【０１９７】
【数３９】
2020524329.tif 000045
【０１９８】
は、ID019、022、および023を有するテーブルエントリから導出可能な、メッセージ優先度テーブル44の優先度値定義に基づいて作成される。それらのメッセージエンベロープ
【０１９９】
【数４０】
2020524329.tif 000046
【０２００】
は、ID017を有するテーブルエントリとして記憶される。2つのメッセージ
【０２０１】
【数４１】
2020524329.tif 000047
【０２０２】
および
【０２０３】
【数４２】
2020524329.tif 000048
【０２０４】
は、710および720におけるチェックならびに動作712および722(図9)によって引き起こされる、両方のメッセージを
【０２０５】
【数４３】
2020524329.tif 000049
【０２０６】
にリンクする同じ依存関係パラメータD_IDを有する。
【０２０７】
メッセージエンベロープ
【０２０８】
【数４４】
2020524329.tif 000050
【０２０９】
およびソートされたリスト
【０２１０】
【数４５】
2020524329.tif 000051
【０２１１】
は、ID016、018、および021を有するテーブルエントリとして記憶される。
【０２１２】
【数４６】
2020524329.tif 000052
【０２１３】
は、図8におけるチェック642および646ならびに動作648によって出力されている
【０２１４】
【数４７】
2020524329.tif 000053
【０２１５】
の代わりに
【０２１６】
【数４８】
2020524329.tif 000054
【０２１７】
にリンクされた依存関係状態D_IDを有する。
【０２１８】
【数４９】
2020524329.tif 000055
【０２１９】
の依存関係状態D_IDは、図9における動作730において018として計算されるが、メッセージ状態D_STATは、チェック732および動作736(図9)によりVとして計算される。
【０２２０】
メッセージエンベロープ
【０２２１】
【数５０】
2020524329.tif 000056
【０２２２】
およびメッセージリスト
【０２２３】
【数５１】
2020524329.tif 000057
【０２２４】
は、ID013、014、015、および020を有するテーブルエントリとして記憶される。メッセージエンベロープ
【０２２５】
【数５２】
2020524329.tif 000058
【０２２６】
およびメッセージリスト
【０２２７】
【数５３】
2020524329.tif 000059
【０２２８】
は、ID024〜026を有するテーブルエントリとして記憶される。メッセージエンベロープ
【０２２９】
【数５４】
2020524329.tif 000060
【０２３０】
のRD_STATは、図8における630においてU(未知)として計算され(例えば、なんらかの理由により、変更コミット指示10が変更コミット指示9の前にメッセージ生成および順序付けプロセス42に到達しており、変更コミット指示10内の公開コンテキストが、以前の変更コミット指示が存在することを示しているので、メッセージ依存関係状態は、変更コミット指示9の到着を待つためにUに設定される。未知の状態の計算に関する詳細も、参照により本明細書に組み込まれるEP2254046B1において、段落[0031]および[0032]ならびに図7において説明されている)、すべてのメッセージは、Dの依存関係状態D_STATを有し、これは、それらのメッセージエンベロープのメッセージエンベロープ依存関係RD_STATがNに解決されたときにのみ、それらが送信のためのキューに入れられることを意味する。
【０２３１】
ここで図10を参照すると、メッセージ送信状態機械46は、メッセージキュー46aにキューされたメッセージを送信し、それらのメッセージがターゲット49に送信された後、すなわち、メッセージターゲットから受信された受信確認に応じて、これらのメッセージの依存関係状態D_STATをNからSに更新するとともに、依存関係マップおよびメッセージテーブル45内に保持されたそれらのメッセージエンベロープおよびメッセージエンベロープ内の残りのメッセージの状態を更新し、最後に、送信するのに適格なさらなるメッセージをメッセージキュー46aに入れることを担当する。
【０２３２】
メッセージ送信状態機械46は、メッセージがメッセージキュー46a内に存在するときは常にアクティブである。メッセージ送信状態機械46は、メッセージをデキューし、送信器プロセス47は、802において、メッセージタイプに対して定義された確立された通信チャネルを介して、正しいメッセージターゲット49にメッセージを送信する。レガシーTTYメッセージおよびXMLメッセージは、異なる通信チャネルを介して送信され得る(例えば、専用チャネルを使用する非同期方式におけるTTYメッセージ、およびSOAP/HTTPを使用することによる同期方式におけるXMLメッセージ)。メッセージ送信方法(同期または非同期)に基づいてメッセージがデキューされ、送信されると、EP2693337A1によって説明されているように、受信器プロセス48は、804において、ターゲットシステムから(同期モードについて)、または、例えば、内部メッセージデリゲータ(delegator)システムから(非同期モードについて)の確認応答が存在しているかどうかをチェックする。メッセージターゲット49から有効な確認応答が受信され、確認応答内にエラーコード/情報が存在しないときにのみ、812において、メッセージは、「送信済み」(S)としてマークされる。動作806、808、および810によって構成される再試行動作は、非同期モードにおいて、配信に失敗したメッセージ(メッセージ送信後の所与の時間間隔内に有効な確認応答が受信されないか、またはエラーコードを有する確認応答が受信された)に対する送信動作を繰り返す安全な方法である。任意選択で、所与の最大再試行回数を超えるメッセージは、マークされ、それらが最終的に送信されない場合における回復のためにキュー内に記憶される(図10には示されていない)。
【０２３３】
804において、メッセージ
【０２３４】
【数５５】
2020524329.tif 000061
【０２３５】
に対して有効で正しい応答が受信されたと判定されたとき、812において、メッセージの依存関係状態D_STATは、状態S(送信済み)に更新される。
【０２３６】
次に、
【０２３７】
【数５６】
2020524329.tif 000062
【０２３８】
がメッセージリスト
【０２３９】
【数５７】
2020524329.tif 000063
【０２４０】
内の最後のメッセージであるかどうかをチェックするために、動作814が呼び出される。そうである場合、動作816は、
【０２４１】
【数５８】
2020524329.tif 000064
【０２４２】
のメッセージエンベロープレベルの依存関係状態RD_STATを状態S(送信済み)に更新し、依存関係マップおよびメッセージテーブル45内に記憶し、動作812のD_STAT更新も記憶する。その後、現在のメッセージエンベロープのすべてのメッセージが送信されており、したがって、メッセージエンベロープ全体が完全に処理されているので、818において、メッセージエンベロープレベル依存関係チェーンP(i+1)の次のメッセージエンベロープの依存関係状態は、存在する場合、RD_STAT=N(依存関係なし)に設定される。加えて、さらに818において、依存関係マップおよびメッセージテーブル45に従ってD_IDが
【０２４３】
【数５９】
2020524329.tif 000065
【０２４４】
のIDに設定されたすべてのメッセージは、それらの依存関係状態D_STATをNに設定するように更新される。これらのメッセージはまた、818において、送信するためにメッセージキュー46aに入れられる。最後に、依存関係マップおよびメッセージテーブル45は、メッセージエンベロープレベルにおける依存関係チェーンにおける次のメッセージエンベロープ
【０２４５】
【数６０】
2020524329.tif 000066
【０２４６】
および次のメッセージリスト
【０２４７】
【数６１】
2020524329.tif 000067
【０２４８】
、すなわち、次のメッセージエンベロープのメッセージに対する最新の変更を記憶するために、822においてもう一度コミットされる。
【０２４９】
現在のメッセージが814においてメッセージリストの最後のメッセージではないと判定された場合、動作820は、送信するために適格なメッセージを選択するために呼び出され、すなわち、D_IDが
【０２５０】
【数６２】
2020524329.tif 000068
【０２５１】
のIDに設定されたすべてのメッセージ(すなわち、ターゲットに正常に配信された現在のメッセージに依存するすべてのメッセージ)が、依存関係マップおよびメッセージテーブル45から選択され、それらの依存関係状態D_STATは、Nに設定され、これらのメッセージは、送信するためにメッセージキュー46aに入れられる。その後、動作822は、メッセージリスト
【０２５２】
【数６３】
2020524329.tif 000069
【０２５３】
および
【０２５４】
【数６４】
2020524329.tif 000070
【０２５５】
への最新の変更を記憶するために、依存関係マップおよびメッセージテーブル45をコミットするために呼び出される。
【０２５６】
メッセージ送信状態機械46について、上記ですでに論じたテーブルIIを参照してさらに説明する。最初に、この時点における依存関係マップおよびメッセージテーブル45の状態を示すテーブルIIIを有する図11に示すように、依存関係マップは、
【０２５７】
【数６５】
2020524329.tif 000071
【０２５８】
、
【０２５９】
【数６６】
2020524329.tif 000072
【０２６０】
、および
【０２６１】
【数６７】
2020524329.tif 000073
【０２６２】
の正常な送信後に更新される。
【０２６３】
メッセージリスト、すなわちメッセージエンベロープ
【０２６４】
【数６８】
2020524329.tif 000074
【０２６５】
内の最後のメッセージがメッセージターゲットに正常に送信されたとき、依存関係マップおよびメッセージテーブル45内のメッセージエンベロープテーブルエントリは、現在のメッセージエンベロープ
【０２６６】
【数６９】
2020524329.tif 000075
【０２６７】
に関するメッセージ送信プロセスを完了するために更新される。例えば、以下のテーブルエントリは、図11における矢印によって視覚化されるように、図10における動作816において更新される。
-  ID=007を有するメッセージの正常な送信は、D_STAT=Sに設定し、これは、ID=004を有するメッセージエンベロープのすべてのメッセージが送信されたことを意味する。したがって、メッセージエンベロープレベル依存関係は、同様に「送信済み」に設定され得、すなわち、メッセージエンベロープID=004のRD_STATは、Sに設定される。
-  ID=010を有するメッセージは、メッセージエンベロープID=009の唯一のメッセージである。したがって、メッセージID=010が正常に送信されると、そのD_STATは、Sに設定され、メッセージエンベロープレベル依存関係は、同様に「送信済み」に設定され得、すなわち、メッセージエンベロープID=009のRD_STATは、Sに設定される。
-  同様に、ID=012を有するメッセージは、メッセージエンベロープID=011の唯一のメッセージである。したがって、メッセージID=012が正常に送信されると、そのD_STATは、Sに設定され、メッセージエンベロープレベル依存関係は、同様に「送信済み」に設定され、すなわち、メッセージエンベロープID=011のRD_STATは、Sに設定される。
【０２６８】
メッセージエンベロープレベル依存関係の更新は、図10の動作818においてRD_STAT=Sに設定されたメッセージエンベロープ
【０２６９】
【数７０】
2020524329.tif 000076
【０２７０】
に依存する次のエンベロープ
【０２７１】
【数７１】
2020524329.tif 000077
【０２７２】
で続行する。一般に、次のメッセージエンベロープ
【０２７３】
【数７２】
2020524329.tif 000078
【０２７４】
のRD_STATは、メッセージエンベロープ
【０２７５】
【数７３】
2020524329.tif 000079
【０２７６】
が依存するメッセージエンベロープ
【０２７７】
【数７４】
2020524329.tif 000080
【０２７８】
がSに設定されたときは常にNに更新される。図11におけるテーブルIIIの例では、(再び、図11においてそれぞれの矢印によって示される)以下の遷移が存在する。
-  メッセージエンベロープID=004のRD_STATをSに設定することに応じて、メッセージID=004に依存する(すなわち、D_ID=004を有する)ID=016を有するメッセージエンベロープのメッセージエンベロープレベル依存関係状態は、RD_STAT=Nに設定される。
-  メッセージエンベロープID=009のRD_STATをSに設定することに応じて、メッセージID=009に依存する(すなわち、D_ID=009を有する)ID=013を有するメッセージエンベロープのメッセージエンベロープレベル依存関係状態は、RD_STAT=Nに設定される。
-  メッセージエンベロープID=011のRD_STATをSに設定することに応じて、メッセージID=011に依存する(すなわち、D_ID=011を有する)ID=017を有するメッセージエンベロープのメッセージエンベロープレベル依存関係状態は、RD_STAT=Nに設定される。
【０２７９】
メッセージエンベロープレベル依存関係状態RD_STATのこれらの更新に応じて、更新されたメッセージエンベロープの最初のメッセージ、すなわち、
【０２８０】
【数７５】
2020524329.tif 000081
【０２８１】
に対して依存関係を有するメッセージは、図10における動作818において、更新され、送信するためにキューされる。例えば、再び図11を参照すると、以下のメッセージがもはや依存しないようにマークされる。
-  メッセージエンベロープID=013のRD_STATをNに設定することに応じて、メッセージエンベロープID=013における最初のメッセージ(すなわち、D_ID=13を有する)であるID=014を有するメッセージのメッセージレベル依存関係状態は、D_STAT=Nに設定され、メッセージキュー46aに渡される。
-  メッセージエンベロープID=017のRD_STATをNに設定することに応じて、メッセージエンベロープID=17における両方とも最初のメッセージである(すなわち、D_ID=17を有し、すなわち、これら2つのメッセージ間に依存関係が存在しない)ID=019およびID=023を有する2つのメッセージのメッセージレベル依存関係状態は、D_STAT=Nに設定され、両方のメッセージがメッセージキュー46aに渡される。
【０２８２】
図10の動作818は、正常に送信されたメッセージおよびN(独立)に設定されているメッセージのために更新されるべき任意のレガシーメッセージレベル依存関係が存在するかどうかもチェックする。例えば、変更コミット指示2(すなわち、I=2)に関連するレガシー規格メッセージID=018は、メッセージエンベロープID=004に属し正常に送信された、メッセージID=007に対するメッセージレベル依存関係(すなわち、D_ID=007)を有する。したがって、メッセージID=018の依存関係状態は、Nに設定され、メッセージID=018は、同様に送信するためにメッセージキュー46aに渡される。
【０２８３】
完全を期するために、同じデータベースレコードに関する各メッセージターゲットに対するレガシーTTYメッセージ間の直接メッセージレベル依存関係チェーンを構築することは、メッセージ処理エンジン50の1つのオプションの機能であるので、レガシーメッセージID=018は、特別なケースであることに留意すべきである。メッセージエンベロープID=004内のレガシーメッセージID=007は、メッセージエンベロープID=004内のメッセージID=005に対するメッセージレベル依存関係を有する通常のメッセージである。一方、レガシーID=018は、実際には、メッセージエンベロープID=016に属し、したがって、そのD_IDは、016であるべきである。しかしながら、それは、レガシーメッセージであるので、レガシーメッセージ=007の直後にレガシーメッセージID=018を送信することは、メッセージエンベロープ内の任意の潜在的な他のXMLメッセージ(ここでは、ID=021を有するメッセージ)のシーケンスおよび依存関係に影響を及ぼさないので、すなわち、メッセージレベル依存関係チェーンは、NDCのフラグが立てられた変更コミット指示について保持されるので、特定のレガシー依存関係計算プロセスが、D_ID=016の代わりにそのD_ID=007に設定する。
【０２８４】
上述した最初のメッセージ(ID014、019、023、および018を有するメッセージの)が正常に送信された後に依存関係マップおよびメッセージテーブル45によって定義された依存関係マップは、図12のテーブルIVにおいて示されている。ID014、019、023、および018を有するメッセージのメッセージレベル依存関係状態は、それぞれの受信確認応答を受信する受信器プロセス48に応じてD_STAT=Sに設定される。
【０２８５】
次に、図10の動作820は、依存関係マップおよびメッセージテーブル45によって定義されているメッセージレベル依存関係チェーンに基づいて、それぞれのメッセージエンベロープ内の次のメッセージのメッセージレベル依存関係状態を更新する。図12の例では、以下の依存関係更新がメッセージレベルにおいて行われる。
-  メッセージID=014の正常な送信に応じて、メッセージID=014のメッセージレベル依存関係状態は、「送信済み」、すなわち、D_STAT=Sに設定される。メッセージID=0014に依存する次のメッセージ、すなわち、ID=015を有する(D_ID_014を有する)メッセージのメッセージレベル依存関係状態は、次いで、独立、すなわち、D_STAT=Nに設定され、メッセージID_015は、送信のためのメッセージキュー46aに渡される。
-  同様に、メッセージID=019の正常な配信に応じて、メッセージID=019のメッセージレベル依存関係状態は、「送信済み」、すなわち、D_STAT=Sに設定される。メッセージID=0019に依存する次のメッセージ、すなわち、ID=022を有する(D_ID_019を有する)メッセージのメッセージレベル依存関係状態は、次いで、独立、すなわち、D_STAT=Nに設定され、メッセージID_022は、送信のためのメッセージキュー46aに渡される。
【０２８６】
さらに、ID=018を有するメッセージ
【０２８７】
【数７６】
2020524329.tif 000082
【０２８８】
が、メッセージターゲットZZに送信されるべき依存関係チェーン内の唯一のメッセージであり(メッセージID=021もメッセージエンベロープID=016に属するが、無効状態(D_STAT=V)を有し、したがって、送信されない)、メッセージID=018が送信されているので、メッセージエンベロープレベルにおいて、ID=016を有するメッセージエンベロープ
【０２８９】
【数７７】
2020524329.tif 000083
【０２９０】
は、Sに更新される。
【０２９１】
上述したすべてのメッセージが送信された後の依存関係マップおよびメッセージテーブル45によって定義された依存関係マップは、テーブルVを有する図13において示されている。図13は、メッセージエンベロープレベル依存関係およびメッセージレベル依存関係の以下の更新も示している。
-  ID_022を有するメッセージが正常に送信された後、そのメッセージレベル依存関係状態D_STATは、Sに設定される。これは、ID=017を有するメッセージエンベロープのすべてのメッセージが正常に配信されたことも意味する。したがって、メッセージエンベロープレベル依存関係は、同様に「送信済み」に設定され得、すなわち、メッセージエンベロープID=017のRD_STATは、NからSに設定される。
-  ID_015を有するメッセージが正常に送信された後、そのメッセージレベル依存関係状態D_STATは、Sに設定される。メッセージID_015に依存する次のメッセージは、ID=020を有する(D_ID=015を有する)メッセージである。したがって、メッセージID=015のメッセージレベル依存関係は、Nに設定され、メッセージは、送信のためのメッセージキュー46aに渡される。
-  図13は、次いで、メッセージID=020のメッセージレベル依存関係状態が、メッセージターゲットYYから対応する確認応答を受信することに応じて、後に「送信済み」に設定されることを、「(S)」によってすでに示している。
-  図13は、次いで、メッセージID_020の正常な配信を決定することに応じて、メッセージID=020がこのメッセージエンベロープの最後のメッセージであったので、メッセージエンベロープID=013のメッセージエンベロープ依存関係状態が「送信済み」(S)に設定されることも示す。
【０２９２】
最後に、図14は、上記で説明したメッセージ処理システム50の機能を提供するコンピュータシステム100の図式的表現である。コンピュータシステム100は、上記で詳述したメッセージ処理システム50の方法およびアクティビティのうちのいずれかをコンピュータシステム100に実行させる命令のセットを含み得る。コンピュータシステム100は、バス104を介して互いに通信する1つまたは複数のプロセッサ101、メインメモリ102、およびネットワークインターフェースデバイス103を含む。少なくとも1つのプロセッサ101は、本明細書で説明したメッセージ処理方法を実行するためのプログラム命令を保持する少なくとも1つのCPUキャッシュを含む。任意選択で、コンピュータシステム100は、スタティックメモリ105とディスクドライブユニット106とをさらに含み得る。ビデオディスプレイ107、英数字入力デバイス108、およびカーソル制御デバイス109は、コンピュータシステム100を操作するためのマンマシンインターフェースを構成する。ネットワークインターフェースデバイス103は、NDC予約エンジン40と、レガシーGDS予約エンジン41と、メッセージターゲット49とを含む任意の数および種類の他のシステムにメッセージ処理システム50を接続する有線および/またはワイヤレスインターフェースである。メッセージターゲット49は、インターネットおよび/または他のネットワーク上に存在し得る。ネットワークインターフェースデバイス103は、HTTP/TCP/IPプロトコルスタック、IEEE802.11、および/または独占(proprietary)通信プロトコルなどのいずれかの標準的な通信プロトコルを利用する。
【０２９３】
上記で説明した方法論のうちの任意の1つまたはすべてを具体化する命令(すなわちソフトウェア)110のセットは、機械可読媒体、例えば、メインメモリ102および/または少なくとも1つのCPUキャッシュを有する少なくとも1つのプロセッサ101上または内に、完全にまたは少なくとも部分的に存在する。とりわけ、命令は、上記で詳細に説明したように、メッセージエンベロープとメッセージとを生成するため、ならびに、メッセージをキューし、送信するために、入来データベース変更コミットを処理するメッセージ処理システムの機能を実装し得る。ソフトウェア110が常駐する機械可読媒体は、ディスクドライブユニット106の不揮発性データキャリア111(例えば、非リムーバブル磁気ハードディスクまたは光学式もしくは磁気式リムーバブルディスク)でもあり得る。ソフトウェア110は、ネットワークインターフェースデバイス103を通じてインターネットを介して伝播される信号112としてさらに送信または受信され得る。
【０２９４】
要約すると、本明細書で説明する方法論は、メッセージエンベロープレベルとメッセージレベルの両方における依存関係チェーンの生成を容易にする。メッセージエンベロープとメッセージとの間の依存関係は、所与のメッセージ優先度値を(再)定義することによって構成される。全体として、例えば、TTYメッセージに基づくレガシーメッセージフローと、NDCなどの最先端の規格に準拠する、より洗練されたハイブリッドメッセージフローの両方をサポートする汎用フレームワークが提示される。フレームワークは、将来のさらにより洗練された規格およびメッセージフローがシームレスに追加され得るように拡張可能である。
【０２９５】
本発明の教示に従って構成された特定の製品および方法について本明細書で説明したが、本特許の対象範囲は、それに限定されない。それどころか、本特許は、文字通りに、または均等論の下で、添付の特許請求の範囲内に顕著な程度に入る本発明の教示のすべての実施形態をカバーする。
【符号の説明】
【０２９６】
32  GDS予約プロセス
34  変更コミット指示、変更コミット、認識されたNDC変更コミット
36  メッセージエンベロープ
37  点線矢印
38  メッセージ
39  矢印
40  NDC予約エンジン
41  レガシーGDS予約エンジン
42  メッセージ生成および順序付けプロセス、NDCメッセージ生成および順序付けプロセス
43  TTYメッセージ順序付けエンジン
44  メッセージ優先度テーブル、テーブル
45  依存関係マップおよびメッセージテーブル
46  メッセージ送信状態機械
46a  メッセージキュー、キュー
47  メッセージ送信器サブプロセス、送信器プロセス
48  メッセージ応答受信器サブプロセス、受信器プロセス
49  メッセージターゲット、ターゲット
49a  メッセージターゲット、XMLメッセージターゲット
49b  メッセージターゲット
49c  メッセージターゲット
50  メッセージ処理エンジン、メッセージ処理システム
52  サーバ
54  プロセスインスタンス
56  データベースサーバ
100  コンピュータシステム
101  プロセッサ
102  メインメモリ
103  ネットワークインターフェースデバイス
104  バス
105  スタティックメモリ
106  ディスクドライブユニット
107  ビデオディスプレイ
108  英数字入力デバイス
109  カーソル制御デバイス
110  命令(すなわちソフトウェア)、ソフトウェア
111  不揮発性データキャリア
112  伝播された信号
【図１】
2020524329.tif 000084
【図２】
2020524329.tif 000085
【図３】
2020524329.tif 000086
【図４】
2020524329.tif 000087
【図５】
2020524329.tif 000088
【図６】
2020524329.tif 000089
【図７】
2020524329.tif 000090
【図８】
2020524329.tif 000091
【図９】
2020524329.tif 000092
【図１０】
2020524329.tif 000093
【図１１】
2020524329.tif 000094
【図１２】
2020524329.tif 000095
【図１３】
2020524329.tif 000096
【図１４】
2020524329.tif 000097
【国際調査報告】
2020524329.tif 000098
2020524329.tif 000099