(57)【特許請求の範囲】
【請求項１】
複数のスレッドを生成可能なスレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理方法であって、
（ａ）エージェントが送出した、送付先情報と、スレッド識別情報と、及びコンテント情報とを含むメッセージ・パケットを受領する段階と、
（ｂ）前記メッセージ・パケットに含まれるスレッド識別情報に対応したスレッドが前記メッセージ処理装置に存在するか否か判断する段階と、
（ｃ）前記対応したスレッドが前記メッセージ処理装置に存在しないと判断された場合、新たなスレッドを生成する段階と、
（ｄ）前記（ｃ）の場合は、前記送付先情報に対応した送付先に、前記新たに生成されたスレッドを介して前記メッセージ・パケットを送信する段階と、
（ｅ）前記新たに生成されたスレッドを停止する段階と、
（ｃ１）前記対応したスレッドが前記メッセージ処理装置に存在すると判断された場合、対応スレッドを選択する段階と、
（ｄ１）前記（ｃ１）の場合は、前記送付先情報に対応した送付先に、選択された前記対応スレッドを介して前記メッセージ・パケットを送信する段階と、
（ｅ１）選択された前記対応スレッドを停止する段階と、
（ｆ）前記送付先から受信した返信メッセージ・パケットに基づいて、前記段階（ｂ）を行う段階と、
（ｇ）前記返信メッセージ・パケットに対応するスレッドが、前記段階（ｃ）で新たに生成されたスレッドであると判明した場合には、該新たに生成されたスレッドを再起動させる段階と、
（ｈ）前記返信メッセージ・パケットを、前記再起動された新たに生成されたスレッドを介してメッセージ・パケットを送出した前記エージェントに送出する段階と、
（ｇ１）前記返信メッセージ・パケットに対応するスレッドが、前記段階（ｅ１）で選択された前記対応スレッドであると判明した場合には、選択された前記対応スレッドを再起動させる段階と、
（ｈ１）前記返信メッセージ・パケットを、前記再起動された選択された前記対応スレッドを介してメッセージ・パケットを送出した前記エージェントに送出する段階と、
を含むメッセージ処理方法。
【請求項２】
前記送付先情報に対応する送付先に前記メッセージ・パケットを送信する前に、前記メッセージ・パケットを前記メッセージ処理装置が接続するネットワークに対応したプロトコルに変換する、請求項１に記載のメッセージ処理方法。
【請求項３】
ネットワークに接続したメッセージ処理装置であって、
（ａ）複数のスレッドを生成する手段と、
（ｂ）送付先情報と、スレッド識別情報と、及びコンテント情報とを含む、エージェントが送出したメッセージ・パケットを受領する手段と、
（ｃ）前記メッセージ・パケットに含まれるスレッド識別情報に対応したスレッドが前記メッセージ処理装置に存在するか否か判断する手段と、
（ｄ）前記対応したスレッドが前記メッセージ処理装置に存在しないと判断された場合、新たなスレッドを生成する手段と、
（ｅ）前記送付先情報に対応した送付先に、前記新たに生成されたスレッドを介して前記メッセージ・パケットを送信する手段と、
（ｆ）前記新たに生成されたスレッドを停止する手段と、
（ｄ１）前記対応したスレッドが前記メッセージ処理装置に存在すると判断された場合、対応スレッドを選択する手段と、
（ｅ１）前記（ｄ１）の場合は、前記送付先情報に対応した送付先に、選択された前記対応スレッドを介して前記メッセージ・パケットを送信する手段と、
（ｆ１）選択された前記対応スレッドを停止する手段と、
（ｇ）前記新たに生成したスレッドに対応したスレッド識別情報を有する送付先から返信メッセージ・パケットを受信したときに、前記新たに生成したスレッドを再起動させる手段と、
（ｈ）前記返信メッセージ・パケットを、前記再起動された新たに生成したスレッドを介してメッセージ・パケットを送出した前記エージェントに送出する手段と、
（ｇ１）選択された前記対応スレッドに対応したスレッド識別情報を有する送付先から受領した返信メッセージ・パケットを受信したときに、選択された前記対応スレッドを再起動させる手段と、
（ｈ１）前記返信メッセージ・パケットを、前記再起動された前記対応スレッドを介してメッセージ・パケットを送出した前記エージェントに送出する手段と、
を含むメッセージ処理装置。
【請求項４】
さらに、前記メッセージ・パケットを前記メッセージ処理装置が接続するネットワークに対応したプロトコルに変換する手段を含む、請求項３に記載のメッセージ処理装置。
【請求項５】
複数のスレッドを生成可能なスレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体であって、
該メッセージ処理プログラムは、
（ａ）エージェントが送出した、送付先情報と、スレッド識別情報と、コンテント情報とを含むメッセージ・パケットを受領することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれるスレッド識別情報に対応したスレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応したスレッドが前記メッセージ処理装置に存在しないと判断された場合、新たなスレッドを生成することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｄ）前記（ｃ）の場合は、前記送付先情報に対応した送付先に前記新たに生成されたスレッドを介して前記メッセージ・パケットを送信することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｅ）前記新たに生成されたスレッドを停止することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ１）前記対応したスレッドが前記メッセージ処理装置に存在すると判断された場合、対応スレッドを選択することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｄ１）前記（ｃ１）の場合は、前記送付先情報に対応した送付先に選択された前記対応スレッドを介して前記メッセージ・パケットを送信することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｅ１）選択された前記対応スレッドを停止することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｆ）前記新たに生成したスレッドに対応したスレッド識別情報を有する前記送付先から返信メッセージ・パケットを受信したときに、前記新たに生成したスレッドを再起動させることを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｇ）前記返信メッセージ・パケットを、前記再起動された新たに生成したスレッドを介してメッセージ・パケットを送出した前記エージェントに送出させることを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｆ１）選択された前記対応スレッドに対応したスレッド識別情報を有する前記送付先から受領した返信メッセージ・パケットを受信したときに、選択された前記対応スレッドを再起動させることを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｇ１）前記返信メッセージ・パケットを、前記再起動され選択された対応スレッドを介してメッセージ・パケットを送出した前記エージェントに送出させることを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む記録媒体。
【請求項６】
複数のスレッドを生成可能なスレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体であって、
該メッセージ処理プログラムは、
（ａ）エージェントが送出した、送付先情報と、スレッド識別情報と、コンテント情報とを含むメッセージ・パケットを受領することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれるスレッド識別情報に対応したスレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応したスレッドが前記メッセージ処理装置に存在しないと判断された場合、新たなスレッドを生成することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ１）前記対応したスレッドが前記メッセージ処理装置に存在すると判断された場合、対応スレッドを選択することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｄ）前記メッセージ・パケットを前記メッセージ処理装置が接続するネットワークに対応したプロトコルに変換することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｅ）前記送付先情報に対応した送付先に前記メッセージ・パケットを送信することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｆ）前記新たに生成したスレッドを停止することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｆ１）選択された前記対応スレッドを停止することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｇ）前記新たに生成したスレッドに対応したスレッド識別情報を有するメッセージ・パケットを受信したときに、前記新たに生成したスレッドを再起動させることを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｈ）前記返信メッセージ・パケットを、前記再起動された新たに生成したスレッドを介してメッセージ・パケットを送出した前記エージェントに送出させることを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｇ１）選択された前記対応スレッドに対応したスレッド識別情報を有するメッセージ・パケットを受信したときに、前記対応スレッドを再起動させることを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｈ１）前記返信メッセージ・パケットを、前記再起動され選択された対応スレッドを介してメッセージ・パケットを送出した前記エージェントに送出させることを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む記録媒体。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、コンピュータネットワークにおけるデータ処理方法に関し、より詳しくは、分散コンピュータ環境あって、ネットワーク上に存在する２以上のノード間のコミュニケーションをサポートするための改良されたデータ処理方法に関する。
【０００２】
【従来の技術】
従来より、分散コンピュータ環境において、ネットワーク上に存在するサーバに提供されているプレースに自分自身の内部状態を保持したまま移動し、移動先のプレースにおいてインストラクションを形成する移動エージェント（モーバイルエージェント）技術が存在する（特開平７−１８２１７４号公報(USP5,603,031)、「日経コミュニケーション別冊、最新インターネットテクノロジ」日経ＢＰ社ｐｐ１０４−１１７、西田  文比古、藤原  進  著等)。
【０００３】
かかる移動エージェントは、この移動先のプレースにおいて他のエージェント（移動エージェントまたは常駐エージェント）とコンタクトし、必要なサービスを受けることができる。プレースは、ネットワーク上に存在するサーバによって提供されているエージェントの移動場所であり、エージェント間のコンタクトをサポートし、また、ハードウエア及びプラットフォームの違いを吸収している。
【０００４】
かかる移動エージェントの技術は、社内会議のセッティングを社員のスケジュールや会議室の予約状況に応じてダイナミックに調整したり、ネットワーク上に分散する所望の情報を入手する等、これまで人手によってなされていた作業をこの移動エージェントが代行することを可能にしている。
【０００５】
しかし、従来の移動エージェントにおいて、エージェント間のコミュニケーションは従来通りのメソッド呼び出し（サブルーチン・コール）もしくは低レベルのメッセージ・パッシングによって実現されていたため、エージェント間での柔軟で円滑な情報交換および協調動作の実現を困難なものとしていた。また、エージェントを用いてコミュニケーションを行う為には、定形的な会話の処理をも規定する必要があり、エージェントの利用者の負担となっていた。さらに、様々なエージェントの間でのコミュニケーションを実現するためのエージェント・コミュニケーション言語を使用していないため、異種エージェント間でのコミュニケーションは非常に困難なものとなっていた。
【０００６】
この一方、人間同士が会話をする場合、一般に、
１．話し手は、話し手の意図を聞き手に伝えるために、話す内容を用意し、
２．話を開始する。
３．聞き手は、その話を聞き、話の流れを理解し、
４．その話の背景を自分の経験したものから連想し、関連付け、
５．その話の内容を理解し、
６．その結果行為を起こす。
といったステップにより構成される。
【０００７】
このように会話をパターン化することにより、単なるコンピューターのメッセージング・システムをより自然言語のメッセージ処理に近いものとして定義し、再利用可能なデザインとすれば、従来より自然言語系に近いメッセージの処理を可能となり、利用するユーザに親しみやすく、何らかの文脈を持つ一連のパケットの流れのやり取りを文脈を意識しながら行うインテリジェントなメッセージ・システムを構築することができる。
【０００８】
【発明が解決しようとする課題】
本発明の一つの目的は、エージェント（移動エージェントまたは常駐エージェント）にコミュニケーションを行わせるに際して、人間にとって直感的に判りやすいエージェント・コミュニケーション言語を用いて会話を行うことのできるコミュニケーション・システムを提供することにある。
【０００９】
本発明の他の一つの目的は、複数のエージェント（移動エージェントまたは常駐エージェント）との間で非同期に会話を同時進行することのできるコミュニケーション・システムを提供することにある。
【００１０】
本発明の他の一つの目的は、エージェントが様々なエージェント・コミュニケーション言語やコミュニケーション・プロトコルを意識せずにコミュニケーションを行うことのできるコミュニケーション・システムを提供することにある。
【００１１】
本発明の他の一つの目的は、高速な並列会話処理を実現したコミュニケーション・システムを提供することにある。
【００１２】
本発明の他の一つの目的は、エージェント間のコミュニケーションをサポートするに際し、プログラマの開発や保守に要する労力及び時間を可能な限り軽減することにある。
【００１３】
本発明の他の一つの目的は、エージェント間の会話に柔軟に対応することができるコミュニケーション・システムを提供することにある。
【００１４】
本発明の他の一つの目的は、通信システムへの負担が少ないメッセージ処理システムを提供することにある。
【００１５】
【課題を解決するための手段】
本発明は、耳と口に相当するソフトウェア部品（エージェント・コミュニケーション・システム）をエージェントに提供する。このエージェント・コミュニケーション・システムにおいて、耳は、"handleMessage"というAPI(Application Program Interface)により提供され、口は、"sendMessage"というAPIにより提供される。本発明の一態様において、これらのAPIは、エージェント・コミュニケーション・システムのエージェント・コミュニケーション言語マネジャ・オブジェクトのメソッド(オブジェクト指向用語としてのメソッド)として実装されている。
【００１６】
エージェントは、会話を発するときは、人間の会話に近いエージェント・コミュニケーション言語（ＡＣＬ）を用意し、それをsendMessageに渡して送る。発話により発信されるメッセージ・パケットには、送信元と宛先のフィールドが含まれているためエージェント・コミュニケーション・システムは相手の場所を認識することができる。
【００１７】
この一方、メッセージ・パケットを受領する他のノードにおいては、ネットワークを介して流れてくるデータを処理するコンポーネントであるプロトコル・マネジャが、ネットワークからのデータ（メッセージ・パケット）を受け取り、エージェント・コミュニケーション言語マネジャ・オブジェクトのhandleMessageメソッドへ渡す。handleMessageメソッドがメッセージ・パケットを理解し内容を実施する。
【００１８】
本発明の一態様においては、エージェント・コミュニケーション・システムがメッセージ・パケットを送信または受信する際に、新たな会話が開始されたか否かを判断し、新たな会話が開始されたと判断した場合には、会話スレッドを新たに生成する。この会話スレッドにより複数のエージェント（移動エージェントまたは常駐エージェント）との間で非同期に会話を同時進行することができる。
【００１９】
また、本発明の一態様においては、この耳と口をエージェントに付けるためには、エージェント・コミュニケーション言語マネジャ・オブジェクトをインスタンシエートするだけで実現できる。
【００２０】
本発明の一態様においては、
（ａ）送付先情報と、会話スレッド識別情報を含むメッセージ・パケットを検出する段階と、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断する段階と、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する段階と、
（ｄ）前記送付先情報に対応した送付先に前記メッセージ・パケットを送信する段階と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理方法が提供される。
【００２１】
本発明の他の一態様においては、
（ａ）送付先情報と、会話スレッド識別情報と、コンテント情報を含むメッセージ・パケットを検出する段階と、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断する段階と、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する段階と、
（ｄ）前記メッセージ・パケットを前記メッセージ処理装置が接続するネットワークに対応したプロトコルに変換する段階と、
（ｅ）前記送付先情報に対応した送付先に前記メッセージ・パケットを送信する段階と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理方法が提供される。
【００２２】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを検出する段階と、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断する段階と、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する段階と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理方法が提供される。
【００２３】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報とコンテント情報を含むメッセージ・パケットを検出する段階と、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断する段階と、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在すると判断された場合、該対応する会話スレッドに制御を渡す段階と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理方法が提供される。
【００２４】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを受領する段階と、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断する段階と、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する段階と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理方法が提供される。
【００２５】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報とコンテント情報を含むメッセージ・パケットを受領する段階と、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断する段階と、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在すると判断された場合、該対応する会話スレッドに制御を渡す段階と、
（ｄ）前記コンテント情報の内容を解析する段階と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理方法が提供される。
【００２６】
本発明の他の一態様においては、
（ａ）前記複数の会話スレッドを停止する段階と、
（ｂ）前記会話部品オブジェクトを前記ネットワークを介して他のプレースに送出する段階と、
（ｃ）前記他のメッセージ処理装置において、前記複数の会話スレッドを再開する段階と、
を含む複数の会話スレッドと前記複数の会話スレッドを制御可能な会話スレッド制御部を含む会話部品オブジェクトを有し、ネットワークを介して他のメッセージ処理装置にメッセージを送出可能なメッセージ処理装置で実行されるメッセージ処理方法が提供される。
【００２７】
本発明の他の一態様においては、
（ａ）複数の会話スレッドと、
（ｂ）送付先情報と、会話スレッド識別情報と、コンテント情報を含むメッセージ・パケットを検出するエージェント・コミュニケーション言語マネジャと、
（ｃ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｃ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する会話スレッド制御部と、
（ｄ）前記メッセージ・パケットを前記メッセージ処理装置が接続するネットワークに対応したプロトコルに変換するプロトコル・マネジャと、
を含むネットワークに接続したメッセージ処理装置が提供される。
【００２８】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを検出するエージェント・コミュニケーション言語マネジャと、
（ｂ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｂ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する会話スレッド制御部と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置が提供される。
【００２９】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報とコンテント情報を含むメッセージ・パケットを検出するエージェント・コミュニケーション言語マネジャと、
（ｂ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｂ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在すると判断された場合、該対応する会話スレッドに制御を渡す会話スレッド制御部と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置が提供される。
【００３０】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを受領するプロトコル・マネジャと、
（ｂ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｂ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する会話スレッド制御部と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置が提供される。
【００３１】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報とコンテント情報を含むメッセージ・パケットを受領するプロトコル・マネジャと、
（ｂ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｂ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在すると判断された場合、該対応する会話スレッドに制御を渡す会話スレッド制御部と、
（ｄ）前記コンテント情報の内容を解析するインタプリタと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置が提供される。
【００３２】
本発明の他の一態様においては、
（ａ）送付先情報と、会話スレッド識別情報を含むメッセージ・パケットを検出することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｄ）前記送付先情報に対応した送付先に前記メッセージ・パケットを送信することを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体が提供される。
【００３３】
本発明の他の一態様においては、
（ａ）送付先情報と、会話スレッド識別情報と、コンテント情報を含むメッセージ・パケットを検出することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｄ）前記メッセージ・パケットを前記メッセージ処理装置が接続するネットワークに対応したプロトコルに変換することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｅ）前記送付先情報に対応した送付先に前記メッセージ・パケットを送信することを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体が提供される。
【００３４】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを検出することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成することを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体が提供される。
【００３５】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報とコンテント情報を含むメッセージ・パケットを検出することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在すると判断された場合、該対応する会話スレッドに制御を渡すことを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体が提供される。
【００３６】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを受領することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成することを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体が提供される。
【００３７】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報とコンテント情報を含むメッセージ・パケットを受領することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記対応した会話スレッドが前記メッセージ処理装置に存在すると判断された場合、該対応する会話スレッドに制御を渡すことを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｄ）前記コンテント情報の内容を解析することを前記メッセージ処理装置に指示するためのプログラムコードと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体が提供される。
【００３８】
本発明の他の一態様においては、
（ａ）前記複数の会話スレッドを停止することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｂ）前記会話部品オブジェクトを前記ネットワークを介して他のプレースに送出することを前記メッセージ処理装置に指示するためのプログラムコードと、
（ｃ）前記複数の会話スレッドを再開することを前記他のメッセージ処理装置に指示するためのプログラムコードと、
を含む複数の会話スレッドと前記複数の会話スレッドを制御可能な会話スレッド制御部を含む会話部品オブジェクトを有し、ネットワークを介して他のメッセージ処理装置にメッセージを送出可能なメッセージ処理装置で実行されるメッセージ処理プログラムを格納した記録媒体が提供される。
【００３９】
本発明の他の一態様においては、
（ａ）複数の会話スレッドと、
（ｂ）送付先情報と、会話スレッド識別情報と、コンテント情報を含むメッセージ・パケットを検出するエージェント・コミュニケーション言語マネジャと、
（ｃ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｃ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する会話スレッド制御部と、
（ｄ）前記メッセージ・パケットを前記メッセージ処理装置が接続するネットワークに対応したプロトコルに変換するプロトコル・マネジャと、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置にロードされる複数のオブジェクトを含む会話部品オブジェクトを格納した記録媒体が提供される。
【００４０】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを検出するエージェント・コミュニケーション言語マネジャと、
（ｂ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｂ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する会話スレッド制御部と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置にロードされる複数のオブジェクトを含む会話部品オブジェクトを格納した記録媒体が提供される。
【００４１】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報とコンテント情報を含むメッセージ・パケットを検出するエージェント・コミュニケーション言語マネジャと、
（ｂ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｂ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在すると判断された場合、該対応する会話スレッドに制御を渡す会話スレッド制御部と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置にロードされる複数のオブジェクトを含む会話部品オブジェクトを格納した記録媒体が提供される。
【００４２】
本発明の他の一態様においては、
（ａ）会話スレッド識別情報を含むメッセージ・パケットを受領するプロトコル・マネジャと、
（ｂ−１）前記メッセージ・パケットに含まれる会話スレッド識別情報に対応した会話スレッドが前記メッセージ処理装置に存在するか否か判断し、
（ｂ−２）前記対応した会話スレッドが前記メッセージ処理装置に存在しないと判断された場合、新たな会話スレッドを生成する会話スレッド制御部と、
を含む複数の会話スレッドを生成可能な会話スレッド制御部を有し、ネットワークに接続したメッセージ処理装置にロードされる複数のオブジェクトを含む会話部品オブジェクトを格納した記録媒体が提供される。
【００４３】
【実施例】
以下、図面を参照して本発明の実施例を説明する。図１を参照すると、本発明の移動オブジェクトを実行する分散ネットワーク環境１５０が示されている。各サーバ１１２〜１１５には、移動エージェント１２５、１３５、１４１等にサービスを与えることが可能なプレース１０２〜１０５が用意されている。この分散ネットワーク環境におけるプレース群はクラウドと呼ばれている。
【００４４】
クライアント・システム１０１においては、移動エージェントを生成し、移動させるためのアプリケーション１１３が存在する。アプリケーション１１３が送り出した移動エージェント１２５等は、各プレース１０２〜１０５において存在する他のエージェント（移動エージェントまたは常駐エージェント）とコンタクトし、サービスを提供するエージェントを特にアクター・エージェントと呼ぶ）、リクエストを送出し、そのリクエストの結果を受けることができる。プレースは、エージェント間のコンタクトをサポートしている。また、移動エージェント１２５等は、アクター・エージェントから受領したリクエストの結果を保持し、移動を継続し、または、移動途中で結果をクライアント１０１または、他のプレースに送出することもできる。
【００４５】
また、移動エージェント（または常駐エージェント）１２５は、他のプレースにメッセージ・パケットを送出して、他のプレースで会話を実行し、インストラクションを実行することもできる。
【００４６】
図２は、図１に示された分散ネットワーク環境上に存在する各ノード（サーバまたはクライアントサイト）のハードウェア構成の概観図が示されている。各ノード１００は、中央処理装置（ＣＰＵ）１とメモリ４とを含んでいる。ＣＰＵ１とメモリ４は、バス２を介して、補助記憶装置としてのハードディスク装置１３とを接続してある。フロッピーディスク装置２０、ハードディスク装置１３，３０、ＣＤ−ＲＯＭドライブ２６，２９、ＭＯドライブ２８等の記憶媒体駆動装置は、フロッピーディスク・コントローラ１９、ＩＤＥコントローラ２５、ＳＣＳＩコントローラ２７等の各種コントローラを介してバス２へ接続されている。
【００４７】
フロッピーディスク装置２０等の記憶媒体駆動装置には、フロッピーディスク等の可搬型記憶媒体が挿入され、このフロッピーディスク等やハードディスク装置１３、ＲＯＭ１４等の記憶媒体には、オペレーティングシステムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・ソフトウエアを記録することができ、メモリ４にロードされることによって実行される。このコンピュータ・ソフトウエアは圧縮し、または、複数に分割して、複数の媒体に記録することもできる。
【００４８】
ノード・システム１００は更に、ユーザ・インターフェース・ハードウェアを備えたシステムとすることができ、ユーザ・インターフェース・ハードウェアとしては、例えば、入力をするためのポインティング・デバイス（マウス、ジョイスティック等）７またはキーボード６や、視覚データをユーザに提示するためのディスプレイ１２があり、また、パラレルポート１６を介してプリンタを接続するも可能である。このノード・システム１００は、シリアルポート１５を介してモデムを接続することが可能であり、シリアルポート１５およびモデムまたはトークンリングや通信アダプタ１８等を介してネットワークに接続し、他のコンピュータシステムと通信を行っている。
【００４９】
このように、本発明は、通常のパーソナルコンピュータ（ＰＣ）、ワークステーション、汎用機や、これらの組合せによって実施可能であることを容易に理解できるであろう。ただし、これらの構成要素は例示であり、その全ての構成成要素が本発明の必須の構成要素となるわけではない。
【００５０】
例えば、サーバ側においては、ユーザインタフェース等は不要であり、ＣＰＵやメモリ等の基本的なデータ処理機能と通信機能があれば足りる。また、クライアント側においては、後述するメッセージ・パケットを送出するに必要な構成を有していればよく、通信機能と、メッセージ・パケットの指定を行い、メッセージ・パケットの送出を指示するための何らかのデータ処理機能と入力手段があればよい。さらにクライアント側のマシンを携帯情報端末等から遠隔操作する場合には、携帯情報端末等からメッセージ・パケット送出する命令を受信し、それを検出し、メッセージ・パケットを送出するデータ処理機能と通信機能があれば足る。
【００５１】
クライアントシステム側、サーバシステム側ともに、オペレーティング・システムとしては、ＷｉｎｄｏｗｓＮＴ（マイクロソフトの商標）、Ｗｉｎｄｏｗｓ９５（マイクロソフトの商標）、Ｗｉｎｄｏｗｓ３．ｘ（マイクロソフトの商標）、ＯＳ／２（ＩＢＭの商標）、ＡＩＸ（ＩＢＭの商標）上のＸ−ＷＩＮＤＯＷシステム（ＭＩＴの商標）、Ｓｏｌａｒｉｓ（サンマイクロシステムズの商標）などの、標準でＧＵＩマルチウインドウ環境をサポートするものや、ＰＣ−ＤＯＳ（ＩＢＭの商標）、ＭＳ−ＤＯＳ（マイクロソフトの商標）などのキャラクタ・ベース環境のもの、さらにはＯＳ／Ｏｐｅｎ（ＩＢＭの商標）ＶｘＷｏｒｋｓ（Ｗｉｎｄ  Ｒｉｖｅｒ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．の商標）等のリアルタイムＯＳでも実現可能であり、特定のオペレーティング・システム環境に限定されるものではない。
【００５２】
Ｂ．システム構成
次に、図３のブロック図を参照して、本発明の好適な実施例におけるサーバ側のシステム構成について説明する。
【００５３】
エージェント２０１は、このサーバに送られてきた移動エージェントまたはこのサーバに常駐している常駐エージェントである。このエージェント２０１は、後述するメッセージ・パケットを送出し、または、受領することによってエージェント・コミュニケーション・システム２００と対話することができる。
【００５４】
エージェント・コミュニケーション言語マネジャ２０３は、エージェント２０１や既存システム、ネットワークから送付されるメッセージを受領し、また、メッセージをこれらのシステムに送信するためのコンポーネントである。
【００５５】
会話スレッド制御部２０５は、エージェント２０１等と対話する各会話に対応するスレッド２０７（複数の会話を非同期に受け付けるため、マルチスレッド化している。このスレッドを会話スレッドと呼ぶ）を管理し、会話の流れに応じて適切なスレッドを生成し、または既に生成されたスレッドに制御を渡すコンポーネントである。本発明の一態様においては、この会話スレッド２０７は複数生成され、これによって複数のエージェントと並列非同期で会話を行うことができる。
【００５６】
メッセージ・ログ２１１は、会話を記憶するコンポーネントである。会話内容監視部２１７は、メッセージ・ログ２１１に格納された会話のログと現在の発話されている内容から会話が成立するかどうかのポリシー・チェックを行うコンポーネントである。また、会話内容監視部用ローダ２１５は、メッセージ・パケット３００のメッセージ・タイプに応じた会話内容監視部２１７を呼び出すためのコンポーネントである。
【００５７】
トランスレータ２２１は、会話に使われているエージェント・コミュニケーション言語を他の言語に翻訳するコンポーネントである。トランスレータ用ローダ２１９は、このトランスレータ群を管理するコンポーネントである。
【００５８】
インタプリタ２２５は、会話の内容を理解し実行するコンポーネントである。このインタプリタは、後述するオントロジーや記述言語に対応して複数種類設けられており、夫々オントロジーに特化したフォーマット・チェック・ルーチンやコンテント解釈ルーチン、実行ルーチンを有している。例えば、交通機関の予約に関するオントロジーであった場合、"Reserve, flight, Narita to Tacoma, 1997/07/06/15:00-1997/07/06/18:00"といったコンテントを受領し、所定のフォーマット・チェックを行い、"R"を予約を指示するコマンドと解釈する等の特有のコンテント解釈ルーチンを実行し、所定の航空会社のデータベースにアクセスして、予約状況等をチェックする等の固有の実行ルーチンを実行する。そして、最終的に、１９９７年７月５日１７時１０分成田空港発、シアトルのタコマ空港行のｘｘ航空２６便、エコノミーの禁煙席の予約を行い、送信者に対し予約の確認を行う。
【００５９】
インタプリタ用ローダ２２３は、このインタプリタ２２５群を管理するコンポーネントである。プロトコル・マネジャ２３０は、接続するネットワークの種類に応じたプロトコルに変換するためのコンポーネントである。
【００６０】
以上図３に示す各機能ブロックを説明したが、これらの機能ブロック（コンポーネント）は、論理的機能ブロックであり、各々１つのまとまりを持ったハードウエアやソフトウエアによって実現されることのみを意味するのではなく、複合し、または共通したソフトウエアをハードウエア資源を用いで稼動させることによっても実現可能である。また、この図３に示す全ての機能ブロックが本発明に必須の構成要素という訳ではない。
【００６１】
例えば、本発明は、エージェントに他のエージェントや既存システムと会話するための特別な機能を提供するものであるため、会話内容監視部２１７、トランスレータ２２１、インタプリタ２２５等の解釈実行部品の何れかが存在すればよく、会話内容監視部用ローダ２１５、トランスレータ用ローダ２１９、インタプリタ用ローダ２２３は不要な構成要素である。本発明の一態様においては、特定のエージェント等と会話を行うため、会話スレッドは、１以上の特定数用意されているため、エージェント・コミュニケーション言語マネジャ２０３、会話スレッド制御部２０５、メッセージ・ログ２１１、ＩＤジェネレータ２１３も必須の構成要素とはならない。
【００６２】
Ｃ．動作説明
図４は、本発明の好適な実施例において使用されるメッセージ・パケット３００の概念図であり、図５は、図３に示した各コンポーネントの発話時の動作状態を示す図である。
【００６３】
本発明の好適な実施例においては、図４のメッセージ・パケット３００に含まれるメッセージタイプ３０１は、エージェント・コミュニケーション言語（ＡＣＬ：Agent Communication Language）のパフォーマティブが使用されている。ＡＣＬは、エージェント間のコミュニケーションを人間の言葉に近い形で提供している高級言語であり、ＦＩＰＡ（Foundation for Intelligent Physical Agents)の提供しているＡＣＬや、ＫＱＭＬ(Knowledge Query Manipulation Language)、ＫＩＦ(Knowledge Interchange Format)等があり、これらの言語は、"SEMANTICS FOR AN AGENT COMMUNICATION LANGUAGE, Yannis Labrou, A Doctoral Dissertation for the PhD Defense Examination, Submitted to the Defense Committee, at the Computer Science and Electrical Engineering Department (CSEE), University of Maryland Graduate School"や"TR CS-97-03, A Proposal for a new KQML Specification, Yannis Labrou and Tim Finin February 3, 1997"等により公表されている。
【００６４】
ＡＣＬの１つであるＫＱＭＬのパフォーマティブには次のようなものがある。
ask-if,ask-all,ask-one,stream-all,eos,tell,untell,deny,insert,uninsert,delete-one,delete-all,undelete,achieve,unachieve,advertise,unadvertise,subscribe,error,sorry,standby,ready,next,rest,discard,register,unregister,forward,broadcast,transport-address,broker-one,broker-all,recommend-one,recommend-all,recruit-one,recruit-all
【００６５】
センダー３０３は、メッセージの送出元であり、レシーバ３０５は、メッセージの受け取り先である。
【００６６】
応答ＩＤ３０７は、先行する会話に続くＩＤである。エージェント２０１が複数の相手と会話する場合、後述する会話スレッドに対応して複数の応答ＩＤが割りふられる。
【００６７】
会話ＩＤ３０９は、会話相手にこのＩＤで応答することを指示するためのＩＤである。
【００６８】
記述言語タイプ３１１は、コンテントを記述している言語を特定する情報である。オントロジー３１３は、コンテントが規定しているオントロジーを特定する情報である。本発明の好適な実施例にいてはチケット購入オントロジー、数値計算オントロジー、株式情報オントロジー、イエローページ・オントロジー等が提供されている。
【００６９】
コンテント３１５は、メッセージの具体的内容であり、本発明の好適な実施例においては、他のプレースに移動した後にインストラクションを形成するためのソフトウエアを含んでいる。このコンテント３１５の内部には、さらにメッセージ・パケットを含めることもでき、中継点を介して、他のプレースに移動させることもできる。本発明の好適な実施例においては、かかる場合、センダー３０３とレシーバ３０５とは別に、真の送信者と最終的な受信者をしめすＦｒｏｍエントリとｔｏエントリが設けられている。
【００７０】
次に図５を参照しつつ図３に示した各コンポーネントの発話時の動作状態を説明する。エージェント２０１は、エージェント・コミュニケーション・システム２００に対し図４のメッセージ・パケットを送出する。本発明の好適な実施例においては、図３に示したコンポーネントはオブジェクト指向言語のクラスとして定義されており、発話に際しての各オブジェクトは、図６のコンポーネント間のオブジェクト・インストラクション・ダイアグラムに示すように、他のオブジェクトにインストラクションを送出することによって他のオブジェクトの動作を促している。
【００７１】
メッセージ・パケット３００を受領したエージェント・コミュニケーション言語マネジャ２０３は、自分が"sendMessage"で呼ばれたか、"receiveMessage"で呼ばれたかによって、このメッセージ・パケット３００が発話のためのメッセージ・パケットであると判断し、会話スレッド制御部２０５に処理を依頼する。
【００７２】
会話スレッド制御部２０５は、メッセージ・パケット３００に含まれる応答ＩＤ３０７を参照し、既に生成されている会話スレッドに処理を依頼すべきものか否か判断する。会話スレッド制御部２０５が、新たな会話であると判断した場合には、会話スレッド２０７を新たに生成し、ＩＤジェネレータ２１３に新たな会話ＩＤ３０９の割りふりを会話スレッド２０７を介して指示し、処理を会話スレッド２０７に移す。
【００７３】
本発明においては、このように会話スレッドを動的に生成しているため、他のシステム（エージェントまたは既存システム等）との会話を並列非同期で行うことができる。本発明の好適な実施例において、この応答ＩＤ３０７は、「ＵＲＬ＋Ｄａｔｅ＋Ｔｉｍｅ＋シリアル番号」等のネットワーク上で一意に決まるようなＩＤが割り振られる。
【００７４】
応答ＩＤ３０７に対応する会話スレッド２０７が存在している場合、会話スレッド制御部２０５は、新たな会話ではないと判断し、対応する会話スレッド２０７に処理を移す。会話を継続することを欲する場合には、会話スレッド２０７は、ＩＤジェネレータ２１３に、会話ＩＤ３０９の割りふりを指示する。
【００７５】
メッセージ・ログ２１１は、会話スレッド２０７に送られたメッセージ・パケット３００を記憶する。
【００７６】
会話内容監視部用ローダ２１５は、メッセージ・パケット３００のメッセージ・タイプ３０１に応じた会話内容監視部２１７を呼び出す。メッセージ・タイプ３０１に応じた会話内容監視部２１７を呼び出しは、図７に示すような会話内容監視部品テーブルを設けても、会話内容監視部品のクラス名をメッセージ・タイプと同じにして直接呼び出してもよい。
【００７７】
会話内容監視部２１７は、メッセージ・ログ２１１に格納された会話のログと現在の発話されている内容から会話が成立するかどうかのポリシー・チェックを行う。例えば、受領したメッセージ・パケット３００のメッセージ・タイプ３０１が"sorry"（会話の内容は理解可能であるが、自分には処理能力がないことを示すメッセージ・タイプ）であった場合、メッセージ・ログ２１１から対応する応答ＩＤを有し、１つ前の会話ＩＤを有するメッセージのメッセージ・タイプを参照し、"ask-if"（相手側の処理能力を問い合わせる場合のメッセージ・タイプ）等の会話として成立するメッセージ・タイプであれば問題なしと判断し、例えば"sorry"等の会話として成立しないメッセージ・タイプと判断した場合は、エラーと判断し、メッセージ・パケット３００のセンダ３０３に対し"error"(エラーを示すメッセージ・タイプ)のメッセージ・パケットを送付する等の処理を行う。
【００７８】
会話として成立すると判断された場合、メッセージ・パケット３００は、会話スレッド２０７からプロトコル・マネジャ２３０を介してレシーバ３０３に指定されたノードに対し送信する。このとき、プロトコル・マネジャ２３０は、接続するネットワークの種類に応じたプロトコルに変換するため、エージェント・コミュニケーション・システム２００は、ネットワーク・プロトコルを意識せずにメッセージ・パケット３００の送受信をすることができる。
【００７９】
次に図８、９を参照して、この送出されたメッセージ・パケット３００を受領したノードにおける各コンポーネントの動作状態を説明する。
【００８０】
プロトコル・マネジャ２３０からメッセージ・パケット３００を受領したエージェント・コミュニケーション言語マネジャ２０３は、"handleMessage"によって呼ばれたことから、受領したメッセージ・パケット３００が受話のためのメッセージ・パケットであると判断し、会話スレッド制御部２０５に処理を依頼する。本発明の好適な実施例においてはプロトコル・マネジャ２３０は、エージェント・コミュニケーション言語マネジャ２０３が内部的にインスタンシエートしているので、エージェント・コミュニケーション言語マネジャ２０３の存在を知っており、流れてきたデータをエージェント・コミュニケーション言語マネジャ２０３に渡すことができる。
【００８１】
会話スレッド制御部２０５は、メッセージ・パケット３００に含まれる応答ＩＤ３０７を参照し、既に生成されている会話スレッドに処理を依頼すべきものか否か判断する。会話スレッド制御部２０５が、新たな会話であると判断した場合には、会話スレッド２０７を新たに生成し、処理を会話スレッド２０７に移す。
【００８２】
応答ＩＤ３０７に対応する会話スレッド２０７が存在している場合、会話スレッド制御部２０５は、新たな会話ではないと判断し、対応する会話スレッド２０７に処理を移す。
【００８３】
メッセージ・ログ２１１は、会話スレッド２０７に送られたメッセージ・パケット３００を記憶する。
【００８４】
会話内容監視部用ローダ２１５は、メッセージ・パケット３００のメッセージ・タイプ３０１に応じた会話内容監視部２１７を呼び出す。
【００８５】
会話内容監視部２１７は、メッセージ・ログ２１１に格納された会話のログと現在の発話されている内容から会話が成立するかどうかのポリシー・チェックを行う。
【００８６】
会話として成立すると判断された場合、会話スレッド２０７は、インタプリタ用ローダ２２３に処理を移す。インタプリタ用ローダ２２３は、メッセージ・パケット３００のエージェント・コミュニケーション言語を把握し、また、メッセージ・パケット３００に含まれる記述言語タイプ３１１、オントロジー３１３に対応するインタプリタが図１０に示すようなインタプリタ管理テーブル３５０に登録されているか否かを判断する。
【００８７】
もし、受領したメッセージ・パケット３００のエージェント・コミュニケーション言語、記述言語タイプ３１１、オントロジー３１３に対応するインタプリタがインタプリタ管理テーブル３５０に登録されている場合には、そのインタプリタを使用してコンテント３１５の解釈を行う。受領したメッセージ・パケット３００のエージェント・コミュニケーション言語、記述言語タイプ３１１、オントロジー３１３に対応するインタプリタがインタプリタ管理テーブル３５０に登録されていない場合、本発明の好適な実施例においては、システムの管理する（アクセス可能な）インタプリタ・ライブラリにその組み合わせに対応するインタプリタが存在するか否かを判断する。
【００８８】
存在した場合には、インタプリタ管理テーブル３５０に登録を行い、そのインタプリタを使用してコンテント３１５の解釈を行う。エージェント・コミュニケーション言語、記述言語タイプ３１１、オントロジー３１３の組み合わせに対応するインタプリタがインタプリタ・ライブラリに存在しない場合は、記述言語タイプ３１１、オントロジー３１３の組み合わせに対応するインタプリタがインタプリタ・ライブラリに存在するか否かを判断する。存在しない場合には、処理不能として処理する。本発明の好適な実施例においては、オントロジーは階層構造によって対応付けられており、最も対応関係の深いオントロジーのインタプリタを使用することもできる。
【００８９】
存在した場合には、コンテント３１５を発見されたインタプリタのエージェント・コミュニケーション言語に翻訳すべく、トランスレータ用ローダ２１９に処理を移す。トランスレータ用ローダ２１９は、図１１に示すようなトランスレータ管理テーブル３４０を参照し、要求された翻訳を実行可能なトランスレータが存在するか否か判断する。本発明の好適な実施例において、存在しない場合は、インタプリタの場合と同様にトランスレータ・ライブラリを探索して、テーブルへの登録を行い、翻訳されたコンテント３１５を選択されたインタプリタによって処理する。存在しない場合には、処理不能として処理する。
【００９０】
本発明の好適な実施例において、インタプリタ２２５の解釈した結果は、エージェント２３１に伝達され、コンテント３１５に記載されたインストラクションの内容に応じた処理を行う。このコンテント３１５の内容によっては、会話スレッドを消滅させる処理を行ったり、新たな発話を開始する処理に移行したり、新たにエージェントを生成する処理を行ったりする。本発明の好適な実施例においてインタプリタ２２５は、処理を会話スレッド２０７に戻す。会話スレッド２０７は、次のメッセージ・パケットを受領するまで待機する。
【００９１】
会話は、従来のプロシージュアルなシステムにおけるAPI呼び出しの多くとは異なり、非同期に行われので、何らかの発話が送り手から受け手へ送られても受け手はいつ返事を返すかはわからない。受け手の持っている情報が他の外力(他のエージェントの働きかけなど)によって変更されたタイミングで返事が発せられるかもしれない。その場合も、返事はメッセージ・パケット３００として送られる。会話のスレッド２０７は、その会話の続行となる返事が返ってくるまでは、wait() で待ち続けている。この"wait()"は会話スレッド２０７を待ち状態にし、他から"notify()"などの関数(メソッド)によって起こされる(ウエイクアップされる)のを待機するためのメソッドである。返事が返ってくるとエージェント・システム２００にメッセージが渡される。そして、そのメッセージが既存の会話の後続のメッセージであることが判明すると、休止していた会話のスレッドが起こされメッセージが渡される。
【００９２】
本発明の好適な実施例において、エージェント２３１が、過去に発話し、その答を待っている場合、その会話はエージェント・コミュニケーション・システム２００経由で発話（エージェント・コミュニケーション・システム２００に"sendMessage"を送出）しており、"sendMessage"の戻り値として"Conversation"オブジェクトが返される。この"Conversation"オブジェクトには、"Result"オブジェクトと呼ばれるステートを保持するオブジェクトが関連付けられている。本発明の好適な実施例において、エージェント２３１は、この"Result"オブジェクトの保持するステートをポーリングをかけることにより検査をすることによって、通知(Notification) を受けることができる。
【００９３】
本発明の好適な実施例においては、本発明の会話部品であるエージェント・コミュニケーション・システム２００をエージェント２０１に提供するため、ＪＤＫ（Ｊａｖａ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ：Ｊａｖａは、サンマイクロシステムズ社の商標）を用いてコーディングしており、
【表１】
aclManager = new ACLManager(agentName, protocolName, port);
【００９４】
とACLManagerをインスタンシエートするだけで本発明のエージェント・コミュニケーション・システム２００をエージェント２０１に提供することができる。
【００９５】
また、発話するに際しては、例えば、kqmlオブジェクトを用意し、
【表２】
ConversationThread conv =
(ConversationThread) aManager.sendMessage(kqml);
【００９６】
とするだけで発話を行うことができる。
【００９７】
さらに返事を待つ場合には、
【表３】
0003883647.tif 000002
【００９８】
とポーリングするだけである。実際に、返ってきた返事または、相手から発話された内容は、デフォルトのエージェント・コミュニケーション・システム２００内のインタプリタが正しく解釈実行する。
【００９９】
以上説明した本発明の好適な実施例においては、解釈実行部品の各種管理テーブルへの登録を実行時に行っているが、実行時には行わず、始動時にのみ解釈実行部品のディレクトリーを走査し、どのような解釈実行部品が存在するか検査し、解釈実行部品テーブルを作成し管理してもよい。
【０１００】
また、メッセージ・パケット３００がノード間を移動する形式を採用しているが、図１２、１３に示すように、メッセージ・パケット３００を移動エージェント２３３に添付して送付することもできる。かかる場合、移動エージェント２３３はメッセージ・パケット３００を保持しつつ、複数のプレースを渡り歩き、会話を行い、また、その処理結果を使用して他のプレースで会話を行うこと等の複雑な作業をすることも可能となる。
【０１０１】
移動エージェントがネットワーク上を移動する場合、図１４に示されるステップを実行することによって移動を可能になる。
【０１０２】
【発明の効果】
以上説明したように、本発明によれば、エージェント（移動エージェントまたは常駐エージェント）にコミュニケーションを行わせるに際して、人間にとって直感的に判りやすいエージェント・コミュニケーション言語を用いて会話を行うことのできるコミュニケーション・システムを提供することができる。
【０１０３】
本発明の一態様においては、不要な判断ロジックを削減し、高速処理を可能としたメッセージ処理システムを提供することができる。
【０１０４】
本発明の一態様においては、エージェントが様々なエージェント・コミュニケーション言語やコミュニケーション・プロトコルを意識せずにコミュニケーションを行うことのできるコミュニケーション・システムを提供することができる。
【０１０５】
本発明の一態様においては、高速な並列会話処理を実現したコミュニケーション・システムを提供することができる。
【０１０６】
本発明の一態様においては、エージェント間のコミュニケーションをサポートするに際し、プログラマの開発や保守に要する労力及び時間を可能な限り軽減することができる。
【０１０７】
本発明の一態様においては、エージェント間の会話に柔軟に対応することができるコミュニケーション・システムを提供することができる。
【０１０８】
本発明の一態様においては、通信システムへの負担が少ないメッセージ処理システムを提供することができる。
【０１０９】
【図面の簡単な説明】
【図１】  本発明の移動エージェントが動作する分散ネットワーク環境を示す図である。
【図２】  本発明におけるクライアントシステムまたはサーバシステムのハードウェア構成の一実施例を示すブロック図である。
【図３】  本発明のクライアントサイトまたはサーバサイトにおける処理要素の一実施例を示すブロック図である。
【図４】  本発明のメッセージ・パケットの一例を示す概念図である。
【図５】  本発明のクライアント（またはサーバ）サイトにおける処理要素の一実施例を示すブロック図である。
【図６】  本発明の好適な実施例におけるコンポーネント間のオブジェクト・インタラクション・ダイアグラムである。
【図７】  本発明の好適な実施例における会話内容監視部品管理テーブルを示す概念図である。
【図８】  本発明のサーバ（またはクライアント）サイトにおける処理要素の一実施例を示すブロック図である。
【図９】  本発明の好適な実施例におけるコンポーネント間のオブジェクト・インタラクション・ダイアグラムである。
【図１０】  本発明の好適な実施例におけるインタプリタ管理テーブルを示す概念図である。
【図１１】  本発明の好適な実施例におけるトランスレータ管理テーブルを示す概念図である。
【図１２】  本発明のクライアント（またはサーバ）サイトにおける処理要素の一実施例を示すブロック図である。
【図１３】  本発明のサーバ（またはクライアント）サイトにおける処理要素の一実施例を示すブロック図である。
【図１４】  本発明のエージェント・コミュニケーション・システムをネットワーク上移動させる場合の処理手順の一実施例を示すフローチャートである。
【図１５】  本発明の好適な実施例におけるコンポーネント間のオブジェクト・インタラクション・ダイアグラムである。
【符号の説明】
１００  ノード・システム
２００  エージェント・コミュニケーション・システム
２０３  エージェント・コミュニケーション言語マネジャ
２０５  会話スレッド制御部
２０７  会話スレッド
２１１  メッセージ・ログ
２１３  ＩＤジェネレータ
２１５  会話内容監視部用ローダ
２１７  会話内容監視部
２１９  トランスレータ用ローダ
２２１  トランスレータ
２２３  インタプリタ用ローダ
２２５  インタプリタ
【図１】
0003883647.tif 000003
【図２】
0003883647.tif 000004
【図３】
0003883647.tif 000005
【図４】
0003883647.tif 000006
【図５】
0003883647.tif 000007
【図６】
0003883647.tif 000008
【図７】
0003883647.tif 000009
【図８】
0003883647.tif 000010
【図９】
0003883647.tif 000011
【図１０】
0003883647.tif 000012
【図１１】
0003883647.tif 000013
【図１２】
0003883647.tif 000014
【図１３】
0003883647.tif 000015
【図１４】
0003883647.tif 000016
【図１５】
0003883647.tif 000017