図1は、文書管理システムの概略構成の例を示すブロック図である。このシステムは、インターネットやローカル・エリア・ネットワーク等のネットワーク30を介して接続された文書管理サーバ10とクライアント端末20−1,20−2,・・・(以下、クライアント端末20と総称する)から構成される。
クライアント端末20の一例を、図2を用いて説明する。クライアント端末は、ユーザが文書を操作するために用いる端末であり、パーソナルコンピュータ、デジタル複写機、デジタル複合機(プリンタ、スキャナ、複写機、ファクシミリ等の機能のうちの2以上を兼ね備えた装置)などがその一例である。クライアント端末20は、図2に示すように、文書操作部200、登録処理部210、関連文書登録指示部220、関連文書削除指示部222及び関連文書検索指示部224を備える。
文書操作部200は、文書に対する操作を実行する手段である。文書に対する操作には、例えば、文書の表示(ユーザから見れば「閲覧」)、編集、印刷出力、紙文書の読み取り、紙文書の複写、等がある。図では、文書操作部200を1つだけ示したが、それら個々の操作を別々の操作部(例えば、編集用のアプリケーション、読取制御用のアプリケーションなど)が担当してもよい。例えば、文書操作部200がワードプロセッサ等の電子文書を作成・編集するためのソフトウエアであれば、文書操作部200は、ユーザの指示に応じて電子文書を表示したり、電子文書に編集を加えたりする。文書操作部200は、文書に対して操作を行った場合、その操作の結果を表すID付き文書300を出力する。
ID付き文書300は、図3に示すように、属性情報310と文書内容320を含んだ電子文書である。文書内容320は、文書操作部200の操作の結果生成された文書の内容データである。文書操作部200が電子文書を作成・編集するためのソフトウエアであれば、文書内容320はそのソフトウエアによる編集の結果生成される文書ファイルである。また、文書操作部200が電子文書を印刷する装置であれば、文書内容320は、例えば、印刷される電子文書の内容データとすればよい。また、文書操作部200が紙文書をスキャンする装置又は紙文書を複写する装置であれば、文書内容320は、例えば、その紙文書を読み取って得られる画像データとすればよい。
属性情報310は、文書管理のための情報であり、操作ID312,親操作ID314,ログ情報316,及び関連文書情報318を含む。
操作ID312は、当該ID付き文書300自体の一意な識別情報である。親操作ID314は、当該ID付き文書300の親のID付き文書の操作IDである。すなわち、本実施形態では、あるID付き文書と、このID付き文書に対して操作を加えた結果得られる新たなID付き文書とを、親と子の関係として取り扱う。第1のID付き文書を操作して第2のID付き文書が得られた場合、第1のID付き文書は第2のID付き文書の親であり、第2のID付き文書は第1のID付き文書の子である。したがって、例えば、操作ID「A」のID付き文書を文書操作部200で操作して、その結果得られた新たなID付き文書の操作IDが「B」である場合、後者の属性情報310における操作ID312は「B」であり、親操作ID314は「A」である。このような親子の関係を、以下では「(操作IDの)派生関係」という。
なお、本システムに未登録の電子文書を新規に登録する操作を実行した場合や、未登録の紙文書をスキャン又は複写する操作を実行した場合(この場合、紙文書を読み取った画像を文書内容とするID付き文書が生成され、本システムに登録される)に生成されるID付き文書300では、親操作ID314は空(すなわち、親は存在しない)となる。
ログ情報316は、当該ID付き文書が生成された際の操作についての、各種のログ項目の情報である。ログ項目には、例えばその操作が行われた日時、その操作の種別、その操作を指示したユーザ(操作者)のID(ユーザID)などがあるが、もちろんこれに限るものではない。操作の種別には、例えば登録(本システムに新規の文書を登録すること)、閲覧、編集、更新(更新版の登録)、属性更新(当該文書の属性情報の更新操作)、印刷、スキャン、紙文書の複写、等がある。例えば、ユーザが文書操作部200を用いて第1のID付き文書に対して編集を加え、編集完了の指示を行った場合、その結果生成される第2のID付き文書のログ情報316は、編集完了の日時と、その編集を指示したユーザの識別情報と、操作の種別として「編集」と、を含んだものとなる。
ここでログ情報316に組み込まれる操作の種別は、ログ記録の目的での分類に従った種別であり、文書操作部200が実行する操作の種別そのものでなくてもよい。例えば、文書操作部200が実行する複数の操作の種別を、同じ1つのログ記録目的の操作種別に対応づけてもよい。例えば、文書編集アプリケーション上でID付きの電子文書に編集を加え操作メニュー上で「更新版として登録」を指示した場合も、スキャナで操作ID付きの紙文書を読み取り読取制御用アプリケーションの操作メニュー上で「読み取った文書を承認版として登録」を指示した場合も、ログ情報316に組み込まれる操作種別の値は「更新」となる。
また、関連文書情報318は、対象であるID付き文書300に対して設定された関連文書についての情報である。例えば関連文書情報318は、当該ID付き文書300に対し設定された関連文書の、文書管理サーバ10上での識別情報である。このような識別情報としては、例えば、当該関連文書の文書管理サーバ10への新規登録操作の際に付与された操作IDを用いればよい。また、文書管理サーバ10に登録された(すなわち操作ID付与済みの)関連文書に対し、閲覧や編集その他の操作が加えられた場合に、その操作に対して付与される操作IDを、そのような識別情報として用いてもよい。関連文書は、いったん文書管理サーバ10に登録されることで操作IDを付されてID付き文書300となり、その後、操作を受けるごとに新たな操作IDを持つ新たなID付き文書300となる。例えば、ユーザが、あるID付き文書300を別のID付き文書300の関連文書に指定すると、前者の操作ID312が後者の関連文書情報318に組み込まれる。
また、関連文書情報318は、対象であるID付き文書300に対応する過去の操作の派生関係の中で関連文書として設定された文書を、関連文書でなくすための指示情報を含むことができる。この場合、関連文書情報318には、関連文書でなくす文書に対応する操作IDと、関連文書でなくすことを示す指示情報とが対応づけて組み込まれる。
なお、文書操作部200が、操作した文書を暗号化してもよい。この暗号化は、本システムに準拠した文書操作部200ならば、復号できるようなものとする。この場合、文書操作部200が出力するID付き文書300の文書内容320は、暗号化されることにより、本システムに準拠した文書操作部200でないと復号できなくなる。したがって、ID付き文書300が操作される場合には文書操作部200が用いられるので、文書操作部200がその操作を検知し、その操作の内容が文書操作部200から文書管理サーバ10に通知される。なお、文書内容320だけでなく、後述する属性情報310(またはその一部)に対しても暗号化を施してもよい。
また、行われた操作が文書内容を変更するものでない場合には、その操作に応じて生成されるID付き文書300内の文書内容320は空でもよい。
図2の説明に戻り、文書操作部200は、操作結果として上述のようなID付き文書300を作成するために、ID割り当て部202及び属性組込部204を備える。ID割り当て部202は、操作結果のID付き文書300に一意な操作IDを付与する手段である。操作IDは、少なくとも本システム内で一意な識別情報である必要がある。例えば、操作の結果生成するID付き文書300(ただし操作ID312を除いたもの)のハッシュ値を求め、このハッシュ値をその文書300のID付き文書とすればよい。ハッシュ関数としてSHA-256(SHA-256はNISTがFIPS180-2で定めた256ビットのハッシュ値を持つ暗号学的ハッシュ関数である)などのような耐衝突性を持つ暗号学的ハッシュ関数を用いれば、実用上十分な一意性を持つ操作IDを生成することができる。もちろん、システム内で一意な操作IDを各クライアント端末20で生成する方法は、これに限らない。操作IDを、クライアント端末20固有の識別情報を含むものとすれば、システム内で一意な操作IDを各クライアント端末20で生成することができる。
属性組込部204は、操作結果の文書に対しID割り当て部202が割り当てた新たな操作ID312と、その操作の元になった親文書の操作IDである親操作ID314(新規登録の場合は、親操作IDは無し)と、その操作についてのログ情報316と、を含む属性情報310を生成する。ここで、属性組込部204は、文書操作部200が実行する個々の操作の種別が、ログ記録目的上の操作種別のどれに対応するかを表す対応関係の情報を保持しており、この情報を用いることでログ情報316に組み込む操作種別の値を求める。そして、属性組込部204は、その属性情報310を操作結果の文書内容に付加することにより、操作後のID付き文書300を生成して出力する。
文書操作部200がアプリケーションソフトウエアである場合、ID割り当て部202及び属性組込部204は、そのソフトウエアに対して追加される、いわゆるプラグイン(plug-in)プログラムとして実現してもよい。
登録処理部210は、文書操作部200が出力したID付き文書300を文書管理サーバ10に登録するための処理を実行する。このように各クライアント端末20が、自ら実行した操作の結果であるID付き文書300を文書管理サーバ10に登録することにより、文書管理サーバ10は各ID付き文書300間の派生関係を把握することができる。
文書操作部200が操作の結果出力するID付き文書300は、通常の文書ファイルと同様、電子的にコピーしたり、電子メールに添付するなどの方法で他の人宛に送信したりすることができる。電子メール送信用のソフトウエアは、この例では本システムに準拠していないので、この送信操作はID付き文書には反映されず、したがって文書管理サーバ10にも記録されない。他の人からID付き文書300を受け取った人が、自分のクライアント端末20の文書操作部200を用いてそのID付き文書300を操作すると、その操作に応じて新たな操作IDを付与されたID付き文書が生成されることになる。
また、文書操作部200が電子文書を印刷する場合、操作IDを生成し、その電子文書の印刷結果にその操作IDを埋め込んでもよい。操作IDの埋め込みは、例えば電子文書の印刷画像に、操作IDを示すコード画像を重畳する等の方法で行うことができる。また、用紙がRFID(Radio Frequency Identification)タグを備えている場合、そのRFIDタグに操作IDを書き込んでもよい。このように印刷を行った場合、文書操作部200は、その操作IDや操作種別「印刷」等の属性情報を含んだID付き文書を文書管理サーバ10に登録する。なお、ID付き文書を印刷した場合には、そのID付き文書の操作IDを親操作ID314として含んだID付き文書が生成される。印刷操作に対応するID付き文書には、印刷された画像を示すページ記述言語データやビットマップ画像データをなどの印刷データ、又は印刷された文書ファイルを、文書内容320として組み込んでもよい。
また、操作IDが埋め込まれた紙文書を文書操作部200が読み取った場合、文書操作部200は、その読み取り操作に対して新たな操作IDを付与し、読み取り結果の画像を文書内容320として含んだID付き文書を生成して文書管理サーバ10に登録する。このID付き文書の親操作ID314には、紙文書から読み取った操作IDがセットされる。操作IDが埋め込まれた紙文書の複写の際には、上述した読み取り時と印刷時の処理が実行される。
関連文書登録指示部220は、ID付き文書300(「対象の文書」と呼ぶ)に対して関連文書を登録する指示を受け付ける。関連文書登録指示部220は、例えば、ID付き文書300の属性情報の更新(「属性更新」)操作の一部として、関連文書の登録指示を受け付ける。例えば、クライアント端末200のオペレーティングシステムのファイル管理画面上で、ID付き文書300のアイコンにカーソルを合わせ、例えばマウス等のポインティングデバイスを用いて右クリックなどのメニュー呼出操作を行うと、関連文書登録操作を含んだメニューが表示される(なお、操作のためのこのようなユーザインタフェースはあくまで一例に過ぎない)。ユーザがそのメニュー上で関連文書登録操作を選択すると、関連文書登録指示部220が起動する。関連文書登録指示部220は、関連文書の指定画面を生成する。この指定画面は、例えばオペレーティングシステムのファイル管理システムと連動しており、ファイル管理システム内のディレクトリ構造を表示し、ユーザが希望するディレクトリにある希望の文書を指定できるようになっている。
この指定画面に対してユーザが指定した文書がID付き文書である場合、関連文書登録指示部220は、そのID付き文書の中から操作ID312を取り出し、その操作ID312を、対象の文書の属性情報310中の関連文書情報318に組み込む(組込は属性組込部204に行わせる。以下同様)。
一方、上記指定画面に対してユーザが指定した文書がID付き文書でない場合、関連文書登録指示部220は、その文書の新規登録指示を文書操作部200に対して行ってもよい。この場合、関連文書登録指示部220は、その新規登録指示に応じて文書管理サーバ10から返されてきたID付き文書300の操作IDを、対象の文書の属性情報310中の関連文書情報318に組み込めばよい。
関連文書が複数指定された場合は、それら各関連文書の操作IDを対象の文書の属性情報310中の関連文書情報318に組み込めばよい。
関連文書削除指示部222は、対象のID付き文書300(「対象の文書」)に対応する過去の操作の派生関係の中で関連文書として設定された文書を、関連文書でなくすための指示を受け付ける。例えば、対象の文書に対する操作項目を示す上記メニューの中からユーザが関連文書の削除を選択した場合、関連文書削除指示部222は、例えば文書管理サーバ10に対して対象の文書の操作IDを含んだ関連文書検索要求を送る。文書管理サーバ10は、この検索要求に応じ、属性DB110(詳細は後述)に登録された派生関係群が構成する木構造を、その操作IDから派生元(つまり親)の方向へと、その木の根(或いは別途指定された遡及限界(例えば後述する継承属性「no」))まで遡及する。そして、その遡及過程で通る各操作IDに対してそれぞれ設定された関連文書の操作IDを収集し、それら操作IDのリストを関連文書リストとしてクライアント端末20の関連文書削除指示部222に返す。関連文書削除指示部222はその関連文書リストを表示し、ユーザはその中から削除対象を指定する。関連文書削除指示部222は、指定された削除対象の関連文書の操作IDと、関連文書でなくすことを示す指示情報とを対応づけて、対象の文書の関連文書情報318に組み込む。
関連文書検索指示部224は、対象のID付き文書300についての関連文書の検索指示をユーザから受け付ける。例えば、対象の文書に対する操作項目を示す上記メニューの中からユーザが関連文書の検索を選択した場合、関連文書検索指示部224は、例えば文書管理サーバ10に対して対象の文書の操作IDを含んだ関連文書検索要求を送る。文書管理サーバ10は、この検索要求に応じて属性DB110を検索することで、対象の文書に対応する関連文書を検索し、その検索結果を関連文書検索指示部224に返す。この検索処理については、後で詳しく説明する。関連文書検索指示部224は、受け取った検索結果の関連文書を提示する。ユーザは検索結果の関連文書を開き、閲覧その他の操作を行うことができる。
次に、文書管理サーバ10について説明する。文書管理サーバ10は、システム内の複数のクライアント端末20から送られてくるID付き文書300を蓄積し、蓄積した情報に基づきユーザに各種のサービスを提供する。図4に示すように、文書管理サーバ10は、文書DB(データベース)100,属性DB110,文書登録部130,及び要求処理部140を備える。
文書DB100は、クライアント端末20から送られてきたID付き文書300のうちの文書内容320を格納するデータベースである。文書DB100に格納された各文書内容320は、一意な内容IDにより管理してもよい。内容IDとしては、例えば当該文書内容の暗号学的ハッシュ関数によるハッシュ値を用いてもよいが、これに限定されるものではない。クライアント端末20が内容IDを付与してもよく、この場合、クライアント端末20が内容IDを属性情報310に組み込んでもよい。また、内容IDの代わりに、その文書内容320を、当該文書内容に対応するID付き文書300の操作IDと対応づけて文書DB100に格納してもよい。
文書登録部130は、クライアント端末20から受信したID付き文書の中の文書内容320を文書DB100に、属性情報310を属性DB110に、それぞれ登録する。そのうち、属性情報の登録を担当するのが属性登録部132である。
属性DB110は、ID付き文書300のうち、派生関係の情報を含む属性情報310を蓄積するデータベースである。図5に、属性DB110のデータ内容の一例を示す。図5に示した表における1行の情報が、1つのID付き文書300に対応する属性情報レコードである。この例では、各ID付き文書300の操作IDに対応づけて、親操作ID、操作種別、操作者のユーザID、関連文書情報、アクセス権情報(ACL_read, ACL_write)の各項目が登録されている。これら各項目は、クライアント端末20から受信したID付き文書300の属性情報310から求められる。なお、アクセス権情報は、当該ID付き文書300の文書内容320に対するアクセス権を表す情報である。アクセス権情報は、ユーザがクライアント端末20で文書の操作を行った際に、アクセス権設定を行った場合に属性情報310に組み込まれる属性項目である。ACLはアクセスコントロールリストのことであり、属性ACL_readは操作結果のID付き文書300に対する閲覧権限を付与されたユーザ又はユーザグループのIDのリストであり、ACL_writeは当該ID付き文書300に対する書き込み権を付与されたユーザ又はユーザグループのIDのリストである。閲覧権限、編集権限はあくまで一例であり、他の種類のアクセス権が設定できるようにしてもよい。
なお、図5に例示した属性情報の項目は一例に過ぎない。例えば、図5では省略したが、属性DB110には、操作が行われた操作日時など、他の属性項目の値を記録してもよい。また、この他にも、ID付き文書内の文書内容320を格納した、文書DB100内での格納場所を示すパス名を属性DB110に登録してもよい。文書DB100が、内容IDで文書内容320を検索する機能を持つものであれば、文書格納パスの代わりに内容IDを属性情報レコードに登録してもよい。
なお、図5は属性DB110が管理するデータを内容の観点から表現したものにすぎず、具体的な表現形式或いはデータベース形式を規定するものではない。例えば、属性DB110は、一般的なリレーショナルデータベースとして構築することもできるし、操作IDを除く属性情報を記述したXML(eXtensible Markup Language)文書を、操作IDをキーとして登録したデータベースとして構築することもできる。
属性登録部132の内の関連文書登録部134は、ID付き文書300の属性情報310のうちの関連文書情報318を、当該ID付き文書300の操作ID312に対応づけて属性DB110に登録する。上述のように、関連文書情報318には、登録対象の関連文書の操作ID、及び削除対象の関連文書の操作IDが含まれる可能性がある。関連文書登録部134は、関連文書情報318に含まれるそれらの情報を属性DB110の当該ID付き文書の操作IDに対応するレコードの関連文書情報欄に登録する。
要求処理部140は、クライアント端末20からの操作IDを含んだサービス要求に応じて、属性DB110を用いたサービスを提供する。要求処理部140が提供するサービスとしては、例えば、サービス要求中の操作IDに対応する文書の最新版を検索するサービスがある。また別の例として、サービス要求中の操作IDに対応する始祖(根)の文書又はその始祖についてのログ情報を提供するサービスを挙げることができる。また、別の例として、その操作IDの来歴、すなわち始祖からその操作IDまでに文書が経てきた操作の履歴(例えば誰がいつどんな操作をしたのかを示す情報のリスト)を提供するサービスもある。また、属性DB110に登録された属性項目についての検索条件の指定を受け付け、その検索条件を満足するID付き文書のリストを提供するサービスもある。このサービスに付随して、要求処理部140は、そのリストの中からユーザの所望するID付き文書の選択を受け付け、選択されたID付き文書を提供してもよい。なお、上述の最新版を検索するサービスは、「操作日時が最新である」という検索条件についての検索結果を提供するサービスと捉えることもできる。また、上述の始祖の文書の情報を提供するサービスは、「木構造の根に該当する文書」という条件についての検索結果を提供するサービスと捉えることができる。また、別の例として、属性DB110に基づきID付き文書群の派生関係を表す木構造の表示画面を提供し、その表示画面上でユーザの所望するID付き文書の選択を受け付け、選択されたID付き文書を提供するサービスもある。
また、要求処理部140は、関連文書の検索サービスを提供するための関連文書検索部142を備える。クライアント端末20から、操作IDを含む関連文書検索要求を受け取ると、関連文書検索部142は、検索モード(これは文書サーバ10に設定されているか、関連文書検索要求中に指定されている)にしたがって、属性DB110を参照して関連文書を検索し、その検索結果をクライアント端末20に返す。関連文書検索部142の検索処理及び検索モードについては、後で詳しく説明する。
サービス要求は、クライアント端末20に保持されたID付き文書に基づき発せられる。例えば、ユーザがクライアント端末20の文書操作部200によりID付き文書を開いた場合に、文書操作部200が、派生関係を用いたサービスのメニューを提供し、そのメニューの中からユーザが所望するサービスの指定を受け付ける。そして、そのID付き文書の操作IDと指定されたサービスを示すコードとを含むサービス要求を文書管理サーバ10の要求処理部140に送信する。このとき、ユーザ識別情報や操作日時などの属性項目についての検索条件を指定するユーザインタフェース画面を提供し、この画面を介して入力された検索条件を併せて要求処理部140に送信してもよい。また、操作IDと、サービスを示すコード、検索条件以外に、指示を行ったユーザの識別情報や、ユーザの入力した認証情報などといった他の情報を、クライアント端末20から要求処理部140に送信するようにしてもよい。
また別の例として、ユーザによるサービスの指定を一つの「操作」と捉え、その「操作」に対して新たに操作IDを付与することも考えられる。この場合、指定されたサービスのコードを操作種別として含み、指定の際に用いられた元のID付き文書の操作IDを親操作IDとして含んだID付き文書を生成し、このID付き文書をサービス要求として文書管理サーバ10に送ってもよい。この場合、要求処理部140は、受け取ったID付き文書内の操作種別の情報に基づき提供すべきサービスを判定し、同じくID付き文書内の親操作IDを、派生関係を遡る処理の起点とすればよい。
要求処理部140は、クライアント端末20からサービス要求を受けた場合、そのサービス要求中に指定された操作IDを起点に、属性DB110に登録された操作IDと親操作IDとの派生関係が構成する木を走査(トラバース)し、その走査の結果得られた情報を用いて、ユーザから要求されたサービスを実行する。関連文書検索部142も同様に、設定又は指定された検索モードが派生関係の木を遡及するモードであれば、その木を派生元の方向に遡りつつ関連文書を検索する。
次に、図5〜図7に示す具体例を用いて、関連文書の登録及び検索処理の例を説明する。この例では、属性DB110には、図5に示した操作ID「ID1」から派生する操作の属性レコード群と、図6に示した操作ID「ID100」の操作の属性レコード群が登録される。操作「ID100」は、ある文書を文書管理サーバ10に新規登録する操作であり、登録された文書は、操作「ID1」で新規登録された文書に対する関連文書に指定されている(操作「ID2」)。
図5に示す属性レコード群は、図7のような木構造を成す。これは、操作IDをノードとし、操作ID間の親子関係をエッジとする木構造である。
以下、図5〜図7の例が示す操作の履歴について時系列順に説明する。
ID1の操作: ユーザ「userA」が文書(他の文書との区別のために「文書1」と呼ぶ)を文書管理サーバ10に新規登録する。このとき、この文書に対する閲覧権限、編集権限をgroupAに付与する設定とした。
ID2の操作: ユーザ「userB」が操作「ID1」で登録された文書1に対し、既に文書管理サーバ10に登録されている「文書2」(操作ID = ID100で登録された文書)を関連文書として設定する操作(操作種別は「属性更新」とする) を行う。ここで、「文書2」には、操作「ID100」において、ユーザグループgroupBに対する閲覧権限が設定されていたとする。ここで、groupBのメンバーはgroupAのメンバーに含まれている、とする。この例では、操作「ID2」のアクセス権属性として、関連文書に指定した文書2の操作ID「ID100」のアクセス権属性に合わせて、groupBに対する閲覧権限を設定する。このように、属性更新操作に対応する操作IDのアクセス権属性を、その操作IDに対応して設定した関連文書のアクセス権属性に合わせれば、その属性更新操作に応じて作成されたID付き文書の文書内容(この例では「文書1」)に対しアクセスできるユーザ(又はグループ)は、そのID付き文書に対して設定された関連文書の文書内容(この例では「文書2」)にもアクセスできる。
なお、このように属性更新操作に対応する操作IDのアクセス権属性を関連文書のアクセス権属性に合わせて自動的に設定するのはあくまで一例に過ぎない。この代わりに、アクセス権設定のためのユーザインタフェース画面をクライアント端末20に提供し、属性更新操作を指示したユーザに、属性更新操作に対応する操作IDのアクセス権属性を指定させてもよい。
この場合、例えば、ユーザインタフェース画面にて、属性更新操作に対応する操作IDのアクセス権属性が関連文書のアクセス権属性より狭くなるように案内してもよい(例えば、前者が後者より広い場合には入力されたアクセス権属性を受理せず、警告を出すなど)。このようにすれば、関連文書にアクセス(例えば閲覧)できないユーザによる関連文書の取得が防止される。すなわち、属性更新操作の結果であるID付き文書300を受け取ったユーザは、このID付き文書300を用いて関連文書検索を要求することでその関連文書を取得しようとするが、そのユーザは、その関連文書へのアクセス権を持たない場合には、必ずそのID付き文書300のアクセス権も持たないので、そのID付き文書300を用いて関連文書検索要求を発する操作が禁じられる。
ID3の操作: ユーザ「userC」が操作「ID1」で登録されたID付き文書の関連文書を要求する操作(操作種別は「属性取得」)を行う。この場合、関連文書検索指示部224が発する関連文書検索要求には操作ID「ID1」が検索条件として含まれる。
ID4の操作: ユーザ「userD」が操作「ID2」で登録されたID付き文書の関連文書を要求する操作(操作種別は「属性取得」)を行う。この場合、関連文書検索指示部224が発する関連文書検索要求には操作ID「ID2」が検索条件として含まれる。
さて、操作「ID3」及び「ID4」では、ユーザが操作するクライアント端末20から関連文書検索要求が発行される。この要求を受けた場合に文書管理サーバ10の関連文書検索部142が行う検索処理の手順の例を図8に示す。
この手順では、まず関連文書検索要求中に含まれる操作IDを注目IDとし(S1)、属性DB110におけるその注目IDの属性レコードの関連文書情報の欄を調べる(S2)。その欄に関連文書の操作IDが(削除対象ではなく登録対象として)含まれているかどうかを判定し(S3)、含まれていれば、その関連文書の操作IDに対応する属性レコードのアクセス権属性を調べる(S4)。ステップS4では、そのアクセス権属性に基づき、関連文書検索要求の要求元のユーザがその関連文書に対してアクセス(この場合は閲覧)可能か否かを判定する。そして、アクセス可能であれば、その関連文書(ID付き文書)を要求元のクライアント端末20に送信し(S5)、処理を終了する。注目IDの関連文書情報に複数の関連文書が登録されている場合は、それらのうち要求元がアクセス可能なものを送信すればよい。
一方、注目IDに対して関連文書が設定されていない場合(S3の判定結果が否定(No))、又は設定されていても要求元がその関連文書にアクセス不可の場合(S4の判定結果が否定)の場合は、注目IDの属性レコードに親操作IDがあるか否かを調べる(S6)。親操作IDがあれば、その親操作IDを新たな注目IDとし(S7)、ステップS2以下の処理を繰り返す。すなわち、ステップS6及びS7では、派生関係の木を親、すなわち派生元の方向に一世代遡っている。なお、ステップS6の判定結果が否定となった場合は、関連文書検索要求中の操作ID自身とその始祖(根)に至るまでの各先祖の操作IDには、要求元のユーザがアクセス可能な関連文書が一つも設定されていないということになる。この場合、関連文書検索部142は、関連文書が無い旨をクライアント端末20に回答する(S8)。
以上に例示した手順によれば、操作「ID3」の属性取得操作では、検索条件である操作ID「ID1」を起点として検索するので、関連文書は見つからない。一方、操作「ID4」の属性取得操作では、検索条件である操作ID「ID2」を起点として検索するので、操作ID「ID2」の関連文書情報欄に登録された操作ID「ID100」に対応する文書2が関連文書として検索されることになる。
なお、この例の手順では、groupAに含まれるがgroupBには含まれないユーザがID4と同じ操作を行ったとしても、そのユーザはID2に対応する文書の閲覧権限がないため、関連文書として設定されている「文書2」を取得することはできない。
操作「ID1」で登録された文書と操作「ID2」に対応する文書とは、文書内容は同一であり(ID1からID2までの間に文書内容を編集していないから)、その意味では同じバージョンの文書と言える。したがって、「文書2」の閲覧権限がないユーザには操作「ID1」で登録されたID付き文書を配布し、「文書2」の閲覧権限があるユーザには操作「ID2」で登録されたID付き文書を配布するようにすれば(いずれのユーザも文書1の閲覧権限を持つものとする)、それらユーザに同じ内容の文書を配布しつつも、ユーザが閲覧権限のない関連文書を取得してしまうような不都合を避けることができる。
次に、図9〜図11を参照して、別の具体例を説明する。図9は、以下のような操作の履歴を示している。
ID1の操作: userAが文書1を文書管理サーバ10に新規登録した。この文書1に対する閲覧権限、編集権限をgroupAに付与する。またuserAは、この新規登録操作において、『文書2』をその文書1の関連文書に指定する。ここで、関連文書として設定した『文書2』が文書管理サーバ10に登録されていないものであるとする。この場合、関連文書登録指示部220は、『文書2』を文書サーバ10に新規登録する操作を行い、その操作を表す操作IDである「ID100」を、操作ID「ID1」の関連文書情報欄に設定する。この例では、『文書2』(ID100)のアクセス権属性は、『文書1』(ID1)を自動的に引き継ぐようにしている。しかし、これに限らず新規登録操作を行ったユーザが指定するようにするなど、他の方法でアクセス権属性を設定するようにしてもよい。
ID2の操作: userBが操作「ID1」で登録された文書を編集して更新登録を行い、同時に『文書3』(操作ID = ID200で新規登録された文書)を関連文書として設定する操作を行う。この例では、アクセス権に関する設定は特に行っていないので操作「ID1」と同じ設定を引き継いでいる。(アクセス権に関する設定は以降の操作でも同様。)
ID3の操作: userCが操作「ID1」で登録された文書の関連文書を要求する操作を行う。
ID4の操作: userDが操作「ID2」の結果得られた文書に『文書4』(操作ID = ID300で新規登録された文書)を関連文書として設定する属性更新操作を行う。
ID5の操作: userEが操作「ID3」の結果得られた文書の関連文書を要求する操作を行う。
ID6の操作: userFが操作「ID4」の結果得られた文書の関連文書を要求する操作を行う。
図9に示す属性レコード群は、図11のような木構造を成す。また、図10は、文書2の新規登録操作及び閲覧操作により属性DB110に登録された属性レコードを示す。
この例では、関連文書検索部142は、例えば、以下の3つの検索モードを持っているものとする。
検索モード1:関連文書検索要求中に指定された操作ID自体の属性レコードの関連文書情報に登録されている関連文書を返す。アクセス権をチェックする場合は、要求元がアクセス権を持つ関連文書のみを返す。
検索モード2:関連文書検索要求中に指定された操作IDを起点とし、派生関係の木を派生元の方向に遡る過程で最初に見つかった関連文書(複数の関連文書が同じ操作IDに対して設定されている場合はそれらすべて)を返す。アクセス権をチェックする場合は、上記の過程で最初に見つかった「要求元がアクセス権を持つ関連文書」を返す。このモードは、図8に例示した手順に対応する。
検索モード3:関連文書検索要求中に指定された操作IDを起点とし、派生関係の木を派生元の方向に根まで遡り、それら起点から根までに見つかった各操作ID(起点と根を含む)に対して設定された関連文書をすべて返す。
ユーザは、クライアント端末20の関連文書検索指示部224において、上記3つの検索モードのうちのいずれかを指定して、関連文書の検索要求を行う。操作「ID3」、操作「ID5」、及び操作「ID6」のそれぞれにおいて、上記検索モード1−3で選択した結果取得できる関連文書を図12に示す。
次に、図13〜図15を参照して、更に別の具体例を説明する。図13は、以下のような操作の履歴を示している。この例は、アクセス権制御を行わない場合の例であるが、この例の手法にアクセス権制御を組み合わせることも可能である。
ID1の操作: userAが文書1を文書管理サーバ10に新規登録した。またuserAは、この新規登録操作において、『文書2』(操作ID = ID100で新規登録された文書)をその文書1の関連文書に指定する。
ID2の操作: userBが操作「ID1」で登録された文書を編集して更新登録を行い、同時に『文書3』(操作ID = ID200で新規登録された文書)を関連文書として設定する操作を行う。この例では、関連文書の設定の際に、継承属性の指定をユーザから受ける。
継承属性は、派生関係群がなす木における当該操作ID(すなわち、関連文書の設定操作により生成されたID付き文書の操作ID)の先祖の操作IDに対して設定された関連文書を継承するか否かを示す属性である。この属性の値が「yes(継承有り)」であれば先祖に対して設定された関連文書を継承し、「no(継承無し)」であれば継承しない。操作「ID2」では、継承属性が「yes」に設定されている。
ID3の操作: userCが更新操作「ID2」の結果のID付き文書の関連文書を要求する操作を行う。
ID4の操作: userDが操作「ID2」の結果得られたID付き文書を編集して更新登録を行うと共に、『文書4』(操作ID = ID300で新規登録された文書)を関連文書として設定する。
ID5の操作: userEが操作「ID4」の結果得られたID付き文書の関連文書を要求する操作を行う。
図13に示す属性レコード群は、図14のような木構造を成す。
また、操作「ID200」でuserAにより新規登録された文書3は、操作「ID201」にてuserEにより編集され更新されているとする(図15参照)。
この例で、例えば前述の検索モード2又は3で関連文書の検索を行う場合、関連文書検索部142は、関連文書検索要求中の操作IDを起点に派生関係の木を派生元の方向へ遡及する際に、継承属性が「no」に設定された操作IDに到達すると、その操作IDで遡及を止める。継承属性が「yes」に設定された操作IDに到達した場合は、更に遡及を続ける。
この例で、例えば検索モード3で検索を行う場合を考える。この場合、属性取得操作「ID3」では、操作ID「ID2」のID付き文書を使って検索要求を行い、操作ID「ID2」の継承属性が「yes」であるので、操作ID「ID200」に対応する関連文書のみならず、操作ID「ID100」に対応する関連文書も検索される。また操作「ID5」では操作ID「ID4」のID付き文書を使って検索要求が行われる。この場合、操作ID「ID4」に対応する操作で設定された操作ID「ID300」に対応する関連文書は検索されるが、操作ID「ID4」の継承属性が「no」であるので、派生関係の遡及はその「ID4」で停止する。したがって、取得できる関連文書は操作ID「ID300」に対応する関連文書のみである。
なお、関連文書検索要求に、関連文書の最新版を検索するオプションを指定できるようにしてもよい。関連文書検索要求を行う際にユーザがその指定を行うと、関連文書検索部142は、検索の過程で操作IDの関連文書情報に設定された関連文書を見つけるごとに、見つけた関連文書の操作IDから派生した子孫の操作IDを属性DB110から検索し、当該関連文書の操作ID及びその子孫の操作IDの中で最新のものを検索結果としてもよい。最新のものは、例えば、操作日時属性の値から判定すればよい。また、もっとも世代の若い子孫の操作IDを最新のものと判定してもよい。この場合、操作「ID3」によって取得できる関連文書は「ID201」(図15参照)及び「ID100」となる。
なお、関連文書検索についてのオプションは、上述した最新版を求めるオプションに限らない。別の例として、関連文書から派生した全ての文書を求めるオプション、関連文書から派生した文書のうち更新操作の結果である文書を全て求めるオプションなど、様々な例があり得る。
次に、図16及び図17を参照して、更に別の具体例を説明する。図16及び図17は、以下のような操作の履歴を示している。この例は、アクセス権制御を行わない場合の例であるが、この例の手法にアクセス権制御を組み合わせることも可能である。
(1)userAが『文書1』にアンケート用紙『文書2』(ID100で新規登録されている)を関連文書として設定して新規登録(ID1の操作)。
(2)userAが『文書2』(ID100の文書)を電子メールに添付して配布。この操作はID付き文書(及びこれを取り扱う文書操作部200)の機能を用いるものではないので、子の操作の履歴情報(属性情報レコード)は文書管理サーバ10に記録されない。
(3)メール受信者(userB, userC, userD)がアンケート用紙『文書2』に回答を記入して「応答」操作を行う(の操作)。記入済みのアンケート用紙がID101〜ID103に対応づけて文書管理サーバ10に登録される。
(4)userAがID1のID付き文書を利用して、関連文書ID100の子孫の中で操作種別が「応答」であるものを検索して取り出す(ID2の操作)。この例では、関連文書検索要求に、『操作種別が「応答」である』という検索条件が課される。この検索要求に対して、ID101〜ID103の文書が関連文書として検索される。
(5)userAが(4)で集めた関連文書を元にアンケート結果を集計し(この集計は手作業)、集計結果の文書『文書3』を作成して文書管理サーバ10に登録する(ID200の操作)。userAは、その『文書3』(ID200の文書)をID1のID付き文書の関連文書として設定すると同時に、『文書2』(ID100の文書)を『文書1』の関連文書から削除する操作を行う(ID3の操作)。この例は、集計結果を関連文書として登録した後は、『文書1』経由では『文書2』にはアクセスできなくするものである。
図16の例では、関連文書情報欄には、削除指示の対象となった操作IDは「−」(マイナス)符号付きで示されている。関連文書情報欄内の符号なしの操作IDは、登録された関連文書を示している。
操作「ID3」から派生する子孫のID付き文書を用いて関連文書検索が行われる場合、ID200の文書は取得されるが、削除されたID100及びこれから派生したID101〜ID103の文書は取得されない。
以上に例示した文書管理サーバ10及びクライアント端末20は、例えば、汎用のコンピュータに上述の各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、図18に示すように、CPU400等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)402およびリードオンリメモリ(ROM)404等のメモリ(一次記憶)、HDD(ハードディスクドライブ)406を制御するHDDコントローラ408、各種I/O(入出力)インタフェース410、ローカル・エリア・ネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース412等が、たとえばバス414を介して接続された回路構成を有する。また、そのバス414に対し、例えばI/Oインタフェース410経由で、CDやDVDなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ416、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ418、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがRAM402に読み出されCPU400等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。なお、それら機能モジュール群のうちの一部又は全部を、専用LSI(Large Scale Integration)、ASIC(Application Specific IntegratedCircuit、特定用途向け集積回路)又はFPGA(Field Programmable Gate Array)等のハードウエア回路として構成してもよい。
10 文書管理サーバ、20 クライアント端末、30 ネットワーク、100 文書DB、110 属性DB、130 文書登録部、132 属性登録部、134 関連文書登録部、140 要求処理部、142 関連文書検索部、200 文書操作部、202 ID割り当て部、204 属性組込部、210 登録処理部、220 関連文書登録指示部、222 関連文書削除指示部、224 関連文書検索指示部、300 文書、310 属性情報、320 文書内容。