JP5065259B2 - 企業情報システムとクライアントとの間の通信に役立つ装置、システム、方法、およびコンピュータプログラム(企業情報システムとクライアントとの間の通信に役立つ装置、システム、および方法) - Google Patents

企業情報システムとクライアントとの間の通信に役立つ装置、システム、方法、およびコンピュータプログラム(企業情報システムとクライアントとの間の通信に役立つ装置、システム、および方法) Download PDF

Info

Publication number
JP5065259B2
JP5065259B2 JP2008515173A JP2008515173A JP5065259B2 JP 5065259 B2 JP5065259 B2 JP 5065259B2 JP 2008515173 A JP2008515173 A JP 2008515173A JP 2008515173 A JP2008515173 A JP 2008515173A JP 5065259 B2 JP5065259 B2 JP 5065259B2
Authority
JP
Japan
Prior art keywords
event
client
clients
eis
delivery
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
JP2008515173A
Other languages
English (en)
Other versions
JP2008546110A (ja
JP2008546110A5 (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008546110A publication Critical patent/JP2008546110A/ja
Publication of JP2008546110A5 publication Critical patent/JP2008546110A5/ja
Application granted granted Critical
Publication of JP5065259B2 publication Critical patent/JP5065259B2/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/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、企業情報システム(EIS)とクライアントとの間の通信に役立つ装置、システム、および方法に関し、特に、複数のクライアントへのEISイベントの配信を保証する装置、システム、および方法に関する。
今日のビジネスの世界では、膨大な量の情報が生成されている。この情報はビジネスの成功に不可欠であり、ビジネスの最も価値ある商品であり得る。情報は、ビジネスのオペレーションユニットにより処理、記憶、更新、および共有されなければならない。例えば、製造業者は、営業所、サポートスタッフ、供給業者、配給業者、および他の各種エンティティと情報を共有できなければならない。その結果、多くのビジネスは、中央に配置でき、ビジネスに関連する誰もがアクセス可能な情報ストレージシステムを利用している。このような1つの情報システムが企業情報システム(EIS:Enterprise Information System)である。ビジネスは、1つまたは複数のEISにアクセスするいくつかのサブエンティティまたは「クライアント」を有し得る。
多くの場合、処理ロジックを含むソフトウェアが、EISとクライアントシステムとの間の通信を管理するために利用される。このソフトウェアまたはコードは一般にアダプタに常駐し、EIS間の接続構築を支援する。アダプタは、EISとの双方向通信を可能にする。これにより、クライアントはデータの照会または変更等のEIS内部でのオペレーションを実行することができる。こういったオペレーションはアウトバウンド通信と呼ばれることもある。アダプタは、クライアントがEISからデータを受信できるように、またはEIS内の変更に気づくことができるようにもする。
通常、インバウンド通信は、EIS内部で作成または変更されたビジネスデータについての情報を含む。EIS内での情報の作成、変更、更新、または削除はEISイベントと呼ばれる。多くの場合、サブエンティティまたはクライアントのすべてが同じEISイベントを受信することがビジネスにとって重要である。ビジネスは、各部門に矛盾したデータセットを使用してオペレーションを行って欲しくない。ビジネスは、クライアントシステム間でデータを同期させたい。ビジネスはまた、データの整合性を保つために、EISイベントの複数のコピーをクライアントシステムに送信したくない。データに複数のコピーがあると、混乱およびデータの信頼性の欠如を招く恐れがある。さらに、余分なデータがスペースを占有し、多くの場合、このコストは高くつく。
大半のアダプタの1つの問題は、クライアントへのイベントの配信を保証しないことである。例えば、メッセージベースシステム等のパブリッシャ/サブスクライバシステムでは、情報がパブリッシャにより提供され、サブスクライバはその情報にアクセスすることができる。しかし、サブスクライバクライアントがオフラインの場合、または他の理由で応答しない場合、クライアントサブスクライバはその更新を見逃す。大半のパブリッシャプログラムは見逃された情報を応答していないクライアントに後に提供する機能を有していない。大半のパブリッシャプログラムは、サブスクライバが更新を見逃したことを知りさえもしない。
いくつかのアダプタに伴う別の問題は、クライアントが所与のイベントの唯一のコピーの受信を保証しないことである。こういったアダプタは、特定のデータを特定の時間にブロードキャストまたは転送するようにプログラムされ、クライアントまたはエンドユニットがそのイベントをすでに受信しているか否かを考慮しない。多くのアダプタに伴うさらに別の問題は、イベントを複数のクライアントに送信する間に任意の個々のクライアントの状態を考慮しないことである。このため、マルチクライアントシステム内のクライアントは、データ転送に関する限り、その他のクライアントとの同期を失う可能性が高い。
多くのアダプタに伴う別の問題は、イベント処理中に予期せぬ問題が発生した場合にイベントが失われるのを防ぐためのリカバリプロトコルを有さないことである。多くの現在のアダプタに伴うさらに別の問題は、クライアントを動的に追加または削除できないことである。クライアントが応答しなくなる(オフラインになるか、または他の理由により利用できなくなる)と、アダプタによってはもはやイベントをそういったクライアントに送信することができなくなるものがある。
上記考察から、クライアントへのEISイベントの配信を保証する、EISと1つまたは複数のクライアントとの間の通信に役立つ装置、システム、および方法を提供することが当分野における進歩であることが明らかなはずである。各クライアントに1度だけイベントを送信するような装置、システム、および方法を提供することが当分野におけるさらなる進歩である。1つまたは複数のクライアントが利用できなくなった後であってもイベントを追跡するような装置、システム、および方法を提供することが当分野におけるさらなる進歩である。このような装置、システム、および方法を本明細書において開示し、特許請求する。
本発明は、当分野の現状に応えて、特に企業情報システム(EIS)とクライアントとの間で通信する現在利用可能な装置、システム、および方法によりまだ完全には解決されていない当分野における問題および必要性に応えて開発された。したがって、本発明は、当分野での上記欠点の多くまたはすべてを解消するような装置、システム、および方法を提供するために開発された。
EISと1つまたは複数のクライアントとの間の通信に役立つ装置に、イベントを求めてEISをポーリングするのに必要なステップ、イベントをクライアントに配信する準備としてイベントをステージングするのに必要なステップ、およびイベントが配信されたか否かを確認するのに必要なステップを機能的に実行するように構成される複数のモジュールを含む論理装置を提供することができる。説明する実施形態でのこれらモジュールは、ポーリングモジュール、ステージングモジュール、配信モジュール、および確認モジュールを含む。
一実施形態では、アダプタは、イベントがクライアントに送信された後、そのイベントをEISから除去するのに役立つ除去モジュールも含む。装置は、EISイベントの受信に利用できなくなった、永続サブスクライバとして指定されたクライアントに対してイベントを保持するようにさらに構成される。一実施形態では、装置は、利用できなくなったクライアントが再び利用できるようになったときに保持されていたイベントを再配信するように構成される。
装置は、トランザクションサービスを使用して、イベントを1つまたは複数のクライアントに配信し、イベントが配信されたことを確認することができる。一実施形態では、トランザクションサービスは、XAに準拠して配信されるトランザクションの一部としてイベントを配信する。
装置は、EIS、1つまたは複数のクライアント、およびデータソースを含み、イベントのステージングおよび配信にむけてのイベントの準備に役立つシステムで具現することもできる。一実施形態では、データソースはXA準拠データベースである。システムは装置によるトランザクションサービスの使用に役立つXAトランザクションマネージャを含むこともできる。一実施形態では、クライアントは、1つまたは複数のサブシステム、計算装置、またはエンドポイントを含むことができる。クライアントは装置に直接接続することができ、EISイベントはまずクライアントに配信し、次にクライアントサブシステムに渡すことができる。本開示では、クライアントおよびそのサブシステム、計算装置、エンドポイント、または他の「ダウンライン」装置は、個々に、また集合的に「クライアント」と呼ばれる。
EISと1つまたは複数のクライアントとの間の通信に役立つ本発明の方法が提示される。開示する実施形態での方法は、実質的に、上記装置およびシステムの動作に関して上に提示した機能の実行に必要なステップを含む。一実施形態では、方法は、イベントを求めてEISをポーリングするステップ、クライアントへの配信準備としてイベントをステージングするステップ、イベントを配信するステップ、およびイベントが配信されたか否かを確認するステップを含む。本明細書において開示する方法ステップは、コンピュータプログラムのコンピュータ可読コードにより実行される動作として具現することもできる。
EISを顧客の1つまたは複数のクライアントシステムと統合する方法も開示される。この方法は、統合要件セットを受信するステップ、EISおよび複数のソフトウェアクライアントを接続するように構成された統合アダプタを構築するステップ、統合アダプタを顧客に配信するステップ、および統合アダプタをセットアップするステップを含むことができる。一実施形態では、統合アダプタは上記装置である。統合アダプタをセットアップするステップは、各クライアントをEISからのイベント受信に登録するステップを含むことができる。アダプタをセットアップするステップは、イベントを求めてEISをポーリングする頻度および配信前にステージングするイベントの数量を判断するステップを含むこともできる。
クライアントへのイベントの配信が一度だけであることを保証する、企業情報システム(EIS)を複数のソフトウェアクライアントに統合するように構成されるコンピューティングインフラを導入する方法も開示される。一実施形態では、この方法は、複数の拡張可能モジュールを有するソフトウェアツールキットを開発するステップ、トランザクションサービスをソフトウェアツールキットに統合するステップ、およびソフトウェアツールキットを発行するステップを含む。拡張可能モジュールは上記装置の拡張可能モジュールを含むことができる。一実施形態では、モジュールは、イベントを求めて少なくとも1つのEISをポーリングし、少なくとも1つのクライアントへの配信に向けてイベントをステージングし、イベントを少なくとも1つのクライアントに配信し、イベントの1つだけのインスタンスが各クライアントに配信されたことを確認するように構成される。
本明細書全体を通しての特徴、利点、または同様の言葉への言及は、本発明を使用して実現できるその特徴および利点のすべてが、本発明の任意の一実施形態にあるべきである、またはあることを意味するものではない。むしろ、特徴および利点に言及する言葉は、一実施形態に関連して説明される特定の特徴、利点、または特徴が本発明の少なくとも1つの実施形態に含まれることを意味するものと理解される。したがって、本明細書全体を通しての特徴および利点の考察ならびに同様の言葉は、同じ実施形態を指し得るが、そうである必要はない。
さらに、説明する本発明の特徴、利点、および特徴は、1つまたは複数の実施形態において任意の適した様式で組み合わせることができる。本発明が特定の実施形態の特定の特徴または利点のうちの1つまたは複数なしで実施可能なことを当業者は認めよう。場合によっては、特定の実施形態において、本発明のすべての実施形態に存在しなくてもよい追加の特徴および利点を認めることができる。
本発明のこういった特徴および利点は、以下の説明および添付の特許請求の範囲からより完全に明らかになるか、または、以下説明する本発明の実施により学習することができる。
本発明の好ましい実施形態を、添付図面を参照して単に例として以下に説明する。
本明細書において説明する機能ユニットの多くは、実施独立性を特に強調するためにモジュールと記されている。例えば、モジュールは、カスタムVLSI回路またはゲートアレイを含むハードウェア回路、論理チップ、トランジスタ等の市販の半導体、または他の離散構成要素として実施することができる。モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブル論理装置等のプログラマブルハードウェア装置で実施することもできる。
モジュールは、各種のプロセッサにより実行されるソフトウェアで実施することもできる。例えば、実行可能コードの識別されているモジュールは、例えば、オブジェクト、プロシージャ、または関数として編成できるコンピュータ命令の1つまたは複数の物理的または論理的なブロックを含む。それにも関わらず、識別されたモジュールの実行可能コード(executable)は物理的に共に配置される必要はなく、論理的に統合されるとモジュールを構成し、モジュールの規定の目的を実現する、異なる場所に記憶された異なる命令を含むことができる。
実際に、実行可能コードのモジュールは1つの命令であってもよく、または多くの命令であってもよく、さらにはいくつかの異なるコードセグメント、異なるプログラム、およびいくつかのメモリ装置に分散してもよい。同様に、本明細書ではオペレーションデータはモジュール内で識別して示すことができ、任意の適した形態にて具現することができ、任意の適した種類のデータ構造内に編成することができる。オペレーションデータは、1つのデータセットとして集められてもよく、または異なる記憶装置を含む異なるロケーションに分散し、かつ少なくとも部分的に、システムもしくはネットワーク上の単なる電気信号として存在してもよい。
本明細書全体を通しての「一実施形態」、「実施形態」または同様の言葉への言及は、その実施形態に関係して説明される特定の特徴、構造、または特性が本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通しての語句「一実施形態では」、「実施形態では」、および同様の言葉の出現は、すべて同じ実施形態を指し得るが、必ずしもそうである必要はない。
本発明の実施形態は、完全なハードウェア実施形態、完全なソフトウェア実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態の形態をとることができる。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコード等を含むがこれらに限定されないソフトウェアで実施される。
さらに、本発明の実施形態は、コンピュータまたは任意の命令実行システムにより使用されるか、またはこれと関係して使用されるコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータプログラムの形態をとることができる。この説明では、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスにより使用されるか、またはこれと関係して使用されるプログラムの収容、記憶、通信、伝搬、または搬送を行うことができる任意の装置であることができる。
媒体は、電気、磁気、光学、電磁、赤外線、または半導体のシステム(または装置もしくはデバイス)あるいは伝搬媒体であることができる。コンピュータ可読媒体の例としては、半導体または固体状態メモリ、磁気テープ、リムーバブルコンピュータディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、剛体磁気ディスク、および光ディスクが挙げられる。光ディスクの現在の例としては、コンパクトディスク−読み取り専用メモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)、およびDVDが挙げられる。
プログラムコードの記憶または実行、あるいはこれら両方に適したデータ処理システムは、システムバスを通してメモリ要素に直接または間接的に結合された少なくとも1つのプロセッサを含む。メモリ要素は、プログラムコードの実際の実行中に利用されるローカルメモリ、大容量記憶装置、および実行中にコードを大容量記憶装置から検索しなければならない回数を低減するために少なくともいくつかのプログラムコードの一時的な記憶を提供するキャッシュメモリを含むことができる。
入出力またはI/O装置(キーボード、ディスプレイ、ポインティングデバイス等を含むが、これらに限定されない)は、直接、または介在するI/Oコントローラ通してシステムに結合することができる。ネットワークアダプタもシステムに結合して、データ処理システムを、介在する私設ネットワークまたは公衆ネットワークを通して他のデータ処理システムまたは遠隔プリンタまたは記憶装置に結合できるようにする。モデム、ケーブルモデム、およびイーサネット(登録商標)カードが、現在利用可能な種類のネットワークアダプタのほんの数例である。
図1は、本発明の好ましい実施形態によるシステム100を示す。システム100は、企業情報システム(EIS)102および1つまたは複数のクライアント104を含む。装置またはアダプタ106はEIS102およびクライアント104と通信して、EIS102とクライアント104との間での情報の伝送に役立つ。
アダプタ106は、トランザクションサービス110を含むJ2EEコネクタアーキテクチャコンテナ108内で動作することができる。J2EEコネクタアーキテクチャは、アダプタ106がEIS102と対話できるようにする。一実施形態では、J2EEコネクタアーキテクチャは、EIS102とアダプタ106との関係を支配するインタフェースを定義する。このインタフェースは、接続、トランザクション、およびセキュリティの管理に関連するものとしてアダプタ106とEIS102との対話を判断する。
EIS102は、メインフレームトランザクション処理システム、企業リソース計画システム、レガシー非Java(登録商標)アプリケーション等であることができる。一実施形態では、EIS102はデータベース管理システムである。EIS102は、アダプタ106とインタフェースするように構成される。一実施形態では、インタフェースはJ2EEコネクタアーキテクチャコントローラ108と通信できるようにJava(登録商標)コードで書かれる。
EIS102において変更が発生した場合、アダプタ106はその変更を各クライアント104にブロードキャストまたは通信する。本明細書では、このような変更をイベント112と呼ぶ。クライアント104へのイベント112のブロードキャストはインバウンドイベントとも呼ばれることが当業者に理解されよう。イベント112は、データ変更、エラーメッセージ、タイムスタンプ変更、ロケーション変更、更新等を含むがこれらに限定されない、EISに含まれる任意の情報であることができる。EISがデータベースである一実施形態では、イベント112は、データベース変更、テーブル行変更、顧客アドレス変更等であることができる。別の実施形態では、イベント112は、顧客アドレス変更、顧客ID変更であることができる。イベント112は、EIS102とクライアント104との間で通信する必要がある任意の種類の情報であることができる。イベント112は、EIS内の永続記憶装置に配置することができる。
一実施形態では、イベント112は構造化され、クライアントによる使用に向けて準備される。本開示では、任意の様式でのクライアント104によるイベント112の使用をイベントの消費と呼ぶことがある。上述したように、イベント112の最終的な消費は、クライアント、クライアントのサブシステム、計算装置、エンドポイント、または他の「ダウンライン」装置によるものであることができる。
アダプタ106は、XAデータソース114とも通信する。アダプタ106は、XAデータソース114内のステージングテーブル116を利用することができる。一実施形態では、ステージングテーブル116は、XA準拠のデータベースであり、トランザクションサービス110と通信することができる。一実施形態では、ステージングテーブル116は、市販の第三者データベース管理ソフトウェア内のテーブルである。
イベント112がEIS102内で検出されると、アダプタ106は、利用可能な各クライアント104のステージングテーブル116にイベント112へのリファレンス118を書き込む。本開示では、クライアントは、応答している、オンラインである、アクティブである、リッスンしている、また受信したイベントに適宜機能している場合に「利用可能」である。リファレンス118は、イベントID119およびエンドポイントID121を含む。リファレンス118a〜118c内のイベントID119a〜119cは、1つのイベント112への各リファレンス118内で同じであることができる。しかし、クライアントID121a〜121cは、各クライアントまたはクライアントエンドポイントに固有である。上述したように、クライアントリソースは、追加のリソース、サブクライアント、サブシステム等を有することができる。各リファレンス118は特定のエンドポイントIDを含む。各クライアントはイベント112を必要とするサブシステムを有し得るが、プライマリクライアント(またはエンドポイント)104aのみがステージングテーブル116内で参照される。クライアント121aがこのようなサブシステム120、122を含む場合、クライアント104aはこれらサブシステムへのイベントのルーティングを担当する。
イベント112のその他の識別特徴がリファレンス118の一部であってもよいことが当業者に理解されよう。例えば、イベントの一部またはすべては、ステージングテーブル116内にリファレンス118として記憶することができる。さらに、リファレンス118はタイムスタンプまたは他の情報を含むこともできる。
次に、ステージングテーブル116内の各イベント112が、トランザクションサービス110により対応するリッスン中のクライアント104に配信される。一実施形態では、アダプタ106は、トランザクションサービス110の協力を得て、J2EEアプリケーションサーバにより制御される一意のトランザクションの一部としてイベント112を対応するクライアント104に配信する。各クライアント104a、104b、および104c、またはクライアントラインは、それぞれのトランザクションを受信する。
トランザクションサービス110により生成されるトランザクションは、すべてのアクションが実行されるか、またはまったく実行されないかのいずれかである1つの作業論理単位として実行される一連のアクションである。これらトランザクションは「論理」または「単純」トランザクションと呼ばれることもあることが当業者に理解されよう。一実施形態では、トランザクションは原子動作である。原子動作が、1つのステップで行われ、中断できない動作であることが当業者に理解されよう。トランザクション中にクライアント104内で行われた変更は、暫定的である。変更を永久的にするために、トランザクションは変更を確定する「コミット」動作で終わる。
任意の変更をコミットすることができない場合、トランザクションは「ロールバック」し、トランザクションが行われなかったかのように変更をすべて取り消す。アクションを実行中の任意の1つのクライアント104内のコードが、コミットしないと判断した場合、またはコミットを首尾良く行うことができない場合、クライアント104はトランザクションをロールバックして、その特定のクライアント104のアクションを取り消さなければならない。アプリケーションがトランザクションの最中にクラッシュした場合、再開時に、トランザクションリカバリプロセスがオープントランザクションをロールバックする。書き込みトランザクションでは、すべての変更をすべてコミットするか、またはすべてロールバックしなければならない。読み出しトランザクションでは、コミットする変更はないが、すべての読み取りが完了するまで、読み取り中のデータが変更されないようにする。
一実施形態では、トランザクションサービス110は、イベント112を分散トランザクションの一部として配信する。分散トランザクションは、個々の各クライアント104のサブシステムまたは「ダウンライン」システムを考慮している。例えば、クライアント104aは2つ以上の独立したトランザクションリソースクライアントA’120およびクライアントA’’122を有し得る。これらは、例えば、2つの別個のデータベースを含み得る。トランザクションを首尾良くコミットするには、特定のクライアント104aの個々のリソース120、122のすべてが首尾良くコミットしなければならない。クライアント104aのダウンラインシステムクライアントA’120、クライアントA’’122のいずれかへのイベント112の配信が成功しない場合、トランザクションをすべてのリソースクライアントA’120、クライアントA’’122のすべてでロールバックしなければならない。
一実施形態では、トランザクションサービス110は、「2フェーズコミット」を利用して、イベント112をクライアント104に配信する。2フェーズコミットとは、分散トランザクションを2ステップでコミットする方法である。第1のステップにおいて、各リソース104、120、および122が、コミットの準備ができたか否かについて投票する。例えば、クライアント104aに関連するリソースの場合、クライアントA102、クライアントA’120、およびクライアントA’’122のグループが、コミットする準備ができたか否かを判断する。ステップ2において、すべてのリソース102、120、および122の準備ができた場合、一度にすべてコミットする。グループコミット後、対応するリファレンス118aがステージングテーブル116から削除され、クライアント102aへのイベント112の配信をもはやロールバックすることはできない。2フェーズコミットにより、トランザクションコミット中にシステムの部分がクラッシュした場合であっても、分散トランザクションを常にコミットできるか、または常にロールバックできることが保証されることが当業者に理解されよう。各クライアント104a、104b、および104cはそれぞれのトランザクションを受信するため、トランザクションサービス110が、クライアントA’120がイベント112を受信しなかったと判断した場合、ステージングテーブル115内でのイベント112配信のロールバックは、イベント112のクライアントB104bおよびクライアントC104cへの配信に影響しない。したがって、クライアントBおよびC104b、104cは、クラッシュがクライアントAライン内で発生した場合であってもイベント112を利用または消費することができる。
一実施形態では、トランザクションサービス110は、XA仕様に合ったトランザクションでイベント112をクライアント104に配信する。XA仕様は、オープングループにより定められる分散トランザクション処理(DTP:Distributed transaction processing)から利用可能である。
一実施形態では,XA仕様は、アダプタ106がトランザクションサービス110をどのように使用して、複数のリソース104、120、および122にわたる分散トランザクションを調整するかを規定する。一実施形態では、アダプタ106は、XA分散トランザクションを使用してEIS102と1つまたは複数のクライアント104との間でのイベントの配信を促進する。
これより図2を参照して、本発明の好ましい実施形態による装置またはアダプタ106を示す。アダプタ106は、イベントストア202、イベントマネージャ204、およびイベント分散モジュール206を含む。イベントマネージャ204は、イベントマネージャ204の制御を実行するコントローラ208を含むことができる。イベントマネージャ204は、イベント112を求めてのEIS102の一定間隔でのポーリングに役立つタイマ210を含むこともできる。イベントマネージャ204は、トランザクションサービス110とインタフェースするためのトランザクションマネージャ212を含むこともできる。
イベントストア202は、アダプタ106とEIS102との間のインタフェースとして機能する。EIS102内で発生したイベント112は、イベントストア202に記憶することができる。一実施形態では、検出されたイベント112の記録がイベントストア202に記憶される。イベント112の詳細をEIS102に残すことができる。アダプタ106はイベントストア202を定期的にポーリングし、その中の情報を使用して関心のあるクライアント104に配信するデータへの変更を反映したイベントを構築する。一実施形態では、イベントストア202は、アダプタ106がEIS102との対話を実施するために使用するJava(登録商標)コードで表される。イベントストア202は、EIS102内のデータ構造およびアダプタ106内の処理ロジックを含むことができる。イベントストア202は、汎用タスクまたは「全イベントの生成」等のコマンドを実行するように構成される。イベントストア202は、このようなコマンドを1つまたは複数のEISコマンドに変換して、EIS102内でコマンドを実際に実行する。したがって、イベントマネージャ204を任意の所与のEIS102に向けてカスタマイズする必要がない。
一実施形態では、イベントストア202は、EIS102から受信する各イベント112についての情報を含む。イベントストア202は、イベント112のIDすなわち「イベントID」を含むことができる。イベントID119は、イベントマネージャ204がイベントストア202を通して任意の所与のイベント112にアクセスできるようにする鍵と考えることができる。一実施形態では、イベントID119は各イベント112に一意である。イベントストア202は、イベント112が発生したEISオブジェクトまたは全体のイベント112自体の鍵を含むこともできる。イベントストア202は、イベントが発生したオブジェクト型を含むこともできる。一実施形態では、イベントストア202は各イベント112の配信状態207を含む。一実施形態では、状態207は定数であり、以下のフラグのうちの1つを含む。
NEW_EVENT
IN_PROGRESS
ERROR
状態207が各イベント112の現在の状態を説明する任意の数のアイテムまたは名称を含んでもよいことが当業者に理解されよう。
イベント分散モジュール206は、XAデータソース114へのインタフェースである。イベント分散モジュール206により、イベントマネージャ204はXAデータソース114にアクセスすることができる。一実施形態では、イベント分散モジュール206はデータベースまたはデータベーステーブルである。イベント分散モジュール206が、ステージングテーブル116の構成に関わりなくイベントマネージャ204がステージングテーブル116と対話できるようにする、XMLファイルまたはフラットファイルを含む任意のデータ構造、コード、またはモジュールであってもよいことが当業者に理解されよう。一実施形態では、イベント分散モジュール206は、クライアントID121およびイベントID119を含む。
イベントマネージャ204は、イベントストア202を通してイベント112を検出するタスク、イベント分散モジュール206を通してイベント112をステージングテーブル114に書き込むまたはステージングするタスク、およびイベント112を1つまたは複数のクライアント104に配信するタスクを管理する。
センダ214は、イベントマネージャ204の一部を構成することができる。一実施形態では、イベントマネージャ204は、イベント112が配信されるあらゆるクライアント104にセンダ214を作成する。イベントマネージャ204は、センダ214を通して、個々の各イベント112を複数のクライアント104に送信することを担当する。センダ214は、複数のクライアント104と通信するフォーキング(forking)機能を提供する。
図3は、アダプタ106内のイベントマネージャ204として具現される装置300を示す。別法として、装置300は、アダプタ106自体として具現することもできる。装置300は、イベント112を求めて少なくとも1つのEIS102をポーリングするように構成されるポーリングモジュール302を含む。装置300は、少なくとも1つのクライアント104への配信に向けてイベント112をステージングするように構成されるステージングモジュール304も含む。装置300は、イベント112を少なくとも1つのクライアント104に配信するように構成される配信モジュール306を含む。装置300は、イベント112の1つだけのインスタンスが少なくとも1つの各クライアント104に配信されることを確認するように構成される確認モジュール308を含むこともできる。一実施形態では、装置300は、消費されたイベント112をEIS102から除去するのに役立つ除去モジュール310を含む。
ポーリングモジュール302は、クライアント104に配信するイベント112を求めてEIS102を定期的に照会するように構成される。ポーリングモジュール302は、ユーザ構成パラメータに基づくポーリングを可能にすることができる。一実施形態では、パラメータは、ポーリングモジュール302がイベント112を求めてEIS102をポーリングするレートまたは頻度である。パラメータは、1つまたは複数のクライアント104に配信する前にステージングするイベント112の数量を含むこともできる。一実施形態では、ポーリングモジュール302は、イベント112がEIS102内で発生したことをポーリングモジュール302に警告する指定のトリガを探す。別法として、イベントストア202内に記録があることで、イベント112が発生したことを通知することができる。ポーリングモジュール302は、クライアント104がイベント112の受信に先立って利用可能ではなかったため保持されていたイベント112をリリースする準備ができたか否かを判断することもできる。ポーリングモジュール302は、新規クライアントがイベント112の受信に利用可能であるか否かを判断することもできる。一実施形態では、イベントマネージャ204は、新規クライアントをイベント受信に登録する。ポーリングモジュール302は、ポーリングステップおよび図4〜図6に関連してさらに考察する動作を実行するように構成される。
ステージングモジュール304は、少なくとも1つのクライアント104への配信に向けてイベント112をステージングするように構成される。ステージングモジュール304は、イベント112へのリファレンス118を、イベント受信に登録されている少なくとも1つのクライアントのそれぞれのステージングテーブル116に書き込むことができる。ステージングモジュール304は、各イベント112の配信状態207を調整することもできる。リファレンス118がステージングテーブル116に追加され、状態が設定されると、イベント112がステージングされる。
配信モジュール306は、イベント112を1つまたは複数のクライアント104に配信するように構成される。上述したように、「クライアント」なる用語は、クライアントの下位構成要素、中間構成要素、またはエンドポイントをすべて含む。一実施形態では、配信モジュール306は、J2EEアプリケーションサーバと協働する。配信モジュール306は、好ましくは、トランザクションサービス110を使用してイベント112を送信してクライアント104に記憶する。イベント112がロールバックされる場合、配信モジュール306は、利用可能ではないクライアント104のイベント112を一時的に保持するのに役立てることができる。
さらに詳細に後述するように、クライアント104はまず、イベント112の受信に登録され、特定のクライアント104を登録時に永続サブスクライバとして指定することができる。これは、本発明の好ましい実施形態の1つのユーザ構成可能な特徴である。永続サブスクライバクライアントとは、欠落したイベントを保持し、後でクライアントが再び利用可能になったときにクライアント104に配信することを要求するクライアントである。
一実施形態では、配信モジュール306は、イベント112を永続サブスクライバとして指定されたクライアント104に配信または送信するように構成される。配信モジュール306は、ポーリングモジュール302によるポーリング中に受信する、クライアント104が利用可能になったことのインジケータに応答して、保持されていた1つまたは複数のイベント112を、利用できない期間後に利用可能になったクライアント104に配信することができる。この配信モジュール306による保持イベント112の再配信は、装置204、300のクラッシュリカバリ特徴の一部である。
確認モジュール308は、イベント112の1つだけのインスタンスが各クライアント104に配信されることを確認するように構成される。確認モジュール308は、イベント112がクライアント104に配信されたか否かを確認することもできる。確認モジュール308は、トランザクションサービス110を使用してイベントの配信を確認する。一実施形態では、確認モジュール308はXA分散トランザクションを使用してイベントの配信を確認する。
除去モジュール310は、リファレンス118に対応するイベント112のクライアント104への配信が完了したことの確認後、ステージングされたイベント112へのリファレンス118をステージングテーブル116から除去するように構成される。例えば、イベント112が配信されてクライアントB104bにより消費されると、リファレンス118bがステージングテーブル116から除去される。イベントリファレンスの除去およびイベントの消費は、原子動作で実現される。
一実施形態では、装置300は、EIS102で作成された順番にイベント112をクライアント104に配信するように構成される。別の実施形態では、装置300は、イベント112の順番が1つまたは複数のクライアント104にとって重要ではない場合により素早くイベントを配信する。イベントマネージャ204は、順番が関係ないクライアント104に複数の実行スレッドを使用して、すべてのイベント112を所与のクライアント104に並列に配信することができる。さらに、ステージングテーブル116は、各クライアント104の個々のリファレンス記録118を記憶することができる。したがって、イベントマネージャ204または装置300は、各クライアント104の固有のニーズに向けてサービス提供することができる。例えば、イベントマネージャ204または装置300は、あるクライアントにはシーケンシャルイベント配信を提供し、別のクライアントには非シーケンシャルイベントを並列に提供することができる。
以下の概略フローチャート図は全般的に、論理フローチャート図として記される。したがって、示される順番および記されるステップは、提示される方法の一実施形態を示す。示される方法の1つまたは複数のステップまたはその部分と機能、論理、または影響が等価の他のステップおよび方法も考えられる。さらに、利用されるフォーマットおよび記号は方法の論理ステップを説明するために提供されており、方法の範囲を制限しないことが理解される。様々な矢印の種類および線種をフローチャート図に利用できるが、これらは対応する方法の範囲を制限しないことが理解される。実際に、方法の論理フローのみを示すために、いくつかの矢印または他のコネクタが使用され得る。例えば、矢印は、示される方法の列挙されたステップ間の未指定期間の待機中または監視中の期間を示し得る。さらに、特定の方法が行われる順番は、示される対応のステップの順番に厳密に従ってもよく、または従わなくてもよい。
図4は、本発明の好ましい実施形態によるEIS102とクライアント104との間の通信に役立つ方法400を示す。方法が開始され(402)、イベント112を求めて少なくとも1つのEIS102がポーリングされる(404)。イベント112が見つけられた場合、イベント112はステージングされ(406)、少なくとも1つのクライアントに配信される(408)。イベントの配信(408)が確認され(410)、イベントがEISから除去される(412)。方法が終了する(414)。
方法またはプロセスの開始時(402)に、1つまたは複数のクライアント104をイベント受信に登録することができる。一実施形態では、アダプタ装置204、300は1つまたは複数のEIS102および1つまたは複数のクライアント104と通信する。一実施形態では、EIS102のポーリング(404)は、クライアント104が利用可能であるか否か、新規イベント112が存在するか否か、および保持イベント112の配信準備ができたか否かを判断することを含む。クライアント104がイベント112の受信に登録されると、クライアント104が利用可能になる。クライアント104は、クライアントシステムがクラッシュした、クライアントシステムがビジーである、クライアントシステムがオフラインである、またはクライアントシステムが単に応答してないことを含むがこれらに限定されない任意の数の理由により時に利用不可能になる。ポーリング(404)は、以前に登録したが利用不可能なクライアント104が利用可能になったか否かを判断すること(404)を含む。
EIS102のポーリング(404)は、新規イベント112を探してEIS102を定期的に照会することを含む。EIS102がポーリングされる(404)頻度は、ユーザまたはアダプタ管理者が判断することができる。ユーザまたはアダプタ管理者は、イベントの配信を開始する前に検索すべきイベントの数量を判断することもできる。EISのポーリング(404)の多くの態様がユーザ構成可能なことが当業者により理解されよう。
一実施形態では、イベントは、EIS102に常駐して、イベントが発生するとイベントを取り込み、イベントストア202に記憶するトリガメカニズムまたはロジックを使用して検出することができる。この実施形態では、上述したポーリング(404)は、イベントストア202のポーリング(404)にも適用される。
アダプタ204、300は、少なくとも1つのクライアント104への配信(408)に向けて、ポーリングされたイベント112をステージングする(406)。ステージング(406)は、イベント112へのリファレンス118をステージングテーブル116に書き込むことを含む。イベント112の受信に登録した各クライアント104に、エントリが書かれる。ステージングテーブル116はXAデータソース114内のデータベースである。このデータベースは、少なくとも、イベント112およびイベント112が配信されるクライアント104を識別するフィールドを記憶する。
一実施形態では、ステージング(406)は、EIS102のイベントストア202内の各イベント112の配信状態をマークすることを含む。配信状態207は、新規イベント112の存在、イベント配信が進行中であること、エラーが発生したこと等を示すことができる。イベント112はイベント分散モジュール206に記憶して、方法400において後で使用することができる。イベント112が検出されたが、配信される前の場合、イベント112には「MEW_EVENT」状態を与えることができる。
新規イベントの順番は、要求された場合に、発生した順番にイベントを配信できるようにマークすることができる。別法として、イベント分散モジュール206内の記録は、先入れ先出し順に配信することができる。イベント112が配信され始めると、配信状態を「IN_PROGRESS(進行中)」に変更することができる。「ERROR(エラー)」状態が、アダプタ102に送信するオブジェクトの構築中にエラーが発生したイベント112に添付され、イベント配信を無効にする。「エラー」状態は、一実施形態では、XAトランザクションサービス下でロールバックイベントを発生させる発生以外の何かによってトリガされる。
イベント112は、少なくとも1つのクライアント104に配信される(408)。一実施形態では、装置204、300は、XAトランザクションサービス110を使用してイベント112を配信する。イベント112の配信(408)は、J2EEアプリケーションサーバにより制御されるトランザクションサービス110を使用して、イベント112を送信して記憶することを含むことができる。トランザクションサービス110は、各イベントをXA準拠分散トランザクションで送信する。各イベント112は、1つのXAトランザクションの一部として特定のクライアント104に配信される。トランザクションがエンドポイントに到達できなかった場合、エンドポイントがクライアント104であれ、それともクライアントのダウンラインシステムであれ、イベントは、トランザクションサービス110が使用するXAトランザクションプロトコル下でステージングテーブル116にロールバックする。
クライアント104が利用可能ではなく、かつ永続サブスクライバとして指定されている場合、イベントはイベント分散モジュール206内に保持される。永続サブスクライバであるクライアント104は、イベント112が最初にクライアント104に送信されたときにクライアント104が利用不可能であった場合であっても、イベント112を失わない。イベント112は、永続サブスクライバクライアントが利用可能になったときにそのクライアントに配信または送信される。この配信または再配信は、ポーリングモジュールからの、またはポーリングステップ(404)中に生成される、クライアント104が利用可能になったというインジケータに応答して行うことができる。
イベントの配信(408)は、そのイベント112の配信状態207を判断することを含むことができる。アダプタ204、300は、クラッシュが任意の時点で発生した場合であっても配信を保証するのに十分ロバストである。一実施形態では、イベント分散モジュール206内の情報と組み合わせられた、イベントストア202内の任意の保持中のイベント112の配信状態値207が、イベント112を再配信する必要があるか否かを決める。一実施形態では、イベント112の配信または削除は、以下のロジックテーブルに基づいて判断することができる。
Figure 0005065259
イベントストア202内のイベントが「NEW_EVENT」とマークされ、かつイベント分散モジュール206内にない場合、クライアントが永続サブスクライバであるか否かに関わらず、イベント112は配信される。したがって、新規イベントはすべて配信が試みられる。イベントストア202内のイベントが「NEW_EVENT」とマークされ、かつイベント分散モジュール206内にある場合、クライアント104が永続サブスクライバでなければ、イベント112は削除される。イベントがイベントストア202内で「NEW_EVENT」とマークされ、かつイベント分散モジュール206内にある場合、クライアントが永続サブスクライバであれば、イベントは配信される。保持されるイベントは、永続サブスクライバにのみ配信される。イベントストア202内のイベントが「IN_PROGRESS」とマークされ、かつイベント分散モジュール206内にない場合、クライアントが永続サブスクライバでなければ、イベントは削除される。イベントストア202内のイベントが「IN_PROGRESS」とマークされ、かつイベント分散モジュール206内にある場合、クライアントが永続サブスクライバでなければ、イベントは削除される。配信を試みられたイベント112は、そのイベント112の受信を意図されるクライアント104が永続サブスクライバでない限り保持されない。イベントストア202内のイベントが「IN_PROGRESS」とマークされ、かつイベント分散モジュール206内にある場合、クライアントが永続サブスクライバであれば、イベントは配信される。イベントストア202内のイベントが「IN_PROGRESS」とマークされ、かつイベント分散モジュール206内にない場合、クライアントが永続サブスクライバであれば、イベントは削除される。
イベントの配信に利用可能になったクライアント104への保持されているイベント112の配信(408)は、好ましくは、他のクライアント104に任意の新規の後続イベント112が配信される前に完了される。例えば、クライアントBに保持中のイベントがある場合、そのイベントは、クライアントBがオンラインになるときまでそのXAデータソース114に留まる。クライアントAおよびCはそれぞれのイベントを受信し、クライアントAおよびCに関連するそのイベントの任意の記録がXAデータソース114から除去されるが、クライアントBの記録はXAデータソース114に残る。EIS102にも残る。アダプタ装置106は、イベントを受信することになっているすべてのクライアントがイベントを受信するまで、コピーを保持する。
クライアントBがオンラインに戻ると、保持されていたイベントはリカバリサイクルを経る。リカバリサイクルでは、クライアントAおよびCはいずれの情報も得ず、装置106は、クライアントBに関してバックログされていたすべての情報を送信し、クライアントBがクライアントAおよびCと同期をとれるようにする。
配信(408)は、イベント112が配信された個々の各クライアント104について、ダウンライン構成要素等のクライアント104がイベント112を送信した可能性のある場所がどこであれ、そこにイベント112が配信されたことを確認することを含む。例えば、クライアントAのラインでは、XAトランザクションがコミットする、またはその特定のクライアントラインへのイベント112の配信を完了するには、イベント112がエンドポイントクライアントA’’122まで達しなければならない。一実施形態では、トランザクションサービス110が、特定のクライアントライン全体を通るすべての配信の承認を取り扱う。
確認(410)は、イベント112が少なくとも1つのクライアント104に配信されたか否かを確認することを含む。一実施形態では、方法400は、イベント112の1つだけのインスタンスが少なくとも1つの各クライアント104に配信されたことを確認すること(410)を含む。上述したようなイベント配信の確認(410)は、トランザクションサービス110を使用して実現される。
除去(412)は、特定のクライアント104へのイベント112の配信完了が確認された後、ステージングされたイベントへの、ステージングテーブル116内のリファレンス118を除去することを含む。除去(412)は、クライアント104によるイベント112の消費後、イベント112へのリファレンス118をステージングテーブル116から除去することも含む。除去および消費は原子動作を含む。除去(412)は、イベント112へのリファレンスがステージングテーブル116から除去されたことに応答して、EIS102からイベントを削除することも含む。例えば、ステージングテーブル116内にイベント112に対応するリファレンス118がもうない場合、イベント112をEIS102から除去することができる。一実施形態では、特定のイベント112へのいずれのリファレンス118もないステージングテーブル116は、意図されるすべてのクライアント104がイベント112を受信したことの確認である。
方法は、コンピュータプログラムまたは信号をのせた媒体により実施することができる。一実施形態では、コンピュータプログラムは、EISと1つまたは複数のクライアントとの間の通信に役立つコンピュータ使用可能プログラムコードを有するコンピュータ可読媒体を含むか、または有形に具現する。コンピュータプログラムは、上記方法を実施するコンピュータ使用可能プログラムコードを含む。方法および対応するプログラムコードは、上記方法の機能および以下の図5および図6に関連して説明するプロセスの実施に必要なステップを含むこともできる。
図5は、EIS502とクライアント504との間の通信に役立つプロセス500を示す。イベントマネージャ506が、アダプタ508の一部として、イベント510を検索する。記録またはリファレンス512が、各アクティブエンドポイント516のステージングテーブル514に追加される。イベントストア520が、アダプタ508とEIS502との間のインタフェースとして機能し、イベントマネージャ506によるEIS506の照会およびEIS506内のイベントの変更を可能にする。イベント分散モジュール522が、XAデータソース518の一部であるステージングテーブル514への一般アクセスをイベントマネージャ506に提供する。
イベント510は進行中とマークされる。イベント510をどのクライアント504に配信するかのガイドとしてステージングテーブル514を使用して、イベント510はすべてのアクティブクライアント504に発行される。クライアント504によるイベント502の個々のコピーの消費ならびに個々の同じイベント記録512のステージングテーブル514からの除去は両方とも、1つのXAトランザクションの一部として実行される。
すべてのエンドポイント516がイベント510を受信すると、元のイベント510はEIS502から削除される。イベントマネージャ506は、ステージングテーブル514内にその特定のイベント510へのリファレンス512がもうないことから、イベント510がエンドポイント51に配信されたことを識別することができる。プロセス500は、EIS502に記録されている各イベント112に対して繰り返される。
図6は、図5に示すプロセスフローのシーケンス図である。一実施形態では、プロセス600での最初のステップは、エンドポイントを再計算すること(602)である。イベントマネージャ506が、最後のポーリングサイクルからオンラインに戻った新規の任意のクライアント504があるか否かを判断する。ポーリングサイクルは、イベントマネージャ506がEIS502またはイベントストア520をポーリングする時間期間である。新規クライアント504がある場合、イベントマネージャ506は、保持されていたイベントを配信するか、それとも新規の配信を開始するかを判断する。
次に、イベントマネージャ506は「進行中イベント」をリカバリする(604)。最後のポーリングサイクルから追加された新規の任意のクライアント504があった場合、イベントマネージャ506は、新規クライアント504に欠落している任意のイベントを配信し、それにより、イベント配信シーケンスを保持する。次に、イベントマネージャ506は新規イベントをイベントストア520から検索する(606)。イベントストア520は新規イベントリストを返す(608)。
イベントマネージャ506は分散マップを作成する(610)。分散マップは、どのイベントがどのクライアント504に行っているかを定義する。分散マップは、クライアント識別子またはエンドポイントID121をイベントリストにマッピングする。イベントマネージャ506は、イベント分散モジュール522を使用して記憶された(612)イベントリファレンス118、512を定義する。イベント状態207が設定され(614)、イベントはEIS502において「IN_PROGRESS」とマークされる。
次に、イベントマネージャ506はセンダと通信して、イベント510の送信を開始する(616)。センダ214はイベント510を送信する。センダ214は、XA通信プロトコルに従って動作するように構成されるイベント分散モジュール522からXAリソースを検索する(620)。次に、センダ214は、J2EEコンテナ108を呼び出して、エンドポイントファクトリ625を使用してエンドポイントオブジェクト623を作成する(622)。エンドポイントオブジェクト623は、イベントマネージャ506がクライアント504またはエンドポイント516にアクセスできるようにする。センダ214は、「ターゲットメソッド」を検索する(624)。イベントマネージャ506が何かをトランザクションに入れたい場合、イベントマネージャ506はコンテナ108にターゲットメソッドおよびXAリソースを与える。次に、センダ214は、所望のエンドポイントオブジェクト623で「beforeDelivery」コマンドを呼び出し(626)、コンテナ108にトランザクションを開始するように教える。次に、センダ214は、イベントのオブジェクト510を検索する(628)。次に、イベントオブジェクト510は配信され(630)、イベントマネージャ506に通知される。次に、センダ214は、所定の関数を呼び出し、この場合「reeiveMessage」632を介してイベント510をエンドポイント516に送信する。
次に、イベントリファレンス118、512が削除され(634)、イベントが配信されたその特定のクライアント504の1つのリファレンス118、512が、イベント分散モジュール522によりステージングテーブル514から除去される。次に、エンドポイント516において、イベントマネージャがこのトランザクションを終了したことをコンテナ108に教える「After Delivery」コマンドが実行される(636)。その時点で、イベント510はクライアントのビジネスプロセスにより処理され、次に、トランザクションがコミットされる。最終ステップは、イベント510をEIS502から削除すること(638)である。
ステップ620〜636が、各イベント510、各オンラインメッセージエンドポイント516に繰り返される。これは、1エンドポイントファクトリ625につき1スレッド(シーケンシャル)、または1イベント、1エンドポイントファクトリ625につき1スレッド(順番なし)で行うことができる。
本発明の好ましい実施形態により教示されるプロセスの利用により、クライアントによるイベントの消費およびステージングテーブルからのイベントの削除が、好ましくは、1つのトランザクションの一部として行われるため、クライアントの1度だけのイベント配信が保証される。別法として、消費および配信は、1つの原子トランザクションを含み、リファレンスおよびイベントの削除が第2の原子トランザクションを含んでもよい。この手法は、トランザクションはクライアントおよびステージングテーブルにまたがり、ステージングテーブルは、XA対応ではない場合があるEISイベントテーブルではなくXA対応であるため、土台をなすEIS102がトランザクションをサポートしない場合であっても可能である。さらに、クライアントのエンドポイントは、他のあらゆるものによるイベントの処理に干渉しない。各クライアントは、各自の分離されたトランザクションとの各自のデータベース接続でイベントを受信する。すべてのエンドポイントがイベントを受信する前にクライアント104またはアダプタ106が予期せずに終了した場合、ステージングテーブル116は、どのイベント112がまだ配信されていないかのリストを保持するため、アダプタ106は後の時点で配信を再試行することができる。
本発明の好ましい実施形態の教示の下、EIS102内のイベント112を検出するトリガはクライアント104と関係する必要がなく、単にイベントのコピーをイベント分散モジュール206に書き込むだけであるため、クライアント104は動的に追加または除去することができる。さらに、イベントの複数のコピーを分散モジュール206に記憶する必要がないため、ポーリング性能が向上する。アダプタ106は、複数の記録118をステージングテーブル116に書き込むが、これらは単に、イベント分散モジュール206により管理されるイベント112へのリファレンス118であり、略同量のデータを含まない。本発明の実施形態の別の利点は、EIS102システムがXAをサポートしない場合であっても2フェーズトランザクション(XA)の一部としてデータをEIS102から配信させるメカニズムを提供することである。
図7は、本発明の好ましい実施形態による顧客の複数のソフトウェアクライアントにEISを統合する方法700を示す。方法700は、デベロッパーまたはコンサルティンググループにより実施することができる。一実施形態では、方法700が開始され(702)、EIS102がクライアントとどのように協働すべきかを定義した統合要件セットを受信する(704)。次に、方法700は、ソフトウェアクライアントがEISイベント112を受信するようにEIS102と複数のソフトウェアクライアント104を接続するように構成される統合アダプタを構築する(706)。EIS102または1つまたは複数のソフトウェアクライアント104、あるいはこれら両方は、顧客に属することができる。統合アダプタ508は、イベントを求めて少なくとも1つのEIS102をポーリングし、少なくとも1つのクライアントへの配信に向けてイベントをステージングし、イベントを少なくとも1つのクライアントに配信し、イベントの1つだけのインスタンスが少なくとも1つの各クライアントに配信されることを確認するように構成される。次に、統合アダプタ508が顧客に配信される(708)。統合アダプタ508は、オプションとして、セットアップされるか(710)、またはインストールすることができ、プロセス700は終了する(712)。
一実施形態では、統合アダプタのセットアップ(710)は、各クライアントをEIS102からのイベントの受信に登録することを含む。これは、イベントを求めて少なくとも1つのEIS102をポーリングする頻度および配信前にステージングするイベントの数量を判断することを含むこともできる。方法700は、トランザクションサービスを統合アダプタに統合すること、および利用不可能なクライアントに対して、クライアントが利用可能になるまでイベントを保持すべきか否かを判断することを含むこともできる。
図8は、クライアントへの1度だけのイベント配信を保証する企業情報システム(EIS)を複数のソフトウェアクライアントに統合するように構成されるコンピューティングインフラを導入する方法800を示す。方法が開始され(802)、複数の拡張可能モジュールを含むソフトウェアツールキットが開発される(804)。モジュールは、イベントを求めて少なくとも1つのEIS102をポーリングし、少なくとも1つのクライアントへの配信に向けてイベントをステージングし、イベントを少なくとも1つのクライアントに配信し、イベントの1つだけのインスタンスが少なくとも1つの各クライアントに配信されることを確認するように構成される。トランザクションサービスは、好ましくは、ソフトウェアツールキットと統合される(806)。ソフトウェアツールキットは、オプションとして、各種手段を通して発行(808)するか、または公開することができ、プロセスが終了する(810)。一実施形態では、トランザクションサービスはXA仕様下の分散トランザクションをサポートする。
本発明の好ましい実施形態による企業情報システム(EIS)とクライアントとの間の通信に役立つシステムの一実施形態を示す概略ブロック図である。 図1のシステムで使用できるアダプタの一実施形態を示す概略ブロック図である。 図2のアダプタに使用できるイベントマネージャの一実施形態を示す概略ブロック図である。 本発明によるEISとクライアントとの間の通信に役立つ方法の一実施形態を示す概略フローチャート図である。 本発明の好ましい実施形態によるEISとクライアンとの間の通信に役立つシステムの一実施形態を示す概略ブロック図である。 本発明の好ましい実施形態によるEISとクライアントとの間の通信に役立つ方法の一実施形態を示す概略シーケンス図である。 本発明の好ましい実施形態によるEIS統合方法の一実施形態を示す概略フローチャート図である。 本発明の好ましい実施形態によるコンピューティングインフラを導入する方法の一実施形態を示す概略フローチャート図である。

Claims (26)

  1. 企業情報システム(EIS)とクライアントとの間の通信に役立つ、コンピュータ可読媒体に含まれる、コンピュータ使用可能のコンピュータプログラムであって、前記コンピュータに、
    イベントを求めて少なくとも1つのEISをポーリングするステップと、
    イベントを受信するために登録された複数のクライアントの各々についてステージングテーブルに前記イベントへのリファレンスを書き込むことにより前記イベントを前記複数のクライアントへの配信に向けてステージングするステップと、
    前記イベントを前記複数のクライアントに配信するステップと、
    前記イベントの1つだけのインスタンスが前記複数のクライアントに配信されたか否かを確認するステップと、
    前記イベントが前記複数のクライアントのうちの特定のクライアントによって消費されたときに、前記特定のクライアントに対応する、前記イベントへのリファレンスを前記ステージングテーブルから除去するステップと、
    を実行させ
    前記消費および前記除去が原子動作であるトランザクションの一部として実行される、コンピュータプログラム。
  2. 前記EISをポーリングするステップは、クライアントがイベントを受信することが可能であるか否かを判断するステップを含む、請求項1に記載のコンピュータプログラム。
  3. 前記EISをポーリングするステップは、ユーザが構成したパラメータに基づいて新規イベントを求めて前記EISに定期的に問い合わせるステップを含む、請求項1に記載のコンピュータプログラム。
  4. 前記イベントをステージングするステップは、前記EIS内の各イベントの配信状態をマークするステップをさらに含む、請求項1に記載のコンピュータプログラム。
  5. 前記ステージングテーブルがXA準拠のステージングテーブルである、請求項1に記載のコンピュータプログラム。
  6. 特定のクライアントに対する前記イベントの配信の完了を確認した後、前記ステージングテーブル内のステージングされたイベントへの前記リファレンスを除去するステップをさらに前記コンピュータに実行させるための、請求項5に記載のコンピュータプログラム。
  7. イベントへのリファレンスが前記ステージングテーブルから原子動作として除去されたことに応答して、前記EISから前記イベントを削除するステップをさらに前記コンピュータに実行させるための、請求項5に記載のコンピュータプログラム。
  8. 前記イベントを配信するステップは、トランザクションサービスを使用して前記イベントを送信して記憶するステップをさらに含む、請求項1に記載のコンピュータプログラム。
  9. 利用可能ではないクライアントについてのイベントを保持するステップをさらに前記コンピュータに実行させるための、請求項1に記載のコンピュータプログラム。
  10. 前記利用可能ではないクライアントのイベントを保持するステップはユーザ構成可能である、請求項9に記載のコンピュータプログラム。
  11. 前記イベントを配信するステップは、ポーリング中に得られる、クライアントが利用可能になったとのインジケータに応答して、利用可能になったクライアントに1つまたは複数の保持されていたイベントを配信するステップをさらに含む、請求項9に記載のコンピュータプログラム。
  12. 前記イベントの配信に利用可能になったクライアントへの保持されていたイベントの配信は、新規イベントが他のクライアントに配信される前に完了される、請求項11に記載のコンピュータプログラム。
  13. イベント配信の確認はトランザクションサービスを使用して実現される、請求項1に記載のコンピュータプログラム。
  14. 前記イベントを受信するために登録したすべてのクライアントが前記イベントを受信したことの確認に際して、前記イベントを前記EISから削除するステップをさらに含む、請求項1に記載のコンピュータプログラム。
  15. 顧客の複数のソフトウェアクライアントにEISを統合する方法であって、
    統合要件セットを受信するステップと、
    前記ソフトウェアクライアントがEISイベントを受信するためにEISと複数のソフトウェアクライアントとを接続するよう構成される、統合アダプタを構築するステップであって、前記統合アダプタが、
    イベントを求めて少なくとも1つのEISをポーリングし、
    イベントを受信するために登録された複数のクライアントの各々についてステージングテーブルに前記イベントへのリファレンスを書き込むことにより、前記イベントを前記複数のクライアントへの配信に向けてステージングし、
    前記イベントを前記複数のクライアントに配信し、
    前記イベントの1つだけのインスタンスが前記複数の各クライアントに配信されたことを確認し、
    前記イベントが前記複数のクライアントのうちの特定のクライアントによって消費されたときに、前記特定のクライアントに対応する、前記イベントへのリファレンスを前記ステージングテーブルから除去する
    ように構成される、ステップと、
    前記統合アダプタを前記顧客に配信するステップと
    を含み、
    前記消費および前記除去が原子動作であるトランザクションの一部として実行される、方法。
  16. 前記EISからイベントを受信するために各クライアントを登録するステップを含む、請求項15に記載の方法。
  17. イベントを求めて前記少なくとも1つのEISをポーリングする頻度を判断するステップを含む、請求項15に記載の方法。
  18. 配信前にステージングするイベントの数量を判断するステップを含む、請求項15に記載の方法。
  19. トランザクションサービスを前記統合アダプタに統合するステップをさらに含む、請求項15に記載の方法。
  20. 利用可能ではないクライアントへのイベントを、該クライアントが利用可能になるまで保持すべきか否かを判断するステップを含む、請求項15に記載の方法。
  21. 企業情報システム(EIS)とクライアントとの間の通信に役立つ方法であって、
    イベントを求めて少なくとも1つのEISをポーリングするステップと、
    イベントを受信するために登録された複数のクライアントの各々についてステージングテーブルに前記イベントへのリファレンスを書き込むことにより、前記イベントを前記複数のクライアントへの配信に向けてステージングするステップと、
    前記イベントを前記複数のクライアントに配信するステップと、
    前記イベントの1つだけのインスタンスが前記複数の各クライアントに配信されたか否かを確認するステップと、
    前記イベントが前記複数のクライアントのうちの特定のクライアントによって消費されたときに、前記特定のクライアントに対応する、前記イベントへのリファレンスを前記ステージングテーブルから除去するステップと
    を含み、
    前記消費および前記除去が原子動作であるトランザクションの一部として実行される、方法。
  22. 前記イベントを配信するステップは、前記イベントの前記配信状態を判断するステップを含む、請求項21に記載の方法。
  23. 前記イベントを配信するステップは、永続サブスクライバとして指定されたクライアントにイベントを送信するステップを含む、請求項21に記載の方法。
  24. すべての意図されるクライアントが前記イベントを受信したことが確認された後、前記EISから前記イベントを削除するステップをさらに含む、請求項21に記載の方法。
  25. 企業情報システム(EIS)とクライアントとの間の通信に役立つ装置であって、
    イベントを求めて少なくとも1つのEISをポーリングするように構成されるポーリングモジュールと、
    イベントを受信するために登録された複数のクライアントの各々についてステージングテーブルに前記イベントへのリファレンスを書き込むことにより、前記イベントを前記複数のクライアントへの配信に向けてステージングするように構成されるステージングモジュールと、
    前記イベントを前記複数のクライアントに配信するように構成される配信モジュールと、
    前記イベントの1つだけのインスタンスが前記複数の各クライアントに配信されたか否かを確認するように構成される確認モジュールと、
    前記イベントが前記複数のクライアントのうちの特定のクライアントによって消費されたときに、前記特定のクライアントに対応する、前記イベントへのリファレンスを前記ステージングテーブルから除去する除去モジュールと、
    を備え
    前記消費および前記除去が原子動作であるトランザクションの一部として実行される、装置。
  26. クライアントへの1度だけのイベント配信を保証する、複数のソフトウェアクライアントに企業情報システム(EIS)を統合するように構成されるコンピューティングインフラを導入する方法であって、
    複数の拡張可能モジュールを含むソフトウェアツールキットを開発するステップであって、前記モジュールが、
    イベントを求めて少なくとも1つのEISをポーリングし、
    イベントを受信するために登録された複数のクライアントの各々についてステージングテーブルに前記イベントへのリファレンスを書き込むことにより、前記イベントを前記複数のクライアントへの配信に向けてステージングし、
    前記イベントを前記複数のクライアントに配信し、
    前記イベントの1つだけのインスタンスが前記複数の各クライアントに配信されたか否かを確認し、
    前記イベントが前記複数のクライアントのうちの特定のクライアントによって消費されたときに、前記特定のクライアントに対応する、前記イベントへのリファレンスを前記ステージングテーブルから除去する
    ように構成される、ステップと、
    トランザクションサービスを前記ソフトウェアツールキットに統合するステップと、
    前記ソフトウェアツールキットを発行するステップと、
    を含み、
    前記消費および前記除去が原子動作であるトランザクションの一部として実行される、方法。
JP2008515173A 2005-06-10 2006-05-19 企業情報システムとクライアントとの間の通信に役立つ装置、システム、方法、およびコンピュータプログラム(企業情報システムとクライアントとの間の通信に役立つ装置、システム、および方法) Active JP5065259B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/149,652 US8301750B2 (en) 2005-06-10 2005-06-10 Apparatus, system, and method for facilitating communication between an enterprise information system and a client
US11/149,652 2005-06-10
PCT/EP2006/062468 WO2006131440A1 (en) 2005-06-10 2006-05-19 Apparatus, system, and method for facilitating communication between an enterprise information system and a client

Publications (3)

Publication Number Publication Date
JP2008546110A JP2008546110A (ja) 2008-12-18
JP2008546110A5 JP2008546110A5 (ja) 2009-02-05
JP5065259B2 true JP5065259B2 (ja) 2012-10-31

Family

ID=36649758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008515173A Active JP5065259B2 (ja) 2005-06-10 2006-05-19 企業情報システムとクライアントとの間の通信に役立つ装置、システム、方法、およびコンピュータプログラム(企業情報システムとクライアントとの間の通信に役立つ装置、システム、および方法)

Country Status (5)

Country Link
US (1) US8301750B2 (ja)
EP (1) EP1894096A1 (ja)
JP (1) JP5065259B2 (ja)
CN (1) CN101176068B (ja)
WO (1) WO2006131440A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8104046B2 (en) * 2007-08-21 2012-01-24 International Business Machines Corporation Polling adapter providing high performance event delivery
US10552239B2 (en) 2009-12-01 2020-02-04 International Business Machines Corporation Message recall
US9509529B1 (en) * 2012-10-16 2016-11-29 Solace Systems, Inc. Assured messaging system with differentiated real time traffic
US9715405B2 (en) * 2013-09-23 2017-07-25 International Business Machines Corporation Efficient coordination across distributed computing systems
US9912731B2 (en) 2014-03-04 2018-03-06 International Business Machines Corporation Dynamic transaction coordination
CN105550047A (zh) * 2015-12-11 2016-05-04 深圳市佳创视讯技术股份有限公司 基于数据库通信的方法及系统
US11436185B2 (en) * 2019-11-15 2022-09-06 Arteris, Inc. System and method for transaction broadcast in a network on chip
US20220116201A1 (en) * 2020-10-09 2022-04-14 Sap Se Automated development, deployment and integration service for distributed ledger-enabled applications

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283856A (en) * 1991-10-04 1994-02-01 Beyond, Inc. Event-driven rule-based messaging system
GB2276737A (en) * 1993-03-30 1994-10-05 Ibm Fault-tolerant transaction-oriented data processing
EP0759591B1 (en) 1995-08-18 2003-01-08 International Business Machines Corporation Event management service
US5850517A (en) * 1995-08-31 1998-12-15 Oracle Corporation Communication link for client-server having agent which sends plurality of requests independent of client and receives information from the server independent of the server
US5870605A (en) * 1996-01-18 1999-02-09 Sun Microsystems, Inc. Middleware for enterprise information distribution
US5862338A (en) * 1996-12-30 1999-01-19 Compaq Computer Corporation Polling system that determines the status of network ports and that stores values indicative thereof
US5951648A (en) * 1997-03-03 1999-09-14 Mylex Corporation Reliable event delivery system
US6260077B1 (en) * 1997-10-24 2001-07-10 Sun Microsystems, Inc. Method, apparatus and program product for interfacing a multi-threaded, client-based API to a single-threaded, server-based API
US6125363A (en) * 1998-03-30 2000-09-26 Buzzeo; Eugene Distributed, multi-user, multi-threaded application development method
US6324569B1 (en) * 1998-09-23 2001-11-27 John W. L. Ogilvie Self-removing email verified or designated as such by a message distributor for the convenience of a recipient
US6704801B1 (en) * 1999-02-18 2004-03-09 Nortel Networks Limited Atomic transmission of multiple messages in a virtual synchrony environment
US6829770B1 (en) * 1999-02-23 2004-12-07 Microsoft Corporation Object connectivity through loosely coupled publish and subscribe events
US6397352B1 (en) * 1999-02-24 2002-05-28 Oracle Corporation Reliable message propagation in a distributed computer system
JP2000276394A (ja) 1999-03-22 2000-10-06 Sharp Corp ウェブページ情報中継システムおよびウェブページ情報中継方法
US6279046B1 (en) * 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer
JP2001086298A (ja) 1999-09-13 2001-03-30 Fuji Xerox Co Ltd スキャナシステム
WO2001053947A1 (fr) * 2000-01-18 2001-07-26 Fujitsu Limited Dispositif de compte-rendu d'information de message pour systeme sous surveillance
JP3540253B2 (ja) 2000-07-05 2004-07-07 日本電信電話株式会社 高信頼イベント配送方法及びその装置
JP2002026070A (ja) * 2000-07-04 2002-01-25 Toshiba Corp 半導体装置およびその製造方法
US6763384B1 (en) 2000-07-10 2004-07-13 International Business Machines Corporation Event-triggered notification over a network
US20020091815A1 (en) * 2001-01-10 2002-07-11 Center 7, Inc. Methods for enterprise management from a central location using intermediate systems
US6877051B2 (en) * 2001-06-12 2005-04-05 Intel Corporation Consistency checking mechanism for configuration parameters in embedded systems
US20040078440A1 (en) 2002-05-01 2004-04-22 Tim Potter High availability event topic
US20040205770A1 (en) * 2003-02-11 2004-10-14 International Business Machines Corporation Duplicate message elimination system for a message broker
US7836031B2 (en) * 2003-03-28 2010-11-16 Microsoft Corporation Systems and methods for employing a trigger-based mechanism to detect a database table change and registering to receive notification of the change
GB0308264D0 (en) * 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
US20050038791A1 (en) * 2003-08-13 2005-02-17 Hewlett-Packard Development Company, L.P. System and method for event notification
US7490113B2 (en) * 2003-08-27 2009-02-10 International Business Machines Corporation Database log capture that publishes transactions to multiple targets to handle unavailable targets by separating the publishing of subscriptions and subsequently recombining the publishing
US20050198643A1 (en) * 2004-02-17 2005-09-08 Lachelt David J. Journaling proxy in activation solution

Also Published As

Publication number Publication date
US20060282524A1 (en) 2006-12-14
US8301750B2 (en) 2012-10-30
CN101176068B (zh) 2010-12-01
JP2008546110A (ja) 2008-12-18
EP1894096A1 (en) 2008-03-05
WO2006131440A1 (en) 2006-12-14
CN101176068A (zh) 2008-05-07

Similar Documents

Publication Publication Date Title
JP5065259B2 (ja) 企業情報システムとクライアントとの間の通信に役立つ装置、システム、方法、およびコンピュータプログラム(企業情報システムとクライアントとの間の通信に役立つ装置、システム、および方法)
KR102072726B1 (ko) 데이터베이스로의 미들-티어 트랜잭션 로그들의 인라인 위임을 지원하는 시스템들 및 방법들
JP4637842B2 (ja) クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知
JP5191062B2 (ja) ストレージ制御システム、ストレージ制御システムに関する操作方法、データ・キャリア及びコンピュータ・プログラム
US9189303B2 (en) Shadow queues for recovery of messages
US7716181B2 (en) Methods, apparatus and computer programs for data replication comprising a batch of descriptions of data changes
JP4570312B2 (ja) コンピュータシステムにおいてボリュームスナップショット依存関係を提供する方法および装置
WO2016183545A1 (en) Distributed and optimized garbage collection of remote and exported table handle links to update propagation graph nodes
CN100570607C (zh) 用于多处理环境中的数据聚合的方法和系统
CN107430606B (zh) 具有并行持久性的消息代理系统
CN104094228B (zh) 用于支持基于二阶段提交调用的严格定序的事务恢复的系统和方法
CN102831156A (zh) 一种云计算平台上的分布式事务处理方法
US10127077B2 (en) Event distribution pattern for use with a distributed data grid
EP0623877A2 (en) System and method for storing persistent and non-persistent queued data
CN101501652A (zh) 检查点及一致性标记符
CN112039970B (zh) 一种分布式业务锁服务方法、服务端、系统及存储介质
WO2012171349A1 (zh) 一种分布式自增计数的实现方法、装置及系统
CN115668141A (zh) 使用时间戳对网络中的事务进行分布式处理
CN106874343B (zh) 一种时序数据库的数据删除方法及系统
CN104793981A (zh) 一种虚拟机集群的在线快照管理方法及装置
CN107277022A (zh) 进程标记方法及装置
CN110737510A (zh) 块设备管理系统
CN101411165B (zh) 利用代理服务器控制嵌入式设备与外部的通信的方法和设备
EP4237942A1 (en) Scalable exactly-once data processing using transactional streaming writes
CN107025257A (zh) 一种事务处理方法及装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081208

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110513

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120419

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120426

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: 20120724

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120809

R150 Certificate of patent or registration of utility model

Ref document number: 5065259

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3