JP7083850B2 - 多規格メッセージ処理 - Google Patents

多規格メッセージ処理 Download PDF

Info

Publication number
JP7083850B2
JP7083850B2 JP2019567541A JP2019567541A JP7083850B2 JP 7083850 B2 JP7083850 B2 JP 7083850B2 JP 2019567541 A JP2019567541 A JP 2019567541A JP 2019567541 A JP2019567541 A JP 2019567541A JP 7083850 B2 JP7083850 B2 JP 7083850B2
Authority
JP
Japan
Prior art keywords
message
envelope
dependency
target
standard
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019567541A
Other languages
English (en)
Other versions
JP2020524329A (ja
JP2020524329A5 (ja
Inventor
イゼン・ジャン
シモーネ・カンポーラ
イヴァン・グザヴィエ・マルシャン
ロイク・フォントリエ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/617,180 external-priority patent/US10284515B2/en
Priority claimed from FR1755105A external-priority patent/FR3067490B1/fr
Application filed by Amadeus SAS filed Critical Amadeus SAS
Publication of JP2020524329A publication Critical patent/JP2020524329A/ja
Publication of JP2020524329A5 publication Critical patent/JP2020524329A5/ja
Application granted granted Critical
Publication of JP7083850B2 publication Critical patent/JP7083850B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Tourism & Hospitality (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、概してメッセージ処理に関する。より具体的には、本発明は、メッセージとメッセージ順序との間の依存関係を順守するメッセージ処理に向けられている。
従来技術において、様々なメッセージ処理システムが知られている。
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の規格に従って動作し、複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは、第2のレガシー規格に従って動作する。方法は、メッセージ処理エンジンによって実行される。
複数のデータベースコミット指示が受信され、各データベースコミット指示は、データベースレコードの変更を示す。複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、第1の規格に従って動作する通知されるべき各メッセージターゲットのためにメッセージエンベロープが生成され、各メッセージエンベロープ内の少なくとも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の規格に従って動作し、複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは、第2のレガシー規格に従って動作する。本明細書で使用されるメッセージターゲットという用語は、横断的販売網(GDS)、出発制御システム(DCS)、ワイドエリアネットワーク(WAN)などの大規模システム、または航空会社などの特定の組織のローカルエリアネットワーク(LAN)、ならびに個々の受信局を含む様々なレベルにおけるメッセージ宛先を含む。
いくつかの実施形態において、第1の規格に従って動作するメッセージターゲットは、完全に後方互換性があり、したがって、第2の規格にも従って動作し、すなわち、第2の規格に従ってメッセージを処理するようにも構成され、一方、第2の規格に従って動作するメッセージターゲットは、第1の規格を実装しておらず、したがって、第2の規格に従ってメッセージを処理することができないレガシーメッセージターゲットである。したがって、一般に、本明細書に記載される第1の規格への言及は、実際には、第1の規格および第2の規格と、第1の規格および第2の規格に準拠するそれぞれのメッセージとを包含し、一方、本明細書に記載される第2の規格への言及は、第2の規格に準拠するメッセージターゲットおよびメッセージのみを包含する。
再び図1を参照すると、2において、メッセージ処理エンジンによって複数のデータベースコミット指示が受信される。各データベースコミット指示は、データベースレコードの変更を示す。データベースコミット指示は、検索クエリと、メッセージ処理エンジンの上流に位置するデータベース内のデータベースレコードへの変更を確定するデータベースコミットとの間に、乗客名レコード(PNR)などのデータベースレコードに対して行われたすべての変更のコンテナである。したがって、上流データベースにおいて変更がコミットされるたびに、データベース変更コミット指示が生成され、メッセージ処理エンジンに公開される。したがって、データベースコミット指示は、メッセージ処理エンジンへの入力である。
複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、4において、第1の規格に従って動作する通知されるべき各メッセージターゲットのためのメッセージエンベロープが生成され、各メッセージエンベロープ内の少なくとも1つのメッセージが生成される。本明細書で用いるメッセージエンベロープとは、送信されないが、メッセージエンベロープのメッセージをグループ化する参照を構成する特別なインスタンスと見なされる。これは、ディレクトリまたはフォルダがディレクトリ内に位置するすべてのファイルをグループ化するファイルの特別なインスタンスであるファイルシステムと類似している。以下、メッセージエンベロープおよびそのメッセージのセットは、メッセージリストとも呼ばれる。
一般に、メッセージ処理エンジンは、受信されたデータベースコミット指示によって影響を受けるメッセージターゲットを決定し、第1の規格に従って動作する通知されるべき各々の影響を受けるメッセージターゲットのためのメッセージエンベロープを生成する。メッセージエンベロープ内のすべてのメッセージは、このメッセージターゲットに宛てられ、良好に定義された順序でメッセージターゲットに送信されることになる。送信順序を決定および保証するために、本明細書では、2つの異なるレベルの依存関係、すなわち、メッセージエンベロープのレベルにおけるメッセージエンベロープ依存関係、およびメッセージレベルにおけるメッセージレベル依存関係が導入される。メッセージエンベロープ依存関係は、特定のメッセージターゲットのために生成されるすべてのメッセージエンベロープ間の順序を定義する。メッセージ依存関係は、特定のメッセージエンベロープ内のメッセージの順序を定義する。
したがって、メッセージエンベロープおよびメッセージエンベロープ内のメッセージの生成は、6における同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係の計算、および8における各メッセージエンベロープ内のメッセージ間のメッセージ依存関係の計算も伴う。
一般に、データベースコミット指示に対して作成されたメッセージエンベロープは、6において同じメッセージターゲットのためにすでに存在する他のメッセージエンベロープ、すなわち、以前のデータベースコミットメッセージの受信に応じてそのメッセージターゲットのために以前にすでに生成されているメッセージエンベロープに依存するように計算される。したがって、特定のメッセージターゲットのためのメッセージエンベロープは、特定のメッセージターゲットに影響を及ぼすデータベースコミットメッセージの受信順序に基づいて順序付けられる。
一方、メッセージ依存関係は、8において、少なくとも、それぞれのメッセージエンベロープのメッセージの規格と、メッセージの機能とに基づいて計算される。特に、第1の規格のメッセージは、レコードを追加する追加メッセージ、レコードを削除する削除メッセージ、レコードを分割する分割メッセージなど、異なる機能(以下「メッセージ名」とも呼ばれる)に分類され得る。
特定のメッセージエンベロープとメッセージとの間に確立され、特定の時点で有効な関係は、メッセージ依存関係マップとも呼ばれる。メッセージ依存関係マップは、1つまたは複数のデータベーステーブル内にメッセージ処理エンジンによって維持される。10において、メッセージは、メッセージエンベロープ依存関係とメッセージ依存関係とに基づいた順序でそれぞれのメッセージターゲットにメッセージ処理エンジンによって送信される。
様々なタイプのメッセージターゲットに加えて、データベースコミット指示を生成する様々なタイプのデータベースシステムが、分散メッセージングシステム内に存在し得る。1つのタイプのデータベースシステムは、第1の(新しい)規格に従って動作し、第1の規格にすでに準拠しているデータベースコミット指示を(および、後方互換性の理由のため、第2の規格に準拠したデータベースコミット指示も)出力し得る。他のタイプのデータベースシステムは、依然として第2のレガシー規格に従って動作し、したがって、レガシーデータベースコミット指示のみを出力する。
データベースコミットメッセージのソース(第1の規格に従って動作するデータベースシステム、または第2のレガシー規格に従って動作するデータベースシステム)に応じて、および、通知されるべきメッセージターゲットのタイプ(第1の規格に従って動作するメッセージターゲット、または第2のレガシー規格に従って動作するメッセージターゲット)に応じて、メッセージ処理の様々なケースが区別され得る。
図2によって視覚化されている第1のケースは、11において受信されたデータベースコミット指示が、第1の規格に従って動作するデータベースシステムからの複数のデータベースコミット指示のうちの第1のデータベースコミット指示であると仮定する。いくつかの実施形態において、このデータベースコミット指示は、例えば、以下でさらに説明するフラグによって、第1の規格に準拠するデータベースコミット指示としてマークされる。第1の規格に準拠するデータベースコミット指示を受信することに応じて、メッセージ処理エンジンは、通知されるべき第1の規格に従って動作する各メッセージターゲットのためにメッセージエンベロープを生成し、各メッセージエンベロープ内の少なくとも1つのメッセージを生成する。
ここでは、2つの異なるサブケースが区別され得る。省略して第1のメッセージターゲットとも呼ばれる、第1の規格を実装する通知されるべき各メッセージターゲットのために、12において、それぞれの第1のメッセージエンベロープが生成され、その各々は、通常、第1の規格に従って動作するそれぞれの第1のメッセージターゲットに中継されるべき複数の相互依存する第1のメッセージを含む。複数の相互依存する第1のメッセージは、第1の規格に従って指定される(これは一般に、上記ですでに説明したように、後方互換性の理由のために第2の規格に準拠する第2のメッセージに準拠するメッセージも包含する)。省略して第2のメッセージターゲットとも呼ばれる、第2のレガシー規格を実装する通知されるべき各メッセージターゲットのために、13において、第2の規格に従って動作する第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のデータベースコミット指示であると仮定する。いくつかの実施形態において、このデータベースコミット指示は、第1の規格を示すマーキングを含まず、したがって、メッセージ処理システムは、データベースコミット指示が第2のレガシー規格に準拠する指示であることを認識する。
第2の規格に従って動作するレガシーデータベースシステムからの複数のデータベースコミット指示のうちの第2のデータベースコミット指示を受信することに応じて、メッセージ処理エンジンは、メッセージターゲットに関する少なくとも1つのメッセージエンベロープが過去に生成されており、依然として保留中である限り、18において、通知されるべき各メッセージターゲットのために1つのメッセージを生成し、各メッセージターゲットに関するメッセージをそれぞれのターゲットに関する既存のメッセージエンベロープに潜在的に関連付ける。一般に、第2のデータベースコミットメッセージは、第2のレガシー規格に準拠するので、第2のレガシー規格に準拠するそれぞれのメッセージのみがメッセージ処理エンジンによって生成される。言い換えれば、第2のレガシー規格に準拠するデータベースコミット指示は、メッセージエンベロープの生成も、第1の規格に準拠するメッセージの生成も引き起こさない。
第1の規格に従って動作するメッセージターゲットと、第2のレガシー規格に従って動作するメッセージターゲットの両方に対して、メッセージ処理エンジンは、以下、第3のメッセージと呼ばれる、第2の規格に従ってフォーマットされた1つのメッセージを生成する。19において決定される、保留中のメッセージエンベロープおよび/またはメッセージのない各メッセージターゲットについて、第2の規格に従って生成された第3のメッセージは、20において、メッセージ依存関係の計算なしに、すぐに送信される。
19において決定される、保留中のメッセージエンベロープおよび/または少なくとも1つの保留中のメッセージを有するメッセージターゲットについて、第2のレガシー規格に従って生成されたメッセージは、一般に、保留中のメッセージエンベロープに関連付けられ、または、保留中のメッセージエンベロープがない場合、保留中のメッセージのシーケンス内に含められる。この場合、21において、メッセージ処理エンジンは、少なくとも、第1のメッセージターゲットと、第3のメッセージが第2のレガシー規格に準拠するメッセージであるという事実とに基づいて、第3のメッセージのメッセージ依存関係を計算する。計算されたメッセージ依存関係は、考慮されるメッセージターゲットに関する保留中のメッセージエンベロープの他のメッセージのシーケンス内の第3のメッセージの位置を定義する。
例えば、考慮されるメッセージターゲットが第1の規格に従って動作する場合、すなわち、それが第1のメッセージターゲットである場合、第1のメッセージを有する第1のエンベロープは、すでに保留中である場合がある。この場合、第3のメッセージは、一般に、メッセージエンベロープ内に含まれ、第1のメッセージを第3のメッセージに関連付けるメッセージ依存関係が計算される。22において、第1のメッセージおよび第3のメッセージは、メッセージエンベロープ依存関係とメッセージ依存関係とに基づくシーケンスで第1のメッセージターゲットに送信される。
いくつかの特定の場合、例えば、第3のメッセージが第1のメッセージエンベロープ内のすべての他のメッセージと比較して最も高い優先度を有するとされる場合、第3のメッセージは、直接送信され得、直接送信されるので、メッセージ依存関係は、計算されない。
図4を参照すると、任意選択で、24において、少なくとも、メッセージの規格とメッセージタイプとに依存して、複数の相互依存するメッセージの各々に所与の優先度値が割り当てられる。各メッセージエンベロープについてメッセージ間のメッセージ依存関係は、25において、割り当てられた優先度値に基づいて計算される。優先度値を定義するテーブルの例が、以下でさらに与えられる。
任意選択で、26において、メッセージがメッセージのメッセージエンベロープ内の他のメッセージから独立しており、メッセージのメッセージエンベロープが他のメッセージエンベロープから独立しているという判定に応じて、メッセージが送信される。さらに、27において、任意選択で、送信されたメッセージのメッセージ依存関係と、メッセージのメッセージエンベロープ内のメッセージの順序における次のメッセージのメッセージ依存関係とが更新される。以下でより詳細に説明するように、この更新は、メッセージエンベロープ内の次のメッセージ(もしあれば)を独立させ、したがって、送信される準備ができているようにする。
送信された最後のメッセージが現在のメッセージエンベロープの最後のメッセージである場合、送信された最後のメッセージのメッセージエンベロープのメッセージエンベロープ依存関係は、更新され、メッセージエンベロープの順序における次のメッセージエンベロープのメッセージエンベロープ依存関係も更新される。この更新は、送信された最後のメッセージのメッセージエンベロープが完全に処理され、次のメッセージエンベロープが独立をさせ、その結果、次のメッセージエンベロープの最初のメッセージもまた独立させ、したがって送信される準備ができているようにする。
任意選択で、第1の規格は、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を管理する)第1の規格に従って動作するデータベースシステム、および(例えば、予約レコードAを管理する)第2のレガシー規格に従って動作する別のデータシステムから始まる場合がある。
(他の予約レコードに関連する他の変更コミット34とともに)予約レコードBに関する例示的な「キャンセル-再予約」フローの変更コミット34を受信することに応じて、メッセージ生成および順序付けプロセス42は、予約レコードBに関する例示的な「キャンセル-再予約」フローのこれらの変更コミット指示34が、NDC規格などの最先端の規格(すなわち、第2のレガシー規格とは対照的な第1の規格)に準拠する変更コミットであることを認識する。例えば、予約レコードBに関する例示的な「キャンセル-再予約」フローの変更コミット指示34は、NDC変更コミット指示としてそれらを識別する特別なインジケータを含む。
変更コミット指示34がNDC変更コミットであると認識することに応じて、メッセージ生成および順序付けプロセス42は、通知されるべき各メッセージターゲットのためのメッセージエンベロープ36を作成し、ここで、メッセージターゲット49aは、NDCなどの第1の規格に従って動作し、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は、第1の規格に従って動作するメッセージターゲット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変更コミット指示(したがって、第1の規格に準拠する)であり、メッセージターゲットが依然として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の例は、以下の通りである。
Figure 0007083850000001
「メッセージターゲット」というカラムは、メッセージの宛先を定義し、すなわち、すべての既知のメッセージターゲット49をリストする。「メッセージタイプ」というカラムは、メッセージ規格、すなわち、メッセージタイプTTYなどのレガシー規格、または、XMLメッセージを使用するNDCなどの現在の規格のいずれかに準拠するメッセージ規格を示す。メッセージ規格/タイプに応じて、「メッセージ名」というカラムにおいて示される様々なメッセージサブタイプのメッセージが存在し得る。上記の例で示したように、レガシー規格は、異なるメッセージタイプを規定しておらず、すべてのTTYメッセージがメッセージ名TTYと呼ばれる場合がある。しかしながら、XMLタイプのメッセージを使用する新しい規格は、削除メッセージ(「DEL」)および追加メッセージ(「ADD」)などの異なるメッセージを定義し得る。さらに、第3の規格(「NEW」)は、汎用メッセージ(「GEN」)を定義し得る。
「優先度値」というカラムは、特定のメッセージターゲットに宛てられるべき所与のメッセージタイプおよびメッセージ名のすべてのメッセージに関するメッセージ優先度値を定義する。したがって、優先度値は、メッセージターゲットのレベル、規格のレベル、およびメッセージサブタイプ/名のレベルにおいてメッセージ間を区別することを可能にする。上記の例では、「優先度値」カラムの値は、以下の意味を有し、すなわち、0の優先度値は、メッセージがまったく送信されるべきではないことを意味する。これは、例えば、特定の機能を有するメッセージが、第1の規格によってすでに指定されているが、実際に展開配置されているメッセージターゲットによってまだサポートされていない場合に妥当である。上記のテーブル44の例では、これは、例えば、メッセージ処理エンジン50によって内部ですでに生成されているが、メッセージターゲットにおける実装の欠如のために(まだ)送信されていないSPLITメッセージの場合である。優先度値が設定されていない場合(「NULL」)、メッセージエンベロープのレベルにおける依存関係が存在しないとき、メッセージは、送信され得ない。エンベロープのメッセージは、それらの優先度値に従って、より高い値の優先度値からより低い値への優先度値に相互依存している。
メッセージ優先度テーブル44は、一般に静的であるが、いつでも設定可能である。新しいターゲットが追加され得、様々なターゲットについて新しいメッセージタイプが追加され得、また、所与のメッセージタイプについて新しいメッセージ名が追加され得る。さらに、例えば、特定のターゲットが除去されるべきとき、既存の行が更新または削除され得る。優先度値は、同様に設定可能であり得る。
いくつかの実施形態では、メッセージ優先度テーブル44は、データベースシステムによってホストされないが、例えば、バッチサーバのメモリキャッシュファイルの形で記憶される。キャッシュファイルは、必要に応じて、または適切であるように任意のサーバと同期され得る。例えば、メッセージ優先度テーブル44への変更は、バッチサーバのコンテンツ管理システムによって行われ、次いで、すべての展開配置されたサーバにブロードキャストされ得る。
一方、依存関係マップおよびメッセージテーブル45は、任意の所与の時点におけるメッセージ処理システムの現在の状態を表すので、依存関係マップおよびメッセージテーブル45は、非常に動的である。したがって、いくつかの実施形態において、依存関係マップおよびメッセージテーブル45は、データベースシステムによってホストされる。本明細書で説明するメッセージ処理システムは、依存関係マップおよびメッセージテーブル45をリアルタイムで読み取り、挿入し、更新するために複数のライブセションを実行し得る。
依存関係マップおよびメッセージテーブル45のカラムの例示的な定義は、以下の通りである。
Figure 0007083850000002
2つの依存関係状態RD_STATおよびD_STATは、メッセージが送信されていた場合、値「送信」(S)を取り得、または、ターゲットへ送信されるべきメッセージが存在しない(例えば、テーブルエントリがメッセージではなくメッセージエンベロープを表す)場合、「無効(void)」(V)を取り得、または、メッセージがメッセージレベルにおいて別のメッセージに依存している場合、もしくはメッセージのメッセージエンベロープが別のメッセージエンベロープに依存している場合、「依存」(D)を取り得、依存関係が存在しない(=送信される準備ができている)場合、「N」を取り得、または、依存関係がまだ識別されていない場合、例えば、対応するメッセージが現在なくなっている場合、すなわち、NDCメッセージ生成および順序付けプロセス42において未解決である場合、「未知」(U)を取り得る。RD_STATセルが満たされ、D_STATセルが空のままである場合、テーブルエントリは、メッセージエンベロープを表す。例えば、
Figure 0007083850000003
のメッセージリストに関するメッセージエンベロープは、
Figure 0007083850000004
として示される。
いくつかの実施形態において、メッセージ処理システム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においてこの次のターゲットを読み取り、次のターゲットが第1の規格(すなわち、この例ではNDC)または第2のレガシー規格(すなわち、この例ではTTYメッセージのみを処理する)のどちらに従って動作するかを判定する。プロセスは、次いで610において、受信されたデータベース変更コミット指示がNDCコミットとしてマークされているかどうか、すなわち、NDC予約エンジン40またはレガシーGDS予約エンジン41のどちらのコミット指示であるかをチェックする。
ボックス608および610の2つの決定は、現在の受信器が図8の左側または右側のどちらを介して処理されるかを決定する。データベース変更コミット指示がNDC予約エンジン40から始まり、したがって、第1の規格に即し、現在のメッセージターゲットが第1の規格に従って動作すると判定することに応じて、ボックス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において、第1の規格(ここでは、XMLベースのNDC)に従っておよび/または第2の規格(ここでは、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は、
Figure 0007083850000005
のメッセージ依存関係チェーン、すなわち、現在のループのターゲット49に向けられたメッセージエンベロープ内のメッセージの依存関係を構築するために呼び出される。動作640は、メッセージ優先度テーブル44内の事前定義されたメッセージ優先度値を利用する。
動作640の詳細なフローチャート図が図9において示されている。ここで図9を参照すると、図9の702において示されているように図8の動作640の入力は、
i)メッセージエンベロープ
Figure 0007083850000006

ii)メッセージリスト
Figure 0007083850000007
、ならびに
iii)メッセージリスト内のメッセージのメッセージ名、タイプ、およびターゲット、である。
出力は、入力に対して構築された依存関係項目のリストである。第1のプロセス704および706は、メッセージ優先度テーブル44を読み取り、メッセージリスト内のメッセージ
Figure 0007083850000008
の優先度値を見出すことを目的とする。入力メッセージリストは、次いで、より高い優先度値からより低い優先度値にソートされる。ソートされたメッセージリストは、
Figure 0007083850000009
として示される。
メッセージが順番にソートされ、次いで、チェック708を介してメッセージリスト内の各メッセージをループすると、チェック710は、最初に、現在考慮されているメッセージがメッセージ優先度テーブル44内に定義された有効な優先度値を有しているかどうかを判定する。現在考慮されているメッセージが710における有効な優先度値を有していると判定することに応じて、さらなるチェック720は、メッセージがメッセージリスト内の第1のメッセージ
Figure 0007083850000010
であるかどうかを判定するために呼び出される。イエスである場合、722において、メッセージ
Figure 0007083850000011
のD_IDが
Figure 0007083850000012
のIDに割り当てられる。次いで、
Figure 0007083850000013
のRD_STAT値がNまたはVのどちらであるか、すなわち、メッセージエンベロープが他のメッセージエンベロープから独立しているかどうかがさらにチェックされる(724)。これが真である場合、現在のメッセージは、726において独立として設定され、すなわち、
Figure 0007083850000014
についてのRD_STATに設定される。そうでない場合、メッセージは、728において依存であるように、すなわち、
Figure 0007083850000015
についてのRD_STATに設定される。図9のプロセスは、次いで、738においてメッセージリスト内の次のメッセージに移動する。
720において判定されるように、現在のループ内で処理されるメッセージがもはや最初のメッセージではない場合、730において、メッセージ
Figure 0007083850000016
のD_IDは、メッセージ
Figure 0007083850000017
のIDに割り当てられる。次いで、現在のループのメッセージの優先度値が0に等しいかどうかを判定するために、さらなるチェック732が実行される。上記のように、0の優先度値は、メッセージがまったく送信されるべきではないことを意味する。したがって、優先度値=0が認識された場合、
Figure 0007083850000018
のD_STATがVに設定される。そうでない場合、それぞれ、動作734および736において、
Figure 0007083850000019
のD_STATがDに設定される。図9のプロセスは、次いで、738において、メッセージリスト内の次のメッセージに移動する。
現在のメッセージの優先度値が720において定義されていないと決定された場合、これは、メッセージがメッセージエンベロープ
Figure 0007083850000020
のみに依存することを意味する。したがって、D_IDは、712(動作722と同一である)において常に
Figure 0007083850000021
のIDに設定され、メッセージのD_STATは、メッセージエンベロープのD_STATが714においてNまたはVのどちらであると判定されたかに応じて、7126においてD、または718においてVに設定される。図9のプロセスは、次いで、738においてメッセージリスト内の次のメッセージに移動する。
ここで再び図8を参照すると、動作640が終了した後、メッセージエンベロープのメッセージが送信するためにメッセージキュー46aに入れられ得るかどうかを判定するために、メッセージエンベロープ依存関係RD_STATに対するチェック642が呼び出される。RD_STAT=Nである場合、動作644は、メッセージエンベロープの最初のメッセージ、すなわち、
Figure 0007083850000022
を、最初に送信するためにキュー46aに入れるように実行される。次いで、そのD_STATがNに等しいメッセージエンベロープの他のメッセージ
Figure 0007083850000023
も、644においてキュー46aに入れられる。
642においてメッセージエンベロープのRD_STATがNではないと判定された場合、TTYメッセージが現在のループのメッセージターゲット49に関するメッセージ依存関係マップ内の
Figure 0007083850000024
であるかどうかを判定するために、さらなるチェック646が実行される。これが肯定的である場合、メッセージ依存関係マップは、648において更新され得る。より具体的には、
Figure 0007083850000025
は、648において、
Figure 0007083850000026
のD_IDを、P(i-1)のTTYメッセージに、または、TTYが存在しない場合、メッセージエンベロープ
Figure 0007083850000027
にリンクするために更新される。
この段階において、動作644、646、および648がそれぞれ終了した後、メッセージリスト
Figure 0007083850000028
の計算は、完了し、(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に関する値を含まないが、このパラメータは、メッセージエンベロープレベルにおける依存関係を指すからである。
Figure 0007083850000029
メッセージエンベロープ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」に設定されている。したがって、メッセージ
Figure 0007083850000030
および
Figure 0007083850000031
は、それらがNDCメッセージ生成および順序付けプロセス42によって生成され、それらのD_STATがSに更新されると、すぐに送信され得る。
Figure 0007083850000032
は、メッセージリスト
Figure 0007083850000033
内の最初のメッセージであるが、それは、送信される必要がないものとして計算され(例えば、このTTYメッセージがメッセージターゲットに対する機能的な影響を持たないため、または、メッセージターゲットがTTYメッセージに対して配信停止にされていることがわかっているためであり、例えば、さらなる背景のために参照により本明細書に組み込まれるEP2254046B1の段落[0032]および図7を参照されたい)、したがって、そのD_STATは、最終的にVとして更新される。次いで、メッセージ
Figure 0007083850000034
は、送信され、そのD_STATは、Sに更新される。メッセージ
Figure 0007083850000035
Figure 0007083850000036
、および
Figure 0007083850000037
が計算され、それらは、送信するためにメッセージキュー46aに入れられる準備ができている。
データベースレコードAAAAAAおよびBBBBBBへのさらなる変更によってトリガされると、テーブルIによるメッセージエンベロープおよびメッセージの処理がNDCメッセージ生成および順序付けプロセス42によって完了され、依存関係マップおよびメッセージテーブル45がちょうどコミットされたときに、データベースレコードAAAAAAのデータベース変更コミット指示2および10ならびにBBBBBBのデータベース変更コミット指示2が、NDCメッセージ生成および順序付けプロセス42によって受信される。メッセージキュー46aに渡されたメッセージは、まだターゲット49に送信されていない。
データベースレコードAAAAAAの変更コミット指示2および10とデータベースレコードBBBBBBの変更コミット指示2とを受信することに応じて、2つのさらなるメッセージリスト、すなわち、
Figure 0007083850000038
および
Figure 0007083850000039
が、NDCメッセージ生成および順序付けプロセス42によって変更コミット指示AAAAAA(2)に対して生成される。さらに、1つのメッセージリスト、すなわち、
Figure 0007083850000040
が変更コミット指示AAAAAA(10)に対して生成され、1つのメッセージリスト、
Figure 0007083850000041
が変更コミット指示BBBBBB(2)に対して生成される。テーブルIIは、これらのメッセージリストのすべてがNDCメッセージ生成および順序付けプロセス42によって処理された後の依存関係マップおよびメッセージテーブル45を示す。
Figure 0007083850000042
ソートされたリスト
Figure 0007083850000043
は、ID019、022、および023を有するテーブルエントリから導出可能な、メッセージ優先度テーブル44の優先度値定義に基づいて作成される。それらのメッセージエンベロープ
Figure 0007083850000044
は、ID017を有するテーブルエントリとして記憶される。2つのメッセージ
Figure 0007083850000045
および
Figure 0007083850000046
は、710および720におけるチェックならびに動作712および722(図9)によって引き起こされる、両方のメッセージを
Figure 0007083850000047
にリンクする同じ依存関係パラメータD_IDを有する。
メッセージエンベロープ
Figure 0007083850000048
およびソートされたリスト
Figure 0007083850000049
は、ID016、018、および021を有するテーブルエントリとして記憶される。
Figure 0007083850000050
は、図8におけるチェック642および646ならびに動作648によって出力されている
Figure 0007083850000051
の代わりに
Figure 0007083850000052
にリンクされた依存関係状態D_IDを有する。
Figure 0007083850000053
の依存関係状態D_IDは、図9における動作730において018として計算されるが、メッセージ状態D_STATは、チェック732および動作736(図9)によりVとして計算される。
メッセージエンベロープ
Figure 0007083850000054
およびメッセージリスト
Figure 0007083850000055
は、ID013、014、015、および020を有するテーブルエントリとして記憶される。メッセージエンベロープ
Figure 0007083850000056
およびメッセージリスト
Figure 0007083850000057
は、ID024~026を有するテーブルエントリとして記憶される。メッセージエンベロープ
Figure 0007083850000058
の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において、メッセージ
Figure 0007083850000059
に対して有効で正しい応答が受信されたと判定されたとき、812において、メッセージの依存関係状態D_STATは、状態S(送信済み)に更新される。
次に、
Figure 0007083850000060
がメッセージリスト
Figure 0007083850000061
内の最後のメッセージであるかどうかをチェックするために、動作814が呼び出される。そうである場合、動作816は、
Figure 0007083850000062
のメッセージエンベロープレベルの依存関係状態RD_STATを状態S(送信済み)に更新し、依存関係マップおよびメッセージテーブル45内に記憶し、動作812のD_STAT更新も記憶する。その後、現在のメッセージエンベロープのすべてのメッセージが送信されており、したがって、メッセージエンベロープ全体が完全に処理されているので、818において、メッセージエンベロープレベル依存関係チェーンP(i+1)の次のメッセージエンベロープの依存関係状態は、存在する場合、RD_STAT=N(依存関係なし)に設定される。加えて、さらに818において、依存関係マップおよびメッセージテーブル45に従ってD_IDが
Figure 0007083850000063
のIDに設定されたすべてのメッセージは、それらの依存関係状態D_STATをNに設定するように更新される。これらのメッセージはまた、818において、送信するためにメッセージキュー46aに入れられる。最後に、依存関係マップおよびメッセージテーブル45は、メッセージエンベロープレベルにおける依存関係チェーンにおける次のメッセージエンベロープ
Figure 0007083850000064
および次のメッセージリスト
Figure 0007083850000065
、すなわち、次のメッセージエンベロープのメッセージに対する最新の変更を記憶するために、822においてもう一度コミットされる。
現在のメッセージが814においてメッセージリストの最後のメッセージではないと判定された場合、動作820は、送信するために適格なメッセージを選択するために呼び出され、すなわち、D_IDが
Figure 0007083850000066
のIDに設定されたすべてのメッセージ(すなわち、ターゲットに正常に配信された現在のメッセージに依存するすべてのメッセージ)が、依存関係マップおよびメッセージテーブル45から選択され、それらの依存関係状態D_STATは、Nに設定され、これらのメッセージは、送信するためにメッセージキュー46aに入れられる。その後、動作822は、メッセージリスト
Figure 0007083850000067
および
Figure 0007083850000068
への最新の変更を記憶するために、依存関係マップおよびメッセージテーブル45をコミットするために呼び出される。
メッセージ送信状態機械46について、上記ですでに論じたテーブルIIを参照してさらに説明する。最初に、この時点における依存関係マップおよびメッセージテーブル45の状態を示すテーブルIIIを有する図11に示すように、依存関係マップは、
Figure 0007083850000069
Figure 0007083850000070
、および
Figure 0007083850000071
の正常な送信後に更新される。
メッセージリスト、すなわちメッセージエンベロープ
Figure 0007083850000072
内の最後のメッセージがメッセージターゲットに正常に送信されたとき、依存関係マップおよびメッセージテーブル45内のメッセージエンベロープテーブルエントリは、現在のメッセージエンベロープ
Figure 0007083850000073
に関するメッセージ送信プロセスを完了するために更新される。例えば、以下のテーブルエントリは、図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に設定されたメッセージエンベロープ
Figure 0007083850000074
に依存する次のエンベロープ
Figure 0007083850000075
で続行する。一般に、次のメッセージエンベロープ
Figure 0007083850000076
のRD_STATは、メッセージエンベロープ
Figure 0007083850000077
が依存するメッセージエンベロープ
Figure 0007083850000078
が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のこれらの更新に応じて、更新されたメッセージエンベロープの最初のメッセージ、すなわち、
Figure 0007083850000079
に対して依存関係を有するメッセージは、図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を有するメッセージ
Figure 0007083850000080
が、メッセージターゲットZZに送信されるべき依存関係チェーン内の唯一のメッセージであり(メッセージID=021もメッセージエンベロープID=016に属するが、無効状態(D_STAT=V)を有し、したがって、送信されない)、メッセージID=018が送信されているので、メッセージエンベロープレベルにおいて、ID=016を有するメッセージエンベロープ
Figure 0007083850000081
は、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 伝播された信号

Claims (13)

  1. 複数のメッセージターゲットを有する分散メッセージングシステムにおいてメッセージを処理するための方法であって、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第1の規格に従って動作し、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第2のレガシー規格に従って動作し、前記方法は、メッセージ処理エンジンによって実行され、前記方法は、
    複数のデータベースコミット指示を受信するステップであって、各データベースコミット指示はデータベースレコードの変更を示す、ステップと、
    前記複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、前記第1の規格に従って動作する通知されるべき各メッセージターゲットのためのメッセージエンベロープと、各メッセージエンベロープ内の少なくとも1つのメッセージとを生成するステップと、
    同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係を計算するステップであって、前記メッセージエンベロープ依存関係は、前記同じメッセージターゲットのための前記メッセージエンベロープの順序を定義する、ステップと、
    少なくとも前記それぞれのメッセージエンベロープの前記メッセージの規格と前記メッセージの機能とに基づいて、各メッセージエンベロープ内の前記メッセージ間のメッセージ依存関係を計算するステップであって、前記メッセージ依存関係は、各メッセージエンベロープ内の前記メッセージの順序を定義し、前記規格は、前記第1の規格または前記第2のレガシー規格である、ステップと、
    前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記それぞれのメッセージターゲットに前記メッセージを送信するステップと
    を含む、方法。
  2. 前記第1の規格に従って動作するデータベースシステムから前記複数のデータベースコミット指示のうちの第1のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットのためのメッセージエンベロープを生成し、各メッセージエンベロープ内の少なくとも1つのメッセージを生成するステップであって、
    前記第1の規格に従って動作する第1のメッセージターゲットに中継されるべき複数の相互依存する第1のメッセージを有する第1のメッセージエンベロープを生成することであって、前記複数の相互依存する第1のメッセージは、前記第1の規格に従って指定されることと、
    前記第2のレガシー規格に従って動作する第2のメッセージターゲットに中継されるべき1つの第2のメッセージを生成することであって、前記第2のメッセージは、前記第2のレガシー規格に従って指定されることと
    を含む、ステップと、
    前記第1のメッセージエンベロープと、前記第1のメッセージターゲットに対してすでに保留中の他のメッセージエンベロープとの間のメッセージエンベロープ依存関係を計算するステップであって、前記メッセージエンベロープ依存関係は、前記第1のメッセージターゲットに関する前記メッセージエンベロープの前記順序を定義する、ステップと、
    少なくとも前記第1のメッセージターゲットと前記第1のメッセージの前記機能とに基づいて、前記第1のメッセージエンベロープの前記第1のメッセージ間の前記メッセージ依存関係を計算するステップであって、前記メッセージ依存関係は、各メッセージエンベロープ内の前記メッセージの前記順序を定義する、ステップと、
    前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記第1のメッセージを前記第1のメッセージターゲットに送信するステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記第2の規格に従って動作するレガシーデータベースシステムから、前記複数のデータベースコミット指示のうちの第2のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットのための第3のメッセージを生成するステップであって、前記第3のメッセージは、前記第2のレガシー規格に準拠するメッセージであり、
    前記第3のメッセージの前記メッセージターゲットに送信されることが保留されている他のメッセージがないと判定することに応じて、前記第3のメッセージに関するメッセージ依存関係を計算することなく前記第3のメッセージを送信すること、または、
    前記第3のメッセージの前記メッセージターゲットに送信されるために少なくとも1つの他のメッセージが保留中であると判定することに応じて、少なくとも前記メッセージターゲットと前記第3のメッセージの前記機能とに基づいて、前記第3のメッセージの前記メッセージ依存関係を計算することであって、前記メッセージ依存関係は、前記第3のメッセージの前記メッセージターゲットに関する前記メッセージの前記順序を定義する、ことと、前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記第3のメッセージの前記メッセージターゲットに前記少なくとも1つの他のメッセージと前記第3のメッセージとを送信することと
    を行う、ステップをさらに含む、請求項2に記載の方法。
  4. 各メッセージエンベロープについて、少なくとも前記メッセージの前記規格とメッセージタイプとに応じて、前記複数の相互依存する第1のメッセージの各々に所与の優先度値を割り当てるステップと、
    前記割り当てられた優先度値に基づいて、各メッセージエンベロープについて前記メッセージ間の前記メッセージ依存関係を計算するステップと
    を含む、請求項2または3に記載の方法。
  5. メッセージが前記メッセージの前記メッセージエンベロープ内のいかなる他のメッセージから独立しており、前記メッセージの前記メッセージエンベロープがいかなる他のメッセージエンベロープから独立していると判定することに応じて、前記メッセージを送信するステップを含む、請求項1から4のいずれか一項に記載の方法。
  6. 送信された前記メッセージの前記メッセージ依存関係と、前記メッセージの前記メッセージエンベロープ内の前記メッセージの前記順序において、もしあれば、次のメッセージの前記メッセージ依存関係とを更新するステップをさらに含む、請求項5に記載の方法。
  7. 前記送信されたメッセージが前記送信されたメッセージの前記メッセージエンベロープ内のメッセージの前記順序において最後のメッセージであったと判定することに応じて、前記送信されたメッセージの前記メッセージエンベロープの前記メッセージエンベロープ依存関係を更新するステップと、前記メッセージエンベロープの順序において、もしあれば、次のメッセージエンベロープの前記メッセージエンベロープ依存関係を更新するステップとをさらに含む、請求項5または6に記載の方法。
  8. 前記第1の規格が、国際航空輸送協会の新流通規格プログラムに準拠している、請求項1から5のいずれか一項に記載の方法。
  9. 複数のメッセージターゲットを有する分散メッセージングシステムにおいてメッセージを処理するためのメッセージ処理エンジンであって、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットが、第1の規格に従って動作し、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットが、第2のレガシー規格に従って動作し、前記メッセージ処理エンジンが、少なくとも1つのプロセッサと、プログラム命令のセットを記憶したメモリと、を備え、前記プログラム命令のセットが前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、
    複数のデータベースコミット指示を受信することであって、各データベースコミット指示はデータベースレコードの変更を示す、ことと、
    前記複数のデータベースコミット指示のうちのデータベースコミット指示を受信することに応じて、前記第1の規格に従って動作する通知されるべき各メッセージターゲットのためのメッセージエンベロープと、各メッセージエンベロープ内の少なくとも1つのメッセージとを生成することと、
    同じメッセージターゲットのために生成されたメッセージエンベロープ間のメッセージエンベロープ依存関係を計算することであって、前記メッセージエンベロープ依存関係が、前記同じメッセージターゲットのための前記メッセージエンベロープの順序を定義する、ことと、
    少なくとも前記それぞれのメッセージエンベロープの前記メッセージの規格と前記メッセージの機能とに基づいて、各メッセージエンベロープ内の前記メッセージ間のメッセージ依存関係を計算することであって、前記メッセージ依存関係が、各メッセージエンベロープ内の前記メッセージの順序を定義し、前記規格は、前記第1の規格または前記第2のレガシー規格である、ことと、
    前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記それぞれのメッセージターゲットに前記メッセージを送信することと
    を行わせる、メッセージ処理エンジン。
  10. 前記第1の規格に従って動作するデータベースから前記複数のデータベースコミット指示のうちの第1のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットに対するメッセージエンベロープを生成し、各メッセージエンベロープ内の少なくとも1つのメッセージを生成することであって、
    前記第1の規格に従って動作する第1のメッセージターゲットに中継されるべき複数の相互依存する第1のメッセージを有する第1のメッセージエンベロープを生成することであって、前記複数の相互依存する第1のメッセージは、前記第1の規格に従って指定されることと、
    前記第2のレガシー規格に従って動作する第2のメッセージターゲットに中継されるべき1つの第2のメッセージを生成することであって、前記第2のメッセージは、前記第2のレガシー規格に従って指定されることと
    を含む、ことと、
    前記第1のメッセージエンベロープと、前記第1のメッセージターゲットに対してすでに保留中の他のメッセージエンベロープとの間のメッセージエンベロープ依存関係を計算することであって、前記メッセージエンベロープ依存関係は、前記第1のメッセージターゲットに関する前記メッセージエンベロープの前記順序を定義する、ことと、
    前記第1のメッセージターゲットと前記第1のメッセージの前記機能とに基づいて、前記第1のメッセージエンベロープの前記第1のメッセージ間の前記メッセージ依存関係を計算することであって、前記メッセージ依存関係は、各メッセージエンベロープ内の前記メッセージの前記順序を定義する、ことと、
    前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで前記第1のメッセージを前記第1のメッセージターゲットに送信することと
    を行うようにさらに構成された、請求項9に記載のメッセージ処理エンジン。
  11. 前記第2のレガシー規格に従って動作するレガシーデータベースシステムから、前記複数のデータベースコミット指示のうちの第2のデータベースコミット指示を受信することに応じて、通知されるべき各メッセージターゲットに対する第3のメッセージを生成することであって、前記第3のメッセージは、前記第2のレガシー規格に準拠するメッセージであり、
    前記第3のメッセージの前記メッセージターゲットに送信されることが保留されている他のメッセージがないと判定することに応じて、前記第3のメッセージに関するメッセージ依存関係を計算することなく前記第3のメッセージを送信すること、または、
    前記第3のメッセージの前記メッセージターゲットに送信されるために少なくとも1つの他のメッセージが保留中であると判定することに応じて、少なくとも前記メッセージターゲットと前記第3のメッセージの前記機能とに基づいて、前記第3のメッセージの前記メッセージ依存関係を計算することであって、前記メッセージ依存関係は、前記第3のメッセージの前記メッセージターゲットに関する前記メッセージの前記順序を定義する、ことと、前記メッセージエンベロープ依存関係と前記メッセージ依存関係とに基づくシーケンスで、前記第3のメッセージの前記メッセージターゲットに前記少なくとも1つの他のメッセージと前記第3のメッセージとを送信することと
    を行うようにさらに構成された、請求項10に記載のメッセージ処理エンジン。
  12. 請求項4から8のいずれか一項に記載の方法を実行するようにさらに構成された、請求項9から11のいずれか一項に記載のメッセージ処理エンジン。
  13. 複数のメッセージターゲットを有する分散メッセージングシステムにおいてメッセージを処理するためのコンピュータプログラムであって、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第1の規格に従って動作し、前記複数のメッセージターゲットのうちの少なくとも1つのメッセージターゲットは第2のレガシー規格に従って動作し、前記コンピュータプログラムは、請求項1から8のいずれか一項に記載の方法を実行するように構成された、コンピュータプログラム。
JP2019567541A 2017-06-08 2018-06-08 多規格メッセージ処理 Active JP7083850B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/617,180 2017-06-08
US15/617,180 US10284515B2 (en) 2017-06-08 2017-06-08 Multi-standard message processing
FR1755105A FR3067490B1 (fr) 2017-06-08 2017-06-08 TRAITEMENT DE MESSAGES MULTlNORMES
FR1755105 2017-06-08
PCT/EP2018/065192 WO2018224659A1 (en) 2017-06-08 2018-06-08 Multi-standard message processing

Publications (3)

Publication Number Publication Date
JP2020524329A JP2020524329A (ja) 2020-08-13
JP2020524329A5 JP2020524329A5 (ja) 2021-07-26
JP7083850B2 true JP7083850B2 (ja) 2022-06-13

Family

ID=62486604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019567541A Active JP7083850B2 (ja) 2017-06-08 2018-06-08 多規格メッセージ処理

Country Status (7)

Country Link
EP (1) EP3513292B1 (ja)
JP (1) JP7083850B2 (ja)
KR (1) KR102321860B1 (ja)
CN (1) CN110709820B (ja)
AU (1) AU2018280855B2 (ja)
ES (1) ES2898755T3 (ja)
WO (1) WO2018224659A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112260958B (zh) * 2020-10-20 2023-08-18 中国民航信息网络股份有限公司 一种请求报文响应方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006190265A (ja) 2004-12-30 2006-07-20 Microsoft Corp サーバー待ち行列システムおよび方法
JP2012527806A (ja) 2009-05-18 2012-11-08 アマデウス エス.エイ.エス メッセージの順序を管理する方法およびシステム
JP2016028317A (ja) 2014-05-30 2016-02-25 アマデウス エス.アー.エス.Amadeus S.A.S. コンテンツ交換方法およびシステム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020077134A1 (en) * 2000-12-20 2002-06-20 Nortel Networks Limited World Trade Center Of Montreal Dual protocol GPRS mobile terminal and method therefor
GB0129672D0 (en) 2001-12-12 2002-01-30 Ibm Method and system for preserving message order when parallel processing messages
US20030158883A1 (en) * 2002-02-04 2003-08-21 Drudis Antoni N. Message processing
US8156505B2 (en) 2005-01-27 2012-04-10 Infosys Limited Protocol processing including converting messages between SOAP and application specific formats
US7680793B2 (en) 2005-10-07 2010-03-16 Oracle International Corporation Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers
GB0524021D0 (en) 2005-11-25 2006-01-04 Ibm A system for preserving message order
US8200765B2 (en) 2009-01-12 2012-06-12 International Business Machines Corporation Preserving message order using a message ordering manager
US8495656B2 (en) 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages
WO2014019701A1 (en) * 2012-08-02 2014-02-06 Amadeus S.A.S. Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
ES2642669T3 (es) 2012-08-02 2017-11-17 Amadeus S.A.S. Método, sistema y productos de programa informático para secuenciar mensajes asíncronos en un entorno distribuido y paralelo
KR101416280B1 (ko) 2013-01-15 2014-07-08 주식회사 엘지씨엔에스 이벤트 처리 시스템 및 방법
EP2811437A1 (en) 2013-06-07 2014-12-10 Accenture Global Services Limited Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application
KR102311613B1 (ko) * 2015-03-23 2021-10-13 삼성전자주식회사 통합 메시지 발신 방법 및 그 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006190265A (ja) 2004-12-30 2006-07-20 Microsoft Corp サーバー待ち行列システムおよび方法
JP2012527806A (ja) 2009-05-18 2012-11-08 アマデウス エス.エイ.エス メッセージの順序を管理する方法およびシステム
JP2016028317A (ja) 2014-05-30 2016-02-25 アマデウス エス.アー.エス.Amadeus S.A.S. コンテンツ交換方法およびシステム

Also Published As

Publication number Publication date
KR20200012901A (ko) 2020-02-05
CN110709820A (zh) 2020-01-17
KR102321860B1 (ko) 2021-11-05
WO2018224659A1 (en) 2018-12-13
ES2898755T3 (es) 2022-03-08
EP3513292B1 (en) 2021-10-20
JP2020524329A (ja) 2020-08-13
CN110709820B (zh) 2023-08-25
EP3513292A1 (en) 2019-07-24
AU2018280855A1 (en) 2019-12-05
AU2018280855B2 (en) 2021-09-09

Similar Documents

Publication Publication Date Title
US10728205B2 (en) Multi-standard message processing
US7991847B2 (en) Method and system for managing the order of messages
US20130067024A1 (en) Distributing multi-source push notifications to multiple targets
EP2335153B1 (en) Queue manager and method of managing queues in an asynchronous messaging system
JP3803707B2 (ja) フレームワークシステム
JP6198825B2 (ja) 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品
CA2843284C (en) Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application
JP3944231B2 (ja) フレームワークシステム
JP6067714B2 (ja) イベントデータを取得するスケールアウトシステム
JP7083850B2 (ja) 多規格メッセージ処理
CN110457380A (zh) 一种数据存储系统
US20050210136A1 (en) Method and system for managing programs for Web service system
JPH06290098A (ja) 分散データベース処理方法
JP3944229B2 (ja) フレームワークシステム
FR3067490A1 (fr) TRAITEMENT DE MESSAGES MULTlNORMES
JP2006155660A (ja) フレームワークシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210604

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220601

R150 Certificate of patent or registration of utility model

Ref document number: 7083850

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150