(57)【要約】【課題】  複数の移動エージェントが、ネットワーク上のノードを所定の処理を実行しながら移動する移動エージェントシステムにおいて、サーバと各移動エージェントの間の通信量を低減する。【解決手段】  移動エージェントをリーダ２０１とメンバ２０２の２種類に分け、リーダ２０１と複数のメンバ２０２から成る移動エージェントグループ１２０を構成する。サーバ１０１からは、移動エージェントグループ１２０のリーダ２０１のみに指示２０３を送信し、リーダ２０１が移動エージェントグループ１２０の各メンバの複製である指示２０４を送信する。【選択図】  図２ 
2005227872.tif 000002
【特許請求の範囲】
【請求項１】
所定のプログラムおよびデータからなる移動エージェントが、当該移動エージェントの実行環境を備えた相互に通信可能な複数のノード間を、各ノードのコンピュータに所定の処理を実行させつつ移動する移動エージェントシステムを実現するためにサーバで実行される移動エージェント配信・管理プログラムであって、
前記移動エージェント配信・管理プログラムは、前記サーバのコンピュータに、
複数の移動エージェントから成る移動エージェントグループとして、リーダエージェントとメンバエージェントからなる移動エージェントグループを生成する生成ステップと、
前記生成ステップで生成した移動エージェントグループに属するリーダエージェント及びメンバエージェントをそれぞれ所定のノードに送信する送信ステップと、
前記送信ステップで生成したリーダエージェントの現在位置を取得する取得ステップと、
前記取得ステップで取得した前記リーダエージェントの現在位置に基づいて、前記移動エージェントグループ全体に対する指示を、当該移動エージェントグループに属するリーダエージェントにのみ送信する指示ステップとを実行させるためのプログラムであり、
前記リーダエージェントは、当該リーダエージェントが位置しているノードのコンピュータに、
前記サーバから前記指示を受けた時に、当該指示を応じた処理を実行するステップと、
当該リーダエージェントが属する移動エージェントグループ内のメンバエージェントの現在位置を取得するメンバ位置取得ステップと、
前記メンバ位置取得ステップで取得した前記メンバエージェントの現在位置に基づいて当該指示を当該リーダエージェントが属する移動エージェントグループ内のメンバエージェントに転送するステップとを実行させるためのプログラムを含んだ移動エージェントであり、
前記メンバエージェントは、
前記リーダエージェントから前記指示を受けた時に、その時点で当該メンバエージェントが位置しているノードのコンピュータに当該指示に応じた処理を実行させるためのプログラムを含んだ移動エージェントであることを特徴とする、移動エージェント配信・管理プログラム。
【請求項２】
前記生成ステップは、前記リーダエージェントと前記メンバエージェントに加えてさらにサブリーダエージェントを含んだ移動エージェントグループを生成するものであり、
前記サブリーダエージェントは、当該サブリーダエージェントが位置しているノードのコンピュータに、
前記リーダエージェントとの間で定期的に相互監視を行うステップと、
相互監視の結果、前記リーダエージェントに障害が起こったことが判明したときに、当該サブリーダエージェントをリーダ化するステップとを実行させるためのプログラムを含むことを特徴とする、請求項１に記載の移動エージェント配信・管理プログラム。
【請求項３】
請求項１〜２のいずれかに記載の移動エージェント配信・管理プログラムを記憶した記憶手段と、当該記憶手段から当該移動エージェント配信・管理プログラムを読み出して実行する処理手段とを備えた情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動エージェント配信・管理プログラムおよび移動エージェントシステムに関し、より特定的には、複数の移動エージェントが、ネットワーク上のノードを所定のプログラムを実行しながら移動する移動エージェントシステムに関する。
【背景技術】
【０００２】
移動エージェント（モバイルエージェント）は、ネットワーク上の各ノードを移動しながら所定の処理を実行するプログラムである。各ノードには移動エージェントを実行するための環境が搭載されている。よく知られる移動エージェントの実行環境には非特許文献１などで紹介されている米ＩＢＭ社が開発した、Ｊａｖａ（Ｒ）言語をベースとしたＡｇｌｅｔｓ（Ｒ）などがある。Ａｇｌｅｔｓ（Ｒ）は、移動エージェントの生成や移動といった基本的な制御をサポートしている。
【０００３】
ここで、複数の移動エージェントが、ネットワーク上のノードを所定のプログラムを実行しながら移動する技術がある。例えば、特許文献１では、複数の移動エージェントが、相互に監視をしながらノード間を移動して各ノードの障害監視を行う方法が述べられている。
この方法において、サーバから各移動エージェントに指示を伝えるためには、サーバから各移動エージェントに個別に指示を送信する必要がある。
【０００４】
図１７は、従来の移動エージェントシステムにおいて、サーバから各移動エージェントに指示を伝える状況を示した図である。図１７は、移動エージェントグループ１７０４を形成する複数の移動エージェント１７０３が、ネットワーク上のサーバ１７０１からノード１７０２に移動したときの状態を示している。この状態において、サーバ１７０１からの指示１７０５を各移動エージェント１７０３に伝える必要がある場合、サーバ１７０１は、各移動エージェント１７０３に個別に指示１７０５を送信する必要がある。
【特許文献１】特開２００３−３０１６１号公報
【非特許文献１】小野良司、黒田正博，「Ｊａｖａ（Ｒ）の世界を広げる最新エージェントテクノロジー」，月刊ジャバワールド１９９７年１月号，ＩＤＧジャパン
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のように、従来の移動エージェントシステムではサーバから各移動エージェントに個別に指示を送信する必要があるしたがって、移動エージェントの数が少ない場合には特に問題は無いが、移動エージェントの数が増えるに従って、サーバから各移動エージェントに指示を出すときのサーバの処理負荷や、サーバと移動エージェント間の通信量が増大するという問題点がある。
【０００６】
それゆえに、本発明の目的は、サーバから複数の移動エージェントへ指示を送る場合において、移動エージェントの数が増えたとしてもサーバの処理負荷や通信量が増加しない移動エージェントシステムを実現することである。
【課題を解決するための手段】
【０００７】
本発明は、上記のような目的を達成するために、以下のような構成を採用した。なお、括弧内の参照符号等は、本発明の理解を助けるために、図面との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００８】
第１の発明は、所定のプログラムおよびデータからなる移動エージェント（２０１、２０２）が、移動エージェントの実行環境を備えた相互に通信可能な複数のノード（１０２〜１０５）間を、各ノードのコンピュータ（１２３）に所定の処理を実行させつつ移動する移動エージェントシステムを実現するためにサーバ（１０１）で実行される移動エージェント配信・管理プログラムである。
移動エージェント配信・管理プログラム（１１８）は、サーバのコンピュータ（１１４）に、移動エージェントグループ（１２０）を生成する生成ステップ（Ｓ１０２）と、移動エージェントグループに属するリーダエージェント（２０１）及びメンバエージェント（２０２）をそれぞれ所定のノードに送信する送信ステップ（Ｓ１０４）と、リーダエージェントの現在位置を取得する取得ステップ（Ｓ１０７）と、移動エージェントグループ全体に対する指示をこの移動エージェントグループに属するリーダエージェントにのみ送信する指示ステップ（Ｓ１１０）とを実行させるためのプログラムである。
リーダエージェント（２０１）は、サーバから指示を受けた時に、その時点で自身が位置しているノードのコンピュータ（１２３）に、その指示に応じた処理を実行するステップ（Ｓ２０７）と、自身が属する移動エージェントグループ内のメンバエージェントの現在位置を取得するメンバ位置取得ステップ（Ｓ２０３）と、サーバからの指示を自身が属する移動エージェントグループ内のメンバエージェントに転送するステップ（Ｓ２０６）とを実行させるためのプログラムを含んだ移動エージェントである。
メンバエージェント（２０２）は、リーダエージェントから上記指示を受けた時に、その時点で自身が位置しているノードのコンピュータ（１２３）にその指示に応じた処理を実行させる（Ｓ３０６）ためのプログラムを含んだ移動エージェントである。
【０００９】
第２の発明は、第１の発明において、生成ステップは、リーダエージェントとメンバエージェントに加えてさらにサブリーダエージェント（１２０２）を含んだ移動エージェントグループを生成するものである。サブリーダエージェントは、サブリーダエージェントが位置しているノードのコンピュータに、リーダエージェントとの間で定期的に相互監視を行うステップ（Ｓ１４０１）と、相互監視の結果、リーダエージェントに障害が起こったことが判明したときに、サブリーダエージェントをリーダ化するステップ（Ｓ１４０３）とを実行させるためのプログラムを含む。
なお、「サブリーダエージェントをリーダ化する」とは、サブリーダエージェントがリーダエージェントとして機能するようにすることであり、この結果、サブリーダエージェントは、移動エージェントグループ内の新たなリーダエージェントとなってリーダエージェントの処理を遂行することとなる。「サブリーダエージェントをリーダ化する」方法の一例として、サブリーダエージェント内に設けられた、サブリーダエージェントがリーダエージェントとして機能すべきか否かを制御するためのフラグ（１２０１）を操作することが挙げられる。
【発明の効果】
【００１０】
本発明によれば、移動エージェントグループの各移動エージェントに個別に指示を送信することなく、グループのリーダのみに指示を送信し、リーダがその移動エージェントグループの各メンバに同じ指示を送信することで、サーバの処理負荷を削減でき、また、サーバと各移動エージェント間の通信量が削減できる。
【発明を実施するための最良の形態】
【００１１】
（第１の実施形態）
以下、本発明の実施の形態について、図面を参照して説明する。
【００１２】
図１は、本発明の一実施形態に係る移動エージェントシステムの構成を示した図である。図１において、移動エージェントシステムは、移動エージェントを管理するサーバ１０１と、移動エージェントの実行環境となるノード１０２、１０３、１０４、１０５で構成される。サーバ１０１およびノード１０２、１０３、１０４、１０５は、ネットワーク１００を介して通信可能に接続されている。ここで、サーバ１０１は、ネットワーク上のノードの一つでもある。
【００１３】
サーバ１０１は、二次記憶装置１１１、主記憶装置１１２、指示装置１１３、中央処理装置１１４、通信装置１１５で構成される。サーバ１０１は、通信装置１１５を通じてネットワーク１００に接続される。二次記憶装置１１１には、移動エージェントデータ１１６などが配置される。主記憶装置１１２には、全リーダ位置管理データ１１７、移動エージェント配信・管理プログラム１１８などが配置される。なお、移動エージェント配信・管理プログラム１１８は、予めサーバ１０１に記憶されていても構わないし、コンピュータ読み取り可能な記録媒体からサーバ１０１に読み込まれても構わないし、通信回線を通じて外部よりサーバ１０１に供給されても構わない。指示装置１１３は、移動エージェントグループ１２０に対する指示を入力するための装置である。この指示は、指示装置１１３に事前に登録されたＩＤの中から選択することで入力される。
【００１４】
移動エージェントデータ１１６は、移動エージェントグループ１２０の生成に必要なデータである。全リーダ位置管理データ１１７は、移動エージェントグループ１２０のリーダである移動エージェントの現在位置を管理するためのデータであって、リーダの移動に伴って適宜に更新される。
【００１５】
移動エージェント配信・管理プログラム１１８は、移動エージェントデータ１１６に基づいて移動エージェントを作成し、作成した移動エージェントを管理するためのプログラムである。生成された各移動エージェントは、通信装置１１５を通じてそれぞれの最初の移動先ノードに配信され、その後、ノード間を適宜に移動する。移動エージェント配信・管理プログラム１１８に基づいて生成される移動エージェントとしては、２種類の移動エージェント（リーダおよびメンバ）があり、１つのリーダと１つ以上のメンバとにより１つの移動エージェントグループが構成される。移動エージェントグループは複数生成されてもよい。すべての移動エージェントが配信された後、リーダがノード間を移動するたびに、その旨がリーダからサーバ１０１に通知される。サーバ１０１では、この通知を受けて、全リーダ位置管理データ１１７が更新される。そして、指示装置１１３から指示が入力されると、サーバ１０１から移動エージェントグループ１２０のリーダにその指示が送信される。
【００１６】
ノード１０２は、二次記憶装置１２１、主記憶装置１２２、中央処理装置１２３、通信装置１２４で構成される。主記憶装置１２２には、移動エージェント送受信プログラム１２５などが配置される。
【００１７】
移動エージェント送受信プログラム１２５は、サーバ１０１、あるいは他のノード１０３、１０４、１０５から送信された移動エージェントを通信装置１２４を通じて受信して、移動エージェントが保持する主プログラムを実行するためのプログラムである。
【００１８】
図２は、本発明の実施の形態におけるシステムの一連の処理手順を示した図である。
まず、サーバ１０１において、移動エージェントデータ１１６に基づきリーダ２０１となる移動エージェントと、メンバ２０２となる移動エージェントが生成され、それらは移動エージェントグループ１２０を形成する。ここでは、説明を簡単にするため移動エージェントグループ１２０のメンバ２０２が１つであるとする。また、移動エージェントグループの数も一つであるとする。
【００１９】
リーダ２０１およびメンバ２０２は、事前に設定された経路データに従って、サーバ１０１から次のノード１０２、１０３にそれぞれ移動し、さらにその次のノード１０４、１０５にそれぞれ移動する。リーダ２０１とメンバ２０２は、各ノードに移動するたびに所定のサービスプログラムを実行する。ここで、リーダ２０１とメンバ２０２が互いになるべく近い距離を保ちながら移動するように、それぞれの経路データが設定されていることが望ましい。
【００２０】
ここで、リーダ２０１とメンバ２０２が、それぞれノード１０４、１０５に移動したときに、サーバ１０１の指示装置１１３から指示が入力されたとすると、移動エージェント配信・管理プログラム１１８（より正確には、移動エージェント配信・管理プログラム１１８に基づいて動作するサーバ１０１の中央処理装置１１４）は、全リーダ位置管理データ１１７を参照してリーダ２０１が現在存在しているノード１０４の位置を特定し、通信装置１１５を用いて指示２０３をノード１０４に存在するリーダ２０１に送信する。
指示２０３を受信したリーダ２０１（より正確には、リーダ主プログラム３０１に基づいて動作するノード１０４の中央処理装置１２３）は、指示２０３をコピーして指示２０４を作成して移動エージェントグループ１２０のメンバ２０２に送信するとともに、指示２０３に基づき特定の処理を実行する。一方、指示２０４を受信したメンバ２０２（より正確には、メンバ主プログラム３０２に基づいて動作するノード１０５の中央処理装置１２３）は、指示２０４に基づき特定の処理を実行する。ここで、特定の処理は、指示２０３、２０４の内容に対して事前に取り決められた処理であり、リーダ２０１とメンバ２０２で同一の処理であるとする。
【００２１】
このシステムの応用例として、ソフトウェア更新システムがあげられる。更新の対象となるソフトウェアとしては、ノードを構成する各装置を制御するプログラムであるファームウェアなどが考えられる。ファームウェアは、ノードの二次記憶装置１２１に配置され、ノードが起動する時に中央処理装置１２３などによって読み込まれる。移動エージェント（リーダ２０１およびメンバ２０２）は、サービスデータとしてファームウェアを保持し、各ノードに移動した時に実行されるサービスプログラムの処理中で、そのファームウェアを二次記憶装置１２１に配置する。この時、二次記憶装置１２１にもともとあった古いファームウェアは、新しいものに置き換えられるか、バックアップ領域にコピーされる。
【００２２】
ソフトウェア更新を行う際には、ソフトウェア更新中における処理の停止やロールバックなどの機能が必要とされる。例えば、あるノードにおいて更新処理の途中でファームウェアの更新に失敗した場合などは、一度、更新処理を停止し、それまでに更新したノードのファームウェアを元に戻す操作（ロールバック）などを行う必要がある。処理の停止やロールバックを行うためには、各移動エージェントにその指示を伝える必要がある。
このような場合に、本発明によれば、サーバは、処理の停止等の指示を各移動エージェントに個別に伝えることなく、リーダのみにその指示を伝えるだけで同様の処理ができ、且つ、サーバとノード間の通信量も削減できる。
【００２３】
以下、図３〜図７を用いて、本実施形態において利用される各種データおよびプログラムの詳細を説明する。
図３は、移動エージェントデータ１１６のデータ構造の一例を示した図である。移動エージェントデータ１１６は、リーダ主プログラム３０１、メンバ主プログラム３０２、サービスプログラム３０３、サービスデータ３０４、指示処理プログラム情報３０５の集合、グループ運用情報３０６の集合で構成される。リーダ主プログラム３０１は、リーダ２０１を制御するためのプログラムである。メンバ主プログラム３０２は、メンバ２０２を制御するためのプログラムである。サービスプログラム３０３は、移動エージェントがノードに移動したときに実行されるプログラムである。サービスデータ３０４は、サービスプログラム３０３を実行するときに用いられるデータである。指示処理プログラム情報３０５の集合は、移動エージェントが指示を受信したときに実行されるプログラムのＩＤとプログラムの集合である。グループ運用情報３０６は、移動エージェントグループ１２０を運用するために必要なデータである。
【００２４】
各指示処理プログラム情報３０５は、プログラムを識別するための指示処理プログラムＩＤ３１１と、実際に実行されるプログラムである指示処理プログラム３１２で構成される。指示処理プログラムＩＤ３１１は、事前にサーバ１０１の指示装置１１３に登録された指示のＩＤと対応するものとする。
【００２５】
各グループ運用情報３０６は、移動エージェントグループ１２０に割り当てられる固有の番号であるグループＩＤ３２１と、リーダ経路情報３２２と、メンバ経路情報３２３の集合とで構成される。
【００２６】
リーダ経路情報３２２は、リーダとなる移動エージェントが順に移動するノードの順序を表す経路データ３３１である。経路データ３３１は、図４に示すように、各ノードの位置を示すアドレス４０１の配列であり、移動エージェントは、この配列に従って、経路データ３３１の先頭に格納されたアドレスから順番にノードを巡回する。
【００２７】
各メンバ経路情報３２３は、移動エージェントグループ１２０の各メンバに割り当てられる固有のＩＤであるメンバＩＤ３３２と、メンバとなる移動エージェントが順に移動するノードの順序を表す経路データ３３１で構成される。
【００２８】
図５は、全リーダ位置管理データ１１７のデータ構造の一例を示した図である。
全リーダ位置管理データ１１７は、リーダ位置管理情報５０１の集合である。そして、各リーダ位置管理情報５０１は、各リーダの属するグループのグループＩＤ３２１と、当該リーダの現在いるノードのアドレス４０１より成っている。
【００２９】
図６は、リーダ２０１の構成の一例を示した図である。
リーダ２０１の主体は、リーダ主プログラム３０１である。リーダ主プログラム３０１は、ノードの移動エージェント送受信プログラム１２５によって受信され、主記憶装置１２２に配置されて実行される。また、リーダ２０１は、グループＩＤ３２１と、経路データ３３１と、サーバの位置を記憶するために用いられるサーバアドレス６０１と、移動エージェントグループ１２０の各メンバの位置を記憶するために用いられるメンバ位置管理データ６０２と、サービスプログラム３０３と、サービスデータ３０４と、指示処理プログラム情報３０５の集合とを保持する。
【００３０】
メンバ位置管理データ６０２は、リーダ２０１と同一の移動エージェントグループに属する各メンバ２０２の、メンバＩＤ３３２とアドレス４０１との組の集合から成る。
【００３１】
ここで、サービスプログラム３０３は、リーダ２０１がノードに移動したときにリーダ主プログラム３０１により起動される。サービスプログラム３０３の実行時には、サービスデータ３０４が用いられる。例えば、ソフトウェア更新を行うサービスでは、サービスプログラム３０３は、サービスデータ３０４であるファームウェアを二次記憶装置などに配置する処理などを実行する。
【００３２】
図７は、メンバ２０２の構成の一例を示した図である。
メンバ２０２の主体は、メンバ主プログラム３０２である。メンバ主プログラム３０２は、ノードの移動エージェント送受信プログラム１２５によって受信され、主記憶装置１２２に配置されて実行される。また、メンバ２０２は、メンバＩＤ３３２と、経路データ３３１と、自身が属する移動エージェントグループ１２０のリーダ２０１の位置を表すリーダアドレス７０１と、サービスプログラム３０３と、サービスデータ３０４と、指示処理プログラム情報３０５の集合とを保持する。
【００３３】
以下、図８〜図１０を用いて、本発明の実施の形態における処理手順の詳細を示す。
【００３４】
図８は、サーバ１０１における移動エージェント配信・管理プログラム１１８による配信・管理処理のフローチャートである。まず、中央処理装置１１４は、移動エージェントデータ１１６から、最初のグループ運用情報３０６を読み込む（ステップＳ１０１）。
【００３５】
次に、中央処理装置１１４は、移動エージェントグループを作成する（ステップＳ１０２）。
このステップＳ１０２の処理をより具体的に説明すると、まず、中央処理装置１１４は、通信装置１１５からアドレスを取り出してサーバアドレス６０１を作成し、さらにグループ運用情報３０６の各メンバ経路情報３２３からメンバＩＤ３３２と経路データ３３１における最初のアドレス４０１を取り出して、メンバ位置管理データ６０２を作成する。そして、移動エージェントデータ１１６から、リーダ主プログラム３０１と、サービスプログラム３０３と、サービスデータ３０４と、指示処理プログラム情報３０５を読み込み、グループ運用情報３０６のグループＩＤ３２１と、リーダ経路情報３２２である経路データ３３１と、前に作成したサーバアドレス６０１およびメンバ位置管理データ６０２とを組み合わせて、リーダ２０１となる移動エージェントを生成する。  次に、中央処理装置１１４は、グループ運用情報３０６のリーダ経路情報３２２における最初のアドレス４０１を取り出し、リーダアドレス７０１を作成する。そして、グループ運用情報３０６のメンバ経路情報３２３ごとにメンバＩＤ３３２と経路データ３３１を取り出して、取り出したメンバＩＤ３３２および経路データ３３１と、移動エージェントデータ１１６に含まれるメンバ主プログラム３０２と、サービスプログラム３０３と、サービスデータ３０４と、指示処理プログラム情報３０５と、前に作成したリーダアドレス７０１とを組み合わせて、メンバ２０２となる移動エージェントの集合を作成する。
【００３６】
次に、中央処理装置１１４は、前に読み出したグループＩＤ３２１とリーダアドレス７０１を組み合わせ、リーダ位置管理情報５０１を作成し、全リーダ位置管理データ１１７に追加する（ステップＳ１０３）。そして、通信装置１１５を用いて、上記ステップＳ１０２で生成した移動エージェントをそれぞれの最初の移動先となるノードに配信する（ステップＳ１０４）。
【００３７】
次に、すべてのグループ運用情報３０６について、移動エージェントの配信が終了したかチェックし、まだ終了していなければ、次のグループ運用情報３０６についてステップＳ１０１に戻って移動エージェントの生成と配信を実行する（ステップＳ１０５）。
【００３８】
すべてのグループ運用情報３０６について、移動エージェントの生成と配信が終了すると、イベント発生待ちに入る（ステップＳ１０６）。
【００３９】
ここで、通信装置１１５からリーダ移動通知を受信した場合（ステップＳ１０７でＹＥＳ）、リーダ移動通知に含まれるグループＩＤ３２１に基づいて全リーダ位置管理データ１１７を検索し、該当するリーダ位置管理情報５０１を特定する。そして、同じくリーダ移動通知に含まれる当該リーダの移動先アドレスで、リーダ位置管理情報５０１のアドレス４０１を置き換え（ステップＳ１０８）、ステップＳ１０６に戻る。
【００４０】
また、指示装置１１３から指示が入力された場合（ステップＳ１０９でＹＥＳ）、通信装置１１５を用いて、全リーダ位置管理データ１１７で管理されている各移動エージェントグループのリーダのアドレス４０１に、入力された指示に対応する指示処理プログラムＩＤ３１１を送信し（ステップＳ１１０）、ステップＳ１０６に戻る。
【００４１】
図９は、リーダ主プログラム３０１による制御処理のフローチャートである。リーダ２０１がノードに移動すると、ノードの中央処理装置１２３は、リーダ２０１に含まれるリーダ主プログラム３０１に従って下記の処理を実行する。
【００４２】
中央処理装置１２３は、まずサービスプログラム３０３を起動して、サービス処理を開始する（ステップＳ２０１）。そして、イベント発生待ちに入る（ステップＳ２０２）。
【００４３】
ここで、通信装置１２４からメンバ移動通知を受信した場合（ステップＳ２０３でＹＥＳ）、中央処理装置１２３は、メンバ移動通知に含まれるメンバＩＤ３３２に基づいて、メンバ位置管理データ６０２を検索し、該当するメンバＩＤ３３２とアドレス４０１の組を特定する。そして、同じくメンバ移動通知に含まれる当該メンバの移動先アドレスによって、特定した組のアドレス４０１を置き換え（ステップＳ２０４）、ステップＳ２０２に戻る。
【００４４】
また、通信装置１２４から指示２０３を受信した場合（ステップＳ２０５でＹＥＳ）、中央処理装置１２３は、通信装置１２４を用いて、メンバ位置管理データ６０２に含まれるすべてのアドレス４０１に、指示２０３をコピーして作成した指示２０４を送信し（ステップＳ２０６）、さらに、指示処理プログラム情報３０５の集合から、指示２０３に含まれる指示処理プログラムＩＤ３１１に該当する指示処理プログラム３１２を検索して実行し（ステップＳ２０７）、ステップＳ２０２に戻る。
【００４５】
また、ステップＳ２０１で開始したサービス処理が完了した場合（ステップＳ２０８でＹＥＳ）、中央処理装置１２３は、リーダ２０１に含まれる経路データ３３１を参照して、次に移動すべきノードがあるかチェックし（ステップＳ２０９）、移動すべきノードがあれば、サーバアドレス６０１およびメンバ位置管理データ６０２を参照してサーバ１０１および移動エージェントグループ１２０の各メンバ２０２にリーダ移動通知を送信して、リーダ２０１の次の移動先アドレスを知らせる（ステップＳ２１０）。このリーダ移動通知には、グループＩＤ３２１と、リーダ２０１の移動先アドレスが含まれる。そして、中央処理装置１２３は、リーダ２０１を次のノードに移動させ（ステップＳ２１１）、処理を終了する。そして、この次のノードにおいて、同様の処理が実行されることになる。ステップＳ２０９において、次に移動すべきノードがなければ、処理を終了する。
【００４６】
図１０は、メンバ主プログラム３０２による制御処理のフローチャートである。メンバ２０２がノードに移動すると、ノードの中央処理装置１２３は、メンバ２０２に含まれるメンバ主プログラム３０２に従って下記の処理を実行する。
【００４７】
中央処理装置１２３は、まずサービスプログラム３０３を起動して、サービス処理を開始する（ステップＳ３０１）。そして、イベント発生待ちに入る（ステップＳ３０２）。
【００４８】
ここで、通信装置１２４からリーダ移動通知を受信した場合（ステップＳ３０３でＹＥＳ）、中央処理装置１２３は、リーダ移動通知に含まれるアドレスによって、リーダアドレス７０１を置き換え（ステップＳ３０４）、ステップＳ３０２に戻る。
【００４９】
また、リーダ２０１から指示２０４を受信した場合（ステップＳ３０５でＹＥＳ）、指示処理プログラム情報３０５の集合から、指示２０４に含まれる指示処理プログラムＩＤ３１１に該当する指示処理プログラム３１２を検索して実行し（ステップＳ３０６）、ステップＳ３０２に戻る。
【００５０】
また、ステップＳ３０１で開始したサービス処理が完了した場合（ステップＳ３０７でＹＥＳ）、中央処理装置１２３は、メンバ２０２に含まれる経路データ３３１に次のノードがあるかチェックし（ステップＳ３０８）、移動すべきノードがあれば、リーダアドレス７０１を参照して移動エージェントグループ１２０のリーダ２０１にメンバ移動通知を送信して、メンバ２０２の次の移動先アドレスを知らせる（ステップＳ３０９）。このメンバ移動通知には、メンバＩＤ３３２と、メンバ２０２の移動先アドレスが含まれる。そして、中央処理装置１２３は、メンバ２０２を次のノードに移動させ（ステップＳ３１０）、処理を終了する。そして、この次のノードにおいて、同様の処理が実行されることになる。ステップＳ３０８において、次に移動すべきノードがなければ、処理を終了する。
【００５１】
なお、本発明の実施の形態では、メンバ２０２の経路データ３３１をメンバ２０２自身が保持しているが、本発明はこれに限らない。例えば、各メンバ２０２の経路データ３３１をリーダ２０１に保持させ、リーダ２０１（より正確には、リーダ主プログラム３０１に基づいて動作する中央処理装置１２３）が各メンバ２０２の移動先を各メンバ２０２に適宜通知するようにしてもよい。
更に、各メンバ２０２にサービスプログラム３０３を複数保持させ、リーダ２０１には、各メンバ２０２の経路データ３３１と共に各メンバ２０２が次の移動先で実行すべきサービスプログラム３０３を特定するためのＩＤを複数保持させ、リーダ２０１が、各メンバ２０２に対して、各メンバ２０２の移動先と共に、次の移動先でメンバ２０２が実行すべきサービスプログラム３０３を指示するようにしてもよい。
更には、リーダ２０１は、各メンバ２０２からサービス処理の実行結果を受け取り、その結果によって、各メンバ２０２の次の移動先や、各メンバ２０２が実行すべきサービスプログラム３０３を随時判断し、その判断結果をメンバ２０２に通知するようにしてもよい。
【００５２】
また、移動エージェント（リーダ２０１およびメンバ２０２）が経路データ３３１を持たずに、近傍のノードを探索しながら移動するようにしてもよい。
【００５３】
また、本発明の実施の形態では、サーバ１０１からリーダ２０１に指示を送信しているが、リーダ２０１のアドレスさえ特定できれば、サーバ１０１以外の任意のノード１０２、１０３、１０４、１０５からでもリーダ２０１に指示を送信する（結果として、移動エージェントグループ１２０に含まれる全ての移動エージェントに指示が伝わる）ことができる。
【００５４】
また、ノード１０２の構成に二次記憶装置１２１が含まれているが、二次記憶装置１２１を持たない構成でもよい。
【００５５】
更に、移動エージェント配信・管理プログラム１１８は、移動エージェントグループ１２０内に、新たにサブリーダとなる移動エージェント（以下、単にサブリーダと称す。）を設ける機能を有していてもよい。この場合、サブリーダとリーダ２０１とが定期的に相互監視を行い、リーダ２０１が位置しているノードに障害等が起こりサーバ１０１からリーダ２０１への指示が行えない場合等に、サブリーダが新たなリーダとなってサーバ１０１との通信及び当該移動エージェントグループ１２０の管理を引き継ぐことにより、円滑な処理が可能となる。以下、図１１から図１４を用いて、上記サブリーダとリーダの相互監視処理の一例を説明する。
【００５６】
図１１は、移動エージェントグループ１２０にサブリーダを設ける場合におけるリーダ１１０３のソフトウェア構成の一例を示した図である。
リーダフラグ１１０１は、各移動エージェントのリーダ・サブリーダ・メンバの区別に用いられ、この値によって、各移動エージェントの主プログラムがリーダ用、メンバ用とに切り替わるようになっているものとする。本例では、リーダの場合は１、サブリーダの場合は２、メンバの場合は３という数字が初期値として入るものとする。サブリーダアドレス１１０２は、サブリーダが現在いるノードのアドレスである。
【００５７】
図１２は、移動エージェントグループ１２０にサブリーダを設ける場合におけるサブリーダ１２０２のソフトウェア構成の一例を示した図である。サブリーダ１２０２は、図７で示されるメンバ２０２のソフトウェア構成に、初期値として２が格納されているリーダフラグ１２０１と、サーバアドレス６０１と、メンバ位置管理データ６０２を加えたものに相当する。
【００５８】
図１６は、移動エージェントグループ１２０にサブリーダを設ける場合におけるメンバ１６０２のソフトウェア構成の一例を示した図である。メンバ１６０２は、図７で示されるメンバ２０２のソフトウェア構成に、初期値として３が格納されているリーダフラグ１６０１を加えたものに相当する。
【００５９】
なお、ここでは、リーダ主プログラム３０１およびメンバ主プログラム３０２には、図１３および図１４のフローチャートに示す相互監視処理手順を実行するためのプログラムコードが新たに追加されているものとする。
【００６０】
図１３は、リーダ１１０３における相互監視処理の一例のフローチャートである。
リーダ１１０３（より正確には、リーダ主プログラム３０１に基づいて動作する中央処理装置１２３）は、サブリーダアドレス１１０２に格納されているアドレス（すなわち、サブリーダ１２０２の現在のアドレス）に対して定期的に生存確認用パケットを送信する（ステップＳ１３０１）。そして、サブリーダ１２０２から応答があれば、ステップＳ１３０１に戻る（ステップＳ１３０２）。一方、サブリーダ１２０２からの応答がない場合は、サブリーダ１２０２またはサブリーダ１２０２が現在いるノードに何らかの障害が発生したと考えられるため、メンバ位置管理データ６０２より任意のメンバ１６０２を選択し、当該メンバ１６０２のアドレス４０１に、サブリーダ化の指示とメンバ位置管理データ６０２を送信する（ステップＳ１３０３）。その後、サブリーダアドレス１１０２の値を、当該メンバのアドレス４０１に置き換える（ステップＳ１３０４）。
【００６１】
図１４は、サブリーダ１２０２における相互監視処理の一例のフローチャートである。
サブリーダ１２０２（より正確には、リーダ主プログラム３０１に基づいて動作する中央処理装置１２３）は、リーダアドレス７０１に格納されているアドレス（すなわち、リーダ１１０３の現在のアドレス）に対して定期的に生存確認用パケットを送信する（ステップＳ１４０１）。そして、リーダ１１０３から応答があれば、ステップＳ１４０１に戻る（ステップＳ１４０２）。一方、リーダ１１０３からの応答がない場合は、リーダ１１０３またはリーダ１１０３が現在いるノードに何らかの障害が発生したと考えられるため、自身をリーダ化すべく、リーダフラグ１２０１の値を１とする（ステップＳ１４０３）。その後、自アドレスを通信装置１２４から取得し、自らがリーダになった旨と共に、当該自アドレスをサーバ１０１及びメンバ位置管理データ６０２に含まれるすべてのアドレス４０１に送信する（ステップＳ１４０４）。こうしてリーダ化したサブリーダ１２０２は、以降、リーダ主プログラム３０１を主体とした移動エージェントとしてノード間を移動する。そして、新リーダ（元サブリーダ）１２０２は、メンバ位置管理データ６０２より任意のメンバを選択し、当該メンバのアドレス４０１にサブリーダ化の指示と、サーバアドレス６０１の値と、メンバ位置管理データ６０２を送信する（ステップＳ１４０５）。
ここで、当該指示を受け取ったメンバは、リーダフラグ１６０１の値を２にし、サーバアドレス６０１とメンバ位置管理データ６０２を保持して新たなサブリーダとなり、リーダとの相互監視処理を開始する。その後、新リーダ（元サブリーダ）１１０３はサブリーダアドレス１１０２の格納領域を作成し、ここに当該メンバのアドレス４０１を格納する（ステップＳ１４０６）。そして、新たなリーダとしての処理（すなわち、図１３のフローチャートに示される処理）を開始する。
【００６２】
この相互監視処理により、リーダが位置しているノードに障害が起こり、リーダに実行障害が発生した場合でも、サブリーダがリーダに昇格することによってサーバからの指示を各メンバに行き渡らせることができる。
【００６３】
また、リーダの巡回先を減らして、リーダにはグループ管理を主にさせてもよい。例えば、巡回先をいくつかの地域単位に分け、任意の地域に移動した場合に、リーダは一箇所のノードに留まり、各メンバの巡回先や実行プログラムの判断・通知や、各メンバの障害監視等を主に行い、当該地域での巡回が終わった時点で、リーダを各グループメンバと共に次の地域に移動させてもよい。
【００６４】
（変形例）
なお、移動エージェントシステムの特色の一つとして、移動エージェント自身の複製による処理の並列実行や負荷分散等がある。このような場合に、複製したメンバの管理をリーダに行わせても良い。図１５は移動エージェント複製が行われる場合の本発明の実施形態におけるシステムの処理手順の一例を示した図である。サーバ１０１からノード１０４に送信されたメンバ２０２は、メンバの複製処理を行い（１５０１）、新たなメンバ１５０２を生成するとともに、このメンバ１５０２に対して、所定の規則に基づいたメンバＩＤを付与する。当該メンバ１５０２は、当該メンバＩＤをリーダ２０１に通知（１５０３）し、リーダ２０１は、当該複製されたメンバ１５０２の情報を、メンバ位置管理データ６０２に追加登録する。これにより、例えば負荷の高い処理を行う場合等に、メンバが自らを複製して、複製したメンバをノードに配信し、処理の並列実行・負荷分散をさせることによって、更に効率的な処理が図れると同時に、メンバの数が増加してもサーバはリーダにのみ指示を送ればよいため、サーバから移動エージェントへの指示の送信に係る通信量は一定のままで済む。
【産業上の利用可能性】
【００６５】
本発明は、例えば複数の移動エージェントを利用してネットワーク上のノードを巡回するソフトウェア更新システム等に利用できる。
【図面の簡単な説明】
【００６６】
【図１】本発明における実施の形態のシステム構成を示した図
【図２】本発明の実施の形態におけるシステムの一連の処理手順を示した図
【図３】移動エージェントデータのデータ構造の一例を示した図
【図４】経路データのデータ構造の一例を示した図
【図５】全リーダ位置管理データのデータ構造の一例を示した図
【図６】リーダのソフトウェア構造の一例を示した図
【図７】メンバのソフトウェア構造の一例を示した図
【図８】移動エージェント配信・管理プログラムによる配信・管理処理の一例を示したフローチャート
【図９】リーダ主プログラムによる制御処理の一例を示したフローチャート
【図１０】メンバ主プログラムによる制御処理の一例を示したフローチャート
【図１１】サブリーダをグループ内に設ける場合におけるリーダのソフトウェア構造の一例を示した図
【図１２】サブリーダをグループ内に設ける場合におけるサブリーダのソフトウェア構造の一例を示した図
【図１３】リーダにおける相互監視処理の一例を示したフローチャート
【図１４】サブリーダにおける相互監視処理の一例を示したフローチャート
【図１５】移動エージェント複製が行われる場合の本発明の実施形態におけるシステムの一連の処理手順を示した図
【図１６】サブリーダをグループ内に設ける場合におけるメンバのソフトウェア構造の一例を示した図
【図１７】従来の移動エージェントシステムにおいて、サーバから各移動エージェントに指示を伝える状況を示した図
【符号の説明】
【００６７】
１００  ネットワーク
１０１  サーバ
１０２  ノード
１０３  ノード
１０４  ノード
１０５  ノード
１１１  二次記憶装置
１１２  主記憶装置
１１３  指示装置
１１４  中央処理装置
１１５  通信装置
１１６  移動エージェントデータ
１１７  全リーダ位置管理データ
１１８  移動エージェント配信・管理プログラム
１２０  移動エージェントグループ
１２１  二次記憶装置
１２２  主記憶装置
１２３  中央処理装置
１２４  通信装置
１２５  移動エージェント送受信プログラム
２０１  リーダエージェント
２０２  メンバエージェント
２０３  サーバからの指示
２０４  リーダエージェントからの指示
１２０２  サブリーダエージェント
１５０１  メンバエージェントの複製動作
１５０２  複製されたメンバエージェント
１５０３  メンバエージェントからリーダエージェントへのＩＤ通知動作
１７０１  サーバ
１７０２  ノード
１７０３  移動エージェント
１７０４  移動エージェントグループ
１７０５  サーバからの指示
【図１】
2005227872.tif 000003
【図２】
2005227872.tif 000004
【図３】
2005227872.tif 000005
【図４】
2005227872.tif 000006
【図５】
2005227872.tif 000007
【図６】
2005227872.tif 000008
【図７】
2005227872.tif 000009
【図８】
2005227872.tif 000010
【図９】
2005227872.tif 000011
【図１０】
2005227872.tif 000012
【図１１】
2005227872.tif 000013
【図１２】
2005227872.tif 000014
【図１３】
2005227872.tif 000015
【図１４】
2005227872.tif 000016
【図１５】
2005227872.tif 000017
【図１６】
2005227872.tif 000018
【図１７】
2005227872.tif 000019