(57)【特許請求の範囲】
【請求項１】
コンピュータにより実行される機能要素を備えているクライアントとサーバとの間の処理であって、この処理方法が、
(i) 当該クライアントが、当該サーバへエージェントを送信する、ステップと、
(ii) 当該サーバが、当該エージェントが受信されたことを確認する電子メール通知を、少なくとも当該クライアントに送信する、ステップと、
(iii) 当該サーバが、当該エージェントからの命令に基づいて、当該サーバ上の特定のイベントをモニタする、ステップと、
(iv) 当該サーバが、当該イベントが発生したときに当該イベントに応じて、一つまたは複数のアクションを行う、ステップとを含み、かつ、
(v)   当該サーバが、当該エージェントからの命令に基づいて、次の処理、
・当該エージェントを当該サーバに常駐するように、サーバアドミニストレータに、維持及び管理させる処理、
・エージェント・オブジェクトを作成する処理、
・当該エージェントを固有のイベントにマップし、かつ当該イベントが発生すると前記エージェントをトリガする処理、
・複数の当該アクションを含むアクション・リストを処理する処理、
・当該クライアントによって作成されたエージェント・オブジェクトが送信された時刻、当該エージェント・オブジェクトがイベントに起因してトリガした時刻、イベント・エージェントを繰り返す場合に当該エージェントをトリガした回数を含むエージェントについての全ての重要な情報および送信されたエージェントの合計数、トリガしたエージェントの数、クライアント側で削除されたエージェントの数、期限切れになったエージェントの数を含む一般情報をログ記録させるための処理、
の内の少なくとも一つを実行するステップと
を有する処理方法。
【請求項２】
当該クライアントが、アプリケーションによって提供される付加価値サービスを含むエージェントを送信する、請求項１に記載の処理方法。
【請求項３】
当該エージェントが、ニュースリーダを用いて作成される、請求項２に記載の処理方法。
【請求項４】
当該サーバは、自身のサーバで特定可能なタイプのイベントのみをモニタする、請求項１に記載の処理方法。
【請求項５】
当該サーバが、Java（登録商標）および／またはJavascriptプログラムの実行を含むアクションを行う、ステップを含む、請求項１に記載の処理方法。
【請求項６】
当該クライアントが、当該Java（登録商標）および／またはJavascriptプログラムを前記サーバへ供給する、ステップを有する、請求項５に記載の処理方法。
【請求項７】
当該サーバが、当該エージェントを作成したクライアントが受けるアクセス制御セキュリティ制限と同じ制限下で、イベントをモニタし、アクションを実行する、請求項１に記載の処理方法。
【請求項８】
当該サーバが、当該エージェントの有効期間が期限切れになったことを通知する電子メール通知を、当該クライアントに送信する、ステップをさらに有する、請求項１に記載の処理方法。
【請求項９】
当該クライアントが、当該サーバでサポートされているエージェント・タイプの既定の組であるエージェント・テンプレートであって、当該クライアント側で選択可能なエージェント・テンプレートを当該サーバから受信する、ステップをさらに有する、請求項１に記載の処理方法。
【請求項１０】
当該サーバが、当該クライアントにより、エージェント・タイプのリストから選択されかつ送信されるエージェントを実行する、請求項１に記載の処理方法。
【請求項１１】
当該サーバが各エージェントに一意の名前を割り当てる、ステップを含む、請求項１に記載の処理方法。
【請求項１２】
当該サーバが当該エージェントに一意のトークンを割り当てる、ステップを含む、請求項１に記載の処理方法。
【請求項１３】
コンピュータにより実行される機能要素を備えているクライアントとサーバとを含むクライアント−サーバシステムであって、
当該クライアントが、当該サーバへエージェントを送信する手段を有し、かつ、
当該サーバが、
(i) 当該クライアントから送信されたエージェントを受信したことを示す電子メールを、当該クライアントを含む複数のクライアントへ通知する手段と、
(ii) 当該エージェントからの命令に基づいて、当該サーバ上の特定のイベントをモニタする手段と、
(iii) 当該イベントが発生したときに当該イベントに応じて、当該クライアントにより行われる一つまたは複数のアクションを行う手段とを含み、かつ、
(iv) 更に、当該サーバが、当該エージェントからの命令に基づいて、次の処理、
・そのサーバの常駐のエージェントをサーバアドミニストレータに、維持及び管理させる処理、
・エージェント・オブジェクトを作成する処理、
・当該サーバに当該エージェントを固有のイベントにマップさせ、かつ当該イベントの発生でトリガさせるための処理、
・当該クライアントによって作成されたエージェント・オブジェクトが送信された時刻、当該エージェント・オブジェクトがイベントに起因してトリガされた時刻、イベント・エージェントを繰り返す場合に当該エージェントがトリガされた回数を含むエージェントについての全ての重要な情報および送信されたエージェントの合計数、トリガされたエージェントの数、クライアント側で削除されたエージェントの数、期限切れになったエージェントの数を含む一般情報をログ記録させる処理、
の内の少なくとも一つの処理を実行する手段と、
を有するサーバ・クライアントシステム。
【請求項１４】
当該クライアントがユーザに当該アクションを予め明示するように促す、手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【請求項１５】
当該サーバが、当該エージェントに基づいて当該各手段に前記所定の処理を実行させる、請求項１３に記載のサーバ・クライアントシステム。
【請求項１６】
当該クライアントが、アプリケーションによって提供されている付加価値サービスを含む当該エージェントを送信する、手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【請求項１７】
当該エージェントが、ニュースリーダにより作成される、請求項１５に記載のサーバ・クライアントシステム。
【請求項１８】
特定なイベントをモニタする当該手段が、自身のサーバで特定されるイベントのタイプのみをモニタする、請求項１３に記載のサーバ・クライアントシステム。
【請求項１９】
当該サーバが、Java（登録商標）および／またはJavascriptプログラムの実行を含むアクションを行う、手段を含む、請求項１３に記載のサーバ・クライアントシステム。
【請求項２０】
当該サーバが、当該Java（登録商標）および／またはJavascriptプログラムを当該クライアントに供給する、手段を有する、請求項１９に記載のサーバ・クライアントシステム。
【請求項２１】
当該サーバが、当該エージェントを作成したクライアントが受けるアクセス制御セキュリティ制限と同じ制限下で、イベントをモニタし、アクションを実行する、手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【請求項２２】
当該サーバが、当該エージェントの有効期間が期限切れになったことを通知する電子メール通知を、当該クライアントに送信する、手段を有する、請求項１７に記載のサーバ・クライアントシステム。
【請求項２３】
当該クライアントが、当該サーバでサポートされているエージェント・タイプの既定のセットであるエージェント・テンプレートであって、当該クライアント側で選択可能なエージェント・テンプレートを当該サーバから受信する手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【請求項２４】
当該クライアントが、当該クライアント側で選択可能な、異なるエージェント・テンプレートおよび当該サーバで利用可能なイベントに関する情報をダウンロードする、手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【請求項２５】
当該サーバが、当該クライアントにより、エージェント・タイプのリストから選択されかつ送信されるエージェントを、実行する手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【請求項２６】
当該サーバが各エージェントに一意のトークンを割り当てる、手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【請求項２７】
当該クライアントが当該エージェントに一意のトークンを割り当てる、手段を有する、請求項１３に記載のサーバ・クライアントシステム。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、コンピュータ環境におけるクライアント・サーバ・インタラクションに関する。特に、本発明は、コンピュータ環境における非同期クライアント・サーバ・トランザクションのためのエージェントの作成および動作に関する。
【０００２】
【従来の技術】
ウェブサーバ・ユーザは、ウェブサーバのコンテンツの状況を常に把握しているのが困難であった。現在、ユーザがウェブサイト上のドキュメントにアップデートを待っている場合、ユーザは、そのドキュメントを調べるために、ウェブサーバでホストとして働くウェブサイトを定期的に訪れなければならない。ドキュメントがアップデートされる時を、ユーザに自動的に知らせる方法がない。このことは、ユーザにしばしばサーバを訪れることを強制し、それは、増加するネットワークトラフィック、サーバ上のより高い負荷、より遅い応答時間、およびユーザに対する不都合を引き起こす。
【０００３】
その上、ユーザは、時々定期的な催促を要求し、また、定期的にあるタスク（例えば、誰かの誕生日に電子メールを送信すること）を行うこと必要とする。ユーザのタスクが、時間が非常にクリティカルである場合がある。ウェブサーバは、現在、このようなタスクを行う方法を備えていない。これは、ウェブサーバが、受動的であり、かつユーザがそれに接続したときしかタスクを行わないからである。
【０００４】
現在までのところ、どのウェブサーバも、この問題を解決していない。これらは、ユーザに定期的にウェブサイトをポーリングすることを要求する。このことは、ユーザが重要な日付を覚えていなければならず、しかもユーザが日付を忘れた場合、ユーザは、その日付に関連する重要なタスクを実行することは出来ないことを意味する。上記したように、現在のアプローチは、ネットワークトラフィックを増加させ、ウェブサーバにより高い負荷を引き起こすことに加え、ルーチン・タスクを自動化するための方法を備えていない。
【０００５】
インテリジェントに、あるイベントに対してサーバをモニタするサーバ・エージェント・システムを提供することは、有利であろう。クライアントが、これらのイベントに応じて、クライアントによって特定される動作を、クライアントからの更なる如何なる関与も必要とせずに、行うエージェントを容易に作成することが出来るサーバ・エージェント・システムを提供することは、更に有利である。
【０００６】
【課題を解決するための手段】
本発明は、サーバ・エージェント・システムを提供する。このシステムは、クライアントによって特定される、サーバに発生するイベントを非同期でモニタする。このサーバは、これら特定のイベントに応じてアクションを行う。さらに、本発明は、モニタリング・サービスを行うエージェントを、ユーザが、容易に作成し、かつ維持することが出来るシステムを提供する。
【０００７】
本発明の好適な実施例は、サーバ上の特定のイベントをモニタし、クライアントによってサーバに送信されたエージェントを提供する。予め定義されたイベントが発生すると、エージェントは各イベントに応じて一アクション又は一組のアクションを実行する。このアクションは、クライアントによって既定されている。
【０００８】
エージェントは、一旦それがサーバに置かれると、クライアントの更なる介入を要求しない。エージェントが行うことが出来るイベントのタイプは、ホスト・サーバによって特定される。
【０００９】
エージェントは、クライアント、または、ニュースリーダによって作成される。ニュースリーダによって作成される場合、エージェントは、アプリケーションによって提供された付加価値サービスとして扱われる。
【００１０】
エージェントが行うアクションのタイプは、クライアントが要望するほとんど全てとすることが出来、しかもJava（登録商標）および／またはJavascriptプログラムの実行を含むことが出来る。Java（登録商標）および／またはJavascriptプログラムは、クライアントまたはサーバによって供給される。エージェントのイベントおよびアクションは、エージェントの実行を依頼したクライアントと同じアクセス制御およびセキュリティ制限を受ける。
【００１１】
電子メールは、クライアントによってサーバに実行依頼されたエージェントが受信されたことを確認する通知を、サーバからクライアントに送信するために使用される。電子メール機能は、多様であり、クライアントが、電子メール通知をクライアントのグループに送信することを特定することも可能である。サーバは、エージェントが期限切れになったことをクライアントに通知するためにも、電子メール通知を使用する。
【００１２】
サーバで利用可能なエージェントのタイプは、既定されている。これらの既定されたエージェントは、エージェント・テンプレートとして供給され、かつクライアントがエージェントを構築するためのビルディングブロックを構築している。サーバは、それが理解するエージェントしか供給することが出来ない。サーバは、エージェント・ホームページ上で利用可能なエージェント・テンプレートおよびイベントを公開する。クライアントは、サーバで利用可能なエージェントタイプのリストからエージェントを選択し、かつサーバにエージェントを実行依頼する。
【００１３】
サーバは、また、クライアントのための管理サービスに対し常駐のエージェントを提供する。クライアントは、各サーバ上でそれらのエージェントをモニタし、かつ管理する。各エージェントには、サーバによって一意の名前およびトークンが割り当てられる。名前は、また、クライアントによってエージェントに割り当てることも出来る。サーバ・アドミニストレータには、そのサーバに常駐のエージェントを維持し、かつ管理するための管理機能が提供される。
【００１４】
エージェント・オブジェクトは、一意の識別でサーバ上に作成される。エージェントは、次いで、適切なイベントにマップされ、かつそのイベントの発生によりトリガされる。エージェントがトリガされると、そのアクション・リストが処理される。アクションは、実行され、かつエージェント情報および統計値は、ログ記録される。
【００１５】
本発明の他の観点および利点が、具体例により、本発明の原理を示す添付の図面と共に以下の詳細な説明から明らかになるであろう。
【００１６】
【発明を実施するための形態】
本発明は、コンピュータ環境におけるサーバ・エージェント・システムで具体化される。本発明のシステムは、サーバおよびクライアント間の非同期トランザクションのための方法を提供する。さらに、本発明は、ユーザが、非同期トランザクションを行うエージェントを作成し、かつモニタすることが容易に出来るシステムを提供する。
【００１７】
図1を参照すると、本発明の好適な実施例により、クライアント101は、インターネット、またはイントラネットのようなコンピュータ・ネットワーク104を介してサーバ105に置かれるエージェントを作成し、かつモニタすることが出来る。これらのエージェントは、サーバ105上の特定の非同期イベントをモニタし、かつこれらのイベントに応じてユーザに特定されたタスク（例えば、ある特定の日付に、思い出させるためのメモメッセージを、クライアントに電子メールする）を行う。
【００１８】
クライアントは、従来のサーバ製品を使用すると、コンピュータ・ネットワークを介してサーバ上のドキュメントを見ることしか出来ない。サーバは、クライアントがサーバに接続している間のみ、サービスを提供する。つまり、クライアント・サーバ・トランザクションは、同期している。しかしながら、多くの状況において、非同期サーバ・レスポンスを備えていることが、望ましいであろう。
【００１９】
サーバが、（なんらかのメカニズムを使用して）クライアントにイベントの発生を通知することが出来るなら、それは、非常に役に立つであろう。例えば、クライアントは、特定の本が貸出手続きで利用可能な場合には、図書館（サーバ）から通知が来るようにすることを要請することが出来る。また、クライアントは、特定のフライトで席が利用可能になった場合、航空会社チケット・サーバから電話が来るようにすることを要請することが出来る。これらは、サーバからのレスポンスが非同期である具体例である。このシナリオには、二つの別個の段階がある：
1. クライアントは、特定のイベントが発生すると、サーバにいくつかのアクションを実行することを、要請する；そして
2. サーバが、クライアントの要請の状況を常に把握し、かつそのイベントが発生すると、アクションを行う。
【００２０】
一般に、イベントおよび関連したアクションがある。本発明の主な特徴は、クライアントが、サーバにイベントをモニタしかつアクションを実行することを要請した後、サーバがサービスを保証する責任を引き継ぐことである。クライアントは、サーバに接続されているままである必要はない。
【００２１】
イベント／アクションの組み合わせは、エージェント・オブジェクトと呼ばれる。所望のイベントが発生すると、サーバは、クライアントに代わって、イベントをモニタし、かつアクションをトリガする。つまり、サーバは、イベント／アクションに関してクライアントのエージェントの働きをする。
【００２２】
クライアントは、エージェント・オブジェクトを作成し、かつサーバにそれらを引き渡す。イベント／アクションの組み合わせは、サーバにクライアントのエージェントとして存在する。エージェント・オブジェクトは、クライアントにサービスを提供する、しかし、エージェントは、そのサーバによって管理され、モニタされ、かつ制御される。タームサーバサイドエージェントも、また、エージェントを記述するために使用される。
【００２３】
用語「エージェント」には、非常に多くの意味がある。これと組み合わせた用語には、様々な意味がある。自律的なエージェントは、サイトの間で移動するプログラムであり、いつ移動するべきか、および何を成すべきかを単独で決める。これらは、特別なサーバの間でしか移動することが出来ず、現在、インターネットでは普及していない。
【００２４】
インテリジェント・エージェントは、製品を選ぶ、またはフォームの穴埋めによってユーザをガイドする、またはユーザが事象を見つけることを助けさえするような、事象でユーザを助けるプログラムである。これらは、一般に、ネットワーキングとほとんど関係ない。
【００２５】
エージェントを備えた作業の多くは、ウェブ・エージェントと何も関係ない人工知能エリア（学習エージェント）にある。ウェブ・エージェントは、クライアントが、イベントに応じて実行されなければならないサーバに、アクションを特定することが出来る小さい実体である。
【００２６】
エージェントは、また、収集／学習情報をマシンからマシンに移動させる移動プログラムとして見ることも出来る。エージェントは、また、巨大な量のデータ上で作業する小さいプログラムとも見られる。データを異なる位置からエージェント・サイトに移動させる代わりに、プログラムは、そのデータ・サイトへ移動する。一つのサイトから別のサイトにプログラム（エージェント）を移動させるコストは、取るに足りない。これは、ウェブクローラ(web crawler)背後の根本的理由である。この典型的具体例は、バケーションパッケージに関する最高のディールを探して一つのサイトから別のサイトに移動するエージェントである。
【００２７】
本明細書において使用されるエージェントは、イベントおよびアクションを含むオブジェクトである。イベントとアクションはどちらも、複合プログラムとして実施することが出来る。エージェントが行うことが出来ることは、完全に、それを実施するプログラマ次第である。
【００２８】
本発明は、クライアント・サイドからエージェントを管理するための必要なツールを提供する。エージェントは、本明細書において、サーバからのサービスを要求するが、クライアントによって作成されるオブジェクトとして記述されている。つまり、エージェントは、サーバ上で起こっている事象（イベント）に興味があり、および、それはサーバ上でクライアントに代わって実行する。
【００２９】
当業者は、本明細書における記述が、サーバ・サイド上のエージェントに集中するにもかかわらず、エージェントは、クライアント・サイドに存在することも出来、かつサーバ、またはおそらく別のクライアントによって定義することが出来ることを、容易に理解するであろう。
【００３０】
（エージェントの分析）
上述のように、エージェント・オブジェクトは、二つの部分（イベントおよび設定されたアクション）を有する。イベントは、そのアクションをトリガするものである。それは、特定の時刻（例えば、1996年3月4日月曜日午前9時）、または事象（例えば、フライトXの席が利用可能である、および接続しているフライトYの席もまた利用可能である、およびホテルHの宿泊設備が利用可能である）の論理結合と同程度に単純化させることが出来る。
【００３１】
イベントは、また、繰り返されるイベント（例えば、隔火曜日の午後6時30分）とすることも出来る。このような繰り返されるイベントを、決して終了しないエージェントとすることも出来るであろう（すなわち、それを作成したクライアントがそうすることを要請する場合のみ、それは終了することが出来る）。理想的には、クライアントが興味をもつ如何なるタイプのイベントも、サポートされる。
【００３２】
アクションまたはアクションのセットには、特定のイベントが発生した場合に、クライアントが行いたい如何なるものも含まれる。このアクションは、クライアントに電子メール・メッセージを送信すると言うように単純なものとすることも出来るし、また、これを、一連のアクション（例えば、フライトXおよびYの予約をする、ホテルHに部屋を予約する、スピィーディ車レンタル店で車を予約する、空港まで乗せてもらうことを頼んでいる友人Fにメッセージを送信する、新聞代理店に新聞の配信を一時停止するよう依頼するメッセージを送信するなど）とすることも出来る。アクションには、ファンドがクライアントのスイスの銀行預金口座に預けられたことを知らせる彼への電話（または、ポケットベル（登録商標））呼出しを設定することも出来る。より複雑なアクションの場合、エージェント・オブジェクトが作成されると、クライアントによって実行依頼されたJava（登録商標）プログラム（または、JavaScriptスクリプト）を実行するようサーバに依頼することが出来る。
【００３３】
エージェントは、それらが実行依頼されると将来のある時点でトリガされることについて、保証されていない。エージェントが待っているイベントが絶対に発生しないことも、あり得る。例えば、エージェントが、ファイルに対する変更を待っているが、そのファイルは、削除される場合、そのイベントは、以後起こるはずがない。これは、エージェントの終結（異常終了）を引き起こす。エージェントのオーナーは、このような失敗を示す通知を受信する。
【００３４】
（エージェントの作成）
クライアントは、イベントおよびアクションを特定するための方法を必要とする。エージェントを作成することは、イベントおよび関連したアクションのスペックを含む。これは、イベントをチェックする小さいプログラムを書くことに似ている。クライアントが、ほとんどあるいは全く変更せずに使用することが出来る標準エージェント・テンプレートのセットが、本発明によって提供される。例えば、ウェブページへの変更をモニタするエージェントは、標準テンプレートである。時間イベントでトリガされるエージェントは、別の標準テンプレートである。ほとんどの場合、クライアントは、これらのテンプレート・エージェントを修正し、かつそれにより行われる。
【００３５】
ニーズがテンプレート・エージェントによって満たされないこれらのクライアントのための高性能なエージェントを作成するための機能も、また、本発明によって提供される。
【００３６】
次のステップは、エージェント・オブジェクトをサーバへ転送するステップである。一旦エージェント・オブジェクトが正常にサーバに転送され（または、送信されて）、かつサーバによって確認されると、（いくつかの破局的なイベントによりサーバがその責任を成し遂げることが防げられる場合を除いて）クライアントは、要請されたサービスが行われる保証をリセットすることが出来る。エージェント・オブジェクトは永続的であるので、サーバ・クラッシュが、エージェント・オブジェクトの損失を意味しないことに留意されたい。
【００３７】
（イベントのタイプ）
エージェントは、異なるタイプのイベントによってトリガさせることが出来る。シンプルな時間イベントも有り、関係データベースによって生成される複雑なイベントも有る。以下は、可能なイベントタイプのリストの具体例である。
時間に関するイベント
特定の日付および時刻でのトリガ。
定期的なトリガ（繰り返されるイベント）。
日付がXで、かつ曜日がYである場合のトリガ。
日付がXで、曜日がYで、かつ偶数の（または、奇数の）月である場合のトリガ。
ドキュメントに関するイベント
あるタイプの新規なドキュメントが、サーバに作成される。
特定のドキュメントの新規なバージョンが、サーバに作成される。
あるユーザによる新規なドキュメントが、作成される。
ドキュメントが、削除される。
ドキュメントが、移動する、またはその名前が変えられる。
特定のドキュメントが、サーバ上で修正される。
特定のドキュメントが、あるユーザによってアクセスされる。
特定のユーザが、サーバ上の任意のドキュメントにアクセスする。
特定のユーザが、サーバ上のドキュメントを修正する。
特定のタイプのドキュメントが、サーバに作成される。
管理イベント
これらのエージェントは、サーバ・アドミニストレータに有益である。エージェ
ントは、特定のユーザによるアクセス、特定ユーザの接続切断、低いディスクス
ペース、ログ・ファイル・サイズ、などを探すことが出来る。サーバ・ライタお
よびサーバ・アドミニストレータは、イベントを検出するための方法を提供する。
ユーザは、サーバによって公開されたイベントに登録することが出来る。（サー
バの完全制御権を有する）サーバ・アドミニストレータは、新規なイベントを加
え、かつ公開することが出来る。
プログラム検出イベント
高度なユーザは、イベントを検出しかつエージェントをトリガするために、
Java（登録商標）/JavaScriptプログラムを実行依頼するかもしれない。この場合に
も、 ユーザは、任意のJava（登録商標）プログラムをエージェントの一部とし
て実行依頼する ことは出来ないであろう。サーバは、クライアントがそれらのエ
ージェント で使用することが出来る特定のJava/JavaScriptプログラムを提供する。
このようなJava（登録商標）/JavaScriptプログラムの利用可能なセットは、サー
バ・アドミニストレータ によって決定される。
【００３８】
一般に、クライアントは、許可およびアクセス制御のもとに、任意のイベントを検出する能力を有する。エージェント・フレームワークは、イベントを検出するために直接サービスを提供する。また、フレームワークは、クライアントが、Java（登録商標）/Javascriptプログラムを書くことによって、興味あるイベントを検出するために使用することが出来るサービス・アクセス・ポイントをイネーブルにする。エージェントは、サーバによって公開されたイベントしか登録することが出来ない。クライアントは、如何なる任意のイベントに登録することが出来ない。これは、サーバごとに、提供されるサービスの種類が異なり、かつ、サーバ・ライタが、それらのサーバからどのイベントが利用可能であるかを決めるからである。
【００３９】
エージェントをランさせることが出来るすべてのサーバは、エージェントが使用することが出来るイベントの完全なセットを公開する。このことは、サーバ・アドミニストレータが、エージェントによって検出可能な如何なるイベントをも支配する完全制御を有することを可能にする。利用可能にされるイベントのタイプは、サーバ・ライタによってのみ制限され、エージェント・フレームワークによっては制限されない。エージェント・フレームワークは、デフォルトで、上記したサーバのようなサーバの中で最も一般的なイベントの基本セットを提供する。
【００４０】
図2を参照すると、クライアントは、これらイベントの任意の組み合わせを特定することができる。例えば、クライアント201は、「ドキュメントAが、1997年1月1日前に修正されると、クライアントにメールを送信する。」を特定することが出来る。イベント206が発生すると、すなわち、ドキュメントAが、1997年1月1日前に修正されると、エージェントは、サーバ205に電子メール・メッセージ207をクライアント201に送信させる。クライアントは、また、電子メール・メッセージ208、209、210を、いくつかのクライアント202、203、204に送信することも特定することが出来たであろう。
【００４１】
（アクションのタイプ）
アクションのタイプには、クライアントが思いつくものは全て含まれる。なぜならば、クライアントは、クライアントが望む如何なるものも行うように、（アクセス制御のもとで）Java（登録商標）/JavaScriptプログラムを書くことが出来るからである。しかし、大部分のクライアントに対し、最低限、アクションのタイプの以下の具体例は、提供されるべきである：
・ 特定ユーザに特定コンテンツを備えたメール・メッセージを送信する。
・ （サーバが、電話／ファックスへのアクセスを有すると考えられる）特定のユーザ
に、電話、ページを起動する（または、ファックスを送信する）。
・ ニュースグループに新規なメッセージを掲示する。
・ データベース（または、ログ・ファイル）に、エントリをログ記録する。
・ ウェブ・ページに掲示する。
・ HTTP通知を送信する。
・ 別のエージェントをサーバ上でランさせる。
・ トリガされた場合、サーバにより供給されたJava（登録商標）/JavaScriptプログラムを実行する。
・ SNMPアクション。
【００４２】
電子メール・メッセージ、ファックス、ページなどを送信するには、全て、サーバ上に類似したアプリケーション・プログラミング・インタフェース(API)が必要である。
【００４３】
イベントと同様に、クライアントは、トリガに応じて如何なることも行うことが出来る。エージェント・フレームワークは、クライアントが、それらが好む如何なることも行うために使用することが出来るサービスを提供する。
【００４４】
サーバ上のアクションの利用可能なセットは、サーバ・ライタ／アドミニストレータによって制御される。エージェントは、サーバによってサポートされるこれらのアクションしか行うことが出来ない。エージェント・フレームワークは、サーバ・ライタがこれらの特定のアクションを実施するために必要なAPIを提供する。（メール・メッセージを送信すること、ウェブ・ページに掲示することのような）大部分の一般的なアクションは、ベース・エージェント・フレームワークの部分である。
【００４５】
（エージェントの管理・クライアントビュー）
一旦エージェントが作成され、かつサーバに転送されると、それらを制御する（使用禁止にする、除去する、コピーする、一覧を示す、など）ための機能が、必要である。クライアントは、クライアントによって作成された全てのエージェントのリストをレビューすることを希望することが出来る。同様に、サーバ・サイドでは、そのサーバに常駐のエージェントの全てを管理するための機能が、必要である。以下のパラグラフは、クライアントの観点に焦点を合わせる。
【００４６】
（エージェントの作成）
すべてのサーバは、エージェント・テンプレートと呼ばれるエージェント・タイプが既定されたセットをサポートする。これらは、任意のオブジェクト指向言語のクラスに類似している。クライアントは、そのテンプレートのうちの一つのインスタンスを作成し、かつそれをサーバに実行依頼しなければならない。クライアントによって実行依頼されるエージェントの任意のインスタンスは、クライアントに代わってサーバでランする。これを容易にするために、エージェント・サービスをサポートしているすべてのサーバは、エージェント・ホームページを提供する。
【００４７】
エージェント・ホームページは、そのサーバで利用可能な異なるエージェント・テンプレートの全てを記述し、かつ基本的にフォームズ・インタフェースである。（テキストの記述を含めて）すべてのエージェント・テンプレートの完全な詳細が、このページで利用可能である。クライアントは、このページをナビゲートすることが出来、エージェント・テンプレートのうちの一つのインスタンスを作成することが出来、かつそれをサーバに実行依頼することが出来る。エージェントのインスタンスを作成する処理を更に容易にするために、サーバは、エージェント・テンプレートを異なるカテゴリ（ドキュメント関連、時間関連、SNMP関連、動作システム関連、データベース関連など）にグループ化することが出来る。クライアントは、エージェント・テンプレートの階層的なリストをナビゲートすることが出来る。
【００４８】
（コンテクスト依存エージェントの作成）
一部のクライアントは、エージェントを作成するためにエージェント・ホームページへ行くことが出来ないかもしれない。エージェント・サービスをサポートするニュース・サーバを考慮すべきである。クライアントは、新規なアーティクルが特定のニュースグループの特定のスレッドに加えられると、クライアントに通知するエージェントを作成することが出来る。クライアントは、ホームページについて何も知ることが出来ない。
【００４９】
アプリケーション特定の（または、コンテクスト特定の）エージェントを容易にするために、ウェブ・ブラウザのメタ（または、サービス）・メニュを、使用することが出来る。メタ・メニュは、ドキュメント・メタ情報にアクセスするために使用される。エージェントは、ドキュメント・ライタが、サポート出来るかもしれないメタ機能（アプリケーションによって提供された付加価値サービス）として扱われる。
【００５０】
例えば、ニュース・リーダは、上記したようにクライアントがエージェントを作成させることを可能にするメニュ項目を、メタ・メニュに加えるであろう。このメニュオプションを選択することによって、アプリケーション（ニュース・リーダ）は、エージェント・テンプレートのインスタンスを作成し、かつそれを（クライアントによる確認の後）サーバに実行依頼する。これは、クライアントが、エージェントをそれらのアプリケーションのコンテクストにおいて実行依頼することを可能にする。
【００５１】
アプリケーション・ライタは、この機能を拡張的に利用することが期待される。遅かれ早かれ、大部分のエージェントがこのように作成されることは、当然と思われる。これによって、また、コンテンツ・プロバイダが、クライアントがエージェントについての何かを行うことなしにまたは知ることなしに、エージェント・サービスを提供することが出来る。
【００５２】
（エージェント編集）
ソフトウェアの他の何かと同様に、エージェントを作成することができるのみでは、十分ではない。エージェントを修正し、かつ保存するための機能も、また、必要である。例えば、クライアントは、特定の会議時刻で通知のためのエージェントを作成するかもしれない。しかし、後に、クライアントはその通知時刻を変更したいと思うかもしれない。エージェントを識別するためにクライアントがその名前を使用することが出来るように、エージェント（エージェントID）に名前をつけることは、可能でなければならない。名前付け方式は、エージェントIDをクライアント・サーバ・ペア（タプル）全体に一意に決定するように、クライアントの名前とサーバ名とを使用する。これは、既存のエージェントが修正されて、再実行依頼される一つのタイプのエージェント編集である。
【００５３】
クライアントは、また、サーバに実行依頼する前に、エージェントのコピーを保存したいと思う場合がある。例えば、クライアントは、異なる時刻用の時刻通知エージェントを作成することが出来る。この演算を何度も行う代わりに、クライアントは、一つのエージェントを作成し、それをコピーし、時間成分を修正し、およびそれらをサーバに実行依頼することが出来るであろう。
【００５４】
エージェントを実行依頼している何れのクライアントも、エージェントサブミッションについて、電子メールによるサーバからの確認を受信する。つまり、クライアントは、エージェント・サービスを使用するために、電子メール・アドレスを有しなければならない。メールメッセージは、エージェントの名前（エージェント識別）、作成時刻、その他について詳細を提供する。クライアントは、このような確認を取り扱うために、それらのメール・クライアント（メール・フィルタ）を使用しなければならない。
【００５５】
電子メールは、サイトの独立性とモビリティを確実にするために、通信チャネルとして使われる。ユーザがかれらの電子メール・アカウントへのアクセスを有するならば、ユーザは、それらのエージェントに関する詳細に、どこからでもアクセスすることが出来る。エージェントを実行依頼しているクライアントは、また、その確認が全てのグループに送信されるように、特定することも出来る。サーバによって送信される確認メッセージが消失する場合、ユーザは、別のエージェントに実行依頼しなければならない。確認メッセージの消失は、そのエージェント自体がサーバによって受け入れられなかったことを意味するものではない。それは、クライアントがサーバによって出された確認を受信しなかったことを示すに過ぎない。
【００５６】
クライアントは、それらがそれらのエージェントに対して好む任意の名前を選ぶことが出来る。サーバは、実行依頼された（幾分URIに似た）各々のエージェントに対して一意に決定されるIDを生成する。このエージェントIDは、上述した確認メッセージの中でクライアントに送信される。クライアントは、それらがエージェントに関してサーバと通信するときに、このIDを使用しなければならない。
【００５７】
エージェントIDは、エージェントに関する詳細（作成時刻／日付、ユーザ名、ユーザ・アドレス等）を含む。本明細書での目的は、エージェントIDをサーバ上のページにマップすることである。クライアントは、エージェントIDをクリックし、そのエージェントについての情報を持ち出し、かつそれを編集することが可能である。このことは、全てのブラウザ・インタフェースをエージェント・ユニフォーム（クリックできるオブジェクト）にする。
【００５８】
クライアントは、以下のデータを制御／レビューすることが出来る：
・ 利用可能なエージェント・クラス（またはカテゴリ）のリスト
・ 重要なエージェント・インスタンスのリスト
・ ユーザによる
・ （認証を受けた）ユーザグループによる
・  （認証を受けた）組織による
・ エージェント・クラスによる
・ トリガーされたエージェントのリスト
・ ユーザによる
・ （認証を受けた）ユーザーグループによる
・ （認証を受けた）組織による
・ エージェント・クラスによる
・ エージェントを削除する
・ エージェントを中止する（削除することと同じではない）
・ エージェントを再実行依頼する
・ エージェントの統計値を見る。
【００５９】
サーバによって返送されたエージェントIDを覚えていない（または、サーバにアクセスしなかった）クライアントは、それらのエージェントの全てを列挙するためにこのメカニズムを使用することが出来る。例え、このことが、多数のエージェントを実行依頼したクライアントにとっては多少退屈であるとしても、これは、エージェント情報にアクセスする別の方法を提供する。
【００６０】
（エージェント管理）
クライアントは、それらによって実行依頼されるエージェントの全てを、サーバ・ベースごとに、見ることが可能である。クライアントが、エージェントを除去し、エージェントを中止し、かつエージェントを使用可能にすることは、簡単である。エージェント・オブジェクトが中止されると、それは、サーバに残ったままであるが、それは、アクティブではない（それは、イベントに従っていない）。つまり、 イベントが発生しても、エージェントはトリガされない。このような休止中のエージェントは、再び使用可能とすることが出来、かつそれらは、ノーマルなエージェントになる。
【００６１】
エージェントが除去されると、サーバは、そのエージェント・オブジェクトについてもはや何も知らない。これは、物理的にサーバ上のエージェントのリストから除去される（ 削除される）。エージェントを（再び）見ると、エージェントについて関連した全ての情報（実行依頼された日付／時刻、起動回数、最後に修正された日付／時刻など）が、利用可能となる。
【００６２】
（エージェントの管理・サーバビュー）
サーバ上のエージェントを管理することは、複雑である。サーバは、サーバ故障、エージェント・オブジェクトの認証などの場合、エージェント・オブジェクト永続性、エージェント情報ロギング、エラー回復を扱う。
【００６３】
（エージェント・オブジェクト永続性）
クライアントによって実行依頼されたエージェントが、サーバでアクティブである場合、クライアントは、動作が行われることを確信する。しかし、サーバがある条件に起因してクラッシュする場合（または、それがアドミニストレータによるシャットダウンである場合）、何が起こるであろうか？ サーバが再スタートする場合、サーバがクラッシュした直前にアクティブであった全てのエージェントは、復活しなければならない。このことは、エージェントの状態が永続性であることを要求する。サーバ・クラッシュおよびこのような破局的なイベントからエージェントを回復させるために、アーキテクチャは、エージェント永続性を保証するためにチェックサムおよび他のエラー回復スキーマを実施する。
【００６４】
（エージェント・アクティビティ・ロギング）
サーバは、エージェント・オブジェクトについて全ての重要な情報をログ記録する。情報は、エージェント・オブジェクトが実行依頼された時刻、エージェント・オブジェクトがイベントに起因してトリガされた時刻、（イベント・エージェントを繰り返す場合）エージェントがトリガされた回数、などを含む。さらに、実行依頼されたエージェントの合計数、トリガされたエージェントの数、クライアントによって削除されたエージェントの数、期限切れになったエージェントの数などのような一般情報も、また、利用可能である。
【００６５】
（エージェント管理）
サーバ側のエージェント管理を取り巻く問題は、クライアント側のそれらと全く同様である。サーバ・アドミニストレータは、エージェントを中止し、使用可能にし、および終了することが出来るべきである。このような全てのケースにおいて、エージェントの発信者は、アクションの十分な説明を備える動作について、通知を受信するべきである。例えば、それが、許容量以上に多くの資源（ディスク、メモリなど）を消費していたとの理由で、エージェントを、終了することが出来る。
【００６６】
サーバは、サーバ上でいつでもアクティブであることが出来るエージェントの数、アクティブであることが出来るクライアント毎のエージェントの数、エージェント上の資源制限などに制限を課すことが出来るべきである。サーバに実行依頼された多数のエージェント・オブジェクトが、存在するかもしれないが、それらの全てがアクティブであるとは限らないであろうという点に留意されたい。
【００６７】
サーバは、また、それらが提供するサービス品質に制限を課すことが出来る。例えば、サーバは、時間データの塊を5分に制限することを特定するかもしれない。これら全ての制限は、サーバ・ベース（サーバ管理）ごとに、設定可能である。
【００６８】
サーバ・アドミニストレータは、それらのサーバ上のエージェント・アクティビティを完全に制御する。（上述したように）ノーマルなクライアントが行うことが出来ることに加えて、サーバ・アドミニストレータは、以下のことが出来る：
・ サーバ上の全てのエージェントを見ること
・ ユーザによって
・ （期限切れになった、トリガされた、トリガするために待っている、ユーザによっ
て削除された）状態によって
・ エージェントが属するエージェント・テンプレート・クラスによって
・ 作成時刻によって
・ 任意のエージェントを削除し、修正し、および中止する
・ エージェントのアクティビティを制限する
・ クラスのエージェントを制限する
・ ユーザによって
・ グループによって
・ ドメインによって
・ 全てによって
・ エージェント・サブミッションを使用可能／中止にする
・ ユーザによって ・ グループによって
・ ドメインによって ・ 全てによって
・ 作成されるエージェントの数を制限する
・ ユーザによって
・ グループによって
・ ドメインによって
・ 全てによって
・ エージェントのマニュアル・トリガを強行する。
【００６９】
（エージェントの名前付け）
エージェントを作成することは、それらに名前を付ける方法なしでは十分でない。クライアントとサーバはどちらも、名前付け機能を必要とする。クライアントは、サーバに名前によってエージェントを終了するよう依頼するかもしれない。同様に、サーバは、エージェントの失効を示すクライアントへの通知を送信するかもしれない。エージェントの名前は、前述したように、URIに非常に似ている。
【００７０】
（セキュリティおよびアクセス制御問題）
アクセス制御およびセキュリティは、エージェント・アクティビティのあらゆる観点から強化されなければならない。クライアントによって実行依頼されるエージェントは、サーバ側でアクセス制御を受ける。エージェントは、エージェントを作成したクライアントがアクセスすることが出来ない如何なるものにもアクセスすることが出来ない。これは、おそらく強化することが最も難しいものである。それは、Java（登録商標）とJavaScriptエージェントでは、より困難でさえある。これに関連する問題は、多数ある。
【００７１】
アクセス制御は、エージェントがどんなイベントに登録することが出来るか、およびそれがどんなアクションを行うことが出来るかにと言う点について強化されなければならない。このことは、エージェントがサーバによって受け入れられる前に、可能な限り確認される。エージェントは、イベントおよび／またはアクション上のアクセス制御チェックが失敗すると、サーバに入ることが許されない。アクセス制御は、また、エージェント作成およびエージェント削除に関しても強化される。全てのクライアントが、エージェントをサーバに実行依頼させることが出来るとは限らない。同様に、許可された人間しか、エージェントを、削除することは出来ない。このような動作は、全て、厳しいアクセス制御を受ける。
【００７２】
アクセス制御上のチェックの全てによってさえ、イベントがトリガされる場合、エージェントが完了まで実行される保証はない。サーバの動的に変化する性質およびインターネット環境に起因して、イベントをトリガすることに起因してそれが実行される場合、エージェントは、アクセス制御チェックに失敗するかもしれない。クライアントには、適切な説明によってこのような故障が通知される。
【００７３】
アクセス制御は、また、サーバ上のエージェントを見ることに関しても強化される。クライアントに見ることの許可が与えられていない限り、クライアントは、他によって作成されたエージェントを、削除／修正は言うまでもなく、見ることも出来ない。
【００７４】
サーバ・アドミニストレータに、そうする許可が与えられていない限り、サーバ・アドミニストレータは、エージェント・オブジェクトを調べることは出来ない。アドミニストレータは、サーバ上のエージェント・オブジェクトを管理する（使用可能にする、使用禁止にするなど）ことが可能であるが、彼は、エージェントに含まれるイベントまたはアクションを見ることは出来ない。
【００７５】
エージェント・インスタンスがURLとして実施される場合、セキュリティおよびアクセス制御は無料で利用可能である。
【００７６】
エージェントがトリガされると、特定アクションが実行される。アクションが、あるアドレスにメール・メッセージを送信すること関する場合、メール・メッセージは、メッセージを送信させた、エージェントの作成者（エージェントを実行依頼したクライアント）を識別するであろう。
【００７７】
（エージェント開発のためのサーバAPI）
任意の他のサーバ機能と同様に、プログラマは、エージェントで素晴らしい事象を行うために彼ら自身のコードを書きたいと思うであろう。APIは、サーバのエージェント能力を利用するために、エージェント・プログラマに提供される。
【００７８】
（エージェント・サブシステムの設計）
基本の設計目標は、エージェント・サブシステムを任意のサーバ・サービスから独立させておくことであった。つまり、エージェント・サブシステムは、完全にサーバの特定のタイプから切り離されるべきである。これは、エージェント・サービスが、任意のNetscapeサーバ（またはサード・パーティのサーバさえ）、またはエージェント・サービスを要求する他の任意のアプリケーションによっても、使用することが出来ることを確実にするために行われる。この目標を達成するために、エージェント・サブシステムは、別個の入れ替え可能なコンポーネントに分けられる。ハイレベルアーキテクチャの図は、図3に示される。
【００７９】
（エージェントコントローラ(AC)コンポーネント305）
AC 305は、系の心臓部である。これは、エージェント作成、破棄、統計値アップデート、永続性の記憶およびエージェント管理の一部、の全ての観点を管理する。エージェントを作成することを望む任意のプログラム（またはクライアント）は、このコンポーネントのAPIを使用しなければならない。
【００８０】
すべてのエージェントは、一意の識別番号（エージェントID）を有する。エージェントIDは、サーバ内で一意に決定されるが、サーバ全体では一意に決定されない。これらのエージェントIDは、エージェント・コントローラ・コンポーネントによって生成される。
【００８１】
エージェント・サービスを使用したいサーバおよびアプリケーションの開発者は、AC 305のAPIにプログラムしなければならない。HTTPサーバリエイゾン(riasion)コンポーネント301は、エージェントを作成して、管理するために必要なUIを提供する。
【００８２】
（エージェント・クラスおよびエージェント・オブジェクト）
エージェント名前空間成長を制御するためのエージェント・クラスおよびエージェント・インスタンスのコンセプトは、以前に、導入された。例えば、（ユーザのジョンによって作成された）ドキュメントhttp://warp/foo.htm.を待つエージェントについて考察しよう。エージェントが「ドキュメントをチェックアウトする」イベントに興味があると仮定する。チェックアウトのためのイベントタイプは、この具体例の場合105である。組み合わせ「http://warp.foo.htm + 105」は、一意のトークンである。このトークンは、エージェント・クラスを識別する。この時に、このエージェント・クラスの一つのインスタンス（またはオブジェクト）しかない：
エージェント・クラス識別子………………………インスタンスの数
――――――――――――――――――――――――――――――――――
http://warp.foo.htm + 105--------------------＞ 1（ユーザのジョン）
【００８３】
次に、ユーザのスミスは、http://warp.foo.htm.のチェックアウトを見るためにエージェント・オブジェクトを作成することを望む。この点で、同じイベントタイプに対しこのドキュメントを待っているエージェント・オブジェクトが、すでに存在する。従って、エージェント・クラスはすでに存在し、そしてこのエージェント・クラスの新規なオブジェクトが、作成されなければならない：
エージェント・クラス名………………インスタンスの数
―――――――――――――――――――――――――――――――――――
http://warp.foo.htm + 105--------->2（ユーザのジョン、ユーザのスミス）
【００８４】
今度は、ユーザのジェーンは、ドキュメントhttp://warp.foo.htmのためのエージェントを作成したいが、彼女は、ドキュメントが削除されたら（イベントタイプ106）、通知されることを望むというシナリオについて考察しよう。組合せ「http://warp.foo.htm + 106」は、別のエージェント・クラス名である。エージェント・イベント・プロセッサ306は、このエージェント・クラスが存在しない、それゆえ、エージェント・クラス「http://warp.foo.htm + 106」を作成し、そしてユーザのジェーンのためにこのクラスの最初のオブジェクトを作成することを認識する。
エージェント・クラス名………………インスタンスの数
―――――――――――――――――――――――――――――――――――
http://warp.foo.htm + 105--------->2（ユーザのジョン、ユーザのスミス）
http://warp.foo.htm + 106--------->1（ユーザのジェーン）
【００８５】
別のユーザのジャックが「1996年8月15日木曜日、午前10時00分」に通知されることを望む場合、別のエージェント・クラスが作成される。タイマ・アラームがイベントタイプ222を有すると仮定すると：
エージェント・クラス名………………インスタンスの数
―――――――――――――――――――――――――――――――――――
http://warp.foo.htm + 105--------->2（ユーザのジョン、ユーザのスミス）
http://warp.foo.htm + 106--------->1（ユーザのジェーン）
1996年8月15日木曜日10:00 AM+ 222-->1（ユーザのジャック）
【００８６】
多数のエージェント・オブジェクトが存在し得るが、エージェント・クラスの数は、はるかに少ない。すべてのエージェント・オブジェクトは、その一意の名前として＜クラス名、インスタンス数＞を有する。詳細は、ここでは、単なる情報として示される。クライアントは、これらの詳細について何も知る必要はない。
【００８７】
（HTTPサーバ・リエイゾン(HSL)コンポーネント302）
HSLコンポーネント302の第一目標は、HTTPサーバと通信することである。それは、HTML、NSAPI問題、エージェント・ホームページ、などを理解する。HSL 302は、ウェブ・ブラウザを使用して、エージェントを作成するために、さまざまなUI関連スタッフを提供する。それは、HTTP入力を受け入れそしてそれを適当なアーギュメントに解析する（このアーギュメントは、次いでAC 305に渡される）責任がある。AC 305からの全てのUIおよびサーバ関連問題は、これによって分離される。これは、Model-View-Controller(MVC)パラダイムの直接のアプリケーションである。
【００８８】
HSL 302も、いくつかの予備的なアクセス制御問題を強化する。HSL 302は、入ってくる要請に基づいて、ユーザが、エージェント・サービスにアクセスする許可が与えられているか否かを、チェックすることが出来る。あるサーバの場合には、HSLコンポーネント302が存在することが出来ないことに留意されたい。
【００８９】
（エージェント記憶装置310）
エージェント記憶装置310は、パブリック・クライアントには見えないエージェント・サブシステム311の内部コンポーネントである。これは、全ての永続性の記憶問題（BTree、データベースなど）を管理する。AC 305は、エージェント記憶装置310を使用する。エージェント管理コンポーネント304も、エージェント記憶装置310を使用する。
【００９０】
エージェント記憶装置310は、二つのレベルの記憶を使用する。一次記憶装置は、フラットファイルで、ほとんど完全に回復可能である。これは、シーケンシャルにエージェント・オブジェクトを格納する。これは、データベースがすべてのサーバによって使われる場合、真のデータベースと取り替えられる。
【００９１】
一次記憶装置は、速度のためのハッシュテーブルを使用してアクセスされる。ハッシュテーブルが損なわれると、それは破棄され、そして、新しいものが一次記憶装置を使用して構築される。
【００９２】
（イベント・プロセッサ(EP)306）
EPコンポーネント306は、エージェントのイベント検出およびトリガを管理する。エージェントをトリガすることが出来るイベントの可能なセットは、大量とすることが出来る。エージェント・サブシステム310は、それが理解するイベントタイプによって、制限されるべきでない。サーバ／アプリケーションの開発者が、エージェントをトリガする新規なイベントタイプを定義することは、可能であるとすべきである。この目標を達成するために、イベント検出およびトリガは、EPコンポーネント306に委任される。
【００９３】
AC 305は、異なるイベントタイプに、いかなる意味もアタッチしない。EP 306は、異なるイベントタイプを理解すること、それらに登録すること、それらを検出すること、および最後に、エージェントをトリガする責任がある。AC 305に渡された任意のイベント関連データも、AC 305の範囲内の任意の処理なしで、EP 306上に、透過的に渡される。
【００９４】
AC 305およびエージェント管理コンポーネント304のみが、EP 306と通信する。EP 306がイベントを検出すると、それは、AC 305によってエクスポートされるトリガ機能を呼び出す。同じイベントを待っているマルチプル・エージェント（場合によっては数千）を取り扱う問題は、AC 305によって取り扱われる。
【００９５】
EP 306は、ドキュメント・イベントとHTTPサーバの範囲内の時間トリガされたイベントとを検出するために使用することが出来る。他のサーバは、それら自身のイベント・プロセッサを提供することが出来、そして、エージェントコントローラは、いかなる問題も生ぜずに、それらとともに作業する。
【００９６】
EP 306は、サーバがランする（イベントに対する）エージェント登録／メンテナンスを提供する必要はない。それは、サーバランの間、永続的に必要な情報を格納することしか出来ないとすべきである。これは、 エージェント・サブシステムが初期化されると、AC 305が、EP 306でエージェント記憶装置の全てのエージェント・オブジェクトの登録を始める（AC 305は、エージェント・オブジェクトの永続に責任がある）からである。しかしながら、新規なEPの作成者が、彼ら自身の方式を採用することは自由である。
【００９７】
EP 306も、AC 305およびエージェント管理304コンポーネントによって大部分が使用されるいくつかの管理機能をサポートする。
【００９８】
EP 306およびAC 305は、イベント・ハンドルを使用して通信する。新規なエージェント作成要請が、AC 305に実行依頼されると、それは、EP 306に（必要に応じて）イベント登録を処理するよう依頼する。EP 306は、AC 305にイベント・ハンドルを戻す。このイベント・ハンドルが、同じイベントを待っているエージェント・オブジェクトを管理するために、AC 305によって使用される（最も単純なケースの場合、イベント・ハンドルを、フォーマット「http://warp.foo.htm + 105」の文字列とすることが可能であろう）。イベントのために登録されたエージェント・オブジェクトがすでに存在するか否かを検出して、マルチプル登録を避けることは、EP 306の責任である。これは、全く明瞭であるべきである。
【００９９】
（エージェント・オブジェクト作成のステップ）
エージェント・オブジェクトを作成するためにクライアント・要請が、AC 305によって受信される場合、
1. AC 305が、EP 306にイベント情報を渡す。
2. EP 306が、イベントタイプを使用して、イベント・ハンドルを構築し、かつそれがメッセージ・ハンドラですでに登録されたか否かをチェックするために、それをそのデータベースで調べる。
3. (2) が真の場合、EP 306は、すぐにこのイベントと関連するイベント・ハンドルをAC 305に戻す。
4. (2) が否の場合、EP 306はイベントに関する通知のためのメッセージ・ハンドラに名前を登録して、それからAC 305にイベント・ハンドルを戻す。
5. AC 305が、このエージェント・オブジェクトのための新規なエージェントI Dを生成する。
6. AC 305が、（ある場合）このイベント・ハンドルで待ち行列を作ったエー ジェント・オブジェクトのリストを設置するためにイベント・ハンドルを 使用して、新規なエージェント・オブジェクトをリストに加え、そしてエ ージェント記憶装置をアップデートする。
7. 最後に、AC 305が、クライアントにエージェントIDを戻す。
8. ウェブ・ブラウザを使用してクライアントによって実行依頼されるエージェントの場合には、この新規なエージェント・オブジェクトについての情 報をクライアントに掲示する。これは、HTTPサーバ・リエイゾン302によって行われる。
【０１００】
（アクション・プロセッサ(AP)308）
AP 308のコンポーネントは、エージェントがトリガされた場合に、必要なアクション（メールを送信する、ページに掲示する、プログラムをランする）を行う責任がある。これは、異なるアクション・タイプを理解して、どのようにアクションを行うかを知っている単純なコンポーネントである。
【０１０１】
イベントタイプと同様に、AC 305は、例え、それがそれらを格納しても、アクション・タイプ情報を処理しない。エージェントのアクションに関する全てのデータは、エージェントがトリガされると、AP 308に渡される。APコンポーネント308は、また、サーバ／アプリケーション・ライタによって供給させることも出来る。一つのインプリメンテーションは、全てのトリガされたエージェントの待ち行列を維持し、シーケンシャルにそれらのアクションを実行し、そしてそれが（すべてのエージェントに対して）行われた処理である場合AC 305に知らせる。
【０１０２】
AP 308とAC 305との間の関係は、生産者と消費者の関係である。つまり、AC 305は、トリガされたエージェントを生産し、そしてAP 308は、それらを消費する。AP 308の実行は、EP 306およびAC 305の実行から独立している。
【０１０３】
AP 308は、セキュリティおよびアクセス制御問題に非常に注意を払わなければならない。
これは、JavaScriptアクションでは扱いにくい。
【０１０４】
AP 308は、エージェントに代わって行うことが出来ることに制限を課すことが出来る。例えば、それは、JavaScriptアクションを2秒間しか実行しないように制限することが出来るであろう。このような決定は、全て、AP作成者に任せられる。
【０１０５】
AP 308のトリガされた（しかし、処理されていない）エージェントの待ち行列は、サーバラン全体に永続的である必要はない。いくつかのアクションが、サーバ・クラッシュに起因して消失した場合、サーバが再スタートするときに、AC 308は、常にそのアクションを再スタートさせることが出来る。
【０１０６】
この場合にも、他のAPの作成者は、このポリシーによって束縛されない。これにより、このようにこれを行うことがより容易になる。
【０１０７】
（エージェント・トリガおよびアクション処理におけるステップ）
イベントが生行われる場合：
1. EP 306の内部コールバック機能が、呼び出される。ここで、EP 306は、イベントをそれが生成した適切なイベント・ハンドルにマップする。
2. EP 306は、このイベント・ハンドルによってAC 305のトリガ機能を呼び出す。
3. AC 305は、このイベントを待っている全てのエージェント・オブジェクトを位置づけるために、イベント・ハンドルを使用する。
4. AC 305は、実行する必要がある全てのアクションを集め、そして一つの呼出しで、AP 308に（イベント情報とともに）アクション・リストを渡す。
5. AP 308は、処理のためのアクションを格納し、そしてAC 305に直ちに制御を戻す。
6. AP 308はアクション・リストを処理し、そしてそれが処理を完了したことをAC 305に知らせる。
7. AC 305は、エージェント・オブジェクトのトリガ統計値をアップデートする。
【０１０８】
アクション・リストは、メモリ内のAP 308に渡すことが出来、そのアクションの処理が行われると、AP 308によってリリースされるであろう。アクションを、（アクションのリストが非常に大きい場合）処理が行われると削除されるテンポラリーファイルに渡すことも、また、考えられる。AC 305は、状況に応じてこれらの方式の何れかを使用することが出来る。これは、AP 308とAC 305との間の内部プロトコルである。
【０１０９】
（エージェント・ロガ307）
エージェント・ロガ・コンポーネント307は、外部ログ・ファイルに必要な全ての情報を記録する責任がある。これは、非常に単純なAPIを提供し、かつ他のコンポーネントは、必要に応じてログ記録するために必要な情報によりそれを呼び出す。
【０１１０】
（エージェント管理304）
エージェント管理コンポーネント304は、エージェント・サブシステムに管理機能を提供する。これによって、アドミニストレータおよび通常のユーザは、エージェントのグループのみならず特定エージェントについての情報も、（ACLのもとに）問い合わせかつ検索することが出来る。
【０１１１】
エージェント管理コンポーネント304により、また、（AC 305を使用して）エージェント・サービスを使用可能および使用禁止にする管理も可能となる。エージェント管理304において行われる大部分の作業は、エージェント記憶装置310に依存する。
【０１１２】
（エージェント・アクセス・コントローラ309）
エージェント・アクセス・コントローラ309は、クライアントによって行われるいかなる動作に対してもACLを確認することを担当する。これは、アクセスを確認するためにACL等を維持することに責任がある。
【０１１３】
本発明は、好適な実施例について本明細書に記載されているが、当業者は、他のアプリケーションが、本発明の精神および範囲から逸脱することなく、本明細書に記載したアプリケーションに代えることが出来ることは、容易に理解するであろう。したがって、本発明は、添付の請求の範囲によってしか制限されるべきではない。
【図面の簡単な説明】
【図１】本発明によるコンピュータ・ネットワークによるクライアント・サーバ・インタラクションのブロック線図を示す。
【図２】本発明による、イベントに応じてアクションを行うサーバのブロック線図を示す。
【図３】本発明による本発明の好適な実施例のタスク指向のビューのブロック線図を示す。
【符号の説明】
104      コンピュータ・ネットワーク
201      クライアント
205      サーバ
206      イベント
207      電子メール・メッセージ
301      HTTPサーバリエイゾンコンポーネント
304      エージェント管理コンポーネント
311      エージェント・サブシステム
【図１】
0004028233.tif 000002
【図２】
0004028233.tif 000003
【図３】
0004028233.tif 000004