JPWO2002054263A1 - フレームワークシステム - Google Patents
フレームワークシステム Download PDFInfo
- Publication number
- JPWO2002054263A1 JPWO2002054263A1 JP2002555295A JP2002555295A JPWO2002054263A1 JP WO2002054263 A1 JPWO2002054263 A1 JP WO2002054263A1 JP 2002555295 A JP2002555295 A JP 2002555295A JP 2002555295 A JP2002555295 A JP 2002555295A JP WO2002054263 A1 JPWO2002054263 A1 JP WO2002054263A1
- Authority
- JP
- Japan
- Prior art keywords
- message
- framework
- service
- client
- messaging service
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/07—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
- H04L51/18—Commands or executable codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/226—Delivery according to priorities
Abstract
Description
本発明は、クライアントからのメッセージに応答して、選択された1又はそれ以上のビジネスロジックを実行するフレームワークシステムに関する。
技 術 背 景
この種のフレームワークシステムは、典型的には、1又はそれ以上のクライアントと通信可能に接続される1又はそれ以上のサーバによって構成される。この種のフレームワークシステムには、従来からメッセージングサービスと、フレームワークサービスという2つの基本機能が提供されている。メッセージングサービスは、クライアントとサーバ間及びサーバとサーバ間のメッセージ通信を処理するサービスである。フレームワークサービスは、通常複数のビジネスロジック(業務処理プロセス)を有しており、クライアントからのメッセージに応答して、選択された1又はそれ以上のビジネスロジックを同期方式で又は非同期方式で実行することによりトランザクションを遂行する。
しかしながら、上記従来例にあっては、フレームワークサービスにおけるビジネスロジックの処理スケジュールが固定的にプログラムされている。そのため、多種多様なメッセージに応じて複雑なビジネスロジックのフローを柔軟に定義することが困難である。
また、クライアントからのメッセージに応答して、複数のビジネスロジックを逐次に実行する場合がある。例えば、クライアントからの仕入登録リクエストに応答して、仕入登録や在庫更新や買掛金記帳などを行う場合である。このような場合、従来システムでは、例えば仕入登録のようなフロントデスクに関わるビジネスロジックはそのメッセージに同期して実行するが、在庫更新や買掛金記帳のようなバックオフィスに関わるビジネスロジックは夜間のバッチ処理により実行する。そのため、バックオフィスの処理の結果は、翌日まで待たないと参照できない。しかし、新たな取引のチャンスをいち早くキャッチするには、バックオフィスのビジネスロジックも可能な限り早期に実行してその結果が早期に参照できることが望ましい。
また、複数のフレームワークサーバを備えたシステムでは、フレームワークサーバ相互間でもメッセージを送受しながら協働して、一連のビジネスロジックを実行していく。各サーバのステータス(例えば、保有するビジネスロジックの種類、正常に稼動しているか否か、ビジーか否か、など)は、他のサーバとは違うのが普通であり、且つ、時間経過に伴って変化もする。このことは、ビジネスロジックの実行をどのサーバに依頼するかを決めるスケジューリングを複雑にする。
発 明 の 開 示
本発明は、ビジネスロジックフローを、プログラムすることなく、定義し変更することが容易なフレームワークシステムを提供することを目的とする。
本発明の別の目的は、一連のビジネスロジックを、完全にリアルタイムではなくても、できるだけリアルタイムに近い態様で、実行することができるフレームワークシステムを提供することにある。
本発明の更に別の目的は、複数のフレームワークサーバを備えたシステムにおいて、一連のビジネスロジックのスケジューリングを、それらサーバのステータスに応じて適切に行えるようにすることにある。
本発明の一つの観点に従う、クライアントと通信可能に接続されるフレームワークシステムは、複数のビジネスロジックと関連付けられ、クライアントからのリクエストのメッセージに応答して、選択された1又はそれ以上のビジネスロジックを実行し、そして、クライアントへのリプライのメッセージを出力するフレームワークサービスと;クライアントとフレームワークサービスとの間に介在し、クライアントとフレームワークサービスとの間でメッセージを中継するメッセージングサービスと;フレームワークサービスに関連付けられたフロー定義ファイルとを備える。リクエストのメッセージは、そのメッセージのサブジェクトに関するサブジェクトIDを含んでいる。フロー定義ファイルは、複数の異なるサブジェクトIDにそれぞれ対応した複数の定義センテンスを含んでおり、各定義センテンスは所定の1又はそれ以上のビジネスロジックのための実行スケジュールを記述している。フレームワークサービスは、メッセージングサービスからリクエストのメッセージを受け取ると、定義ファイル内の受信されたメッセージのサブジェクトIDに対応した定義センテンスを参照し、参照された定義センテンスに記述された実行スケジュールに従って、実行するべき1又はそれ以上のビジネスロジックを選択する。
好適な実施形態では、フレームワークシステムは、フレームワークサービスが稼動している間に、フロー定義ファイルを更新するフロー定義更新コンポーネントを更に備える。
好適な実施形態では、また、フロー定義ファイルには、一つの先行のビジネスロジックと少なくとも一つの後続のビジネスロジックとを含む複数のビジネスロジックの連係された実行のための連係実行スケジュールを記述した定義センテンスを含むことができる(勿論、連係実行スケジュールを定義した定義センテンスを含まなくてもよい)。その連係実行スケジュールは、後続のビジネスロジックの実行に関して同期方式と非同期方式の選択に関する連係モードを含んでいる。そして、フレームワークサービスは、連係実行スケジュールに従って複数のビジネスロジックを実行する場合、連係実行スケジュール内の連係モードに従って、先行のビジネスロジックの実行と同期的に又は非同期的に、後続のビジネスロジックを実行する。
好適な実施形態では、連係実行スケジュールは、先行のビジネスロジックに関する情報と、後続のビジネスロジックのための第2のリクエストのメッセージに関する情報とを含む。そして、フレームワークシステムは、連係実行スケジュールに従って複数のビジネスロジックを実行する場合、先行のビジネスロジックを実行した後、先行のビジネスロジックの実行結果を用いて第2のリクエストのメッセージを生成して、その第2のリクエストのメッセージをメッセージングサービスに送る。その後、フレームワークシステムは、メッセージングサービスから上記第2のリクエストのメッセージを受けると、その第2のリクエストのメッセージに対応する定義センテンスの実行スケジュールに従って、後続のビジネスロジックを実行する。
好適な実施形態では、また、メッセージングサービスが、前記第2のリクエストのメッセージを保証する為の不揮発性のメッセージキューを備える。このメッセージキューは、第2のリクエストメッセージがフレームワークサービスへ送られた後も、その第2のリクエストメッセージを消さずに保存する。そして、メッセージグサービスは、その不揮発性のメッセージキューで保存されている第2のリクエストのメッセージを、必要に応じて、フレームワークシステムへ再送信することができる。
本発明の別の観点に従うクライアントと通信可能に接続されるフレームワークシステムは、クライアントからのリクエストのメッセージを処理し、そして、クライアントへのリプライのメッセージを出力するフレームワークサービスと;クライアントとフレームワークサービスとの間に介在し、クライアントとフレームワークサービスとの間でメッセージを中継するメッセージングサービスとを備える。そして、メッセージングサービスは、上記リクエストとリプライのメッセージのようなP to P通信のメッセージだけでなく、クライアントとフレームワークサービスとの間のP to M通信のメッセージをも中継する。
好適な実施形態では、メッセージングサービスが、P to M通信のメッセージを一時的に待たせるためのリングバッファを有する。
好適な実施形態では、また、P to P通信のメッセージの各々には、メッセージ保証の要否に関する保証モードが含まれている。そして、メッセージングサービスは、メッセージ保証が不要なP to P通信のメッセージを一時的に待たせるための第1のメッセージキューと、メッセージ保証が必要なP to P通信のメッセージを一時的に待たせるための不揮発性の第2のメッセージキューとを有する。
本発明のまた別の観点に従う、クライアントと通信可能に接続されるフレームワークシステムは、クライアントと接続された少なくとも一つのメッセージングサービスを含んだ、相互にメッシュ接続されている複数のメッセージングサービスと;複数のメッセージングサービスにそれぞれ接続された複数のフレームワークサービスとを備える。そして、複数のフレームワークサービスの各々は、予め定められたサブジェクトIDをもったリクエストのメッセージを待ち受け、その予め定められたサブジェクトIDをもったリクエストのメッセージを受信すると、受信されたリクエストのメッセージを処理し、そして、クライアントへのリプライのメッセージを出力することができる。そして、上記複数のメッセージングサービスは、クライアントと上記複数のフレームワークサービスの間でのメッセージの中継、及び、上記複数のフレームワークシステム相互間でのメッセージの中継を行う。
好適な実施形態では、各メッセージングサービスが、他の1又はそれ以上のメッセージングサービスの稼動を監視し、他の或るメッセージングサービスについて正常な稼動を検出できなかった場合は、その正常に稼動してないメッセージングサービスへメッセージを中継する代わりに、他の正常に稼動しているメッセージングサービスへメッセージを中継する。
好適な実施形態では、また、各メッセージングサービスが、各々に接続されたフレームワークサービスの状態を監視し、監視された状態に応じて、クライアントからのリクエストのメッセージを上記フレームワークサービスに中継するか、他の何れかのメッセージングサービスに中継するかを、選択する。
好適な実施形態では、また、各メッセージングサービスは独自の管理テーブルを有し、各管理テーブルには、各メッセージングサービスに接続されたフレームワークシステムが待ち受けるメッセージのサブジェクトID、及び、各メッセージングサービスに接続された他の1又はそれ以上のメッセージングサービスがそれぞれ待ち受けるメッセージのサブジェクトIDが登録されている。そして、各メッセージングサービスは、メッセージを受信したとき、それ独自の管理テーブルを参照して、受信されたメッセージのサブジェクトIDにマッチするサブジェクトIDを待ち受けるフレームワークサービス又は他のメッセージングサービスを探し、見つかったフレームワークサービス又は他のメッセージングサービスへ、受信されたメッセージを中継する。
好適な実施形態では、さらに、各メッセージングサービスは、それ独自の管理テーブルの内容に基づいて、そのメッセージングサービスが待ち受けるメッセージのサブジェクトIDを、他の1又はそれ以上のメッセージングサービスに通知する。その通知を受けた他のメッセージングサービスの各々は、通知された内容が、それ独自の管理テーブルに未だ登録されていなければ、その通知内容を、それ独自の管理テーブルに追加登録する。
本発明の更に別の観点に従う、クライアントと通信可能に接続されるフレームワークシステムは、クライアントからのリクエストのメッセージを処理し、そして、クライアントへのリプライのメッセージを出力するフレームワークサービスと;クライアントとフレームワークサービスとの間に介在し、クライアントとフレームワークサービスとの間でメッセージを中継するメッセージングサービスとを備える。クライアントからのリクエストのメッセージは所与の優先順位を有している。そして、メッセージングサービスは、上記リクエストのメッセージを一時的に待たせるためのメッセージキューと、メッセージキューの入出力を管理するキュー管理コンポーネントとを備える。キュー管理コンポーネントは、メッセージキューに複数のメッセージが蓄積されているとき、各メッセージの優先順位に応じて、複数のメッセージのメッセージキューからの出力順序を制御する優先モードと;メッセージキューに複数のメッセージが蓄積されているとき、メッセージキューから先に取り出されたメッセージの処理が前記フレームワークサービスにおいて完了するまで、メッセージキューに蓄積されている他のメッセージの取り出しを禁止するシーケンス保証モードとを備える。
発明を実施するための最良の形態
以下、本発明の一実施形態を図面を参照して説明する。図1は、本実施形態の全体構成を示す。
本システムは、プレゼンテーション層1、ビジネスロジック層2、及びデータサービス層3から構成されている。
プレゼンテーション層1は、ウェブ(World Wide Web)クライアント11、ウェブ(World Wide Web)サーバ12、又はVB(Visual Basic)クライアント13を含んでいる。
ビジネスロジック層2には、本発明の原理に従うフレームワークアークテクチャ(この明細書では「RtFA:Real Time Framework Architecture」という)が適用されたサーバコンピュータシステムであるRtFAサーバ14が設けられている。RtFAサーバ14は、メッセージングサービスを行うサーバコンピュータシステム(以下、簡単に「メッセージングサービス」という)15と、フレームワークサービスを行うサーバコンピュータシステム(以下、簡単に「フレームワークサービス」という)16とを備えている。典型的には、メッセージングサービス15とフレームワークサービス16は、それぞれ、別のコンピュータマシン又は別のコンピュータマシンのセットを用いて具現化される。しかし、必ずしもそうでなければならないわけではなく、同一のコンピュータマシン又はコンピュータマシンのセットを用いて、メッセージングサービス15とフレームワークサービス16の双方がインプレメントされることも可能である。
メッセージングサービス15は、クライアント11,13とRtFAサーバ14間のメッセージのやり取りを制御する。すなわち、メッセージングサービス15は、クライアント11,13から、或る処理のためのリクエストのメッセージを受信し、そのリクエストのメッセージを、リクエストされた処理を行なうことができるフレームワークサービス16に渡す。また、メッセージングサービス15は、フレームワークサービス16から、実行された処理の結果を示すリプライのメッセージを受信し、更に、場合によっては、後続の追加の処理のための追加のリクエストのメッセージも受信する。そして、メッセージングサービス15は、そのリプライのメッセージをクライアント11,13に送ったり、追加のリクエストのメッセージをフレームワークサービス16に再び渡したりする。
メッセージングサービス15によって取り扱われる全てのメッセージの各々には、そのメッセージのサブジェクト(例えば、仕入登録リクエスト、在庫更新リクエスト、買掛登録リクエストなど)を示す識別コードであるサブジェクトIDが含まれている。このサブジェクトIDは、後述するように、メッセージングサービス15又はフレームワークサービス16によって、そのメッセージの宛先を選択する目的に利用され、そのため、「宛先サブジェクトID」とも呼ばれる。
フレームワークサービス16は、様々な種類のメッセージをそれぞれ処理するための複数のビジネスロジック(例えば、仕入処理ビジネスロジック、在庫処理ビジネスロジック、買掛処理ビジネスロジック、メッセージ変換ビジネスロジックなど)を有している。フレームワークサービス16は、メッセージングサービス15から或るメッセージを受け取ると、そのメッセージのサブジェクトIDからそのメッセージを処理するためのビジネスロジックを選び、その選んだビジネスロジックを呼び出しす。呼び出されたビジネスロジックは、そのメッセージの内容に応じた処理を行い、データサービス層9のデータを更新する。メッセージングサービス15及びフレームワークサービス16のためのコンピュータプログラムは、例えば、JAVA言語(商標)によって記述されている。
データサービス層3は、データベースサーバ(DBサーバ)17を備えている。
ウェブクライアント11とウェブサーバ12の間にはHTTP又はソケットによる通信コネクションが確立され得る。ウェブクライアント11とRtFAサーバ14との間には、ソケットによる直接的な通信コネクションが確立され得る。VBクライアント13とRtFAサーバ14との間には、ソケットによる直接的な通信コネクションが確立され得る。また、ウェブサーバ12とRtFAサーバ14との間には、ソケットによる直接的な通信コネクションが確立され得る。更に、RtFAサーバ14とDBサーバ17との間にはJDBCによる通信コネクションが確立され得る。
図2は、RtFAサーバ14が取り扱うメッセージの構成を示す。
図2に示すように、メッセージ10は、複数のサーバ制御項目と業務データとから構成される。サーバ制御項目は、RtFAサーバ14を制御するための各種のデータであり、例えば、メッセージ種別、保証モード、優先順位、サブジェクトID(宛先サブジェクトID)及び送信元情報などが含まれている。
「メッセージ種別」は、そのメッセージがP to P(Point to Point)通信のメッセージであるか、P to M(Point to Many)通信のメッセージであるかを区別する。ここで、P to P通信とは、或る1つのコンピュータシステムから別の1つのコンピュータシステムへとメッセージが送られる通信、つまり、1対1通信のことをいう。P to P通信の一例は、或るクライアントからの仕入登録リクエストのメッセージを、仕入処理を実行する或る一つのフレームワークサービスへ送る場合である。一方、P to M通信とは、或る1つ又は複数のコンピュータシステムから別の複数のコンピュータシステムへとメッセージが送られる通信、つまり、1対複数又は複数対複数の通信のことをいう。P to M通信の一例は、或る1つのフレームワークサービスからの在庫更新結果を示すメッセージを、フロントデスクの仕事を担う複数のクライアント端末へ送信する場合である。
「保証モード」は、メッセージ保証(すなわち、そのメッセージが確実に送信及び処理されることの保証)をする(“G”)か否か(“N”)を区別する。保証モードが“N”のメッセージを受信したとき、メッセージングサービス15は、そのメッセージを、揮発性の半導体メモリを用いたメッセージキュー(以下、「メモリキュー」という)に入れる。一方、保証モードが“G”のメッセージを受信したとき、メッセージングサービス15は、そのメッセージを、不揮発性のディスクストレージを用いたメッセージキュー(以下、「DB(データベース)キュー」という)に入れ、そのメッセージを送信した後も、そのメッセージをDBキューで保存しておく。従って、保証モードが“G”のメッセージについては、送信失敗やシステムダウンなどの問題が生じたとしても、後に再度、同じメッセージを送信することができる。
「優先順位」は、そのメッセージの処理の優先レベルを示す。例えば、ハイ(“H”)、ノーマル(“N”)及びロー(“L”)の3種類の優先順位がある。後述するように、メッセージングサービス15は、メッセージキュー内で複数のメッセージが待っているとき、それらのメッセージをメッセージキューから取り出す順序を、それらのメッセージのそれぞれの優先順位に応じて制御することができる。
「サブジェクトID(宛先サブジェクトID)」は、既に述べたとおり、そのメッセージのサブジェクトの種別を示す識別コードである。後述するように、メッセージングサービス15は、メッセージを受信すると、そのメッセージのサブジェクトIDに基づいて、そのメッセージの宛先となるべきコンピュータシステム(例えば、クライアント、フレームワークシステム、他のメッセージングサービスなど)を選択する。また、フレームワークサービス16は、メッセージを受信すると、そのメッセージのサブジェクトIDに基づいて、そのメッセージを処理するために呼び出すべきビジネスロジックを選択する。
「送信元情報」は、そのメッセージの送信元のサブジェクトやIPアドレスやコンピュータ名などを表す。
図3は、RtFAサーバ14の構成図である。
既に参照した図1では、1つのRtFAサーバ14しか示されていなかった。しかし、実際には、図3に示すように、複数のRtFAサーバ14を設けることができる。図3に示す例では、2つのRtFAサーバ14が設けられているが、もっと多くのRtFAサーバ14を設けることができる。
図3に示すように、各RtFAサーバ14には、一つのメッセージングサービス15と、1又は複数のフレームワークサービス16が設けられ、メッセージングサービス15とフレームワークサービス16は相互に通信可能に接続されている。メッセージングサービス15は、また、1又は複数のクライアント11,13とも通信可能に接続されている。メッセージングサービス15は、クライアント11,13及びフレームワークサービス16とそれぞれ通信する複数のスレッド171を並列に処理している。
複数のRtFAサーバ14が存在するので、メッセージングサービス15とフレームワークサービス16の組は複数組存在している。そして、複数のRtFAサーバ14のメッセージングサービス15は、相互に通信可能に接続されている。各RtFAサーバ−14のメッセージングサービス15は、他のRtFAサーバ14のメッセージングサービス15との通信を処理するスレッド171も備えている。各メッセー−ジングサービス15が持つ複数の通信スレッド171は、それぞれキープアライブ機能を有し、この機能により、そのメッセ−ジングサービス15にコネクションされたクライアント11,13、他のメッセージングサービス15、及びフレームワークサービス16と相互の正常な稼動を確認しあっている。
また、各メッセージングサービス15には、図4に例示するような管理テーブル18が関連付けられている。管理テーブル18には、そのメッセージングサービス15が伝達すべきメッセージの経路、換言すれば、そのメッセージングサービス15が取り扱う様々なメッセージの送り先、が管理される。図4に示すように、管理テーブル18には、そのメッセージングサービス15に接続された全てのコンピュータシステム(クライアント11,13、他のメッセージングサービス15、及びフレームワークサービス16)の各々について、種別、コンピュータID、IPアドレス、P to PサブジェクトID、P to MサブジェクトID及び処理中フラグなどが登録される。
「種別」は、そのコンピュータシステムの種別、例えば、フレームワークサービス(F)、メッセージングサービス(M)、クライアント端末ターミナル(T)の区別を示す。
「コンピュータID」及び「IPアドレス」は、そのコンピュータシステムの固有の識別コードとIPアドレスを示す。
「P to PサブジェクトID」は、そのコンピュータシステムが待ち受ける(つまり、そのコンピュータシステムが、そのメッセージの宛先になり得る)P to P通信用のメッセージのサブジェクトID(宛先サブジェクトID)を示す。各コンピュータシステムごとに、複数のP to PサブジェクトIDを登録することができる。
「P to MサブジェクトID」は、そのコンピュータシステムが待ち受ける(つまり、そのコンピュータシステムが、そのメッセージの宛先になり得る)P to M通信用のメッセージのサブジェクトID(宛先サブジェクトID)を示す。各コンピュータシステムごとに、複数のP to MサブジェクトIDを登録することができる。
「処理中フラグ」は、そのコンピュータシステムとの通信のためのスレッド171が、P to P通信の処理中である(「1」)か否(「0」)かを示す。
図4に示した管理テーブル18の登録内容は、図3中の左側のメッセージングサービスMes1の場合の例であり、そこには、左側のメッセージングサービスMes1に接続された全てのコンピュータシステム、すなわち、2つのフレームワークサービスFrm1、Frm2、右側のメッセージングサービスMes2及び3つのクライアント端末PC1、Pc2及びPC3が登録されている。この例によれば、1番目のフレームワークサービスFrm1は、P to P通信に関しては“A”、“B”、“C”及び“D”というサブジェクトIDをそれぞれもった4種類のメッセージを待ち受けており、また、P to M通信に関しては“0”、“P”、“Q”及び“R”というサブジェクトIDをそれぞれもった4種類のメッセージを待ち受けている。また、図中右側のメッセージングサービスMes2は、左側のメッセージングサービスMes1からのP to P通信のメッセージとして、“D”、“E”、“F”、“H”、“I”及び“J”というサブジェクトIDをそれぞれもった7種類のメッセージを待ち受けており、また、左側のメッセージングサービスMes1からのP to M通信のメッセージとして“P”、“Q”、“R”、“S”、“T”及び“U”というサブジェクトIDをそれぞれもった6種類のメッセージを待ち受けている。
再び図3を参照して、各メッセージングサービス15は、メッセージを受信すると、そのメッセージがP to P通信のものかP to M通信のものかを判断する。P to P通信のメッセージを受信したときは、メッセージングサービス15は、そのメッセージングサービス15に関連付けられている図4に例示したような管理テーブル18を参照して、その受信メッセージのサブジェクトIDとマッチするP to PサブジェクトIDのメッセージを待ち受けているコンピュータシステムを探し、見つかった1以上のコンピュータシステムの中から処理中フラグが“0”である1つのコンピュータシステムを選び、そして、選ばれた1つのコンピュータシステムにその受信メッセージを送信する。また、P to M通信のメッセージを受信したときは、メッセージングサービス15は、そのメッセージングサービス15に関連付けられている図4に示したような管理テーブル18を参照して、その受信メッセージのサブジェクトIDとマッチするP to MサブジェクトIDのメッセージを待ち受けてるコンピュータシステムを全て選び、そして、選ばれた全てのコンピュータシステムにそのメッセージを送信する。
図5は、複数のRtFAサーバ間の接続構成図である。図6は、複数のRtFAサーバ内のメッセージングサービスとフレームワークサービスの接続構成図である。
図5の上段又は下段に示すように、各RtFAサーバ14は他の全てのRtFAサーバ14と相互に通信可能に接続されている。すなわち、図6に示すように、各RtFAサーバ14のメッセージングサービス15が、他の全てのRtFAサーバ14のメッセージングサービス15と相互に通信可能に接続されている。このように複数のコンポーネントの各々が他の全てのコンポーネントと通信可能に接続されることを「メッシュ接続」という。また、図6に示すように、各メッセージングサービス15に対しては複数のフレームワークサービス16を直接連絡させることも可能である。
このように複数のメッセージングサービス15のメッシュ接続の下で、各メッセージサービス15は、所定の時期、例えばその起動時に、上述したキープアライブ機能を実行する。すなわち、各メッセージングサービス15は、起動すると、自分の管理テーブル18に既に登録されている他のメッセージングサービスの全てと逐次に接続して、自分と接続されているフレームワークシステム16及びクライアント11,13が待ち受けるメッセージのサブジェクトIDを、接続された他のメッセージングサービスの全てに通知する。通知されたサブジェクトIDは、そのメッセージングサービス15が他のメッセージングサービスから待ち受けるメッセージのサブジェクトIDとして、他のメッセージングサービスの管理テーブルに登録される。また、各メッセージングサービス15は、他のメッセージングサービスと接続しようとしたときに接続できなかった場合には、その後に一定間隔で複数回接続をリトライする。また、各メッセージサービス15は、自分の管理テーブル18に未だ登録されていない他のメッセージングサービスから接続要求を受けたときには、その未登録のメッセージングサービスと接続して、未登録のメッセージングサービスとそれぞれが待ち受けるサブジェクトIDなどを交換し合い、そして、そのメッセージングサービスを自分の管理テーブル18に登録する。このようなキープアライブ機能のおかげで、特定のメッセージングシステム15が正常に稼動してない(例えば、システムダウンした)場合には、他の正常に稼動している各メッセージングサービス15は、その正常に稼動してない特定のメッセージングシステム15をメッセージの中継経路から除外し、自分の管理テーブル18を参照して、自動的に別の中継経路を選択することができる。
次に、図7乃至図9に基づいて、メッセージングサービス15が提供する通信サービスの種類を説明する。メッセージングサービス15が提供するデータ配信サービスには、P to M(1対多)通信処理と、P to P(1対1)通信処理の2種類がある。
P to M通信処理は、前述したように、図4に例示したような管理テーブル18に登録されている各コンピュータシステムのP to MサブジェクトIDに基づいて、メッセージングサービス15が、受信したP to Mメッセージを、それを待ち受ける全てのコンピュータシステムに配信する処理である。例えば、マーケット情報が更新される都度、更新されたマーケット情報のメッセージを、1乃至n個のRtFAサーバからn個のクライアントに配信する場合に、P to M通信処理が行われる。
一方、P to P通信処理は、前述したように、図4に例示したような管理テーブル18に登録されている各コンピュータシステムのP to PサブジェクトIDに基づいて、メッセージングサービス15が、受信したP to Pメッセージを、それを待ち受けるコンピュータシステムの中の一つに送信する処理である。例えば、クライアントからの或る処理のためのリクエストのメッセージを、その処理を行うビジネスロジックを有した一つのフレームワークサービスに送る場合に、P to P通信処理が行われる。
図7は、P to M通信処理のメッセージ中継方法の一例を示している。パブリッシャーとしての或るフレームワークサービス16から出力された或るP to Mメッセージは、そのメッセージを待ち受ける全てのメッセージングサービス15に配信され、そして、それらのメッセージングサービス15から、そのメッセージを待ち受ける全てのクライアント11、13に配信される。
図8は、P to M通信処理の一例を示すフローチャートである。まず、サブスクライバの一つであるクライアントT1は、所定のメッセージングサービスMes1との間で、ソケットによるコネクションを確立する。また、クライアントT1から当該メッセージングサービスMes1に対し自己が待ち受けるP to MメッセージのサブジェクトID“X”を登録する。当該メッセージングサービスMes1は、自己に関連付けられた管理テーブル18に、クライアントT1のP to MサブジェクトID“X”を追加する。一方、クライアントT1は、メッセージングサービスMes1からのメッセージの配信を待つ。その後、メッセージングサービスMes1に接続する他のメッセージングサービスMes2,Mes3が起動したとき、メッセージングサービスMes1の管理テーブル18に既に登録されたクライアントT1のP to MサブジェクトID“X”は、他のメッセージングサービスMes2及びMes3にも通知されて、それらの管理テーブル18に、メッセージングサービスMes1のP to MサブジェクトIDとして“X”が追加される。
ここで、パブリッシャーとしてのフレームワークサービスFrm3からサブジェクトID“X”をもつP to Mメッセージが配信されると、これを受けたメッセージングサービスMes3は、自己に関連付けられた管理テーブル18を参照し、サブジェクトID“X”を待ち受ける全てのメッセージングサービスMes1及びMes2をピックアップし、それらに当該メッセージを引き渡す。
クライアントT1とコネクトされたメッセージングサービスMes1は、当該メッセージを受信すると、自己に関連付けられた管理テーブル18からサブジェクトID“X”を待ち受けるクライアントT1をピックアップし、当該メッセージをそのクライアントT1に配信する。
図示してないが、各フレームワークサービスも、そのフレームワークサービスと直接連絡可能なメッセージングサービスへ、そのフレームワークサービスが待ち受けるP to MメッセージのサブジェクトIDを通知する。それにより、そのフレームワークサービスが待ち受けるP to MサブジェクトIDが、そのメッセージングサービスの管理テーブルに登録される。その後、そのメッセージングサービスは、その管理テーブルに登録されたフレームワークサービスのP to MサブジェクトIDを、そのメッセージングサービスが待ち受けるP to MサブジェクトIDとして、他の全てのメッセージングサービスに通知する。これにより、他の全てのメッセージングサービスの管理テーブルにも、そのフレームワークサービスが待ち受けるP to MサブジェクトIDが登録されることになる。結果として、そのフレームワークサービスは、P to MサブジェクトIDをもったメッセージを、いずれのメッセージングサービスからも受信できるようになる。
次に図9は、P to P通信処理を示すフローチャートである。
上述したP to M通信のサブジェクトIDの管理テーブルへの登録と同様に、各メッセージングサービスの管理テーブルには、そのメッセージングサービスが直接連絡可能なクライアント及びフレームワークサービスがそれぞれ待ち受けるP to PサブジェクトID、並びに、他の全てのメッセージングサービスがそれぞれ待ち受けるP to PサブジェクトIDが予め自動的に登録されている。
そのような状態において、図9に示すように、まず或るクライアントPC1は、所定のメッセージングサービスMes1とコネクションを確立する。
続いて、クライアントPC1から或るサブジェクトID“A”を持ったP to Pのリクエストメッセージが送信されると、これを受信したメッセージングサービスMes1は、自己の管理テーブル18を参照して、そのサブジェクトID“A”を待ち受けるコンピュータシステムの中の一つ、例えば、フレームワークサービスFrm1を選び、それに当該リクエストメッセージを引き渡す(矢印▲1▼)。フレームワークサービスFrm1は、引き受けたリクエストメッセージのサブジェクトID“A”に対応したビジネスロジックを呼び出して、そのメッセージの処理を実行し、その実行結果を示すリプライメッセージをメッセージングサービスMes1に戻す(矢印▲3▼)。そして、メッセージングサービスMes1は、そのリプライメッセージをクライアントPC1に返信する。そのリプライメッセージをを取得したクライアントPC1は、メッセージングサービスMes1とのコネクションを開放する。
或いは、メッセージングサービスMes1は、クライアントPC1から受信したサブジェクトID“A”のリクエストメッセージを、上記の例のようにフレームワークサービスFrm1へ送る代わりに、サブジェクトID“A”を待ち受ける他のメッセージングサービスMes2へ送る(矢印▲2▼)こともできる。例えば、フレームワークサービスFrm1が処理中であるが、メッセージングサービスMes2は処理中でないときには、そのようなことが行われる。その場合、メッセージングサービスMes2は、そのリクエストメッセージを受けると、自己の管理テーブル18を参照して、サブジェクトID“A”を待ち受ける一つのコンピュータシステム、例えば、フレームワークシステムFrm2を選んで、それに当該リクエストメッセージを送って処理させる(矢印▲4▼)。フレームワークシステムFrm2から処理結果のリプライメッセージが返されると(矢印▲5▼)、メッセージングサービスMes2は、そのリプライメッセージをメッセージングサービスMes1に返し(矢印▲6▼)、そして、メッセージングサービスMes1は、そのリプライメッセージをクライアントPC1へ返す。
上述したように、メッセージングサービス15は、自己と直接連絡可能なフレームワークサービス16へメッセージを送るだけでなく、他のメッセージングサービスを経由して他のフレームワークサービスへメッセージを送ることも可能である。これにより、複数のRtFAサーバ14間のロードバランシング(負荷平衡)が可能である。
図10は、メッセージングサービスがもつロードバランシング機能の説明図である。
図10に示すように、各RtFAサーバ14において、各フレームワークサービス16は、メッセージングサービス15と連絡する複数のスレッド19を並列に処理している。また、各メッセージングサービス15は、クライアントから受信したメッセージを一時的に保持するメッセージキュー15aを備えている。
各メッセージングサービス15のキュー15aに蓄積された各メッセージは、そのメッセージングサービス15に関連付けられた管理テーブルに従って、そのメッセージのサブジェクトIDに対応する何れかのフレームワークサービス16に引き渡される。その場合、メッセージングサービス15は、自己に直接連絡可能で且つそのサブジェクトIDを待ち受ける特定のフレームワークサービス16に、そのメッセージを引き渡すことができる。しかし、その時、その特定のフレームワークサービス16のスレッド19に空きが無い(つまり、処理中である)場合、メッセージングサービス15は、その処理中のフレームワークサービス16ではなく、そのサブジェクトIDを待ち受ける他のメッセージングサービス15に、そのメッセージを引渡す。そのメッセージを受け取った当該他のメッセージングサービス15は、当該他のメッセージングサービス16が直接に連絡可能であり且つそのサブジェクトIDを待ち受ける特定のフレームワークサービス16に、そのメッセージを引き渡す。このようなメッセージ中継を可能にするために、各メッセージングサービス15は、自分のメッセージキュー15aを常時監視し、そのメッセージキュー15aに処理待ちのメッセージが溜まっている場合は、直ちにそのキューからメッセージを取り出し、自分の管理テーブルを参照してそのメッセージの送り先をてきぱきと決定して、そのメッセージを送り出す。これにより、複数のRtFAサーバのロードバランスが適正化される。結果として、どのメッセージも可能な限り早期に処理され、よって、従来は夜間にバッチ処理で行われていたバックオフィスの仕事が、リアルタイムに近い態様で早期に実行できる。
続いて、フレームワークサービス16の構成について説明する。
図11は、フレームワークサービス16の構成を示す。
フレームワークサービス16の実体は、複数のフレームワークスレッド25による並列処理で構成されている。各フレームワークスレッド25は、予め準備された一群のビジネスロジック20にアクセスし、そして、メッセージングサービス15から引き渡されたメッセージのサブジェクトIDに対応する特定のビジネスロジック22をロードして実行する。ここで、ビジネスロジックとは、例えばJAVAコードでプログラムされたプロセスであって、それぞれ固有のメッセージ処理を実行するものである。主要なビジネスロジックの多くは、データベースサーバ17に管理されるデータベース21に対し、メッセージの内容に応じた所定の操作を要求する。
図12は、フレームワークサービス16の動作説明図である。
フレームワークサービス16のビジネスロジックの動作方式には、大きく分けて同期方式と、非同期方式の2種類がある。フレームワークサービス16は、クライアントからの或るリクエストメッセージに応答して、ただ1つのビジネスロジックのみを実行する場合がある。また、フレームワークサービス16は、リクエストメッセージに直接的に応答して1つのビジネスロジックを実行し、それに連係して、後続の1以上のビジネスロジックを実行する場合もある。図12には、クライアント11,13からの仕入登録リクエストのメッセージに直接的に応答して仕入処理のビジネスロジックが実行され、これに連係して、在庫処理及び会計処理という2つの後続のビジネスロジックが実行される例が示されている。
クライアントからのリクエストメッセージに直接的に応答してただ一つのビジネスロジックのみを実行する場合、フレームワークサービス16は、その唯一のビジネスロジックを通常は同期方式で実行し、そして、その実行結果を示すリプライメッセージをクライアントへ返す。
一方、クライアントからのリクエストメッセージに直接的に応答して1つのビジネスロジックを実行した後、これに連係して、後続の1以上のビジネスロジックを実行する場合、フレームワークサービス16は、最初の一つのビジネスロジックは通常は同期方式で実行するが、2番目以降のビジネスロジックは同期方式で実行することもできるし、非同期方式で実行することもできる。図12には、最初の仕入処理のビジネスロジックのみが同期方式で実行され、後続の在庫処理と会計処理のビジネスロジックは非同期方式で実行される例が示されている。図12の例のように複数のビジネスロジックが実行される場合、フレームワークサービス16は、同期方式で実行したビジネスロジックの全てが完了すると、その実行結果を示すリプライメッセージをクライアントへ返す。非同期方式で実行されるべきビジネスロジックは、クライアントからは切り離されたバックグラウンドで(つまり、クライアントからはオフラインで)実行される。
図12に示すように、フレームワークサービス16は、フロー定義ファイル23を有しており、そこには、そのフレームワークサービス16によるビジネスロジックの実行スケジュール(最初に実行すべき1つのビジネスロジック名、連係する後続の1又はそれ以上のビジネスロジックがある場合にはその後続のビジネスロジックへ渡すメッセージのサブジェクトID及び連係方式(同期か非同期か)、など)が、様々なメッセージのサブジェクトIDごとに定義されている。フレームワークサービス16は、一つのメッセージを受け取ると、フロー定義ファイル23を参照して、その受信されたメッセージのサブジェクトIDに対応するビジネスロジック実行スケジュールを選択し、選択されたスケジュールに従って1以上のビジネスロジックを実行する。その選択されたスケジュールには、少なくとも、そのメッセージに応答して直接的に実行されるべき1つのビジネスロジックが記述されているから、フレームワークサービスは、まず、その1つのビジネスロジックをロードして実行する。もし、その選択されたスケジュールに、更に、連係する後続の1以上のビジネスと連係方式とが記述されていたなら、フレームワークサービスは、最初のビジネスロジックの実行後に、その後続のビジネスロジックを、その連係方式で(つまり、同期的に又は非同期的に)実行することになる。なお、先行のビジネスロジックと後続のビジネスロジックは、同一のフレームワークサービスによって実行される場合もあるが、上述したロードバランシングにより別のフレームワークサービスによって実行される場合もある。
図13は、フロー定義ファイル23の簡単な例を示す。
図13に示すように、フロー定義ファイル23には、サブジェクトIDごとにビジネスロジック実行スケジュールをそれぞれ記述した複数のセンテンス231、232、233、234が存在する。フロー定義ファイル23は、例えばテキストファイルであり、よって、定義センテンス231、232、233、234の追加、削除、変更などの編集は、テキストエディタなどを用いて簡単に行える。
図13の一番上の定義センテンス231内に説明されているように、各定義センテンスは、セミコロン“;”で区切られた複数のサブセンテンスから構成される。最初のサブセンテンスには、入力サブジェクトID、ログキュー名、実行ビジネスロジック名などが含まれる。2番目以降の各サブセンテンスには、メッセージ変換ビジネスロジック名、出力サブジェクトID、連係モードなどが含まれる。最初のサブセンテンスは、メッセージに直接的に応答して実行されるべき1つのビジネスロジックに関するものであり、これは全ての定義センテンスに必ず記述される。2番目以降のサブセンテンスは、最初のビジネスロジックに連携して実行される後続の1以上のビジネスロジックに関するものであり、よって、後続のビジネスネスロジックがある場合にのみ記述される。
最初のサブセンテンスの項目の意味は次のとおりである。
ここで、「入力サブジェクトID」は、フレームワークシステムが受信したメッセージのサブジェクトIDである。
「ログキュー名」は、その受信したメッセージをログに書く場合に用いられるログキューの名称である。例えば、“@DEF”はデフォルトのログキューを用いることを意味し、“@NONE”はログに書かれないことを意味する。
「実行ビジネスロジック名」は、そのメッセージに直接応答して実行されるべきビジネスロジックの名称である。図示の定義センテンス232〜234の例では、入力サブジェクトIDと同じコードが用いられている。
2番目以降の各サブセンテンスの項目の意味は次のとおりである。
「メッセージ変換ビジネスロジック名」は、先行のビジネスロジックの処理結果データを後続のビジネスロジックに渡されるメッセージに変換するために実行されるメッセージ変換ビジネスロジックの名称である。メッセージ変換が不要な場合、ここには“@NONE”と書かれる。
「出力サブジェクトID」は、後続のビジネスロジックに渡されるメッセージのサブジェクトIDである。
「連係モード」は、後続のビジネスロジックを同期方式で実行するか非同期方式で実行するかを示す。例えば、“SYNC”は同期方式を意味し、“ASYNC”は非同期方式を意味する。
図13の2番目の定義センテンス232は次のスケジュール(1)を例示している。
(1)“BuySelBuy”というサブジェクトIDのメッセージ(例えば、仕入検索リクエスト)に応答して、“BuySelBuy”という名称のビジネスロジック(例えば、仕入検索処理)を実行する。
3番目の定義センテンス233は、次のスケジュール(1)〜(3)を例示している。
(1)“BuyUpdBuy”というサブジェクトIDのメッセージ(例えば、仕入更新リクエスト)に応答して、まず、“BuyUpdBuy”という名称のビジネスロジック(例えば、仕入更新処理)を実行する。
(2)次に、“CnvBuyUpdBuy”という名称の変換ビジネスロジックを用いて、先行する“BuyUpdBuy”ビジネスロジックの出力データのフォーマットを変換して、“InvUpdInv”というサブジェクトIDをもったメッセージ(例えば、在庫更新リクエスト)を作成してメッセージサービスへ出力する。
(3)出力された“InvUpdInv”というメッセージを処理することになる後続のビジネスロジック(例えば、在庫更新処理)は、同期的に実行される。
さらに、4番目の定義センテンス234は、次のスケジュール(1)〜(5)を例示している。
(1)“BuyInsBuy”というサブジェクトIDのメッセージ(例えば、仕入検品更新リクエスト)に応答して、まず、“BuyInsBuy”という名称のビジネスロジック(例えば、仕入検品更新処理)を実行する。
(2)次に、“CnvBuyInsBuy1”という名称の変換ビジネスロジックを用いて、先行する“BuyInsBuy”ビジネスロジックの出力データのフォーマットを変換して、“InvUpdInv”というサブジェクトIDをもったメッセージ(例えば、在庫更新リクエスト)を作成してメッセージサービスへ出力する。
(3)出力された“InvUpdInv”というメッセージを処理することになる後続のビジネスロジック(例えば、在庫更新処理)は、非同期的に実行される。
(4)また、“CnvBuyInsBuy2”という名称の変換ビジネスロジックを用いて、先行する“BuyInsBuy”ビジネスロジックの出力データのフォーマットを変換して、“AccDbtBuy”というサブジェクトIDをもったメッセージ(例えば、買掛金登録リクエスト)を作成してメッセージサービスへ出力する。
(5)出力された“AccDbtBuy”というメッセージを受け取る後続のビジネスロジック(例えば、買掛金登録処理)は、非同期的に実行される。
再び図12を参照する。各フレームワークサービス16は、それに関連付けられたフロー定義ファイル23を参照することにより、処理対象のメッセージに対応するビジネスロジック22を選択し実行することができ、また、後続処理の必要性を判断し、必要であれば、後続処理のためのリクエストメッセージを作成してメッセージングサービス15へ戻すことができる。
ここで、一のフレームワークスレッドによる処理の後続処理として、他のフレームワークスレッドによる処理を非同期的に行わせる場合、フレームワークサービス16は、先行のフレームワークスレッドでのビジネスロジックによる処理のリザルト(後続処理のためのリクエストメッセージ)を一度メッセージングサービス15のキュー15aにインプットし、その後、他のフレームワークスレッドがメッセージングサービス15のキュー15aからそのリクエストメッセージをゲットすることによって、後続処理を行う。ここで、先行の処理を行うフレームワークシステム16と、後続の処理を行なうフレームワークシステム16は、同じ場合もあるし、異なる場合もある。各種の処理をどのフレームワークシステム16に割り当てるかということは、既に説明したメッセージングサービスのロードバランシング機能によって制御される。
各フレームワークサービス16は、メッセージドリブンの構成を採っている。即ち、メッセージングサービス15からのメッセージの引渡しをトリガーとしてビジネスロジックのロード及びビジネスロジックによる処理を実行するようになっている。
以上説明した本実施形態によると、フレームワークサービスのビジネスロジックの連係方法に同期方式と非同期方式を用意し、随時に簡単に書き換え可能なフロー定義ファイルの記述によってビジネスロジックの実行スケジュールを制御できるので、複雑なビジネスロジックフローを定義し、また必要に応じて変更することが容易である。
また、上記実施形態では、メッセージングサービスをメッシュ接続すると共に、キープアライブ機能によって、メッセージングサービス相互間、メッセージングサービスとクライアントとの間、及びメッセージングサービスとフレームワークサービスとの間で、相互にステータス(待ち受けるメッセージのサブジェクトID、処理中か否か、など)を通知し合う。そして、各メッセージングサービスは、周囲のクライアント、フレームワークサービス及び他のメッセージングサービスの現在のステータスを、管理テーブルに記憶している。それにより、いずれのRtFAサーバがダウンした場合でも、各メッセージングサービスは、正常に使えるメッセージの中継経路を自動的に選択し、メッセージを正しいシステムへ伝えることができる。結果として、フォルトトレラント性が向上し、システムの稼動の信頼性が向上し、システムの拡張が容易になり、更に、システムメンテナンスも容易に行うことができる。
また、メッセージングサービスは、P to P通信とP to M通信のような複数種類のデータ配信方法を備え、管理テーブルに登録されているステータスに応じて、どのメッセージをどのコンピュータシステムにどのデータ配信方法で送るかというメッセージングスケジュールを自動的に選択することができる。その結果、柔軟なメッセージングサービスを提供することができる。
また、メッセージングサービスのロードバランシング機能により、複数のRtFAサーバの負荷バランスを自動的に調整することができ、高いパフォーマンスを提供することができる。
ここで、本発明の範囲は、本実施形態に限られない。例えば、JAVAベース以外のプラットフォームを用いることによっても同等のシステムの実現は可能である。また、メッセージングサービスの上述した特徴と、フレームワークサービスの上述した特徴とは、上述した実施形態のように組み合わされている必要は、必ずしも無い。
以下、上記実施形態に具備される幾つかの詳細な機能を説明する。
図14は、フロー定義ファイル23の更新システムを示すブロック図である。
フレームワークサービス16は、定義ファイル23を更新するためのプログラムモジュールである定義ファイル更新モジュール101を備え、この更新モジュール101は、外部からリロードコマンド111を受付けると、フレームワークサービス16のメインメモリ103内にロードされている現在使用中の定義ファイル23を、そこに矢印113で示すように外部記憶装置(例えば、ディスクストレージ107に記憶されている新しい定義ファイル109を上書きすることで、更新する。ディスクストレージ107内の新しい定義ファイル109は、テキストエディタ105などを用いて容易に編集することができる。所望の時に、上述したリロードコマンド111を入力することで、メインメモリ103内の定義ファイル23が、編集された新しい定義ファイル109と同じ内容に更新される。これにより、フレームワークサービス16の稼動中であっても所望の時に、定義ファイル23の内容を書き換えて、これをフレームワークサービス16の以後の動作に反映させることができる。従って、実行するビジネスロジック22の種類の変更や、後続の処理を行なうか否か、又は、複数のビジネスロジックの連係した動作を同期的に行うか、非同期的に行うか、といった処理スケジュール変更を、システムを稼動させたままの状態で行うことができる。
図15は、フレームワークサービスのメッセージ変換処理機能を示す。
フレームワークサービス16のためのコンピュータプログラムは例えばJAVA言語で構築される。図15に示すように、フレームワークサービス16は、入力メッセージのフォーマット変換を行うための入力変換機能102と、出力メッセージのフォーマット変換を行うための出力変換機能103とを備えている。入力変換機能102は、メッセージングサービス15からの例えばXMLファイルの形式の入力メッセージを、JAVAのオブジェクトの形式に変換する。出力変換機能103は、メッセージングサービス15に出力するJAVAのオブジェクトの形式のメッセージを、XML形式に変換する。入力変換機能102は、XMLのDTD(文書型定義)の記述に基づいてJAVAクラスのメンバ変数を取得し、これをインスタンス化することによってJAVAオブジェクト化したメッセージを得る。また、出力変換機能103は、JAVAクラスのメンバ変数に基づいてXMLのDTDを形成し、XML化したメッセージを得る。
図16は、メッセージングサービスのメッセージキューの構成を示す。
上述の説明では、メッセージキュー15aを単一のキューであるかのごとくに説明した。しかし、実際には、図16に示すように、メッセージキュー15aには3種類のキュー、すなわち、メモリキュー153とリングバッファ154とDB(データベース)キュー155が含まれている。メモリキュー153とリングバッファ154は、RAM151のような高速アクセスが可能な記憶装置に設けられる。DBキュー155は、ハードディスク(HDD)のよう不揮発性の大容量の記憶装置に設けられる。
メモリキュー153は、メッセージングサービスがクライアントから受信したP to Pのリクエストメッセージのように、そのメッセージを処理した結果を受け取る相手が存在し、メッセージの保証が不要であるというメッセージを、一時的に待たせるために使用される。一方、DBキュー155は、メッセージングサービスがフレームワークサービスから受信した非同期の後続処理のためのリクエストメッセージのように、メッセージの保証が必要なメッセージを、一時的に待たせるために使用される。メッセージの保証が必要か否かは、図2に示したメッセージ10の構成中の「保証モード」で判断される。
リングバッファ154は、P to M通信のメッセージを一時的に待たせるために使用される。各コンピュータシステムは、リンクバッファ154を巡回しながらリングバッファ154から自分の待ち受けるメッセージを見つけ出して取っていくことができる。図16では、リングバッファ154は一つのバッファのごとくに示されているが、実際には、“H”、“N”及び“L”の3種類の優先順位にそれぞれ対応した3つのリングバッファのセットである。
DBキュー155は、メッセージングサービスがフレームワークサービスから受信した後続処理のためのリクエストメッセージのように、メッセージの保証が必要なメッセージを、一時的に待たせるために使用される。
メッセージグサービスは、上述したキュー153、154、155に対するメッセージの書き込みと読み出しを制御するメッセージキュー管理機能104を有する。メッセージキュー管理機能104は、メモリキュー153をDBキュー155より優先して調べ、メモリキュー153にP to Pメッセージが有れば、そのメッセージをメモリキュー153から取り出して、それを待ち受ける一つのコンピュータシステムへそのメッセージを送る。また、もしメモリキュー153にP to Pメッセージが1つも無ければ、メッセージキュー管理機能104は、DBキュー155を調べ、DBキュー155内にP to Pメッセージが有れば、そのメッセージをDBキュー155から読み、それを待ち受ける一つのコンピュータシステムへそのメッセージを送る。
メッセージキュー管理機能104は、図16に示すように、DBキュー155内のメッセージMに対しては、そのメッセージの処理状態を示すステータス情報Sを付加し、そのメッセージが処理されればステータス情報Sを「未処理」から「処理済」へと書き換える。また、そのメッセージの処理に関してエラーが生じれば、ステータス情報Sを「エラー」とする。エラーの原因としては、データ不整合、プログラムロジックのミスなどがある。DBキュー155に一旦入れられたメッセージは、システムダウンやエラーなどの問題が発生したとしても、消されずにDBキュー155内に保存される。
メッセージキュー管理機能104は、「エラー」のステータス情報Sを「未処理」に書き換える機能を有する。そして、システムダウンやエラーなどの問題が発生した場合、後に、メッセージキュー管理機能104は、、ステータス情報Sが「未処理」のメッセージを再度読み出して再送信する。それにより、メッセージの確実な処理が保証される。また、エラーになったメッセージのステータス情報Sを追うことにより、エラーの原因究明も可能である。
また、メッセージキューの管理機能104は、外部コマンドに応じて、「エラー」のステータス情報Sを「処理済」に書き換える機能も備えていている。例えば、システムの状況によっては、エラーステータスのメッセージを未処理ステータスに変更して再出力することが適切でない場合がある。また、メッセージに生じたエラーの程度によっては、フレームワークサービスに再出力して処理させるよりも、コマンド入力により当該メッセージに修正を加えた方が適切な場合もある。このような場合、「エラー」のステータス情報Sを「処理済」に書き換える機能が利用される。上述した「エラー」のステータス情報Sを「未処理」に書き換える機能と、「処理済」に書き換える機能とは、任意に選択することができる。
さらに、メッセージキュー管理機能104は、管理テーブル18(図4)に登録されている全てのコンピュータシステムの各々ごとに、リングバッファ155の読みしアドレスポインタを有し、各コンピュータシステム用の読み出しアドレスポインタでリングバッファ155中を巡回しながら、そのコンピュータシステムが待ち受けるP to Mメッセージをリングバッファ155から見つけ出し、その見つかったP to Mメッセージを読んで、そのコンピュータシステムへ送る。
図17及び図18は、メッセージキュー管理機能104がメッセージキューにメッセージを格納する動作フローを示す。
図17に示すように、メッセージキュー管理機能104は、クライアントからメッセージを受信すると(161)、まず、そのメッセージに関して、クライアントから非トランザクションモード(NON−TRANモード)とトランザクションモード(TRANモード)の何れが指定されているかを判断する(163)。ここで、NON−TRANモードが指定されている場合、メッセージキュー管理機能104は、メッセージを受信すれば直ちに、そのメッセージをメッセージキューに格納する(つまり、そのメッセージの処理を進める)。一方、TRANモードが指定されている場合、メッセージキュー管理機能104は、メッセージを受信しても、直ちにはそのメッセージをメッセージキューには格納せず、別の一時キューに溜めておき、クライアントからCOMMIT(実行)コマンドが送られると、そのときにはじめて、そのメッセージをメッセージキューに格納する(つまり、そのメッセージの処理を進める)。クライアントは、TRANモードを指定してリクエストメッセージを発した場合、COMMITコマンドを発しない限り、そのリクエストメッセージを後で撤回したり修正したりすることが可能である。
図17のステップ163の判断の結果がNON−TRANモードである場合、メッセージキュー管理機能104は、その受信したメッセージがP to P通信のものかP to M通信のものかを判断する(165)。その判断の結果がP to P通信である場合、メッセージキュー管理機能104は、その受信したメッセージをキューに入れる(167)。キューに入れられたメッセージは、すぐに読み出されてフレームワークサービスへ送られてそこで処理される。その処理の結果として、フレームワークサービスから後続処理のリクエストメッセージが返された場合、メッセージキュー管理機能104は、その後続処理のリクエストメッセージをDBキューに入れる(169)。そして、メッセージキュー管理機能104は、その受信メッセージの処理結果を示す成功メッセージをクライアントへ返す(171)。
ステップ165の判断の結果がP to M通信である場合、メッセージキュー管理機能104は、その受信したメッセージの優先順位(図2)が“H”、“N”又は“L”の何れであるか判別し(173)、そして、判別された優先順位に対応したリングバッファに、その受信メッセージを格納する(175、177又は179)。リングバッファに入れられたP to Mメッセージは、それを待ち受ける全てコンピュータシステムに送信されることになる。そして、メッセージキュー管理機能104は、その受信メッセージについて成功メッセージをクライアントへ返す(181)。
ステップ163の判断結果がNON−TRANモードであった場合、処理は図8に示すステップ181へ進む。ステップ181で、メッセージキュー管理機能104は、その受信メッセージを上述したメッセージキューとは別の一時キューに格納する.その後、クライアントから、その受信メッセージに関してCOMMITコマンドを受信すると、メッセージキュー管理機能104は、一時キューからそのメッセージを取り出して、そのメッセージについてステップ185以降の処理を行う。ステップ185以降の処理は、既に説明した図7中のステップ165以降の処理と同じである。
図19は、メッセージキュー管理機能104のメッセージ読出機能を示す。
図19に示すように、メッセージングサービス15のメッセージキュー管理機能104は、クライアント及びフレームワークサービス16からそれぞれ受信したメッセージを、上述したような構成をもつメッセージキュー15aに蓄積する。メッセージキュー管理機能104は、メッセージキュー15aのうち特に図16に示したメモリキュー153及びDBキュー155からメッセージを取り出す動作に関して、優先モード104aとシーケンス保証モード104bの2種類の機能を有している。優先モード104aは、メッセージの優先順位に基づいてメッセージキューからのメッセージの取り出し順序を制御する。一方、シーケンス保証モード104bは、メッセージキューから先に取り出されたメッセージの処理がフレームワークサービスにおいて完了するまで、当該メッセージキューに蓄積されている後続のメッセージの取り出しを禁止することにより、複数メッセージの一定の処理順序を保証する。各メッセージのサブジェクトID)に応じて、又は予め設定された各メッセージキューのモード設定に応じて、各メッセージキューについて優先モード104aを実行するか、シーケンス保証モード104bを実行するか、が選択される。シーケンス保証モード104bは、例えば、複数のクライアントからそれぞれ売上処理のリクエストメッセージが来たとき、先にリクエストされた売上処理が完了した後に後から来た売上処理のリクエストを実行するというような一定の処理順序を保証したい場合に、適用される。
図20は、優先モード104aのための記憶域の構成を示す。図21は、優先モード104aの動作の流れを示す。
図20に示すように、優先モード104aは、ソータブルスタック211とシンプルタック213という2つのスタックメモリと、“H”、“N”及び“L”という3つの優先順位にそれぞれ対応した例えば3つのエントリ215H、215N及び215Lとを使用する。なお、エントリの数をもっと多くすることもできる。例えば、図示の3つのエントリの他に、“H”に対応したエントリをもう一つ追加するというようにである。
初期的に、各エントリ215H、215N及び215Lには、それぞれ、インデックスとして、例えば図示のような“5”、“3”及び“1”という数値が設定される。インデックスの初期値が大きいほど、優先的レベルが高いことを意味する。
そして、初期的に、全てのエントリ215H、215N及び215Lが、図示のようにソータブルスタック211に積まれ、一方、シンプルスタック213は空である。
ソータブルスタック211は、そこに積まれている複数のインデックスの配列を、インデックスの大きい順に、最も大きいインデックスをもったエントリが一番上に、最も小さいインデックスをもったエントリが一番下になるように、自動的に並べ替える。従って、ソータブルスタック211からは、インデックスのより大きいエントリほど、より先に取り出される。
シンプルスタック213は、単純に、後から入れられたエントリを先に入れられたエントリの上に積む。従って、シンプルスタック213からは、入れられた時がより後のエントリほど、より先に取り出される。
優先モード104aは、図21に示すフローに従って、ソータブルスタック211とシンプルスタック213との間でのエントリの移動と、エントリのインデックスの操作を行なうことにより、メッセージキュー(メモリキュー153又はDBキュー155)からメッセージを取り出す順序を制御する。
以下、図21に示す流れを説明する。まず、優先モード104aは、ソータブルスタック211から、一番上の(つまり、インデックスが最も大きい)1つのエントリを取り出し(221)、そのエントリをシンプルスタック213に積む(223)。次に、優先モード104aは、シンプルスタック213の一番上のエントリの優先順位とマッチするメッセージがメッセージキューに有るか否かをチェックする(225)。その結果、マッチするメッセージが無ければ、処理はステップ221へ進む。また、上記チェックの結果、マッチするメッセージが有れば、優先モード104aは、そのマッチしたメッセージをメッセージキューから取り出す(227)。取り出されたメッセージは、何れかのフレームワークシステムにて処理されることになる。その後、優先モード104aは、シンプルスタック213内のエントリ数が1つか否かをチェックする(229)。その結果、シンプルスタック213内のエントリ数が2つ以上であれば、シンプルスタック213から全てのエントリを順に取り出してソータブルスタック211に積む(237)。そして、優先モード104aは、ステップ227でメッセージキューから取り出したメッセージについて、フレームワークシステムからの処理結果を示すリプライメッセージをクライアントへ返す(239)。
ステップ229でのチェックの結果、シンプルスタック213内のエントリ数が1つである場合、優先モード104aは、シンプルスタック213内のエントリのインデックスを1だけ減らす(231)。そして、優先モード104aは、その減らされたインデックスが“−1”であるかどうかチェックし(233)、“−1”でなければ、処理をステップ237へ進め、一方、“−1”であれば、そのインデックスを初期値に戻して(235)から、処理をステップ237へ進める。
以上の操作により、メッセージキュー内のメッセージの並び順序をそれらのメッセージの優先順位を考慮して修正した順序で、メッセージキューからメッセージの取り出されることになる。すなわち、メッセージキューに入っているメッセージの順序が、優先順位において、例えば図20に示すような“H”、“H”、“L”、“H”、“H”、“H”、“N”であった場合、そのメッセージキューから取り出されるメッセージの順序は、優先順位において、“H”、“H”、“N”、“H”、“H”、“H”、“L”となる。
図22は、シーケンス保証モード104bの動作の流れを示す。
図22に示すように、シーケンス保証モード104bは、メッセージの取り出し要求が生じると(241)、まず、メッセージキューをロックして(243、245、257)、メッセージキューからの他のメッセージ取り出しを禁止する。次に、シーケンス保証モード104bは、メッセージキューから1つのメッセージを読出す(247、249)。読み出されたメッセージは、何れかのフレームワークシステムで処理され(251)、その処理により然るべきデータベースの更新のコミット(又は処理失敗の場合にはロールバック)が行われる(253)。その後、シーケンス保証モード104bは、メッセージキューのロックを解除する(255)。
上記の操作により、先行するメッセージの処理が完了した後に、次のメッセージの処理が実行されるため、メッセージの一定の処理順序が保証される。
図23は、フレームワークサービス16のメッセージ判別機能を示す。
図23に示すように、フレームワークサービス16は、メッセージ判別ビジネスロジック106を有し、メッセージングサービス15からメッセージを受け取ると、メッセージ判別ビジネスロジック106を実行する。メッセージ判別ビジネスロジック106は、その受信メッセージのサブジェクトIDにマッチするサブジェクトIDが書かれた定義センテンスを、そのフレームワークシステム16に関連付けられたフロー定義ファイル23から探す。マッチした定義センテンスが見つかれば、次に、その定義センテンスに記述されている実行ビジネスロジック22が実行されることになる。しかし、マッチした定義センテンスが見つからなければ、メッセージ判別ビジネスロジック106は、処理できない旨のエラーのリプライメッセージをメッセージングサービス15へ返信し、そのリプライメッセージはクライアントへ送られる。既に説明したように、メッセージングサービス15は、管理テーブル18(図4)に基づいて、各メッセージをそのメッセージを待ち受けるコンピュータシステムにのみ送信するから、原則的には、或るメッセージが誤ったフレームワークシステムに送られることはない。しかし、万が一、クライアントからの或るメッセージが誤ったフレームワークサービスに送られることが発生したとしても、クライアントは直ちに処理できない旨のエラーのリプライメッセージを受け取れるので、長々と待たされること無く、速やかに次の行動に移ることができる。また、フレームワークサービス16は、予め登録された識別情報を有するメッセージに限ってフレームワークサービスでの処理を許可するサービス停止中モードを備え、当該モードが設定されている場合に予め登録されていない識別情報を有するメッセージをクライアントから受信した場合は、当該メッセージを受け付けない旨のメッセージをクライアントに返信する。
図24は、フレームワークサービスがもつメッセージ変換ビジネスロジックを示す。
図24に示すように、フレームワークサービス16は、1又はそれ以上のメッセージ変換ビジネスロジック105を有している。それらのメッセージ変換ビジネスロジック105は、例えば、図13に示したフロー定義ファイル23の定義センテンス233及び234に記述された“CnvBuyUpdBuy”、“CnvBuyInsBuy1”及び“CnvBuyInsBuy2”などである。各メッセージ変換ビジネスロジック105は、予め定められた1つのビジネスロジックBL1に対応していうる。或る定義センテンスに従って或るビジネスロジックBL1が実行されると、引き続いて、これに対応したメッセージ変換ビジネスロジック105が実行される。メッセージ変換ビジネスロジック105は、先行のビジネスロジックBL1から出力される処理結果のメッセージの形式を、後続のビジネスロジックBL2への入力メッセージの形式に適合させるフォーマット変換機能と、先行のビジネスロジックBL1から出力されたメッセージのパラメータに応じて、このメッセージを後続ビジネスロジックBL2に入力するか否かを判定するメッセージフィルタリング機能とを備えている。例えば、先行のビジネスロジックBL1が扱うメッセージのパラメータ配置と、後続ビジネスロジックBL2が扱うメッセージのパラメータ配置が異なる場合、メッセージ変換ビジネスロジック105は、前者のパラメータ配置を後者のパラメータ配置に変換する。また、先行ビジネスロジックBL1の出力メッセージの内容が特別のもの(例えば、リクエストの拒否、データベースの更新失敗、トランザクションのロールバックなど)であり、そのため、後続のビジネスロジックBL2の実行が無意味であるという場合がある。そのような場合、メッセージ変換ビジネスロジック105は、メッセージフィルタリング機能により、後続ビジネスモデルBL2への入力メッセージの生成をオミットする。ここで、先行ビジネスロジックBL1とメッセージ変換ビジネスロジック105との間、又はメッセージ変換ビジネスロジック105と後続のビジネスロジックBL2との間には、メッセージを一時保持するメッセージキューを介在させてもよい。
以上の説明は、本発明の説明のための例示にすぎない。本発明は、上述した実施形態のみに限らず、他の多くのシステム構成のバリエーションにおいても実施することができる。
【図面の簡単な説明】
図1は、本実施形態の全体構成図である。
図2は、RtFAサーバ14が取り扱うメッセージの構成を示すブロック図である。
図3は、RtFAサーバ14の構成図である。
図4は、メッセージングサービス15に関係付けられる管理テーブル18の例を示す。
図5は、複数のRtFAサーバ間の接続構成図である。
図6は、複数のメッセージングサービス間の接続構成図である。
図7は、P to M(1対多)通信処理のメッセージ中継方法を示す説明図である。
図8は、P to M通信処理の一例を示すフローチャートである。
図9は、P to P(1対1)通信処理を示すフローチャートである。
図10は、メッセージングサービスのロードバランシング機能の説明図である。
図11は、フレームワークサービスの構成を示すブロック図である。
図12は、フレームワークサービスの動作説明図である。
図13は、フロー定義ファイルの簡単な例を示す。
図14は、フロー定義ファイルの更新システムを示すブロック図である。
図15は、フレームワークサービスのメッセージ変換処理機能を示すブロック図である。
図16は、メッセージングサービスのメッセージキューの構成を示すブロック図である。
図17は、メッセージキュー管理機能がメッセージキューにメッセージを格納する動作を示すフローチャートである。
図18は、図17のフローチャートの続きである。
図19は、メッセージキュー管理機能のメッセージ読出機能を示すブロック図である。
図20は、優先モードのための記憶域の構成を示す。
図21は、優先モードの動作の流れを示す。
図22は、シーケンス保証モードの動作の流れを示す。
図23は、フレームワークサービスのメッセージ判別機能を示すブロック図である。
図24は、フレームワークサービスのメッセージ変換ビジネスロジックを示すブロック図である。
Claims (20)
- クライアントと通信可能に接続されるフレームワークシステムにおいて:
複数のビジネスロジックと;
前記複数のビジネスロジックと関連付けられ、前記クライアントからのリクエストのメッセージに応答して、選択された1又はそれ以上のビジネスロジックを実行し、そして、前記クライアントへのリプライのメッセージを出力するフレームワークサービスと;
前記クライアントと前記フレームワークサービスとの間に介在し、前記クライアントと前記フレームワークサービスとの間でメッセージを中継するメッセージングサービスと;
前記フレームワークサービスに関連付けられたフロー定義ファイルと
を備え;
前記リクエストのメッセージは、前記リクエストのメッセージのサブジェクトに関するサブジェクトIDを含んでおり;
前記フロー定義ファイルは、複数の異なるサブジェクトIDにそれぞれ対応した複数の定義センテンスを含んでおり、各定義センテンスは所定の1又はそれ以上のビジネスロジックのための実行スケジュールを記述しており;
前記フレームワークサービスは、前記メッセージングサービスから前記リクエストのメッセージを受け取ると、前記定義ファイル内の前記リクエストのメッセージのサブジェクトIDに対応した定義センテンスを参照し、参照された定義センテンスに記述された実行スケジュールに従って、実行するべき1又はそれ以上のビジネスロジックを選択する;
フレームワークシステム。 - 請求項1記載のフレームワークシステムにおいて、前記フレームワークサービスが稼動している間に、前記フロー定義ファイルを更新するフロー定義更新コンポーネントを更に備えたフレームワークシステム。
- 請求項1記載のフレームワークシステムにおいて、
前記フロー定義ファイル内の少なくとも一つの定義センテンスは、一つの先行のビジネスロジックと少なくとも一つの後続のビジネスロジックとを含む複数のビジネスロジックの連係された実行のための連係実行スケジュールを記述しており、前記連係実行スケジュールは、前記後続のビジネスロジックの実行に関して同期方式と非同期方式の選択に関する連係モードを含んでおり;
前記フレームワークサービスは、前記連係実行スケジュールに従って前記複数のビジネスロジックを実行する場合、前記連係実行スケジュール内の前記連係モードに従って、前記先行のビジネスロジックの実行と同期的に又は非同期的に、前記後続のビジネスロジックを実行する;
フレームワークシステム。 - 請求項3記載のフレームワークシステムにおいて、
前記連係実行スケジュールは、前記先行のビジネスロジックに関する情報と、前記後続のビジネスロジックのための第2のリクエストのメッセージに関する情報とを含み;
前記フレームワークシステムは、前記連係実行スケジュールに従って前記複数のビジネスロジックを実行する場合、前記先行のビジネスロジックを実行した後、前記先行のビジネスロジックの実行結果を用いて前記第2のリクエストのメッセージを生成して、前記第2のリクエストのメッセージを前記メッセージングサービスに送り、その後、前記メッセージングサービスから前記第2のリクエストのメッセージを受けると、前記第2のリクエストのメッセージに対応する定義センテンスの実行スケジュールに従って、前記後続のビジネスロジックを実行する;
フレームワークシステム。 - 請求項4記載のフレームワークシステムにおいて、
前記メッセージングサービスが、前記第2のリクエストのメッセージを保証するための不揮発性のメッセージキューを備え;
前記メッセージキューは、前記第2のリクエストメッセージが前記フレームワークサービスへ送られた後も、前記第2のリクエストメッセージを消さずに保存する;
フレームワークシステム。 - 請求項5記載のフレームワークシステムにおいて、
前記メッセージグサービスが、前記メッセージキューで保存されている前記第2のリクエストのメッセージを、必要に応じて、前記フレームワークシステムへ再送信する;
フレームワークシステム。 - クライアントと通信可能に接続されるフレームワークシステムにおいて:
前記クライアントからのリクエストのメッセージを処理し、そして、前記クライアントへのリプライのメッセージを出力するフレームワークサービスと;
前記クライアントと前記フレームワークサービスとの間に介在し、前記クライアントと前記フレームワークサービスとの間でメッセージを中継するメッセージングサービスと
を備え;
前記メッセージングサービスは、前記リクエストのメッセージと前記リプライのメッセージを含むP to P通信のメッセージだけでなく、前記クライアントと前記フレームワークサービスとの間のP to M通信のメッセージをも中継する;
フレームワークシステム。 - 請求項7記載のフレームワークシステムにおいて、
前記メッセージングサービスが、前記P to M通信のメッセージを一時的に待たせるためのリングバッファを有する;
フレームワークシステム。 - 請求項7記載のフレームワークシステムにおいて、
前記P to P通信のメッセージの各々には、メッセージ保証の要否に関する保証モードが含まれており;
前記メッセージングサービスが、メッセージ保証が不要なP to P通信のメッセージを一時的に待たせるための第1のメッセージキューと、メッセージ保証が必要なP to P通信のメッセージを一時的に待たせるための不揮発性の第2のメッセージキューとを有する;
フレームワークシステム。 - クライアントと通信可能に接続されるフレームワークシステムにおいて、
前記クライアントと接続された少なくとも一つのメッセージングサービスを含んだ、相互にメッシュ接続されている複数のメッセージングサービスと;
前記複数のメッセージングサービスにそれぞれ接続された複数のフレームワークサービスと
を備え;
前記複数のフレームワークサービスの各々は、予め定めれたサブジェクトIDをもったリクエストのメッセージを待ち受け、前記予め定めれたサブジェクトIDをもったリクエストのメッセージを受信すると、受信されたリクエストのメッセージを処理し、そして、前記クライアントへのリプライのメッセージを出力することができ;
前記複数のメッセージンサービスは、前記クライアントと前記複数のフレームワークサービスの間でのメッセージの中継、及び、前記複数のフレームワークシステム相互間でのメッセージの中継を行う;
フレームワークシステム。 - 請求項10記載のフレームワークシステムにおいて、
各メッセージングサービスが、他の1又はそれ以上のメッセージングサービスの稼動を監視し、他の或るメッセージングサービスについて正常な稼動を検出できなかった場合は、前記他の或るメッセージングサービスへメッセージを中継する代わりに、他の正常に稼動しているメッセージングサービスへメッセージを中継する;
フレームワークシステム。 - 請求項10記載のフレームワークシステムにおいて、
各メッセージングサービスが、前記各メッセージングサービスに接続されたフレームワークサービスの状態を監視し、監視された前記状態に応じて、前記クライアントからの前記リクエストのメッセージを前記各メッセージングサービスに接続されたフレームワークサービスに中継するか、他の何れかのメッセージングサービスに中継するかを選択する;
フレームワークシステム。 - 請求項10記載のフレームワークシステムにおいて、
各メッセージングサービスは独自の管理テーブルを有し;
前記各メッセージングサービスの独自の管理テーブルには、前記各メッセージングサービスに接続されたフレームワークシステムが待ち受けるメッセージのサブジェクトID、及び、前記各メッセージングサービスに接続された他の1又はそれ以上のメッセージングサービスがそれぞれ待ち受けるメッセージのサブジェクトIDが登録されており;
前記各メッセージングサービスは、メッセージを受信したとき、前記各メッセージングサービスの独自の管理テーブルを参照して、受信されたメッセージのサブジェクトIDにマッチするサブジェクトIDを待ち受けるフレームワークサービス又は他のメッセージングサービスを探し、見つかったフレームワークサービス又は他のメッセージングサービスへ前記受信されたメッセージを中継する;
フレームワークシステム。 - 請求項13に記載のフレームワークシステムにおいて、
各メッセージングサービスは、前記各メッセージングサービスの独自の管理テーブルの内容に基づいて、前記各メッセージングサービスが待ち受けるメッセージのサブジェクトIDを、前記各メッセージングサービスに接続されている他の1又はそれ以上のメッセージングサービスに対して通知する;
フレームワークシステム。 - 請求項14記載のフレームワークシステムにおいて、
各メッセージングサービスは、前記各メッセージングサービスに接続されている他の各メッセージングサービスの各々から、前記他の各メッセージングサービスが待ち受けるメッセージのサブジェクトIDを通知されたとき、通知された内容が前記各メッセージングサービスの独自の管理テーブルに未だ登録されていなければ、前記通知された内容を前記独自の管理テーブルに追加登録する;
フレームワークシステム。 - クライアントと通信可能に接続されるフレームワークシステムにおいて:
前記クライアントからのリクエストのメッセージを処理し、そして、前記クライアントへのリプライのメッセージを出力するフレームワークサービスと;
前記クライアントと前記フレームワークサービスとの間に介在し、前記クライアントと前記フレームワークサービスとの間でメッセージを中継するメッセージングサービスと
を備え;
前記リクエストのメッセージは所与の優先順位を有しており;
前記メッセージングサービスが、前記リクエストのメッセージを一時的に待たせるためのメッセージキューと、前記メッセージキューの入出力を管理するキュー管理コンポーネントとを備え;
前記キュー管理コンポーネントは、
前記メッセージキューに複数のメッセージが蓄積されているとき、各メッセージの優先順位に応じて、前記複数のメッセージの前記メッセージキューからの出力順序を制御する優先モードと、
前記メッセージキューに複数のメッセージが蓄積されているとき、前記メッセージキューから先に取り出されたメッセージの処理が前記フレームワークサービスにおいて完了するまで、前記メッセージキューに蓄積されている他のメッセージの取り出しを禁止するシーケンス保証モードと
を備える;
フレームワークシステム。 - クライアントと通信可能に接続されるフレームワークシステムの動作方法において:
複数の異なるサブジェクトIDにそれぞれ対応したビジネスロジック実行スケジュールが記述されたフロー定義ファイルを用意するステップと;
前記クライアントから、所与のサブジェクトIDをもつリクエストのメッセージを受信するステップと;
前記フロー定義ファイル内の、受信されたリクエストのメッセージのサブジェクトIDに対応したビジネスロジック実行スケジュールを参照するステップと;
参照されたビジネスロジック実行スケジュールに従って、予め用意された複数のビジネスロジックの中から、1又はそれ以上のビジネスロジックを選択するステップと;
選択された1又はそれ以上のビジネスロジックを実行するステップと;
前記クライアントへリプライのメッセージを返すステップと;
を備えた方法。 - クライアントと通信可能に接続されるフレームワークシステムの動作方法において:
一つのクライアントと一つのフレームワークサービスとの間で、リクエストとリプライのメッセージをやりとりするP to P通信のステップと;
同じメッセージを複数のクライアント又は複数のフレームワークサービスへ送るP to M通信のステップと;
を備えた方法。 - クライアントと通信可能に接続されるフレームワークシステムの動作方法において:
相互にメッシュ接続されている複数のメッセージングサービスの中の一つが、前記クライアントからリクエストのメッセージを受信するステップと;
前記一つのメッセージングサービスが、受信されリクエストのメッセージを、前記一つのメッセージングサービスに接続されたフレームワークサービス、及び前記一つのメッセージングサービスに接続された他の何れか一つのメッセージングサービスの内の選択された一方へ、中継するステップと;
前記受信されたリクエストのメッセージが前記他の一つのメッセジングサービスへ中継されたとき、前記他の一つのメッセジングサービスが、前記受信されリクエストのメッセージを、前記他の一つのメッセージングサービスに接続されたフレームワークサービス、及び前記他の一つのメッセージングサービスに接続された更に他の何れか一つのメッセージングサービスの内の選択された一方へ、中継するステップと;
を備えた方法。 - クライアントと通信可能に接続されるフレームワークシステムの動作方法において:
前記クライアントからリクエストのメッセージを受信するステップと;
受信されたリクエストのメッセージをメッセージキューに入れるステップと;
前記メッセージキューからリクエストのメッセージを取り出すステップと;
取り出されたリクエストのメッセージを処理するステップと
を備え;
前記取り出すステップは、
前記メッセージキューに複数のメッセージが蓄積されているとき、各メッセージの優先順位に応じて、前記複数のメッセージの前記メッセージキューからの出力順序を制御する優先モードと、
前記メッセージキューに複数のメッセージが蓄積されているとき、前記メッセージキューから先に取り出されたメッセージの処理が完了するまで、前記メッセージキューに蓄積されている他のメッセージの取り出しを禁止するシーケンス保証モードと
を有した方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000401794 | 2000-12-28 | ||
JP2000401794 | 2000-12-28 | ||
PCT/JP2001/011532 WO2002054263A1 (fr) | 2000-12-28 | 2001-12-27 | Systeme de structure |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006041465A Division JP3944230B2 (ja) | 2000-12-28 | 2006-02-17 | フレームワークシステム |
JP2006041454A Division JP3944229B2 (ja) | 2000-12-28 | 2006-02-17 | フレームワークシステム |
JP2006041472A Division JP3944231B2 (ja) | 2000-12-28 | 2006-02-17 | フレームワークシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2002054263A1 true JPWO2002054263A1 (ja) | 2004-05-13 |
JP3803707B2 JP3803707B2 (ja) | 2006-08-02 |
Family
ID=18866181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002555295A Expired - Lifetime JP3803707B2 (ja) | 2000-12-28 | 2001-12-27 | フレームワークシステム |
Country Status (4)
Country | Link |
---|---|
US (2) | US7177899B2 (ja) |
EP (1) | EP1347390A4 (ja) |
JP (1) | JP3803707B2 (ja) |
WO (1) | WO2002054263A1 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1639458A4 (en) * | 2003-06-12 | 2010-05-05 | Reuters America | BUSINESS PROCESS AUTOMATION |
US20050071848A1 (en) * | 2003-09-29 | 2005-03-31 | Ellen Kempin | Automatic registration and deregistration of message queues |
US7676791B2 (en) * | 2004-07-09 | 2010-03-09 | Microsoft Corporation | Implementation of concurrent programs in object-oriented languages |
US7836449B2 (en) * | 2005-04-29 | 2010-11-16 | Microsoft Corporation | Extensible infrastructure for task display and launch |
DE102005043041A1 (de) * | 2005-09-09 | 2007-03-22 | Siemens Ag | Verfahren und Vorrichtung zum Aufbau einer themenbezogenen Kommunikationsverbindung |
JP2007114902A (ja) * | 2005-10-18 | 2007-05-10 | Just Syst Corp | 情報処理装置、情報処理方法および情報処理プログラム |
GB0524021D0 (en) | 2005-11-25 | 2006-01-04 | Ibm | A system for preserving message order |
JP2007226385A (ja) * | 2006-02-22 | 2007-09-06 | Fujitsu Ltd | メッセージキュー制御プログラム及びメッセージキューイングシステム |
US20080228715A1 (en) * | 2007-03-12 | 2008-09-18 | Terabyte Media, Llc | Apparatus and method for distributed information retrieval and processing |
US8370839B2 (en) * | 2007-07-20 | 2013-02-05 | International Business Machines Corporation | Monitoring message queues in message queuing information systems and initiating batch jobs to perform functions on the message queues |
US8843938B2 (en) * | 2008-07-02 | 2014-09-23 | International Business Machines Corporation | Methods, systems, and computer program products for asynchronous resumption of a dataflow |
US9141446B2 (en) * | 2008-10-24 | 2015-09-22 | Sap Se | Maintenance of message serialization in multi-queue messaging environments |
US8296411B2 (en) * | 2010-03-01 | 2012-10-23 | International Business Machines Corporation | Programmatically determining an execution mode for a request dispatch utilizing historic metrics |
US8468172B2 (en) * | 2010-05-14 | 2013-06-18 | Sap Ag | Integrated application server and data server processes with matching data formats |
JP2010211826A (ja) * | 2010-05-27 | 2010-09-24 | Fujitsu Ltd | メッセージキュー制御プログラム、メッセージキューイングシステム及びメッセージキューイングシステムの制御方法 |
US9372902B2 (en) | 2011-09-23 | 2016-06-21 | International Business Machines Corporation | Accessing and editing virtually-indexed message flows using structured query langauge (SQL) |
US10002033B2 (en) | 2012-02-07 | 2018-06-19 | Microsoft Technology Licensing, Llc | Efficiently receiving messages across a large number of messaging entities |
US9201938B2 (en) * | 2012-05-21 | 2015-12-01 | Sap Se | Parameter driven data format conversion in client/server architectures |
JP6459654B2 (ja) * | 2014-11-07 | 2019-01-30 | 富士通株式会社 | イベントドリブンシステム、情報処理装置、イベントドリブンプログラムおよびイベントドリブン方法 |
CN105939365B (zh) * | 2015-06-29 | 2019-03-15 | 杭州迪普科技股份有限公司 | 主控板用户态从业务板内核态获取数据的方法及装置 |
CN108255620B (zh) * | 2018-01-08 | 2021-11-05 | 北京奇艺世纪科技有限公司 | 一种业务逻辑处理方法、装置、业务服务器及系统 |
US11277369B1 (en) * | 2021-03-02 | 2022-03-15 | Servicenow, Inc. | Message queue architecture and interface for a multi-application platform |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5856171A (ja) * | 1981-09-30 | 1983-04-02 | Fujitsu Ltd | マルチ・システムにおける資源情報管理方法 |
JPS59220866A (ja) * | 1983-05-30 | 1984-12-12 | Hitachi Ltd | 分散処理方式 |
JPS62126457A (ja) * | 1985-11-27 | 1987-06-08 | Fujitsu Ltd | 分散デ−タ処理方式 |
JPS62212763A (ja) * | 1986-03-13 | 1987-09-18 | Fujitsu Ltd | 計算機ネツトワ−クにおけるジヨブ実行方式 |
JPH0765526B2 (ja) | 1987-08-25 | 1995-07-19 | 株式会社日立製作所 | 内燃機関の空燃比制御装置 |
JPH01129345A (ja) * | 1987-11-13 | 1989-05-22 | Toshiba Corp | マルチプロセッサ・システム |
JPH01253036A (ja) * | 1988-03-31 | 1989-10-09 | Nippon Telegr & Teleph Corp <Ntt> | メッセージ・パッシング管理方式 |
JPH02109154A (ja) * | 1988-10-18 | 1990-04-20 | Nippon Telegr & Teleph Corp <Ntt> | ジョブ制御方法 |
JPH02113362A (ja) * | 1988-10-24 | 1990-04-25 | Nippon Telegr & Teleph Corp <Ntt> | 分散処理システム |
JPH02275563A (ja) | 1989-04-17 | 1990-11-09 | Nippon Telegr & Teleph Corp <Ntt> | 情報処理システムにおけるサーバ利用方式 |
JP2972232B2 (ja) * | 1989-08-30 | 1999-11-08 | 株式会社日立製作所 | 計算機ネツトワーク・システムの制御方式 |
CA2148459C (en) * | 1993-10-08 | 2000-01-11 | Paul Clarke | Message transmission across a network |
US5577211A (en) * | 1994-05-11 | 1996-11-19 | Ibm Corporation | System and method using chained structure queues for ordering of message delivery between connected nodes wherein unsuccessful message portion is skipped and retried |
US5768506A (en) * | 1994-09-30 | 1998-06-16 | Hewlett-Packard Co. | Method and apparatus for distributed workflow building blocks of process definition, initialization and execution |
US5634127A (en) * | 1994-11-30 | 1997-05-27 | International Business Machines Corporation | Methods and apparatus for implementing a message driven processor in a client-server environment |
GB2313524A (en) * | 1996-05-24 | 1997-11-26 | Ibm | Providing communications links in a computer network |
US5867495A (en) * | 1996-11-18 | 1999-02-02 | Mci Communications Corporations | System, method and article of manufacture for communications utilizing calling, plans in a hybrid network |
US5999525A (en) * | 1996-11-18 | 1999-12-07 | Mci Communications Corporation | Method for video telephony over a hybrid network |
US6405239B1 (en) * | 1996-12-09 | 2002-06-11 | Scientific-Atlanta, Inc. | Using a hierarchical file system for indexing data broadcast to a client from a network of servers |
JP3954689B2 (ja) * | 1997-06-12 | 2007-08-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メッセージ処理方法、メッセージ処理装置及びメッセージ処理を制御するプログラムを格納する記憶媒体 |
US6012084A (en) * | 1997-08-01 | 2000-01-04 | International Business Machines Corporation | Virtual network communication services utilizing internode message delivery task mechanisms |
US6131385A (en) | 1997-08-18 | 2000-10-17 | Trw Inc. | Integrated pulsed propulsion system for microsatellite |
US5960404A (en) * | 1997-08-28 | 1999-09-28 | International Business Machines Corp. | Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation |
JPH11120009A (ja) | 1997-10-14 | 1999-04-30 | Toshiba Tec Corp | プロセス間通信制御装置 |
US6047324A (en) * | 1998-02-05 | 2000-04-04 | Merrill Lynch & Co. Inc. | Scalable distributed network controller |
JP3514421B2 (ja) | 1998-03-31 | 2004-03-31 | 株式会社日立ハイテクインスツルメンツ | 刻印認識装置及びその認識方法 |
US6490611B1 (en) | 1999-01-28 | 2002-12-03 | Mitsubishi Electric Research Laboratories, Inc. | User level scheduling of inter-communicating real-time tasks |
JP2000242697A (ja) * | 1999-02-19 | 2000-09-08 | Kokusai Electric Co Ltd | 情報配信システム |
JP4146983B2 (ja) * | 1999-02-26 | 2008-09-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | サーバ・オブジェクトのメソッドを呼び出すプロセス方法及びデータ処理システム |
US6986018B2 (en) * | 2001-06-26 | 2006-01-10 | Microsoft Corporation | Method and apparatus for selecting cache and proxy policy |
-
2001
- 2001-12-27 JP JP2002555295A patent/JP3803707B2/ja not_active Expired - Lifetime
- 2001-12-27 US US10/204,740 patent/US7177899B2/en active Active
- 2001-12-27 EP EP01995024A patent/EP1347390A4/en not_active Withdrawn
- 2001-12-27 WO PCT/JP2001/011532 patent/WO2002054263A1/ja active Application Filing
-
2007
- 2007-01-03 US US11/649,016 patent/US7366751B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1347390A1 (en) | 2003-09-24 |
US7177899B2 (en) | 2007-02-13 |
EP1347390A4 (en) | 2009-04-08 |
US7366751B2 (en) | 2008-04-29 |
US20070130247A1 (en) | 2007-06-07 |
WO2002054263A1 (fr) | 2002-07-11 |
JP3803707B2 (ja) | 2006-08-02 |
US20030014551A1 (en) | 2003-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3803707B2 (ja) | フレームワークシステム | |
JP3944231B2 (ja) | フレームワークシステム | |
US5826269A (en) | Electronic mail interface for a network server | |
US7421546B2 (en) | Intelligent state engine system | |
JP4397385B2 (ja) | コンピュータに格納されたコンピュータプロセッサ命令として実装されている方法およびコンピュータにより読み取り可能な記憶媒体 | |
US7580970B2 (en) | Systems and methods for database synchronization | |
US7577687B2 (en) | Systems and methods for synchronizing databases | |
JP3892987B2 (ja) | メッセージ・ブローカ・データ処理装置、方法、及び記録媒体 | |
US5978836A (en) | Workflow systems and methods | |
US7526576B2 (en) | Computer network system using encapsulation to decompose work units for synchronizing and operating a second database from a first database | |
US7707177B2 (en) | Computer network system for building, synchronising and/or operating a second database from/with a first database, and procedures for it | |
US7614057B2 (en) | Entity linking system | |
US20090271466A1 (en) | Data logging with network interfacing feature | |
JP3944229B2 (ja) | フレームワークシステム | |
JP3944230B2 (ja) | フレームワークシステム | |
JP7083850B2 (ja) | 多規格メッセージ処理 | |
JPH06290098A (ja) | 分散データベース処理方法 | |
RU2744566C1 (ru) | Способ и система интеграции информационных ресурсов предприятия | |
GB2330497A (en) | Destination inconsistency in store and forward conferencing system | |
JP2002092331A (ja) | 証券決済管理システム、証券決済管理方法 | |
GB2384329A (en) | Workflow system employing mobile agents | |
WO2006119790A1 (en) | Methods and systems for electronic records management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051220 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060217 |
|
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: 20060313 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060329 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3803707 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: 20090519 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130519 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20220519 Year of fee payment: 16 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |