(57)【特許請求の範囲】
【請求項１】
コンピュータ上で動作可能なモジュールを組合せることによりデータ処理システムを設計するためのデータ処理システム設計装置であって、
各モジュールの仕様、及びオプション又はパラメータ情報を含むモジュール情報を記憶するためのモジュール情報記憶手段と、
前記モジュール情報記憶手段に記憶された各モジュールの仕様、及びオプション又はパラメータ情報に基づいて、前記データ処理システム内の複数のモジュール間の接続関係をユーザが定義すること、及び当該データ処理システム内の各モジュールのオプション又はパラメータ値をユーザが指定することを補助し、１又は複数のプロセスの定義と、定義されたモジュールの入力と出力との間の接続関係と、指定された各モジュールのオプション又はパラメータ値とを含むフロー定義情報を生成するためのフロー定義生成手段とを含み、
前記１又は複数のプロセスの定義の各々は、当該プロセスを実行するホスト名と、当該プロセスを実現するプログラム名と、当該プロセス内で実行されるべきモジュールに関する情報とを含み、
さらに、前記フロー定義生成手段により生成されたフロー定義情報を記憶するためのフロー定義情報記憶手段を含む、データ処理システム設計装置。
【請求項２】
さらに、
前記フロー定義生成手段により生成されたフロー定義情報のうちの任意のものをユーザに選択させるフロー定義情報選択機能と、
前記フロー定義情報選択機能により選択されたフロー定義情報、及び前記モジュール情報記憶手段に記憶されたモジュ−ル情報に従って、コンピュータシステム上で前記選択されたフロー定義情報に従うデータ処理システムを実現するために必要なモジュールのインスタンスを生成するインスタンス生成機能と、
前記インスタンス生成機能により生成されたモジュールのインスタンス間で、前記選択されたフロー定義情報内の、前記モジュール間の接続関係に従ってデータを配信するデータ配信機能とを有する、請求項１に記載のデータ処理システム設計装置。
【請求項３】
さらに、前記インスタンス生成機能により生成された各モジュールのインスタンスに、前記選択されたフロー定義情報内の、それぞれのモジュールのインスタンスのためのオプション又はパラメータ値を配信する機能を有する、請求項２に記載のデータ処理システム設計装置。
【請求項４】
前記モジュールの仕様は、当該モジュールの処理タイプと、当該モジュールを実現するプログラムを特定する情報と、当該モジュールの入力のデータ型の集合及び出力のデータ型の集合を特定するデータ型情報とを含み、
前記フロー定義生成手段は、
前記データ処理システムにおいて必要とされる処理タイプのモジュールをユーザの選択に従って特定するモジュール特定機能と、
前記モジュール特定手段により特定されたモジュールの任意の二つの間の、入力と出力との間の接続をユーザの指示に従って定義する接続特定機能と、
前記接続特定機能により互いに接続される二つのモジュールの一方の入力のデータ型の集合と、他方の出力のデータ型の集合との積集合に属するデータ型のうちの一つをユーザに選択させ、当該接続により表されるモジュール間で移動されるデータの型を特定して前記接続特定機能により特定された接続の属性に追加するデータ型特定機能と、
前記モジュール特定機能により特定されたモジュールに関する情報と、前記データ型特定機能により特定された接続とに基づいて、前記フロー定義を生成する機能とを有する、請求項１〜請求項３のいずれかに記載のデータ処理システム設計装置。
【請求項５】
コンピュータ上で動作可能なモジュールを組合せることによりデータ処理システムを設計するためのデータ処理システム設計装置としてコンピュータを動作させるコンピュータプログラムであって、
前記コンピュータは、
各モジュールの仕様、及びオプション又はパラメータ情報を含むモジュール情報を記憶するためのモジュール情報記憶手段と、
１又は複数のプロセスの定義と、定義されたモジュールの入力と出力との間の接続関係と、指定された各モジュールのオプション又はパラメータ値とを含むフロー定義情報を記憶するためのフロー定義情報記憶手段とを含み、
前記１又は複数のプロセスの定義の各々は、当該プロセスを実行するホスト名と、当該プロセスを実現するプログラム名と、当該プロセス内で実行されるべきモジュールに関する情報とを含み、
前記コンピュータプログラムは、前記コンピュータを、
前記モジュール情報記憶手段に記憶された各モジュールの仕様、及びオプション又はパラメータ情報に基づいて、前記データ処理システム内の複数のモジュール間の接続関係をユーザが定義すること、及び当該データ処理システム内の各モジュールのオプション又はパラメータ値をユーザが指定することを補助し、前記フロー定義情報を生成して前記フロー定義情報記憶手段に記憶させるためのフロー定義生成手段として機能させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ上で複数のモジュールを組合せることによりデータ処理システムを構築するモジュール型システムの設計及び実行方式に関し、特に、様々なモジュールを所定の目的にあわせて自由に組合せることにより、容易にモジュール型のデータ処理システムを構築し、かつ簡便に動作させて結果を得ることが可能なシステムの設計装置及びプログラムに関する。
【背景技術】
【０００２】
実時間の音声認識システム等の構築過程においては、音声認識のための処理の設定を様々に変えて、認識率等の性能を確認したいことがある。そのために例えばオプション値等を変えて同じプログラムを動作させるだけでなく、あるプログラムを全く別のプログラムに置換したり、処理の流れを自由に変更して実験したりできれば便利である。
【０００３】
そのための一つの手段は、それぞれ特有の機能を持つ複数のモジュールを予め準備し、それらを目的にあわせて適切な形で組合せることが可能な、いわゆるモジュール型のシステムである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、従来のモジュール型システムは、主としてプログラム又は装置の設計段階で採用されている。すなわち、目的にあわせて既存のモジュールを選択し、それらを実際のシステムの条件にあわせて改造することにより、最終製品を製造するもので、エンドユーザが色々なモジュールを自由に組合せてシステムを組立て、テストデータを用いてそうしたシステムの動作を確認するような仕組みは提供されていない。
【０００５】
こうした問題は、音声認識のように多量のデータを処理する必要があり、またデータ処理にも多くのバラエティが存在する場合に特に重要であるが、音声認識にかぎらず種々のデータ処理においても発生し得る。
【０００６】
それゆえに本発明の目的は、モジュールを自由に組合せ、かつ容易に動作を確認できる、モジュール型システムの設計に適したデータ処理システム設計装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の第１の局面に係るデータ処理システム設計装置は、コンピュータ上で動作可能なモジュールを組合せることによりデータ処理システムを設計するための装置である。この装置は、各モジュールの仕様、及びオプション又はパラメータ情報を含むモジュール情報を記憶するためのモジュール情報記憶手段と、モジュール情報記憶手段に記憶された各モジュールの仕様、及びオプション又はパラメータ情報に基づいて、データ処理システム内の複数のモジュール間の接続関係をユーザが定義すること、及び当該データ処理システム内の各モジュールのオプション又はパラメータ値をユーザが指定することを補助し、定義されたモジュール間の接続関係と、指定された各モジュールのオプション又はパラメータ値とを含むフロー定義情報を生成するためのフロー定義生成手段と、フロー定義生成手段により生成されたフロー定義情報を記憶するためのフロー定義情報記憶手段とを含む。
【０００８】
好ましくはこの装置はさらに、フロー定義生成手段により生成されたフロー定義情報のうちの任意のものをユーザに選択させるためのフロー定義情報選択手段と、フロー定義情報選択手段により選択されたフロー定義情報、及びモジュール情報記憶手段に記憶されたモジュ−ル情報に従って、コンピュータシステム上で選択されたフロー定義情報に従うデータ処理システムを実現するために必要なモジュールのインスタンスを生成するためのインスタンス生成手段と、インスタンス生成手段により生成されたモジュールのインスタンス間で、選択されたフロー定義情報に従ってデータを配信し処理させるためのデータ配信手段とを含む。
【０００９】
さらに好ましくは、この装置は、インスタンス生成手段により生成された各モジュールのインスタンスに、選択されたフロー定義情報内の、それぞれのモジュールのインスタンスのためのオプション又はパラメータ値を配信するための手段をさらに含む。
【００１０】
モジュールの仕様は、当該モジュールの処理タイプと、当該モジュールを実現するプログラムを特定する情報と、当該モジュールの入力のデータ型の集合及び出力のデータ型の集合を特定するデータ型情報とを含んでもよい。フロー定義生成手段は、データ処理システムにおいて必要とされる処理タイプのモジュールをユーザの選択に従って特定するためのモジュール特定手段と、モジュール特定手段により特定されたモジュールの任意の二つの間の接続をユーザの指示に従って定義するための接続特定手段と、接続特定手段により互いに接続される二つのモジュールの一方の入力のデータ型の集合と、他方の出力のデータ型の集合との積集合に属するデータ型のうちの一つをユーザに選択させ、当該接続により表されるモジュール間で移動されるデータの型を特定して接続特定手段により特定された接続の属性に追加するためのデータ型特定手段と、モジュール特定手段により特定されたモジュールに関する情報と、データ型特定手段により特定された接続とに基づいて、フロー定義を生成するための手段とを含んでもよい。
【００１１】
本発明の第２の局面に係るコンピュータプログラムは、コンピュータにより実行されると、上記したいずれかのデータ処理システムとして当該コンピュータを動作させる。
【発明を実施するための最良の形態】
【００１２】
−構成−
以下、本発明の一実施の形態に係るシステムについて説明する。本システムは、利用可能なプログラムモジュールの中から必要なモジュールを選択し、モジュール間のデータの流れに応じてウェブブラウザの画面上でモジュール間を線（矢印）で結ぶことにより、モジュールの組合せによるシステムを設計し、かつ動作させることが可能な、音声認識を行なうためのシステムである。
【００１３】
本システムでは、音声をリアルタイムで処理することを目的に、音声データを１０ｍｓｅｃ程度の時間間隔で所定の長さの単位（これをフレームと言う）に分割して、フレーム単位で各モジュールの間でデータを受け渡しながら処理を実行する。フレーム単位のデータは、あるモジュールに入力され、そのモジュールで当該フレームに対する処理を行なった後に、次のモジュールに渡される。このフレーム単位のデータを本明細書では「イベントメッセージ（以後イベントと略す）」という。
【００１４】
イベントには、データの種類に応じていくつかの型がある。例えば、生の音声データの場合はＷＡＶＥ型、特徴パラメータの場合はＦＥＡＴＵＲＥ型等、である。従ってモジュールの入出力においては、そこに入力されるデータ、又はそこから出力されるデータがどのような型かを明確に定義しておく必要がある。データの型に応じて決まるイベントの型を、本明細書では「イベントタイプ」と呼ぶ。
【００１５】
そして、システムを組む場合には、目的に従ってモジュールを選択し、どのモジュールのどの出力をどのモジュールのどの入力に与えるかを、データの型を考慮しながら決定する必要がある。このように、モジュール間のデータの流れを記述したものを本明細書ではフロー定義と呼び、典型的にはコンピュータ読取可能な形式で記憶装置に格納される。本システムでは、モジュール定義をサーバに格納しておき、ウェブブラウザでこのモジュール定義を読込んで、ウェブブラウザ上でシステム設計を行なう。システム設計により得られるものは、モジュール間の接続及びそれに伴うオプション／パラメータ値と、データの流れとを定義したデータである。本明細書では、このデータをフロー定義と呼び、それをファイルにしたものをフロー定義ファイルと呼ぶ。
【００１６】
図１に、本発明の一実施の形態に係る音声認識データ処理システム５０の機能的なブロック図を示す。図１を参照して、この音声認識データ処理システム５０は、前述したようなモジュール定義ファイル８２を予め記憶し、ウェブサーバを通じて、ユーザによるフロー定義の保守・及び実行等の制御を行なうためのフロー定義実行管理装置６０と、フロー定義実行管理装置６０に記憶されているモジュール定義ファイル８２を用いて、ウェブブラウザ経由でフロー定義の作成を行ない、作成したフロー定義をフロー定義実行管理装置６０に格納させる処理と、作成したフロー定義に従い、各モジュールを組合せて得られるシステムをフロー定義実行管理装置６０に実行させる指示を与えるためのフロー定義作成・実行指示装置６２とを含む。なお本実施の形態では、フロー定義実行管理装置６０はサーバ装置上で動作し、フロー定義作成・実行指示装置６２はクライアント装置上で動作するが、図面ではその詳細は省略する。
【００１７】
音声認識データ処理システム５０は、１又は複数個のコンピュータシステムから構成されており、それらシステムに備えられた記憶装置には、各モジュールをコンピュータプロセス上で実行させるための一群のプロセス用プログラム６６が記憶されている。フロー定義実行管理装置６０は、これらコンピュータハードウェアとプロセス用プログラム６６とを用いて、フロー定義作成・実行指示装置６２により設計された、モジュール１００〜１１０からなるデータ処理システム６４によるデータ処理を実行させる。フロー定義実行管理装置６０によるデータ処理及びその制御の詳細については後述する。
【００１８】
フロー定義実行管理装置６０は、前述したとおり、フロー定義実行管理装置６０で実行可能なモジュールの仕様をそれぞれ定義したモジュール定義ファイル８２と、モジュール定義ファイル８２を用いてフロー定義作成・実行指示装置６２によって定義されたフロー定義を格納するフロー定義ファイル８６と、処理のための入力データを格納する入力ファイル９０及び出力結果を格納する出力ファイル８８とを含む。入力ファイル９０及び出力ファイル８８はいずれも利用者により選択される。特に出力ファイル８８は、フロー定義に従ったデータ処理を実行するときに確保される。
【００１９】
フロー定義実行管理装置６０はさらに、複数種類の入力ファイルに関する情報を格納する入力ファイル情報記憶部８４と、フロー定義作成・実行指示装置６２との間でモジュール定義ファイル８２及びフロー定義等の情報をウェブ経由で交換するための管理プログラム８０と、フロー定義作成・実行指示装置６２によってシステム６４の動作の実行が指示されると管理プログラム８０によって起動され、データ処理システム６４をコンピュータ資源を用いて実現し、入力ファイル９０からの入力を与えてデータ処理させ、その結果を出力ファイル８８に出力させる処理を制御するためのモジュールマネージャ９２とを含む。
【００２０】
図１においては、データ処理システム６４は複数のモジュール１００，１０２，１０４，１０６，１０８及び１１０を含んでいる。実際には、モジュール定義はクラス化されており、モジュール１００，１０２，１０４，１０６，１０８及び１１０は、モジュールマネージャ９２の制御によってデータ処理システム６４を実現するプロセス内に生成される、各モジュールのオブジェクトクラスのインスタンスである。従って、同一のモジュール定義から、同一のプロセス又は別々のプロセス内に複数のモジュールのインスタンスが生成され動作することもある。
【００２１】
図２は、モジュール定義ファイル８２の内容を示す。図２を参照して、モジュール定義ファイル８２は、内部的なモジュール名と、フロー定義作成・実行指示装置６２の画面に表示するためのモジュール名（表示用）と、フロー定義作成・実行指示装置６２の画面にモジュールに関する説明を表示するためのテキストからなるモジュール説明（表示用）と、作者名と、バージョン情報とを含む。
【００２２】
モジュール定義ファイル８２はさらに、このモジュールのタイプを内部的に区別するためのモジュールタイプと、フロー定義作成・実行指示装置６２の画面にモジュールタイプを表示するために使用するモジュールタイプ（表示用）と、当該モジュールを使用可能なユーザ情報からなるセキュリティ制限情報とを含む。モジュールタイプは、モジュールの基本的な機能を示すものであり、本実施の形態のように音声認識の場合には、発話区間切出し（これを以下「ＥＰＤ」と呼ぶ。）、特徴抽出、ＣＭＳ（平均ケプストラムによる正規化処理）、特徴パラメータ編集、デコーダ、再評価、結果出力等がある。
【００２３】
モジュール定義ファイル８２はさらに、このモジュールが処理できるイベントとして、受取イベントタイプと、出力イベントタイプと、入出力イベント関連情報と、モジュールの枝番とを含む。受取イベントタイプ及び出力イベントタイプは、それぞれ当該モジュールで可能なイベントタイプの集合である。
【００２４】
モジュール定義ファイル８２はさらに、このモジュールのオプション情報を含む。同種のオプションは、同一のセクションにまとめられる。ただし、オプションによってはセクションに属さないものもある。従ってモジュール定義ファイル８２は、０、１、又は複数のセクションを含みうる。セクションに属さないオプションは、セクション内ではなくセクション外に記述されているが、記載の仕方は、後述するセクション内のオプションのものと同様である。
【００２５】
各セクションは、内部的なセクション名と、ユーザに表示するためのセクション名とを含む。各セクションはさらに、１又は複数のオプションを含む。
【００２６】
各オプションは、内部的にオプションを区別するためのオプション名と、ユーザに対してオプションを表示する際の表示用オプション名と、フロー定義作成・実行指示装置６２においてこのオプションに関するヘルプを表示する際のヘルプテキストとなるオプションヘルプ（表示用）とを含む。
【００２７】
オプションはさらに、ユーザによる値の指定がなかった場合のオプション値のデフォルト値と、オプション値がとり得る内部的な値を列挙する、有効値フィールドと、オプション値がとり得る内部的な値に対応する、表示用の値を列挙する表示用有効値フィールドとを含む。実際には表示用のテキストは別ファイルにより記憶されており、モジュール定義ファイル８２に記憶されているのは表示用テキストの識別番号である。
【００２８】
モジュール定義ファイル８２はさらに、オプション値が数値であるときの有効範囲を定める有効範囲フィールドを含む。有効範囲フィールドは、その最小値及び最大値と、それぞれ最小値及び最大値を有効範囲に含むか否かを示す二つのフラグとを含む。
【００２９】
モジュール定義ファイル８２はこれらに加えて、オプション値の型（string、integer、double、boolean、file、modelのいずれか）と、オプションを指定できる回数を示す複数指定回数フィールドと、オプションが必須か否かを示す必須フィールドと、オプション値が所定の複数の候補から選択するタイプである場合、フロー定義作成・実行指示装置６２で行なわれるフロー定義作成処理においてその選択のために使用するＧＵＩ（グラフィカル・ユーザ・インタフェース）部品のタイプを示す表示タイプフィールドとを含む。
【００３０】
図３には、モジュール定義ファイル８２の具体的な一例を示す。図３に示すように、モジュール定義ファイル８２は、ＸＭＬ（eXtended  Markup  Language）で記述されている。開始タグ<module>と終了タグ</module>とで囲まれた部分がモジュール定義である。開始タグ<module-info>と終了タグ</module-info>で囲まれた部分がこのモジュールに関するオプション以外の情報を示す。開始タグ<options>と終了タグ</options>に囲まれた部分がオプション全体に関する情報を示す。開始タグ<section>と終了タグ</section>とに囲まれた部分がセクションに関する情報を示し、開始タグ<option>と終了タグ</option>とに囲まれた部分が個々のオプションに関する情報を示す。
【００３１】
フロー定義作成・実行指示装置６２は、各モジュールに関するモジュール定義情報を用いて、利用者がフロー定義を作成する際の画面情報を生成したり、接続関係の制約を課したり、オプションの値の設定を行なったりする際の利用者の補助を行なう。
【００３２】
図４に、フロー定義ファイル８６の構成の詳細を示す。フロー定義ファイル８６は、ユーザが作成したフロー定義及びオプション値等を格納するためのＸＭＬ形式のファイルであり、一つのフロー定義ファイル８６が一つのデータ処理を定義する。このフロー定義ファイルは、図１に示すモジュールマネージャ９２の起動時にフロー定義作成・実行指示装置６２を介して、利用者により選択され指定される。モジュールマネージャ９２はフロー定義ファイル８６を読込み、フロー定義ファイル８６内に記述されたプロセスを起動し、フロー定義ファイル８６内に記述されたモジュールのインスタンスを生成し、各モジュールインスタンスに、フロー定義ファイル８６に記述されたオプション値を配信して設定した後、データ処理システムを起動する。図５にはフロー定義ファイル８６の具体的な一例を示す。以後、図４について説明するが図５についても適宜参照されたい。
【００３３】
図４を参照して、フロー定義ファイル８６は、コンピュータ上でのデータ処理を実行する一つの単位を形成するプロセスに関する情報を含む。プロセスに関する情報は、データ処理システムに含むプロセスの数だけ繰返される。プロセスに関する情報は、プロセス名と、当該プロセスを実行するホスト名と、当該プロセスのためのプログラム名と、当該プロセス内で実行すべきモジュールに関する情報とを含む。
【００３４】
モジュールに関する情報は、一つのプロセスに含まれるモジュールの数だけ繰返される。各モジュールに関する情報は、モジュール名と、枝番付のモジュール名と、モジュール識別子と、枝番とを含む。一つのプロセス内において同じモジュールが複数個動作する場合があるため、それらを区別するために枝番が設けられる。
【００３５】
フロー定義ファイル８６はさらに、ファイルに関する情報を含む。ファイルに関する情報は、データ処理システムの入力ファイルに関する情報と、出力ファイルに関する情報とを含む。各ファイルに関する情報は、入出力名、ファイル名、フォーマット、イベントタイプ、データタイプ、及びサイズを含む。これらは、ファイルが複数個ある場合にはその数だけ繰返される。
【００３６】
フロー定義ファイル８６はさらに、システム内のモジュール間の接続関係を示す矢印に関する情報を含む。矢印に関する情報は、データ処理システム内に存在する矢印の数だけ繰返される。
【００３７】
矢印に関する情報は、矢印の出所に関する情報と、矢印の行き先に関する情報と、矢印が示すイベントに関する情報とを含む。出所に関する情報は、矢印の出所のモジュール名と、この矢印が当該モジュールの何番目の出力からのものかを示す番号とを含む。同様に、行き先に関する情報は、矢印の行き先のモジュール名と、当該矢印の行き先が、行き先モジュールの何番目の入力であるかを示す番号とを含む。イベントに関する情報は、当該イベントのデータの型を示すイベントタイプを含む。
【００３８】
フロー定義ファイル８６はさらに，各モジュールのオプションに関する情報を含む。モジュールオプションに関する情報は、モジュール数だけ繰返される。
【００３９】
モジュールオプションに関する情報は、もしセクションにまとめられているオプションがあれば、セクションに関する情報を含み、各セクションに関する情報は、当該セクションに属するオプションの値に関する情報を含む。モジュールオプションに関する情報はまた、セクションにまとめられていないオプションの値に関する情報も含む。
【００４０】
なお本実施の形態では、モジュールに関する情報のうち、枝番が付されたものに関しては、同じモジュールであって枝番がないもののオプション値との差分のみを記述することにより、データ量を削減している。
【００４１】
図６に、フロー定義作成・実行指示装置６２のブロック図を示す。図６を参照して、フロー定義作成・実行指示装置６２は、フロー定義実行管理装置６０から受けるモジュール定義ファイル８２（図１を参照されたい。）の内容に基づいて、ＧＵＩによりフロー定義を作成するとともに、作成されたフロー定義を指定してフロー定義実行管理装置６０に対してデータ処理の実行を指示するためのフロー定義作成・実行指示プログラム１４０と、モジュール定義ファイル８２の内容から抽出される、モジュールタイプに関する情報を格納するためのモジュールタイプテーブル１４６と、フロー定義実行管理装置６０から受取ったモジュール定義ファイル８２の内容を格納するためのモジュールテーブル１４８と、フロー定義作成・実行指示装置６２が接続されているコンピュータシステムに属するホストのリストを格納するためのホストテーブル１５０とを含む。これらテーブルの詳細については後述する。
【００４２】
フロー定義作成・実行指示装置６２はさらに、ユーザとの間のインタフェースを実現するためのモニタ１４２並びにキーボード及びポインティングデバイスを含む入力装置１４４と、モニタ１４２及び入力装置１４４を用いたＧＵＩによりユーザにより画面上に作成されるフロー定義のグラフに関する情報を格納するための、ノードテーブル１５２及びアークテーブル１５４とを含む。各モジュールは、フロー定義のグラフ中のノードに相当し、矢印はアークに相当する。矢印に関しては、以後「アーク」と呼ぶ。これらテーブルの詳細についても後述する。
【００４３】
図７を参照して、フロー定義作成・実行指示プログラム１４０によるフロー定義の画面及びその手法について説明する。図７を参照して、フロー定義作成・実行指示プログラム１４０によってモニタ１４２上に表示されるフロー定義画面１７０は、フロー定義作成領域１７８と、フロー定義を新規に作成する際に操作する新規ボタン１８０、作成済みのフロー定義を保存する際に操作する保存ボタン１８２、作成済みのフロー定義を削除する際に操作する削除ボタン１８４、作成済みのフロー定義から所定の条件に合致するものを検索する際に操作する検索ボタン１８６、及び作成済みのフロー定義の実行を指示する際に操作する実行ボタン１８８とを含む。
【００４４】
画面１７０はさらに、フロー定義中に使用可能なモジュールタイプをアイコンで表示するモジュールパレット１７２と、アークを作成する際に操作するアークボタン１７６とを含む。
【００４５】
画面１７０を用いたフロー定義の作成は、次のような手順で行なう。まず、マウスポインタ１７４で示すように、使用したいモジュールのアイコンをモジュールパレット１７２からフロー定義作成領域１７８上に、ドラッグ・アンド・ドロップして配置する。次に、各モジュールについて、利用可能なモジュールの中でどのモジュールを使用するかを決定し、オプションを設定する。さらに、モジュール間にアークを配置し、モジュール間の入出力関係を定義する。最後に、各アークのイベントタイプを設定する。
【００４６】
例えば画面上で配置されたモジュールの矩形を選択（マウスでクリック）することにより、そのモジュールタイプのモジュールとして利用可能なものの選択画面が表示される。モジュールが選択されると当該モジュールのオプションを設定する画面が表示される。オプションを設定すると、当該モジュールのモジュール定義ファイル８２に記述されたオプション情報に従ったチェックが行なわれ、誤りがあればエラーメッセージが表示され再入力が促される。
【００４７】
アークを選択（アークをマウスでダブルクリック）すると、当該アークのイベントタイプを選択する画面が表示される。ここで表示されるイベントタイプは、アークの出所のモジュールの出力イベントタイプとしてリストされているものからなる集合と、アークの行き先のモジュールの入力イベントタイプとしてリストされているものからなる集合との共通集合（積集合）の要素である。モジュールの組合せからアークのイベントタイプが一意に定まる場合、そのイベントタイプが自動的に設定される。
【００４８】
こうした操作には、モジュールタイプテーブル１４６、モジュールテーブル１４８、及びホストテーブル１５０の情報が使用され、作成されるフロー定義に関する情報はノードテーブル１５２及びアークテーブル１５４に保持される。
【００４９】
画面１７０を用いた操作は、例えば画面上にオブジェクトを配置することでアプリケーションプログラムの骨格を作成するアプリケーション作成ツールにおいて行なわれるものと本質的に変わらない。
【００５０】
図８にモジュールタイプテーブル１４６の構成を示す。図８を参照して、モジュールタイプテーブル１４６の各エントリは、モジュールタイプと、画面１７０上に当該モジュールタイプを表示する際の表示文字列とを含む。これら情報は、フロー定義実行管理装置６０から与えられるモジュール定義ファイル８２から抽出できる。
【００５１】
図９に、モジュールテーブル１４８の構成を示す。図９を参照して、モジュールテーブル１４８の各エントリは、モジュール識別番号（ＩＤ）と、当該モジュールのモジュールタイプと、そのモジュールを実行するプロセスのプログラムへのフルパスとを含む。このモジュールテーブル１４８の情報も、モジュール定義ファイル８２から抽出できる。
【００５２】
図１０に、ホストテーブル１５０の構成を示す。図１０に示すように、ホストテーブル１５０は、システム内で利用可能なホスト名をリストしたものである。本実施の形態では、ホストテーブル１５０の内容はフロー定義実行管理装置６０が管理し、フロー定義作成・実行指示装置６２に通知する。
【００５３】
図１１に、ノードテーブル１５２の構成を示す。図１１を参照して、ノードテーブル１５２の各エントリは、ノードＩＤと、当該ノードを構成するモジュールタイプと、当該モジュールの、画面表示の矩形の左上座標及び右下座標と、このモジュールを実行するプログラムのフルパス名と、実行される実行モジュールＩＤと、このモジュールが実行されるホストを示す実行マシン名とを含む。
【００５４】
図１２に、アークテーブル１５４の構成を示す。図１２を参照して、アークテーブル１５４の各エントリは、開始ノードＩＤと、終了ノードＩＤと、当該アークのイベントタイプとを含む。
【００５５】
フロー定義の新規作成では、当初、図１１のノードテーブル１５２及び図１２のアークテーブル１５４は空であるが、図７に示すフロー定義作成領域１７８上にモジュール及びアークが配置され、モジュールのパラメータ、及びアークのイベントタイプが決定されていくと、これらテーブルの内容が少しずつ特定される。最終的にフローが完成すると、ノードテーブル１５２及びアークテーブル１５４の内容が確定し、それらに基づいてフロー定義ファイルの内容を作成できる。
【００５６】
フロー定義の修正では、図１に示すフロー定義実行管理装置６０から任意のフロー定義を受取り、それらに基づいてノードテーブル１５２及びアークテーブル１５４の内容を作成する。以後の動作はフロー定義の新規作成と同様である。
【００５７】
フロー定義によって定められるモジュール間のグラフの例を図１３に示す。これらは、図１に示すデータ処理システム６４に相当する。図１３に示すデータ処理システム２００は、第１のプロセス２２２と第２のプロセス２２４とを含む。第１のプロセス２２２は、第１のモジュール２３０と、第２のモジュール２３２と、第３のモジュール２３４とを含む。第２のプロセス２２４は、第４のモジュール２３６と、第５のモジュール２３８と、第６のモジュール２４０とを含む。
【００５８】
例えば第１のプロセス２２２をあるコンピュータ上で実行し、第２のプロセス２２４を別のコンピュータで実行することで、全体的な処理速度の向上を図ることができる。もちろん、第１のプロセス２２２と第２のプロセス２２４とを同一のコンピュータ上で動作させても問題はない。しかし、これらシステムをフロー定義に基づいてどのように構成し、効率よく動作させるかという問題がある。本実施の形態では、こうしたデータ処理システム２００をフロー定義に基づいて構成し、効率よく動作させるため、以下に述べるようなモジュール実行の機構を用いている。
【００５９】
図１４に本実施の形態に係るフロー定義実行管理装置６０により実現されるデータ処理システム２５０のブロック図を示す。このシステム２５０は、例えば図１に示すフロー定義ファイル８６の一つに従って実現されるものであり、図１３に示すシステム２００と同様、第１のプロセス２５２及び第２のプロセス２５４を含む。フロー定義ファイル８６は、本例では第１のプロセス２５２及び第２のプロセス２５４をそれぞれ構成するモジュール間のデータの流れを定義している。
【００６０】
本システム２５０はさらに、第１のプロセス２５２及び第２のプロセス２５４、並びに本システム２５０の外部とに接続され、第１のプロセス２５２及び第２のプロセス２５４内のモジュール間、及びこれらモジュールと本システム２５０の外部との間のイベントの流れをフロー定義ファイル８６の記述に従って制御するためのモジュールマネージャ９２とを含む。
【００６１】
第１のプロセス２５２は、第１のモジュール２６０と、第２のモジュール２６２と、第３のモジュール２６４と、これら３つのモジュール２６０，２６２及び２６４の間、ならびにこれらモジュールとモジュールマネージャ９２との間のイベントの流れをフロー定義ファイル８６の記述に従って制御し、プロセス内のメッセージ通信を管理するためのメッセージマネージャ２６６とを含む。
【００６２】
第２のプロセス２５４も第１のプロセス２５２と同様、第４のモジュール２７０と、第５のモジュール２７２と、第６のモジュール２７４と、これら３つのモジュール２７０，２７２及び２７４の間、ならびにこれらモジュールとモジュールマネージャ９２との間のイベントの流れをフロー定義ファイル８６の記述に従って制御するためのメッセージマネージャ２７６とを含む。
【００６３】
モジュール２６０〜２７４は、いずれも入力と出力とを一個以上有する。各モジュールは、入力されたデータをそのモジュール特有の機能に従って内部で処理し、結果を出力する機能を持つ。例えば、音声の特徴抽出モジュールは、音声データを入力とし、その特徴パラメータを出力とする。
【００６４】
モジュールマネージャ９２は、本システム２５０の外部から与えられる入力を受けるための入力モジュール２８２と、本システム２５０からの出力を外部に与えるための出力モジュール２８４と、入力モジュール２８２、出力モジュール２８４、メッセージマネージャ２６６及びメッセージマネージャ２７６に接続され、フロー定義ファイル８６の記述に基づいて、各プロセス２５２及び２５４、並びに入力モジュール２８２及び出力モジュール２８４の間のイベントの流れを制御するためのメッセージマネージャ２８０と、図１に示すモジュールマネージャ９２からデータ処理システム２５０の起動指示を受け、データ処理システム２５０の実行に必要な処理と起動処理、終了処理を実行するための起動・終了制御部２８６とを含む。メッセージマネージャ２８０は、イベントの流れを制御することにより、プロセス間のメッセージ通信を管理するものということができる。
【００６５】
図１５に、モジュール間で通信されるイベント３２０の構成を示す。図１５を参照して、イベント３２０は、送信元モジュールＩＤと、送信先モジュールＩＤと、イベントタイプと、データの内容とを含む。イベントタイプとは、イベントに含まれるデータの型のことであり、前述したＷＡＶＥ型、ＦＥＡＴＵＲＥ型等がその一例である。
【００６６】
図１６にメッセージマネージャ２８０の構成をブロック図形式で示す。図１６を参照して、メッセージマネージャ２８０は、メッセージマネージャ２８０に入力されるイベントの送信先モジュールを決定するため、イベントの送信元モジュールＩＤとイベントタイプとをキーとして、送信先モジュールのモジュールＩＤを検索できるような構成を有するフロー管理テーブル２９２と、どのプロセスにどのモジュールが含まれているかを検索できる構成を持つモジュール管理テーブル２９４と、起動・終了制御部２８６から与えられる起動指示に応答し、フロー定義ファイル８６の記述に基づいてフロー管理テーブル２９２及びモジュール管理テーブル２９４を作成するためのテーブル作成処理部２９６とを含む。
【００６７】
メッセージマネージャ２８０はさらに、第１のプロセス２５２、第２のプロセス２５４、入力モジュール２８２及び出力モジュール２８４に接続され、第１のプロセス２５２、第２のプロセス２５４及び入力モジュール２８２から与えられるイベントを、フロー管理テーブル２９２及びモジュール管理テーブル２９４の記述に基づいて第１のプロセス２５２、第２のプロセス２５４、及び出力モジュール２８４のいずれかに出力するためのメッセージ振分処理部２９０を含む。
【００６８】
図１７にフロー管理テーブル２９２の構成の一例を、図１８にモジュール管理テーブル２９４の構成の一例を、それぞれ示す。図１７を参照して、フロー管理テーブル２９２は複数のエントリを含み、各エントリは、送信元モジュールＩＤと、イベントタイプと、送信先モジュールＩＤとを含む。これらは、図４に示すフロー定義ファイル８６のアークの記述に相当する。受信したイベントに含まれる送信元モジュールＩＤ及びイベントタイプ（図１５を参照されたい。）をキーにフロー管理テーブル２９２を検索することにより、当該イベントをどのモジュールに送信すべきかが、送信先モジュールＩＤの欄を見ることで判定できる。なお図１７に示すフロー管理テーブル２９２は、図１４に示す構成に必要な情報の一部のみを示す。
【００６９】
図１８を参照して、モジュール管理テーブル２９４も複数のエントリを含む。各エントリはモジュールに対応するものであり、そのモジュールが属するプロセス名と、そのモジュールのモジュールＩＤとを含む。図１８に示すモジュール管理テーブル２９４も、図１４に示す本システム２５０の構成に必要な情報の一部のみを示す。
【００７０】
次に図１４の第１のプロセス２５２及び第２のプロセス２５４を構成する各部について説明する。各モジュールの構成については本発明とは直接関係ないので、それらについての詳細な説明は省略する。またメッセージマネージャ２６６とメッセージマネージャ２７６とは同じ構成を有しているので、以下、メッセージマネージャ２６６について説明する。
【００７１】
図１９を参照して、メッセージマネージャ２６６は、メッセージマネージャ２６６に入力されるイベントの送信先モジュールを決定するため、イベントの送信元モジュールＩＤとイベントタイプとをキーとして、送信先モジュールのモジュールＩＤを検索できるような構成を有する、図１６に示すものと同様形式のフロー管理テーブル３０２と、このメッセージマネージャ２６６が管理するプロセス（本実施の形態では第１のプロセス２５２）にどのモジュールが含まれているかを記述したモジュール管理テーブル３００と、図１６に示すフロー管理テーブル２９２を複写してフロー管理テーブル３０２を作成するためのフロー管理テーブル作成処理部３０６と、フロー定義ファイル８６の記述に基づき、第１のプロセス２５２に含まれるモジュールＩＤを含むモジュール管理テーブル３００を作成するためのモジュール管理テーブル作成処理部３０４とを含む。
【００７２】
メッセージマネージャ２６６はさらに、第１〜第３のモジュール２６０，２６２及び２６４とモジュールマネージャ９２とからイベントを受取り、フロー管理テーブル３０２とモジュール管理テーブル３００とを参照して、当該イベントを第１〜第３のモジュール２６０，２６２及び２６４、並びにモジュールマネージャ９２のいずれに送信すべきかを判定し判定結果に従って当該イベントを振り分けるためのメッセージ振分処理部３０８と、メッセージ振分処理部３０８によってメッセージ振分処理部３０８の管理するプロセス（本実施の形態では第１のプロセス２５２）に送信するよう判定されたイベントを一時的にＦＩＦＯ形式で格納するためのイベントキュー３１０と、イベントキュー３１０からイベントを一つずつ読出し、当該イベントに含まれる送信先モジュールＩＤに基づいて、当該イベントを第１〜第３のモジュール２６０、２６２及び２６４のいずれかに配信するためのプロセス内メッセージ配信部３１２とを含む。
【００７３】
図２０にモジュール管理テーブル３００の形式を模式的に示す。メッセージマネージャ２６６が管理する第１のプロセス２５２の場合、そこに含まれるモジュールは第１のモジュール２６０、第２のモジュール２６２、及び第３のモジュール２６４である。従ってこの場合のモジュール管理テーブル３００の内容は図２０に示した通りとなる。
【００７４】
図２１に、モジュールマネージャ９２によるデータ処理システム２５０の制御処理のフローチャートを示す。図２１を参照して、モジュールマネージャ９２の起動・終了制御部２８６は、フロー定義ファイル８６の指定を伴う実行指示をフロー定義作成・実行指示装置６２から受けると、ステップ３４０で、指定されたフロー定義ファイルを読み込む。そして、ステップ３４２〜３４６の処理をフロー定義ファイル内に記述された全てのプロセスについて繰返す。
【００７５】
すなわち、ステップ３４２では、フロー定義ファイル内に記述されたプロセスを、同じくフロー定義ファイル内の当該プロセスについて記述されたホストに起動する。そして、このプロセスの定義内に記述された全てのモジュールについてステップ３４４及び３４６の処理を繰返す。
【００７６】
ステップ３４４では、プロセスの定義内に記述されたモジュールのインスタンスを生成する。そしてステップ３４６で、生成されたモジュールインスタンスに、同じモジュールについてプロセスの定義内に記述されたオプション／パラメータ値を配信する。
【００７７】
以上の処理を、全プロセス及び全モジュールに対し繰返すことで、データ処理システム２５０を構成する各モジュールを含むプロセスが、指定されたホスト上に立ち上がる。
【００７８】
ステップ３４８で、図１６に示すテーブル作成処理部２９６及び図１９に示すフロー管理テーブル作成処理部３０６に指示を与えて、ステップ３４０で読込んだフロー管理ファイルの内容に従い、フロー管理テーブル２９２及び３０２を作成する。さらにステップ３５０で、図１６に示すテーブル作成処理部２９６及び図１９に示すモジュール管理テーブル作成処理部３０４に指示を与え、フロー定義ファイルの内容に従ってモジュール管理テーブル２９４及び３００を作成する。ステップ３５２で、先頭モジュール（入力モジュールがある場合には入力モジュール）に開始指示を与え、最初のイベントを発生させこのデータ処理システムの入力に与える。以後は、メッセージマネージャ２８０及び各プロセス内のメッセージマネージャ２６６，２７６によるイベント配信によってシステムが動作し、システム内の各モジュールで処理されたデータが出力ファイルに出力される。
【００７９】
ステップ３５４では、データ処理システム２５０内に未処理のイベントがあるか否かを判定し、イベントがなくなるまで待ち、未処理のイベントがなくなったタイミングで、ステップ３４２で起動した全てのプログラムをステップ３５６で終了させ、自分も終了する。
【００８０】
以上がモジュールマネージャ９２の起動・終了制御部２８６によるデータ処理システム２５０の起動・終了制御の処理の概略である。
【００８１】
メッセージマネージャ２８０のメッセージ振分処理部２９０及びメッセージマネージャ２６６のメッセージ振分処理部３０８も、後述するようにコンピュータハードウェア上で実行されるプログラムにより実現される。本実施の形態の場合、メッセージ振分処理部２９０及び３０８が受信したイベントの送信元がプロセス内のものか、プロセス外のものか、によって異なる処理を行なう。それぞれを実現するコンピュータプログラムの制御構造について、特にメッセージ振分処理部３０８について図２２及び図２３を参照して説明する。
【００８２】
図２２は、プロセス内のモジュールからイベントを受信した場合に、図１９に示すメッセージマネージャ２６６のメッセージ振分処理部３０８が実行する処理プログラムのフローチャートである。図１６に示すメッセージマネージャ２８０のメッセージ振分処理部２９０についても同様である。図２２を参照して、プロセス内モジュールからイベントを受信すると、ステップ４３０で、当該イベントの送信元モジュールＩＤとイベントタイプとをキーにフロー管理テーブル３０２を検索し、該当する全てのアークを取出す。
【００８３】
続いて、ステップ４３０の処理の結果見つかった全てのアークについて、以下の処理を行なう。すなわち、ステップ４３２で、当該アークの送信先モジュールＩＤが当該プロセス内のモジュールのものか否かを判定する。送信先モジュールＩＤが当該プロセス内のモジュールのものであればステップ４３４に進み、さもなければステップ４４０に進む。
【００８４】
ステップ４３４では、イベントの送信先に、検索されたアークに含まれる送信先モジュールＩＤを設定する。送信先モジュールが同じプロセス内なので、ステップ４３６でこのイベントをイベントキュー３１０に出力する。
【００８５】
一方ステップ４４０では、イベントの送信先に、同じく検索されたアークに含まれる送信先モジュールＩＤを設定する。送信先モジュールがプロセス外に存在しているので、ステップ４４２でこのイベントをモジュールマネージャ９２に出力する。
【００８６】
ステップ４３４、４３６、４４０及び４４２の処理を、ステップ４３０で見出された全てのアークに対して行なうことにより、一つのイベントに対し、見つかった数だけのイベントが生成され、送信先モジュールの所在に応じて、それぞれイベントキュー３１０又はモジュールマネージャ９２に送信されることになる。
【００８７】
図２３は、プロセス外からイベントを受信した場合に、図１６に示すメッセージマネージャ２８０のメッセージ振分処理部２９０が実行する処理プログラムのフローチャートである。図２３を参照して、プロセス外からイベントを受信すると、ステップ４６０で、モジュール管理テーブル２９４中でイベント中の送信先モジュールＩＤを検索し、当該送信先モジュールを含むプロセスを決定する。ステップ４６２では、決定されたプロセスが自分自身か否かを判定する。もし自分自身が送信先であればステップ４６４で自己のイベントキューに当該イベントを格納する。もし自分自身が送信先でなければ、ステップ４６６で送信先モジュールを含むプロセスに当該イベントを送信する。
【００８８】
一方、図１９に示すメッセージマネージャ２６６がプロセス外からイベントを受信した場合、当該イベントの送信先については、プロセス内であることが保証されている。従って当該イベントを図１９に示すメッセージ振分処理部３０８に格納する。
【００８９】
−動作−
図１〜図２３に示すシステムは、以下のように動作する。動作は、フロー定義の作成と、作成したフロー定義に基づいてデータ処理システム２５０を動作させる処理との、大きく分けて二つの局面に分かれる。最初に、フロー定義について説明する。
【００９０】
利用者が図６に示すフロー定義作成・実行指示プログラム１４０を起動すると、利用可能なモジュール定義ファイルの内容及び使用可能なホストのリストがフロー定義実行管理装置６０からフロー定義作成・実行指示装置６２に送信される。フロー定義作成・実行指示装置６２は、受信した情報に従ってモジュールタイプテーブル１４６、モジュールテーブル１４８及びホストテーブル１５０を作成する。画面には図７に示すような画面が表示される。以下では、フロー定義を新規に作成する場合を例にしてフロー定義作成・実行指示装置６２の動作を説明する。
【００９１】
図７を参照して、利用者が画面１７０上で新規ボタン１８０を押すことで、フロー定義作成領域１７８が空白となる。モジュールパレット１７２には使用可能なモジュールタイプがアイコンとモジュールタイプ名により表示される。利用者がモジュールパレット１７２上のいずれかのアイコンを選び、ドラッグ・アンド・ドロップでフロー定義作成領域１７８上に配置することにより、図６に示すノードテーブル１５２中に、そのモジュールに対応するエントリが作成される。利用者が新たなモジュールを配置するたびに、ノードテーブル１５２に新たなエントリが作成される。なお、図１１を参照して、この時点では各エントリのうち、ノードＩＤ、モジュールタイプ、及び座標のみが設定され、他の項目は空白である。
【００９２】
利用者はさらに、各モジュールの間を矢印（アーク）で接続していく。アークが一つ配置されるたびに、アークテーブル１５４内に対応のエントリが作成される。ただしこの時点では、図１２に示す情報のうち、開始ノードＩＤと終了ノードＩＤのみが格納され、イベントタイプは未定義である。
【００９３】
モジュールの一つの矩形をクリックすると、モジュール設定フレームが表示される。モジュール設定フレームでは、当該モジュールタイプのうちで使用可能なモジュールの一覧が表示される。この一覧は、図９に示すモジュールテーブル１４８から作成できる。表示されるモジュールのうちの一つを選択することで、どのモジュールを使用するかが確定する。さらに、このモジュールをどのホスト上で実行させるかについても指定する。
【００９４】
さらに、使用するモジュールが確定すると、当該モジュールで指定できるオプション／パラメータの入力フレームが画面左下に表示される。各オプション／パラメータを設定すると、モジュール定義情報に従ったチェックが行なわれ、エラーがあればエラー表示が行なわれ、再入力が促される。
【００９５】
ユーザがアークの一つをダブルクリックすると、イベントタイプ指定のためのリストボックスが表示される。リストボックスには、出所側のモジュールの出力イベントの型の集合と、行き先側のモジュールの入力イベントの型の集合との共通集合（積集合）の要素がリストされる。いずれかを選択することにより、当該アークのイベントタイプが定まり、図１２に示すアークテーブル１５４のイベントの領域に選択されたイベントタイプを示す情報が格納される。なお、使用可能なイベントが一種類しかない場合には、アークのイベントタイプは自動的に設定される。
【００９６】
こうして、全てのモジュールについて使用モジュール、ホスト、及びオプション／パラメータが決定され、各アークのイベントタイプが決定すると、それらに基づいてフロー定義を作成できる。フロー定義はフロー定義作成・実行指示装置６２からフロー定義実行管理装置６０に転送され、フロー定義ファイル８６のうちの一つとしてフロー定義実行管理装置６０に格納される。
【００９７】
フロー定義の修正の場合も、最初にフロー定義ファイル８６のうちの一つを選択して当該ファイルの内容をフロー定義作成・実行指示装置６２に転送することを除いて、作成の場合と同様である。
【００９８】
作成したフロー定義に従ってデータ処理システム６４を動作させたい場合には、次のような操作を行なう。図７を参照して、「実行」ボタン１８８を押すと、フロー定義ファイルの選択ダイアログが表示される。そのうちの一つを選択することで、フロー定義作成・実行指示装置６２からフロー定義実行管理装置６０に対して当該フローファイルに基づくデータ処理の開始が指示される。
【００９９】
図１に示す管理プログラム８０は、その指示に従いモジュールマネージャ９２に対して選択されたフロー定義ファイルを特定する情報を与えるとともに、データ処理の開始を指示する。
【０１００】
図１４を参照して起動・終了制御部２８６は、この指示に応答して、指定されたフロー定義ファイルを読込み（図２１のステップ３４０）、データ処理システム２５０の各プロセスを、指定されたホスト上に起動する（ステップ３４２）。さらに、フロー定義ファイルに記述された各モジュールについて、指定されたプロセス内にインスタンスを生成し（ステップ３４４）、フロー定義ファイル内に記述されたオプション／パラメータを配信する（ステップ３４６）。その後、図１６に示すテーブル作成処理部２９６、及び図１９に示すフロー管理テーブル作成処理部３０６、モジュール管理テーブル作成処理部３０４に指示を与えて各フロー管理テーブル２９２及び３０２、並びにモジュール管理テーブル２９４及び３００を作成させる（図２１のステップ３４８，３５０）。以上でデータ処理システム２５０のセットアップが完了する。
【０１０１】
次に起動・終了制御部２８６は、図１４に示す入力モジュールに対し、入力ファイルからデータを読出しイベントとしてメッセージマネージャ２８０に与えるよう、始動の指示を与える（図２１のステップ３５２）。入力モジュール２８２は入力ファイルからフレームデータを作成し、イベントとしてメッセージマネージャ２８０に与える。
【０１０２】
図１６を参照して、メッセージマネージャ２８０のメッセージ振分処理部２９０は、フロー管理テーブル２９２及びモジュール管理テーブル２９４を参照して、当該イベントの送信先のモジュールを含むプロセスを決定し（図２３のステップ４６０）、イベントを当該プロセスに送信する（ステップ４６４又は４６６）。本例では、例えば第１のプロセス２５２にこのイベントが送信されるものとする。
【０１０３】
図１９を参照して、メッセージマネージャ２６６のメッセージ振分処理部３０８は、このイベントがプロセス外からのものなので、当該イベントをイベントキュー３１０に格納する。プロセス内メッセージ配信部３１２が、イベントキュー３１０からイベントを読出し、送信先モジュールＩＤにより指定されるモジュールにイベントを配信する。
【０１０４】
このイベントを受けたモジュールは、結果のイベントをメッセージマネージャ２６６のメッセージ振分処理部３０８に返信してくる。このとき、イベントの送信元モジュールＩＤ及びイベントタイプには、それぞれ当該モジュールにより値が設定されている。送信先モジュールＩＤについては設定されていない。
【０１０５】
メッセージ振分処理部３０８は、受けたイベントの送信元モジュールＩＤとイベントタイプとをキーにフロー管理テーブル３０２を検索し（図２２のステップ４３０）、一致するアークを得る。メッセージ振分処理部３０８はさらに、モジュール管理テーブル３００を参照して、当該送信先モジュールが第１のプロセス２５２内か否かを判定する（ステップ４３２）。第１のプロセス２５２内であれば（すなわち当該モジュールＩＤがモジュール管理テーブル３００内に存在すれば）、当該アークに含まれている送信先モジュールＩＤをイベントの送信先モジュールＩＤに設定し（ステップ４３４）、メッセージ振分処理部３０８はこのイベントをイベントキュー３１０に書出す（ステップ４３６）。
【０１０６】
送信先が第１のプロセス２５２外であれば、アークに含まれている送信先モジュールＩＤをイベントの送信先モジュールＩＤに設定し（ステップ４４０）、モジュールマネージャ９２にこのイベントを送信する（ステップ４４２）。
【０１０７】
モジュールマネージャ９２のメッセージマネージャ２８０では、最初の入力データを受けた場合と同様、フロー管理テーブル２９２とモジュール管理テーブル２９４とに基づいてこのイベントの送信先プロセスを決定し、そのプロセスのメッセージマネージャにイベントを送信する。フロー管理テーブル２９２により、システム外に出力することが示されている場合、メッセージ振分処理部２９０は出力モジュール２８４にイベントを出力する。出力モジュール２８４は、このイベントをさらに外部に出力する。
【０１０８】
以下、メッセージマネージャ２８０のメッセージ振分処理部２９０、並びに第１のプロセス２５２及び第２のプロセス２５４のメッセージマネージャ２６６及び２７６は、上記したのと同様の処理を繰返す。その結果、外部から次々に入力モジュール２８２に入力されたデータは、それぞれ所定のモジュールによって処理され、結果のイベントが出力モジュール２８４から出力される。
【０１０９】
上に説明したシステム２５０では、各モジュールは自己の処理した結果のイベントをどのモジュールに送信するかについては全く意識する必要がない。どのプロセスにおいても、モジュールではなくメッセージマネージャが送信先モジュールを決定し、さらに送信先モジュールが同一プロセス内であればイベントキューを用いて当該イベントを配信し、プロセス外であれば、モジュールマネージャに当該イベントを配信する。イベントの配信を受けたモジュールマネージャが、送信先モジュールＩＤに基づいて送信先のプロセスを決定し、送信する。
【０１１０】
従って、モジュールの独立性が極めて高くなり、システム構成に従ってモジュールを変更したりする必要はない。さらに、プロセス間通信については、どのプロセスも送信先のプロセスを意識せず、すべてモジュールマネージャに送信するだけでよい。従って、各プロセス間通信のためのオーバヘッドが少なくなる。
【０１１１】
以上のように本実施の形態のシステムによれば、モジュール定義に従ってフロー定義を作成し、そのフロー定義を用いて複数のモジュールからなるシステムを効率よく設計し、かつ簡略な操作で実際に動作させることができる。モジュール間の接続関係を変えたり、使用するモジュールを、同じモジュールタイプで別のモジュールによって置換してシステムの性能を比較したりする作業が簡単に行なえる。
【０１１２】
また、上記したように設計され、かつ動作する各モジュール間の通信を、各プロセス内とモジュールマネージャ内に設けたメッセージマネージャによって管理でき、各モジュールはイベントの入力となるモジュール及びイベントの行き先のモジュール等を意識する必要はない。従って各モジュールの独立性を高め、自由にシステムを組むことが可能になる。また、データはプロセス間を転送されながら各モジュールで処理され、かつ各プロセスではイベントキューによって処理時間の調整を行ないながら正しい順序でデータ処理を行なうことができる。その結果、リアルタイムで、音声認識等の多量のデータ処理を行なうことができる。またモジュールの組合せが自由にできるので、異なる構成のシステムの性能実験等を簡単に、かつ短い時間に行なうことが可能になる。
【０１１３】
−コンピュータによる実現−
この実施の形態のシステムは、コンピュータハードウェアと、そのコンピュータハードウェアにより実行されるプログラムと、コンピュータハードウェアに格納されるデータとにより実現される。図２４はこのコンピュータシステム５３０の外観を示し、図２５はコンピュータシステム５３０の内部構成を示す。なお、前述したとおりこのシステムは、これら複数のコンピュータをネットワーク等で結合したものによって実現することもできる。
【０１１４】
図２４を参照して、このコンピュータシステム５３０は、ＦＤ（フレキシブルディスク）ドライブ５５２及びＣＤ−ＲＯＭ（コンパクトディスク読出専用メモリ）ドライブ５５０を有するコンピュータ５４０と、キーボード５４６と、マウス５４８と、モニタ５４２とを含む。
【０１１５】
図２５を参照して、コンピュータ５４０は、ＦＤドライブ５５２及びＣＤ−ＲＯＭドライブ５５０に加えて、ＣＰＵ（中央処理装置）５５６と、ＣＰＵ５５６、ＦＤドライブ５５２及びＣＤ−ＲＯＭドライブ５５０に接続されたバス５６６と、ブートアッププログラム等を記憶する読出専用メモリ（ＲＯＭ）５５８と、バス５６６に接続され、プログラム命令、システムプログラム、及び作業データ等を記憶するランダムアクセスメモリ（ＲＡＭ）５６０とを含む。コンピュータシステム５３０はさらに、プリンタ５４４を含んでいる。
【０１１６】
コンピュータ５４０はさらにローカルエリアネットワーク（ＬＡＮ）への接続を提供するネットワークアダプタボード５６８を含む。
【０１１７】
コンピュータシステム５３０に、この実施の形態に係るフロー定義作成・実行指示装置６２、フロー定義実行管理装置６０、又はシステム２５０（又はその一部の第１のプロセス２５２、第２のプロセス２５４、モジュールマネージャ９２等）としての動作を行なわせるためのコンピュータプログラムは、ＣＤ−ＲＯＭドライブ５５０又はＦＤドライブ５５２に挿入されるＣＤ−ＲＯＭ５６２又はＦＤ５６４に記憶され、さらにハードディスク５５４に転送される。又は、プログラムはネットワークを通じてコンピュータ５４０に送信されハードディスク５５４に記憶されてもよい。プログラムは実行の際にＲＡＭ５６０にロードされる。ＣＤ−ＲＯＭ５６２から、ＦＤ５６４から、又はネットワークを介して、直接にＲＡＭ５６０にプログラムをロードしてもよい。
【０１１８】
このプログラムは、コンピュータ５４０（又はコンピュータ５４０と通信可能な他のコンピュータ）にこの実施の形態に係るフロー定義作成・実行指示装置６２、フロー定義実行管理装置６０、並びにシステム２５０に含まれる各プロセス２５２、２５４、モジュールマネージャ９２、各プロセス中で実行されるモジュール等としての動作を行なわせる複数の命令を含む。このために必要な基本的機能のいくつかはコンピュータ５４０上で動作するオペレーティングシステム（ＯＳ）又はサードパーティのプログラム、もしくはコンピュータ５４０にインストールされる各種ツールキットのモジュールにより提供される。従って、このプログラムはこの実施の形態のシステムを実現するのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能又は「ツール」を呼出すことにより、上記した装置及びシステムを実現する命令のみを含んでいればよい。コンピュータシステム５３０の動作は周知であるので、ここでは繰返さない。
【０１１９】
上記した実施の形態では、モジュール管理テーブルについては各プロセスに用意した。しかし本発明はそのような実施の形態には限定されず、モジュール管理テーブルをシステム内の全てのモジュールで同じものを使用するようにしてもよい。また、上記実施の形態では、モジュール識別子はシステム内で一意であるものとした。しかし本発明はそのような実施の形態には限定されず、プロセス内でのみモジュール識別子が一意になるようにしてもよい。ただしその場合、イベント通信ではプロセス名とモジュール識別子とによって送信元及び送信先を特定する必要がある。
【０１２０】
また、上記した実施の形態では、フロー定義作成・実行指示装置６２はブラウザプログラム上で動作するプログラムにより実現されるものであることを前提としている。しかし本発明はそのような実施の形態には限定されず、フロー定義作成・実行指示装置６２をブラウザと異なる独自のアプリケーションプログラムで実装してもよい。また、フロー定義作成・実行指示装置６２としての機能の実質的な部分を全てフロー定義実行管理装置６０に持たせ、フロー定義作成・実行指示装置６２ではブラウザプログラム上の表示及びフロー定義のための操作のみを行なうようにしてもよい。
【０１２１】
さらに、フロー定義ファイル８６、モジュール定義ファイル８２、入力ファイル９０等がフロー定義実行管理装置６０と同一のコンピュータ上に存在しているものに限定する必要はなく、ネットワークを介してアクセス可能な他のシステム内に存在しているものを利用可能なシステムとして設計してもよい。
【０１２２】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
【図面の簡単な説明】
【０１２３】
【図１】本発明の一実施の形態に係る音声認識データ処理システム５０のブロック図である。
【図２】モジュール定義ファイルの構成を示す図である。
【図３】モジュール定義ファイルの例を示す図である。
【図４】フロー定義ファイルの構成を示す図である
【図５】フロー定義ファイルの例を示す図である。
【図６】フロー定義作成・実行指示装置６２のブロック図である。
【図７】フロー定義作成・実行指示装置６２の表示画面の模式図である。
【図８】モジュールタイプテーブル１４６の構成を示す模式図である。
【図９】モジュールテーブル１４８の構成を示す模式図である。
【図１０】ホストテーブル１５０の構成を示す模式図である。
【図１１】ノードテーブル１５２の構成を示す模式図である。
【図１２】アークテーブル１５４の構成を示す模式図である。
【図１３】各々複数のモジュールを含む複数のプロセスからなるシステムの構成例を示す図である。
【図１４】本発明の一実施の形態に係るシステム２５０のブロック図である。
【図１５】イベント３２０の構成を示す図である。
【図１６】図１４に示すモジュールマネージャ９２のメッセージマネージャ２８０のブロック図である。
【図１７】フロー管理テーブル２９２の構成を示す図である。
【図１８】モジュール管理テーブル２９４の構成を示す図である。
【図１９】図１４に示す第１のプロセス２５２のメッセージマネージャ２６６のブロック図である。
【図２０】モジュール管理テーブル３００の構成を示す図である。
【図２１】起動・終了制御部２８６が実行する処理の制御構造を示すフローチャートである。
【図２２】プロセス内イベントを受信したときの、各メッセージ振分処理部で実行される処理を示すフローチャートである。
【図２３】モジュールマネージャ９２のメッセージ振分処理部２９０がプロセス外イベントを受信したときに実行する処理を示すフローチャートである。
【図２４】本発明の一実施の形態に係るシステム２５０又はその一部のプロセスを実現するためのコンピュータシステムの外観図である。
【図２５】図２４に示すコンピュータシステムの内部構成を示すブロック図である。
【符号の説明】
【０１２４】
５０  音声認識データ処理システム、６０  フロー定義実行管理装置、６２  フロー定義作成・実行指示装置、６４，２００，２５０  データ処理システム、６６  プロセス用プログラム、８０  管理プログラム、８２  モジュール定義ファイル、８４  入力ファイル情報、８６  フロー定義ファイル、９２  モジュールマネージャ、１４０  フロー定義作成・実行指示プログラム、１４６  モジュールタイプテーブル、１４８  モジュールテーブル、１５０  ホストテーブル、１５２  ノードテーブル、１５４  アークテーブル、１７２  モジュールパレット、１７８  フロー定義作成領域、２２２，２５２  第１のプロセス、２２４，２５４  第２のプロセス、２３０，２３２，２３４，２３６，２３８，２４０，２６０，２６２，２６４，２７０，２７２，２７４  モジュール、２６６，２７６，２８０  メッセージマネージャ、２８６  起動・終了制御部
【図１】
0004691895.tif 000002
【図２】
0004691895.tif 000003
【図３】
0004691895.tif 000004
【図４】
0004691895.tif 000005
【図５】
0004691895.tif 000006
【図６】
0004691895.tif 000007
【図７】
0004691895.tif 000008
【図８】
0004691895.tif 000009
【図９】
0004691895.tif 000010
【図１０】
0004691895.tif 000011
【図１１】
0004691895.tif 000012
【図１２】
0004691895.tif 000013
【図１３】
0004691895.tif 000014
【図１４】
0004691895.tif 000015
【図１５】
0004691895.tif 000016
【図１６】
0004691895.tif 000017
【図１７】
0004691895.tif 000018
【図１８】
0004691895.tif 000019
【図１９】
0004691895.tif 000020
【図２０】
0004691895.tif 000021
【図２１】
0004691895.tif 000022
【図２２】
0004691895.tif 000023
【図２３】
0004691895.tif 000024
【図２４】
0004691895.tif 000025
【図２５】
0004691895.tif 000026