







【0001】
【発明の属する技術分野】
本発明は、ネットワーク上に分散して存在する情報をエージェントを用いて処理する技術の改良によるもので、特に、エージェントが処理に用いるソフトウェアのネットワーク上の配置の柔軟性を高めたものである。
【0002】
【従来の技術】
従来から、コンピュータのネットワーク上に分散した情報を処理する技術として、エージェントシステムが知られている。エージェントとは、ソフトウェア上の処理単位であり、周囲の状況に応じて自律的に動作するものである。エージェントシステムは、このようなエージェントが、ネットワークを構成するノード上を必要に応じて移動しながら情報収集などの処理を行うシステムである。ここで、ノードとは、ネットワークを構成する論理的な単位であり、一つのマシンすなわちコンピュータ上に複数存在し得る。
【0003】
この種のエージェントシステムの一例としては、エージェントがユーザから与えられた仕事の内容から、スクリプト生成部を用いてスクリプトを生成し、そのスクリプトをスクリプト実行部が解釈、実行するという一連の流れをエージェントが行うという方法がある。
ここで、スクリプトとは、エージェントの行動プログラムであり、どのノードへ移動し、どのような処理を行う、といった内容を具体的に記述したものである。例えば「ノードAに移動してファイルaのコピーをユーザのノードに送信し、次にノードBに移動してファイルbのコピーをユーザのノードに送信し…」といった内容が考えられる。
【0004】
図7は、上記のような方法を用いたエージェントの概念図である。すなわち、図7に示したようなエージェント70は、それぞれ、スクリプト生成に用いる情報71と、この情報に基づいてスクリプトを生成するスクリプト生成部72と、スクリプト生成部によって生成されたスクリプトを実行するスクリプト実行部73と、スクリプト中に記述されるコマンドを実行するコマンド実行部74とを備えている。
【0005】
しかしながら、このようなエージェントがネットワーク上を移動する場合、エージェントはその動作に必要なソフトウェアすべてを運搬する必要があるため、エージェントがネットワークを移動する速度が遅くなったり、ネットワークにより多くの負荷がかかるという問題が発生していた。
【0006】
また、エージェントシステムの別の例として、図8に示したように、エージェント80はスクリプト81のみを運搬し、そのスクリプトの生成部82及び実行部83をすべてのノード84上に配置するという方法がある。このようなエージェントがネットワーク上を移動する場合には、エージェント80はスクリプト81のみを運搬すればよい。
【0007】
しかし、この種のエージェントにおいては、あらかじめすべてのノード上にスクリプトの生成及び実行に必要なソフトウェアを配置する必要がある。そのため、エージェントの動作の改良などのために、スクリプト生成部または実行部を更新しなければならない場合には、すべてのノード上のスクリプト生成部または実行部を更新しなければならないという問題点があった。
特に、ノードの数が多い場合には、このような更新作業は非常に時間がかかり、ネットワーク負荷も増大していた。また、セキュリティ等の理由によるノードの環境の制限のために、スクリプト生成部または実行部をあらかじめノード上に配置することができない場合もあった。
【0008】
【発明が解決しようとする課題】
上述したように、スクリプトの生成部及び実行部等のソフトウェアの配置があらかじめ決められているエージェントシステムにおいては、ネットワークの負荷の軽減や、エージェントの移動速度の向上を図ることは困難であり、また、セキュリティ等の理由によってソフトウェアの配置の制限等が多いネットワーク上においては、エージェントの移動などを行うことが難しいという問題があった。
【0009】
本発明は、上述したような従来技術の問題点を解消するために提案されたもので、その目的は、スクリプト生成部、実行部及びそれらが用いる各種のソフトウェアのノードへの配置を自由に行えるようにするとともに、ネットワーク負荷を軽減し、さまざまなネットワーク環境へのエージェントシステムの適用を可能とすることを目的とする。
【0010】
【課題を解決するための手段】
本発明は、互いにネットワークで接続されるホームのコンピュータ及び複数のリモートのコンピュータと、該ネットワーク上の前記各コンピュータ間を移動させるソフトウェアであるエージェントとを備えるエージェントシステムであって、前記ホームのコンピュータは、スクリプトの生成に使用するプランナクラスファイルと、スクリプトの解釈・実行に使用するスクリプトインタプリタクラスファイルと、スクリプトに含まれているコマンドの実行に使用するコマンドクラスファイルと、これらの各クラスファイルをインスタンス化する第1のクラスインスタンス化部と、コマンドクラスファイルを前記リモートのコンピュータの少なくとも一つに送出する第1のクラス転送部とを備え、前記複数のリモートのコンピュータのそれぞれは、前記ホームのコンピュータから送られる前記コマンドクラスファイルを受信する第2のクラス転送部と、該第2のクラス転送部で受信した前記コマンドクラスファイルをインスタンス化する第2のクラスインスタンス化部とを備え、前記エージェントは、前記ホームのコンピュータを、前記ホームのコンピュータ上に配置された各クラスファイルを選択的に呼び出す呼び出し機能部として機能させ、前記ホームのコンピュータの第1のクラスインスタンス化部を、前記呼び出し機能部により呼び出された前記プランナクラスファイルをインスタンス化することによりスクリプト生成部として機能させ、前記ホームのコンピュータに、前記ホームのコンピュータの第1のクラスインスタンス化部へ前記スクリプトインタプリタクラスファイルのインスタンス化を要求させ、インスタンス化されたスクリプトインタプリタと、前記スクリプト生成部によって生成されたスクリプトとをエージェント内に取り込み、エージェントと共に前記複数のリモートのコンピュータの一つに移動させる運搬機能部として機能させ、前記ホームのコンピュータの第1のクラス転送部を、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記運搬機能部によって移動させた先のコンピュータに転送させる転送機能部として機能させ、前記運搬機能部によって移動させた先のコンピュータの前記第2のインスタンス化部を、前記転送機能部で転送されたコマンドクラスファイルをインスタンス化するよう機能させ、前記運搬機能部によって前記移動させた先のコンピュータを、該インスタンス化されて得たものであって、前記エージェントに取り込まれている前記スクリプトのコマンドを実行するコマンド実行部として機能させるようにした。
【0011】
また、本発明は、スクリプトの生成に使用するプランナクラスファイルと、スクリプトの解釈・実行に使用するスクリプトインタプリタクラスファイルと、スクリプトに含まれているコマンドの実行に使用するコマンドクラスファイルと、これらの各クラスファイルをインスタンス化する第1のクラスインスタンス化部と、コマンドクラスファイルを送出する第1のクラス転送部とを有するホームのコンピュータと、前記ホームのコンピュータから送られる前記コマンドクラスファイルを受信する第2のクラス転送部と、該第2のクラス転送部で受信した前記コマンドクラスファイルをインスタンス化する第2のクラスインスタンス化部とをそれぞれ備える複数のリモートのコンピュータのそれぞれとが互いにネットワークで接続され、該ネットワーク上の各コンピュータ間で、
前記各コンピュータを、前記ホームのコンピュータ上に配置された各クラスファイルを選択的に呼び出す呼び出し機能として機能させ、前記ホームのコンピュータを、前記呼び出し機能部により呼び出された前記プランナクラスファイルをインスタンス化することによりスクリプト生成部として機能させ、前記各コンピュータを、前記呼び出し機能部により呼び出されたスクリプトインタプリタクラスファイルをインスタンス化して成るスクリプトインタプリタとして機能させ、前記各コンピュータを、前記スクリプト生成部が生成したスクリプトと前記スクリプトインタプリタとをエージェント内に取り込みエージェントと共に他のコンピュータに移動させる運搬機能部として機能させ、前記各コンピュータを、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記ホームのコンピュータからエージェントのいるリモートのコンピュータに転送させる転送機能部として機能させるソフトウェアエージェントを移動させ、前記スクリプトに基づいて前記エージェントに情報処理を行わせる情報処理方法において、前記ホームのコンピュータで、前記プランナクラスファイルを呼び出し、インスタンス化することによりスクリプトを生成するステップと、前記ホームのコンピュータで、前記スクリプトインタプリタクラスファイルをインスタンス化してスクリプトインタプリタを生成するステップと、前記ホームのコンピュータで、前記生成したスクリプト、及び前記生成したスクリプトインタプリタを前記ソフトウェアエージェント内に取り込むステップと、前記ホームのコンピュータで、前記生成したスクリプトインタプリタによって前記生成したスクリプトを解釈し、実行した際に、移動コマンドが発.見された場合には、前記エージェントを前記複数のリモートのコンピュータの一つへ移動させるステップと、前記ホームのコンピュータで、前記ホームのコンピュータに配置されているコマンドクラスファイルを前記移動させたコンピュータへ転送するステップと、前記移動させたコンピュータの前記第2のインスタンス化部で、前記転送されたコマンドクラスファイルをインスタンス化するステップと、前記移動させたコンピュータの該インスタンス化されたコマンド実行部にて、前記移動された前記ソフトウェアエージェントに取り込まれている前記スクリプトのコマンドを実行するステップとを備えたことを特徴とする。
【0019】
【発明の実施の形態】
以下、本発明の実施の形態(以下、実施形態という)について、図面を参照して説明する。
【0020】
[1.構成]
すなわち、図1に示したように、本発明のエージェントシステムは、ネットワーク上の任意の場所に移動することができるエージェント1と、スクリプトの生成を行うプランナ2(スクリプト生成部)、このプランナ2がスクリプト生成時に参照するインフォ3及び後述するホームノード用クラス管理部(請求項における第1のクラス管理部)4を備えたホームノード5と、リモートノード用クラス管理部(請求項における第2のクラス管理部)6のみからなる複数のリモートノード7を備えている。
【0021】
次に、前記ホームノード5について、さらに詳しく説明する。すなわち、ホームノード用クラス管理部4は、図2に示したように、クラスファイル格納部41、クラスインスタンス化部42及びクラス転送部43とから構成されている。
また、前記クラスファイル格納部41には、例えば、スクリプトの生成を行うプランナのクラスファイル41a、スクリプトを解釈・実行するスクリプトインタプリタのクラスファイル41b、コマンドを実行するコマンド実行部のクラスファイル41c等、インスタンス化または他ノードに送出されるクラスのクラスファイルが格納されている。
【0022】
さらに、前記クラスインスタンス化部42は、前記エージェント1からあるクラスのインスタンス化要求を受けると、前記クラスファイル格納部41に格納されたクラスファイル群の中から対応するクラスファイルを選択し、そのクラスファイルをインスタンス化する。
【0023】
また、ホームノード5に設けられたクラス転送部43は、クラス送出部43aから構成されている。そして、あるリモートノードに移動したエージェント1から、あるクラスのロード要求があった場合は、クラス送出部43aを介して、前記クラスファイル格納部41に格納されたクラスファイル群の中から対応するクラスファイルを選択し、そのクラスファイルをエージェント1のいるリモートノードへ送出するように構成されている。
【0024】
次に、リモートノード7について説明する。すなわち、本実施形態におけるリモートノード7上にはクラスファイルは存在せず、リモートノード用クラス管理部6は、図3に示したように、クラスインスタンス化部62及びクラス転送部63とから構成されている。
また、前記クラス転送部63は、クラスロード部63aから構成されている。そして、エージェント1からあるクラスのロード要求があった場合は、前記クラスロード部63aが、そのクラスファイルがあるホームノード5のクラス送出部43aにクラスファイルの送出要求をし、ロードされたクラスファイルを、前記クラスインスタンス化部62を介して、インスタンス化するように構成されている。
【0025】
すなわち、あるリモートノード7上にエージェントが移動し、そのリモートノード上でスクリプトを実行する際に、スクリプトインタプリタ(スクリプト実行部)がスクリプト中のコマンドを実行する必要がある場合には、クラスロード部63aを介して、そのコマンドに対応するコマンドクラスファイルをホームノード5よりロードしてインスタンス化し、インスタンス化されたコマンド実行部が前記コマンドを実行するように構成されている。
【0026】
また、前記エージェント1は、図1に示したように、必要に応じて、前記スクリプト生成部、スクリプト実行部及びコマンド実行部を選択的に呼び出すことができる呼び出し機能部11と、前記スクリプト生成部、スクリプト実行部及びコマンド実行部を選択的にエージェント内部に取り込み、エージェントとともに移動させることができる運搬機能部12と、前記スクリプト生成部、スクリプト実行部及びコマンド実行部を選択的にエージェントのいるネットワーク上の任意の場所に転送させることができる転送機能部13とを備えている。
そして、ホームノード5上のプランナ2を呼び出した結果として受け取るスクリプト14、及びスクリプトインタプリタクラスをインスタンス化したスクリプトインタプリタ15を持ち運び、ノード間を移動するように構成されている。
【0027】
[2.作用]
上記のような構成を有する本実施形態のエージェントシステムは、次のような作用を有する。ここで、図4は、本実施形態のエージェントシステムにおける処理手順を示すフローチャートである。
【0028】
すなわち、エージェント1は最初にホームノード5上に生成され、ユーザから仕事の内容を示した初期スクリプトを受け取る(ステップ401)。その後、エージェント1の運搬機能部12が、ホームノードにあるホームノード用クラス管理部4にスクリプトインタプリタのインスタンス化を要求すると、前記ホームノード用クラス管理部4において、クラスファイル格納部41に格納されているスクリプトインタプリタクラスファイルがインスタンス化される。そして、インスタンス化されたスクリプトインタプリタを、エージェント1が運搬機能部12を利用して取り込む(ステップ402)。
【0029】
その後、エージェント1は、自身が現在ホームノード5にいるかどうかを確かめる(ステップ403)。
エージェント1がホームノード5にいる場合は、スクリプトインタプリタがスクリプトを解釈し(ステップ404)、その結果、そのスクリプト中に「スクリプト生成要求コマンド」を見つけた場合には(ステップ405)、エージェント1の呼び出し機能部11がプランナの呼び出しを行う。すなわち、エージェント1の呼び出し機能部11は、ホームノード用クラス管理部4にプランナクラスファイルのインスタンス化を要求し、ホームノード用クラス管理部4がプランナクラスファイルをホームノード上でインスタンス化する(ステップ406)。
【0030】
続いて、インスタンス化されたプランナがスクリプトを生成すると(ステップ407)、エージェント1は、プランナが生成したスクリプトをエージェント内部へ取り込み(ステップ408)、ステップ404に戻る。
【0031】
一方、ステップ405において、スクリプト中に「スクリプト生成要求コマンド」が見つけられなかった場合には、ステップ409に進み、「移動コマンド」があるか否かが判断される。
そして、「移動コマンド」を見つけた場合には、エージェント1は、移動対象のノードへ移動する(ステップ410)。
【0032】
一方、「移動コマンド」が見つけられなかった場合は、エージェント1はホームノード上で、呼び出し機能部11を利用して、コマンドに対応するコマンド実行部の呼び出しを行う。すなわち、エージェント1の呼び出し機能部11は、ホームノード用クラス管理部4にコマンドクラスファイルのインスタンス化を要求し、ホームノード用クラス管理部4がコマンドクラスファイルをインスタンス化し(ステップ411)、インスタンス化されたコマンド実行部がコマンドを実行する(ステップ412)。
そして、スクリプト中のコマンドの実行がすべて終了したか否かが判断され(ステップ413)、終了していない場合には、ステップ404に戻る。
【0033】
一方、ステップ403において、エージェント1がホームノード5にいない場合は、スクリプトインタプリタがスクリプトを解釈し(ステップ414)、その結果、そのスクリプト中に「スクリプト生成要求コマンド」を見つけた場合には(ステップ415)、エージェント1はホームノード5へ移動し(ステップ416)、エージェント1の呼び出し機能部11がプランナの呼び出しを行い、ステップ406に進む。すなわち、エージェント1の呼び出し機能部11は、ホームノード用クラス管理部4にプランナクラスファイルのインスタンス化を要求し、ホームノード用クラス管理部4がプランナクラスファイルをホームノード上でインスタンス化する(ステップ406)。
【0034】
続いて、インスタンス化されたプランナがスクリプトを生成すると(ステップ407)、エージェント1は、プランナが生成したスクリプトをエージェント内部へ取り込み(ステップ408)、ステップ404に戻る。
【0035】
一方、ステップ415において、スクリプト中に「スクリプト生成要求コマンド」が見つけられなかった場合には、ステップ417に進み、「移動コマンド」があるか否かが判断される。
そして、「移動コマンド」を見つけた場合には、エージェント1は、移動対象のノードへ移動する(ステップ410)。
【0036】
一方、「移動コマンド」が見つけられなかった場合は、エージェント1は、転送機能部13を利用して、現在そのエージェントがいるリモートノードのクラス管理部6に、対応するコマンドクラスのインスタンス化を要求する。
すなわち、リモートノード用クラス管理部6は、対応するコマンドクラスファイルのロードをホームノードのクラス転送部に要求し、そのコマンドクラスファイルをロードする。続いて、ロードされたコマンドクラスファイルを、リモートノード用クラス管理部のクラスインスタンス化部62がインスタンス化し(ステップ418)、インスタンス化されたコマンド実行部がコマンドを実行する(ステップ419)。
そして、スクリプト中のコマンドの実行がすべて終了したか否かが判断され(ステップ420)、終了していない場合には、ステップ414に戻る。
【0037】
続いて、具体例を用いて説明する。例えば、図5に示したように、ワークステーションA上に配置された1つのホームノード“nodeA ” と、機器制御用マイコンボード1,2,3上に配置された3つのリモートノード“node1,2,3 ”から構成されるエージェントシステムにおいて、以下のスクリプトを与えたエージェントをホームノード“nodeA ”で生成する。
【0038】
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 は条件分岐のための構文である。それ以外の命令は、コマンド実行部で実行されるコマンドである。
【0039】
上記のスクリプトを与えられて、“nodeA ”で生成されたエージェントは、最初にスクリプトインタプリタをエージェントに取り込む。その後、スクリプトインタプリタは上記のスクリプトを解釈する。
【0040】
1行目の命令は、移動命令であるので、エージェントは指定された“node1 ”に移動する。2行目の命令は、スクリプト変数state にコマンドcheckStateの実行結果を代入するという意味である。
【0041】
この命令を実行する時点で、エージェントはリモートノード“node1 ”に存在するので、エージェントの転送機能部がコマンドcheckStateに対応するコマンドクラスファイルcheckState.classをホームノードであるnodeA からロードし、インスタンス化した後、実行する。
以下に、checkState.classを定義するcheckState.java の例を示す。
すなわち、上例は、checkState.classをインスタンス化した後、エージェントの転送機能部はメソッドstart() を呼び出し、そのメソッドの帰り値を、スクリプトインタプリタがスクリプト変数state に格納することを意味している。
【0042】
次に、3行目の命令は、移動命令であるので、エージェントは“node2 ”へ移動する。
また、4行目の命令は、ifによる分岐命令であるので、スクリプト変数state の値によって次の動作は変化する。
すなわち、state が0であった場合(4〜5行目)は、コマンドreportState を、checkStateと同様にロードして実行する。
state が1であった場合(6〜8行目)は、node3 に移動し、コマンドcheckStateをロードして実行する。
state が2であった場合(9〜10行目)は、コマンドchangeState をロードして実行する。
【0043】
一方、state が上のいずれでもなかった場合は、スクリプト生成要求命令newgoal を実行する。この場合、スクリプトを生成するプランナを呼び出すため、エージェントはホームノードへ移動する。その後、エージェントの呼び出し機能部を用いて、newgoal の引数testNextを渡してプランナを実行する。
そして、エージェントは、プランナが返した新たなスクリプトを受け取り、スクリプトインタプリタがそのスクリプトを解釈し、エージェントの実行を続ける。
【0044】
[3.効果]
上記のように、本実施形態のエージェントシステムでは、リモートノード7にはリモートノード用クラス管理部6のみを設置するだけで済み、リモートノード側に要求する機能を最小限に抑えることができる。
また、リモートノード側においては、実行するコマンドに対応するコマンドクラスのみをロードするので、余分なネットワーク負荷をかけることがない。また、クラスファイルなどを設置する必要もないので、ファイルシステムが扱えないマシンをリモートノードとすることもできる。
このような形態のマシンは、機器に組み込む形のマイコンボードなどに多く見られるが、それらのボードをリモートノードとして扱うことで、本発明のエージェントシステムを適用し、機器の操作や解析などをエージェントに行わせることが可能になる。
【0045】
また、本実施形態においては、エージェントは、エージェントが動作中に常に用いるスクリプトインタプリタのみを持ち運び、まれに用いるプランナはホームノード上へ移動してから呼び出すという形態になっている。また、コマンド実行部は、コマンドを実行する必要がある場合に初めてロードを行うように構成されている。その結果、エージェントの移動によるネットワーク負荷と、ロードによって発生するネットワーク負荷の双方を最小限に抑えることができる。
また、エージェントが動作に必要とするすべてのクラスファイルをホームノード上で一括管理することができるため、エージェントシステムの管理、保守が容易になる。
【0046】
[4.他の実施形態]
なお、本発明は上述した実施形態に限定されるものではなく、次に例示するような他の実施形態をも含むものである。
例えば、本発明において、スクリプト生成部、スクリプト実行部、コマンド実行部のどれを呼び出して用いるか、または運搬して用いるか、またはロードして用いるかは自由である。
【0047】
上記実施の形態において、実行されるコマンドが多くのリモートノードで一致するならば、それらのコマンド実行部をエージェントが運搬することによって、ロードによるオーバヘッドを避けることができる。また、リモートノードにおいて新たなスクリプトを生成したい場合は、プランナクラスをロードすることによって、インフォを参照しない簡単なスクリプト生成を行うことができる。さらに、各リモートノードにスクリプトインタプリタを設置しておけば、エージェントはスクリプトのみを持ち運ぶ形態にすることができるので、ネットワーク負荷を大幅に減らすことができる。
【0048】
また、上記の実施形態においては、リモートノード上にはクラスファイルを設けていないが、ホームノードに限らず、任意のリモートノードにクラスファイルを設けることもできる。
なお、この場合、ホームノード及びリモートノードのクラス管理部は、共に図6に示したように構成される。すなわち、クラス管理部50は、クラスファイル格納部51、クラスインスタンス化部52及びクラス転送部53とから構成されている。また、クラス転送部53は、クラスロード部53a及びクラス送出部53bから構成されている。
【0049】
そして、他のノードにいるエージェントから、あるクラスのロード要求があり、そのクラスファイルが自らのノードのクラスファイル格納部51に格納されている場合には、クラス送出部53bを介して、前記クラスファイル格納部51に格納されたクラスファイル群の中から対応するクラスファイルを選択し、そのクラスファイルをエージェントのいるノードへ送出する。
【0050】
一方、エージェントから、他のノードのクラスファイルに格納されたあるクラスのロード要求があった場合は、前記クラスロード部53aが、そのクラスファイルがあるノードのクラス送出部にクラスファイルの送出要求をし、ロードされたクラスファイルを、前記クラスインスタンス化部52を介して、インスタンス化する。
【0051】
このように構成すれば、スクリプト生成部、スクリプト実行部、コマンド実行部及びそれらが用いる各種のソフトウェア、スクリプト生成に用いる情報等を、ネットワーク上の任意の場所に配置することができる。
【0052】
【発明の効果】
以上述べたように、本発明によれば、スクリプト生成部、実行部及びそれらが用いる各種のソフトウェアのノードへの配置を自由に行えるだけでなく、ネットワーク負荷を軽減し、さまざまなネットワーク環境へのエージェントシステムの適用を可能とすることができる。
【図面の簡単な説明】
【図1】本発明によるエージェントシステムの一実施形態の構成を示す概略図
【図2】図1に示したホームノード用クラス管理部の構成を示す図
【図3】図1に示したリモートノード用クラス管理部の構成を示す図
【図4】本発明のエージェントシステムの動作を示すフローチャート
【図5】本発明のエージェントシステムの具体例を示す図
【図6】本発明の他の実施形態におけるクラス管理部の構成を示す図
【図7】従来のエージェントシステムの構成を示す図
【図8】従来のエージェントシステムの他の構成を示す図
【符号の説明】
1…エージェント
2…プランナ
3…インフォ
4…ホームノード用クラス管理部
5…ホームノード
6…リモートノード用クラス管理部
7…リモートノード
11…呼び出し機能部
12…運搬機能部
13…転送機能部
14…スクリプト
15…スクリプトインタプリタ
41,51…クラスファイル格納部
42,52,62…クラスインスタンス化部
43,53,63…クラス転送部
43a…クラス送出部
53a…クラスロード部
53b…クラス送出部
63a…クラスロード部[0001]
BACKGROUND OF THE INVENTION
The present invention is based on an improvement in a technique for processing information existing distributed on a network using an agent, and in particular, increases the flexibility of arrangement of software used for processing by the agent on the network.
[0002]
[Prior art]
Conventionally, an agent system is known as a technique for processing information distributed on a computer network. An agent is a processing unit on software, and operates autonomously according to surrounding conditions. The agent system is a system in which such an agent performs processing such as information collection while moving as necessary on the nodes constituting the network. Here, a node is a logical unit constituting a network, and a plurality of nodes may exist on one machine, that is, a computer.
[0003]
As an example of this type of agent system, the agent generates a script from the contents of work given by the user using the script generation unit, and the script execution unit interprets and executes the script. There is a way to do.
Here, the script is an agent behavior program and specifically describes the contents such as which node to move to and what processing to perform. For example, a content such as “move to node A and send a copy of file a to the user's node, then move to node B and send a copy of file b to the user's node,” can be considered.
[0004]
FIG. 7 is a conceptual diagram of an agent using the above method. That is, the
[0005]
However, when such an agent moves on the network, the agent needs to carry all the software necessary for its operation, which slows the agent moving through the network and places more load on the network. The problem that occurred.
[0006]
As another example of the agent system, as shown in FIG. 8, the
[0007]
However, in this type of agent, it is necessary to place software necessary for generating and executing scripts on all nodes in advance. Therefore, when the script generation unit or execution unit must be updated to improve the agent operation, the script generation unit or execution unit on all nodes must be updated. It was.
In particular, when the number of nodes is large, such an update operation takes a very long time and the network load increases. In addition, the script generation unit or the execution unit may not be arranged on the node in advance due to the limitation of the node environment due to security or the like.
[0008]
[Problems to be solved by the invention]
As described above, in an agent system in which the arrangement of software such as a script generation unit and an execution unit is determined in advance, it is difficult to reduce the load on the network and improve the movement speed of the agent. However, there is a problem that it is difficult to move an agent on a network where there are many restrictions on software arrangement due to security reasons.
[0009]
The present invention has been proposed in order to solve the above-described problems of the prior art, and its purpose is to freely arrange a script generation unit, an execution unit, and various software used by the nodes in a node. In addition, the object is to reduce the network load and enable the application of the agent system to various network environments.
[0010]
[Means for Solving the Problems]
The present inventionAn agent system comprising a home computer and a plurality of remote computers connected to each other via a network, and an agent that is software that moves between the computers on the network, wherein the home computer generates a script Planner class file used for scripting, script interpreter class file used for interpreting and executing scripts, command class file used for executing commands included in scripts, and a first instance for instantiating each of these class files And a first class transfer unit that sends a command class file to at least one of the remote computers, and each of the plurality of remote computers A second class transfer unit that receives the command class file sent from the computer, and a second class instantiation unit that instantiates the command class file received by the second class transfer unit, The agent causes the home computer to function as a call function unit that selectively calls each class file arranged on the home computer, and causes the first class instantiation unit of the home computer to function as the call function. An instance of the script interpreter class file is sent to a first class instantiation unit of the home computer by causing the home computer to function as a script generation unit by instantiating the planner class file called by the unit. And requesting instantiation, taking the instantiated script interpreter and the script generated by the script generation unit into the agent, and functioning as a transport function unit that moves the agent together with the agent to one of the remote computers The first class transfer unit of the home computer functions as a transfer function unit that transfers a command class file arranged in the home computer to a destination computer moved by the transfer function unit, and the transfer The second instantiation unit of the destination computer moved by the function unit functions to instantiate the command class file transferred by the transfer function unit, and the destination computer moved by the transport function unit Instantiate In this way, it is made to function as a command execution unit that executes the command of the script incorporated in the agent.
[0011]
The present invention also includes a planner class file used for generating a script, a script interpreter class file used for interpreting and executing the script, a command class file used for executing commands included in the script, A home computer having a first class instantiation unit for instantiating each class file and a first class transfer unit for sending a command class file, and receiving the command class file sent from the home computer A plurality of remote computers each including a second class transfer unit and a second class instantiation unit that instantiates the command class file received by the second class transfer unit are connected to each other via a network. And the In between each computer on the network,
Each computer functions as a call function for selectively calling each class file arranged on the home computer, and the home computer instantiates the planner class file called by the call function unit. Scripts generated by the script generation unit by causing the computers to function as a script interpreter formed by instantiating a script interpreter class file called by the call function unit. And the script interpreter are loaded into the agent and function as a transport function unit that moves the agent to another computer together with the agent. An information processing method for moving a software agent that functions as a transfer function unit for transferring a deployed command class file from the home computer to a remote computer having an agent, and causing the agent to perform information processing based on the script In the home computer, the plan computer class file is called and instantiated to generate a script, and the home computer instantiates the script interpreter class file to generate a script interpreter; Capturing the generated script and the generated script interpreter into the software agent at the home computer; In the serial home computer, interprets the script, which was said generated by the script interpreter that the generated, when you run, the movement command is issued.If so, the step of moving the agent to one of the plurality of remote computers, and the command class file located on the home computer to the moved computer on the home computer A step of transferring, a step of instantiating the transferred command class file in the second instantiation unit of the moved computer, and a step of executing the instantiated command of the moved computer. And a step of executing a command of the script incorporated in the moved software agent.
[0019]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention (hereinafter referred to as embodiments) will be described with reference to the drawings.
[0020]
[1. Constitution]
That is, as shown in FIG. 1, the agent system of the present invention includes an
[0021]
Next, the
The class
[0022]
Further, upon receiving a request for instantiating a class from the
[0023]
The class transfer unit 43 provided in the
[0024]
Next, the
The class transfer unit 63 is composed of a class load unit 63a. When there is a load request for a class from the
[0025]
That is, when an agent moves to a
[0026]
Further, as shown in FIG. 1, the
A script 14 received as a result of calling the
[0027]
[2. Action]
The agent system according to this embodiment having the above-described configuration has the following operation. Here, FIG. 4 is a flowchart showing a processing procedure in the agent system of the present embodiment.
[0028]
That is, the
[0029]
Thereafter, the
If
[0030]
Subsequently, when the instantiated planner generates a script (step 407), the
[0031]
On the other hand, if the “script generation request command” is not found in the script in
If the “movement command” is found, the
[0032]
On the other hand, when the “movement command” is not found, the
Then, it is determined whether or not the execution of all commands in the script has been completed (step 413). If not completed, the process returns to step 404.
[0033]
On the other hand, when the
[0034]
Subsequently, when the instantiated planner generates a script (step 407), the
[0035]
On the other hand, if the “script generation request command” is not found in the script in
If the “movement command” is found, the
[0036]
On the other hand, if the “movement command” is not found, the
That is, the remote node
Then, it is determined whether or not the execution of all commands in the script has been completed (step 420). If not completed, the process returns to step 414.
[0037]
Then, it demonstrates using a specific example. For example, as shown in FIG. 5, one home node “nodeA” arranged on the workstation A and three remote nodes “node1,2” arranged on the device
[0038]
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
In this example, goto is an agent movement command, and newgoal is a new script generation request command. set is a script variable setting command, and if, then, else, and endif are syntaxes for conditional branching. Other instructions are commands executed by the command execution unit.
[0039]
Given the above script, the agent generated at “nodeA” first imports the script interpreter into the agent. The script interpreter then interprets the above script.
[0040]
Since the command on the first line is a move command, the agent moves to the designated “node1”. The command on the second line means that the execution result of the command checkState is substituted into the script variable state.
[0041]
At the time of executing this command, the agent exists in the remote node “node1”, so the agent transfer function loads the command class file checkState.class corresponding to the command checkState from the home node nodeA and instantiates it. Run later.
An example of checkState.java that defines checkState.class is shown below.
In other words, the above example means that after instantiating checkState.class, the agent transfer function calls the method start () and the script interpreter stores the return value of the method in the script variable state. .
[0042]
Next, since the command on the third line is a move command, the agent moves to “node2”.
Since the instruction on the fourth line is a branch instruction by if, the next operation changes depending on the value of the script variable state.
That is, if state is 0 (lines 4-5), the command reportState is loaded and executed in the same manner as checkState.
If state is 1 (lines 6-8), move to node3 and load and execute the command checkState.
If state is 2 (lines 9 to 10), the command changeState is loaded and executed.
[0043]
On the other hand, if the state is none of the above, the script generation request command newgoal is executed. In this case, the agent moves to the home node to call the planner that generates the script. After that, the planner is executed by passing the testNext argument of newgoal using the call function part of the agent.
Then, the agent receives a new script returned by the planner, and the script interpreter interprets the script and continues execution of the agent.
[0044]
[3. effect]
As described above, in the agent system of the present embodiment, only the remote node
On the remote node side, only the command class corresponding to the command to be executed is loaded, so that no extra network load is applied. In addition, since there is no need to install a class file, a machine that cannot handle the file system can be used as a remote node.
Machines of this type are often found in microcomputer boards that are built into devices, but by handling those boards as remote nodes, the agent system of the present invention is applied to perform device operations and analysis. Can be performed.
[0045]
In this embodiment, the agent carries only the script interpreter that is always used during the operation of the agent, and the rarely used planner is moved to the home node and then called. Further, the command execution unit is configured to perform loading only when it is necessary to execute a command. As a result, it is possible to minimize both the network load caused by the movement of the agent and the network load generated by the load.
In addition, since all class files required for the operation of the agent can be collectively managed on the home node, the agent system can be easily managed and maintained.
[0046]
[4. Other Embodiments]
In addition, this invention is not limited to embodiment mentioned above, The other embodiment which is illustrated next is included.
For example, in the present invention, any one of the script generation unit, the script execution unit, and the command execution unit can be called up, used for transportation, or loaded for use.
[0047]
In the above-described embodiment, if commands to be executed match in many remote nodes, overhead due to loading can be avoided by carrying the command execution unit by the agent. When a new script is to be generated at the remote node, simple script generation without referring to the information can be performed by loading the planner class. Furthermore, if a script interpreter is installed in each remote node, the agent can carry only the script, so that the network load can be greatly reduced.
[0048]
In the above embodiment, the class file is not provided on the remote node, but the class file can be provided not only on the home node but also on an arbitrary remote node.
In this case, the class management units of the home node and the remote node are both configured as shown in FIG. That is, the
[0049]
When there is a load request for a class from an agent in another node and the class file is stored in the class file storage unit 51 of the own node, the class is transmitted via the
[0050]
On the other hand, when there is a load request for a class stored in the class file of another node from the agent, the class load unit 53a sends a class file transmission request to the class transmission unit of the node where the class file exists. Then, the loaded class file is instantiated via the class instantiation unit 52.
[0051]
If comprised in this way, a script production | generation part, a script execution part, a command execution part, the various software which they use, the information used for script production | generation, etc. can be arrange | positioned in the arbitrary places on a network.
[0052]
【The invention's effect】
As described above, according to the present invention, not only can the script generation unit, the execution unit, and various software used by them be freely arranged on the nodes, but also the network load can be reduced, and various network environments can be reduced. An agent system can be applied.
[Brief description of the drawings]
FIG. 1 is a schematic diagram showing the configuration of an embodiment of an agent system according to the present invention.
FIG. 2 is a diagram showing a configuration of a home node class management unit shown in FIG. 1;
FIG. 3 is a diagram showing a configuration of a remote node class management unit shown in FIG. 1;
FIG. 4 is a flowchart showing the operation of the agent system of the present invention.
FIG. 5 is a diagram showing a specific example of the agent system of the present invention.
FIG. 6 is a diagram showing a configuration of a class management unit according to another embodiment of the present invention.
FIG. 7 is a diagram showing a configuration of a conventional agent system
FIG. 8 is a diagram showing another configuration of a conventional agent system
[Explanation of symbols]
1 ... Agent
2 ... Planner
3 ... info
4 ... Class management part for home node
5 ... Home node
6. Class management unit for remote nodes
7 ... Remote node
11 ... Call function part
12 ... Transport function
13. Transfer function part
14 ... Script
15 ... Script interpreter
41, 51 ... Class file storage
42, 52, 62 ... class instantiation unit
43, 53, 63 ... class transfer section
43a ... Class sending part
53a Class load part
53b ... Class sending part
63a Class load part
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13179098AJP3691962B2 (en) | 1998-05-14 | 1998-05-14 | Agent system and information processing method |
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13179098AJP3691962B2 (en) | 1998-05-14 | 1998-05-14 | Agent system and information processing method |
| Publication Number | Publication Date |
|---|---|
| JPH11327909A JPH11327909A (en) | 1999-11-30 |
| JP3691962B2true JP3691962B2 (en) | 2005-09-07 |
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP13179098AExpired - Fee RelatedJP3691962B2 (en) | 1998-05-14 | 1998-05-14 | Agent system and information processing method |
| Country | Link |
|---|---|
| JP (1) | JP3691962B2 (en) |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9619485B2 (en) | 2006-12-13 | 2017-04-11 | Canon Kabushiki Kaisha | Document retrieving apparatus, document retrieving method, program, and storage medium |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2002037268A2 (en)* | 2000-10-31 | 2002-05-10 | Unisys Corporation | Dialogue flow interpreter development tool |
| US7996507B2 (en) | 2002-01-16 | 2011-08-09 | International Business Machines Corporation | Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client |
| US7085831B2 (en) | 2002-01-16 | 2006-08-01 | International Business Machines Corporation | Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9619485B2 (en) | 2006-12-13 | 2017-04-11 | Canon Kabushiki Kaisha | Document retrieving apparatus, document retrieving method, program, and storage medium |
| Publication number | Publication date |
|---|---|
| JPH11327909A (en) | 1999-11-30 |
| Publication | Publication Date | Title |
|---|---|---|
| US7058954B1 (en) | System and method for facilitating dynamic loading of stub information to enable a program operating in one address space to invoke processing of a remote method or procedure in another space | |
| US6961926B2 (en) | System and method for distributed debugging and recording medium on which control programs are recorded | |
| US5748897A (en) | Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer | |
| US5818448A (en) | Apparatus and method for identifying server computer aggregation topologies | |
| US6393497B1 (en) | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system | |
| US20110004687A1 (en) | Information processing apparatus, information processing system, setting program transmission method and server setting program | |
| JPH0563821B2 (en) | ||
| JPH11175342A (en) | System and method for agent execution | |
| JP2004206712A (en) | Architecture of topology aware grid service scheduler | |
| JP2002505462A (en) | Method and apparatus for dynamic distributed computing over a network | |
| CN114546648A (en) | Task processing method and task processing platform | |
| Quang et al. | Device-driven on-demand deployment of serverless computing functions | |
| JP3691962B2 (en) | Agent system and information processing method | |
| Sridhar et al. | Dynamic module replacement in distributed protocols | |
| Beringer et al. | A language and system for composing autonomous, heterogeneous and distributed megamodules | |
| US6314462B1 (en) | Sub-entry point interface architecture for change management in a computer network | |
| JP2001502093A (en) | Path information based agent movement including movement of executable code | |
| EP1058880A1 (en) | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system | |
| CN111770005B (en) | Method and device for detecting availability of distributed system of Dubbo service framework | |
| JP3494545B2 (en) | Distributed computer system, computer and distributed processing method | |
| JP6502872B2 (en) | Network system, system management method and system management program | |
| KR100968376B1 (en) | Device and method for processing application between different processor, and application processor(ap) communication system comprising the same device | |
| JP2001067325A (en) | Method and system for managing distributed object | |
| JP2000215180A (en) | Data communication device, system and method | |
| Fortino et al. | Enhancing jade interoperability through the java-based interoperable mobile agent framework |
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal | Free format text:JAPANESE INTERMEDIATE CODE: A131 Effective date:20040615 | |
| A521 | Request for written amendment filed | Free format text:JAPANESE INTERMEDIATE CODE: A523 Effective date:20040816 | |
| A02 | Decision of refusal | Free format text:JAPANESE INTERMEDIATE CODE: A02 Effective date:20040921 | |
| A521 | Request for written amendment filed | Free format text:JAPANESE INTERMEDIATE CODE: A523 Effective date:20041020 | |
| A911 | Transfer to examiner for re-examination before appeal (zenchi) | Free format text:JAPANESE INTERMEDIATE CODE: A911 Effective date:20041130 | |
| A131 | Notification of reasons for refusal | Free format text:JAPANESE INTERMEDIATE CODE: A131 Effective date:20050311 | |
| RD02 | Notification of acceptance of power of attorney | Free format text:JAPANESE INTERMEDIATE CODE: A7422 Effective date:20050415 | |
| A521 | Request for written amendment filed | Free format text:JAPANESE INTERMEDIATE CODE: A523 Effective date:20050510 | |
| RD04 | Notification of resignation of power of attorney | Free format text:JAPANESE INTERMEDIATE CODE: A7424 Effective date:20050606 | |
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) | Free format text:JAPANESE INTERMEDIATE CODE: A01 Effective date:20050610 | |
| A61 | First payment of annual fees (during grant procedure) | Free format text:JAPANESE INTERMEDIATE CODE: A61 Effective date:20050617 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20090624 Year of fee payment:4 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20090624 Year of fee payment:4 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20100624 Year of fee payment:5 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20100624 Year of fee payment:5 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20110624 Year of fee payment:6 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20120624 Year of fee payment:7 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20120624 Year of fee payment:7 | |
| FPAY | Renewal fee payment (event date is renewal date of database) | Free format text:PAYMENT UNTIL: 20130624 Year of fee payment:8 | |
| LAPS | Cancellation because of no payment of annual fees |