(57)【特許請求の範囲】
【請求項１】
複数のエージェント装置と通信接続可能であり、通信接続された一つのエージェント装置から受信したメッセージを、通信接続された他のエージェント装置の全てに送信する通信基盤と、
サービス要求への応答処理を、各サービス要求ごとにあらかじめ用意された手順に従って一連の部分処理に分解し、最初の部分処理の開始メッセージを前記通信基盤へ出力する仲介エージェント装置と、
部分処理を実行するサービスエージェント装置とを有し、
前記サービスエージェント装置が、前記部分処理の開始メッセージまたは前記部分処理の直前の部分処理の処理結果通知メッセージを前記通信基盤から受け取って前記部分処理の実行を開始し、前記部分処理の終了を通知する処理結果通知メッセージを前記通信基盤へ出力し、
前記仲介エージェント装置が、前記サービスエージェント装置のそれぞれの処理手順を記述したプログラムであるコードを保持するコード保持手段と、前記一連の部分処理の処理状況を監視し、前記一連の部分処理のうちの一つの部分処理を行うサービスエージェント装置が起動されていないと判断したときに、該サービスエージェント装置を前記コードに基づいて起動する監視手段とを備え、
前記仲介エージェント装置が、一連の部分処理の各々の実行に伴って前記サービスエージェント装置から前記通信基盤に出力される前記処理結果通知メッセージを記憶するメッセージ記憶手段をさらに備えると共に、
前記監視手段が、前記メッセージ記憶手段を参照し、一つの処理結果通知メッセージが出力された後、所定の時間が経過しても次の処理結果通知メッセージが出力されない場合に、該次の処理結果通知メッセージを処理結果として出力する部分処理を実行するサービスエージェント装置を動的に起動するエージェントシステム。
【請求項２】
複数のエージェント装置と通信接続可能であり、通信接続された一つのエージェント装置から受信したメッセージを、通信接続された他のエージェント装置の全てに送信する通信基盤と、
サービス要求への応答処理を、各サービス要求ごとにあらかじめ用意された手順に従って一連の部分処理に分解し、最初の部分処理の開始メッセージを前記通信基盤へ出力する仲介エージェント装置と、
部分処理を実行するサービスエージェント装置とを有し、
前記サービスエージェント装置が、前記部分処理の開始メッセージまたは前記部分処理の直前の部分処理の処理結果通知メッセージを前記通信基盤から受け取って前記部分処理の実行を開始し、前記部分処理の終了を通知する処理結果通知メッセージを前記通信基盤へ出力し、
前記仲介エージェント装置が、前記サービスエージェント装置のそれぞれの処理手順を記述したプログラムであるコードを保持するコード保持手段と、前記一連の部分処理の処理状況を監視し、前記一連の部分処理のうちの一つの部分処理を行うサービスエージェント装置が起動されていないと判断したときに、該サービスエージェント装置を前記コードに基づいて起動する監視手段とを備え、
前記仲介エージェント装置が、部分処理を実行可能なサービスエージェント装置の存在を確認する検索メッセージを、前記通信基盤へ出力するメッセージ処理手段をさらに備え、
前記サービスエージェント装置が、前記検索メッセージに対して、前記部分処理の実行が可能である場合に、前記通信基盤へ処理可能通知メッセージを出力する通知手段を備えると共に、
前記仲介エージェント装置のメッセージ処理手段が、前記検索メッセージを出力した後、所定の時間が経過しても、前記通信基盤から前記処理可能通知メッセージを受け取れない場合に、前記監視手段が、前記部分処理を実行するサービスエージェント装置を動的に起動するエージェントシステム。
【請求項３】
前記サービスエージェント装置の通知手段が、各サービスエージェント装置に固有の識別子を、前記処理可能通知メッセージに付し、
前記仲介エージェント装置のメッセージ処理手段が、前記処理可能通知メッセージを受けた場合、前記部分処理の実行を要求する処理要求メッセージに、前記処理可能通知メッセージに付されていた前記識別子を付して、前記通信基盤へ出力し、
各サービスエージェント装置が、自らの識別子と一致する識別子を付された処理要求メッセージを受け取ったときのみ要求された部分処理を実行する請求項２に記載のエージェントシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自律的に動作するエージェントを有するエージェントシステムに関し、特に、ネットワーク上に分散した複数のエージェントが協調することによってサービス要求を処理するマルチエージェントシステムに関する。
【０００２】
【従来の技術】
従来、エージェントと呼ばれる、自律的に動作する処理主体をネットワーク上に分散させ、複数のエージェントが協調することによって、与えられたサービス要求を処理するマルチエージェントシステムが提案されている。
【０００３】
このような従来のマルチエージェントシステムにおいて、ネットワーク上に分散したエージェント間でメッセージのやりとりを行う場合、一般的に、メッセージの送信側は、受信側が処理可能なメッセージの形式を事前に知っており、その形式に則ったメッセージの送信を行う。また、受信側に用意されていない処理を行う必要がある場合には、まず、送信側から受信側へ、その処理に必要な手続きを記述したコードを送り、受信者側でそのコードを実行させる。
【０００４】
また、従来のマルチエージェントシステムにおけるメッセージ送受信の通信基盤では、一般的に、送信側のエージェントが受信側のエージェントの名前を直接指定してメッセージ送受信を行うために、送信側が受信側の名前管理を行う必要があった。
【０００５】
【発明が解決しようとする課題】
しかし、このような従来のシステムでは、受信側エージェントが受信可能なメッセージの形式を、送信側エージェントが正確に知っている必要があり、各エージェントが他のエージェントへサービス要求を出すために、多くの準備をしなければならないという問題がある。
【０００６】
さらに、送信側エージェントは、メッセージの送信先となるエージェントの名前が分からない場合には、メッセージを送信することができないという問題もある。このため、各エージェントにおいて、メッセージの送信先となる可能性があるすべてのエージェントの名前を管理しなければならないという負担があり、システムの拡張性を損なう原因ともなっていた。
【０００７】
また、受信側エージェントの処理に必要なコードを、送信側エージェントから送りつけて実行させる場合、上記コードの管理責任は送信側エージェントが負うこととなる。従って、例えばコードのバージョンが更新された場合には、受信側エージェントが有する古いバージョンのコードのすべてを、送信側エージェントの責任において新しいバージョンのコードに正確に置き換えなければ、古いバージョンのコードが実行されてしまうおそれがある。
【０００８】
本発明は、上記の問題を解決するために、メッセージの送信先の管理を必要とせずに、エージェント間のメッセージのやりとりが可能なエージェントシステムを提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記の目的を達成するために、本発明にかかるエージェントシステムは、ブロードキャスト型の通信基盤と、サービス要求への応答処理を、一連の部分処理に分解し、最初の部分処理の開始メッセージを前記通信基盤へ出力する仲介エージェント装置と、部分処理を実行するサービスエージェント装置とを有し、前記サービスエージェント装置が、前記部分処理の開始メッセージまたは前記部分処理の直前の部分処理の処理結果通知メッセージを前記通信基盤から受け取って前記部分処理の実行を開始し、前記部分処理の終了を通知する処理結果通知メッセージを前記通信基盤へ出力することを特徴とする。
【００１０】
この構成によれば、仲介エージェント装置がサービス要求への応答処理を一連の部分処理に分解し、最初の部分処理の開始メッセージを通信基盤へ出力すると、サービスエージェント装置の内、最初の部分処理の実行が可能なサービスエージェント装置が、前記開始メッセージを受け取り、前記最初の部分処理を実行し、その終了を通知する処理結果通知メッセージを通信基盤へ出力する。そして、二番目の部分処理を実行可能なサービスエージェント装置が、前記処理結果通知メッセージを受け取り、二番目の部分処理を実行し、処理結果通知メッセージを通信基盤へ出力する。つまり、サービスエージェント装置から出力される部分処理の処理結果通知メッセージが、次の部分処理の実行を開始させるメッセージとなるので、複数のサービスエージェント装置が、自らが実行可能な部分処理を開始させるメッセージを受け取り、一連の部分処理を順次実行することにより、サービス要求への応答処理がなされることとなる。なお、通信基盤がブロードキャスト型であることにより、通信基盤に流されるメッセージは、すべてのサービスエージェント装置に伝達されるので、サービスエージェント装置同士が直接的にメッセージのやりとりを行うことはない。従って、サービスエージェント装置が、メッセージの送信先を管理する必要がない。この結果、サービスエージェント装置の負荷が軽減されると共に、拡張性の高いエージェントシステムを提供することが可能となる。
【００１１】
前記エージェントシステムは、前記仲介エージェント装置が、前記サービスエージェント装置のコードを保持するコード保持手段と、前記一連の部分処理の処理状況を監視し、必要なサービスエージェント装置を前記コードに基づいて起動する監視手段とを備えた構成とすることが好ましい。
【００１２】
この構成によれば、部分処理を実行すべきサービスエージェント装置が起動されていない場合や、他の処理を行っている場合などに、コード保持手段に保持されているコードによってサービスエージェント装置が動的に起動される。これにより、一連の部分処理を停滞することなく実行させることができると共に、従来のように、送信側のエージェントが受信側のエージェントの存在等を確認する必要がなく、サービスエージェント装置の負荷を軽減することができる。
【００１３】
前記エージェントシステムは、仲介エージェント装置が、一連の部分処理の各々の実行に伴って前記サービスエージェント装置から前記通信基盤に出力される前記処理結果通知メッセージを記憶するメッセージ記憶手段をさらに備えると共に、前記監視手段が、前記メッセージ記憶手段を参照し、一つの処理結果通知メッセージが出力された後、所定の時間が経過しても次の処理結果通知メッセージが出力されない場合に、部分処理を実行するサービスエージェント装置を動的に起動する構成とすることが好ましい。
【００１４】
この構成によれば、仲介エージェント装置が、一連の部分処理の実行に伴って出力される処理結果通知メッセージのシーケンスを、メッセージ記憶手段に記憶していることにより、通信基盤に出力される一連のメッセージを監視することにより、一連の部分処理の処理状況を知ることができる。また、前記通信基盤がブロードキャスト型であることにより、仲介エージェント装置にも、サービスエージェント装置が出力する処理結果通知メッセージが伝達される。従って、サービスエージェント装置が自主的に処理状況を仲介エージェント装置に通知する手間をかけることなく、仲介エージェント装置が処理状況を監視することができるので、仲介エージェント装置およびサービスエージェント装置の双方の負荷を軽減することが可能となる。
【００１５】
前記エージェントシステムは、仲介エージェント装置が、部分処理を実行可能なサービスエージェント装置の存在を確認する検索メッセージを、前記通信基盤へ出力するメッセージ処理手段をさらに備え、前記サービスエージェント装置が、前記検索メッセージに対して、前記部分処理の実行が可能である場合に、前記通信基盤へ処理可能通知メッセージを出力する通知手段を備えると共に、前記仲介エージェント装置のメッセージ処理手段が、前記検索メッセージを出力した後、所定の時間が経過しても、前記通信基盤から前記処理可能通知メッセージを受け取れない場合に、前記監視手段が、前記部分処理を実行するサービスエージェント装置を動的に起動する構成であることが好ましい。
【００１６】
この構成によれば、各部分処理に先立って、仲介エージェント装置が検索メッセージを出力することにより、部分処理を実行可能なサービスエージェント装置の存在を確認し、部分処理を実行可能なサービスエージェント装置が存在しない場合には動的に起動することにより、一連の部分処理を停滞することなく実行さえることができると共に、従来のように、送信側のエージェントが受信側のエージェントの存在等を確認する必要がなく、サービスエージェント装置の負荷を軽減することができる。
【００１７】
さらに、前記の構成において、サービスエージェント装置の通知手段が、各サービスエージェント装置に固有の識別子を、前記処理可能通知メッセージに付し、前記仲介エージェント装置のメッセージ処理手段が、前記処理可能通知メッセージを受けた場合、前記部分処理の実行を要求する処理要求メッセージに、前記処理可能通知メッセージに付されていた前記識別子を付して、前記通信基盤へ出力し、各サービスエージェント装置が、自らの識別子と一致する識別子を付された処理要求メッセージにのみ対応することが好ましい。
【００１８】
この構成によれば、仲介エージェント装置が、処理可能通知メッセージを出力したサービスエージェント装置を指定して、部分処理の処理を要求する処理要求メッセージを出力することにより、複数のサービスエージェント装置が、同じ部分処理を同時に実行することを防止できる。
【００１９】
前記エージェントシステムは、前記仲介エージェント装置が、前記通信基盤を介して受け取ったコードと、前記コード保持手段に既に保持されているコードとを比較し、前記コードが前記コード保持手段に保持されていなければ、前記コードを前記コード保持手段に格納するコード管理手段をさらに備えた構成であることが好ましい。
【００２０】
この構成によれば、コードの追加や、既存コードのバージョンアップ等が必要になった場合は、通信基盤に新しいコードを流せば、コード管理手段によって、新しいコードがコード保持手段へ格納される。これにより、エージェントシステムの稼働中にコードの入れ替えを動的に行うことが可能となる。
【００２１】
前記エージェントシステムは、前記コード保持手段が、前記コードと併せて前記コードのバージョン番号を保持すると共に、前記仲介エージェント装置が、前記通信基盤を介して受け取った受信コードのバージョン番号と、前記コード保持手段に既に保持されている既存コードのバージョン番号とを比較し、前記受信コードが前記既存コードよりも新しいバージョンであれば、前記受信コードを前記コード保持手段に格納するコード管理手段をさらに備えた構成であることが好ましい。
【００２２】
この構成によれば、通信基盤に流されたコードが最新のバージョンである場合に、そのコードがコード保持手段に格納される。これにより、コードのバージョン管理を正確に行うことが可能となる。
【００２３】
前記エージェントシステムは、前記通信基盤を複数備えると共に、前記通信基盤間でメッセージを双方向に伝達するメッセージ伝達手段をさらに備えた構成であることが好ましい。
【００２４】
この構成によれば、複数の通信基盤をメッセージ伝達手段で相互接続することにより、複数の通信基盤間でメッセージのやりとりを行うことが可能となる。これにより、拡張性の高いエージェントシステムを提供することができる。
【００２５】
前記の構成において、メッセージ伝達手段が、所定の条件に合致するメッセージのみを伝達することが好ましい。
【００２６】
この構成によれば、メッセージ伝達手段が所定の条件に合致するメッセージのみを透過させることにより、例えば、第１の通信基盤と第２の通信基盤との間にメッセージ伝達手段が設けられているとすると、第１の通信基盤側から発信されたメッセージの内、第２の通信基盤側の処理に関係するメッセージのみを選択して透過させることができる。これにより、必要のないメッセージが通信基盤に流れることを防止できるので、メッセージの受け手となる仲介エージェント装置やサービスエージェント装置の負荷を軽減することができる。
【００２７】
前記の構成において、メッセージ伝達手段が、すべてのメッセージを無条件に伝達する構成であってもよい。
【００２８】
この構成によれば、メッセージ伝達手段において透過させるべきメッセージの選択を行わないので、メッセージ伝達手段の負荷を軽減することができると共に、メッセージ伝達手段に接続される通信基盤が制限されないので、拡張性の高いエージェントシステムを提供できる。
【００２９】
前記のエージェントシステムは、サービスエージェント装置が、前記部分処理の機能ブロックを処理するコンポーネントを有し、前記通信基盤の少なくとも一つが、前記サービスエージェント装置内部においてコンポーネント間のメッセージの伝達を行うローカルフィールドであることが好ましい。
【００３０】
この構成によれば、サービスエージェント装置内部のコンポーネント間のメッセージのやりとりも、サービスエージェント間のメッセージのやりとりと同様に行うことが可能となり、拡張性の高いエージェントシステムを提供できる。
【００３１】
前記エージェントシステムは、サービスエージェント装置が、前記コンポーネントのコードを動的に置き換えるコード置換手段を備えた構成であることが好ましい。
【００３２】
この構成によれば、サービスエージェント装置において部分処理の機能ブロックを実行するコンポーネントのコードを動的に置き換えることにより、エージェントシステムの稼働中に、サービスエージェント装置の機能を動的に拡張することが可能となる。
【００３３】
前記エージェントシステムは、複数のホストを有し、前記複数のホストの各々が前記通信基盤を少なくとも一つ有する構成であることが好ましい。
【００３４】
この構成によれば、エージェントシステムに配置された複数のホストを、各ホストが有する通信基盤を接続することによって、相互に接続することが可能となる。これにより、複数のホストにまたがって広範囲に広がるエージェントシステムを提供することができる。
【００３５】
また、前記の目的を達成するために、本発明にかかるエージェントシステムによるサービス提供方法は、ブロードキャスト型の通信基盤上にエージェントを有するエージェントシステムによるサービス提供方法であって、サービス要求への応答処理を、一連の部分処理に分解し、最初の部分処理の開始メッセージを前記通信基盤へ出力し、前記最初の部分処理を実行可能なエージェントが前記開始メッセージを受けて前記最初の部分処理を行い、処理の終了を通知する処理結果通知メッセージを前記通信基盤へ出力し、前記一連の部分処理の各々を実行可能なエージェントが、前の部分処理の処理結果通知メッセージを受けて、各部分処理を行い、処理の終了を通知する処理結果通知メッセージを前記通信基盤へ出力することを、前記一連の部分処理の最後の部分処理が終了するまで繰り返すことを特徴とする。
【００３６】
この方法によれば、サービス要求への応答処理を一連の部分処理に分解し、最初の部分処理の開始メッセージを通信基盤へ出力すると、エージェントの内、最初の部分処理の実行が可能なエージェントが、開始メッセージを受け取り、前記最初の部分処理を実行し、処理結果通知メッセージを通信基盤へ出力する。そして、二番目の部分処理を実行可能なエージェントが、前記処理結果通知メッセージを受け取り、二番目の部分処理を実行し、処理結果通知メッセージを通信基盤へ出力する。以降、前の部分処理の処理結果通知メッセージを受けて、部分処理の各々をエージェントが実行することを、最後の部分処理が終了するまで繰り返すことにより、サービス要求への応答処理が行われる。なお、通信基盤がブロードキャスト型であることにより、通信基盤に流されるメッセージは、すべてのエージェントに伝達されるので、エージェント同士が直接的にメッセージのやりとりを行うことはない。従って、エージェントが、メッセージの送信先を管理する必要がない。この結果、エージェントの負荷が軽減され、エージェントシステムにおいて効率の良いサービス提供方法を実現することが可能となる。
【００３７】
【発明の実施の形態】
（実施形態１）
以下、本発明の実施の一形態にかかるマルチエージェントシステムについて説明する。図１は、本実施形態のマルチエージェントシステムの概略構成を示すブロック図である。
【００３８】
図１に示すように、本実施形態のマルチエージェントシステム１０は、複数のサービスエージェントＡ１〜Ａ３（サービスエージェント装置）と、メディエータ２（仲介エージェント装置）と、通信基盤としてのフィールド３とを備えている。フィールド３は、マルチエージェントシステム１０においてメディエータ２とサービスエージェントとの間の通信やサービスエージェント相互間の通信を媒介すると共に、外部に対するインターフェイスとしても機能する。すなわち、マルチエージェントシステム１０は、フィールド３を介して外部からサービス要求を受け付け、このサービス要求を処理した後、フィールド３を介して外部へ回答するようになっている。なお、図１には、３個のサービスエージェントＡ１〜Ａ３のみを図示したが、サービスエージェントの個数はこれに限定されるものではなく、任意である。
【００３９】
サービスエージェントＡ１〜Ａ３の各々は、処理手続きを記述したモバイルコード（移動コード）に基づいてメディエータ２によって起動されるオブジェクトであり、フィールド３から受け取ったメッセージを処理し、処理結果を記述したメッセージをフィールド３へ出力する。つまり、マルチエージェントシステム１０では、サービスエージェントＡ１〜Ａ３間のメッセージのやりとりは、すべてフィールド３を介して行われるようになっている。
【００４０】
フィールド３は、ブロードキャスト型の通信基盤である。すなわち、フィールド３へ送信されたメッセージは、このフィールド３に登録されたすべてのサービスエージェントＡ１〜Ａ３と、メディエータ２に達することとなる。
【００４１】
なお、図１には、一つのフィールド３のみを図示したが、フィールド３は、必要に応じて生成および消去することができるので、マルチエージェントシステム１０内に複数のフィールド３が共存することもあり得る。サービスエージェントの各々は、少なくとも一つのフィールド３に登録されている。また、新しいフィールド３の生成時には、新しく生成されたフィールド３に対して少なくとも一つのサービスエージェントが登録される。
【００４２】
また、フィールド３は、一つのコンピュータ内で完結する通信媒体であっても良いし、通信回線を介して複数のコンピュータにまたがる通信媒体であってもかまわない。従って、メディエータ２およびサービスエージェントの各々は、一つのコンピュータ上に存在していても良いし、フィールド３が及ぶ範囲の複数のコンピュータ上に散在していても良い。
【００４３】
次に、メディエータ２の構成と機能について、詳細に説明する。メディエータ２は、図２に示すように、処理手順記録テーブル２ａと、コードテーブル２ｂと、メッセージシーケンステーブル２ｃと、コード管理部２ｄと、処理監視部２ｅと、メッセージ処理部２ｆとを含む構成である。
【００４４】
処理手順記録テーブル２ａには、フィールド３を介して受け取ったサービス要求を処理するために必要な手順が記録されており、メディエータ２は、処理手順記録テーブル２ａを参照し、受け取ったサービス要求の処理を複数段階に分解する。例えば、図１に示した例では、フィールド３に対して外部から入力されたサービス要求をＭ０とし、このサービス要求Ｍ０に対する最終的な回答をＭ１とすると、処理手順記録テーブル２ａには、サービス要求Ｍ０に対する回答Ｍ１を得るために、３段階の部分処理ｐ１、ｐ２、およびｐ３が必要であることが記録されている。
【００４５】
なお、図１に示した例では、部分処理ｐ１を実行するのがサービスエージェントＡ１であり、部分処理ｐ２を実行するのがサービスエージェントＡ２、部分処理ｐ３を実行するのがサービスエージェントＡ３である。メディエータ２の処理手順記録テーブル２ａには、部分処理ｐ１、ｐ２、およびｐ３の各々を実行するために必要なサービスエージェントのクラス名も記録されている。
【００４６】
また、メディエータ２のコード管理部２ｄは、後に詳述するが、各段階の部分処理を実行するサービスエージェントが存在しない場合や、サービスエージェントが他の処理を行っていて当該部分処理を実行することが不可能な場合に、当該部分処理を実行するサービスエージェントを動的に起動させる機能を持つ。
【００４７】
各サービスエージェントの処理手順を記述したコード（プログラム）は、上記のコードテーブル２ｂに記憶されている。なお、これも後に詳述するが、コードのバージョン管理を行うことを可能とするために、コードテーブル２ｂに保持されているコードの各々は、そのバージョン番号と共に記憶されている。
【００４８】
メディエータ２は、さらに、上記したメッセージシーケンステーブル２ｃに、一連の処理に関連するメッセージのシーケンスを記憶している。例えば、図１に示した例では、メッセージシーケンステーブル２ｃには、サービス要求Ｍ０を受け取った後に最初の部分処理ｐ１をスタートさせるために必要なメッセージがｍ０であり、部分処理ｐ１の処理結果として出力されるメッセージがｍ１であり、このメッセージｍ１を受けて実行される部分処理ｐ２の処理結果として出力されるメッセージがｍ２であり、メッセージｍ２を受けて実行される部分処理ｐ３の処理結果として出力されるメッセージがｍ３であることが記録されている。
【００４９】
また、メディエータ２の処理監視部２ｅは、メッセージシーケンステーブル２ｃに記録されたメッセージのシーケンスに基づき、各段階の処理が正しく行われているか否かを監視する機能を持つ。つまり、処理監視部２ｅは、あるメッセージがフィールド３に流れた後、所定の時間が経過しても、上記メッセージの次のメッセージがフィールド３に流れない場合には、上記メッセージを処理するサービスエージェントが起動されていないと判断し、コードテーブル２ｂから当該サービスエージェントのコードを取り出して、そのサービスエージェントを起動する。
【００５０】
メディエータ２のメッセージ処理部２ｆは、フィールド３を介して入力されたサービス要求の処理を複数段階の部分処理に分解し、最初の部分処理をスタートさせるために必要なメッセージをフィールド３へ投げる処理や、最後の部分処理の処理結果を、最終的な回答としてフィールド３へ返す処理を行う。
【００５１】
ここで、サービス要求があった場合の、マルチエージェントシステム１０の処理の手順を、図３のフローチャートを参照しながら説明する。
【００５２】
外部からフィールド３に対してサービス要求が入力されると、メディエータ２はフィールド３を介してこのサービス要求を受け取り、メッセージ処理部２ｆが、処理手順記録テーブル２ａを参照し、上記サービス要求の処理を複数段階の部分処理に分解する（ステップＭＳ１）。
【００５３】
さらに、メッセージ処理部２ｆは、最初の部分処理をスタートさせるための第１の開始メッセージをメッセージシーケンステーブル２ｃから取得して、フィールド３へ出力する（ステップＭＳ２）。なお、上記の第１の開始メッセージは、図１に示した例では、メッセージｍ０に相当する。
【００５４】
フィールド３に登録されているサービスエージェントの各々は、第１の開始メッセージを受け取ると、自らが当該部分処理を実行可能であるか否かを判断し（ステップＡＳ１）、実行可能であれば、第１の開始メッセージを取り込んで最初の部分処理を実行し、処理結果を記述した処理結果通知メッセージをフィールド３へ出力する（ステップＡＳ２）。ここでの処理結果として出力されるメッセージは、図１に示した例では、メッセージｍ１に相当するものであり、次の部分処理（ｐ２）をスタートさせる第２の開始メッセージとなる。
【００５５】
メディエータ２の処理監視部２ｅは、フィールド３に出力された処理結果通知メッセージを受けると（ステップＭＳ３にてＹＥＳ）、メッセージシーケンステーブル２ｃを参照し、後続の部分処理がまだ残っていれば（ステップＭＳ６にてＮＯ）、ステップＭＳ３へ戻る。
【００５６】
一方、メディエータ２において、処理監視部２ｅは、メッセージシーケンステーブル２ｃの内容に基づいて、フィールド３に流れるメッセージを監視する。つまり、メッセージシーケンステーブル２ｃには、第１の開始メッセージの次にフィールド３に流れるべきメッセージが第２の開始メッセージであることが記録されている。従って、処理監視部２ｅは、ステップＭＳ２で第１の開始メッセージが出力された後、所定の時間内にサービスエージェントから第２の開始メッセージが出力されなかった場合には（ステップＭＳ３にてＮＯ）、最初の部分処理を実行可能なサービスエージェントが存在しないものと判断する。
【００５７】
この場合、処理監視部２ｅは、最初の部分処理を実行可能なサービスエージェントを起動するためのコードがコードテーブル２ｂにあるか否かを確認し（ステップＭＳ４）、コードが存在すれば、コードテーブル２ｂからそのコードを取得し、サービスエージェントを起動する（ステップＭＳ５）。
【００５８】
上記したように、複数段階の部分処理の各々が終了する毎に、次の部分処理の開始メッセージがフィールド３に流され、このメッセージを実行可能なサービスエージェントが次の部分処理を実行することを繰り返し、最後の部分処理が終了すると（ステップＭＳ６にてＹＥＳ）、メディエータ２の処理監視部２ｅが、最後の部分処理の結果としてフィールド３へ出力されたメッセージを検知し、メッセージ処理部２ｆが、そのメッセージを最終的な回答（図１に示す回答Ｍ１）に変換してフィールド３へ出力することにより（ステップＭＳ７）、サービス要求に対する処理が終了する。
【００５９】
このように、本実施形態のマルチエージェントシステム１０では、サービスエージェント同士が直接的にメッセージの送受信を行わず、各サービスエージェントは、自らが実行可能なメッセージのみを取り込んで処理し、処理結果をフィールド３へ出力するだけで良い。すなわち、サービスエージェントがメッセージの送信先を管理する必要がないという利点がある。
【００６０】
次に、メディエータ２によるコードの管理について説明する。前述したように、メディエータ２は、サービスエージェントを動的に起動するためのコードを、コードテーブル２ｂに記憶している。システム管理者等が、必要に応じて、新しいコードの追加や既存のコードのバージョンアップを行う可能性があるので、コードテーブル２ｂには、前述したように、各コードのバージョン番号が併せて記憶されている。
【００６１】
例えば、新しいコードの追加や、既存のコードのバージョンアップを行う場合、システム管理者等は、新しいコードを、モバイルコードとして、一般のメッセージと同様にフィールド３へ流す。なお、このとき、新しいコードのバージョン番号を上記モバイルコードに付しておく。
【００６２】
ここで、フィールド３にモバイルコードが流されたときのメディエータ２の処理手順について、図４のフローチャートを参照しながら説明する。
【００６３】
メディエータ２において、メッセージ処理部２ｆが、通常のメッセージと同様に、フィールド３からモバイルコードを受け取ると（ステップＳ１）、コード管理部２ｄがコードテーブル２ｂを参照することにより、受け取ったモバイルコードが、コードテーブル２ｂに既に記憶されているコードと同じであるか否かを判断する（ステップＳ２）。
【００６４】
そして、受け取ったモバイルコードが、コードテーブル２ｂに記憶されているコードでなければ（ステップＳ２にてＮＯ）、ステップＳ４へ進む。一方、受け取ったモバイルコードが、コードテーブル２ｂに既に記憶されているコードと同じであれば（ステップＳ２にてＹＥＳ）、ステップＳ３へ進み、受け取ったモバイルコードのバージョン番号と、コードテーブル２ｂに記憶されているコードのバージョン番号とを比較する。
【００６５】
この比較の結果、受け取ったモバイルコードに付けられたバージョン番号の方が新しければ（ステップＳ３にてＹＥＳ）、ステップＳ４へ進む。また、受け取ったモバイルコードに付けられたバージョン番号が、コードテーブル２ｂに記憶されているコードのバージョン番号よりも古い場合または同じである場合（ステップＳ３にてＮＯ）は、処理を終了する。
【００６６】
ステップＳ４では、受け取ったモバイルコードを、そのバージョン番号と共に、コードテーブル２ｂへ保存する。なお、このときに、古いバージョンのコードを破棄してもよいし、新しいバージョンのコードとは別に保存しておいても構わない。
【００６７】
このように、本実施形態のマルチエージェントシステム１０では、ブロードキャスト型のフィールド３に流されるコードを受け取って、メディエータ２が自律的にコードの管理を行うことにより、コードの送り手が、コードの送り先を意識する必要がないので、コードの管理が容易となるという利点がある。
【００６８】
また、本実施形態のマルチエージェントシステム１０では、通信基盤としてブロードキャスト型のフィールド３を用いたことにより、例えばｐｅｅｒ−ｔｏ−ｐｅｅｒタイプの通信基盤を用いた場合と比較すると、次の点で有利である。つまり、メディエータ２が、サービス要求の一連の処理の全体を逐次管理する必要がなく、部分処理を実行したサービスエージェントからフィールド３へ出力されるメッセージのみを監視していれば良いので、複数のサービス要求を並列処理することも可能である。
【００６９】
（実施の形態２）
以下、本発明の実施にかかる他の形態について説明する。なお、前記した実施の形態１で説明した構成と同様の機能を有する構成には、同一の符号を付記し、その詳細な説明を省略する。
【００７０】
本実施形態のマルチエージェントシステムは、前記した実施の形態１のマルチエージェントシステム１０と同様の構成を有するが、メディエータ２が、各部分処理に先だって、当該部分処理を実行可能なサービスエージェントの存在を確認する処理を行う点において、実施の形態１と異なる。
【００７１】
ここで、図５に示すように、フィールド３上に、２つのサービスエージェントＣ１およびＣ２と、メディエータ２とが存在するものとし、外部からサービス要求があった場合の処理手順について、図６のフローチャートを参照しながら説明する。なお、サービスエージェントＣ１およびＣ２は、特定のメッセージＣのみを処理可能なサービスエージェントであるものとする。
【００７２】
外部からフィールド３に対してサービス要求が入力されると、メディエータ２はフィールド３を介してこのサービス要求を受け取り、メディエータ２のメッセージ処理部２ｆが、処理手順記録テーブル２ａを参照して上記サービス要求の処理を複数段階の部分処理に分解する。（ステップＭＳ１１）。なお、ここでは、最初の部分処理が、メッセージＣの処理に相当するものとし、メッセージシーケンステーブル２ｃにおいて、当該サービス要求のメッセージのシーケンスの先頭に、メッセージＣが記録されているものとする。
【００７３】
次に、メッセージ処理部２ｆは、部分処理を実行可能なサービスエージェントの存在を問い合わせるための検索メッセージを、フィールド３へ出力する（ステップＭＳ１２）。ここでは、最初の部分処理として、メッセージＣの処理を実行可能なサービスエージェントの存在を問い合わせる検索メッセージが出力されることとなる。
【００７４】
フィールド３に登録されているサービスエージェントＣ１およびＣ２は、上記の検索メッセージを受け取ると、自らが当該部分処理を処理可能であるか否かを判断する（ステップＡＳ１１）。ここでは、ステップＡＳ１１の判断結果がＹＥＳであるので、処理可能である旨を通知するための処理可能通知メッセージを作成し、自らの識別子を付けて、フィールド３へ出力する（ステップＡＳ１２）。
【００７５】
このように、検索メッセージに対して、複数のサービスエージェントが処理可能通知メッセージを出力した場合には、フィールド３に対して最も早く出力された処理可能通知メッセージのみがメディエータ２に受け付けられ、他の処理可能通知メッセージは無視される。従って、サービスエージェントＣ１およびＣ２のうち、フィールド３に対して処理可能通知メッセージを最も早く出力したサービスエージェントが、当該部分処理を実行することとなる。
【００７６】
上記のようにステップＭＳ１２で検索メッセージを出力した後、所定の時間内にいずれかのサービスエージェントから処理可能通知メッセージを受け取った場合には（ステップＭＳ１３にてＹＥＳ）、メディエータ２のメッセージ処理部２ｆは、最初の部分処理として、メッセージＣの処理を要求する処理要求メッセージをフィールド３へ出力する（ステップＭＳ１６）。
【００７７】
なお、上記の処理要求メッセージには、メディエータ２が受け取った処理可能通知メッセージに付けられていたサービスエージェントの識別子が含まれる。これにより、各サービスエージェントは、フィールド３へ出力された処理要求メッセージに含まれる識別子が自らの識別子と一致した場合にのみ（ステップＡＳ１３にてＹＥＳ）、この処理要求メッセージを取り込み、要求された部分処理を実行する（ステップＡＳ１４）。
【００７８】
その後、部分処理を実行したサービスエージェントは、処理結果を通知する処理結果通知メッセージをフィールド３へ出力する。メディエータ２の処理監視部２ｅは、このメッセージを受けると、メッセージシーケンステーブル２ｃを参照し、後続の部分処理がまだ残っていれば（ステップＭＳ１７にてＮＯ）、ステップＭＳ１２へ戻り、次の部分処理を実行するためのメッセージ名をメッセージシーケンステーブル２ｃから取得し、そのメッセージを処理可能なサービスエージェントの存在を問い合わせる検索メッセージを、フィールド３へ出力する。
【００７９】
例えば、ここで、次の部分処理を実行するためのメッセージ名をメッセージＤとすると、この時点でフィールド３上に存在するサービスエージェントＣ１およびＣ２は、メッセージＣのみを処理可能であるので、ステップＭＳ１２で検索メッセージが出力されてから所定の時間が経過しても、いずれのサービスエージェントからも処理可能通知メッセージは出力されない（ステップＭＳ１３にてＮＯ）。
【００８０】
この場合、処理監視部２ｅは、メッセージＤを処理可能なサービスエージェントが存在しないものと判断する。そこで、処理監視部２ｅは、メッセージＤを処理可能なサービスエージェントを起動するためのコードがコードテーブル２ｂにあるか否かを確認し（ステップＭＳ１４）、コードが存在すれば、コードテーブル２ｂからそのコードを取得し、図５に破線で示したように、メッセージＤを処理可能なサービスエージェントＤ１を起動する（ステップＭＳ１５）。
【００８１】
以降、ステップＭＳ１７において、最後の部分処理が終了したと判断されるまで、上述の処理を繰り返すことにより、部分処理の各々が、適当なサービスエージェントによって実行される。そして、最後の部分処理が終了すると、メディエータ２のメッセージ処理部２ｆが、その結果をフィールド３へ出力することにより、サービス要求に対する最終的な回答がなされることとなる（ステップＭＳ１８）。
【００８２】
このように、本実施形態のマルチエージェントシステム１０は、メディエータ２が、サービス要求の部分処理を実行可能なサービスエージェントの存在を確認するための検索メッセージをフィールド３へ出力し、処理可能通知メッセージを最も早く出力したサービスエージェントに各部分処理を実行させる。従って、メディエータ２は、部分処理を実行可能なサービスエージェントの名前を予め知っておく必要がないという利点がある。
【００８３】
また、本実施形態のマルチエージェントシステム１０では、通信基盤としてブロードキャスト型のフィールド３を用いたことにより、例えばｐｅｅｒ−ｔｏ−ｐｅｅｒタイプの通信基盤を用いた場合と比較すると、次の点で有利である。つまり、メディエータ２が、サービス要求の一連の処理の全体を逐次管理する必要がなく、部分処理を実行したサービスエージェントからフィールド３へ出力されるメッセージのみを監視していれば良いので、複数のサービス要求を並列処理することも可能である。
【００８４】
（実施の形態３）
本発明の実施にかかるさらに他の形態について説明する。
【００８５】
本実施形態のマルチエージェントシステムは、図７に示すように、実施の形態１で説明したマルチエージェントシステム１０と同様の構成を有するマルチエージェントシステム１１に、ゲートウェイエージェントＧ１（メッセージ伝達手段）を介して、サービスエージェントＢ１が接続された構成である。
【００８６】
なお、マルチエージェントシステム１１は単一のフィールド３１を有し、サービスエージェントＢ１も、ローカルに生成された単一のフィールド３２を有し、ゲートウェイエージェントＧ１は、フィールド３１とフィールド３２とを接続するものである。フィールド３１および３２の双方とも、実施の形態１で説明したフィールド３と同様に、ブロードキャスト型の通信基盤である。
【００８７】
マルチエージェントシステム１１において、前記したフィールド３１には、実施の形態１のメディエータ２と同様の機能を有するメディエータ２１と、サービスエージェントＡ１およびＡ２が登録されている。また、ゲートウェイエージェントＧ１も、フィールド３１に登録されている。
【００８８】
サービスエージェントＢ１において、フィールド３２には、メディエータ２２と、コンポーネントＥ１およびＥ２が登録されている。また、ゲートウェイエージェントＧ１も、フィールド３２に登録されている。コンポーネントとは、サービスエージェントの中で自律的に動作する処理主体であり、サービスエージェントと粒度が異なるだけで、同様の機能を有する。なお、図７では、サービスエージェントＢ１内のコンポーネントとして、コンポーネントＥ１およびＥ２の２個のみを図示したが、コンポーネントの数は任意である。
【００８９】
すなわち、サービスエージェントが、サービス要求の処理を複数段階に分解した部分処理の各々を実行するものであるのに対し、コンポーネントは、サービスエージェントが実行する部分処理をさらに細分化した処理を行うものである。例えば、図７に示すサービスエージェントＢ１が所定の部分処理を行う機能を有する場合、コンポーネントＥ１およびＥ２は、上記部分処理を、さらに複数の機能ブロックに分解し、各機能ブロックの処理を分担して行う。
【００９０】
また、メディエータ２２は、実施の形態１のメディエータ２が備える処理手順記録テーブル２ａ、コードテーブル２ｂ、メッセージシーケンステーブル２ｃ、コード管理部２ｄ、処理監視部２ｅ、およびメッセージ処理部２ｆと同様の機能を有する構成を有し、メディエータ２がサービスエージェントに対して行う処理と同様の処理を、コンポーネントに対して行う。
【００９１】
ゲートウェイエージェントＧ１は、前記したように、ブロードキャスト型の通信基盤であるフィールド３１に登録されているので、フィールド３１に流されるメッセージのすべてを受信する。そして、ゲートウェイエージェントＧ１は、受信したメッセージの内、サービスエージェントＢ１に関するメッセージのみを選択し、フィールド３２へ出力する機能を有する。
【００９２】
ここで、フィールド３１に、サービスエージェントＢ１が実行可能な部分処理の開始メッセージが流された場合の処理について説明する。
【００９３】
前述したように、上記の開始メッセージは、ゲートウェイエージェントＧ１によって選択され、フィールド３２へ出力される。メディエータ２２は、フィールド３２からこの開始メッセージを受け取り、上記部分処理の実行を開始するために、実施の形態１のメディエータ２がサービス要求の処理を複数段階の部分処理に分解するのと同様に、上記部分処理を、一連の機能ブロックに分解して、最初の機能ブロックの処理を開始させるメッセージを作成し、フィールド３２へ出力する。
【００９４】
そして、コンポーネントＥ１およびＥ２が、実施の形態１のサービスエージェントＡ１〜Ａ３と同様に、自らが処理可能な機能ブロックを処理し、処理結果を通知するメッセージをフィールド３２へ出力する。これにより、上記一連の機能ブロックが順次処理され、すべての機能ブロックの処理が終了することにより、サービスエージェントＢ１における部分処理が完了する。
【００９５】
なお、機能ブロックの処理に必要なコンポーネントが起動されていない場合には、実施の形態１のメディエータ２がサービスエージェントを起動するのと同様に、メディエータ２２が、保持しているコードに基づいて、コンポーネントを起動すればよい。
【００９６】
サービスエージェントＢ１における部分処理が完了すると、メディエータ２２が、この部分処理の結果を記述したメッセージをフィールド３２に出力し、ゲートウェイエージェントＧ１が、上記メッセージをフィールド３１へ出力する。これにより、サービスエージェントＢ１による部分処理に続く部分処理が残っている場合には、マルチエージェントシステム１１において、後続の部分処理が実行されることとなる。
【００９７】
なお、サービスエージェントＢ１において、メディエータ２２は、一連の機能ブロックの処理を逐次管理する必要はなく、フィールド３２へ出力されるメッセージのシーケンスを監視するだけでよいので、複数のコンポーネントによって複数のメッセージを並列に処理することが可能である。
【００９８】
また、サービスエージェントＢ１の各コンポーネントを、さらに複数のコンポーネントとローカルフィールドとによって構成することも可能である。この場合、サービスエージェントＢ１のフィールド３２と上記ローカルフィールドとを接続するゲートウェイエージェントを設ければよい。
【００９９】
このように、ブロードキャスト型の通信基盤であるフィールドと、フィールド同士を接続して必要なメッセージのみを選択的に透過させるゲートウェイエージェントとを用いることにより、メッセージの送信先を指定しなくても、サービスエージェントおよびコンポーネント間でメッセージのやりとりを行うことが可能となる。
【０１００】
また、サービスエージェントＢ１においてコンポーネントのコードのバージョンアップ等を行う場合には、フィールド３１にコンポーネントのモバイルコードを流し、ゲートウェイエージェントＧ１がこのモバイルコードをフィールド３２へ送ることにより、サービスエージェントＢ１内のコンポーネントのコードを動的に入れ替えることができる。
【０１０１】
なお、このとき、メディエータ２２は、フィールド３２からモバイルコードを受け取ると、コードテーブルを参照し、受け取ったモバイルコードのバージョンが最新のバージョンであれば、同じ機能を持つコンポーネントを終了させるメッセージをフィールド３２へ流し、その後、受信したモバイルコードを用いてコンポーネントを再起動させるようにすればよい。
【０１０２】
以上のように、マルチエージェントシステムに、ローカルに生成したフィールドを有するサービスエージェントを、ゲートウェイエージェントを介して接続することにより、システムを容易に拡張することができる。
【０１０３】
（実施の形態４）
本発明の実施にかかるさらに他の形態について説明する。
【０１０４】
本実施形態のマルチエージェントシステムは、図８に示すように、ネットワーク上のホスト４１および４２の各々に、ブロードキャスト型の通信基盤であるフィールド３３および３４を設け、ホストコンピュータ４１上に設けられたリピータＲ１（メッセージ伝達手段）によって、フィールド３３とフィールド３４とを接続した構成である。
【０１０５】
リピータＲ１は、実施の形態３のゲートウェイエージェントＧ１と同様に、接続したフィールド間でメッセージを透過させる機能を持つが、透過させるメッセージの選択を行わず、すべてのメッセージを無条件に透過させる点において、ゲートウェイエージェントとは異なっている。
【０１０６】
ホスト４１上には、上記のフィールド３３とリピータＲ１の他に、メディエータ２３と、サービスエージェントＡ１およびＡ２とが存在する。なお、メディエータ２３と、サービスエージェントＡ１およびＡ２とは、フィールド３３に登録されており、フィールド３３に流されるメッセージのすべてを受信することができる。
【０１０７】
ホスト４２上には、上記のフィールド３４の他に、サービスエージェントＦ１およびＦ２が存在する。サービスエージェントＦ１およびＦ２は、フィールド３４に登録されており、フィールド３４に流されるメッセージのすべてを受信することができる。なお、ホスト４２側には、メディエータは存在しない。
【０１０８】
メディエータ２３は、実施の形態１のメディエータ２と同様の機能を有し、受け取ったサービス要求の処理を複数段階の部分処理に分解し、最初の部分処理を開始させるための開始メッセージをフィールド３３へ出力する。この開始メッセージは、フィールド３３を介してサービスエージェントＡ１およびＡ２に伝達され、さらにリピータＲ１およびフィールド３４を介してサービスエージェントＦ１およびＦ２にも伝達される。
【０１０９】
そして、実施の形態１で説明したように、いずれかのサービスエージェントが、上記開始メッセージを処理し、さらに後続の部分処理が各サービスエージェントに順次実行されることにより、サービス要求への回答が作成される。
【０１１０】
また、所定の時間が経過しても各部分処理の処理結果を通知する処理結果通知メッセージがフィールド３３に流れない場合には、実施の形態１のメディエータ２と同様に、メディエータ２３が、当該部分処理を実行するためのサービスエージェントを動的に起動する。
【０１１１】
以上のように、リピータＲ１が、フィールド３３からフィールド３４へ、また、フィールド３４からフィールド３３へ、双方向にすべてのメッセージを無条件に透過させることにより、複数のホストにまたがったマルチエージェントシステムを実現できる。これにより、コンピュータ資源を有効に活用することができ、拡張性の高いシステム構築が可能となる。
【０１１２】
なお、上述した実施の形態のそれぞれにおいて説明したメディエータ、サービスエージェント、ゲートウェイエージェント、およびリピータの各々は、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたプログラムや、コンピュータ等の記憶装置にインストールされたプログラムとして実施することが可能である。
【０１１３】
【発明の効果】
以上のように、本発明によれば、ブロードキャスト型の仲介エージェント装置を介してメッセージのやりとりを行うことによって、各エージェント装置がメッセージの送信先の情報を管理することなく、複数のエージェント装置が協調してサービス要求を処理するエージェントシステムを提供することができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態１にかかるマルチエージェントシステムの概略構成を、メッセージの流れと共に示す説明図
【図２】  前記マルチエージェントシステムが備えるメディエータの構成を示すブロック図
【図３】  前記マルチエージェントシステムにおいて、サービス要求を受けたときの、メディエータとサービスエージェントの処理の手順を示すフローチャート
【図４】  前記メディエータにおけるコード管理の処理手順を示すフローチャート
【図５】  本発明の実施の形態２にかかるマルチエージェントシステムの概略構成を示すブロック図
【図６】  実施の形態２にかかるマルチエージェントシステムにおいて、サービス要求を受けたときの、メディエータとサービスエージェントの処理の手順を示すフローチャート
【図７】  本発明の実施の形態３にかかるマルチエージェントシステムの概略構成を示すブロック図
【図８】  本発明の実施の形態４にかかるマルチエージェントシステムの概略構成を示すブロック図
【符号の説明】
２・２１〜２３    メディエータ
２ａ  処理手順記録テーブル
２ｂ  コードテーブル
２ｃ  メッセージシーケンステーブル
２ｄ  コード管理部
２ｅ  処理監視部
２ｆ  メッセージ処理部
３・３１〜３４    フィールド
１０・１１  マルチエージェントシステム
４１・４２  ホスト
【図１】
0003949310.tif 000002
【図２】
0003949310.tif 000003
【図３】
0003949310.tif 000004
【図４】
0003949310.tif 000005
【図５】
0003949310.tif 000006
【図６】
0003949310.tif 000007
【図７】
0003949310.tif 000008
【図８】
0003949310.tif 000009