• 検索結果がありません。

OS +

!"

#$%&'()*+

Migration

B

Agent Context

Agent Agent

Agent Runtime

OS +

Agent Context

Agent

Agent Agent

Agent Runtime

OS +

!"

#$%&'()*+

Migration

B

Agent Context

Agent Agent

Agent Runtime

OS +

Agent Context

Agent

Agent Agent

システム構成図

エージェントを実行可能にし,転送要求のあったエージェントを他のエージェントランタ イムシステムに転送する.

エージェントランタイムシステムは,各エージェントのインタフェースとなるエージェ ントコンテキストと,エージェントの移動や永続化を管理するエージェントランタイムか ら構成されている(図参照).

エージェントランタイムシステムの機能には以下のものがある.

¯ エージェントの永続化

のシリアライゼーション機能を利用してエージェントを永続化する機能.永続 化された情報には,エージェントのプログラムコードとインスタンス変数などの実 行状態が含まれる.

¯ エージェントの起動

永続化されたエージェントの情報を読み込み,エージェントを生成する機能.

¯ エージェントの移動

エージェントを指定されたエージェントランタイムシステムに転送する.また,他 のエージェントランタイムシステムから受信したエージェントを実行可能な状態に する.

¯ エージェントの停止

エージェントプログラムの実行を停止する機能.

¯ エージェント間通信

同じエージェントランタイムシステム上のエージェント間通信の実現.エージェン ト間通信には,非同期メッセージ通信,同期メソッド呼び出し,非同期メソッド呼 び出し(フューチャ通信)がある.

コールバックメソッド

におけるモバイルエージェントプログラムは,一つまたは複数のクラ スから構成され,そのうち一つ以上のクラスは,クラス のサブクラスとして定義 される. クラスは,表に示すコールバックメソッドから構成され,各メソッド はエージェントの状態変化の前後に呼び出される.クラス のサブクラスでこれら のメソッドをオーバーライドすることで状態変化に対応した動作の記述が可能となる.

エージェント間通信

では,セキュリティを配慮してエージェントが別のエージェントを直接参照 することができない.そこで,エージェント間で通信を必要とする場合には,

のコールバックメソッド

メソッド名 呼び出されるタイミング

*/1 クラスファイルからエージェントを合 成するときに一度だけ呼び出される.

*/1 エージェントを生成した直後に呼び出 される.初期化などはここに記述する.

**/1 エージェントが停止する直前に呼び出 される.

**%/@0 :1 エージェントが他のコンピュータに移 動する直前に呼び出される.引数:に は,移動先の@0アドレスが入る

*/1 エージェントが移動先のコンピュータ に到着した直後に呼び出される.

*:*/1 エージェントが永続化される直前に呼 び出される.

*:,/1 エージェントが活性化された直後に呼 び出される.

**:/1 エージェントの複製が生成される直前 に呼び出される.

*/ &*A *1 エージェントの複製が生成された直後 に,複製元のエージェントで呼び出さ れる.引数*には,複製によって生成 されたエージェントの識別子が入る.

*%*/ &*A *1 エージェントの複製が生成された直後 に,複製によって新たに生成されたエ ージェントで呼び出される.引数*に は,複製元となったエージェントの識 別子が入る.

が提供する $.クラスの &を用いて通信を行う.本節では, が 提供するエージェント間通信について解説する.なお,以下で述べるエージェント間通信

&は,同一ホスト上のエージェントとしか通信ができない.これは,他のホストにいる エージェントとは移動後にローカル通信を行うべきであるという の設計方針 に基づくものである.

エージェント間通信により送信するメッセージは,"クラスによって指定する.

"クラスのコンストラクタで,受信側エージェントが呼び出すメソッド名を指定し,

"クラスのメソッド /=#>1で呼び出すメソッドの引数を指定する.

例えば,

のように作成したメッセージ,を送信した場合,受信側エージェントではメソッドB

*/C-C5C#C1が呼び出される.

¯ 非同期メッセージ通信

識別子*をもつエージェントに"クラスのインスタンス,で与えられた メソッドを呼び出す(図参照).送信側エージェントは,メソッドの返値を受け 取ることはできないが,受信側エージェントの状態に関わらず処理を継続すること ができる.ただし,送信した時点で,受信側エージェント自体および対応するメソッ ドが存在しない場合,そして引数の数や型が一致しない場合でもエラーを返すこと はない.

ドキュメント内 Japan Advanced Institute of Science and Technology (ページ 37-41)

関連したドキュメント