(57)【特許請求の範囲】
【請求項１】
互いにネットワークで接続されるホームのコンピュータ及び複数のリモートのコンピュータと、該ネットワーク上の前記各コンピュータ間を移動させるソフトウェアであるエージェントとを備えるエージェントシステムであって、
前記ホームのコンピュータは、スクリプトの生成に使用するプランナクラスファイルと、スクリプトの解釈・実行に使用するスクリプトインタプリタクラスファイルと、スクリプトに含まれているコマンドの実行に使用するコマンドクラスファイルと、これらの各クラスファイルをインスタンス化する第１のクラスインスタンス化部と、コマンドクラスファイルを前記リモートのコンピュータの少なくとも一つに送出する第１のクラス転送部とを備え、
前記複数のリモートのコンピュータのそれぞれは、前記ホームのコンピュータから送られる前記コマンドクラスファイルを受信する第２のクラス転送部と、該第２のクラス転送部で受信した前記コマンドクラスファイルをインスタンス化する第２のクラスインスタンス化部とを備え、
前記エージェントは、
前記ホームのコンピュータを、前記ホームのコンピュータ上に配置された各クラスファイルを選択的に呼び出す呼び出し機能部として機能させ、
前記ホームのコンピュータの第１のクラスインスタンス化部を、前記呼び出し機能部により呼び出された前記プランナクラスファイルをインスタンス化することによりスクリプト生成部として機能させ、
前記ホームのコンピュータに、前記ホームのコンピュータの第１のクラスインスタンス化部へ前記スクリプトインタプリタクラスファイルのインスタンス化を要求させ、インスタンス化されたスクリプトインタプリタと、前記スクリプト生成部によって生成されたスクリプトとをエージェント内に取り込み、エージェントと共に前記複数のリモートのコンピュータの一つに移動させる運搬機能部として機能させ、
前記ホームのコンピュータの第１のクラス転送部を、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記運搬機能部によって移動させた先のコンピュータに転送させる転送機能部として機能させ、
前記運搬機能部によって移動させた先のコンピュータの前記第２のインスタンス化部を、前記転送機能部で転送されたコマンドクラスファイルをインスタンス化するよう機能させ、
前記運搬機能部によって前記移動させた先のコンピュータを、該インスタンス化されて得たものであって、前記エージェントに取り込まれている前記スクリプトのコマンドを実行するコマンド実行部として機能させるようにしたことを特徴とするエージェントシステム。
【請求項２】
スクリプトの生成に使用するプランナクラスファイルと、スクリプトの解釈・実行に使用するスクリプトインタプリタクラスファイルと、スクリプトに含まれているコマンドの実行に使用するコマンドクラスファイルと、これらの各クラスファイルをインスタンス化する第１のクラスインスタンス化部と、コマンドクラスファイルを送出する第１のクラス転送部とを有するホームのコンピュータと、前記ホームのコンピュータから送られる前記コマンドクラスファイルを受信する第２のクラス転送部と、該第２のクラス転送部で受信した前記コマンドクラスファイルをインスタンス化する第２のクラスインスタンス化部とをそれぞれ備える複数のリモートのコンピュータのそれぞれとが互いにネットワークで接続され、該ネットワーク上の各コンピュータ間で、
前記各コンピュータを、前記ホームのコンピュータ上に配置された各クラスファイルを選択的に呼び出す呼び出し機能として機能させ、前記ホームのコンピュータを、前記呼び出し機能部により呼び出された前記プランナクラスファイルをインスタンス化することによりスクリプト生成部として機能させ、前記各コンピュータを、前記呼び出し機能部により呼び出されたスクリプトインタプリタクラスファイルをインスタンス化して成るスクリプトインタプリタとして機能させ、前記各コンピュータを、前記スクリプト生成部が生成したスクリプトと前記スクリプトインタプリタとをエージェント内に取り込みエージェントと共に他のコンピュータに移動させる運搬機能部として機能させ、前記各コンピュータを、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記ホームのコンピュータからエージェントのいるリモートのコンピュータに転送させる転送機能部として機能させるソフトウェアエージェントを移動させ、前記スクリプトに基づいて前記エージェントに情報処理を行わせる情報処理方法において、
前記ホームのコンピュータで、前記プランナクラスファイルを呼び出し、インスタンス化することによりスクリプトを生成するステップと、
前記ホームのコンピュータで、前記スクリプトインタプリタクラスファイルをインスタンス化してスクリプトインタプリタを生成するステップと、
前記ホームのコンピュータで、前記生成したスクリプト、及び前記生成したスクリプトインタプリタを前記ソフトウェアエージェント内に取り込むステップと、
前記ホームのコンピュータで、前記生成したスクリプトインタプリタによって前記生成したスクリプトを解釈し、実行した際に、移動コマンドが発.見された場合には、前記エージェントを前記複数のリモートのコンピュータの一つへ移動させるステップと、
前記ホームのコンピュータで、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記移動させたコンピュータへ転送するステップと、
前記移動させたコンピュータの前記第２のインスタンス化部で、前記転送されたコマンドクラスファイルをインスタンス化するステップと、
前記移動させたコンピュータの該インスタンス化されたコマンド実行部にて、前記移動された前記ソフトウェアエージェントに取り込まれている前記スクリプトのコマンドを実行するステップとを備えたことを特徴とする情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上に分散して存在する情報をエージェントを用いて処理する技術の改良によるもので、特に、エージェントが処理に用いるソフトウェアのネットワーク上の配置の柔軟性を高めたものである。
【０００２】
【従来の技術】
従来から、コンピュータのネットワーク上に分散した情報を処理する技術として、エージェントシステムが知られている。エージェントとは、ソフトウェア上の処理単位であり、周囲の状況に応じて自律的に動作するものである。エージェントシステムは、このようなエージェントが、ネットワークを構成するノード上を必要に応じて移動しながら情報収集などの処理を行うシステムである。ここで、ノードとは、ネットワークを構成する論理的な単位であり、一つのマシンすなわちコンピュータ上に複数存在し得る。
【０００３】
この種のエージェントシステムの一例としては、エージェントがユーザから与えられた仕事の内容から、スクリプト生成部を用いてスクリプトを生成し、そのスクリプトをスクリプト実行部が解釈、実行するという一連の流れをエージェントが行うという方法がある。
ここで、スクリプトとは、エージェントの行動プログラムであり、どのノードへ移動し、どのような処理を行う、といった内容を具体的に記述したものである。例えば「ノードＡに移動してファイルａのコピーをユーザのノードに送信し、次にノードＢに移動してファイルｂのコピーをユーザのノードに送信し…」といった内容が考えられる。
【０００４】
図７は、上記のような方法を用いたエージェントの概念図である。すなわち、図７に示したようなエージェント７０は、それぞれ、スクリプト生成に用いる情報７１と、この情報に基づいてスクリプトを生成するスクリプト生成部７２と、スクリプト生成部によって生成されたスクリプトを実行するスクリプト実行部７３と、スクリプト中に記述されるコマンドを実行するコマンド実行部７４とを備えている。
【０００５】
しかしながら、このようなエージェントがネットワーク上を移動する場合、エージェントはその動作に必要なソフトウェアすべてを運搬する必要があるため、エージェントがネットワークを移動する速度が遅くなったり、ネットワークにより多くの負荷がかかるという問題が発生していた。
【０００６】
また、エージェントシステムの別の例として、図８に示したように、エージェント８０はスクリプト８１のみを運搬し、そのスクリプトの生成部８２及び実行部８３をすべてのノード８４上に配置するという方法がある。このようなエージェントがネットワーク上を移動する場合には、エージェント８０はスクリプト８１のみを運搬すればよい。
【０００７】
しかし、この種のエージェントにおいては、あらかじめすべてのノード上にスクリプトの生成及び実行に必要なソフトウェアを配置する必要がある。そのため、エージェントの動作の改良などのために、スクリプト生成部または実行部を更新しなければならない場合には、すべてのノード上のスクリプト生成部または実行部を更新しなければならないという問題点があった。
特に、ノードの数が多い場合には、このような更新作業は非常に時間がかかり、ネットワーク負荷も増大していた。また、セキュリティ等の理由によるノードの環境の制限のために、スクリプト生成部または実行部をあらかじめノード上に配置することができない場合もあった。
【０００８】
【発明が解決しようとする課題】
上述したように、スクリプトの生成部及び実行部等のソフトウェアの配置があらかじめ決められているエージェントシステムにおいては、ネットワークの負荷の軽減や、エージェントの移動速度の向上を図ることは困難であり、また、セキュリティ等の理由によってソフトウェアの配置の制限等が多いネットワーク上においては、エージェントの移動などを行うことが難しいという問題があった。
【０００９】
本発明は、上述したような従来技術の問題点を解消するために提案されたもので、その目的は、スクリプト生成部、実行部及びそれらが用いる各種のソフトウェアのノードへの配置を自由に行えるようにするとともに、ネットワーク負荷を軽減し、さまざまなネットワーク環境へのエージェントシステムの適用を可能とすることを目的とする。
【００１０】
【課題を解決するための手段】
本発明は、互いにネットワークで接続されるホームのコンピュータ及び複数のリモートのコンピュータと、該ネットワーク上の前記各コンピュータ間を移動させるソフトウェアであるエージェントとを備えるエージェントシステムであって、前記ホームのコンピュータは、スクリプトの生成に使用するプランナクラスファイルと、スクリプトの解釈・実行に使用するスクリプトインタプリタクラスファイルと、スクリプトに含まれているコマンドの実行に使用するコマンドクラスファイルと、これらの各クラスファイルをインスタンス化する第１のクラスインスタンス化部と、コマンドクラスファイルを前記リモートのコンピュータの少なくとも一つに送出する第１のクラス転送部とを備え、前記複数のリモートのコンピュータのそれぞれは、前記ホームのコンピュータから送られる前記コマンドクラスファイルを受信する第２のクラス転送部と、該第２のクラス転送部で受信した前記コマンドクラスファイルをインスタンス化する第２のクラスインスタンス化部とを備え、前記エージェントは、前記ホームのコンピュータを、前記ホームのコンピュータ上に配置された各クラスファイルを選択的に呼び出す呼び出し機能部として機能させ、前記ホームのコンピュータの第１のクラスインスタンス化部を、前記呼び出し機能部により呼び出された前記プランナクラスファイルをインスタンス化することによりスクリプト生成部として機能させ、前記ホームのコンピュータに、前記ホームのコンピュータの第１のクラスインスタンス化部へ前記スクリプトインタプリタクラスファイルのインスタンス化を要求させ、インスタンス化されたスクリプトインタプリタと、前記スクリプト生成部によって生成されたスクリプトとをエージェント内に取り込み、エージェントと共に前記複数のリモートのコンピュータの一つに移動させる運搬機能部として機能させ、前記ホームのコンピュータの第１のクラス転送部を、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記運搬機能部によって移動させた先のコンピュータに転送させる転送機能部として機能させ、前記運搬機能部によって移動させた先のコンピュータの前記第２のインスタンス化部を、前記転送機能部で転送されたコマンドクラスファイルをインスタンス化するよう機能させ、前記運搬機能部によって前記移動させた先のコンピュータを、該インスタンス化されて得たものであって、前記エージェントに取り込まれている前記スクリプトのコマンドを実行するコマンド実行部として機能させるようにした。
【００１１】
また、本発明は、スクリプトの生成に使用するプランナクラスファイルと、スクリプトの解釈・実行に使用するスクリプトインタプリタクラスファイルと、スクリプトに含まれているコマンドの実行に使用するコマンドクラスファイルと、これらの各クラスファイルをインスタンス化する第１のクラスインスタンス化部と、コマンドクラスファイルを送出する第１のクラス転送部とを有するホームのコンピュータと、前記ホームのコンピュータから送られる前記コマンドクラスファイルを受信する第２のクラス転送部と、該第２のクラス転送部で受信した前記コマンドクラスファイルをインスタンス化する第２のクラスインスタンス化部とをそれぞれ備える複数のリモートのコンピュータのそれぞれとが互いにネットワークで接続され、該ネットワーク上の各コンピュータ間で、
前記各コンピュータを、前記ホームのコンピュータ上に配置された各クラスファイルを選択的に呼び出す呼び出し機能として機能させ、前記ホームのコンピュータを、前記呼び出し機能部により呼び出された前記プランナクラスファイルをインスタンス化することによりスクリプト生成部として機能させ、前記各コンピュータを、前記呼び出し機能部により呼び出されたスクリプトインタプリタクラスファイルをインスタンス化して成るスクリプトインタプリタとして機能させ、前記各コンピュータを、前記スクリプト生成部が生成したスクリプトと前記スクリプトインタプリタとをエージェント内に取り込みエージェントと共に他のコンピュータに移動させる運搬機能部として機能させ、前記各コンピュータを、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記ホームのコンピュータからエージェントのいるリモートのコンピュータに転送させる転送機能部として機能させるソフトウェアエージェントを移動させ、前記スクリプトに基づいて前記エージェントに情報処理を行わせる情報処理方法において、前記ホームのコンピュータで、前記プランナクラスファイルを呼び出し、インスタンス化することによりスクリプトを生成するステップと、前記ホームのコンピュータで、前記スクリプトインタプリタクラスファイルをインスタンス化してスクリプトインタプリタを生成するステップと、前記ホームのコンピュータで、前記生成したスクリプト、及び前記生成したスクリプトインタプリタを前記ソフトウェアエージェント内に取り込むステップと、前記ホームのコンピュータで、前記生成したスクリプトインタプリタによって前記生成したスクリプトを解釈し、実行した際に、移動コマンドが発.見された場合には、前記エージェントを前記複数のリモートのコンピュータの一つへ移動させるステップと、前記ホームのコンピュータで、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記移動させたコンピュータへ転送するステップと、前記移動させたコンピュータの前記第２のインスタンス化部で、前記転送されたコマンドクラスファイルをインスタンス化するステップと、前記移動させたコンピュータの該インスタンス化されたコマンド実行部にて、前記移動された前記ソフトウェアエージェントに取り込まれている前記スクリプトのコマンドを実行するステップとを備えたことを特徴とする。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態（以下、実施形態という）について、図面を参照して説明する。
【００２０】
［１．構成］
すなわち、図１に示したように、本発明のエージェントシステムは、ネットワーク上の任意の場所に移動することができるエージェント１と、スクリプトの生成を行うプランナ２（スクリプト生成部）、このプランナ２がスクリプト生成時に参照するインフォ３及び後述するホームノード用クラス管理部（請求項における第１のクラス管理部）４を備えたホームノード５と、リモートノード用クラス管理部（請求項における第２のクラス管理部）６のみからなる複数のリモートノード７を備えている。
【００２１】
次に、前記ホームノード５について、さらに詳しく説明する。すなわち、ホームノード用クラス管理部４は、図２に示したように、クラスファイル格納部４１、クラスインスタンス化部４２及びクラス転送部４３とから構成されている。
また、前記クラスファイル格納部４１には、例えば、スクリプトの生成を行うプランナのクラスファイル４１ａ、スクリプトを解釈・実行するスクリプトインタプリタのクラスファイル４１ｂ、コマンドを実行するコマンド実行部のクラスファイル４１ｃ等、インスタンス化または他ノードに送出されるクラスのクラスファイルが格納されている。
【００２２】
さらに、前記クラスインスタンス化部４２は、前記エージェント１からあるクラスのインスタンス化要求を受けると、前記クラスファイル格納部４１に格納されたクラスファイル群の中から対応するクラスファイルを選択し、そのクラスファイルをインスタンス化する。
【００２３】
また、ホームノード５に設けられたクラス転送部４３は、クラス送出部４３ａから構成されている。そして、あるリモートノードに移動したエージェント１から、あるクラスのロード要求があった場合は、クラス送出部４３ａを介して、前記クラスファイル格納部４１に格納されたクラスファイル群の中から対応するクラスファイルを選択し、そのクラスファイルをエージェント１のいるリモートノードへ送出するように構成されている。
【００２４】
次に、リモートノード７について説明する。すなわち、本実施形態におけるリモートノード７上にはクラスファイルは存在せず、リモートノード用クラス管理部６は、図３に示したように、クラスインスタンス化部６２及びクラス転送部６３とから構成されている。
また、前記クラス転送部６３は、クラスロード部６３ａから構成されている。そして、エージェント１からあるクラスのロード要求があった場合は、前記クラスロード部６３ａが、そのクラスファイルがあるホームノード５のクラス送出部４３ａにクラスファイルの送出要求をし、ロードされたクラスファイルを、前記クラスインスタンス化部６２を介して、インスタンス化するように構成されている。
【００２５】
すなわち、あるリモートノード７上にエージェントが移動し、そのリモートノード上でスクリプトを実行する際に、スクリプトインタプリタ（スクリプト実行部）がスクリプト中のコマンドを実行する必要がある場合には、クラスロード部６３ａを介して、そのコマンドに対応するコマンドクラスファイルをホームノード５よりロードしてインスタンス化し、インスタンス化されたコマンド実行部が前記コマンドを実行するように構成されている。
【００２６】
また、前記エージェント１は、図１に示したように、必要に応じて、前記スクリプト生成部、スクリプト実行部及びコマンド実行部を選択的に呼び出すことができる呼び出し機能部１１と、前記スクリプト生成部、スクリプト実行部及びコマンド実行部を選択的にエージェント内部に取り込み、エージェントとともに移動させることができる運搬機能部１２と、前記スクリプト生成部、スクリプト実行部及びコマンド実行部を選択的にエージェントのいるネットワーク上の任意の場所に転送させることができる転送機能部１３とを備えている。
そして、ホームノード５上のプランナ２を呼び出した結果として受け取るスクリプト１４、及びスクリプトインタプリタクラスをインスタンス化したスクリプトインタプリタ１５を持ち運び、ノード間を移動するように構成されている。
【００２７】
［２．作用］
上記のような構成を有する本実施形態のエージェントシステムは、次のような作用を有する。ここで、図４は、本実施形態のエージェントシステムにおける処理手順を示すフローチャートである。
【００２８】
すなわち、エージェント１は最初にホームノード５上に生成され、ユーザから仕事の内容を示した初期スクリプトを受け取る（ステップ４０１）。その後、エージェント１の運搬機能部１２が、ホームノードにあるホームノード用クラス管理部４にスクリプトインタプリタのインスタンス化を要求すると、前記ホームノード用クラス管理部４において、クラスファイル格納部４１に格納されているスクリプトインタプリタクラスファイルがインスタンス化される。そして、インスタンス化されたスクリプトインタプリタを、エージェント１が運搬機能部１２を利用して取り込む（ステップ４０２）。
【００２９】
その後、エージェント１は、自身が現在ホームノード５にいるかどうかを確かめる（ステップ４０３）。
エージェント１がホームノード５にいる場合は、スクリプトインタプリタがスクリプトを解釈し（ステップ４０４）、その結果、そのスクリプト中に「スクリプト生成要求コマンド」を見つけた場合には（ステップ４０５）、エージェント１の呼び出し機能部１１がプランナの呼び出しを行う。すなわち、エージェント１の呼び出し機能部１１は、ホームノード用クラス管理部４にプランナクラスファイルのインスタンス化を要求し、ホームノード用クラス管理部４がプランナクラスファイルをホームノード上でインスタンス化する（ステップ４０６）。
【００３０】
続いて、インスタンス化されたプランナがスクリプトを生成すると（ステップ４０７）、エージェント１は、プランナが生成したスクリプトをエージェント内部へ取り込み（ステップ４０８）、ステップ４０４に戻る。
【００３１】
一方、ステップ４０５において、スクリプト中に「スクリプト生成要求コマンド」が見つけられなかった場合には、ステップ４０９に進み、「移動コマンド」があるか否かが判断される。
そして、「移動コマンド」を見つけた場合には、エージェント１は、移動対象のノードへ移動する（ステップ４１０）。
【００３２】
一方、「移動コマンド」が見つけられなかった場合は、エージェント１はホームノード上で、呼び出し機能部１１を利用して、コマンドに対応するコマンド実行部の呼び出しを行う。すなわち、エージェント１の呼び出し機能部１１は、ホームノード用クラス管理部４にコマンドクラスファイルのインスタンス化を要求し、ホームノード用クラス管理部４がコマンドクラスファイルをインスタンス化し（ステップ４１１）、インスタンス化されたコマンド実行部がコマンドを実行する（ステップ４１２）。
そして、スクリプト中のコマンドの実行がすべて終了したか否かが判断され（ステップ４１３）、終了していない場合には、ステップ４０４に戻る。
【００３３】
一方、ステップ４０３において、エージェント１がホームノード５にいない場合は、スクリプトインタプリタがスクリプトを解釈し（ステップ４１４）、その結果、そのスクリプト中に「スクリプト生成要求コマンド」を見つけた場合には（ステップ４１５）、エージェント１はホームノード５へ移動し（ステップ４１６）、エージェント１の呼び出し機能部１１がプランナの呼び出しを行い、ステップ４０６に進む。すなわち、エージェント１の呼び出し機能部１１は、ホームノード用クラス管理部４にプランナクラスファイルのインスタンス化を要求し、ホームノード用クラス管理部４がプランナクラスファイルをホームノード上でインスタンス化する（ステップ４０６）。
【００３４】
続いて、インスタンス化されたプランナがスクリプトを生成すると（ステップ４０７）、エージェント１は、プランナが生成したスクリプトをエージェント内部へ取り込み（ステップ４０８）、ステップ４０４に戻る。
【００３５】
一方、ステップ４１５において、スクリプト中に「スクリプト生成要求コマンド」が見つけられなかった場合には、ステップ４１７に進み、「移動コマンド」があるか否かが判断される。
そして、「移動コマンド」を見つけた場合には、エージェント１は、移動対象のノードへ移動する（ステップ４１０）。
【００３６】
一方、「移動コマンド」が見つけられなかった場合は、エージェント１は、転送機能部１３を利用して、現在そのエージェントがいるリモートノードのクラス管理部６に、対応するコマンドクラスのインスタンス化を要求する。
すなわち、リモートノード用クラス管理部６は、対応するコマンドクラスファイルのロードをホームノードのクラス転送部に要求し、そのコマンドクラスファイルをロードする。続いて、ロードされたコマンドクラスファイルを、リモートノード用クラス管理部のクラスインスタンス化部６２がインスタンス化し（ステップ４１８）、インスタンス化されたコマンド実行部がコマンドを実行する（ステップ４１９）。
そして、スクリプト中のコマンドの実行がすべて終了したか否かが判断され（ステップ４２０）、終了していない場合には、ステップ４１４に戻る。
【００３７】
続いて、具体例を用いて説明する。例えば、図５に示したように、ワークステーションＡ上に配置された１つのホームノード“nodeA ”  と、機器制御用マイコンボード１，２，３上に配置された３つのリモートノード“node1,2,3 ”から構成されるエージェントシステムにおいて、以下のスクリプトを与えたエージェントをホームノード“nodeA ”で生成する。
【００３８】
1: goto node1
2: set state = 'checkState'
3: goto node2
4: if ( $state = 0 ) then
5: reportState
6: else if ($state = 1 ) then
7: goto node3
8: checkState
9: else if ($state = 2 ) then
10: changeState
11: else
12: newgoal testNext
13: endif
この例において、gotoはエージェントの移動命令、newgoal は新たなスクリプトの生成要求命令である。set はスクリプト変数の設定命令であり、if、then、else、endif は条件分岐のための構文である。それ以外の命令は、コマンド実行部で実行されるコマンドである。
【００３９】
上記のスクリプトを与えられて、“nodeA ”で生成されたエージェントは、最初にスクリプトインタプリタをエージェントに取り込む。その後、スクリプトインタプリタは上記のスクリプトを解釈する。
【００４０】
１行目の命令は、移動命令であるので、エージェントは指定された“node1 ”に移動する。２行目の命令は、スクリプト変数state にコマンドcheckStateの実行結果を代入するという意味である。
【００４１】
この命令を実行する時点で、エージェントはリモートノード“node1 ”に存在するので、エージェントの転送機能部がコマンドcheckStateに対応するコマンドクラスファイルcheckState.classをホームノードであるnodeA からロードし、インスタンス化した後、実行する。
以下に、checkState.classを定義するcheckState.java の例を示す。
0003691962.tif 000002
すなわち、上例は、checkState.classをインスタンス化した後、エージェントの転送機能部はメソッドstart() を呼び出し、そのメソッドの帰り値を、スクリプトインタプリタがスクリプト変数state に格納することを意味している。
【００４２】
次に、３行目の命令は、移動命令であるので、エージェントは“node2 ”へ移動する。
また、４行目の命令は、ifによる分岐命令であるので、スクリプト変数state の値によって次の動作は変化する。
すなわち、state が０であった場合（４〜５行目）は、コマンドreportState を、checkStateと同様にロードして実行する。
state が１であった場合（６〜８行目）は、node3 に移動し、コマンドcheckStateをロードして実行する。
state が２であった場合（９〜１０行目）は、コマンドchangeState をロードして実行する。
【００４３】
一方、state が上のいずれでもなかった場合は、スクリプト生成要求命令newgoal を実行する。この場合、スクリプトを生成するプランナを呼び出すため、エージェントはホームノードへ移動する。その後、エージェントの呼び出し機能部を用いて、newgoal の引数testNextを渡してプランナを実行する。
そして、エージェントは、プランナが返した新たなスクリプトを受け取り、スクリプトインタプリタがそのスクリプトを解釈し、エージェントの実行を続ける。
【００４４】
［３．効果］
上記のように、本実施形態のエージェントシステムでは、リモートノード７にはリモートノード用クラス管理部６のみを設置するだけで済み、リモートノード側に要求する機能を最小限に抑えることができる。
また、リモートノード側においては、実行するコマンドに対応するコマンドクラスのみをロードするので、余分なネットワーク負荷をかけることがない。また、クラスファイルなどを設置する必要もないので、ファイルシステムが扱えないマシンをリモートノードとすることもできる。
このような形態のマシンは、機器に組み込む形のマイコンボードなどに多く見られるが、それらのボードをリモートノードとして扱うことで、本発明のエージェントシステムを適用し、機器の操作や解析などをエージェントに行わせることが可能になる。
【００４５】
また、本実施形態においては、エージェントは、エージェントが動作中に常に用いるスクリプトインタプリタのみを持ち運び、まれに用いるプランナはホームノード上へ移動してから呼び出すという形態になっている。また、コマンド実行部は、コマンドを実行する必要がある場合に初めてロードを行うように構成されている。その結果、エージェントの移動によるネットワーク負荷と、ロードによって発生するネットワーク負荷の双方を最小限に抑えることができる。
また、エージェントが動作に必要とするすべてのクラスファイルをホームノード上で一括管理することができるため、エージェントシステムの管理、保守が容易になる。
【００４６】
［４．他の実施形態］
なお、本発明は上述した実施形態に限定されるものではなく、次に例示するような他の実施形態をも含むものである。
例えば、本発明において、スクリプト生成部、スクリプト実行部、コマンド実行部のどれを呼び出して用いるか、または運搬して用いるか、またはロードして用いるかは自由である。
【００４７】
上記実施の形態において、実行されるコマンドが多くのリモートノードで一致するならば、それらのコマンド実行部をエージェントが運搬することによって、ロードによるオーバヘッドを避けることができる。また、リモートノードにおいて新たなスクリプトを生成したい場合は、プランナクラスをロードすることによって、インフォを参照しない簡単なスクリプト生成を行うことができる。さらに、各リモートノードにスクリプトインタプリタを設置しておけば、エージェントはスクリプトのみを持ち運ぶ形態にすることができるので、ネットワーク負荷を大幅に減らすことができる。
【００４８】
また、上記の実施形態においては、リモートノード上にはクラスファイルを設けていないが、ホームノードに限らず、任意のリモートノードにクラスファイルを設けることもできる。
なお、この場合、ホームノード及びリモートノードのクラス管理部は、共に図６に示したように構成される。すなわち、クラス管理部５０は、クラスファイル格納部５１、クラスインスタンス化部５２及びクラス転送部５３とから構成されている。また、クラス転送部５３は、クラスロード部５３ａ及びクラス送出部５３ｂから構成されている。
【００４９】
そして、他のノードにいるエージェントから、あるクラスのロード要求があり、そのクラスファイルが自らのノードのクラスファイル格納部５１に格納されている場合には、クラス送出部５３ｂを介して、前記クラスファイル格納部５１に格納されたクラスファイル群の中から対応するクラスファイルを選択し、そのクラスファイルをエージェントのいるノードへ送出する。
【００５０】
一方、エージェントから、他のノードのクラスファイルに格納されたあるクラスのロード要求があった場合は、前記クラスロード部５３ａが、そのクラスファイルがあるノードのクラス送出部にクラスファイルの送出要求をし、ロードされたクラスファイルを、前記クラスインスタンス化部５２を介して、インスタンス化する。
【００５１】
このように構成すれば、スクリプト生成部、スクリプト実行部、コマンド実行部及びそれらが用いる各種のソフトウェア、スクリプト生成に用いる情報等を、ネットワーク上の任意の場所に配置することができる。
【００５２】
【発明の効果】
以上述べたように、本発明によれば、スクリプト生成部、実行部及びそれらが用いる各種のソフトウェアのノードへの配置を自由に行えるだけでなく、ネットワーク負荷を軽減し、さまざまなネットワーク環境へのエージェントシステムの適用を可能とすることができる。
【図面の簡単な説明】
【図１】本発明によるエージェントシステムの一実施形態の構成を示す概略図
【図２】図１に示したホームノード用クラス管理部の構成を示す図
【図３】図１に示したリモートノード用クラス管理部の構成を示す図
【図４】本発明のエージェントシステムの動作を示すフローチャート
【図５】本発明のエージェントシステムの具体例を示す図
【図６】本発明の他の実施形態におけるクラス管理部の構成を示す図
【図７】従来のエージェントシステムの構成を示す図
【図８】従来のエージェントシステムの他の構成を示す図
【符号の説明】
１…エージェント
２…プランナ
３…インフォ
４…ホームノード用クラス管理部
５…ホームノード
６…リモートノード用クラス管理部
７…リモートノード
１１…呼び出し機能部
１２…運搬機能部
１３…転送機能部
１４…スクリプト
１５…スクリプトインタプリタ
４１，５１…クラスファイル格納部
４２，５２，６２…クラスインスタンス化部
４３，５３，６３…クラス転送部
４３ａ…クラス送出部
５３ａ…クラスロード部
５３ｂ…クラス送出部
６３ａ…クラスロード部
【図１】
0003691962.tif 000003
【図２】
0003691962.tif 000004
【図３】
0003691962.tif 000005
【図４】
0003691962.tif 000006
【図５】
0003691962.tif 000007
【図６】
0003691962.tif 000008
【図７】
0003691962.tif 000009
【図８】
0003691962.tif 000010