(57)【特許請求の範囲】
【請求項１】
複数のオブジェクト装置がネットワークを介してメッセージを送信又は受信可能であるオブジェクト連携システムであって、
前記複数のオブジェクト装置は、それぞれ、
前記ネットワーク上に送信されるメッセージを取り込むメッセージ送受信部と、
変数を有するメッセージタグの組み合わせとして記述されたメッセージ構造であって、前記組み合わせのうち少なくとも１つのメッセージタグの変数が、引数識別子として、該メッセージが引数の割り当てを必須とするメッセージであることを示す引数必須識別子を含み、かつ、他のメッセージタグの変数が、該メッセージが引数の割り当てを任意とするメッセージであることを示す引数任意識別子を含む、当該オブジェクト装置が受理可能なメッセージとマッチするメッセージ構造と、該メッセージ構造を持つメッセージに対する反応であるアクション内容とを管理する反応テーブルと、
前記メッセージを受信すると、該受信メッセージのメッセージ構造と前記反応テーブルに基づき、前記受信メッセージの持つメッセージ構造にマッチングするアクション内容が前記反応テーブルに存在すると判断する場合は、当該アクション内容に従って処理を実行するアクション実行部とを備えるオブジェクト連携システム。
【請求項２】
前記アクション実行部による前記反応テーブルを用いた受信メッセージの持つメッセージ構造のマッチングにおいて、
受信メッセージを解析し、前記メッセージ構造における前記引数必須識別子の付された変数に対応するメッセージ部分に対して、引数が含まれていない場合は当該部分のマッチングが成立せず、前記メッセージ構造における前記引数任意識別子の付された変数に対応するメッセージ部分に対して、メッセージの引数が含まれていない場合は当該部分のマッチングは成立したと判断する、請求項１に記載のオブジェクト連携システム。
【請求項３】
前記複数のオブジェクト装置は、それぞれ、
メッセージ生成部をさらに備え、
前記アクション実行部における内部処理結果に基づいて、他のオブジェクトに対して連携を求める際、前記メッセージ生成部によりメッセージタグの組み合わせによる前記メッセージ構造を持つメッセージを生成し、該メッセージを前記メッセージ送受信部により送信する、請求項１に記載のオブジェクト連携システム。
【請求項４】
前記アクション実行部における受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従った処理の実行にあたり、前記アクション内容に従った処理において必要とされる変数の値に制限がある場合に当該制限をアクション実行条件とし、
前記アクション実行部が、前記受信メッセージの中の該当する変数の値を調べるアクション実行条件チェック部を備え、前記アクション実行条件チェック部のチェックによりアクション実行条件の満足が確認されない場合にはアクションを実行しない、請求項１に記載のオブジェクト連携システム。
【請求項５】
複数のオブジェクト装置がネットワークを介してメッセージを送信又は受信可能であるオブジェクト連携システムを実現するためのプログラムを記録した記憶媒体であって、前記プログラムは、複数のそれぞれのコンピュータで処理実行されてオブジェクト連携を実現するオブジェクトのプログラムであり、
前記オブジェクトのプログラムは、
前記各コンピュータに、
前記ネットワーク上に送信されるメッセージを受信するステップと、
変数を有するメッセージタグの組み合わせとして記述されたメッセージ構造であって、前記組み合わせのうち少なくとも１つのメッセージタグの変数が、引数識別子として、該メッセージが引数の割り当てを必須とするメッセージであることを示す引数必須識別子を含む、かつ、他のメッセージタグの変数が、該メッセージが引数の割り当てを任意とするメッセージであることを示す引数任意識別子を含む、当該オブジェクト装置が受理可能なメッセージとマッチするメッセージ構造と、該メッセージ構造を持つメッセージに対する反応であるアクション内容とを管理する反応テーブルを用いて管理するステップと、
前記メッセージを受信すると、該受信メッセージのメッセージ構造と前記反応テーブルに基づき、前記受信メッセージの持つメッセージ構造にマッチングするアクション内容が前記反応テーブルに存在すると判断する場合は、当該アクション内容に従って処理を実行するステップとを実行させるプログラムである記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ群もしくはオブジェクト群の対話・協調などの連携処理を実施するオブジェクト連携システムに関し、オブジェクト指向環境において複数のプロセスが作りだされ、コンピュータネットワークを通じて、環境の変化に柔軟に対応し、漸進的に変化するシステム構築のためのオブジェクト連携システムに関する。特に、メッセージ構造を基にしたメッセージとアクションの反応関係によりオブジェクト同士の連携において、メッセージ構造のマッチング処理を拡張したオブジェクト連携システムに関する。
【０００２】
【従来の技術】
近年、ネットワーク化が進み、ネットワーク上に分散した複数のオブジェクトが互いに連携して処理を行うシステムが増えている。このような複数のオブジェクトが連携して処理を行うための技法として、オブジェクト指向型プログラミングやコンポーネント技術などの研究がなされている。
【０００３】
オブジェクト指向型プログラミングの一例として、オブジェクト指向技術の標準化と普及を目指して設立された業界団体ＯＭＧ（Object Management Group）によって定められた分散オブジェクト運用のための共通仕様ＣＯＲＢＡ（The Common Object Request Broker : Architecture and Specification）がある。
【０００４】
図１０に、ＣＯＲＢＡに基づいたクライアント／サーバシステムにおけるオブジェクト連携の例を示す。このシステムは、クライアントアプリケーションとサーバ・アプリケーションとが連携することにより、つまりオブジェクト連携により一連の処理を行うものである。
【０００５】
アプリケーション開発者は、クライアントおよびサーバそれぞれが提供するサービスのインターフェースをＩＤＬ（Interface Definition Language）で記述する。インターフェースとして定義する内容は、オブジェクトに依頼できるオペレーション群であり、各々のオペレーションは、オペレーション名、パラメタの定義、戻り値の定義、エラー発生時の例外処理、付加情報などが定義される。
【０００６】
ＩＤＬで定義された内容を専用のコンパイラでコンパイルすることにより、クライアント用のスタブとサーバ用のスケルトンが生成される。スタブとは、クライアントアプリケーションにＩＤＬで定義されたオペレーション群へのアクセスを提供するルーチン群である。クライアントアプリケーションは、スタブで提供されるルーチンを呼び出すことにより、各種オペレーションが起動される。スケルトンは、サーバ・アプリケーションが提供するメソッドルーチンヘのディスパッチングルーチンを提供する。
【０００７】
スタブおよびスケルトンは、対応するクライアントアプリケーションあるいはサーバ・アプリケーションが使用するプログラミング言語で生成される。たとえば、使用されるプログラミング言語がＣ言語であったとすると、スタブはＣ言語の関数群として生成され、クライアントアプリケーションは、実行したいオペレーションに対応する関数を呼び出すことにより、スタブ、ＯＲＢランタイム、スケルトンを経由してサーバ・アプリケーションの該当ルーチンが呼び出され、所定の処理が実行されたあと、その処理結果が呼び出し元のクライアントアプリケーションに返される。
【０００８】
【発明が解決しようとする課題】
上記従来技術に見たように、ＣＯＲＢＡなどによりオブジェクト連携処理を構築することは、容易になってきている。しかし、実際にこのような連携処理を構築しようとすると、前述のＣＯＲＢＡであれば、ＣＯＲＢＡそのものの理解とともに、ＣＯＲＢＡの仕様に応じたオブジェクトの設計およびＩＤＬによる定義が必要となる。つまりＣＯＲＢＡの利用方法を詳細にわたってシステム構築者が熟知する必要がある。
【０００９】
また、それぞれのオブジェクトの関係を強く意識する必要がある。つまり、それぞれのオブジェクトがどういう処理を行うのか、その処理を行うために必要となる受渡しのパラメタは何かなどを明確にしておかなければならない。
【００１０】
オブジェクト間のインターフェースが共通化されることにより、オブジェクトの独立性は高まったとは言え、あくまでもオブジェクトとオブジェクトの間には固定の関係が存在することが前提となっている。
【００１１】
オブジェクトとオブジェクトの連携関係において自由な連携というものが望まれているが、従来の連携方法は、あくまでもオブジェクトとオブジェクトの関係は固定であることを前提しており、このような自由な関係を持った連携システムの構築は困難であった。
【００１２】
このように、分散オブジェクトシステム技術においては、ＣＯＲＢＡやあるいはＤＣＯＭに代表されるように、ネットワークに対して透過的なオブジェクトのアクセスを提供するための枠組みや分散オブジェクトのインターフェイスに関する枠組みが徐々に整いつつあるが、オブジェクト間の連携をいかに動的に構築していくかという問題に十分に答えるものではない。
【００１３】
本発明は、上記問題点を解決するため、ネットワークに接続されたオブジェクトとオブジェクトの連携あるいはコンピュータとコンピュータの連携の自由度を高めることを目的とし、コンピュータ群もしくはオブジェクト群の対話・協調などの連携処理を実施し、オブジェクト指向環境における環境の変化に柔軟に対応し、漸進的に変化するシステム構築のためのオブジェクト連携システムを提供することを目的とする。
【００１４】
また、本発明のオブジェクト連携システムは、オブジェクトの連携関係の成立条件を緩和し、オブジェクト連携の自由度、柔軟性を確保することを目的とする。
【００１５】
また、本発明のオブジェクト連携システムは、複数のオブジェクトとの連携を実現する際に、オブジェクトの連携関係の成立条件を緩和することにより共通した処理により複数のオブジェクトとの連携を実現し、フィールド上のメッセージ送信量を低減させることを目的とする。
【００１６】
【課題を解決するための手段】
本発明のオブジェクト連携システムは、フィールドを流れるメッセージと当該メッセージに対応するアクションの関係によってオブジェクト同士を結び付けることによりオブジェクト同士の連携を構築し、当該メッセージとアクションの関係の記述を柔軟かつ動的に更新することによりオブジェクト連携関係を柔軟かつ動的に構築するものであり、オブジェクト同士の連携をフィールド上に流すメッセージの持つメッセージ構造と該メッセージ構造に対応付けられたアクションにより実現するフィールドリアクターモデルを前提とする。
【００１７】
本発明のオブジェクト連携システムは、各オブジェクトが、ネットワーク上に送信されるメッセージを取り込むメッセージ受信部と、メッセージ構造に対する反応であるアクション内容を管理する反応テーブルと、前記反応テーブルに従い、受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従って処理を実行するアクション実行部を備え、前記反応テーブルの前記メッセージ構造が、メッセージタグの組み合わせとして与えられ、前記メッセージタグの引数識別子として、該メッセージが引数の割り当てを必須とするメッセージであることを示す引数必須識別子と、該メッセージ中が引数の割り当てを任意とするメッセージであることを示す引数任意識別子を規定し、それらの組み合わせによりメッセージ構造を記述したことを特徴とする構造化メッセージを用いたことを特徴とする。
【００１８】
上記構成により、メッセージ構造を用いたメッセージ・アクション反応関係により柔軟かつ動的にオブジェクト間の連携を行うことができ、かつ、メッセージ構造においてメッセージタグの引数識別子として、引数必須識別子と引数任意識別子の組み合わせによりメッセージ構造を記述したので、メッセージ・アクション反応関係を緩やかに拡張することができ、引数が存在しない場合でも受け手のオブジェクトを連携させることが可能となる。
【００１９】
また、このようにメッセージ・アクション反応関係を緩やかに拡張するので、複数のオブジェクトの連携関係をまとめて構築することができ、フィールド上に流すメッセージ量を低減することができる。
【００２０】
また、本発明のオブジェクト連携システムの前記アクション実行部による前記反応テーブルを用いた受信メッセージの持つメッセージ構造のマッチングにおいて、受信メッセージを解析し、前記引数必須識別子の付されたメッセージ部分に対して引数が含まれていない場合は当該部分のマッチングが成立せず、前記引数任意識別子の付されたメッセージ部分に対して引数が含まれていない場合は当該部分のマッチングは成立したと判断する。
【００２１】
上記構成により、引数が必須でないメッセージ部分については引数任意識別子が記述されていれば、実際の引数が含まれていなくともメッセージ構造のマッチングが成立したと判断でき、メッセージ・アクション反応関係を緩やかに拡張することができる。
【００２２】
なお、前記アクション実行部による前記反応テーブルを用いた受信メッセージの持つメッセージ構造のマッチングにおいて前記引数任意識別子の付されたメッセージ部分に対して引数が含まれておらず当該部分のマッチングは成立したと判断した場合には、前記アクション実行部は、引数の割り当て処理は実行せず前記反応テーブルに記述された受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従って処理を実行することとすれば良い。
【００２３】
また、オブジェクト連携システムは、メッセージ生成部を備え、内部処理結果に基づいて、他のオブジェクトに対して連携を求める際、前記メッセージ生成部によりメッセージタグの組み合わせによるメッセージ構造を持つメッセージを生成する。
【００２４】
次に、本発明のオブジェクト連携システムは、メッセージを受信しうるフィールドに存在するオブジェクトのうち連携を行いたいオブジェクトを選択する連携オブジェクト選択部と、前記選択したオブジェクトのそれぞれの反応テーブルに記述されたメッセージ構造を基に、前記選択したオブジェクトが反応しうるメッセージ構造を含んだ共通メッセージ構造を決定する共通メッセージ構造決定部と、前記決定された共通メッセージ構造に従って送信するメッセージを生成するメッセージ生成部を備えることが好ましい。
【００２５】
上記構成により、オブジェクト連携関係を構築したい複数のオブジェクトをまとめて連携関係を構築することができ、フィールド上に流すメッセージ量を低減することができる。ここで、前記メッセージ生成部は、共通メッセージ構造を持つメッセージの生成にあたり、引数必須識別子のメッセージ部分に対しては引数を付し、引数任意識別子のメッセージ部分に対しては送信すべき引数が存在する場合には該引数を付し、送付すべき引数が存在しない場合には引数を付さないこととする。
【００２６】
さらに、本発明のオブジェクト連携システムにおいて、前記アクション実行部における受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従った処理の実行にあたり、前記アクション内容に従った処理において必要とされる変数の値に制限がある場合に当該制限をアクション実行条件とし、前記アクション実行部が、前記受信メッセージの中の該当する変数の値を調べるアクション実行条件チェック部を備え、前記アクション実行条件チェック部のチェックによりアクション実行条件の満足が確認されない場合にはアクションを実行しないことが好ましい。
【００２７】
上記構成により、共通メッセージ構造を用いてメッセージアクション関係を緩やかに拡張してメッセージをフィールド上に流した場合、選択していないオブジェクトが当該メッセージに反応する場合が生じるが、アクション実行条件をチェックすることにより選択されていないオブジェクトが実際にアクションを実行することがないように制御することができる。
【００２８】
本発明のオブジェクト連携システムを実現する処理プログラムを記録したコンピュータ読み取り可能な記録媒体を提供すれば、コンピュータ装置を利用して本発明のオブジェクト連携システムを構築することができる。
【００２９】
【発明の実施の形態】
以下、本発明のオブジェクト連携システムの実施形態について、図面を参照しながら説明する。
【００３０】
（実施形態１）
本発明は、メッセージ構造を用いたパターンマッチングによるメッセージアクション反応関係により、メッセージを介してオブジェクト同士を連携させるオブジェクト連携システムを前提とし、メッセージアクション反応関係のメッセージ構造が、メッセージタグの組み合わせとして与えられ、メッセージタグの引数識別子として、該メッセージが引数の割り当てを必須とするメッセージであることを示す引数必須識別子と、該メッセージ中が引数の割り当てを任意とするメッセージであることを示す引数任意識別子が規定され、それらの組み合わせによりメッセージ構造を記述することとして、オブジェクト連携関係を緩やかに拡張したものである。
【００３１】
まず、本発明のオブジェクト連携システムが前提とするメッセージ構造を用いたパターンマッチングによるメッセージアクション反応関係によりメッセージを介してオブジェクト同士を連携させるオブジェクト連携システムを説明し、次に、メッセージアクション反応関係のメッセージ構造を、引数必須識別子と引数任意識別子の組み合わせにより記述し、オブジェクト連携関係を緩やかに拡張した実施形態を示す。
【００３２】
まず、メッセージ構造を用いたマッチングによるメッセージアクション反応関係によるオブジェクト連携システムを説明する。
【００３３】
本システムでは、共通のフィールドとして定義されるような通信路を流れるメッセージに対して、オブジェクトとしての個々のコンピュータシステムあるいはコンピュータシステム内で動作する個々のアプリケーションプログラムが反応する形で処理を実行し、メッセージとアクションとの反応関係の変更によりシステム全体の動作を柔軟に変更することができるものである。
【００３４】
本発明は、連携するオブジェクト同士の関係を、互いの内部状態や内部関数に依存しあうような密な関係とはしないで、連携するオブジェクトの緩やかな関係を規定したオブジェクト間の連携によって機能を動的に構成する。
【００３５】
本発明の理解には、人間同士のコミュニケーションや相互に連携した行動において見られるＡｗａｒｅｎｅｓｓモデルが役に立つ。本発明は、分散オブジェクト間の連携において、オブジェクト間に、人間同士に介在するＡｗａｒｅｎｅｓｓと同様の情報処理を行い、検知したＡｗａｒｅｎｅｓｓに基づくオブジェクト同士の連携処理が前提となる。以下、まず、最初に本発明のオブジェクト連携システムの前提となるＡｗａｒｅｎｅｓｓアナロジーに基づく分散オブジェクトの連携について説明し、次に、分散オブジェクトの連携をより柔軟にする方式の説明を具体的な実施形態と併せて述べる。
【００３６】
Ａｗａｒｅｎｅｓｓアナロジーに基づく分散オブジェクトの連携について説明する。Ａｗａｒｅｎｅｓｓアナロジーに基づく分散オブジェクトの連携もしくはコンピュータの連携は、以下のような構成によって実現することができる。
【００３７】
１．Ａｗａｒｅｎｅｓｓメッセージは、共有もしくはＢｒｏａｄｃａｓｔされている。
【００３８】
２．Ａｗａｒｅｎｅｓｓメッセージを受信するオブジェクトは、メッセージとアクションとの対応関係をそれぞれ独自に持っている。
【００３９】
３．Ａｗａｒｅｎｅｓｓメッセージを送信もしくは受信するオブジェクトにおいて、メッセージとアクションとの関係は分離されている。
【００４０】
Ａｗａｒｅｎｅｓｓアナロジーにおけるメッセージとアクションとが分離されている、あるいは分離可能であるという性質を利用することによって、オブジェクト間の相互作用として参加と介入という二つの重要な要素を付け加えることができ、ネットワークに接続されたオブジェクトとオブジェクトの連携あるいはコンピュータとコンピュータの連携の自由度を高めることが可能となる。
【００４１】
図１は、Ａｗａｒｅｎｅｓｓアナロジーにおけるオブジェクト間の緩やかな連携を模式的に示した図である。
【００４２】
図１において２０１はオブジェクトＡ，２０２はオブジェクトＢであり、それぞれＡｗａｒｅｎｅｓｓメッセージを送受信する主体であるオブジェクトである。Ｍ１はメッセージであり、Ａｗａｒｅｎｅｓｓメッセージを示す。ａ１はオブジェクトＡ（２０１）中に規定されたアクション、ａ２はオブジェクトＢ（２０２）中に規定されたアクションを示す。なお、図中の矢印は、起点がオブジェクトのときメッセージの送出を、終点がオブジェクトのときメッセージの受信を示している。またそれぞれのオブジェクトは内部状態としてのアクションをそれぞれ独自に持っているとする。
【００４３】
図１において、オブジェクトＡ（２０１）とオブジェクトＢ（２０２）の連携は、メッセージＭ１を介して行われている。ＡｗａｒｅｎｅｓｓアナロジーにおいてオブジェクトＡ（２０１）は、オブジェクトＢ（２０２）についてもオブジェクトＢ（２０２）の持つ内部関数についても基本的には関知せずにメッセージを送出する。また、オブジェクトＢ（２０２）自体を特定してメッセージを送出する必要もなく、オブジェクトＡ（２０１）は自己の状態、処理内容に基づいてメッセージＭ１を送出する。オブジェクトＢ（２０２）は通信路上を流れるメッセージをモニタしており、メッセージＭ１を検知し、Ｍ１がオブジェクトＢにとって有為であるとき、反応してアクションａ２を起動する。このようにオブジェクトＡとオブジェクトＢとは有為な連携を取り得るが、それはオブジェクトＡ（２０１）とオブジェクトＢ（２０２）の直接の結び付きによるものではなく、メッセージＭ１とオブジェクトＢ（２０２）のアクションａ２とが結び付けられている帰結といえる。逆にメッセージがＭ１とは異なるものであれば、オブジェクトＢ（２０２）は当該メッセージがＭ１と同様の受理可能範囲にあるかあるいは他に当該メッセージと結び付けられているアクションがない限り反応しないこととなる。このようにオブジェクト間の連携が緩やかにメッセージを介して行われることにより、オブジェクト間の連携の自由度が増すこととなる。つまり、従来のコンピュータネットワーク通信のように通信相手のアドレスおよび処理依頼内容を特定する必要がなく、ネットワーク上に自らの状態、処理結果などを表わすＡｗａｒｅｎｅｓｓメッセージを流し、ネットワークをモニタしている各端末がそのメッセージを検知し、対応するアクションが規定されていれば自律的に反応を起こすものである。
【００４４】
なお、Ａｗａｒｅｎｅｓｓアナロジーにおいて通信路は単にＬＡＮなどの物理的ネットワークだけではなく無線・音声・光などの共通に受信できる媒体を介在するものであれば特に限定する必要はない。また、共通に呼び出し可能なメモリ等の記録媒体であってもかまわない。さらに通信路のポートアドレスなどにより仮想的な存在であってもかまわない。
【００４５】
以上が、Ａｗａｒｅｎｅｓｓアナロジーに基づく分散オブジェクトの連携の基本原理である。
【００４６】
次に、メッセージアクション反応関係のメッセージ構造を、引数必須識別子と引数任意識別子の組み合わせにより記述し、オブジェクト連携関係を緩やかに拡張した実施形態を示す。
【００４７】
まず、引数必須識別子のみの組み合わせによりメッセージ構造を指定した例を説明する。例えば、入力パターンとして以下のものを反応テーブルに持っているとする。
【００４８】
0004518350.tif 000002
上記の入力メッセージパターンは、引数必須識別子のみの組み合わせによりメッセージ構造を指定した例である。ここで、引数必須識別子とは、メッセージが引数の割り当てを必須とするメッセージであることを示すものである。
【００４９】
上記メッセージ構造記述は、＜ＡＲＧ１＞と＜ＡＲＧ２＞の２つの組み合わせからなるメッセージ構造を持ち、＜ＡＲＧ１＞のメッセージにおいてａｒｇ１を必須の引数とし、＜ＡＲＧ２＞のメッセージにおいてａｒｇ２を必須の引数としている。ここで、メッセージタグの引数識別子は“＄”が記述されている。ここでは“＄”は引数必須識別子であり、後続する値を引数としてバインディングすることを意味する。このように、入力パターン中でタグの値として引数必須識別子である“＄”で始まる文字列が指定された場合には、それは変数として扱われ、メッセージとの入力パターンマッチの結果としてメッセージ中の値がバインドされる。この例では、メッセージ中にＡＲＧ１及びＡＲＧ２が存在した場合にそれぞれの値が＄ａｒｇ１及び＄ａｒｇ２の値としてバインドされる。つまり、両者の値が揃った場合にのみメッセージ構造のパターンマッチが成立したこととなる。つまり、例えばＡＲＧ１の引数となる値があっても、ＡＲＧ２の引数となる値が存在しない場合にはメッセージ構造のパターンマッチは不成立となる。
【００５０】
もし、上記に説明した引数必須識別子“＄”を用いた記述方法によって、ＡＲＧ１の引数となる値が存在した場合で、さらに、ＡＲＧ２の引数となる値が存在していれば、両者それぞれ引数をバインディングしてパターンマッチングを成立させ、ＡＲＧ２の引数となる値が存在していないならば、ＡＲＧ１のみ引数をバインディングしてパターンマッチングを成立させるように記述したものが下記のようになる。
【００５１】
0004518350.tif 000003
しかし、引数必須識別子“＄”のみを用いた上記の記述方法によれば、以下の問題がある。つまり、この場合は、２つ分の入力メッセージパターンを反応テーブルに格納しておく必要があり、メッセージの受け手となるオブジェクトの反応テーブルに格納するメッセージパターンの記憶容量が多くなってしまうという問題がある。
【００５２】
また、上記の問題と同様、引数必須識別子“＄”のみを用いたメッセージ構造パターンの記述によれば、メッセージの送り手となるオブジェクトから見ても以下の問題がある。オブジェクトＡとオブジェクトＢがあり、オブジェクトＡには、ＡＲＧ１のメッセージタグを持ちその引数となる値が存在した場合にパターンマッチングを成立させるメッセージ構造が記述されており、オブジェクトＢには、ＡＲＧ１のメッセージタグおよびＡＲＧ２のメッセージタグを持ち、両者の引数となる値が存在した場合にパターンマッチングを成立させるメッセージ構造が記述されている例において、あるオブジェクトＣがオブジェクトＡおよびオブジェクトＢの両者を連携させたい場合、メッセージの送り手となるオブジェクトＣにおいて当初、ＡＲＧ１のメッセージタグを持ちその引数となる値を得ることができ、ＡＲＧ２のメッセージタグとその引数となる値を得ることができなかった場合、当該メッセージを流してもオブジェクトＡのみ連携し、オブジェクトＢが連携しない。オブジェクトＢも連携させたい場合は、さらにＡＲＧ２のメッセージタグとその引数となる値を得るようにし、オブジェクトＢを連携させなければならない。この場合、メッセージの送り手となるオブジェクトＣの負担増大と、フィールド中を流れるメッセージ量の増大を招いてしまう。
【００５３】
そこで、本発明のオブジェクト連携システムにおいて、該メッセージ中が引数の割り当てを任意とするメッセージであることを示す引数任意識別子“％”を導入した。つまり引数任意識別子“％”が付されたメッセージ構造のパターンマッチングにおいては、メッセージタグが合致した場合に引数となる値が付されていれば当該値を引数としてバインディングし、引数となる値が付されていない場合は引数をバインディングすることなくパターンマッチングが成立したと処理する。
【００５４】
図２は、引数必須識別子と引数必須識別子の組み合わせによりメッセージ構造を指定した例を示している。この図２の例が、本発明のオブジェクト連携システムが用いるメッセージ構造である。
【００５５】
<INPUT#PATTERN NAME="pattern2">
<MESSAGE>
<ARG1> $arg1 </ARG1>
<ARG2> %arg2 </ARG2>
</MESSAGE>
</INPUT#PATTERN>
上記の記述例によれば、メッセージ中にＡＲＧ１のメッセージタグに関しては、ＡＲＧ１のメッセージタグが存在し、その引数となる値が存在する場合には当該値が＄ａｒｇ１の値としてバインディングされる。さらに、ＡＲＧ２のメッセージタグに関しては、メッセージタグが存在することがパターンマッチングする条件となり、その引数となる値が存在する場合には％ａｒｇ２にバインディングされ、引数となる値が存在しない場合には％ａｒｇ２には引数がバインディングされないが、パターンマッチングが自体は成立することとなる。つまり、ＡＲＧ１のメッセージタグに関しては、ＡＲＧ１メッセージタグの存在のみならず、引数となる値が存在することが必要とされ、ＡＲＧ２メッセージタグに関しては、ＡＲＧ２メッセージタグが存在しさえすればパターンマッチングが成立する。引数となる値が存在すれば％ａｒｇ２としてバインディングし、引数となる値が存在しない場合は％ａｒｇ２としてバインディングされないという柔軟性のある運用が可能となる。
【００５６】
図３は、本発明のオブジェクト連携システムの構成例である。１００はオブジェクトを表わしており、ネットワーク上に送信されるメッセージを取り込むメッセージ送受信部１０と、メッセージ構造に対する反応であるアクション内容を管理する反応テーブル２０と、反応テーブル２０に従い、受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従って処理を実行するアクション実行部３０、メッセージ生成部４０を備えている。１１０はフィールドである。反応テーブル２０に記述されているメッセージ構造が、メッセージタグの組み合わせとして与えられており、メッセージタグの引数識別子として引数必須識別子と引数任意識別子がある。例えば、図２に記載した入力メッセージ構造が反応テーブル２０に記載されている。
【００５７】
図４は、オブジェクト連携システムの動作として、受信された入力メッセージのメッセージ構造を用いたパターンマッチング処理の流れを示したものである。なお、図４中、“Ｐ”は反応テーブル中の入力メッセージパターンを示し、“Ｍ”は受信したメッセージを示している。
【００５８】
まず、変数のバインド結果を記憶するデータベースＢｉｎｄを初期化する（ステップＳ４０１）。次に、反応テーブル２０中の入力メッセージパターンＰ中に未処理のタグが残っているかを確認し（ステップＳ４０２）、入力メッセージパターンＰの中に未処理のタグが残っている場合（ステップＳ４０２：Ｙ）、入力メッセージ中の未処理のタグを１つ取り出しｐとする（ステップＳ４０３）。次に、受信メッセージＭの中に未処理のタグがあるか否かをチェックする（ステップＳ４０４）。受信メッセージＭの中に未処理のタグが残っていない場合（ステップＳ４０４：Ｎ）、受信メッセージＭはパターンマッチングが成立しないこととなる。受信メッセージＭの中に未処理のタグが残っている場合（ステップＳ４０４：Ｙ）、未処理のタグをＭ’とする（ステップＳ４０５）。Ｍ’の中に未処理のタグがあるか否かを調べ（ステップＳ４０６）、Ｍ’の中に未処理のタグがある場合（ステップＳ４０６：Ｙ）、Ｍ’の中の未処理のタグを１つ取り出しｍとする（ステップＳ４０７）。ここで、入力メッセージの選択されているメッセージパターンｐとメッセージ中の未処理タグｍをマッチングする（ステップＳ４０８）。メッセージパターンｐとメッセージ中の未処理タグｍがマッチングしない場合（ステップＳ４０８：Ｎ）、ステップＳ４０６に戻り、処理を繰り返す。一方、メッセージパターンｐとメッセージ中の未処理タグｍがマッチングした場合（ステップＳ４０８：Ｙ）、このタグに関してマッチングが成立しているので引数バインディング処理に移行する。まず、ｐのタグの引数識別子が引数必須識別子“＄”であるか否かをチェックする（ステップＳ４０９）。引数必須識別子“＄”である場合（ステップＳ４０９：Ｙ）、引数となる値が必ず付されていなければならず、ｐのタグの値として宣言されている変数の値としてｍのタグの値をＢｉｎｄに登録できた場合（ステップＳ４１０：Ｙ）はメッセージＭの中から当該処理済のｍを除いて（ステップＳ４１４）、ステップＳ４０２に戻る。ステップ４１０でＢｉｎｄに登録する値がない場合（ステップＳ４１０：Ｎ）、マッチングが成立しないこととなる（ステップＳ４１５）。
【００５９】
一方、ステップＳ４０９のチェックにおいて引数必須識別子“＄”でない場合（ステップＳ４０９：Ｎ）、引数識別子が引数任意識別子“％”であるか否かをチェックする（ステップＳ４１１）。引数任意識別子“％”である場合（ステップＳ４１１：Ｙ）、ｐのタグの値として宣言されている変数の値としてｍのタグの値をＢｉｎｄに登録する（ステップＳ４１３）。この場合、変数の値が付されていればその値を、付されていない場合は“なし”としてＢｉｎｄに登録する。バインディング処理終了後、メッセージＭの中から当該処理済のｍを除いて（ステップＳ４１４）、ステップＳ４０２に戻る。
【００６０】
引数任意識別子“％”でない場合（ステップＳ４１１：Ｎ）、ｐのタグの値が引数ではなく値そのものがｍのタグの値と同じであるか否かをチェックする（ステップＳ４１２）。ｐのタグの値そのものがｍのタグの値と同じである場合（ステップＳ４１２：Ｙ）、Ｂｉｎｄする処理は不要であるのでｍに対する処理を終了し、メッセージＭの中から当該処理済のｍを除いて（ステップＳ４１４）、ステップＳ４０２に戻る。ｐのタグの値そのものがｍのタグの値と同じでない場合（ステップＳ４１２：Ｎ）、マッチングが成立しないこととなる（ステップＳ４１５）。
【００６１】
上記処理のループを繰り返し、ステップＳ４０２において、入力メッセージパターンＰの中に未処理のタグが残っていない場合（ステップＳ４０２：Ｎ）、パターンマッチング処理が成功裏に終わり、すべての必要な引数がバインディングされている。
【００６２】
以上が、入力パターンマッチング処理の流れである。
【００６３】
次に、メッセージを送信する際に行う出力メッセージパターンマッチング処理を説明する。オブジェクトは、他のオブジェクトに対してメッセージを送信する際には、他のオブジェクトで受信可能なメッセージ構造を持つメッセージを生成して送信する。本発明のオブジェクト連携システムでは、このメッセージの出力メッセージパターンに関しても入力メッセージパターン同様の拡張表現が可能である。図５に拡張された出力パターンの例を示した。
【００６４】
<OUTPUT#PATTERN NAME="pattern3">
<MESSAGE>
<OUT1> $out1 </OUT1>
<OUT2> %out2 </OUT2>
</MESSAGE>
</OUTPUT#PATTERN>
上記例では、処理結果の中にｏｕｔ１の引数となる変数が存在する場合にはタグ＄ｏｕｔ１の値としてバインドされる。更に、ｏｕｔ２の引数となる変数が存在する場合にはタグ％ｏｕｔ２の値としてバインドされ、ｏｕｔ２の引数となる変数が存在しない場合にはタグ％ｏｕｔ２の値としてバインドされない。しかし、出力バインディング自体は完了し、出力メッセージが生成される。
【００６５】
図６は、出力メッセージパターンとのパターンマッチングによる出力メッセージ生成処理の流れを示したものである。
なお、図６中、“Ｐ”は反応テーブル中の出力メッセージパターンを示し、“Ｒ”はオブジェクト中で得られた処理結果を示している。
【００６６】
まず、メッセージの生成結果を保存するデータベースＭｅｓｓａｇｅを初期化する（ステップＳ６０１）。次に、反応テーブル２０中の出力メッセージパターンＰ中に未処理のタグが残っているかを確認し（ステップＳ６０２）、出力メッセージパターンＰの中に未処理のタグが残っている場合（ステップＳ６０２：Ｙ）、出力メッセージ中の未処理のタグを１つ取り出しｐとする（ステップＳ６０３）。次に、ｐと同じタグの文字列を持つｐ’というタグを作る（ステップＳ６０４）。つまり、＜ＡＲＧ１＞などの同じメッセージタグを生成する。次に、当該メッセージタグの値が変数でその引数必須識別子であるか否か、つまり、“＄”で始まっているか否かをチェックする（ステップＳ６０５）。もし、当該メッセージタグの値が変数でその引数必須識別子でない場合（ステップＳ６０５：Ｎ）、当該メッセージタグの値が変数でその引数任意識別子であるか否か、つまり、“％”で始まっているか否かをチェックする（ステップＳ６０６）。もし、当該メッセージタグの値が変数でその引数必須識別子である場合（ステップＳ６０６：Ｙ）、ｐのタグの値として宣言されている変数の値を処理結果Ｒより検索する（ステップＳ６０７）。もし、検索に成功すれば（ステップＳ６０８：Ｙ）その検索結果の値をｐ’のタグの値として処理し（ステップＳ６０９）、当該ｐ’をＭｅｓｓａｇｅに追加し（ステップＳ６１１）、ステップＳ６０２に戻る。もしステップＳ６０８の検索において成功しなければ（ステップＳ６０８：Ｎ）、ｐのタグについては該当するものがないのでｐのタグはＭｅｓｓａｇｅに含めることなくステップＳ６０２に戻る。
【００６７】
一方、ステップＳ６０６においてメッセージタグの値が変数でその引数必須識別子でない場合（ステップＳ６０６：Ｎ）、メッセージタグの値が変数ではないこととなり、ｐのタグの値そのものをｐ’のタグの値として処理し（ステップＳ６１０）、当該ｐ’をＭｅｓｓａｇｅに追加し（ステップＳ６１１）、ステップＳ６０２に戻る。
【００６８】
また、ステップＳ６０５において、メッセージタグの値が変数でその引数必須識別子である場合（ステップＳ６０５：Ｙ）、ｐのタグの値として宣言されている変数の値を処理結果Ｒより検索する（ステップＳ６１２）。もし、検索に成功すれば（ステップＳ６１３：Ｙ）その検索結果の値をｐ’のタグの値として処理し（ステップＳ６１４）、当該ｐ’をＭｅｓｓａｇｅに追加し（ステップＳ６１１）、ステップＳ６０２に戻る。もしステップＳ６１３の検索において成功しなければ（ステップＳ６１３：Ｎ）、ｐのタグについては必須である変数が存在しないので出力メッセージパターンを正常に生成することができないので、出力メッセージパターン生成が失敗した旨を通知して終了する（ステップＳ６１５）。
【００６９】
上記処理のループを繰り返し、ステップＳ６０２において、出力メッセージパターンにおいて未処理のタグがなくなれば、出力メッセージパターンの生成が成功裏に終了したこととなり、Ｍｅｓｓａｇｅには出力するメッセージが保存されていることとなる（ステップＳ６１６）。
【００７０】
以上が、出力パターンマッチング処理の流れである。
【００７１】
以上、本実施形態１のオブジェクト連携システムは、メッセージ構造を用いたメッセージ・アクション反応関係により柔軟かつ動的にオブジェクト間の連携を行うことができ、かつ、メッセージ構造においてメッセージタグの引数識別子として、引数必須識別子と引数任意識別子の組み合わせによりメッセージ構造を記述し、メッセージ・アクション反応関係を緩やかに拡張することができ、引数が存在しない場合でも受け手のオブジェクトを連携させることが可能となる。
【００７２】
（実施形態２）
実施形態２として、フィールド上に複数のオブジェクトが存在し、これらの間で選択したオブジェクトに対してメッセージを受信させて反応させ、選択しなかったオブジェクトにおいてメッセージに反応することがないように制御できるオブジェクト連携システムの例を示す。
【００７３】
図７が、実施形態２のオブジェクト連携システムの概略構成である。
【００７４】
１００ａで示されたオブジェクトＡは、図３に示したメッセージ送受信部１０、反応テーブル２０、アクション実行部３０、メッセージ生成部４０に加え、連携オブジェクト選択部５０と、共通メッセージ構造決定部６０を備えている。さらに、アクション実行部３０は、アクション実行条件チェック部３１を備えている。
【００７５】
連携オブジェクト選択部５０は、フィールド１１０上のオブジェクトのうち連携を行いたいオブジェクトを選択する部分である。もちろんオブジェクトは他の特定のオブジェクトそのものを意識する必要はなく、例えば、自らの内部処理の結果生じたデータの更なる加工を行うことができるファンクションを備えたオブジェクトを選択したりするものでも良い。
【００７６】
共通メッセージ構造決定部６０は、選択したオブジェクトのそれぞれの反応テーブルに記述されたメッセージ構造を基に選択したオブジェクトが反応しうるメッセージ構造を含んだ共通メッセージ構造を決定する部分である。つまり、１つのメッセージによりまとめて複数のオブジェクトの連携を構築するため、ターゲットとなるオブジェクトが共通して反応しうるメッセージ構造を含んだメッセージを決定する。
【００７７】
メッセージ生成部４０は、決定された共通メッセージ構造に従って送信するメッセージを生成する。
【００７８】
ここで、メッセージ生成部４０は、実施形態１で説明したように、共通メッセージ構造を持つメッセージの生成にあたり、引数必須識別子のメッセージ部分に対しては引数を付し、引数任意識別子のメッセージ部分に対しては送信すべき引数が存在する場合には該引数を付し、送付すべき引数が存在しない場合には引数を付さないこととする。
【００７９】
ここで、１つのメッセージによりまとめて複数のオブジェクトの連携を構築する際に問題となる点は、ターゲットとなる複数のオブジェクトのみが共通して反応しうるメッセージ構造が存在すれば良いが、必ずしも存在するとは限らず、他のターゲットとなるオブジェクト以外のオブジェクトも反応してしまうメッセージ構造しか見つからない場合がある。本実施形態２は、かかる問題に対処するため、アクション実行条件という概念を導入し、アクション実行部３０がアクション実行条件チェック部３１を備えた構成とした。ここで、アクション実行条件とは、アクション実行部３０における受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従った処理の実行にあたり、アクション内容に従った処理において必要とされる変数の値の制限であり、アクション実行条件チェック部３１は、受信メッセージの中の該当する変数の値を調べ、アクション実行部３０は、アクション実行条件チェック部３１のチェックによりアクション実行条件の満足が確認されない場合にはアクションを実行しない。この制御によりターゲットのオブジェクト以外のオブジェクトは、例え共通メッセージ構造で記述されたメッセージに対して反応しうる反応テーブルの記述を持っていても反応してアクションを実行することがない。
【００８０】
図８は、実施形態２のオブジェクト連携システムの処理の流れを示した図である。ここでは、オブジェクトＡ（８０１）がメッセージ送信者となり、該メッセージをフィールド上にいるオブジェクトＢ（８０２）、Ｃ（８０３）、Ｄ（８０４）が受信する場合であり、ターゲットとなるオブジェクトは、オブジェクトＢ（８０２）、Ｃ（８０３）の２つであり、オブジェクトＤ（８０４）はターゲットではないとする。
【００８１】
いま、説明の便宜上、図８において、オブジェクトＡ（８０１）には出力メッセージパターンが表記され、オブジェクトＢ（８０２）、Ｃ（８０３）、Ｄ（８０４）は受信メッセージパターンが表記されている。なお、オブジェクトＢ（８０２）とオブジェクトＣ（８０３）の受信メッセージパターンは同じものとし、オブジェクトＤ（８０４）の受信メッセージパターンは異なるものとする。
【００８２】
オブジェクトＡ（８０１）の出力メッセージパターンは、
0004518350.tif 000004
であるとする。
【００８３】
オブジェクトＢ（８０２）とオブジェクトＣ（８０３）の受信メッセージパターンは、
0004518350.tif 000005
であるとする。
【００８４】
オブジェクトＤ（８０４）の受信メッセージパターンは、
0004518350.tif 000006
であるとする。このオブジェクトＤの受信メッセージパターンは、例えば、下記のメッセージ受信を想定して設けられていたものとする。
【００８５】
0004518350.tif 000007
いま、オブジェクトＡ（８０１）はオブジェクトＢ（８０２）とオブジェクトＣ（８０３）に対して連携を求めるべく、下記の出力メッセージを送信したとする。
【００８６】
0004518350.tif 000008
上記出力メッセージは、フィールド１１０を介してオブジェクトＢ（８０２）、オブジェクトＣ（８０３）、オブジェクトＤ（８０４）はそれぞれ受信する。オブジェクトＢ（８０２）、オブジェクトＣ（８０３）においては、gname="My Group", arg1="789", arg2="XYZ"と引数が割り当てられ、反応テーブルにおいて記述されているアクションが実行される。
【００８７】
一方、オブジェクトＤ（８０４）においても上記メッセージに対して反応テーブルにおけるパターンマッチングが成立してしまい、gname="My Group"と引数が割り当てられることとなる。
【００８８】
そこで、本実施形態２のオブジェクト連携システムでは、オブジェクトＤ（８０４）アクション実行部３０がアクション実行条件チェック部３１を備えており、アクション実行条件チェック部３１において、変数gnameの値をチェックすることによって本来想定していないメッセージに対してパターンマッチングが成立しても実際のアクションが起動しないようにする。例えば、アクション実行条件チェック部３１は、下記の条件をチェックする。
【００８９】
If(gname == "Other Group")[
処理継続;
] else [
処理中止;
]
このように、アクション実行条件チェック部３１において、変数の値をチェックすることによって本来想定していないメッセージに対してパターンマッチングが成立しても実際のアクションが起動しないようにすることができる。
【００９０】
以上、本実施形態２のオブジェクト連携システムによれば、フィールド上において選択したオブジェクトのみをメッセージパターンマッチングにより反応させて連携関係を構築し、選択しなかったオブジェクトにおいて反応することがないように制御することができる。
【００９１】
（実施形態３）
本発明のオブジェクト連携システムは、上記に説明した構成を実現する処理ステップを記述したプログラムをコンピュータ読み取り可能な記録媒体に記録して提供することにより、各種コンピュータを用いて構築することができる。本発明のオブジェクト連携システムを実現する処理ステップを備えたプログラムを記録した記録媒体は、図９に図示した記録媒体の例に示すように、ＣＤ−ＲＯＭ１００２やフレキシブルディスク１００３等の可搬型記録媒体１００１だけでなく、ネットワーク上にある記録装置内の記録媒体１０００や、コンピュータのハードディスクやＲＡＭ等の記録媒体１００５のいずれであっても良く、プログラム実行時には、プログラムはコンピュータ１００４上にローディングされ、主メモリ上で実行される。
【００９２】
さらに、ソースプログラムをコンパイルしたもののみならず、いわゆるネットワークを介してクライアントコンピュータに中間言語形式のアプレットを送信し、クライアントコンピュータ上でインタープリタ実行して動作する構成であっても良い。
【００９３】
本発明のオブジェクト連携システムに関し、以下の項を開示する。
【００９４】
（付記１）各オブジェクトが、ネットワーク上に送信されるメッセージを取り込むメッセージ受信部と、メッセージ構造に対する反応であるアクション内容を管理する反応テーブルと、前記反応テーブルに従い、受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従って処理を実行するアクション実行部を備え、
前記反応テーブルの前記メッセージ構造が、メッセージタグの組み合わせとして与えられ、
前記メッセージタグの引数識別子として、該メッセージが引数の割り当てを必須とするメッセージであることを示す引数必須識別子と、該メッセージ中が引数の割り当てを任意とするメッセージであることを示す引数任意識別子を規定し、それらの組み合わせによりメッセージ構造を記述したことを特徴とする構造化メッセージを用いたことを特徴とするオブジェクト連携システム（１）。
【００９５】
（付記２）前記アクション実行部による前記反応テーブルを用いた受信メッセージの持つメッセージ構造のマッチングにおいて、
受信メッセージを解析し、前記引数必須識別子の付されたメッセージ部分に対して引数が含まれていない場合は当該部分のマッチングが成立せず、前記引数任意識別子の付されたメッセージ部分に対して引数が含まれていない場合は当該部分のマッチングは成立したと判断する上記付記１に記載の構造化メッセージを用いたオブジェクト連携システム（２）。
【００９６】
（付記３）前記アクション実行部による前記反応テーブルを用いた受信メッセージの持つメッセージ構造のマッチングにおいて前記引数任意識別子の付されたメッセージ部分に対して引数が含まれておらず当該部分のマッチングは成立したと判断した場合に、前記アクション実行部は、引数の割り当て処理は実行せず前記反応テーブルに記述された受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従って処理を実行する上記付記２に記載の構造化メッセージを用いたオブジェクト連携システム。
【００９７】
（付記４）メッセージ生成部を備え、
内部処理結果に基づいて、他のオブジェクトに対して連携を求める際、前記メッセージ生成部によりメッセージタグの組み合わせによるメッセージ構造を持つメッセージを生成し、該メッセージを前記メッセージ送受信部により送信する上記付記１に記載の構造化メッセージを用いたオブジェクト連携システム（３）。
【００９８】
（付記５）メッセージを受信しうるフィールドに存在するオブジェクトのうち連携を行いたいオブジェクトを選択する連携オブジェクト選択部と、
前記選択したオブジェクトのそれぞれの反応テーブルに記述されたメッセージ構造を基に、前記選択したオブジェクトが反応しうるメッセージ構造を含んだ共通メッセージ構造を決定する共通メッセージ構造決定部と、
前記決定された共通メッセージ構造に従って送信するメッセージを生成するメッセージ生成部を備えた上記付記１に記載の構造化メッセージを用いたオブジェクト連携システム（４）。
【００９９】
（付記６）前記メッセージ生成部は、共通メッセージ構造を持つメッセージの生成にあたり、引数必須識別子のメッセージ部分に対しては引数を付し、引数任意識別子のメッセージ部分に対しては送信すべき引数が存在する場合には該引数を付し、送付すべき引数が存在しない場合には引数を付さない上記付記５に記載の構造化メッセージを用いたオブジェクト連携システム。
【０１００】
（付記７）前記アクション実行部における受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従った処理の実行にあたり、前記アクション内容に従った処理において必要とされる変数の値に制限がある場合に当該制限をアクション実行条件とし、
前記アクション実行部が、前記受信メッセージの中の該当する変数の値を調べるアクション実行条件チェック部を備え、前記アクション実行条件チェック部のチェックによりアクション実行条件の満足が確認されない場合にはアクションを実行しない上記付記１に記載の構造化メッセージを用いたオブジェクト連携システム（５）。
【０１０１】
（付記８）各オブジェクトに、ネットワーク上に送信されるメッセージを取り込むメッセージ受信部と、メッセージ構造に対する反応であるアクション内容を管理する反応テーブルと、前記反応テーブルに従い、受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従って処理を実行するアクション実行部を実装し、
前記反応テーブルの前記メッセージ構造を、受信メッセージに付されたメッセージタグの組み合わせとして与え、
前記メッセージタグの引数識別子として、該メッセージが引数の割り当てを必須とするメッセージであることを示す引数必須識別子と、該メッセージ中が引数の割り当てを任意とするメッセージであることを示す引数任意識別子を規定し、それらの組み合わせによりメッセージ構造を記述したことを特徴とする構造化メッセージを用いたオブジェクト連携方法。
【０１０２】
（付記９）メッセージ・アクション反応関係に従って駆動するオブジェクト連携システムを実現する処理プログラムを記憶したコンピュータ装置読み取り可能な記録媒体であって、
各オブジェクトが、ネットワーク上に送信されるメッセージを取り込む処理ステップと、
メッセージ構造に対する反応であるアクション内容を管理する反応テーブルを記憶する処理ステップと、
前記反応テーブルに従い、受信メッセージの持つメッセージ構造にマッチングしたアクション内容に従って処理を実行する処理ステップを備え、
前記反応テーブルの前記メッセージ構造が、メッセージタグの組み合わせとして記述され、
前記メッセージタグの引数識別子として、該メッセージが引数の割り当てを必須とするメッセージであることを示す引数必須識別子と、該メッセージ中が引数の割り当てを任意とするメッセージであることを示す引数任意識別子を規定し、それらの組み合わせによりメッセージ構造を記述した構造化メッセージを用いたオブジェクト連携システムの処理プログラムを記憶したことを特徴とする記憶媒体。
【０１０３】
【発明の効果】
本発明のオブジェクト連携システムによれば、ネットワークに接続されたオブジェクト連携システム間の連携の自由度を高めることができ、コンピュータ群もしくはオブジェクト群の対話・協調などの連携処理を実施し、オブジェクト指向環境における環境の変化に柔軟に対応し、漸進的に変化するシステムが構築できる。
【０１０４】
また、本発明のオブジェクト連携システムによれば、メッセージ構造を用いたメッセージ・アクション反応関係により柔軟かつ動的にオブジェクト間の連携を行うことができ、かつ、メッセージ構造においてメッセージタグの引数識別子として、引数必須識別子と引数任意識別子の組み合わせによりメッセージ構造を記述し、メッセージ・アクション反応関係を緩やかに拡張することができ、引数が存在しない場合でも受け手のオブジェクトを連携させることが可能となる。
【０１０５】
また、本発明のオブジェクト連携システムによれば、フィールド上において選択したオブジェクトのみをメッセージパターンマッチングにより反応させて連携関係を構築し、選択しなかったオブジェクトにおいて反応することがないように制御することができる。
【図面の簡単な説明】
【図１】  本発明の基本原理に関するＡｗａｒｅｎｅｓｓアナロジーにおけるオブジェクト間の緩やかな連携を模式的に示した図
【図２】  引数必須識別子と引数必須識別子の組み合わせによりメッセージ構造を指定した例を示した図
【図３】  本発明の実施形態１のオブジェクト連携システムの概略構成例を示す図
【図４】  本発明の実施形態１のオブジェクト連携システムの動作として、受信された入力メッセージのメッセージ構造を用いたパターンマッチング処理の流れを示した図
【図５】  本発明の実施形態１の拡張された出力パターンの例を示した図
【図６】  本発明の実施形態１の出力メッセージパターンとのパターンマッチングによる出力メッセージ生成処理の流れを示した図
【図７】  本発明の実施形態２のオブジェクト連携システムの概略構成例を示す図
【図８】  本発明の実施形態２のオブジェクト連携システムの処理の流れを示した図
【図９】  本実施形態３における本発明のオブジェクト連携システムを実現する処理プログラムを記録した記録媒体の例を示す図
【図１０】  従来技術のＣＯＲＢＡに基づいたクライアント／サーバシステムにおけるオブジェクト連携の例を示す図
【符号の説明】
１０  メッセージ送受信部
２０  反応テーブル
３０  アクション実行部３０
３１  アクション実行条件チェック部
４０  メッセージ生成部
５０  連携オブジェクト選択部
６０  共通メッセージ構造決定部
１１０  フィールド
１０００  記録装置内の記録媒体
１００１  可搬型記録媒体
１００２  ＣＤ−ＲＯＭ
１００３  フレキシブルディスク
１００４  コンピュータ
１００５  コンピュータのハードディスクやＲＡＭ等の記録媒体
【図１】
0004518350.tif 000009
【図２】
0004518350.tif 000010
【図３】
0004518350.tif 000011
【図４】
0004518350.tif 000012
【図５】
0004518350.tif 000013
【図６】
0004518350.tif 000014
【図７】
0004518350.tif 000015
【図８】
0004518350.tif 000016
【図９】
0004518350.tif 000017
【図１０】
0004518350.tif 000018