JP2005292981A - メッセージ管理装置、データ処理システム及びそのためのコンピュータプログラム - Google Patents
メッセージ管理装置、データ処理システム及びそのためのコンピュータプログラム Download PDFInfo
- Publication number
- JP2005292981A JP2005292981A JP2004104089A JP2004104089A JP2005292981A JP 2005292981 A JP2005292981 A JP 2005292981A JP 2004104089 A JP2004104089 A JP 2004104089A JP 2004104089 A JP2004104089 A JP 2004104089A JP 2005292981 A JP2005292981 A JP 2005292981A
- Authority
- JP
- Japan
- Prior art keywords
- message
- module
- module identifier
- destination
- identifier
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 59
- 238000004590 computer program Methods 0.000 title claims description 7
- 238000000034 method Methods 0.000 claims abstract description 179
- 230000008569 process Effects 0.000 claims abstract description 165
- 238000004891 communication Methods 0.000 claims abstract description 27
- 238000007726 management method Methods 0.000 claims description 87
- 230000005540 biological transmission Effects 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Abstract
【目的】モジュール間でのメッセージの通信を効率的に行なえるようにする。
【解決手段】データ処理システム50は、複数のプロセス52,54と、プロセス間のメッセージ通信を管理するメッセージマネージャ80とを含む。プロセス52,54の各々は、1又は複数の入力及び出力を持ち、入力データに所定の処理を行なうモジュール60,62,64,70,72,74と、プロセス内におけるメッセージ通信を管理するメッセージマネージャ66,76とを含む。メッセージマネージャ66,76は、プロセス内のモジュールから受けたメッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて送信先モジュールを決定し、そのモジュールがプロセス内か外かに従って、メッセージをプロセス内で配信する処理と、メッセージマネージャ80に送信する処理とを選択的に行なう。
【選択図】 図2
【解決手段】データ処理システム50は、複数のプロセス52,54と、プロセス間のメッセージ通信を管理するメッセージマネージャ80とを含む。プロセス52,54の各々は、1又は複数の入力及び出力を持ち、入力データに所定の処理を行なうモジュール60,62,64,70,72,74と、プロセス内におけるメッセージ通信を管理するメッセージマネージャ66,76とを含む。メッセージマネージャ66,76は、プロセス内のモジュールから受けたメッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて送信先モジュールを決定し、そのモジュールがプロセス内か外かに従って、メッセージをプロセス内で配信する処理と、メッセージマネージャ80に送信する処理とを選択的に行なう。
【選択図】 図2
Description
この発明は、コンピュータ上で動作する機能モジュールの間のメッセージ通信に関し、特に、複数のモジュールで一つのプロセスを構成し、複数のプロセスで一つのタスクを実現するシステムにおいて、モジュール間のメッセージ通信を高速化するシステムに関する。
実時間の音声認識システム等の構築過程においては、音声認識のための処理の設定を様々に変えて、認識率等の性能を確認したいことがある。そのために例えばオプション値等を変えて同じプログラムを動作させるだけでなく、処理の流れそのものも自由に変更して実験できれば便利である。そのため、それぞれ特有の機能を持つ複数のモジュールを予め準備し、それらモジュールを目的にあわせて適切な形で組合せることができるシステムがあれば好ましい。
さらに、実験結果を早く確認するためには、一つのコンピュータ上だけでなく、複数のコンピュータを互いに結合し、それらコンピュータ上で別々に、互いに連携させながらモジュールを動作させることができれば便利である。
そのための原理的構成として考えられるものを図1に示す。図1に示すシステム20は、第1のプロセス22と第2のプロセス24とを含む。
第1のプロセス22は、第1のモジュール30と、第2のモジュール32と、第3のモジュール34とを含む。第2のプロセス24は、第4のモジュール36と、第5のモジュール38と、第6のモジュール40とを含む。
例えば第1のプロセス22をあるコンピュータ上で実行し、第2のプロセス24を別のコンピュータで実行することで、全体的な処理速度の向上を図ることができる。もちろん、第1のプロセス22と第2のプロセス24とを同一のコンピュータ上で動作させても問題はない。
こうしたシステムを実現するためには、あるモジュールの出力を別のモジュールの入力に与えるため、予め各モジュールの入力と出力とを明確に定義しておかなければならないが、それに加えて各モジュール間及びプロセス間でのデータ(メッセージ)の受け渡しをどのように実現するかを考える必要がある。
例えば同じプロセスに含まれるモジュールであれば、プロセス内のメモリ空間を共有しているため、互いのメッセージ交換は高速に行なえる。しかしプロセス間の通信に要するシステムのオーバヘッドは大きく、プロセス間のメッセージ通信には比較的時間がかかる。
そうした問題を解決するために、あるモジュールの出力先が同じプロセス内か別プロセスかで、それぞれ異なる通信方式で通信するようにモジュールを設計することが考えられる。
しかし、モジュールの設計を出力先にあわせて変えるのでは、モジュールの組合せが固定されてしまい、モジュール化の当初の目的を達成できない。従って、モジュールが属するプロセスに関わらず、モジュール化の利点を残しながら、モジュール間の通信を効率的に行なうことができるシステムが望まれている。
それゆえに本発明の目的は、自由に組合せたモジュール間でのメッセージの通信を効率的に行なうことが可能なメッセージ管理装置、及びそのようなメッセージ管理装置を備えたデータ処理システムを提供することである。
本発明の第1の局面に係るメッセージ管理装置は、複数のモジュールを含むプロセス内において、複数のモジュール相互の間のメッセージ通信、及び複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのメッセージ管理装置であって、各モジュールはいずれもモジュール識別子により一意に特定され、各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、メッセージ管理装置は、メッセージを一時格納するためのメッセージキューと、メッセージキューに格納されたメッセージを、プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールがプロセス内のモジュールか否かに従って、当該メッセージをメッセージキューに格納する処理と、プロセス外の所定のメッセージ送信先に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む。
好ましくは、メッセージ振分手段は、プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、取得するための手段により取得された送信先モジュール識別子を、受けたメッセージの送信先モジュール識別子に設定するための手段と、取得するための手段により取得された送信先モジュール識別子が、モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていると判定されたことに応答して、受信したメッセージをメッセージキューに格納するための手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていないと判定されたことに応答して、受信したメッセージをプロセス外の所定のメッセージ送信先に送信するための手段とを含む。
本発明の第2の局面に係るメッセージ管理装置は、各々が1又は複数のモジュールを含む複数のプロセスからなるシステムにおいて、モジュール間のメッセージ通信を管理するためのメッセージ管理装置であって、システム内の各モジュールは、いずれもモジュール識別子により一意に特定され、各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、メッセージ管理装置は、予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得し、取得された送信先モジュール識別子により特定されるモジュールを含むプロセスに受けたメッセージを配信するためのメッセージ振分手段とを含む。
本発明の第3の局面に係るコンピュータプログラムは、コンピュータにより実行されると、上記したいずれかのメッセージ管理装置として当該コンピュータを動作させる。
本発明の第4の局面に係るデータ処理システムは、複数のプロセスと、各モジュール間でのデータの流れを実現するメッセージ通信を管理するためのプロセス間メッセージ管理手段とを含むデータ処理システムである。複数のプロセスの各々は、各々が1又は複数の入力及び出力を持ち、入力されるデータに対し所定の処理を行なって出力する複数のモジュールと、当該プロセス内において、複数のモジュール相互の間のメッセージ通信、及び複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのプロセス内メッセージ管理手段とを含む。各モジュールはいずれもモジュール識別子により一意に特定される。各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含む。プロセス内メッセージ管理手段は、メッセージを一時格納するためのメッセージキューと、メッセージキューに格納されたメッセージを、プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するための第1のメッセージフロー管理手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、第1のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールがプロセス内のモジュールか否かに従って、当該メッセージをメッセージキューに格納する処理と、プロセス間メッセージ管理手段に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む。
好ましくは、メッセージ振分手段は、プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、第1のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、取得するための手段により取得された送信先モジュール識別子を、受けたメッセージの送信先モジュール識別子に設定するための手段と、取得するための手段により取得された送信先モジュール識別子が、モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていると判定されたことに応答して、受信したメッセージをメッセージキューに格納するための手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていないと判定されたことに応答して、受信したメッセージをプロセス外の所定のメッセージ送信先に送信するための手段とを含む。
本発明の第5の局面に係るコンピュータプログラムは、コンピュータにより実行されると、上記したいずれかのデータ処理システムとして当該コンピュータを動作させる。
以下、本発明の一実施の形態に係るシステムについて説明する。本システムは、複数のモジュールを組合せることにより、音声認識を行なうためのシステムである。
音声のような時系列データを処理する場合、発話単位で処理を行なうと、すなわち、話し終わってからまとめて処理を行なうと、少なくとも発話時間分のタイムラグが発生する。その結果、リアルタイムに処理することができない。
そこで本システムでは、音声データを10msec程度の時間間隔で、所定の長さの単位(これをフレームと言う)に分割して、フレーム単位で各モジュールの間でデータを受け渡しながら処理を実行する。フレーム単位のデータは、あるモジュールに入力され、そのモジュールで当該フレームに対する処理を行なった後に、次のモジュールに渡される。このフレーム単位のデータを「イベントメッセージ(以後イベントと略す)」という。
イベントには、データの種類に応じていくつかの型がある。例えば、生の音声データの場合はWAVE型、特徴パラメータの場合はFEATURE型等、である。従ってモジュールの入出力においては、そこに入力されるデータ、又はそこから入力されるデータがどのような型かを明確に定義しておく必要がある。
そして、システムを組む場合には、目的に従ってモジュールを選択し、どのモジュールのどの出力をどのモジュールのどの入力に与えるかを、データの型を考慮しながら決定する必要がある。このように、モジュール間のデータの流れを予め記述したものを本明細書ではフロー定義と呼び、典型的にはコンピュータ読取可能な形式で記憶装置に格納される。
図2に本システム50のブロック図を示す。この本システム50は、図1に示すシステム20と同様、第1のプロセス52及び第2のプロセス54を含む。本システム50はさらに、第1のプロセス52及び第2のプロセス54をそれぞれ構成するモジュール間のデータの流れを定義するフロー定義ファイル58と、第1のプロセス52及び第2のプロセス54、並びに本システム50の外部とに接続され、第1のプロセス52及び第2のプロセス54内のモジュール間、及びこれらモジュールと本システム50の外部との間のイベントの流れをフロー定義ファイル58の記述に従って制御するためのモジュールマネージャ56とを含む。
第1のプロセス52は、第1のモジュール60と、第2のモジュール62と、第3のモジュール64と、これら3つのモジュール60,62及び64の間、ならびにこれらモジュールとモジュールマネージャ56との間のイベントの流れをフロー定義ファイル58の記述に従って制御し、プロセス内のメッセージ通信を管理するためのメッセージマネージャ66とを含む。
第2のプロセス54も第1のプロセス52と同様、第4のモジュール70と、第5のモジュール72と、第6のモジュール74と、これら3つのモジュール70,72及び74の間、ならびにこれらモジュールとモジュールマネージャ56との間のイベントの流れをフロー定義ファイル58の記述に従って制御するためのメッセージマネージャ76とを含む。
モジュール60〜74は、いずれも入力と出力とを一個以上有する。各モジュールは、入力されたデータをそのモジュール特有の機能に従って内部で処理し、結果を出力する機能を持つ。例えば、音声の特徴抽出モジュールは、音声データを入力とし、その特徴パラメータを出力とする。
モジュールマネージャ56は、本システム50の外部から与えられる入力を受けるための入力モジュール82と、本システム50からの出力を外部に与えるための出力モジュール84と、入力モジュール82、出力モジュール84、メッセージマネージャ66及びメッセージマネージャ76に接続され、フロー定義ファイル58の記述に基づいて、各プロセス52及び54、並びに入力モジュール82及び出力モジュール84の間のイベントの流れを制御するためのメッセージマネージャ80とを含む。すなわちメッセージマネージャ80は、プロセス間のメッセージ通信を管理するものということができる。
図3に、モジュール間で通信されるイベント120の構成を示す。図3を参照して、イベント120は、送信元モジュール識別番号(以下「ID」と呼ぶ。)と、送信先モジュールIDと、イベントの型と、データの内容とを含む。イベントの型とは、イベントに含まれるデータの型のことであり、前述したWAVE型、FEATURE型などがその一例である。
図4に、フロー定義ファイル58内に記述される内容を表形式で示す。図4を参照して、フロー定義ファイル58内には、「process」、「arc」及び「file」という三つの項目が定義されている。
processは、どのプロセスにどのモジュールが含まれているかを示す情報である。arc(以下「アーク」と呼ぶ。)は、どのモジュールからどのモジュールにどのようなイベントが送られるかを示す情報である。この中にはイベントの型も含まれる。fileは、外部からどのようなイベントがシステム50に送られ、結果がどのようなイベントとして外部に出力されるかを示す。
図5にメッセージマネージャ80の構成をブロック図形式で示す。図5を参照して、メッセージマネージャ80は、メッセージマネージャ80に入力されるイベントの送信先モジュールを決定するため、イベントの送信元モジュールIDとイベントの型とをキーとして、送信先モジュールのモジュールIDを検索できるような構成を有するフロー管理テーブル92と、どのプロセスにどのモジュールが含まれているかを検索できる構成を持つモジュール管理テーブル94と、フロー定義ファイル58の記述に基づいて、フロー管理テーブル92及びモジュール管理テーブル94を作成するためのテーブル作成処理部96とを含む。
メッセージマネージャ80はさらに、第1のプロセス52、第2のプロセス54、入力モジュール82及び出力モジュール84に接続され、第1のプロセス52、第2のプロセス54及び入力モジュール82から与えられるイベントを、フロー管理テーブル92及びモジュール管理テーブル94の記述に基づいて第1のプロセス52、第2のプロセス54、及び出力モジュール84のいずれかに出力するためのメッセージ振分処理部90を含む。
図6にフロー管理テーブル92の構成の一例を、図7にモジュール管理テーブル94の構成の一例を、それぞれ示す。図6を参照して、フロー管理テーブル92は複数のエントリを含み、各エントリは、送信元モジュールIDと、イベントの型と、送信先モジュールIDとを含む。これらは、図4に示すフロー定義ファイル58のアークの記述に相当する。受信したイベントに含まれる送信元モジュールID及びイベントの型(図3を参照されたい。)をキーにフロー管理テーブル92を検索することにより、当該イベントをどのモジュールに送信すべきかが、送信先モジュールIDの欄を見ることで判定できる。なお図6に示すフロー管理テーブル92は、図2に示す構成に必要な情報の一部のみを示す。
図7を参照して、モジュール管理テーブル94も通常は複数のエントリを含む。各エントリはモジュールに対応するものであり、そのモジュールが属するプロセス名と、そのモジュールのモジュールIDとを含む。図7に示すモジュール管理テーブル94も、図2に示す本システム50の構成に必要な情報の一部のみを示す。
次に図2の第1のプロセス52及び第2のプロセス54を構成する各部について説明する。各モジュールの構成については本発明とは直接関係ないので、それらについての詳細な説明は省略する。またメッセージマネージャ66とメッセージマネージャ76とは同じ構成を有しているので、以下、メッセージマネージャ66について説明する。
図8を参照して、メッセージマネージャ66は、メッセージマネージャ66に入力されるイベントの送信先モジュールを決定するため、イベントの送信元モジュールIDとイベントの型とをキーとして、送信先モジュールのモジュールIDを検索できるような構成を有する、図5に示すものと同様形式のフロー管理テーブル102と、このメッセージマネージャ66が管理するプロセス(本実施の形態では第1のプロセス52)にどのモジュールが含まれているかを記述したモジュール管理テーブル100と、図5に示すフロー管理テーブル92を複写してフロー管理テーブル102を作成するためのフロー管理テーブル作成処理部106と、フロー定義ファイル58の記述に基づき、第1のプロセス52に含まれるモジュールIDを含むモジュール管理テーブル100を作成するためのモジュール管理テーブル作成処理部104とを含む。
メッセージマネージャ66はさらに、第1〜第3のモジュール60,62及び64とモジュールマネージャ56とからイベントを受取り、フロー管理テーブル102とモジュール管理テーブル100とを参照して、当該イベントを第1〜第3のモジュール60,62及び64、並びにモジュールマネージャ56のいずれに送信すべきかを判定し判定結果に従って当該イベントを振り分けるためのメッセージ振分処理部108と、メッセージ振分処理部108によってメッセージ振分処理部108の管理するプロセス(本実施の形態では第1のプロセス52)に送信するよう判定されたイベントを一時的にFIFO形式で格納するためのイベントキュー110と、イベントキュー110からイベントを一つずつ読出し、当該イベントに含まれる送信先モジュールIDに基づいて、当該イベントを第1〜第3のモジュール60、62及び64のいずれかに配信するためのプロセス内メッセージ配信部112とを含む。
図9にモジュール管理テーブル100の形式を模式的に示す。メッセージマネージャ66が管理する第1のプロセス52の場合、そこに含まれるモジュールは第1のモジュール60、第2のモジュール62、及び第3のモジュール64である。従ってこの場合のモジュール管理テーブル100の内容は図9に示した通りとなる。
実際にはメッセージ振分処理部108は、後述するようにコンピュータハードウェア上で実行されるプログラムにより実現される。本実施の形態の場合、メッセージ振分処理部108が受信したイベントの送信元がプロセス内のものか、プロセス外のものか、によって異なる処理を行なう。それぞれを実現するコンピュータプログラムの制御構造について図10及び図11を参照して説明する。
図10は、プロセス内のモジュールからイベントを受信した場合に、図8に示すメッセージマネージャ66のメッセージ振分処理部108が実行する処理プログラムのフローチャートである。図5に示すメッセージマネージャ80のメッセージ振分処理部90についても同様である。図10を参照して、プロセス内モジュールからイベントを受信すると、ステップ130で、当該イベントの送信元モジュールIDとイベント型とをキーにフロー管理テーブル102を検索し、該当する全てのアークを取出す。
続いて、ステップ130の処理の結果見つかった全てのアークについて、以下の処理を行なう。すなわち、ステップ132で、当該アークの送信先モジュールIDが当該プロセス内のモジュールのものか否かを判定する。送信先モジュールIDが当該プロセス内のモジュールのものであればステップ134に進み、さもなければステップ140に進む。
ステップ134では、イベントの送信先に、検索されたアークに含まれる送信先モジュールIDを設定する。送信先モジュールが同じプロセス内なので、ステップ136でこのイベントをイベントキュー110に出力する。
一方ステップ140では、イベントの送信先に、同じく検索されたアークに含まれる送信先モジュールIDを設定する。送信先モジュールがプロセス外に存在しているので、ステップ142でこのイベントをモジュールマネージャ56に出力する。
ステップ134、136、140及び142の処理を、ステップ130で見出された全てのアークに対して行なうことにより、一つのイベントに対し、見つかった数だけのイベントが生成され、送信先モジュールの所在に応じて、それぞれイベントキュー110又はモジュールマネージャ56に送信されることになる。
図11は、プロセス外からイベントを受信した場合に、図5に示すメッセージマネージャ80のメッセージ振分処理部90が実行する処理プログラムのフローチャートである。図11を参照して、プロセス外からイベントを受信すると、ステップ160で、モジュール管理テーブル94中でイベント中の送信先モジュールIDを検索し、当該送信先モジュールを含むプロセスを決定する。ステップ162では、決定されたプロセスが自分自身が否かを判定する。もし自分自身が送信先であればステップ164で自己のイベントキューに当該イベントを格納する。もし自分自身が送信先でなければ、ステップ166で送信先モジュールを含むプロセスに当該イベントを送信する。
一方、図8に示すメッセージマネージャ66がプロセス外からイベントを受信した場合、当該イベントの送信先については、プロセス内であることが保証されている。従って当該イベントを図8に示すメッセージ振分処理部108に格納する。
−動作−
図2〜図11を参照して、以上のような構成を有する本システム50は以下のように動作する。まず、図2を参照して、最初にシステムの構成が定められ、その構成に従ってフロー定義ファイル58が記述され所定の記憶装置に格納される。図5に示すテーブル作成処理部96がフロー定義ファイル58に基づいて図5に示すフロー管理テーブル92及びモジュール管理テーブル94を作成する。各プロセスでは、図8に示すフロー管理テーブル作成処理部106及びモジュール管理テーブル作成処理部104が、それぞれフロー管理テーブル92及びフロー定義ファイル58に基づいてフロー管理テーブル102及びモジュール管理テーブル100を作成する。
図2〜図11を参照して、以上のような構成を有する本システム50は以下のように動作する。まず、図2を参照して、最初にシステムの構成が定められ、その構成に従ってフロー定義ファイル58が記述され所定の記憶装置に格納される。図5に示すテーブル作成処理部96がフロー定義ファイル58に基づいて図5に示すフロー管理テーブル92及びモジュール管理テーブル94を作成する。各プロセスでは、図8に示すフロー管理テーブル作成処理部106及びモジュール管理テーブル作成処理部104が、それぞれフロー管理テーブル92及びフロー定義ファイル58に基づいてフロー管理テーブル102及びモジュール管理テーブル100を作成する。
動作において、入力モジュール82に入力データが与えられる。入力データは本システムでは通常は音声データファイルである。このシステムでは、ファイルはプロセスと同様に扱われるので、入力ファイルから作成されたフレームデータがイベントとして入力モジュール82に与えられる。本例の場合、図1に示すようにモジュールを組合せるものとすれば、入力モジュール82に与えられるイベントの送信先モジュールIDは第1のモジュールに対応するものであり、イベントの型は「WAVE」となる。送信元モジュールIDは入力ファイルに相当するものになる。このイベントは入力モジュール82からメッセージマネージャ80に与えられる。
図5を参照して、メッセージマネージャ80のメッセージ振分処理部90は、フロー管理テーブル92及びモジュール管理テーブル94を参照して、当該イベントの送信先のモジュールを含むプロセスを決定し(図11のステップ160)、イベントを当該プロセスに送信する(ステップ164又は166)。本例では、例えば第1のプロセス52にこのイベントが送信されるものとする。
図8を参照して、メッセージマネージャ66のメッセージ振分処理部108は、このイベントがプロセス外からのものなので、当該イベントをイベントキュー110に格納する。プロセス内メッセージ配信部112が、イベントキュー110からイベントを読出し、送信先モジュールIDにより指定されるモジュールにイベントを配信する。
このイベントを受けたモジュールは、結果のイベントをメッセージマネージャ66のメッセージ振分処理部108に返信してくる。このとき、イベントの送信元モジュールID及びイベント型には、それぞれ当該モジュールにより値が設定されている。送信先モジュールIDについては設定されていない。
メッセージ振分処理部108は、受けたイベントの送信元モジュールIDとイベント型とをキーにフロー管理テーブル102を検索し(図10のステップ130)、一致するアークを得る。メッセージ振分処理部108はさらに、モジュール管理テーブル100を参照して、当該送信先モジュールが第1のプロセス52内か否かを判定する(ステップ132)。第1のプロセス52内であれば(すなわち当該モジュールIDがモジュール管理テーブル100内に存在すれば)、当該アークに含まれている送信先モジュールIDをイベントの送信先モジュールIDに設定し(ステップ134)、メッセージ振分処理部108はこのイベントをイベントキュー110に書出す(ステップ136)。
送信先が第1のプロセス52外であれば、アークに含まれている送信先モジュールIDをイベントの送信先モジュールIDに設定し(ステップ140)、モジュールマネージャ56にこのイベントを送信する(ステップ142)。
モジュールマネージャ56のメッセージマネージャ80では、最初の入力データを受けた場合と同様、フロー管理テーブル92とモジュール管理テーブル94とに基づいてこのイベントの送信先プロセスを決定し、そのプロセスのメッセージマネージャにイベントを送信する。フロー管理テーブル92により、システム外に出力することが示されている場合、メッセージ振分処理部90は出力モジュール84にイベントを出力する。出力モジュール84は、このイベントをさらに外部に出力する。
以下、メッセージマネージャ80のメッセージ振分処理部90、並びに第1のプロセス52及び第2のプロセス54のメッセージマネージャ66及び76は、上記したのと同様の処理を繰返す。その結果、外部から次々に入力モジュール82に入力されたデータは、それぞれ所定のモジュールによって処理され、結果のイベントが出力モジュール84から出力される。
上に説明したシステム50では、各モジュールは自己の処理した結果のイベントをどのモジュールに送信するかについては全く意識する必要がない。どのプロセスにおいても、モジュールではなくメッセージマネージャが送信先モジュールを決定し、さらに送信先モジュールが同一プロセス内であればイベントキューを用いて当該イベントを配信し、プロセス外であれば、モジュールマネージャに当該イベントを配信する。イベントの配信を受けたモジュールマネージャが、送信先モジュールIDに基づいて送信先のプロセスを決定し、送信する。
従って、モジュールの独立性が極めて高くなり、システム構成に従ってモジュールを変更したりする必要はない。さらに、プロセス間通信については、どのプロセスも送信先のプロセスを意識せず、すべてモジュールマネージャに送信するだけでよい。従って、各プロセス間通信のためのオーバヘッドが少なくなる。
従って、このようなプロセス間通信の仕組みを用いることで、イベントを効率よく配信することが可能となり、さらに各モジュールの独立性を高め、自由にシステムを組むことが可能になる。また、データはプロセス間を転送されながら各モジュールで処理され、かつ各プロセスではイベントキューによって処理時間の調整を行ないながら正しい順序でデータ処理を行なうことができる。その結果、リアルタイムで、音声認識などの多量のデータ処理を行なうことができる。またモジュールの組合せが自由にできるので、異なる構成のシステムの性能実験などを簡単に、かつ短い時間に行なうことが可能になる。
[コンピュータによる実現]
この実施の形態のシステムは、コンピュータハードウェアと、そのコンピュータハードウェアにより実行されるプログラムと、コンピュータハードウェアに格納されるデータとにより実現される。図12はこのコンピュータシステム330の外観を示し、図13はコンピュータシステム330の内部構成を示す。なお、前述したとおりこのシステムは、これら複数のコンピュータをネットワークなどで結合したものによって実現することもできる。
[コンピュータによる実現]
この実施の形態のシステムは、コンピュータハードウェアと、そのコンピュータハードウェアにより実行されるプログラムと、コンピュータハードウェアに格納されるデータとにより実現される。図12はこのコンピュータシステム330の外観を示し、図13はコンピュータシステム330の内部構成を示す。なお、前述したとおりこのシステムは、これら複数のコンピュータをネットワークなどで結合したものによって実現することもできる。
図12を参照して、このコンピュータシステム330は、FD(フレキシブルディスク)ドライブ352及びCD−ROM(コンパクトディスク読出専用メモリ)ドライブ350を有するコンピュータ340と、キーボード346と、マウス348と、モニタ342とを含む。
図13を参照して、コンピュータ340は、FDドライブ352及びCD−ROMドライブ350に加えて、CPU(中央処理装置)356と、CPU356、FDドライブ352及びCD−ROMドライブ350に接続されたバス366と、ブートアッププログラム等を記憶する読出専用メモリ(ROM)358と、バス366に接続され、プログラム命令、システムプログラム、及び作業データ等を記憶するランダムアクセスメモリ(RAM)360とを含む。コンピュータシステム330はさらに、プリンタ344を含んでいる。
コンピュータ340はさらにローカルエリアネットワーク(LAN)への接続を提供するネットワークアダプタボード368を含む。
コンピュータシステム330にこの実施の形態に係る本システム50(又はその一部の第1のプロセス52、第2のプロセス54、モジュールマネージャ56など)としての動作を行なわせるためのコンピュータプログラムは、CD−ROMドライブ350又はFDドライブ352に挿入されるCD−ROM362又はFD364に記憶され、さらにハードディスク354に転送される。又は、プログラムはネットワークを通じてコンピュータ340に送信されハードディスク354に記憶されてもよい。プログラムは実行の際にRAM360にロードされる。CD−ROM362から、FD364から、又はネットワークを介して、直接にRAM360にプログラムをロードしてもよい。
このプログラムは、コンピュータ340にこの実施の形態に係るシステム50に含まれる各プロセス52、54、モジュールマネージャ56、各プロセス中で実行されるモジュール等としての動作を行なわせる複数の命令を含む。このために必要な基本的機能のいくつかはコンピュータ340上で動作するオペレーティングシステム(OS)又はサードパーティのプログラム、もしくはコンピュータ340にインストールされる各種ツールキットのモジュールにより提供される。従って、このプログラムはこの実施の形態のシステムを実現するのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能又は「ツール」を呼出すことにより、上記した換言規則選別装置を実行する命令のみを含んでいればよい。コンピュータシステム330の動作は周知であるので、ここでは繰返さない。
上記した実施の形態では、モジュール管理テーブルについては各プロセスに用意した。しかし本発明はそのような実施の形態には限定されず、モジュール管理テーブルをシステム内の全てのモジュールで同じものを使用するようにしてもよい。また、上記実施の形態では、モジュール識別子はシステム内で一意であるものとした。しかし本発明はそのような実施の形態には限定されず、プロセス内でのみモジュール識別子が一意になるようにしてもよい。ただしその場合、イベント通信ではプロセス名とモジュール識別子とによって送信元及び送信先を特定する必要がある。
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
50 システム、52,54 プロセス、56 モジュールマネージャ、58 フロー定義ファイル、60,62,64,70,72,74 モジュール、66,76,80 メッセージマネージャ、82 入力モジュール、84 出力モジュール、90,108 メッセージ振分処理部、92,102 フロー管理テーブル、94,100 モジュール管理テーブル、96 テーブル作成処理部、104 モジュール管理テーブル作成処理部、106 フロー管理テーブル作成処理部、110 イベントキュー、112 プロセス内メッセージ配信部
Claims (7)
- 複数のモジュールを含むプロセス内において、前記複数のモジュール相互の間のメッセージ通信、及び前記複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのメッセージ管理装置であって、
各モジュールはいずれもモジュール識別子により一意に特定され、
各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、
前記メッセージ管理装置は、
メッセージを一時格納するためのメッセージキューと、
前記メッセージキューに格納されたメッセージを、前記プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、
予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールが前記プロセス内のモジュールか否かに従って、当該メッセージを前記メッセージキューに格納する処理と、前記プロセス外の所定のメッセージ送信先に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む、メッセージ管理装置。 - 前記メッセージ振分手段は、
前記プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、
前記取得するための手段により取得された送信先モジュール識別子を、前記受けたメッセージの送信先モジュール識別子に設定するための手段と、
前記取得するための手段により取得された送信先モジュール識別子が、前記モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていると判定されたことに応答して、前記受信したメッセージを前記メッセージキューに格納するための手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていないと判定されたことに応答して、前記受信したメッセージを前記プロセス外の前記所定のメッセージ送信先に送信するための手段とを含む、請求項1に記載のメッセージ管理装置。 - 各々が1又は複数のモジュールを含む複数のプロセスからなるシステムにおいて、モジュール間のメッセージ通信を管理するためのメッセージ管理装置であって、
前記システム内の各モジュールは、いずれもモジュール識別子により一意に特定され、
各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、
前記メッセージ管理装置は、
予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得し、取得された送信先モジュール識別子により特定されるモジュールを含むプロセスに前記受けたメッセージを配信するためのメッセージ振分手段とを含む、メッセージ管理装置。 - コンピュータにより実行されると、請求項1〜請求項3のいずれかに記載のメッセージ管理装置として当該コンピュータを動作させる、コンピュータプログラム。
- 複数のプロセスと、
各プロセス間でのデータの流れを実現するメッセージ通信を管理するためのプロセス間メッセージ管理手段とを含むデータ処理システムであって、
前記複数のプロセスの各々は、
各々が1又は複数の入力及び出力を持ち、入力されるデータに対し所定の処理を行なって出力する複数のモジュールと、
当該プロセス内において、前記複数のモジュール相互の間のメッセージ通信、及び前記複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのプロセス内メッセージ管理手段とを含み、
各モジュールはいずれもモジュール識別子により一意に特定され、
各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、
前記プロセス内メッセージ管理手段は、
メッセージを一時格納するためのメッセージキューと、
前記メッセージキューに格納されたメッセージを、プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、
予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するための第1のメッセージフロー管理手段と、
プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記第1のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールが前記プロセス内のモジュールか否かに従って、当該メッセージを前記メッセージキューに格納する処理と、前記プロセス間メッセージ管理手段に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む、システム。 - 前記メッセージ振分手段は、
前記プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記第1のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、
前記取得するための手段により取得された送信先モジュール識別子を、前記受けたメッセージの送信先モジュール識別子に設定するための手段と、
前記取得するための手段により取得された送信先モジュール識別子が、前記モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていると判定されたことに応答して、前記受信したメッセージを前記メッセージキューに格納するための手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていないと判定されたことに応答して、前記受信したメッセージを前記プロセス外の前記所定のメッセージ送信先に送信するための手段とを含む、請求項5に記載のシステム。 - コンピュータにより実行されると、請求項5又は請求項6に記載のデータ処理システムとして当該コンピュータを動作させる、コンピュータプログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2004104089A JP2005292981A (ja) | 2004-03-31 | 2004-03-31 | メッセージ管理装置、データ処理システム及びそのためのコンピュータプログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2004104089A JP2005292981A (ja) | 2004-03-31 | 2004-03-31 | メッセージ管理装置、データ処理システム及びそのためのコンピュータプログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2005292981A true JP2005292981A (ja) | 2005-10-20 |
Family
ID=35325876
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2004104089A Pending JP2005292981A (ja) | 2004-03-31 | 2004-03-31 | メッセージ管理装置、データ処理システム及びそのためのコンピュータプログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2005292981A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009093526A (ja) * | 2007-10-11 | 2009-04-30 | Sysmex Corp | プロセス間通信システム、データ構造、プロセス間通信制御装置、プロセス間通信制御方法及びコンピュータプログラム |
| JP2010020650A (ja) * | 2008-07-14 | 2010-01-28 | Sony Corp | 情報処理システム及び情報処理方法、ロボットの制御システム及び制御方法、並びコンピュータ・プログラム |
| JP2012155682A (ja) * | 2011-01-28 | 2012-08-16 | Denso Corp | 組み込みシステム用のプラットフォーム、アプリケーション、該プラットフォームと該アプリケーションを備える制御プログラム、電子装置、及び、アプリケーションの更新方法 |
| JP2014503867A (ja) * | 2010-11-05 | 2014-02-13 | 騰訊科技(深▲セン▼)有限公司 | クロスプロセス通信のための方法および装置、ならびにコンピュータ記憶媒体 |
-
2004
- 2004-03-31 JP JP2004104089A patent/JP2005292981A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009093526A (ja) * | 2007-10-11 | 2009-04-30 | Sysmex Corp | プロセス間通信システム、データ構造、プロセス間通信制御装置、プロセス間通信制御方法及びコンピュータプログラム |
| JP2010020650A (ja) * | 2008-07-14 | 2010-01-28 | Sony Corp | 情報処理システム及び情報処理方法、ロボットの制御システム及び制御方法、並びコンピュータ・プログラム |
| JP2014503867A (ja) * | 2010-11-05 | 2014-02-13 | 騰訊科技(深▲セン▼)有限公司 | クロスプロセス通信のための方法および装置、ならびにコンピュータ記憶媒体 |
| JP2012155682A (ja) * | 2011-01-28 | 2012-08-16 | Denso Corp | 組み込みシステム用のプラットフォーム、アプリケーション、該プラットフォームと該アプリケーションを備える制御プログラム、電子装置、及び、アプリケーションの更新方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3891731B1 (en) | Directing a vehicle client device to use on-device functionality | |
| CN1591341B (zh) | 用于共享资源的通知的系统和方法 | |
| US20120127512A1 (en) | Branch office direct printing | |
| JP2001249907A (ja) | 起動処理方式 | |
| CN111754974B (zh) | 信息处理方法、装置、设备和计算机存储介质 | |
| JP7615378B2 (ja) | 対話型装置及びその制御方法、並びにプログラム | |
| JP2005292981A (ja) | メッセージ管理装置、データ処理システム及びそのためのコンピュータプログラム | |
| JP2007122449A (ja) | コンピュータシステム | |
| CN113111666A (zh) | 一种实现应用程序的多语言翻译的系统及方法 | |
| JP4691895B2 (ja) | データ処理システム設計装置及びそのためのコンピュータプログラム | |
| JP6054008B1 (ja) | データ管理装置、データ管理方法及びデータ管理プログラム | |
| JPWO2004113217A1 (ja) | 昇降機監視システム、及び昇降機監視プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
| EP4080363A1 (en) | Method and apparatus for operating blockchain system, device and storage medium | |
| CN116800748A (zh) | 消息处理系统、方法、计算设备及存储介质 | |
| JP2002032349A (ja) | ヒューマンマシンインタフェースシステム及びそのプログラムを記録したコンピュータ読取り可能な記録媒体 | |
| JPH06259302A (ja) | 分散コンピュータのデータ更新処理方式 | |
| JP2009053954A (ja) | 情報管理プログラム及び情報管理システム | |
| US20230385073A1 (en) | Data processing system and data processing method | |
| JP2878159B2 (ja) | トランザクション処理システム | |
| US8392546B2 (en) | Distributed managed system, system components, and methods of communicating commands | |
| JP2009025854A (ja) | ファイル転送システム、ファイル転送装置、及びファイル転送方法 | |
| JP2002099405A (ja) | クライアント・アプリケーションを音声口述でイネーブルにする方法、音声イネーブル・クライアント・アプリケーション、および機械可読ストレージ | |
| JP4985263B2 (ja) | ジョブ連携システム、ジョブ連携方法、ジョブ連携プログラム | |
| JP3520805B2 (ja) | エージェントシステム | |
| CN114048221A (zh) | 一种数据操作方法、装置、计算机设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Effective date: 20070328 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081215 |
|
| A131 | Notification of reasons for refusal |
Effective date: 20090106 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090804 |