(57)【特許請求の範囲】
【請求項１】
固定的な処理を行うオブジェクト指向に基づいて機能を実装したモジュールと、
仲介による協調機構または移動機能の少なくとも一方を有するエージェント指向に基づいて機能を実装したモジュールと、
上記エージェントを上記オブジェクトに置き換え、上記エージェント指向に基づいて機能を実装したモジュールを上記オブジェクト指向に基づいて機能を実装したモジュールとして実行するエージェントのオブジェクト化手段を備え、
該エージェントのオブジェクト化手段は、
当該エージェントが発行する処理依頼メッセージと送信時の通信経路を対応付けた通信経路テーブルを設け、これを検索することにより、当該エージェントが発行する処理依頼メッセージに対して送信時の通信経路を決定する通信経路決定手段と、
他のオブジェクトからのメッセージを受信するとともに、上記通信経路決定手段によって決定された通信経路に従い他のオブジェクトへ上記メッセージの送信を行うオブジェクト通信手段と、
他のエージェントからのメッセージを受信するとともに、上記通信経路決定手段によって決定された通信経路に従い他のエージェントへ上記メッセージの送信を行うエージェント通信手段と、
当該エージェントに対する処理依頼メッセージを上記オブジェクト通信手段または上記エージェント通信手段を介して受け取り、当該エージェントを起動し、当該エージェントの処理の制御を行うとともに、上記通信経路決定手段を介して通信経路を決定し、上記オブジェクト通信手段または上記エージェント通信手段を介して当該エージェントが発行するメッセージを発行する処理の制御を行うエージェント制御手段を有することを特徴としたドキュメント管理システム。
【請求項２】
固定的な処理を行うオブジェクト指向に基づいて機能を実装したモジュールと、
仲介による協調機構または移動機能の少なくとも一方を有するエージェント指向に基づいて機能を実装したモジュールと、
上記エージェントを上記オブジェクトに置き換え、上記エージェント指向に基づいて機能を実装したモジュールを上記オブジェクト指向に基づいて機能を実装したモジュールとして実行するエージェントのオブジェクト化手段を備え、
上記オブジェクト指向に基づいて機能を実装したモジュールは、機能単位のオブジェクト群を管理し制御する管理／制御オブジェクトを有し、
上記エージェントのオブジェクト化手段は、
当該エージェントが発行する処理依頼メッセージと送信時の通信経路を対応付けた通信経路テーブルを設け、これを検索することにより、当該エージェントが発行する処理依頼メッセージに対して送信時の通信経路を決定する通信経路決定手段と、
他のオブジェクトからのメッセージを受信するとともに、上記通信経路決定手段によって決定された通信経路に従い他のオブジェクトへ上記メッセージの送信を行うオブジェクト通信手段と、
他のエージェントからのメッセージを受信するとともに、上記通信経路決定手段によって決定された通信経路に従い他のエージェントへ上記メッセージの送信を行うエージェント通信手段と、
当該エージェントに対する処理依頼メッセージを上記オブジェクト通信手段または上記エージェント通信手段を介して受け取り、当該エージェントを起動し、当該エージェントの処理の制御を行うとともに、上記通信経路決定手段を介して通信経路を決定し、上記オブジェクト通信手段または上記エージェント通信手段を介して当該エージェントが発行するメッセージを発行する処理の制御を行うエージェント制御手段を有することを特徴としたドキュメント管理システム。
【請求項３】
請求項２記載のドキュメント管理システムにおいて、上記エージェントのオブジェクト化手段として、
他の環境に移動するエージェントに関して当該エージェントの内部情報を取得し、該内部情報を含んだメッセージを生成する内部情報取得手段と、
上記内部情報取得手段により生成されたメッセージを他のオブジェクトから受け取った際、該メッセージに含まれるエージェントの内部情報を当該エージェントに設定する内部情報設定手段を有することを特徴としたドキュメント管理システム。
【請求項４】
請求項２または３に記載のドキュメント管理システムにおいて、上記エージェントのオブジェクト化手段として、
当該エージェントの機能を外部に通知する機能通知手段と、
当該エージェントの代理として他のエージェントからの処理依頼を受け取り、受け取った処理依頼を当該エージェントに転送するとともに、当該エージェントの処理結果を依頼元のエージェントへ返送する代理通信手段を有することを特徴としたドキュメント管理システム。
【請求項５】
請求項１から４のいずれかに記載のドキュメント管理システムにおいて、上記オブジェクト指向に基づいて機能を実装したモジュールとして、
文書の検索および閲覧時のユーザインタフェース機能を提供するオブジェクトを備えた表示層オブジェクトと、
文書の検索および閲覧機能を提供するオブジェクトを備えた機能層オブジェクトと、
文書情報を蓄積管理するデータベース管理オブジェクト（DBMSオブジェクト）および当該DBMSオブジェクトを管理制御する機能を持つオブジェクトを備えたデータ層オブジェクトを有することを特徴とした３階層の構造を有するドキュメント管理システム。
【請求項６】
請求項５に記載のドキュメント管理システムにおいて、上記機能層オブジェクトとして、
アクセス可能なユーザを認証するユーザ認証オブジェクトと、
ユーザの実行した検索履歴を蓄積管理する検索履歴管理オブジェクトと、
ユーザの実行した検索履歴をもとに課金情報を生成する課金情報生成管理オブジェクトを備えたことを特徴とするドキュメント管理システム。
【請求項７】
請求項６に記載のドキュメント管理システムにおいて、上記データ層オブジェクトとして、
上記DBMSオブジェクトにより実行された処理内容に応じて課金情報を生成する課金情報生成管理オブジェクトを備えたことを特徴とするドキュメント管理システム。
【請求項８】
請求項５から７のいずれかに記載のドキュメント管理システムにおいて、
上記表示層オブジェクトとして文書の登録時のユーザインタフェース機能を有する登録用ユーザインタフェースオブジェクトを備え、
上記機能層オブジェクトとして登録対象文書を登録用の標準形式に変換する機能を有する登録文書変換オブジェクトを備え、
上記データ層オブジェクトとして標準形式に変換された文書を上記DBMSオブジェクトに登録する登録用オブジェクトを備えたことを特徴とするドキュメント管理システム。
【請求項９】
請求項５から８のいずれかに記載のドキュメント管理システムにおいて、
上記表示層オブジェクトとしてユーザ情報の設定をはじめとする運用管理用のユーザインタフェース機能を有する運用管理用ユーザインタフェースオブジェクトを備え、
上記機能層オブジェクトとして利用可能なユーザに関する情報の設定機能を有するユーザ情報登録用オブジェクトを備え、
上記データ層オブジェクトとしてユーザ情報を蓄積管理する運用管理用オブジェクトを備えたことを特徴としたドキュメント管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はドキュメント管理システムに係り、特にドキュメント管理システムにおける各種処理をオブジェクトとして実行するための基盤とエージェントとして実行するための基盤を統合したシステム構造と、エージェントをオブジェクト化する手段を備えたドキュメント管理システムに関する。ただし、エージェントをオブジェクト化する手段はドキュメント管理システムに限らず広く計算機システムで利用できるものである。
【０００２】
【従来の技術】
ドキュメント管理システムの大型化と高機能化が進み、それに従いシステムの機能拡張が頻繁に行われる傾向にある。こうしたシステムでは機能拡張や機能変更を容易に行うために拡張性や柔軟性の高いアーキテクチャが要求される。また、ドキュメント管理システムは一旦導入されると、機能拡張をしながら長期間に渡って使用される。したがって、こうしたシステムでは、安定性や保守性の高いアーキテクチャが要求されることにもなる。
【０００３】
こうしたシステム構築を行うための第１の従来技術として、オブジェクト指向のアプローチがある（本位田真一、山城明宏：“オブジェクト指向分析・設計”、情報処理学会誌、第３５巻、第５号、１９９４年）（以下、公知例１と呼ぶ）。ここに記載されたオブジェクト指向アプローチでは、現実世界のもの（オブジェクトと呼ぶ）およびもの同士のつながり（関係と呼ぶ）に着目し、個々のオブジェクトに作業を割り振り、オブジェクトどうしがお互いに作業を依頼しながら機能する。このオブジェクト指向パラダイムを導入すると、その特徴である対象世界に近いモデル化やカプセル化によりシステムの変更範囲が局所化されるとともに、オブジェクトにより処理が部品化されることになるため機能追加の生産性が向上する。
【０００４】
最近はネットワークで接続された複数の異なるハードウェアやＯＳ上のオブジェクトの連携を可能にする分散オブジェクト指向のアプローチが注目されている（“最新オブジェクト指向実践ガイド”、日経ＢＰ社、１９９５年）（以下、公知例２と呼ぶ）。
【０００５】
また第２の従来技術として、エージェント指向のアプローチがある（木下哲男、菅原研次：“エージェント指向コンピューティング”、ソフト・リサーチ・センター、１９９５年）（以下、公知例３と呼ぶ）。エージェントとは、外部環境との相互作用に基づいて、状況を認識したり、他者と協力しながら、ある目標に向かって自律的に問題解決を進めてゆく処理体と定義付けられる。システムは、知的で自己完結的なシステム要素としてのエージェントが中心となって構成される。個々のエージェントは、共通言語であるエージェント通信言語を介して他者（他のエージェント）と動的かつ柔軟な相互作用を行う。そして、エージェント自体の動作とその協調によりシステムの機能が実現される。
【０００６】
最近、オブジェクト指向関連技術は、高度なソフトウェアをより効率的に開発するための具体的手段を提供するものとし利用されているが、こうしたオブジェクト指向アーキテクチャを基盤技術としたエージェント指向システムが開発されている（ティム  フィニン、リチャード  フリッツォン、ドン  マッケイ、ロビン  マッケンタイア：“ケーキューエムエル  アズ  アン  エージェント  コミュニケーション  ランゲージ”、ザ  プロシーディングス  オブ  ザ  サード  インターナショナル  カンファレンス  オン  インフォメーション  アンド  ナレッジ  マネージメント、エーシーエムプレス、１９９４年  １１月、Ｔｉｍ  Ｆｉｎｉｎ、Ｒｉｃｈａｒｄ  Ｆｒｉｔｚｓｏｎ、Ｄｏｎ  ＭｃＫａｙ、Ｒｏｂｉｎ  ＭｃＥｎｔｉｒｅ：“ＫＱＭＬ  ａｓ  ａｎ  Ａｇｅｎｔ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｌａｎｇｕａｇｅ”、Ｔｈｅ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆｔｈｅ  Ｔｈｉｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｋｎｏｗｌｅｄｇｅ  Ｍａｎａｇｅｍｅｎｔ、ＡＣＭ  Ｐｒｅｓｓ、Ｎｏｖｅｍｂｅｒ  １９９４）（以下、公知例４と呼ぶ）。このとき、エージェント指向アーキテクチャはオブジェクト指向アーキテクチャの上に構築される。ここでは、エージェントはエージェント指向のアプローチにより機能を拡張されたオブジェクトであるといえる。エージェント指向のアプローチで拡張される機能としては、仲介による協調機構と移動エージェントの２つがあげられる。これら２つの機能について以下に説明する。
【０００７】
図２は、例えば、公知例４に示されている仲介による協調機構を利用したエージェント間通信の例を示した図である。図で、１０１および１０３はそれぞれエージェントであり、１０２はエージェント間の協調の支援をする機能を持つ協調促進器（あるいは、ファシリテータ）である。本構成において、まずエージェント１０３が自分の提供できる機能を協調促進器１０２に通知（１１０）する。このような状態でエージェント１０１が処理依頼を出して他のエージェント（エージェント１０３）と協調して処理する場合について説明する。ただし、エージェント１０１は処理依頼メッセージの送信対象となるエージェント１０３に関する知識を持っていないものとする。処理依頼メッセージの送信対象に関する知識を持っている場合には対象と直接通信を行うが、それを持っていないこの場合、エージェント１０１はまず協調促進器１０２に対して処理依頼メッセージ１１１を送信する。処理依頼メッセージを受け取った協調促進器１０２は予め通知されていたエージェントの機能の中から、当該処理依頼を処理できる機能があるかどうかを調べる。ここでは、上記でエージェント１０３が協調促進器１０２に通知した機能を用いて当該処理依頼を処理できるものとする。すると協調促進器１０２は当該処理依頼メッセージ１１２をエージェント１０３に転送する。当該処理依頼メッセージ１１２を受け取ったエージェント１０３は、それに対応する処理を実行し、その結果１１３を協調促進器１０２に応答して処理を終了する。処理結果１１３をエージェント１０３から受け取った協調促進器１０２は、処理結果をエージェント１０１に転送（１１４）する。以上によりエージェント１０１の処理依頼１１１に対する一連の処理が終わる。
【０００８】
このように協調促進器１０２を仲介としてエージェント１０１とエージェント１０３の協調処理が実行される。なお、図２の通信手順は仲介による協調機構の一例にすぎず、公知例４には仲介による協調機構を利用した通信手順として他に３つのケースが示されている。以上のような仲介による協調機構においてそれを使用するエージェントは、協調対象となる相手のエージェントに関して知識を持っていなくてもよく、エージェント同士の連携方法は協調促進器を介して実行時に決定される。このためシステムの構築時に予め全ての機能を設計、開発しておかなくても、システム構成の変化への対応や新サービスの投入を他のエージェントの処理を変更することなく容易に行うことができる。また、一部のサービスが停止していてもそのサービスを代替してサポートするエージェントが存在すれば、実行時に代替のエージェントを起動して処理することもできる。
【０００９】
図３は、例えば、公知例３に示されている移動エージェントの概念を示す図である。図で、１２１は移動元のエージェント動作環境（Ｕｓｅｒ  Ｐｌａｃｅ）、１２２は移動先のエージェント動作環境（Ｓｅｒｖｅｒ  Ｐｌａｃｅ）、１２３は移動元エージェント動作環境１２１と移動先エージェント動作環境１２２を接続するネットワーク（Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｎｅｔｗｏｒｋ）、１２４は移動するクライアントエージェント、１２５はサーバエージェント、１２６ａと１２６ｂはエージェントの実行エンジンである。以上のような構成において、クライアントエージェント１２４の動作について説明する。まず、クライアントエージェント１２４は移動元エージェント動作環境１２１のエージェント実行エンジン１２６ａにより実行される。動作中に移動メソッド（図３においてはｇｏメソッド）を実行すると、クライアントエージェント１２４はネットワーク１２３を経由して移動先として定義された移動先エージェント動作環境１２２上に移動してその上で稼動するサーバエージェント１２５と協調しながら処理を続行する。クライアントエージェント１２４のように動作中に他のエージェント動作環境に移動してその上で処理を続行するようなエージェントを移動エージェント（あるいはモーバイルエージェント）と呼ぶ。
【００１０】
移動エージェントは必要時に必要な場所に移動できるため、当該エージェントに相当するソフトウェアを、それを必要とするクライアントあるいはサーバへ事前に配布したり、インストールしておく必要がない。また、処理の主体となるエージェント自身を動作すべき環境に移動させることにより通信コストを低減する効果も期待できる。例えば、従来のクライアント／サーバシステムの枠組みでは、クライアントがサーバ上のファイルの参照や更新をしようとすれば、クライアントとサーバの間で複数回のメッセージ交換を行う必要がある。一方、移動エージェントを使用するとファイル更新処理を実行するエージェントを一度サーバに送るだけでよいため、ファイル更新にとっては不必要なメッセージ通信に要する時間が短縮できることになる（公知例３）。
【００１１】
【発明が解決しようとする課題】
上記第１の従来技術であるオブジェクト指向パラダイムに対して、上記第２の従来技術であるエージェント指向パラダイムは、主に仲介による協調機構と移動エージェントとの２点において優れた概念である。仲介による協調機構によりシステム構成の変化への対応や新サービスの追加を他のエージェントの処理を変更することなく容易に行うことができ、また移動エージェントによりソフトウェアを事前に配布したり、インストールしておく必要をなくせる。このようにエージェントはオブジェクトに比較して拡張性や柔軟性に優れ、新規機能を容易に実装することができるのが特長である。
【００１２】
一方、公知例３で欠点として取り上げられているように、エージェント指向には「システムの全体的な動作が非決定的で予測不能となる」という問題がある。この問題点について、仲介による協調機構および移動エージェントの２つの観点から説明する。
【００１３】
図４は、仲介による協調機構において発生する上記問題を説明するための図である。１０１、１０３、１０４および１０５はそれぞれエージェントであり、１０２は協調促進器である。以上のような構成において、まずエージェント１０３、１０４および１０５が自分の提供できる機能を協調促進器１０２に通知（ａｄｖｅｒｔｉｓｅ（ａｓｋ（Ｘ）））する（１１０、１１５、１１６）。このような状態でエージェント１０１が処理依頼を出して他のエージェントと協調して処理する場合について説明する。エージェント１０１が処理依頼メッセージの送信対象となるエージェントについての知識を持っていないものとすると、エージェント１０１はまず協調促進器１０２に対して処理依頼メッセージ（ｂｒｏｋｅｒ（ａｓｋ（Ｘ）））を送信する（１１１）。処理依頼メッセージ１１１を受け取った協調促進器１０２は予め通知されていたエージェントの機能の中から、当該処理依頼１１１を処理できる機能があるかどうかを調べる。ここで、もし複数のエージェント、例えばエージェント１０３とエージェント１０４とエージェント１０５が当該処理依頼１１１を処理できるような状況（このような状況をエージェント間の競合と呼ぶ）が発生したとすると、協調促進器１０２は当該処理依頼１１１を処理できる複数のエージェントの中から、何らかの評価基準に基づいてどれか一つを選択するか、あるいはそれらを順序付けして処理を該当エージェントへ依頼する（１１７）。該当エージェント（図ではエージェント１０４）は処理結果を協調促進器１０２に応答（１１８）し、協調促進器１０２がそれをエージェント１０１に転送（１１９）する。このようにエージェント同士の連携方法は実行時にその時にシステムに組み込まれ動作状態にあるエージェントの状況によってはじめて定まる。つまりシステムの動作は非決定的となり、呼び出し順序を定義する従来のパラダイムと異なり、システムの内部動作を予測することが困難となる。さらにエージェントの数が増え、サポートするサービスの範囲が重なりあうようなエージェントが増えてきたり、競合の回数が増えたりするにつれて、不確定な要素も増大しシステム動作の予測はより難しくなる。また、エージェントの追加や変更に際しても、エージェントの数が増えるにつれ様々な競合の可能性を解析し多くのエージェントとの間の相互作用を検討して行わなければならず、エージェント指向パラダイムを利用してシステムを構築するメリットである拡張性、柔軟性のよさも相殺されてしまう。
【００１４】
次に移動エージェントの観点から上記問題点について説明する。移動先のエージェント実行環境から見たとき、移動エージェントの存在はシステム動作の不確定要素となる恐れがある。移動エージェントは移動先エージェント実行環境の状態にかかわらず非同期的に移動してきて、処理を実行し、処理が終了した時点で移動先エージェント実行環境から消滅する。上述のようにエージェント同士の連携方法は実行時に初めて決定されるため、たまたま移動してきていた移動エージェントとの間に相互作用が発生してしまう可能性もある。
【００１５】
以上のようにエージェントは、仲介による協調機構と移動エージェントの２点においてオブジェクトに比較して拡張性と柔軟性に優れ、新規機能を容易に実装することができるものの、一方でそれらの機能のためにシステムの全体的な動作が非決定的となり、予測不能となるという問題も発生する。特にシステムの大規模化に従ってエージェントの数が増加してくると、システム動作の不確定要因も増大し、上記の欠点が顕著になり、柔軟性、拡張性が高いというエージェントのメリットが失われてしまう。
【００１６】
本発明は、システムの実装や拡張が容易であるという特長を活かしてエージェント指向パラダイムでシステムを構築する際、システムの拡張に従ってエージェントの数が増加すると不確定要因が増大し、エージェント指向パラダイムのメリットも失われていくという従来技術の問題点を解消し、オブジェクト指向パラダイムとエージェント指向パラダイムの両方のメリットを活かして、拡張性、柔軟性、安定性、保守性の高いドキュメント管理システムを提供することを目的とする。
【００１７】
【課題を解決するための手段】
オブジェクトを実行するための環境とエージェントを実行するための環境を統合したシステム構造と、エージェントをオブジェクトとして実行する手段（エージェントのオブジェクト化手段）を設けることにより、前記課題を解決する。オブジェクト実行環境とエージェント実行環境を統合したシステム構造により、オブジェクト指向パラダイムとエージェント指向パラダイムの両方のメリットを活かした開発が可能となる。また、エージェントのオブジェクト化手段で、非決定的な動作を生み出すエージェントの処理を、固定された動作をする処理に置き換えて実行することにより、エージェントの不確定要素を解消し、エージェントの多用により劣化するシステムの柔軟性、拡張性を回復することが可能となる。
【００１８】
エージェントのオブジェクト化手段は、具体的には次の手段で構成する。
それは、（１）エージェントが発行する処理依頼メッセージと送信時の通信経路を対応付けた通信経路テーブルを設け、これを検索することにより、当該エージェントが発行する処理依頼メッセージに対して送信時の通信経路を決定する通信経路決定手段と、（２）他のオブジェクトからのメッセージの受信を行うとともに、上記通信経路決定手段により決定された通信経路に従い他のオブジェクトへのメッセージの送信を行うオブジェクト通信手段と、（３）他のエージェントからのメッセージの受信を行うとともに、上記通信経路決定手段により決定された通信経路に従い他のエージェントへのメッセージの送信を行うエージェント通信手段と、（４）当該エージェントに対する処理依頼メッセージを上記オブジェクト通信手段あるいは上記エージェント通信手段を介して受け取り、当該エージェントを起動し、当該エージェントの処理の制御を行うとともに、上記通信経路決定手段を介して通信経路を決定し上記オブジェクト通信手段または上記エージェント通信手段を介して、当該エージェントが発行するメッセージを発信するエージェント制御手段である。
【００１９】
これらの手段をエージェントに付加することにより当該エージェントをオブジェクト実行環境で実行可能にする。また、上記通信経路決定手段により通信経路テーブルに定義された通信経路に従って他エージェントと通信することになるため、エージェントの機能である仲介による協調機構は当該エージェントに対しては動作しなくなる。これにより当該エージェントに関する不確定要素を排除することが可能となる。
【００２０】
次に移動エージェントのオブジェクト化について説明する。移動エージェントも上記エージェントのオブジェクト化手段を付加してオブジェクト化する。そして、エージェントをオブジェクト化して得られるオブジェクトを予め移動先の環境にもインストールしておく。このような構成において移動元と移動先のオブジェクト間で協調処理を行うことによりエージェントの移動を発生させることなく処理を実行することが可能となる。
【００２１】
ただし、移動エージェントはその内部情報を包含したまま移動し移動先で処理を続行することができるが、上記手段（１）〜（４）だけではそれに対応できない。これに対応するために、移動エージェントに対するエージェントのオブジェクト化手段にはさらに以下の手段を付加する。
【００２２】
（５）他の環境に移動するエージェントに関して当該エージェントの内部情報を取得し、該内部情報を含んだメッセージを生成する内部情報取得手段
（６）上記内部情報取得手段により生成されたメッセージを他のオブジェクトから受け取った際、該メッセージに含まれるエージェントの内部情報を当該エージェントに設定する内部情報設定手段
上記手段（５）と（６）を付加することにより移動エージェントの移動時の内部情報を含んだメッセージを通信し、内部情報だけを次の移動先に引き継ぎ移動先で処理を続行することが可能となる。
【００２３】
以上の手段でオブジェクト化することにより移動エージェントは移動しなくなり、これにより当該エージェントに関する不確定要素を排除することが可能となる。
【００２４】
エージェントをオブジェクト化すると、当該エージェントはオブジェクト実行環境で実行されるようになる。そこで、当該エージェントに対して処理依頼を発行していた他エージェントの処理を変更することなく、それらのエージェントから発行された処理依頼をオブジェクト化後も同様に処理できるようにするために、さらに以下の手段をエージェントをオブジェクト化する手段に追加する。
【００２５】
（７）エージェントの代理として他のエージェントからの処理依頼を受け取り、受け取った処理依頼を当該エージェントに転送するとともに、当該エージェントの処理結果を依頼元のエージェントへ返送する代理通信手段
（８）エージェントの機能を外部に通知する機能通知手段
上記手段（７）および（８）を備える代理エージェントを当該エージェントの代わりにエージェント実行環境に設ける。上記手段（７）により他のエージェントから発行された処理依頼を当該エージェントの代わりに受け取り、それを当該エージェントに転送して処理することができる。上記手段（８）により協調促進器にエージェントの機能を通知することができ、協調促進器を介して当該エージェントを起動することができる。以上のように、当該エージェントに対して処理依頼を発行していた他のエージェントの処理を変更することなく、それらのエージェントからの処理依頼を当該エージェントで処理することが可能となる。
【００２６】
【発明の実施の形態】
以下、本発明の実施の形態について例をあげて詳細に説明する。まず第１の実施例について説明する。
図１は本実施例の構成を示すブロック図である。図において、１はオブジェクト指向に基づいて機能を実装したモジュールを実行するためのオブジェクト実行環境、２はエージェント指向に基づいて機能を実装したモジュールを実行するためのエージェント実行環境である。ここでオブジェクト実行環境１としては、公知例２に記載の異機種上のオブジェクト同士のメッセージの受け渡しをするソフトであるＯＲＢ（オブジェクト・リクエスト・ブローカ）製品を用いてもよい。また、エージェント実行環境２としては、公知例３に記載のエージェント指向システムの応用事例として紹介されているシステムが採用しているアーキテクチャを使用してもよい。オブジェクト実行環境１とエージェント実行環境２を統合し、オブジェクト実行環境１上のオブジェクト３とエージェント実行環境２上のエージェント４が協調して動作できるシステム構造を実現する。このようなシステム構造により、システム開発者は例えば安定した動作が求められる機能をオブジェクトで、変更の頻度が高い機能をエージェントで実装する、といったかたちでオブジェクト指向パラダイムとエージェント指向パラダイムの両方のメリットを活かした開発を行うことが可能となる。
【００２７】
ただし前記課題で説明したように、実装の容易性からエージェントを多用して大規模なシステムを構築し、エージェントの数が増加すると、それにつれてシステムの動作の不確定要因が増大し全体的な動作が予測不能となる。また、多くのエージェントとの間の相互作用を検討しなければならなくなるために、柔軟性や拡張性に優れるというエージェントのメリットも減少してしまう。そこで、エージェントのうち例えば安定した動作が求められるものや処理の変更の頻度が少ないものをオブジェクト化することによって、システムの安定性を確保しながら柔軟性、拡張性を持ったシステムの拡張を実現する。エージェントのオブジェクト化はオブジェクト化対象エージェント６に対してエージェントのオブジェクト化手段５を付加することによって実現する。この際、オブジェクト化対象エージェント６自体には変更を加えない。なお、エージェントのオブジェクト化手段５は他エージェントからの処理依頼を受け付けるために一部エージェント実行環境にも実体を持つ。
【００２８】
エージェントのオブジェクト化手段５はオブジェクト化対象エージェント６の処理の制御やメッセージの入出力を行い、オブジェクト化対象エージェント６をオブジェクト７としてオブジェクト実行環境１上で実行可能にする。このとき、エージェントのオブジェクト化手段５は、非決定的な動作を生み出すオブジェクト化対象エージェント６の処理を定まった動作をする処理に置き換えて実行する。具体的には、例えば仲介による協調機構の機能を使用して処理依頼先を実行時に決定していた処理の代わりに予め定義された処理依頼先に処理依頼を発行したり、移動エージェントの機能を使用して別の実行環境に移動していた処理の代わりに移動先に予めインストールされたオブジェクトに対して処理依頼を発行したり、といった方法によりエージェント実行基盤２の機能を使用しないようにする（これらの処理の詳細については第３の実施例および第４の実施例でそれぞれ説明する）。このようなエージェントのオブジェクト化手段を用いることにより、オブジェクト化対象エージェント６に関する不確定要素を解消し、劣化するシステムの柔軟性や拡張性を回復することが可能となる。
【００２９】
次に第２の実施例について説明する。
第１の実施例におけるドキュメント管理システムでは、オブジェクト実行環境において一般のオブジェクトとエージェントのオブジェクト化手段によってオブジェクト化されたエージェントをそれぞれ独立した形で構成した。しかし、本発明の第１の実施例におけるドキュメント管理システムでは、エージェント処理をオブジェクト化した際に、該当エージェントを起動している全てのオブジェクト処理に対して処理の変更を行う必要があり、大規模なシステムを構築した際にはシステムの保守性が低下するという問題がある。
【００３０】
この問題に対し、第２の実施例として、オブジェクト群およびオブジェクト化したエージェント群をある機能単位に一元的に管理し制御する管理／制御オブジェクトを設けることにより大規模なシステムに対しても保守性を損なわないようにしたドキュメント管理システムについて説明する。
【００３１】
本実施例の構成を図５に示す。すなわち、本実施例におけるドキュメント管理システムは、図１に示すドキュメント管理システムのオブジェクト実行環境中に管理／制御オブジェクト８を付加した構成となる。
【００３２】
管理／制御オブジェクト８は、入力に対して実行すべき処理の流れと起動すべきオブジェクトの名称を処理ディスパッチ情報（図示せず）として保持しており、この情報に従って各オブジェクト群の処理を制御する。そして、処理の流れが変更になったり、あるオブジェクトの起動が不要となったり、エージェントのオブジェクト化手段によりオブジェクト化されたエージェントが新たに追加された場合には、処理ディスパッチ情報を変更することにより処理の流れを容易に変更することができ、ひいては保守性の高いシステムを構築することが可能になる。
【００３３】
次に第３の実施例について説明する。
本実施例では、仲介による協調機構を利用しているエージェント（移動エージェントではない）をオブジェクト化する例を説明する。ただし、オブジェクト化後はオブジェクトからの処理依頼により起動されるとものとする。
【００３４】
まず、オブジェクト化前の構成と処理の流れについて説明する。
図６は本実施例におけるエージェントのオブジェクト化を行う前のブロック図である。図で、１はオブジェクト実行環境、２はエージェント実行環境、３はオブジェクト（第２の実施例に記載の管理／制御オブジェクトを含む）、４はエージェント、６はオブジェクト化対象エージェント、９はエージェント管理オブジェクト、１０は協調促進器を示している。エージェント管理オブジェクト９は、エージェントを実行するための基盤をオブジェクトとして実装したものであり、協調促進器１０をはじめとする共通サービスやエージェントの実行エンジンやエージェント間通信のための基盤などを含む。エージェント管理オブジェクト９としては、公知例３に記載のエージェント指向システムの応用事例として紹介されているシステムが採用しているエージェントを実行するための基盤部分を使用してもよい。
【００３５】
本構成において、オブジェクト化対象エージェント６が処理の途中で協調促進器１０に処理依頼を発行しエージェント４と協調して処理を実行する場合について、処理の流れを図７に従って説明する。図７において細線の矢印は各要素間で発生する通信を示しており、付加されている括弧付き番号の順番に従って通信が行われる。また、太線の矢印はエージェント内あるいは協調促進器内の処理の流れを示している。なお、ここで説明する協調促進器を使用したエージェントの協調処理については、例えば公知例４に開示されている方法を用いる。
【００３６】
仲介によるエージェント同士の協調処理が行われるのに先立って、システム起動時など協調促進器の初期化のタイミングで、各エージェントがそのサポートしている機能を協調促進器に通知する。図７では、エージェント４が処理２０１においてエージェント４の持つ機能を協調促進器１０に通知（３０１）している。通知３０１を受け取った協調促進器１０は処理２０２において受け取ったエージェントの機能を内部に持つデータベース（図示せず）に記憶する。
【００３７】
以上のような初期化処理が行われているものとしてオブジェクト化対象エージェント６の処理を説明する。オブジェクト化対象エージェント６はその動作過程で処理２０３において協調促進器１０に対して処理依頼３０２を発信する。処理依頼３０２を受け取った協調促進器１０は、処理２０４において内部に持つデータベース（図示せず）を参照して当該処理依頼３０２の依頼先を決定する。ここでは処理依頼先をエージェント４に決定したとする。協調促進器１０は処理２０５において処理依頼３０３をエージェント４に転送する。処理依頼３０３を受け取ったエージェント４は処理２０６において該当処理を実行し、処理結果３０４を協調促進器１０に応答する。協調促進器１０は処理２０７において処理結果３０５をオブジェクト化対象エージェント６に転送する。処理２０８において処理結果３０５を受け取ったオブジェクト化対象エージェント６はそれをもとに次の処理を続行する。
【００３８】
このように協調促進器１０を介してエージェント４と協調して処理を行うオブジェクト化対象エージェント６をオブジェクト化する場合について以下に説明を行う。
【００３９】
図８は本実施例のオブジェクト化後の構成を示すブロック図である。図において、１はオブジェクト実行環境、２はエージェント実行環境、３はオブジェクト（第２の実施例に記載の管理／制御オブジェクトを含む）、４はエージェント、５はエージェントのオブジェクト化手段、６はオブジェクト化対象エージェント、７はエージェントを変換したオブジェクト、９はエージェント管理オブジェクトを示している。オブジェクト化対象エージェント６にエージェントのオブジェクト化手段５を付加することによりオブジェクト７としてオブジェクト実行環境１で実行できるようになる。
【００４０】
１１はエージェント処理固定化部品である。エージェント処理固定化部品はオブジェクトとして実装する。本実施例ではオブジェクト７が他のオブジェクトからの処理依頼により起動され、エージェントからの処理依頼は来ないものとしているため、エージェント実行環境２にエージェントのオブジェクト化手段５の部品は含んでいない。つまり、エージェントのオブジェクト化手段５はエージェント処理固定化部品１１と等しくなっている。
【００４１】
エージェント処理固定化部品１１は、エージェント制御手段１２とオブジェクト通信手段１３と通信経路決定手段１４とエージェント通信手段１５より成る。
【００４２】
通信経路決定手段１４は通信経路テーブル１６を内部に持つ。通信経路テーブル１６の例を図９に示す。通信経路テーブル１６は、オブジェクト化対象エージェント６が発行する処理依頼メッセージ（図中では例えば「ｂｒｏｋｅｒ（ａｓｋ（Ｘ））」）と送信時の通信経路（図中では例えば「エージェント４」）を対応付けたものである。通信経路テーブル１６は、エージェント処理固定化部品１１を生成する際に、オブジェクト化対象エージェント６の処理から他エージェントとの協調部分を抽出する手段と、その中の協調促進器の機能を使用して処理依頼先を求めているものについて処理依頼先の情報を協調促進器から収集する手段と、複数のエージェントが応答できるような処理依頼に対してシステム管理者にどれか一つのエージェントを選択させる手段を持つツールを用いてシステム管理者が生成する。
【００４３】
次に、前述のオブジェクト化前の処理の流れと同様に、オブジェクト化対象エージェント６が動作過程で処理依頼を発行しエージェント４と協調して処理を実行する場合について、処理の流れを図１０に従って説明する。
【００４４】
他オブジェクトからの処理依頼に対して、まずエージェント制御手段１２が処理２０９においてオブジェクト化対象エージェント６を起動（３０６）する。
【００４５】
オブジェクト化対象エージェント６は、オブジェクト化の際に処理に何ら変更を加えていないため、前述のオブジェクト化前の処理と同様に処理２０３において協調促進器（図７の１０）に対して処理依頼３０２を発信する。オブジェクト化対象エージェント６が発信した処理依頼３０２はエージェント制御手段１２が受信する。このようにオブジェクト化対象エージェント６が発信するメッセージは全てエージェント制御手段１２が受信する。エージェント制御手段１２はオブジェクト化対象エージェント６から受け取った処理依頼３０２を解析し、それが協調促進器１０に対する処理依頼であることが分かれば、処理２１０においてその処理依頼を協調促進器１９ではなく通信経路決定手段１４に渡す。
【００４６】
通信経路決定手段１４は処理２１１において通信経路テーブル（図９の１６）を参照して受け取った処理依頼３０７の依頼先を決定する。例えば、オブジェクト化対象エージェント６が発信した処理依頼３０２が「ｂｒｏｋｅｒ（ａｓｋ（Ｘ））」であったとすると、通信経路決定手段１４は図９の通信経路テーブル１６から処理依頼先を「エージェント４」と決定する。通信経路決定手段１４は決定した処理依頼先をエージェント制御手段１２に応答（３０８）する。
【００４７】
通信経路決定手段１４より処理依頼先を受け取ったエージェント制御手段１２は、処理２１２において処理依頼先がオブジェクトかエージェントかを判定して、オブジェクトならばオブジェクト通信手段１３に、エージェントならばエージェント通信手段１５にオブジェクト化対象エージェント６から受け取った処理依頼３０２を転送する。本実施例では処理依頼先はエージェント４であるから、エージェント通信手段１５に処理依頼３０９を転送する。
【００４８】
エージェント制御手段１２から処理依頼３０９を転送されたエージェント通信手段１５は、処理２１３においてその処理依頼３０９をさらに通信経路決定手段１４が決定した処理依頼先であるエージェント４に転送（３１０）する。
【００４９】
エージェント通信手段１５から処理依頼３１０を受け取ったエージェント４は、処理２０６において処理依頼３１０に対する処理を実行し、処理結果３１１をエージェント通信手段１５に応答する。
【００５０】
エージェント４から処理結果３１１を受け取ったエージェント通信手段１５は、処理２１４においてその処理結果３１２をエージェント制御手段１２に転送する。
【００５１】
エージェント通信手段１５から処理結果３１２を受け取ったエージェント制御手段１２は、処理２１５において処理結果３１２をオブジェクト化対象エージェント６に応答（３０５）する。このようにオブジェクト化対象エージェント６に対するメッセージの送信もエージェント制御手段１２が行う。エージェント制御手段１２は、起動やメッセージの受け渡しといったオブジェクト化対象エージェント６の制御およびエージェント処理固定化部品１１の構成要素の制御の２つを行う。
【００５２】
処理２０８においてエージェント制御手段１２から処理結果３０５を受信したオブジェクト化対象エージェント６は、オブジェクト化する前と同様に受け取った処理結果に基づいて処理を続行する。
【００５３】
オブジェクト化前の処理とオブジェクト化後の処理を比較すると、オブジェクト化対象エージェント６自体の処理は変わっていない。しかしオブジェクト化後の処理では、オブジェクト化対象エージェント６に付加されたエージェント処理固定化部品１１により、協調促進器への処理依頼をエージェント制御手段１２が横取りし通信経路決定手段１４で処理依頼先が決定される。そのため、オブジェクト化後は協調促進器に対して処理依頼が発信されることはなく、通信経路決定手段１４により処理依頼に対して、予めシステム管理者が定義した通信経路テーブル１６を用いて処理依頼先が決定される。その結果、一つの処理依頼に対する処理依頼先は固定され、オブジェクト化対象エージェント６が仲介による協調機構を使用することによるシステムの不確定要素を排除することが可能となる。
【００５４】
次に第４の実施例について説明する。
本実施例では、移動エージェントをオブジェクト化する例を説明する。ただし、オブジェクト化後はオブジェクトからの処理依頼により起動されるものとする。
【００５５】
まず、オブジェクト化前の構成と処理の流れについて説明する。ここで説明する移動エージェントの処理については、例えば前出の公知例３に開示されている方法をとる。
【００５６】
図１１は本実施例におけるエージェントのオブジェクト化を行う前のブロック図である。図で環境ａ１８と環境ｂ２０はコンピュータネットワーク１９により接続された計算機環境である。環境ａ１８は、オブジェクト実行環境１とエージェント実行環境２とオブジェクト（第２の実施例に記載の管理／制御オブジェクトを含む）３とオブジェクト化対象エージェント６とエージェント管理オブジェクト９を含んでいる。環境ｂ２０は、オブジェクト実行環境２１とエージェント実行環境２２とオブジェクト２３とエージェント管理オブジェクト２４を含む。
【００５７】
本構成において、環境ａ１８のエージェント実行環境２上で移動エージェントであるオブジェクト化対象エージェント６を実行することを考える。オブジェクト化対象エージェント６は、動作中に移動メソッドを実行すると、その処理を中断し、中断した時点の状態（内部情報１７として管理）を保存して、目的地（本例では環境ｂ２０のエージェント実行環境２２）へ移動する。その後送り出されたオブジェクト化対象エージェント６が目的地に到着すると、移動メソッドの直後から処理を再開する。そして、再び移動メソッドを実行するとオブジェクト化対象エージェント６はさらに次の環境に移動する。
【００５８】
このように他の環境に移動しながら処理を実行する移動エージェントであるオブジェクト化対象エージェント６をオブジェクト化する場合の例を以下に説明する。
【００５９】
図１２は本実施例のオブジェクト化後の構成を示すブロック図である。図で、環境ａ１８と環境ｂ２０はコンピュータネットワーク１９により接続された計算機環境であり、それぞれオブジェクト実行環境（１と２１）とエージェント実行環境（２と２２）を含んでいる。さらに各実行環境はエージェント管理オブジェクト（９と２４）とオブジェクト（３と２３）を含んでいる。環境ａ１８のオブジェクト実行環境１において、オブジェクト７はオブジェクト化対象エージェント６にエージェントのオブジェクト化手段５を付加してオブジェクト化したものである。
【００６０】
１１はエージェント処理固定化部品である。本実施例ではオブジェクト７が他のオブジェクトからの処理依頼により起動され、エージェントからの処理依頼は来ないものとしているため、エージェント実行環境２にエージェントのオブジェクト化手段５の部品は含まれていない。つまり、エージェントのオブジェクト化手段５はエージェント処理固定化部品１１と等しくなっている。
【００６１】
エージェント処理固定化部品１１は、前記第３の実施例の構成におけるエージェント制御手段１２とオブジェクト通信手段１３と通信経路決定手段１４とエージェント通信手段１５に加えて、内部情報設定手段２５と内部情報取得手段２６の６つの要素より成る。前記第３の実施例の構成と本実施例の構成の差異は、本実施例の構成が内部情報設定手段２５と内部情報取得手段２６を含んでいる点であり、これらの手段を加えることにより移動エージェントをオブジェクト化できるようにしている。なお、本実施例の構成によっても前記第３の実施例で説明したのと同じ処理の流れで仲介による協調機構の機能を使用しているエージェントのオブジェクト化を実現することができる。
【００６２】
オブジェクト化対象エージェント６は、内部に実行中の状態を記憶した内部情報１７を持つ。また、通信経路決定手段１４は、通信経路テーブル１６を内部に持つ。
【００６３】
以上のようなシステム構成において、移動エージェントをオブジェクト化するための前提として、オブジェクト化対象エージェント６を環境ｂ２０でオブジェクト化して得られるオブジェクト２７を予めエージェントの移動先環境ｂ２０にもインストールしておく。オブジェクト２７は、オブジェクト化対象エージェント６にエージェントのオブジェクト化手段２８を付加したものである。また、エージェントのオブジェクト化手段２８はエージェントの処理固定化部品２９に等しく、エージェントの処理固定化部品２９は、エージェント制御手段３０とオブジェクト通信手段３１と内部情報設定手段３２と内部情報取得手段３３と通信経路決定手段３４（内部に通信経路テーブル３６を含む）とエージェント通信手段３５から成る。このように環境ａ１８のオブジェクト７と環境ｂ２０のオブジェクト２７は構成が同じであるが、環境の相違などにより両方の環境のエージェントのオブジェクト化手段（５と２８）の要素の処理内容は異なっていてもよい。
【００６４】
次に環境ａ１８から環境ｂ２０に移動して処理を実行するオブジェクト化対象エージェント６をオブジェクト化した場合の処理の流れを図１３に従って説明する。
【００６５】
他オブジェクトからの処理依頼に対して、まずエージェント制御手段１２が処理２２１においてオブジェクト化対象エージェント６を起動（３２１）する。
【００６６】
オブジェクト化対象エージェント６は、オブジェクト化前と同様に処理２２２において移動メソッドを実行し環境ｂ２０に移動しようとする。
【００６７】
オブジェクト化対象エージェント６から環境ｂ２０への移動通知（３２２）を受けたエージェント制御手段１２は、オブジェクト化対象エージェント６を環境ｂ２０に移動させる代わりに、処理２２３において移動通知３２３を内部情報取得手段２６に転送する。
【００６８】
移動通知３２３を受け取った内部情報取得手段２６は、処理２２４においてオブジェクト化対象エージェント６から内部情報１７を取得し、それと移動通知３２３に付加された情報から移動先への処理依頼３２４を生成する。ここで内部情報１７とは、処理途中であるオブジェクト化対象エージェント６の処理を中断したステップから移動先で処理再開するための情報で、具体的には、例えばオブジェクト化対象エージェント６が使用している全てのメモリの状態や処理を中断したステップを指すポインタなどである。ただし、オブジェクト化前のオブジェクト化対象エージェント６が移動エージェントの場合には、異機種の計算機環境でも実行できなければならないので、実行される計算機環境に依存するものは内部情報１７に含まない。こうした内部情報１７を取得し、処理依頼を生成する内部情報取得手段２６としては（エージェントの移動方法に、移動エージェントを移動元で暗号化し専用の情報転送形式にコード化してから転送し、一方到着先では受け取ったエージェントをデコードし、実行エンジンによりインタプリティブに解釈、実行する、公知例３に記載されている方法を適用することを前提として）、例えばこの実行エンジンが移動で中断した処理を再開するために使用している情報を内部情報１７としてオブジェクト化対象エージェント６から抽出し、それを含んだ処理依頼メッセージを構成するという方法を用いても良い。このようにして生成した処理依頼３２４をオブジェクト通信手段１３に渡す。
【００６９】
処理依頼３２４を受け取ったオブジェクト通信手段１３は、それを移動通知に付加された情報から取得したオブジェクト化対象エージェント６の移動先へ発信する（３２５）。
【００７０】
オブジェクト通信手段１３が発信した処理依頼３２５は、移動先である環境ｂ２０のエージェント処理固定化部品２９に含まれるオブジェクト通信手段３１が受信する。処理依頼３２５を受信したオブジェクト通信手段３１は、処理２２７においてその処理依頼３２６を内部情報設定手段３２に転送する。
【００７１】
処理依頼３２６を受け取った内部情報設定手段３２は、処理２２８において処理依頼３２６に含まれるオブジェクト化対象エージェント６の内部情報１７を抽出し、それを起動するオブジェクト化対象エージェント６に埋め込む準備をする。具体的には、例えば前述のエージェントの移動方法で移動エージェントをインタプリティブに解釈、実行する実行エンジンへ抽出した内部情報１７を渡すなどの方法を用いる。こうして内部情報１７を設定した後、処理依頼３２７をエージェント制御手段３０に転送する。
【００７２】
処理依頼３２７を受け取ったエージェント制御手段３０は、処理２２９においてオブジェクト化対象エージェント６を起動（３２８）する。
【００７３】
起動されたオブジェクト化対象エージェント６は、設定された内部情報１７に従って移動前の処理ステップから処理を開始（再開）し、それ以降の処理を実行する。
【００７４】
以上のようにして、予め移動先にインストールしておいたオブジェクト２７に対して、内部情報取得手段２６と内部情報設定手段３２によりエージェントの内部情報１７のみを受け渡して処理を行う。これにより、エージェントの移動は発生しなくなるため、移動エージェントは移動先にオブジェクトとしてインストールされたままとなり、移動先の環境に移動エージェントが非同期的に移動してきたり、移動していったりすることにより発生する不確定要素を排除することが可能となる。
【００７５】
次に第５の実施例について説明する。
本実施例では、他のエージェントから処理依頼を受けるエージェントをオブジェクト化する例を説明する。前記第３の実施例および前記第４の実施例では、オブジェクト化対象エージェントは、オブジェクト化後はオブジェクトからの処理依頼により起動されるものとしたが、エージェントからの処理依頼により起動されることもある。本実施例は後者に関するものである。
【００７６】
図１４は本実施例のオブジェクト化後の構成を示すブロック図である。図において、前記第４の実施例の環境ａ（図１２の１８）に含まれる構成要素と比較して、エージェントのオブジェクト化手段５に代理受付エージェント３７が追加されている。また、代理受付エージェント３７は機能通知手段３８と代理通信手段３９を含む。本実施例では、エージェントのオブジェクト化手段５は、エージェント処理固定化部品１１と代理受付エージェントＬ３７の２つの要素から成る。
【００７７】
代理受付エージェント３７は、エージェントの初期化の際にオブジェクト化対象エージェント６のサポートする機能をエージェント管理オブジェクト９（に含まれる協調促進器）に通知する機能と、他のエージェント４やエージェント管理オブジェクト９（に含まれる協調促進器）から処理依頼を受け取りそれをオブジェクト化対象エージェント６に転送する機能の２つの機能を持つ。それぞれの機能が機能通知手段３８と代理通信手段３９によって実装される。これら代理受付エージェント３７の２つの機能について以下に説明する。
【００７８】
まず、エージェント管理オブジェクト９に対する機能の通知についてその処理の流れを図１５により説明する。前記第３の実施例で説明したように、仲介によるエージェント同士の協調処理が行われるのに先立って、システム起動時など協調促進器の初期化のタイミングで、各エージェントがそのサポートしている機能をエージェント管理オブジェクト９（に含まれる協調促進器）に通知する。このタイミングでエージェント制御手段１２が処理２４１においてオブジェクト化対象エージェント６を初期化処理のために起動（３４１）する。
【００７９】
起動されたオブジェクト化対象エージェント６は、初期化処理として処理２４２においてエージェント管理オブジェクト９に対してサポート機能に関する機能通知３４２を発信する。
【００８０】
オブジェクト化対象エージェント６がエージェント管理オブジェクト９に発信した機能通知３４２は、まずエージェント制御手段１２が受け取り、処理２４３においてエージェント通信手段１５に転送される。
【００８１】
機能通知３４３を受け取ったエージェント通信手段１５は、処理２４４において機能通知３４４をさらに機能通知手段３８に転送する。
【００８２】
機能通知３４４を受け取った機能通知手段３８は、処理２４５において当該機能を代理受付エージェント３７がサポートする機能としてエージェント管理オブジェクト９に通知（３４５）する。
【００８３】
通知３４５を受け取ったエージェント管理オブジェクト９は処理２４６において受け取ったエージェントの機能を内部に持つデータベース（図示せず）に記憶する。
【００８４】
以上の処理により、機能通知手段３８はオブジェクト化対象エージェント６のサポート機能を代理受付エージェント３７のサポート機能としてエージェント管理オブジェクト９に通知することが可能となる。
【００８５】
次に他のエージェント４やエージェント管理オブジェクト９から処理依頼を受け取ったときの処理について説明する。代理受付エージェント３７は、上記機能通知によりオブジェクト化対象エージェント６がサポートする機能を持つエージェントとしてエージェント管理オブジェクト９に登録されている。また、代理受付エージェント３７にはオブジェクト化対象エージェント６と同じ名称を付ける。以上により、オブジェクト化対象エージェント６への他のエージェント４からの処理依頼を直接あるいはエージェント管理オブジェクト９を介して代理受付エージェント３７が受け取ることができる。代理受付エージェント３７が受け取った処理依頼は、代理通信手段３９がエージェント通信手段１５を経由してエージェント制御手段１２に渡す。エージェント制御手段１２は処理依頼に対してオブジェクト化対象エージェント６を起動する。以降の処理は前記第３の実施例ならびに前記第４の実施例と同様である。最後に処理結果を再びエージェント通信手段１５を経由して代理通信手段３９が受け取り、それを処理依頼元に応答する。
【００８６】
以上のように代理受付エージェントを追加し、それをオブジェクト化対象エージェントの代理とすることにより、オブジェクト化前にオブジェクト化対象エージェントに対して処理依頼を行っていた他エージェントの処理を書き換えることなく、オブジェクト化後も他エージェントからの処理依頼を直接あるいはエージェント管理オブジェクトを介して受け取り、それに対してオブジェクト化対象エージェントを起動して処理することが可能となる。
【００８７】
次に第６の実施例について説明する。
本実施例では、より具体的なドキュメント管理システムの例として電子図書館システムを取り上げる。これまでの実施例で述べてきたオブジェクト実行環境とエージェント実行環境を統合したシステム構造やエージェントのオブジェクト化手段が、電子図書館システムにどのように適用できるかを説明する。
【００８８】
本実施例で取り上げる電子図書館システムとは、図書を電子化されたデータとしてデータベースに蓄積し、それに対してアクセスすることにより、利用者の求める情報（マルチメディア情報）をネットワークを介して誰もが簡単に入手できるシステムである。電子図書館システムは近年盛んに研究、開発されつつあるシステムであり、基盤技術、周辺技術共に未だ開発の途上にある。システムの開発にあたっては、試用と評価を繰り返しながらシステムの構造や機能を策定するスパイラルモデルに基づいて開発が進められることが多い。そのため、システムの機能拡張が頻繁に行われる傾向にある。こうしたシステムでは機能拡張や機能変更を容易に行うために拡張性や柔軟性の高いアーキテクチャが要求される。
【００８９】
また、電子図書館システムは一旦導入されると、機能拡張をしながら長期間に渡って使用される。したがって、こうしたシステムでは、安定性や保守性の高いアーキテクチャも要求されることになる。
【００９０】
このように電子図書館システムは拡張性と柔軟性という特性と、安定性と保守性という特性の２つの軸の特性が要求される。これら２つの特性を時間軸で捉えると、開発フェーズや機能拡張フェーズで重視されるのが拡張性と柔軟性であり、実運用フェーズで重視されるのが安定性と保守性である。さらに、電子図書館システムは、多機能でかつ大規模であるという特徴も持っている。多機能でかつ大規模なシステムとなったときにも拡張性と柔軟性および安定性と保守性が保たれていなければならない。
【００９１】
このような要件を有する電子図書館システムを、エージェント実行環境とオブジェクト実行環境を統合したシステム構成を適用することで実現する。これらのうち、エージェントは、仲介による協調機構と移動エージェントの２点においてオブジェクトに比較して拡張性と柔軟性に優れ、新規機能を容易に実装することができる。このエージェントのメリットを活かして、電子図書館システムの機能のうち、試用と評価を繰り返しながら策定する機能、すなわちそれが使用する基盤技術や周辺技術、あるいは当該機能自体の仕様や実現方式が確立されていない機能についてはエージェントとして実装する。それに対して、予め仕様や実現方式が確立されている機能についてはオブジェクトとして実装する。こうした切り分けでエージェントとオブジェクトを使い分けることにより、まず開発フェーズにおける拡張性と柔軟性を確保しながら、多機能で大規模なシステム初期構築が可能となる。
【００９２】
一方、エージェントを使用するとシステムの全体的な動作が非決定的となり、予測不能となるという問題が発生する。特にシステムの大規模化に従ってエージェントの数が増加してくると、システム動作の不確定要因も増大し、上記の欠点が顕著になり、柔軟性と拡張性が高いというエージェントのメリットが失われてしまう。
【００９３】
そこで、実運用の直前やエージェントの数が増大し十分な柔軟性、拡張性、安定性、保守性が確保できなくなったタイミングで、エージェントのオブジェクト化を行う。オブジェクト化を行うエージェントとしては、その処理がエージェント特有の機能に強く依存しオブジェクト化によってその機能が著しく損なわれるものを除いたエージェントの中から選択する。基盤技術並びに周辺技術が開発途上にあり、かつ大規模なシステムである電子図書館システムでは、仕様や実現方式が確立されていない機能をエージェントとして実装していくと、その数は非常に多くなる。そこでエージェントのオブジェクト化手段により、エージェントの不確定要素を解消し、エージェントの多用により劣化するシステムの柔軟性、拡張性を回復することができ、実運用フェーズにおいて安定性と保守性の高いシステム構成を実現することが可能となる。
【００９４】
次に、上記のような開発方針に従ってエージェント実行環境とオブジェクト実行環境を統合したシステム構成と、エージェントのオブジェクト化手段を適用した電子図書館システムの例について詳細に説明する。
【００９５】
本実施例におけるドキュメント管理システムの構成を図１６に示す。
本実施例におけるドキュメント管理システムはオブジェクト実行環境１、およびエージェント実行環境２により構成される。そして、オブジェクト実行環境１およびエージェント実行環境２は、それぞれ文書登録用の画面や検索結果の表示画面などのユーザインタフェース機能を提供する表示層５００、文書の登録機能や検索機能および検索結果の表示機能などを提供する機能層６００およびデータベース機能を提供するデータ層７００の３階層に渡る形で構成される。
【００９６】
また、オブジェクト実行環境１において表示層５００は、表示層登録用オブジェクト群５０１、表示層検索用オブジェクト群５０２、表示層運用管理用オブジェクト群５０３および表示層エージェント管理オブジェクト５４０により構成される、また、機能層６００は、機能層登録用オブジェクト群６０１、機能層検索用オブジェクト群６０２、機能層運用管理用オブジェクト群６０３および機能層エージェント管理オブジェクト６４０により構成される、さらに、データ層７００はデータ層オブジェクト群７０１およびデータ層エージェント管理オブジェクト７４０により構成され。そして各オブジェクト群はすべて各層に設けられた管理／制御オブジェクトにより一元的に管理、制御される構成をとる。以上が本実施例におけるドキュメント管理システムの構成である。
【００９７】
まず、電子図書館システムの機能のうち、図書の登録、検索、閲覧および図書館管理者による運用管理処理についてそれぞれ説明する。これらの機能は、電子図書館システムの基本機能として予め仕様や実現方式が確立されている機能であるため、オブジェクトとして実装する。
【００９８】
はじめに、文書の登録時の処理について説明する。
電子図書館システムでは広域ネットワークを介して接続される複数のドキュメント管理システム間で、文書の論理構造が明確に記述された電子化文書であるＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：標準一般化マーク付け言語）などの構造化文書、明確な論理構造を持たない電子化文書である非構造化文書、絵画などの画像データなどの様々な形式の文書情報が受け渡される。また、受け渡された文書データを高度に再利用するためには、文書の内容そのもの（本文データ）、書誌的事項の他に、その論理的（意味的）な構造が重要な意味を持つ。このため、本実施例におけるドキュメント管理システムでは、文書データの交換性を保持するために機能層で全ての文書を、構造化文書の標準形式であるＳＧＭＬ形式に変換する。その後に、登録対象文書をデータ層に送信し、これをデータベース内で蓄積、管理する。
【００９９】
次に、本実施例における文書登録用のオブジェクト群の構成を図１７に示す。本実施例におけるドキュメント管理システムでは、表示層登録用オブジェクト群５０１としてイメージ入力用オブジェクト５１１、コード化用オブジェクト５１２、構造化変換用オブジェクト５１３、構造化文書入力用オブジェクト５１４およびこれらのオブジェクト群を管理、制御する登録用ユーザインタフェース管理／制御オブジェクト５１０等により構成する。また、機能層登録用オブジェクト群６０１はイメージ入力オブジェクト６１１、コード化オブジェクト６１２、構造化変換オブジェクト６１３、構造化文書検証オブジェクト６１４、複合化文書部品検証オブジェクト６１５、書誌情報生成オブジェクト６１６およびこれらのオブジェクト群を管理、制御する登録管理／制御オブジェクト６１０等により構成する。
【０１００】
さらに、データ層オブジェクト群７０１を、リンク情報生成オブジェクト７１１、登録制御オブジェクト７１２、ドキュメントを蓄積管理するデータベースマネージメントシステム（ＤＢＭＳ）オブジェクト７３０およびこれらのオブジェクト群を管理、制御するデータ管理／制御オブジェクト７１０等により構成する。
【０１０１】
次に、本実施例におけるドキュメント管理システムの登録時の処理内容について説明する。
はじめに，登録対象文書が電子化文書であり，その中でも文書の論理構造が明確に記述されたＳＧＭＬなどの構造化文書の形式で作成された文書を登録する際の処理について図１８を用いて説明する。
【０１０２】
（１）  登録に際し、登録対象とする文書のタイトル、著者名などをキーに登録対象図書に対して、国内で出版される全ての図書を一意に識別するための番号である全国書誌番号を取得する。そして、構造化文書入力用オブジェクト５１４により構造化文書入力用ユーザインタフェースを介して登録文書の全国書誌番号、格納領域名称、文書名、ＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ：文書型定義）名を指定して文書の登録を指示する。
【０１０３】
（２）  構造化文書登録用の命令メッセージは登録用ユーザインタフェース管理／制御オブジェクト５１０を介して登録管理／制御オブジェクト６１０に送信される。
【０１０４】
（３）  登録管理／制御オブジェクト６１０は登録対象とする構造化文書の格納領域名称、文書名およびＤＴＤ名とともに登録対象文書が構造化文書として正しい文書であるか否かの検証を行う検証実行メッセージを構造化文書検証オブジェクト６１４に対して送信する。
【０１０５】
（４）  構造化文書検証オブジェクト６１４では指定されたＳＧＭＬ文書に対し、例えば（実践ＳＧＭＬ、Ｅｒｉｃ  ｖａｎ  Ｈｅｒｗｉｊｎｅｎ著、日本規格協会出版、１９９２，ｐ．１２７〜ｐ．１３３）に示されているパージング処理を行うことにより、論理構造的に矛盾のない文書であることを検証し、その結果を登録管理／制御オブジェクト６１０に返信する。その結果、論理構造に矛盾があると判定された場合には登録管理／制御オブジェクト６１０からその旨をクライアントに通知し、修正を促す。
【０１０６】
（５）  構造化文書検証処理の結果、論理構造に矛盾のない文書であると判定された場合、登録管理／制御オブジェクト６１０から引続き、登録対象となる構造化文書の格納領域名称、文書名およびＤＴＤ名とともに複合化文書部品検証オブジェクト６１５に対し実行メッセージを送信する。
【０１０７】
（６）  複合化文書部品検証オブジェクト６１５では、指定されたＳＧＭＬ文書を構成する要素データが不足なく存在することを検証し、その結果を登録管理／制御オブジェクト６１０に返信する。検証の結果、不足する要素データがあると判定された場合、登録管理／制御オブジェクト６１０はその旨をクライアントに通知し、修正を促す。
【０１０８】
（７）  複合化文書の部品検証処理の結果、登録対象とする構造化文書を構成する部品が全て存在すると判定された場合には、登録管理／制御オブジェクト６１０は引続き、登録対象となる構造化文書の全国書誌番号とともに実行メッセージを書誌情報生成オブジェクト６１６へ送信する。
【０１０９】
（８）  書誌情報生成オブジェクト６１６では、指定された構造化文書の全国書誌番号をキーとして、例えば国立国会図書館などで用いられているＪＡＰＡＮ／ＭＡＲＣ等の形式で格納した書誌情報を取得する。これを電子図書館用の標準書誌ＤＴＤに従いＳＧＭＬ形式に変換することにより、書誌用ＳＧＭＬ文書を生成し、登録管理／制御オブジェクト６１０に返信する。書誌用ＳＧＭＬ文書の生成処理が正常に終了しなかった場合、登録管理／制御オブジェクト６１０はその旨をクライアントに通知し、入力する書誌情報の修正を促す。
【０１１０】
（９）  以上の処理により生成されたＳＧＭＬ文書および書誌用ＳＧＭＬ文書をデータ層に転送し、登録メッセージを送信することにより、データ層７０１への登録を指示する。
【０１１１】
（１０）  データ層７０１におけるデータ管理／制御オブジェクト７１０が機能層の登録管理／制御オブジェクト６１０からの登録メッセージを受け取ると、構造化文書の格納領域名、文書名およびＤＴＤ名とともに実行メッセージをリンク情報生成オブジェクト７１１へ送信する。
【０１１２】
（１１）  リンク情報生成オブジェクト７１１では、登録対象とするＳＧＭＬ文書に対しＤＴＤに従った解析処理を行うことにより、外部文書（または部品）の参照部分を抽出する。そして、参照箇所に対応する文書中でのオフセット情報と参照先外部文書（または部品）の識別番号を抽出することによりリンク情報を生成し、データ管理／制御オブジェクト７１０に送出する。
【０１１３】
（１２）  リンク情報生成オブジェクト７１１による登録対象のＳＧＭＬ文書に対するリンク情報の生成が終了すると、データ管理／制御オブジェクト７１０は登録対象ＳＧＭＬ文書、書誌用ＳＧＭＬ文書、リンク情報および全国書誌番号とともに起動メッセージを登録制御オブジェクト７１２へ送信する。
【０１１４】
（１３）  登録制御オブジェクト７１２では、登録要求をさらに詳細に分析することにより、ＤＢＭＳオブジェクト７３０に対する登録メッセージ（例えば、ＤＢＭＳオブジェクトがリレーショナルデータベースＲＤＢで構成される場合にはＳＱＬにおけるｉｎｓｅｒｔ文）の列を生成し、データ管理／制御オブジェクト７１０に返信する。
【０１１５】
（１４）  データ管理／制御オブジェクト７１０はＤＢＭＳオブジェクト７３０に対し登録メッセージ（例えば、ＳＱＬにおけるｉｎｓｅｒｔ文）の列を送信する。
【０１１６】
（１５）  ＤＢＭＳオブジェクト７３０はデータ管理／制御オブジェクト７１０から登録メッセージを受け取るとＤＢＭＳオブジェクト７３０内の登録メソッドを起動することにより登録処理を実行する。そして、データ管理／制御オブジェクト７１０はＤＢＭＳオブジェクト７３０における登録メソッドの戻り値を受け取ることによりＤＢＭＳオブジェクト７３０への登録が正常に終了したことを確認する。ＤＢＭＳオブジェクト７３０への登録が正常に終了しなかった場合には、データ管理／制御オブジェクト７１０はＤＢＭＳオブジェクト７３０に対しロールバック要求を発行することによりデータベースを登録前の状況に戻す。
【０１１７】
（１６）  データ管理／制御オブジェクト７１０は全てのＤＢＭＳオブジェクト７３０への登録が正常に終了したか否かを判定し、正常に終了した場合にはその結果を機能層における登録管理／制御オブジェクト６１０に返送する。
【０１１８】
（１７）  登録管理／制御オブジェクト６１０はデータ層７０１への登録メッセージに対する戻り値から文書の登録が正常に終了したか否かを判定する。その結果、正常終了したと判定された場合にはその旨を表示層に送出し、登録を終了する。また、正常に終了しなかった場合にはデータ層に対し再度登録メッセージを送信するか、または登録が失敗した旨を表示層に送出し処理を終了する。
【０１１９】
以上が，登録対象文書が電子化文書であり，その中でも文書の論理構造が明確に記述されたＳＧＭＬなどの標準的な構造化文書の形式で作成された文書を登録するときの処理の内容である。
【０１２０】
次に，登録対象文書が電子化文書であるが，文書の論理構造が明確に記述されていない文書（以後，非構造化文書と呼ぶ）を登録するときの処理について説明する。
【０１２１】
非構造化文書の登録は，非構造化文書を構造化文書に変換する処理を行った後，構造化文書の入力処理フローと同一の処理を行なうことにより実現可能なため、ここでは非構造化文書の構造化文書への変換処理についてだけ図１９を用いて説明する。
【０１２２】
（１）  登録に際し、登録者は登録対象とする文書のタイトルや著者名などをキーに登録対象図書の全国書誌番号を取得する。そして、構造化変換用オブジェクト５１３により制御される非構造化文書の構造化文書への変換用ユーザインタフェースを介して登録文書の全国書誌番号、格納領域名称、文書名およびＤＴＤ名を指定して文書の登録を指示する。
【０１２３】
（２）  非構造化文書登録用の命令メッセージは登録用ユーザインタフェース管理／制御オブジェクト５１０を介して登録管理／制御オブジェクト６１０に送信される。
【０１２４】
（３）  登録管理／制御オブジェクト６１０は登録対象とする構造化文書の格納領域名称、文書名ＤＴＤ名および非構造化文書を構造化文書に変換するための構造化文書変換ルールとともに実行メッセージを構造化変換オブジェクト６１３に対して送信する。
【０１２５】
（４）  構造化変換オブジェクト６１３では、指定された非構造化文書をＳＧＭＬ形式に変換する処理を行う。すなわち、指定された文書が論理構造を持たない文書であったり、文書の論理構造を指定した検索や表示が不要な場合には文書全体を一つの論理構造としてＳＧＭＬ文書への変換を行う。また、指定された文書が論理構造を持ち、かつ文書の論理構造を指定した検索および表示を行う場合には、例えば特願平７−２２３０１７で提案した方法を用いて指定されたＤＴＤおよび構造化文書変換ルールによる論理構造の認識処理を行うことによりＳＧＭＬ文書への変換を行い、生成されたＳＧＭＬ文書を登録管理／制御オブジェクト６１０へ返送する。
【０１２６】
（５）  登録管理／制御オブジェクト６１０は構造化変換オブジェクト６１３への実行メッセージに対する戻り値から構造化文書への変換処理が正常に終了したことを確認し、正常に終了した場合にはその旨を表示層に送出する。また正常に終了したなかった場合には構造化変換オブジェクト６１３に対し再度実行メッセージを送信するか、または構造化変換が失敗した旨を表示層に送出し処理を終了する。
【０１２７】
以上が，非構造化文書の形式で作成された文書を登録するときの処理の内容である。
【０１２８】
最後に，紙面などの上に印刷された非電子化文書を登録するときの処理について説明する。
【０１２９】
非電子化文書の登録は、紙面文書をイメージスキャナ等で入力し、電子化したイメージデータに対し文字認識処理を行うが、文字情報部をテキスト化する場合と文字認識処理を行わない場合で処理が異なる。そして、前者についてはイメージの入力処理、文字認識によるコード化テキストへの変換処理、構造化文書への変換処理および登録用構造化文書の生成とデータ層における構造化文書の登録からなる５ステップにより実現する。また後者については、イメージの入力処理、構造化文書への変換処理および登録用構造化文書の生成とデータ層における構造化文書の登録からなる４ステップにより実現する。
【０１３０】
この中で、構造化文書への変換処理および登録用構造化文書の生成とデータ層における構造化文書の登録については先述した電子化文書の入力処理フローと同一の処理で実現することが可能なため、ここでは機能層におけるイメージの入力処理および文字認識によるコード化テキストへの変換処理についてだけ図２０を用いて説明する。
【０１３１】
はじめに，イメージの入力処理について説明する。
（１）  登録に際し、登録者は登録対象とする文書のタイトルや著者名などをキーに登録対象図書の全国書誌番号を取得する。そして、イメージ入力用オブジェクト５１１により制御されるイメージ入力用ユーザインタフェースを介して、登録文書の全国書誌番号を指定して文書の登録を指示する。
【０１３２】
（２）  イメージ入力用の命令メッセージは登録用ユーザインタフェース管理／制御オブジェクト５１０を介して登録管理／制御オブジェクト６１０へ送信される。
【０１３３】
（３）  登録管理／制御オブジェクト６１０は登録対象とする図書の全国書誌番号に対応した名称でイメージデータ格納用のディレクトリを生成する。そして、生成したディレクトリ名称とともに実行メッセージをイメージ入力オブジェクト６１１へ送信する。
【０１３４】
（４）  イメージ入力オブジェクト６１１では、一頁ごとにスキャナで紙面文書を読み込み、頁番号に対応したファイル名称で先述したディレクトリ内に入力イメージを格納していく。そして、紙面文書の入力処理が正常に終了した場合にはその旨を、また正常に終了しなかった場合には異常終了した旨をイメージ入力オブジェクト６１１に対する戻り値として登録管理／制御オブジェクト６１０へ返信する。
【０１３５】
（５）  登録管理／制御オブジェクト６１０はイメージ入力オブジェクト６１１への実行メッセージに対する戻り値からイメージの入力が正常に終了したことを確認し、正常に終了した場合にはその旨を表示層に送出する。また正常に終了したなかった場合にはイメージ入力オブジェクト６１１に対し再度実行メッセージを送信するか、またはイメージ入力が失敗した旨を表示層に送出し処理を終了する。以上がイメージの入力処理の内容である。
【０１３６】
続いてイメージのコード化変換処理について説明する。
（６）  コード化変換に際し、登録者は登録対象とする文書のタイトルや著者名などをキーに登録対象図書の全国書誌番号を取得する。そして、コード化用オブジェクト５１２により制御されるイメージ入力用ユーザインタフェースを介して、登録文書の全国書誌番号を指定して文書の登録を指示する。
【０１３７】
（７）  イメージ入力用の命令メッセージは登録用ユーザインタフェース管理／制御オブジェクト５１０を介して登録管理／制御オブジェクト６１０に送信される。
【０１３８】
（８）  登録管理／制御オブジェクト６１０は登録対象とする図書の全国書誌番号とともにコード化変換の実行メッセージをコード化オブジェクト６１２に対して送信する。
【０１３９】
（９）  コード化オブジェクト６１２では指定された文書に対する全国書誌番号から該当する文書のイメージが格納されているディレクトリ名称を抽出し、そこから頁番号順にイメージデータを読み出す。そして、各イメージデータに対し書式解析を行うことにより文字領域を抽出し、さらに文書認識処理を実行することによりイメージデータをテキストデータにコード化変換していく。そして、コード化が正常に終了するとコード化データを登録管理／制御オブジェクト６１０に返送する。また、正常に終了しなかった場合には、その旨を登録管理／制御オブジェクト６１０に返信する。
【０１４０】
（１０）  登録管理／制御オブジェクト６１０はコード化オブジェクト６１２への実行メッセージに対する戻り値から文書の登録が正常に終了したかを確認し、正常に終了した場合にはその旨を表示層に送出する。また正常に終了したなかった場合にはコード化オブジェクト６１２に対し再度実行メッセージを送信するか、あるいはコード化が失敗した旨を表示層に送出し処理を終了する。以上が本発明によるドキュメント管理システムの登録処理の内容である。
【０１４１】
このように、電子図書館を具体例とした本実施例におけるドキュメント管理システムでは、全ての文書を機能層でＳＧＭＬなどの構造化文書に変換してからデータ層に登録する。こうすることにより、イメージデータやテキストデータにより構成されるデータを一元的に蓄積管理することができるようになる。さらに、データ層で扱う文書の形式を標準形式に統一することにより、広域ネットワークを介して接続された図書館間でのデータの受け渡しを容易に実現することが可能になる。
【０１４２】
次に，本実施例におけるドキュメント管理システムの検索および閲覧処理の概略について説明する。
本実施例におけるドキュメント管理システムでは、図１６における表示層検索用オブジェクト群５０２をログイン用オブジェクト５２１、検索条件入力用オブジェクト５２２、検索結果表示用オブジェクト５２３、文書閲覧用オブジェクト５２４、ログアウト用オブジェクト５２５およびこれらのオブジェクト群を管理、制御する検索用ユーザインタフェース管理／制御オブジェクト５２０等により構成する。また、機能層検索用オブジェクト群６０２をユーザ認証用オブジェクト６２１、検索先図書館決定オブジェクト６２２、検索履歴管理オブジェクト６２３、課金情報生成管理オブジェクト６２４、出力形式変換オブジェクト６２５およびこれらのオブジェクト群を管理、制御する検索管理／制御オブジェクト６２０等により構成する。さらに、データ層オブジェクト群７２１として、図１７におけるデータ層オブジェクト群７０１に加え、検索制御オブジェクト７１３、検索結果集合管理オブジェクト７１４および課金情報生成管理オブジェクト７１５を付加することにより構成する。
【０１４３】
次に本実施例における検索および閲覧処理の概略について説明する。
ユーザが、例えばＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）ブラウザなどを使用してインターネット経由でドキュメント管理システムにアクセスすると、まずログイン画面が表示される。ログインはドキュメント管理システムにアクセスするユーザを認証するための操作である。各自に割り当てられたユーザＩＤとパスワードを入力し認証されたユーザは、ドキュメント管理システムにアクセスできるようになる。こうしたログインは図書情報へのアクセスに対するユーザへの課金や、特定の図書情報へのアクセスの制限などを行う際に必要となる。したがって、ユーザへの課金やアクセスの制限などを行わない場合にはログインという操作は必要ない。
【０１４４】
ログインが完了すると、検索条件の入力画面が表示される。そして、ユーザは検索条件入力画面から検索条件として書名や著者名といった書誌情報を指定した書誌検索、またはキーワードを指定した全文検索を行うことにより、検索結果文書の一覧を得る。そして、その中から文書の内容を閲覧する場合にはユーザは表示対象文書を指定して文書の閲覧を指示する。また、本実施例におけるドキュメント管理システムでは、過去の検索履歴および検索結果集合を保存しておくため、過去の検索結果の参照や途中の検索結果集合を対象にした検索（絞り込み）などが実現できる。
【０１４５】
このように文書の検索と閲覧をくり返した後、ユーザはログアウト画面を通じてログアウト処理を指示することにより一連の検索および閲覧処理を終了する。以上が本実施例におけるドキュメント管理システムにおける処理の概要である。
【０１４６】
以下、本実施例におけるドキュメント管理システムのログイン、検索、閲覧およびログアウト時の各処理の内容について説明する。
【０１４７】
はじめに、ログイン時の処理の内容を図２２を用いて説明する。
（１）  ユーザが電子図書館システムにアクセスするとまず検索用ユーザインタフェース管理／制御オブジェクト５２０はログイン用オブジェクト５２１を起動してログイン画面を表示する。ログイン画面は図書館ユーザ毎に割り当てられたユーザＩＤとパスワードを入力するための画面で、ユーザＩＤやパスワードを入力するためのテキストエリアと送信ボタンよりなる。送信ボタンがマウスクリックされると、検索用ユーザインタフェース管理／制御オブジェクト５２０を通じて検索管理／制御オブジェクト６２０にログインメッセージが発行される。
【０１４８】
（２）  ログインメッセージを受け取った検索管理／制御オブジェクト６２０は、メッセージを解析しそれがログインメッセージであることが分かると、そのメッセージをユーザ認証オブジェクト６２１に転送する。
【０１４９】
（３）  ログインメッセージを受け取ったユーザ認証オブジェクト６２１はメッセージの中に含まれているユーザＩＤとパスワードがユーザ情報テーブル６２７に登録されているかどうかを調べる。調べた結果、ユーザを認証できたかどうかを検索管理／制御オブジェクト６２０に応答する。
【０１５０】
（４）  ユーザ認証オブジェクト６２１から応答を受け取った検索管理／制御オブジェクト６２０は、その応答がユーザを認証できなかったというものならば、そのことを検索用ユーザインタフェース管理／制御オブジェクト５２０に通知し、再度ユーザＩＤとパスワードを入力させる。
【０１５１】
ユーザを認証できたというものならば、検索管理／制御オブジェクト６２０の擬似セッション管理機能（図示せず）を使用して、従来クライアントサーバシステムの物理的なセッションを擬似的に実現した擬似セッションを確立する。擬似セッションは、電子図書館への入館（ログイン）から退館（ログアウト。ログアウトの詳細については後述）までの一連の処理の流れを１つの識別子（擬似セッションＩＤ）で管理し、その中で行われる検索の結果をその識別子と関連付けて記憶することにより、途中の検索結果集合を対象にした検索（絞り込み検索）などを実現するものである。擬似セッション管理機能はログインしたユーザに対してその図書館でユニークな擬似セッションＩＤを割り当て、擬似セッション管理テーブル６２６にユーザＩＤなどとともに格納する。以上のようにして擬似セッション確立を行った後に検索用ユーザインタフェース管理／制御オブジェクト５２０に応答を返して次の画面を表示するよう促す。
【０１５２】
（５）  検索用ユーザインタフェース管理／制御オブジェクト５２０は検索条件入力用オブジェクト５２２を起動することにより検索条件入力画面を表示する。以上がログイン時処理の内容である。
【０１５３】
次に検索時の処理の内容について図２３を用いて説明する。
（１）  ユーザは検索条件入力用オブジェクト５２２により制御される検索条件入力画面５９０から検索条件を入力する。検索条件としては書名や著者名といった書誌情報を対象とした書誌検索であっても構わないし、文書の全文を対象として指定したキーワードを含む文書を検索する全文検索であっても構わない。また、図書の分類などを階層的にたどりながら検索していくブラウジング検索であっても構わない。さらに、このとき検索対象とする図書館を指定することにより、アクセスした図書館以外の図書館の図書を検索することもできる。複数の図書館を検索対象図書館と指定することも可能である。ここでは例として、図書館Ａに入館した利用者が、著者名が「江戸川乱歩」である図書という検索条件で、「図書館Ａ、図書館Ｂ」を対象に検索する場合について説明する。検索条件が入力されると、検索命令メッセージは検索用ユーザインタフェース管理／制御オブジェクト５２０を経由して検索管理／制御オブジェクト６２０に送信される。
【０１５４】
（２）  検索命令メッセージを受け取った検索管理／制御オブジェクト６２０は、まず擬似セッション管理機能により擬似セッションＩＤを特定する。その後、受け取ったメッセージを解析しそれが検索命令メッセージであることが分かると、そのメッセージを検索先図書館決定オブジェクト６２２に転送する。
【０１５５】
（３）  検索先図書館決定オブジェクト６２２では、ユーザが指定した検索対象図書館が複数ある場合に、それらに対する検索の順序を予め定義されたルールに基づいて決定する。ルールの例としては、書誌情報による検索ではある特定の図書を探すことが目的であり、図書館の蔵書数が多いほど求めている図書を見つけることができる可能性が高くなると考えられることから、検索対象図書館の蔵書数の多い図書館から順に検索を開始する、といったようなものを用いる。検索先図書館決定オブジェクト６２２は決定した検索順序を検索管理／制御オブジェクト６２０に応答する。本図の例では、「図書館Ｂ→図館Ａ」という検索順序が応答されたものとする。
【０１５６】
（４）  検索順序を受け取った検索管理／制御オブジェクト６２０は、その順序に従って検索対象図書館のデータ層７２１に検索命令メッセージを発行する。ここでは、まず図書館Ｂのデータ管理／制御オブジェクト７１０に検索命令メッセージを発行する。
【０１５７】
（５）  検索命令メッセージを受け取った図書館のデータ管理／制御オブジェクト７１０はそのメッセージを解析し、それが検索命令メッセージであることが分かると、そのメッセージを検索制御オブジェクト７１３に転送する。
【０１５８】
（６）  検索制御オブジェクト７１３は検索命令メッセージを解析し、それをＤＢＭＳオブジェクト７３０向けの命令メッセージの列に変換し、データ管理／制御オブジェクト７１０に応答する。
【０１５９】
（７）  ＤＢＭＳオブジェクト７３０向けの命令メッセージを受け取ったデータ管理／制御オブジェクト７１０は、検索対象となるＤＢＭＳオブジェクト７３０に対して命令メッセージを発行する。
【０１６０】
（８）  検索対象となるＤＢＭＳオブジェクト７３０は受信した命令メッセージに従ってアクセス権管理メソッドを通して検索を行う。アクセス権管理メソッドは見つけ出した図書に対して当該ユーザに参照権限があるかどうかをチェックする。検索を終えたＤＢＭＳオブジェクト７３０は検索結果をデータ管理／制御オブジェクト７１０に検索結果と検索結果集合の識別子を応答する。検索結果としては、図書閲覧のときに図書データを取り出すための識別子、検索条件を満足した図書の件数および書名や著者名など検索結果として表示する書誌情報などが返送される。
【０１６１】
（９）  検索結果と検索結果集合識別子を受け取ったデータ管理／制御オブジェクト７１０は検索結果集合識別子と検索管理／制御オブジェクト６２０から受け取った検索命令メッセージに付加されていた擬似セッションＩＤを含んだ検索結果集合識別子登録命令メッセージを検索結果集合管理オブジェクト７１４に渡す。検索結果集合管理オブジェクト７１４は擬似セッションＩＤと検索結果集合識別子を対応付けて検索結果集合テーブル７３１に格納する。
【０１６２】
（１０）  データ管理／制御オブジェクト７１０は、さらに課金情報生成管理オブジェクト７１５に課金情報生成命令メッセージを発行する。
【０１６３】
（１１）  課金情報生成管理オブジェクト７１５では検索処理の内容から課金情報を生成し、それをデータ層の課金情報テーブル７３２に管理すると共に、生成した課金情報をデータ管理／制御オブジェクト７１０に応答する。
【０１６４】
（１２）  課金情報を受け取ったデータ管理／制御オブジェクト７１０は、検索結果、検索結果集合識別子および課金情報を検索管理／制御オブジェクト６２０に応答する。
【０１６５】
（１３）  検索結果などを受け取った検索管理／制御オブジェクト６２０は、課金情報について機能層の課金情報生成管理オブジェクト６２３に課金情報追加命令メッセージを発行する。課金情報追加命令メッセージを受け取った課金情報生成管理オブジェクト６２３はその擬似セッションに関する課金情報に検索管理／制御オブジェクト６２０から受け取った課金情報を加算する。
【０１６６】
（１４）  検索管理／制御オブジェクト６２０は、検索順序に従って対象図書館への検索命令メッセージの送信を繰り返す。
【０１６７】
（１５）  全ての検索対象図書館について検索が完了したところで、検索管理／制御オブジェクト６２０は検索履歴管理オブジェクト６２４に検索履歴登録命令メッセージを発行する。検索履歴登録命令メッセージを受け取った検索履歴管理オブジェクト６２４は、表示層から受け取った検索命令メッセージ、検索結果集合識別子と検索対象図書館のペアを検索履歴テーブル６２９に登録する。ここでいう検索履歴とは、ユーザにそれまでに行った検索の結果集合を対象にした検索サービスを提供するために、表示層に表示データとして送られる情報を言う。
【０１６８】
（１６）  検索管理／制御オブジェクト６２０は、検索用ユーザインタフェース管理／制御オブジェクト５２０に対し検索結果を応答する。検索結果を受け取った検索ユーザインタフェース管理／制御オブジェクト５２０は検索結果表示用オブジェクト５２３に対し検索結果の画面表示を指示する。
【０１６９】
検索結果画面は、検索条件に合致した図書の書名や著者名などの書誌情報を一覧表示する。表示される書誌情報の一部（例えば書名）はハイパーリンクのためのボタン（アンカー）となり、それをマウスでクリックすることによりその図書の内容を閲覧することができる。図書閲覧の際、ハイパーリンクを実現するために選択された図書を特定するための情報（図書を保有する図書館名と、検索結果として受け取った図書データを取り出すための識別子）を検索結果画面の情報の中に埋め込む。
【０１７０】
以上が検索時処理の内容である。次に閲覧時の処理の内容について図２４を用いて説明する。
（１）  検索結果画面上５９１でユーザが各文書のタイトル等に埋め込まれた図書アンカーをマウスでクリックすると表示層の検索用ユーザインタフェース管理／制御オブジェクト５２０の図書閲覧命令メッセージ生成部（図示せず）を起動する。図書閲覧命令メッセージ生成部は、選択された図書アンカーに対応するＨＴＭＬタグからユーザが選択した図書を特定するための識別子を受け取り、それを基にユーザが選択した図書を閲覧するための閲覧命令メッセージを生成し、機能層の検索管理／制御オブジェクト６２０に送信する。この識別子は、予め検索結果として検索結果画に埋めこまれていた図書を保有する図書館名と図書の内容を取り出すための情報を抽出したものである。
【０１７１】
（２）  検索用ユーザインタフェース管理／制御オブジェクト５２０から閲覧命令メッセージを受け取った検索管理／制御オブジェクト６２０は、まず擬似セッション管理部（図示せず）でユーザＩＤなどをキーに擬似セッション管理テーブル６２６を検索し、擬似セッションＩＤを特定する。
【０１７２】
（３）  検索管理／制御オブジェクト６２０は、受け取ったメッセージを解析し、それが閲覧命令メッセージであることが分かると、そのメッセージを図書を保有する図書館（本例ではＢ図書館とする）のデータ管理／制御オブジェクト７１０に転送する。
【０１７３】
（４）  データ管理／制御オブジェクト７１０は、受け取ったメッセージを解析しそれが閲覧命令メッセージであることが分かると、それを図書の内容（ＳＧＭＬ文書）、イメージデータなどの図書の要素データおよびリンク情報を取得するためのＤＢＭＳオブジェクト７３０向けの命令メッセージの列に変換し、ＤＢＭＳオブジェクト７３０に発行する。
【０１７４】
（５）  ＤＢＭＳオブジェクト７３０は命令メッセージに従って、参照メソッドを実行して文書の内容の参照を行う。参照メソッドは、選択された図書について図書の内容（ＳＧＭＬ文書）、１件の文書を構成するイメージなどの要素データおよび要素データ間のリンクを表わす情報をデータベースから検索し、それらをまとめてデータ管理／制御オブジェクト７１０に応答する。
【０１７５】
（６）  ＤＢＭＳオブジェクト７３０から図書の内容を受け取ったデータ管理／制御オブジェクト７１０は、次に課金情報を生成するための命令メッセージを生成し、課金情報生成管理オブジェクト７１５に送信する。
【０１７６】
（７）  課金情報生成管理オブジェクト７１５は検索対象としたデータベースの種別やヒットした文書の件数などから課金情報を生成し、それをデータ層の課金情報テーブル７３２に管理すると共に、生成した課金情報をデータ管理／制御オブジェクト７１０に応答する。
【０１７７】
（８）  課金情報を受け取ったデータ管理／制御オブジェクト７１０は、ＤＢＭＳオブジェクト７３０から受け取った図書の内容（ＳＧＭＬ文書）、要素データおよびリンク情報と、課金情報生成管理オブジェクト７１５から受け取った課金情報をまとめて検索管理／制御オブジェクト６２０に応答する。
【０１７８】
（９）  図書の内容（ＳＧＭＬ文書）、要素データ、リンク情報および課金情報を受け取った検索管理／制御オブジェクト６２０は、図書を表示するためのデータであるＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書を生成するための命令メッセージを生成し、出力形式変換オブジェクト６２５に送出する。
【０１７９】
（１０）  電子図書館が持つＳＧＭＬタグをＨＴＭＬタグに変換するために予めユーザインタフェース決定時に定められた変換規則に従って、図書の内容をＳＧＭＬ形式からＨＴＭＬ形式に変換する。
【０１８０】
（１１）  イメージデータなどの図書の要素データへのリンク情報と、ハイパーリンク情報をＨＴＭＬ形式に変換された文書に埋めこむ。
【０１８１】
要素データへのリンク情報は、文書中に既に埋めこまれているリンク先文書を特定するための識別子（以後、外部識別子と呼ぶ）と要素データのファイル名称よりなる。ＨＴＭＬ形式に変換された文書中から外部識別子を探し、その部分をデータ管理／制御オブジェクト７１０から取り込んできた要素データのファイル名称に変換する。
【０１８２】
ハイパーリンク情報は、文書中に既に埋めこまれている外部識別子とリンク先の図書を特定する識別子（例えば国立国会図書館などで用いられているＪＡＰＡＮ／ＭＡＲＣにおける国名コードと全国書誌番号）よりなる。ＨＴＭＬ形式に変換された文書中から外部識別子を探し、その識別子により特定される文書を検索することにより、リンク先文書を取得し、これを表示形式であるＨＴＭＬ形式に変換する。
【０１８３】
以上の変換で生成したＨＴＭＬ文書を検索管理／制御オブジェクト６２０に応答する。
【０１８４】
（１２）  データ管理／制御オブジェクト７１０から受け取った課金情報を機能層で管理している課金情報に加算するための命令メッセージを生成し、課金情報生成管理オブジェクト６２２に送信する。
【０１８５】
（１３）  課金情報加算命令メッセージを受け取った課金情報生成管理オブジェクト６２２はメッセージに含まれる課金情報を加算し機能層の課金情報テーブル６２８を更新する。
【０１８６】
（１４）  以上の処理が終わったところで検索管理／制御オブジェクト６２０は検索履歴の登録に関する命令メッセージを生成し、それを検索履歴管理オブジェクト６２３に送信する。
【０１８７】
（１５）  検索履歴登録命令メッセージを受けた検索履歴管理オブジェクト６２３は、表示層から受け取った閲覧命令メッセージを検索履歴テーブル６２９に登録する。
【０１８８】
（１６）  検索管理／制御オブジェクト６２０は、上記（１１）で生成した表示用のＨＴＭＬ文書を検索用ユーザインタフェース管理／制御オブジェクト５２０に応答する。
【０１８９】
（１７）  検索用ユーザインタフェース管理／制御オブジェクト５２０は文書閲覧用オブジェクト５２４を起動することにより、検索管理／制御オブジェクト６２０より受け取った表示用のＨＴＭＬ文書を閲覧結果５９２として表示する。なお、図書全体のデータをクライアントで表示しようとすると、データサイズが大きいためデータ転送時間が長くなる。このため、文書閲覧用オブジェクト５２４は、表示対象文書をイメージについては一枚づつ、テキストデータについては適切なサイズに分けて転送し、ページめくりしながら図書の閲覧を行う。以上が閲覧時処理の内容である。
【０１９０】
最後にログアウト時の処理の内容について図２５を用いて説明する。
（１）  ログアウト用オブジェクト５２５により制御されるログアウト画面から入力されたログアウトメッセージは検索用ユーザインタフェース管理／制御オブジェクト５２０を通じて検索制御／管理オブジェクト６２０に送信される。
【０１９１】
（２）  ログアウトメッセージを受け取った検索管理／制御オブジェクト６２０は、まず擬似セッション管理機能により擬似セッションＩＤを特定する。その後、受け取ったメッセージを解析しそれがログアウトメッセージであることが分かると、そのメッセージを検索履歴管理オブジェクト６２３に転送する。
【０１９２】
（３）  検索履歴管理オブジェクト６２３では、検索管理／制御オブジェクト６２０から受け取った擬似セッションＩＤをキーにして検索履歴テーブル６２９を検索し、対応した検索履歴情報の集合を求める。検索履歴情報の集合は、当該ユーザのために管理している検索結果集合および検索結果集合管理情報を特定し、削除するために使用される。検索履歴管理オブジェクト６２４は求めた検索履歴情報の集合を検索管理／制御オブジェクト６２０に応答する。本例では、その擬似セッションについてＢ図書館、Ａ図書館の順で１回ずつ検索が行われたものとする。
【０１９３】
（４）  検索履歴情報の集合を受け取った検索管理／制御オブジェクト６２０は、検索履歴情報に従って各図書館のデータ層にログアウトメッセージを発行する。今回の例ではまず図書館Ｂのデータ管理／制御オブジェクト７１０にログアウトメッセージを発行する。
【０１９４】
（５）  ログアウトメッセージを受け取ったＢ図書館のデータ管理／制御オブジェクト７１０はメッセージを解析し、それがログアウトメッセージであることが分かると、そのメッセージを検索結果集合管理オブジェクト７１４に転送する。
【０１９５】
（６）  検索結果集合管理オブジェクト７１４はログアウトメッセージを解析し、その中に含まれている擬似セッションＩＤをキーにして検索結果集合テーブル７３１を検索し、対応した検索結果集合識別子の集合を求める。求めた検索結果集合識別子の集合を基に、検索結果集合管理オブジェクト７１４は当該ユーザのために管理している検索結果集合情報を削除するためのＤＢＭＳオブジェクト７３０向けの命令メッセージの列を生成し、データ管理／制御オブジェクト７１０に応答する。
【０１９６】
（７）  ＤＢＭＳオブジェクト７３０向けの命令メッセージを受け取ったデータ管理／制御オブジェクト７１０は、対象ＤＢＭＳオブジェクトに対して命令メッセージを発行する。
【０１９７】
命令メッセージを受けたＤＢＭＳオブジェクト７３０は、命令メッセージに含まれる検索結果集合識別子に対応した検索結果集合情報をデータベースの中から削除する。
【０１９８】
（８）  全ての検索結果集合を削除すると、データ制御／管理オブジェクト７１０は、検索結果集合管理オブジェクト７１４に検索結果集合管理情報削除命令メッセージを送信する。
【０１９９】
検索結果集合管理情報削除命令メッセージを受け取った検索結果集合管理オブジェクト７１４は、対応した検索結果集合管理情報を検索結果集合テーブル７３１から削除する。
【０２００】
（９）  検索管理／制御オブジェクトは、検索履歴情報に従って各図書館へのログアウトメッセージの送信を繰り返す。
【０２０１】
（１０）  全ての検索履歴情報に従ってログアウトメッセージを送信し終えると、検索管理／制御オブジェクト６２０は、検索履歴管理オブジェクト６２４に対して検索履歴情報削除命令メッセージを送信する。検索履歴情報削除命令メッセージを受け取った検索履歴管理オブジェクト６２４は、対応した検索履歴情報を検索履歴テーブル６２９から削除する。
【０２０２】
（１１）  検索管理／制御オブジェクト６２０は、機能層の課金情報生成管理オブジェクト６２３に課金情報算出命令メッセージを発行する。
【０２０３】
（１２）  課金情報算出命令メッセージを受け取った課金情報生成管理オブジェクト６２３はその擬似セッションに関する課金情報を算出し、その結果を検索管理／制御オブジェクト６２０に応答する。
【０２０４】
（１３）  検索管理／制御オブジェクト６２０は、対応した擬似セッションの情報を擬似セッション管理テーブル６２６から削除する。その後、検索用ユーザインタフェース管理／制御オブジェクト５２０を通じて当該擬似セッションに関する課金情報を応答する。検索用ユーザインタフェース管理／制御オブジェクト５２０はユーザに当該擬似セッションでの一連の処理に対する課金情報を表示する。以上でこの擬似セッションに関する電子図書館の処理が完了する。以上が本実施例における検索、閲覧時処理の内容である。
【０２０５】
このように、本実施例では電子図書館システムにアクセスする際に、ユーザＩＤやパスワードによるチェックを行うことにより、登録されていないユーザによる不正アクセスを拒否することができる。また、クライアントとサーバ間で擬似的な検索セッションを接続することにより、過去の検索履歴を参照したり、過去に行った検索の結果集合を対象とした検索（絞り込み検索）を行うことできるようになるとともに、検索セッション毎に課金方法を計算し、ユーザに通知することができるようになる。さらに、機能層とデータ層のそれぞれに課金情報生成管理オブジェクトを持ち、データ層における課金情報を含めた形で機能層からユーザに課金請求を行うことにより、検索サービスを提供する入館図書館（機能層側図書館）と図書を貸し出したデータ提供側図書館（データ層側図書館）が違う組織であった場合にも、それぞれ独立して課金を行うことが可能となる。
【０２０６】
そして、最後に図書館ユーザではなく図書館のスタッフ（電子図書館ではシステム管理者）が行う図書館業務の処理について，新規ユーザの登録に関するユーザ管理処理の内容を図２６を用いて説明する。
【０２０７】
本実施例におけるドキュメント管理システムでは、表示層運用管理用オブジェクト群５０３を新規ユーザ登録用オブジェクト５３１およびこれらのオブジェクト群を管理、制御する運用管理用ユーザインタフェース管理／制御オブジェクト５３０等により構成する。また、機能層運用管理用オブジェクト群６０３を図書館業務オブジェクト６３１およびこれらのオブジェクト群を管理、制御する運用管理用管理／制御オブジェクト６３０等により構成する。さらに、データ層オブジェクト群７２２として、図２１におけるデータ層オブジェクト群７２１に加え、図書館業務制御オブジェクト７１６を付加することにより構成する。
【０２０８】
次に、本実施例における新規ユーザの登録処理について図２７を用いて説明する。
（１）  運用管理用ユーザインタフェース管理／制御オブジェクト５３０が新規ユーザから登録依頼を受け取る。新規ユーザ登録のためのインタフェースは検索や閲覧時に表示されるログイン画面から呼び出される、氏名や住所、課金を請求するカードＩＤなどを入力するためのテキストエリアと登録ボタンより構成される画面である（図示せず）。ユーザが必要な項目を入力し登録ボタンをマウスでクリックすると運用管理用ユーザインタフェース管理／制御オブジェクト５３０から運用管理系管理／制御オブジェクト６３０に新規ユーザ登録命令メッセージが発信される。なお、必須項目が入力されていないなどの簡単な入力値チェックは表示層で行われ、誤っていたら再度登録画面を表示し入力をやり直す。
【０２０９】
（２）  新規ユーザ登録命令メッセージを受け取った運用管理系管理／制御オブジェクト６３０は、メッセージを解析しそれが新規ユーザ登録命令メッセージであることが分かると、そのメッセージをユーザ情報管理オブジェクト６３２に転送する。
【０２１０】
（３）  新規ユーザ登録命令メッセージを受け取ったユーザ情報管理オブジェクト６３２はユーザの入力した登録データを検証する。登録データが正しければ、カードＩＤについてカード会社６３６に確認する。登録データが誤っていたら、運用管理系管理／制御オブジェクト６３０を経由して運用管理用ユーザインタフェース管理／制御オブジェクト５３０にメッセージを送信し、再度登録画面を表示し入力をやり直す。
【０２１１】
（４）  カード会社６３６からカードＩＤの正当性についてチェック結果を受け取る。
【０２１２】
（５）  カードＩＤが正しければユーザＩＤやパスワードなどを設定しユーザ情報テーブル６３５に新規ユーザを登録する。カードＩＤが誤っていれば再度登録画面を表示し入力をやり直す。ユーザ情報テーブル６３５への新規ユーザ登録に失敗したら、システム管理者に異常を知らせる。
【０２１３】
（６）  ユーザ情報テーブル６３５への新規ユーザの登録が正常に完了したら、ユーザ情報管理オブジェクト６３２は機能層の課金情報テーブル６２８に当該新規ユーザを登録するようメッセージを送信する。まずメッセージは運用管理系管理／制御オブジェクト６３０に送られる。
【０２１４】
（７）  運用管理系管理／制御オブジェクト６３０は受け取ったメッセージを検索管理／制御オブジェクト５３０に送信する。
【０２１５】
（８）  検索管理／制御オブジェクト５３０は運用管理系管理／制御オブジェクト６３０から受け取った新規ユーザ登録メッセージを課金情報生成管理オブジェクト６２４に送信する。
【０２１６】
（９）  新規ユーザ登録メッセージを受け取った課金情報生成管理オブジェクト６２４は課金情報テーブル６２８に当該新規ユーザを登録する。登録が終了すると課金情報生成管理オブジェクト６２４は登録終了メッセージを検索管理／制御オブジェクト６２０に送信する。
【０２１７】
（１０）  検索管理／制御オブジェクト６２０は受け取ったメッセージを運用管理系管理／制御オブジェクト６３０に渡す。
【０２１８】
（１１）  登録終了メッセージを受け取った運用管理系管理／制御オブジェクト６３０は設定したユーザＩＤとパスワードを付加して登録終了メッセージを運用管理用ユーザインタフェース管理／制御オブジェクト５３０に渡す。運用管理用ユーザインタフェース管理／制御オブジェクト５３０は登録が完了したことと、登録されたユーザＩＤとパスワードを新規ユーザ登録用オブジェクト５３１を介してユーザに通知する。
【０２１９】
以上が本発明によるドキュメント管理システムの新規ユーザ登録処理の内容である。
【０２２０】
なお、ここでは図書館利用者ユーザの登録について説明したが、他にも図書館スタッフユーザの登録も同様のかたちで実現することができる。また、ここでは図書館利用者ユーザによる登録について説明したが、他にも図書館スタッフユーザが管理端末から登録する手順も同様の処理で実現することができる。さらに、システムコンフィグレーション（システム構成定義）によっては上述したユーザ管理を行なうことなく、利用者がユーザ認証操作（ログイン操作）をせずに電子図書館の情報にアクセスできるようにシステムを変更することができる。
【０２２１】
以上が本実施例におけるドキュメント管理システムにおいて、文書の登録、検索や閲覧、新規ユーザの登録処理などの固定的な処理をオブジェクトを用いて実現したときの例である。
【０２２２】
次にエージェントを使って実装する機能として、仲介による協調機構を利用した図書検索機能、移動エージェントを利用した拡張表示機能および画面データ生成機能の３つを説明する。上述の如く、エージェントは、仲介による協調機構と移動エージェントの２点においてオブジェクトに比較して拡張性と柔軟性に優れ、新規機能を容易に実装することができる。上記の３つの機能は、このエージェントのメリットを活用して実装したものである。
【０２２３】
まず、仲介による協調機構を利用した図書検索機能について説明する。
本実施例で取り上げる電子図書館システムは、巨大な図書データベースを集中管理するシステムではなく、コンピュータネットワークで相互に接続された分散システムとして構築するものである。個々の電子図書館システムは、その図書館が所蔵する図書のデータベースをそれぞれ管理している。この分散した構成の電子図書館システムにおいて、利用者は１つの電子図書館システムを介してそれに接続された他の電子図書館システムの図書データベースにアクセスすることができるものとする。ここで、利用者がある図書を検索したいという要求を持っているとき、その図書検索をどの電子図書館システムで行えばよいか、ということが問題となる。利用者としては、図書検索に対する時間的ならびに金銭的コストを最小にしたいため、探している図書を所蔵している電子図書館システムに対して検索を実行したい。それを実現するための一つの方法としては、全ての図書館の蔵書の一覧（以下ではこれを総合目録データベースと呼ぶ）を管理してそれを検索することにより、図書検索を行うべき電子図書館システムを特定するという方法があげられるが、この方法では総合目録データベースが巨大となり、保守するのに非常に大きなコストが掛かってしまう。また、図書を登録あるいは削除したことに対する総合目録データベースの更新のタイミングにより、例えば図書を登録したことを総合目録データベースに反映するタイミングが遅れたために本来図書を所蔵している電子図書館システムに対して検索が実行されないなどの問題が発生する恐れもある。
【０２２４】
ここで説明する図書検索機能は、上記の図書の所在に関する問題点を解決するために、エージェントのセマンティックルーティングの考え方を適用する。セマンティックルーティングとは、エージェントの仲介による協調機構を利用することにより、情報の所在を処理要求内容から判断して自律的に検索を実現させる方法である。
【０２２５】
仲介による協調機構の機能により、エージェントは情報の所在が不明のままでも、機能層エージェント管理オブジェクトに必要な情報を問い合わせることで、所望の情報を提供してくれるエージェントを探し出せる。所望の情報を提供してくれるエージェント（以下では検索実行エージェントと呼ぶ）の所在と、そのエージェントが「どの言語でどう表現された情報を探せるか」（例えば「ＳＱＬ言語でアクセスできるデータ項目に『特許』という文字を含むデータを探せる」など）という情報は協調促進器に予め登録しておく。協調促進器に対して「どの言語で、どう表現された情報が欲しいのか」を問い合わせれば、協調促進器が登録された情報の中から所望の情報を提供する検索実行エージェントを探し出すため、所望の情報に関する検索依頼を発行する検索エージェントは情報の所在を知らなくともよい。
【０２２６】
検索エージェントが存在するエージェント実行環境とは別のエージェント実行環境に所望情報があるかどうかを調べるにはディレクトリサービスを用いる。これはエージェント実行環境が持つ情報を提供する機能であり、協調促進器の機能で所望情報を探してくれるエージェントを調べたのと同様、「どの言語で、どう表現された情報が欲しいのか」という情報を交換することで、検索時に移動して処理すべきエージェント実行環境かどうかの判断を行う。
【０２２７】
図２８はセマンティックルーティングを使用する検索エージェントを実装したときの構成の例を表す図である。図で、１はオブジェクト実行環境、２はエージェント実行環境、５００は表示層、６００は機能層、７００はデータ層、５２０は検索用ユーザインタフェース管理／制御オブジェクト、５４０は表示用エージェント管理オブジェクト、６２０は検索管理／制御オブジェクト、６４０は機能層エージェント管理オブジェクト、７１０はデータ層管理／制御オブジェクト、７４０はデータ層エージェント管理オブジェクト、８０１は検索エージェント、８０２と８０３は検索実行エージェントを示している。
【０２２８】
図２８で、セマンティックルーティングを使用した図書検索の処理の流れを説明する。まず最初に検索実行エージェントＡ８０２とＢ８０３が機能層エージェント管理オブジェクト６４０に対してサポートする機能を通知（９０１と９０２）する。以下の説明は、こうした機能通知がすでに行われていることを前提としている。
【０２２９】
表示層５００から検索指示を受け取った検索管理／制御オブジェクト６２０は、検索処理依頼９０３を機能層エージェント管理オブジェクト６４０に渡す。
【０２３０】
機能層エージェント管理オブジェクト６４０は検索処理依頼９０３を受け、処理に適した検索エージェント８０１に検索処理依頼９０４を渡す。
【０２３１】
検索エージェント８０１は、機能層エージェント管理オブジェクト６４０に対して欲しい情報を問い合わせる（９０５）。欲しい情報がどこにあるか知らなくとも機能層エージェント管理オブジェクト６４０に含まれる協調促進器（図示せず）が検索エージェント８０１に、所望する情報を検索できる検索実行エージェントに引き合わせる。検索エージェント８０１は所望情報を提供できる検索実行エージェントＢ８０３に検索依頼９０６し、処理を引き継ぐ。
【０２３２】
検索実行エージェントＢ８０３は、その検索機能を駆使して所望情報の検索を実行する（ただし、実際はデータ層に対して検索処理依頼９０７を発行し、その検索結果９０８を受け取るだけで、検索実行エージェントＢ８０３自体がデータベース検索を行うわけではない）。検索が完了すると検索実行エージェントＢ８０３は、検索結果９０９を検索エージェント８０１に渡す。
【０２３３】
検索エージェント８０１は、検索結果９１０を機能層エージェント管理オブジェクト６４０を介して検索管理／制御オブジェクト６２０に渡す。以上で検索処理が完了する。
【０２３４】
検索エージェント８０１を協調促進器が事前に登録されている検索実行エージェント８０３に引き合わせる仕掛けは、例として前述したＳＱＬベースでの文字列単純マッチングのレベルに限らない。事前に登録されているエージェント側の機能通知レベル（データ操作言語ベースなど低位の表現）への対応付けを可能にするよう協調促進器を実装することにより、問い合わせ側エージェントの要求にはＳＱＬなどのデータベース操作言語やエージェント操作言語より高位の、図書館業務向け言語による処理表現を用いることが可能となる。具体的には、問合せ側エージェントと事前に登録されているエージェント双方の、異なったレベルで記述された定義内容を対応付けるために内容の解析やシソーラス処理などを協調促進器のカスタマイズ機能を用いて実装する。
【０２３５】
また、本実施例のような非同期検索においては目的の情報がない場合に処理が永遠に終わらない恐れがあるため、それを防ぐために検索実行エージェントに検索の打ち切り条件を設定できる機能が必要である。情報を要求する時、ユーザはいつまでに情報を欲しいかなどの条件、すなわち、「調査期間３日」、「検索費用１万円以内」などの条件を設定するものとする。一方、指定がなかった時のデフォルトの経路設定と打ち切り条件も必要となる。
【０２３６】
以上のように、コンピュータネットワークで相互接続された分散した電子図書館システムでは、利用者が所望する情報（図書）の所在を知らずに図書検索を実行するような要求があり、それに対してどの電子図書館システムに対して図書検索処理依頼を発行するかを決定する方法が問題となるが、セマンティックルーティングの概念を利用した検索エージェントを使用すれば、仲介による協調機構の機能により所望情報を提供できる検索実行エージェントを探し出し図書検索を実行することが可能となる。
【０２３７】
次に、移動エージェントを利用した拡張表示機能について説明する。
本実施例であげる電子図書館システムは、クライアントマシンで情報を出力するブラウザとして、ＷＷＷに対応したブラウザ（以下、ＷＷＷブラウザと呼ぶ）を使用する。これは、ＷＷＷブラウザをクライアントとしたシステム構成により、インターネットを通じて全世界にマルチメディア情報を提供することが可能となるからである。ＷＷＷブラウザはマルチメディア情報を表示するための汎用的な機能を持っているが、特殊なデータを表示するために、専用のビューアアプリケーション（ヘルパーアプリケーションと呼ばれる）を起動する仕組みも持っている。
【０２３８】
電子図書館システムにおいて、特殊な専用ビューアを要するような場合があると考えられる。例えば、圧縮データに対応する解凍（圧縮復元）がクライアント側で必要な場合や大量データを効率良く見せる表示機能（例えば、縮小表示、本の様なイメージなど一覧性の高い表示など）を提供する場合などがある。このような場合、各クライアントに専用ビューアをインストールする必要があるが、電子図書館システムの場合、利用者が不特定多数に及び、また利用者の層としても必ずしもコンピュータに詳しいとは限らない、などの点から個々の利用者にインストールを実施させるのは難しいという問題がある。
【０２３９】
これに対して移動エージェントの機能を使った拡張表示機能が考えられる。拡張用のビューアを移動エージェントとして実装し、それをクライアントマシン上に移動させて表示処理を実行させることにより、個々の利用者が拡張用のビューアを手動でインストールすることなく、対応した情報を表示できるようになる。
【０２４０】
図２９は移動エージェントの機能を使った拡張表示機能を実装したときの構成を示す図である。図で、１はオブジェクト実行環境、２はエージェント実行環境、５００は表示層、６００は機能層、７００はデータ層、５２０は検索用ユーザインタフェース管理／制御オブジェクト、５４０は表示用エージェント管理オブジェクト、６２０は検索管理／制御オブジェクト、６４０は機能層エージェント管理オブジェクト、７１０はデータ層管理／制御オブジェクト、７４０はデータ層エージェント管理オブジェクト、８１１は拡張表示エージェントを示している。
【０２４１】
図２９で、移動エージェントの機能を使った拡張表示の処理の流れを説明する。
電子図書館システム固有の表示データを出力しなければならなくなった検索管理／制御オブジェクト６２０は機能層エージェント管理オブジェクト６４０へ拡張表示エージェント８１１に対する処理依頼９１１を発行する。
【０２４２】
拡張表示エージェント８１１への処理依頼９１１を受け取った機能層エージェント管理オブジェクト６４０は、拡張表示エージェント８１１を起動（９１２）する。
【０２４３】
拡張表示エージェント８１１は、動作の途中で移動メソッドを実行し、表示層（クライアントマシン）上に移動（９１３）する（移動後の拡張表示エージェント８１１は、表示用エージェント管理オブジェクト５４０が管理および制御する）。
【０２４４】
機能層エージェント管理オブジェクト６４０は、拡張表示エージェント８１１が移動したことを確認し、その旨を検索管理／制御オブジェクトに通知（９１４）する。
【０２４５】
検索管理／制御オブジェクトは通知９１４を受け取ると、当該表示データを検索用ユーザインタフェース管理／制御オブジェクト５２０に送信する。当該表示データは、検索用ユーザインタフェース管理／制御オブジェクト５２０を介してＷＷＷブラウザ（図示せず）に渡され、ＷＷＷブラウザが表示層に移動してきている拡張表示エージェント８１１をヘルパーアプリケーションとして起動して表示を行う。
【０２４６】
以上のように、電子図書館システムにおいて、特殊な専用ビューアを要するような場合に各クライアントにビューアをインストールする必要があるが、個々の利用者にビューアのインストールを実施させるのは難しいという問題に対して、拡張用のビューアを移動エージェントとして実装し、それをクライアントマシン上に移動させて表示処理を実行させることにより、個々の利用者が拡張用のビューアを手動でインストールすることなく、対応した情報を表示することが可能となる。
【０２４７】
最後に、画面データ生成機能について説明する。画面データ生成機能とは、電子図書館システムの画面（例えば、図書検索の検索条件を入力させる図書検索画面や図書検索の結果を表示する図書一覧画面など）を表示層で表示するためのデータを生成するための機能である。データ層から受け取った検索結果などを基に画面データを生成する。
【０２４８】
従来、画面表示のための処理は全て各クライアントマシン上で行われていたが、近年になって例えばＷＷＷのサーバとブラウザの関係のように、クライアントマシンには汎用的な機能を持つＷＷＷブラウザをインストールし、サーバ側が画面データを生成しそれをクライアントに送って画面表示するという手法が一般的になりつつある。こうした手法は、クライアント側は汎用的なブラウザを持っていれば情報にアクセスでき、クライアント毎にアプリケーション専用の画面表示用ソフトウェアをインストールしなくて済むため、電子図書館システムのように利用者が不特定多数であるような場合には特に有効である。前述の如く、本実施例であげる電子図書館システムもクライアントで使用するソフトとしてＷＷＷブラウザを使用する。つまり、画面データ生成機能により機能層（サーバ）で生成した画面データを表示層（クライアント）に送ってＷＷＷブラウザで画面表示する。
【０２４９】
電子図書館システムでは、利用者層として年齢、職業、コンピュータに対する理解度、習熟度、利用目的など様々な面で広い範囲を対象とする必要がある。また、身体にハンディキャップを持った人に対するユーザインタフェースも重視する必要がある。電子図書館システムにおいて使い易いユーザインタフェースの構築は大きな技術課題である。そこで、電子図書館システムのユーザインタフェースの開発においては、従来のウォータフォールアプローチによる開発手順で画面仕様を確立してから開発するのではなく、幾つかの画面仕様案に対して実際に試用と評価を繰り返しながら最適な画面仕様を決定するスパイラルアプローチによる開発手順で設計することが必要となる。試用と評価を繰り返す作業が行い易い開発環境を提供するために、画面データ生成機能をエージェントとして実装する。画面データ生成機能をエージェントを使用して実装した例を説明する。
【０２５０】
図３０は画面データ生成機能をエージェントで実装したときの構成を表す図である。図で、１はオブジェクト実行環境、２はエージェント実行環境、５００は表示層、６００は機能層、７００はデータ層、５２０は検索用ユーザインタフェース管理／制御オブジェクト、５４０は表示用エージェント管理オブジェクト、６２０は検索管理／制御オブジェクト、６４０は機能層エージェント管理オブジェクト、７１０はデータ層管理／制御オブジェクト、７４０はデータ層エージェント管理オブジェクト、８２１は画面データ生成エージェント、８２２〜８２４は図書検索画面データ生成エージェントを示している。
【０２５１】
本構成において、電子図書館の各画面（図示していないが、図書検索画面や図書一覧画面など）毎に各画面仕様案に基づいた画面データを生成するエージェント群（図中では図書検索画面に対する図書検索画面データ生成エージェント８２２〜８２４）を用意する。つまり、一枚の画面に対する一つの画面仕様案毎にそれに従って画面データを生成する処理をエージェントとして実装する。このとき、画面データを生成する処理としては、公知例「ラマナ  ラオ、ジャン  オー  ペダーセン、マルチ  エー  ハースト、ジョック  ディー  マッキンレー、スチュアート  ケー  カード、ラリー  マシンター、パークリスチャン  ハーバーセン、ジョージ  ジー  ロバートソン：“ディジタル・ライブラリとユーザの間に、多彩な対話を実現する”、日経エレクトロニクス、６４３号、１９９５年」に記載されているＧｒａｐｈｉｃ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ（以下、ＧＵＩと略す）の構築手法における画面データの生成方法を用いてもよい。
【０２５２】
このように画面毎に各画面仕様案に従った画面データを生成するエージェントを用意し、画面データ生成エージェント８２１が機能層エージェント管理オブジェクト６４０（に含まれる協調促進器）を介してそれらのエージェントを起動して画面のデータを生成する。
【０２５３】
図３０で画面データを生成する処理の流れを説明する。まず最初に図書検索画面データ生成エージェント８２２〜８２４が機能層エージェント管理オブジェクト６４０に対して各エージェントのサポートする機能を通知（９２１〜９２３）する。こうした機能通知が行われていることを前提として、検索管理／制御オブジェクト６２０が検索画面生成依頼９２４（検索結果データなど画面生成のための元データは検索画面生成依頼９２４に含む）を機能層エージェント管理オブジェクト６４０に渡す。
【０２５４】
検索画面生成依頼９２４を受け取った機能層エージェント管理オブジェクト６４０は、検索画面生成依頼９２５を画面データ生成エージェント８２１に転送する。
【０２５５】
画面データ生成エージェント８２１は検索画面生成依頼９２５を解析し、それから図書検索画面の画面データを生成するエージェントへの処理依頼９２６を機能層エージェント管理オブジェクト６４０に渡す。機能層エージェント管理オブジェクト６４０は予め機能通知されているエージェント群のうちから依頼された検索画面の画面データを生成できるエージェントとして図書検索画面データ生成エージェント８２２〜８２４のうち１つ（図中では図書検索画面データ生成エージェント８２２）に処理依頼９２７を転送する。
【０２５６】
処理依頼を受けた図書検索画面データ生成エージェント８２２は、図書検索画面の画面データを生成しそれを機能層エージェント管理オブジェクト６４０に応答（９２８）する。
【０２５７】
機能層エージェント管理オブジェクト６４０はそれを処理依頼元である画面データ生成エージェント８２１に転送（９２９）し、それを画面データ生成エージェント８２１が機能層エージェント管理オブジェクトを介して、検索管理／制御オブジェクト６２０に応答（９３０）する。
【０２５８】
このような処理の流れで、表示対象となる画面のデータの生成に際して各画面仕様案に基づいた処理のうちいずれか１つを選択して実行する。各画面についてどの画面仕様案に従って画面データを生成するかは、エージェントの仲介による協調機構の機能により実行時に決定される。このため、画面仕様案の追加や変更や削除を他のエージェント、オブジェクトの処理を変更することなく容易に行うことができ、効率よく画面仕様の策定および評価を実施することが可能となる。
【０２５９】
以上のように画面データ生成機能をエージェントを使って実装することにより、電子図書館システムのＧＵＩを効率よく構築することができる。しかし、画面仕様が確立しＧＵＩの構築が完了した後は、画面データ生成機能をエージェントとして実装していることにメリットはない。また、基盤技術並びに周辺技術が開発途上にあり、かつ大規模なシステムである電子図書館システムでは、仕様や実現方式が確立されていない機能をエージェントとして実装していくと、その数は非常に多くなる。エージェントの数が増加してくると、システム動作の不確定要因が増大し、システムの全体的な動作の予測が不可能となり、柔軟性・拡張性が高いというエージェントのメリットが失われてしまうという問題が顕著になってくる。そこで、電子図書館システムのＧＵＩの構築が完了したタイミングで、確立した画面仕様に従ってエージェントのオブジェクト化を行う。
【０２６０】
図３１は図３０の構成のシステムの画面データ生成エージェント８２１をオブジェクト化したときの構成を表す図である。図３０に対して、画面データ生成エージェント８２１がエージェントのオブジェクト化手段８２５を付加することにより画面データ生成オブジェクト８２６としてオブジェクト化され、オブジェクト実行環境１に含まれている。エージェントのオブジェクト化手段８２５に含まれる通信経路テーブル８２７に、確立した画面仕様に従って、画面データ生成依頼と起動するデータ生成エージェントの対応を定義する。通信経路テーブル８２７の例を図３２に示す。
【０２６１】
図３１で画面データを生成する処理の流れを説明する。まず、検索管理／制御オブジェクト６２０が検索画面生成依頼９３１（検索結果データなど画面生成のための元データは検索画面生成依頼９３１に含まれる）を画面データ生成オブジェクト８２６に渡す。
【０２６２】
検索画面生成依頼９３１を受け取った画面データ生成オブジェクト８２６において、内部的にはエージェントのオブジェクト化手段８２５が画面データ生成エージェント８２１を起動する（９３２）。
【０２６３】
画面データ生成エージェント８２１は、動作の途中でオブジェクト化前と同様に図書検索画面の画面データを生成するエージェントへの処理依頼９３３を機能層エージェント管理オブジェクト６４０に発信する。しかし、処理依頼９３３はエージェントのオブジェクト化手段９２５が受け取った後、機能層エージェント管理オブジェクト６４０には送信されず、そのままエージェントのオブジェクト化手段８２５が通信経路テーブル８２７を検索して処理の依頼先を決定する。本例では、処理依頼９３３が「図書検索画面データ生成」であったものとすると、処理依頼先を図３２の通信経路テーブル８２７から「図書検索画面データ生成エージェント８２２」と決定する。そこでエージェントのオブジェクト化手段８２５は、処理依頼９３３を図書検索画面データ生成エージェント８２２に転送（９３４）する。
【０２６４】
図書検索画面データ生成エージェント８２２は、画面データを生成し処理結果９３５をエージェントのオブジェクト化手段８２５に返す。
【０２６５】
エージェントのオブジェクト化手段８２５は画面データ生成エージェント８２１に処理結果９３６を転送する。
【０２６６】
画面データ生成エージェント８２１は受け取った処理結果９３６をもとに処理を続行し、最終的な処理結果として画面データ９３７をエージェントのオブジェクト化手段８２５に渡す。エージェントのオブジェクト化手段８２５はそれを画面データ生成オブジェクト８２６の処理結果９３８として検索管理／制御オブジェクト６２０に応答する。
【０２６７】
このように、画面データ生成エージェント８２１にエージェントのオブジェクト化手段８２５を付加してオブジェクト化することにより、オブジェクト化前は仲介による協調機構の機能を介して実行時に複数のエージェント（例えば８２２〜８２４）から１つが選択されて実行していたのに対して、オブジェクト化後は通信経路テーブル８２７に定義された処理依頼先エージェントが実行されるようになる。つまり、確立した画面仕様に従って画面データ生成機能の処理が固定されることになる。本例のように、実運用時においてその処理がエージェント特有の機能に強く依存しておらず、オブジェクト化によってその機能が著しく損なわれないエージェントをオブジェクト化することにより、エージェントの不確定要素を解消し、エージェントの多用により劣化するシステムの柔軟性、拡張性を回復することが可能となる（上記仲介による協調機構を利用した図書検索機能と移動エージェントを利用した拡張表示機能は、エージェントの特有の機能に強く依存しているためオブジェクト化の対象にはならない）。電子図書館システムの開発では、基盤技術並びに周辺技術が開発途上にあり、かつシステムの規模が大くなるため、仕様や実現方式が確立されていない機能をエージェントとして実装していくと、その数は非常に多くなる。その結果、システムの動作の不確定要素が増大し、動作が不安定になってしまう。これに対し、実運用の直前やエージェントの数が増大してきたタイミングで、エージェントのオブジェクト化を実施することにより、システムの安定性および保守性を保持しながら、柔軟で拡張性の高いシステム開発を提供することが可能となる。
【０２６８】
【発明の効果】
本発明によれば、システム開発者は例えば安定した動作が求められる機能をオブジェクトで、変更の頻度が高い機能をエージェントで実装する、といったかたちでオブジェクト指向パラダイムとエージェント指向パラダイムの両方のメリットを活かした開発を行うことが可能となる。
【０２６９】
また、大規模なシステムを構築する場合に、実装の容易性からエージェントを多用するとシステムの動作の不確定要因が増大するという問題が発生するが、これに対して本発明ではエージェントをオブジェクト化する手段を提供する。これにより、開発の進捗に従って例えば安定した動作が求められるエージェントや処理の変更の頻度が低いエージェントを順次オブジェクト化し、システムの動作の不確定要因を減らし、エージェントの多用により劣化していたシステムの柔軟性と拡張性を回復することが可能となる。
【０２７０】
従来エージェントをオブジェクト化するというアプローチはなく、それをするにはエージェント特有の機能（仲介による協調機構や移動エージェント）を使用している部分を書き換える以外方法がなかった。本発明によれば、オブジェクト化対象エージェントを書き換えることなく、エージェントのオブジェクト化手段を付加して当該エージェントをオブジェクト化することが可能となる。
【０２７１】
本発明の実施例としてあげたドキュメント管理システムの一つである電子図書館システムでは、開発フェーズでは拡張性と柔軟性、実運用フェーズでは安定性と保守性が高いシステム構成が要求される。
【０２７２】
まず、開発フェーズにおける拡張性と柔軟性について、本発明が提供するエージェント実行環境とオブジェクト実行環境を統合したシステム構成において、電子図書館システムの機能のうち、仕様や実現方式が確立されておらず、それを試用と評価を繰り返しながら策定しなければならないような機能をエージェントで、予め仕様や実現方式が確立されている機能をオブジェクトで実装することにより、拡張性と柔軟性のよいシステム構成を実現することが可能となる。
【０２７３】
しかし、大規模でかつ開発途上にある電子図書館システムでは、仕様や実現方式が確立されていない機能をエージェントとして実装していくと、その数は非常に多くなり、システム動作の不確定要因の増大や、柔軟性・拡張性が高いというエージェントのメリットの喪失を招いてしまう。これに対して、実運用の直前やエージェントの数が増大したタイミングで、処理がエージェント特有の機能にあまり依存しておらず、オブジェクト化してもその機能が損なわれないエージェントに本発明のエージェントのオブジェクト化手段を使用することにより、エージェントの不確定要素を解消し、エージェントの多用により劣化するシステムの柔軟性、拡張性を回復することができ、実運用フェーズにおいて安定性と保守性のよいシステム構成を実現することが可能となる。
【図面の簡単な説明】
【図１】本発明の第１の実施例における構成を表す図である。
【図２】従来の仲介による協調機構を利用したエージェント間通信の例（その１）を説明する概念図である。
【図３】従来の移動エージェントを説明する概念図である。
【図４】従来の仲介による協調機構を利用したエージェント間通信の例（その２）を説明する概念図である。
【図５】本発明の第２の実施例における構成を表す図である。
【図６】本発明の第３の実施例におけるエージェントのオブジェクト化前の構成を表す図である。
【図７】図６の構成の動作を説明するための図である。
【図８】本発明の第３の実施例におけるエージェントのオブジェクト化後構成を表す図である。
【図９】図８の構成において、通信経路テーブル１６の例を示す図である。
【図１０】図８の構成の動作を説明するための図である。
【図１１】本発明の第４の実施例におけるエージェントのオブジェクト化前の構成を表す図である。
【図１２】本発明の第４の実施例におけるエージェントのオブジェクト化後の構成を表す図である。
【図１３】図１２の構成の動作を説明するための図である。
【図１４】本発明の第５の実施例における構成を表す図である。
【図１５】図１４の構成の動作を説明するための図である。
【図１６】本発明の第６の実施例における構成を表す図である。
【図１７】本発明の第６の実施例における入力系オブジェクトの構成を表す図である。
【図１８】本発明の第６の実施例における構造化文書の登録処理の流れを表す図である。
【図１９】本発明の第６の実施例における非構造化文書の構造化変換処理の流れを表す図である。
【図２０】本発明の第６の実施例における非電子化文書の電子化処理の流れを表す図である。
【図２１】第６の実施例における検索閲覧用オブジェクト群の構成を表す図である。
【図２２】第６の実施例におけるログイン処理の流れを表す図である。
【図２３】第６の実施例における検索処理の流れを表す図である。
【図２４】第６の実施例における閲覧処理の流れを表す図である。
【図２５】第６の実施例におけるログアウトの処理の流れを表す図である。
【図２６】第６の実施例における運用管理系オブジェクトの構成を表す図である。
【図２７】第６の実施例における新規ユーザ登録時の処理の流れを表す図である。
【図２８】本発明の第６の実施例における検索エージェントを実装したときの構成を表す図である。
【図２９】本発明の第６の実施例における拡張表示エージェントを実装したときの構成を表す図である。
【図３０】本発明の第６の実施例における画面データ生成機能をエージェントで実装したときの構成を表す図である。
【図３１】本発明の第６の実施例における画面データ生成エージェントをオブジェクト化したときの構成を表す図である。
【図３２】本発明の第６の実施例における通信経路テーブル８２７の例を示す図である。
【符号の説明】
１・・・オブジェクト実行環境、
２・・・エージェント実行環境、
３・・・オブジェクト、
４・・・エージェント、
５・・・エージェントのオブジェクト化手段、
６・・・オブジェクト化対象エージェント、
７・・・エージェントをオブジェクト化して得たオブジェクト、
８・・・管理／制御オブジェクト、
９・・・エージェント管理オブジェクト、
１０・・・協調促進器、
１１・・・エージェント処理固定化部品、
１２・・・エージェント制御手段、
１３・・・オブジェクト通信手段、
１４・・・通信経路決定手段、
１５・・・エージェント通信手段、
１６・・・通信経路テーブル、
１７・・・内部情報、
２５・・・内部情報設定手段、
２６・・・内部情報取得手段、
３７・・・代理受付エージェント、
３８・・・機能通知手段、
３９・・・代理通信手段
【図１】
0003622313.tif 000002
【図２】
0003622313.tif 000003
【図３】
0003622313.tif 000004
【図４】
0003622313.tif 000005
【図５】
0003622313.tif 000006
【図６】
0003622313.tif 000007
【図７】
0003622313.tif 000008
【図８】
0003622313.tif 000009
【図９】
0003622313.tif 000010
【図１０】
0003622313.tif 000011
【図１１】
0003622313.tif 000012
【図１２】
0003622313.tif 000013
【図１３】
0003622313.tif 000014
【図１４】
0003622313.tif 000015
【図１５】
0003622313.tif 000016
【図１６】
0003622313.tif 000017
【図１７】
0003622313.tif 000018
【図１８】
0003622313.tif 000019
【図１９】
0003622313.tif 000020
【図２０】
0003622313.tif 000021
【図２１】
0003622313.tif 000022
【図２２】
0003622313.tif 000023
【図２３】
0003622313.tif 000024
【図２４】
0003622313.tif 000025
【図２５】
0003622313.tif 000026
【図２６】
0003622313.tif 000027
【図２７】
0003622313.tif 000028
【図２８】
0003622313.tif 000029
【図２９】
0003622313.tif 000030
【図３０】
0003622313.tif 000031
【図３１】
0003622313.tif 000032
【図３２】
0003622313.tif 000033