図1は、文書利用管理システムの概略構成を示すブロック図である。このシステムは、インターネットやローカル・エリア・ネットワーク等のネットワーク30を介して接続された文書管理サーバ10とクライアント端末20−1,20−2,・・・(以下、クライアント端末20と総称する)から構成される。
クライアント端末20について図2を用いて説明する。クライアント端末は、ユーザが文書を操作するために用いる端末であり、パーソナルコンピュータ、デジタル複写機などがその一例である。クライアント端末20は、図2に示すように、文書操作部200、登録処理部210、及びアクション設定処理部220を備える。
文書操作部200は、文書に対する操作を実行する手段である。文書に対する操作には、例えば、文書の表示(ユーザから見れば「閲覧」)、編集、印刷出力、紙文書の読み取り、紙文書の複写、等がある。図2では、文書操作部200を1つだけ示したが、それら個々の操作を別々の操作部(例えば、編集用のアプリケーション、読取制御用のアプリケーションなど)が担当してもよい。例えば、文書操作部200がワードプロセッサ等の電子文書を作成・編集するためのソフトウエアであれば、文書操作部200は、ユーザの指示に応じて電子文書を表示したり、電子文書に編集を加えたりする。文書操作部200は、文書に対して操作を行った場合、その操作の結果を表すID付き文書300を出力する。
ID付き文書300は、図3に示すように、メタ情報310と文書内容320を含んだ電子文書である。文書内容320は、文書操作部200の操作の結果生成された文書の内容データである。文書操作部200が電子文書を作成・編集するためのソフトウエアであれば、文書内容320はそのソフトウエアによる編集の結果生成される文書ファイルである。また、文書操作部200が電子文書を印刷する装置であれば、文書内容320は、例えば、印刷される電子文書の内容データとすればよい。また、文書操作部200が紙文書をスキャンする装置又は紙文書を複写する装置であれば、文書内容320は、例えば、その紙文書を読み取って得られる画像データとすればよい。
メタ情報310は、文書管理のための情報であり、管理ID312,親ID314,及びログ情報316を含む。
管理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付き文書が生成された際の操作についての、各種のログ項目の情報である。ログ項目には、例えばその操作が行われた日時、その操作の種別、その操作を指示したユーザ(操作者)などがあるが、もちろんこれに限るものではない。操作の種別には、例えば登録(本システムに新規の文書を登録すること)、閲覧、編集、更新(更新版の登録)、印刷、スキャン、紙文書の複写、等がある。例えば、ユーザが文書操作部200を用いて第1のID付き文書に対して編集を加え、編集完了の指示を行った場合、その結果生成される第2のID付き文書のログ情報316は、編集完了の日時と、その編集を指示したユーザの識別情報と、操作の種別として「編集」と、を含んだものとなる。
ここでログ情報316に組み込まれる操作の種別は、ログ記録の目的での分類に従った種別であり、文書操作部200が実行する操作の種別そのものでなくてもよい。例えば、文書操作部200が実行する複数の操作の種別を、同じ1つのログ記録目的の操作種別に対応づけてもよい。例えば、文書編集アプリケーション上でID付きの電子文書に編集を加え操作メニュー上で「更新版として登録」を指示した場合も、スキャナで管理ID付きの紙文書を読み取り読取制御用アプリケーションの操作メニュー上で「読み取った文書を承認版として登録」を指示した場合も、ログ情報316に組み込まれる操作種別の値は「更新」となる。逆に、文書操作部200が実行する1つの操作の種別を、異なるログ記録目的に応じて異なる操作種別として区別してもよい。例えば、文書編集アプリケーションにおけるID付き文書の表示という1つの種別の操作について、ユーザが操作メニュー上で「(文書内容の)確認として登録」を指示した場合はログ情報316に組み込まれる操作種別の値を「確認」とし、「(文書内容の)承認として登録」を指示した場合はログ情報316中の操作種別の値を「承認」とすることで、両者を区別するようにしてもよい。
図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間の派生関係を把握することができる。
また、本実施形態では、クライアント端末20がID付き文書300を文書管理サーバ10に登録すると、文書管理サーバ10は、そのID付き文書300に関する複数のユーザによる共同作業を支援する処理を行うことがある。例えば、文書管理サーバ10は、ID付き文書300又はそのID付き文書300から派生したID付き文書300に関して設定された条件に応じて、そのID付き文書300や派生した文書に対して実行されるべき操作に関する情報などをユーザに通知したりする。
アクション設定処理部220は、ID付き文書300に関する共同作業を支援する文書管理サーバ10による処理(以下、「アクション」と呼ぶこともある)の実行条件及び内容を設定する。アクション設定処理部220は、例えば、クライアント端末20の入力装置(図示しない)を介して、ID付き文書300を特定する情報及びそのID付き文書に関して設定されるアクションの実行条件及び内容を特定する情報のユーザ入力を受け付け、受け付けた情報を文書管理サーバ10に対して送信する。アクションの実行条件及び内容の具体例は文書管理サーバ10についての説明と共に後述する。
文書操作部200が操作の結果出力するID付き文書300は、通常の文書ファイルと同様、電子的にコピーしたり、電子メールに添付するなどの方法で他の人宛に送信したりすることができる。電子メール送信用のソフトウエアは、この例では本システムに準拠していないので、この送信操作はID付き文書には反映されず、したがって文書管理サーバ10にも記録されない。他の人からID付き文書300を受け取った人が、自分のクライアント端末20の文書操作部200を用いてそのID付き文書300を操作すると、その操作に応じて新たな管理IDを付与されたID付き文書が生成されることになる。
また、文書操作部200が電子文書を印刷する場合、管理IDを生成し、その電子文書の印刷結果にその管理IDを埋め込んでもよい。管理IDの埋め込みは、例えば電子文書の印刷画像に、管理IDを示すコード画像を重畳する等の方法で行うことができる。また、用紙がRFID(Radio Frequency Identifier)タグを備えている場合、そのRFIDタグに管理IDを書き込んでもよい。このように印刷を行った場合、文書操作部200は、その管理IDや操作種別「印刷」等のメタ情報を含んだID付き文書を文書管理サーバ10に登録する。なお、ID付き文書を印刷した場合には、そのID付き文書の管理IDを親ID314として含んだID付き文書が生成される。印刷操作に対応するID付き文書には、印刷された画像を示すページ記述言語データやビットマップ画像データをなどの印刷データ、又は印刷された文書ファイルを、文書内容320として組み込んでもよい。
また、管理IDが埋め込まれた紙文書を文書操作部200が読み取った場合、文書操作部200は、その読み取り操作に対して新たな管理IDを付与し、読み取り結果の画像を文書内容320として含んだID付き文書を生成して文書管理サーバ10に登録する。このID付き文書の親ID314には、紙文書から読み取った管理IDがセットされる。管理IDが埋め込まれた紙文書の複写の際には、上述した読み取り時と印刷時の処理が実行される。
次に、文書管理サーバ10について説明する。文書管理サーバ10は、システム内の複数のクライアント端末20から送られてくるID付き文書300を蓄積し、蓄積した情報に基づきユーザに各種のサービスを提供する。図4に示すように、文書管理サーバ10は、文書DB100、派生関係DB110、アクションテーブル120、文書登録部130、アクション設定部140、アクション実行部150、及び要求処理部160を備える。
文書DB100は、クライアント端末20から送られてきたID付き文書300のうちの文書内容320を格納するデータベースである。文書DB100に格納された各文書内容320は、一意な内容IDにより管理してもよい。内容IDとしては、例えば当該文書内容の暗号学的ハッシュ関数によるハッシュ値を用いてもよいが、これに限定されるものではない。クライアント端末20が内容IDを付与してもよく、この場合、内容IDをメタ情報320に組み込んでもよい。また、内容IDの代わりに、その文書内容320を、当該文書内容に対応するID付き文書300の管理IDと対応づけて文書DB100に格納してもよい。
文書登録部130は、クライアント端末20から受信したID付き文書の中の文書内容を文書DB100に、メタ情報を派生関係DB110に、それぞれ登録する。そのうち、メタ情報の登録を担当するのが派生関係登録部132である。
派生関係DB110は、そのようなID付き文書300のうち、派生関係の情報を主としたメタ情報を蓄積するデータベースである。図5に、派生関係DB110のデータ内容の一例を示す。図5に示した表における1行の情報が、1つのID付き文書300に対応するメタ情報レコードである。この例は、アンケートなどの文書を文書管理サーバ10に新規登録し、この文書を電子メールなどで複数のユーザに配布し、当該文書を受け取ったユーザがそのアンケートなどへの回答を当該文書に書き込んで回答済みの文書(以下、「回答文書」とも呼ぶ)をさらに文書管理サーバ10に登録する場合の文書の履歴を表す。図5の例の表では、各ID付き文書300の管理IDに対応づけて、親ID、操作種別、操作者、操作日時、締切日時、及び転送先情報の各項目が登録されている。このうち、管理ID、親ID、操作種別、操作者、及び操作日時については既に説明した。締切日時は、新規登録された文書(文書ID"Doc1")への回答文書を文書管理サーバ10に登録する締切の日時を表す。転送先情報には、新規登録文書(文書ID"Doc1")への回答文書を回収するために転送する転送先のサーバのアドレスが登録されている。締切日時及び転送先情報の値は、新規登録文書の生成の際に、ユーザがクライアント端末20の文書操作部200を用いて設定し、派生関係組込部204により、対応するID付き文書300のログ情報316に組み込まれる。また、本例では、締切日時及び転送先情報は、新規登録された文書にのみ設定されるものであり、操作種別が「(新規)登録」である文書(文書ID"Doc1")の他の文書については、締切日時及び転送先情報の各項目には値が設定されていない。
なお、図5に例示したメタ情報の項目は一例に過ぎない。例えば、この他にも、ID付き文書内の文書内容320を格納した、文書DB100内での格納場所を示すパス名を派生関係DB110に登録してもよい。文書DB100が、内容IDで文書内容320を検索する機能を持つものであれば、文書格納パスの代わりに内容IDをメタ情報レコードに登録してもよい。また例えば、操作者の連絡先(電子メールアドレス、FAX(ファクシミリ)番号、電話番号など)をさらに派生関係DB110に登録しておいてもよい。また、図5に例示する項目のうち、管理IDと親IDのペアの他の項目は、管理目的上必要なければ省略してもよい。
なお、図5は派生関係DB110が管理するデータを内容の観点から表現したものにすぎず、具体的な表現形式或いはデータベース形式を規定するものではない。例えば、派生関係DB110は、一般的なリレーショナルデータベースとして構築することもできるし、管理IDを除くメタ情報を記述したXML(eXtensible Markup Language)文書を、管理IDをキーとして登録したデータベースとして構築することもできる。
図5に示した派生関係DB110のデータ内容は、図6のような木構造を成す。これは、管理IDをノードとし、管理ID間の親子関係をエッジとする木構造である。
図5及び図6の例が示す文書の履歴を時系列順に説明すると、以下のようになる。
まず、文書管理サーバ10に登録されていなかった文書の「登録」操作がuserAのクライアント端末で実行される。「登録」操作は、文書管理サーバ10に未登録の文書(すなわち、管理IDを有していない文書)を当該サーバ10に登録するための操作である。また、userAは、この操作のときに、当該文書に対する回答の締切日時と回答の文書の転送先情報とを設定する。この操作に応じて管理IDが"Doc1"、親IDが空、操作種別が「登録」、締切日時が「2008-08-08 00:00:00」、転送先情報が「http://server/folder」であるメタ情報と、その文書の文書内容とを含むID付き文書"Doc1"がuserAのクライアント端末から文書管理サーバ10に送られる。これに応じ、文書管理サーバ10は、そのID付き文書"Doc1"中の文書内容を文書DB100へ、メタ情報を派生関係DB110にそれぞれ登録する。
なお、以下では、識別のために、登録された文書内容を"Content1"で表すことにする。その後、userAは、登録したID付き文書を他のユーザuserB,userC,・・・に配布する。この配布は、例えば、電子メールにそのID付き文書を添付して各ユーザに送信することにより、行うことができる。
その後、他のユーザuserBが自分のクライアント端末20の文書操作部200でID付き文書"Doc1"を閲覧する。閲覧されるのは内容ID"Content1"の文書内容である。クライアント端末20は、閲覧の結果としてID付き文書"Doc2"を生成し、ID付き文書"Doc2"が文書管理サーバ10に登録される。このID付き文書のメタ情報における管理IDは"Doc2"であり親IDは"Doc1"である。また操作者はuserBであり、操作種別は「閲覧」である。締切日時及び転送先情報の値は空に設定される。また、「閲覧」操作では文書内容は変更されないので、文書内容は"Content1"のままである。このように文書内容が変更されない操作を行った場合、クライアント端末20は、文書内容を省略したID付き文書を文書管理サーバ10に送ってもよい。
なお、この操作の前にuserBのクライアント端末20内にあったID付き文書"Doc1"は、この操作に伴い、派生関係組込部204によりID付き文書"Doc2"に置き換えられる。この置き換え処理では、派生関係組込部204は、元のID付き文書"Doc1"のうち、メタ情報310の管理ID312を新たに発行したID"Doc2"へ変更すると共に、元の文書"Doc1"の管理ID"Doc1"を親ID314の値にセットする。また、派生関係組込部204は、ログ情報316中の操作種別の値を今回の操作の種別である「閲覧」に変更し、操作時刻の値をその閲覧の日時に変更し、操作者の値をuserBに変更する。なお、「閲覧」操作によっては文書の内容は変化しないので、文書内容320は、"Content1"のままである。
このようにID付き文書"Doc1"は、閲覧されると、閲覧後のID付き文書"Doc2"に置き換えられる。したがって、その置き換えの後は、ID付き文書"Doc1"自体はそのクライアント端末20には存在せず、その代わりにID付き文書"Doc2"が存在することとなる。
続いて、ID付き文書"Doc1"を受け取った他のユーザuserCがクライアント端末20の文書操作部200でID付き文書"Doc1"を印刷し、その印刷結果の紙文書に対応するID付き文書"Doc3"が文書管理サーバ10に登録される。印刷されるのは内容ID"Content1"の文書内容である。この操作の前にuserCのクライアント端末20内にあったID付き文書"Doc1"は、この操作に伴い、派生関係組込部204によりID付き文書"Doc3"に置き換えられる。この置き換え処理では、派生関係組込部204は、元のID付き文書"Doc1"のうち、メタ情報310の管理ID312を新たに発行したID"Doc3"へ変更すると共に、元の文書"Doc1"の管理ID"Doc1"を親ID314の値にセットする。また、派生関係組込部204は、ログ情報316の操作種別の値を「印刷」に変更し、操作時刻の値をその印刷の日時に変更し、操作者の値をuserCに変更する。なお、印刷操作では、文書内容320は変化しないので、ログ情報316中の内容IDは"Content1"のままである。また、この印刷の結果である紙文書には、印刷操作によって生成されたID付き文書の管理ID"Doc3"を表す情報が埋め込まれる。
さらに、ID付き文書"Doc1"を受け取った他のユーザuserDがクライアント端末20において「閲覧」操作を行い、その閲覧結果のID付き文書"Doc4"が生成されて文書管理サーバ10に登録される。ID付き文書"Doc4"の管理IDは"Doc4"、親IDは"Doc1"、操作種別は「閲覧」、操作者はuserD、操作日時はuserDによる閲覧操作の日時となる。また、閲覧操作では文書内容は変更されないので、内容IDは"Content1"のままである。なお、この閲覧操作の前にuserDのクライアント端末20内にあったID付き文書"Doc1"は、新たなID付き文書"Doc4"に置き換えられる。
その後、userBは、自己のクライアント端末20でID付き文書"Doc1"を閲覧した結果のID付き文書"Doc2"に対して、文書操作部200を用いて編集を加え、操作メニュー上で「回答(回答文書として登録)」を指示する。この操作の結果、新たに発行されたID"Doc5"を管理IDとし、操作前のID付き文書"Doc2"の管理ID"Doc2"を親IDとし、操作種別が「回答」であるID付き文書"Doc5"が生成される。ID付き文書"Doc5"の操作者はuserB、操作日時はその回答操作の日時が設定され、文書に対する編集により文書内容が変化するので内容IDは"Content1"から"Content2"に変更される。このID付き文書"Doc5"は、クライアント端末20から文書管理サーバ10に送信されて登録される。
次に、userDが、クライアント端末20においてID付き文書"Doc4"を編集し、「回答」操作を行う。この操作に伴って、新たなID付き文書"Doc6"が生成されて文書管理サーバ10に登録される。ID付き文書"Doc6"の親IDは"Doc4"、操作種別は「回答」、操作者はuserD、操作日時はその回答操作の日時に設定される。また、「回答」操作により文書内容が変化し、内容IDが"Content1"から"Content3"に変更される。なお、「回答」操作の前のID付き文書"Doc4"は、クライアント端末20において操作結果のID付き文書"Doc6"に置き換えられる。
userDは、さらに、回答文書であるID付き文書"Doc6"に対して編集を加え、「回答」操作を行う。この結果、管理ID"Doc7"、親ID"Doc6"、操作種別「回答」、操作者「userD」である新たなID付き文書"Doc7"が生成されて文書管理サーバ10に登録される。userDのクライアント端末20において、この「回答」操作の前のID付き文書"Doc6"は新たなID付き文書"Doc7"に置き換えられる。また、編集により文書内容が変化し、ID付き文書"Doc7"の内容IDは、ID付き文書"Doc6"の"Content3"から新たな"Content4"に変更される。
図5及び図6は、この時点での派生関係DB110内の、"Doc1"から派生する文書あるいは操作の様子を示している。
以上、派生関係DB110のデータ内容を例に取り、本システムにおける文書操作の情報の登録の様子を説明した。
図4の説明に戻り、アクションテーブル120は、ID付き文書300に関する共同作業を支援する処理(アクション)の実行条件及び内容を記憶する。図7に、アクションテーブル120のデータ内容の一例を示す。図7の例は、派生関係DB110が図5に例示するデータ内容を有する場合にアクションテーブル120に登録されるデータ内容の一例である。図7の例の表の1行は、1つのアクションに対応するエントリである。この例のアクションテーブル120には、各アクションの識別番号であるアクション番号に対応づけて、管理ID、アクション起動条件、及びアクション内容の各項目が登録される。管理IDは、文書管理サーバ10に登録されたID付き文書のいずれかの管理IDである。アクション起動条件は、対応する「アクション内容」の項目で設定された内容のアクションの実行の条件を表す。アクション起動条件は、対応する管理IDのID付き文書又はこのID付き文書から派生した文書に関する条件である。アクション内容の項目は、対応する「アクション起動条件」の項目で設定された条件が満たされる場合に実行される処理の内容を表す。本例では、アクション内容が表す処理は、対応する管理IDのID付き文書又はこのID付き文書から派生したID付き文書に関する処理である。例えば、アクション内容は、対応する管理IDのID付き文書又はこのID付き文書から派生したID付き文書のログ情報の少なくとも一部を指定された宛先に転送する処理を表すものであってよい。
アクションテーブル120に登録される各アクションの管理ID、アクション起動条件、及びアクション内容は、クライアント端末20のアクション設定処理部220においてユーザが指示し、アクション設定処理部220により文書管理サーバ10に対して送信される。文書管理サーバ10のアクション設定部140は、クライアント端末20のアクション設定処理部220から各アクションの情報を受信すると、各アクションにアクション番号を付与し、各アクションのアクション番号に対応づけて、各アクションの管理ID、アクション起動条件、及びアクション内容をアクションテーブル120に登録する。
管理IDを指定したアクション起動条件及びアクション内容の設定は、例えば、クライアント端末20が当該管理IDのID付き文書300を文書管理サーバ10に登録するときに行われる。この例では、クライアント端末20のアクション設定処理部220は、クライアント端末20でID付き文書300が生成されたときに、当該ID付き文書300の管理IDに対応づけられるアクション起動条件及びアクション内容のユーザ入力を受け付ける。そして、当該ID付き文書300を登録処理部210が文書管理サーバ10に対して送信するとともに、アクション設定処理部220は、当該ID付き文書の管理IDと、ユーザにより入力されたアクション起動条件及びアクション内容と、を文書管理サーバ10に対して送信する。クライアント端末20からのアクションに関する情報を受信した文書管理サーバ10のアクション設定部140は、上述のようにアクションテーブル120への情報の登録を行う。また例えば、クライアント端末20において文書管理サーバ10に登録済みのID付き文書300の管理IDをユーザが指定してアクション起動条件及びアクション内容の設定を指示したときに、アクションテーブル120への登録を行ってもよい。この例の場合、アクション設定処理部220は、指定された管理IDと、入力されたアクション起動条件及びアクション内容と、を文書管理サーバ10に対して送信し、文書管理サーバ10のアクション設定部140によりアクションテーブル120への登録が行われる。なお、以下の実施形態の例の説明では、ID付き文書300の文書管理サーバ10への登録時に、そのID付き文書300の管理IDに対応づけられるアクション起動条件及びアクション内容の設定が行われるものとする。
アクション実行部150は、アクションテーブル120に登録されたアクションを実行する。アクション実行部150は、起動条件評価部152、ログ情報転送部154、及びアクション履歴登録部156を備える。
起動条件評価部152は、アクションテーブル120に登録された各アクションのアクション起動条件が満たされるか否かを評価する。
ログ情報転送部154は、起動条件評価部152でアクション起動条件が満たされると判断されたアクションに関し、アクションテーブル120に登録されたアクション内容が表す処理を実行する。例えば、ログ情報転送部154は、アクションテーブル120に登録されたアクション内容において指定されたID付き文書のログ情報の少なくとも一部を当該アクション内容において指定された宛先に対して転送する処理を行う。
アクション履歴登録部156は、ログ情報転送部154で実行された処理をID付き文書に対する操作として捉え、この操作の履歴を派生関係DB110に登録する。例えば、アクション履歴登録部156は、ログ情報転送部154で実行された処理の結果に相当する文書に対して新たな管理IDを付与し、この新たな管理IDのレコードを派生関係DB110で新規生成する。この新たな管理IDは、例えば、クライアント端末20の文書操作部200が備えるID割り当て部202と同様の処理により生成すればよい。この新たな管理IDの派生関係DB110中のレコードにおいて、親IDの項目の値は、ログ情報転送部154における処理の対象となったID付き文書300の管理IDに設定され、操作種別の値は、ログ情報転送部154が行った処理の種別を表す情報に設定される。また、操作者の値は、文書管理サーバ10による処理であることを表す情報に設定され、操作日時の値は、ログ情報転送部154による処理の実行の日時に設定される。
要求処理部160は、クライアント端末20からの管理IDを含んだサービス要求に応じて、派生関係DB110を用いたサービスを提供する。要求処理部160が提供するサービスとしては、例えば、サービス要求中の管理IDに対応する文書の最新版を検索するサービスがある。また別の例として、サービス要求中の管理IDに対応する始祖(根)の文書又はその始祖についてのログ情報を提供するサービスを挙げることができる。また、別の例として、その管理IDの来歴、すなわち始祖からその管理IDまでに文書が経てきた操作の履歴(例えば誰がいつどんな操作をしたのかを示す情報のリスト)を提供するサービスもある。また、派生関係DB110に登録された属性項目についての検索条件の指定を受け付け、その検索条件を満足するID付き文書のリストを提供するサービスもある。
サービス要求は、クライアント端末20に保持されたID付き文書に基づき発せられる。例えば、ユーザがクライアント端末20の文書操作部200によりID付き文書を開いた場合に、文書操作部200が、派生関係を用いたサービスのメニューを提供し、そのメニューの中からユーザが所望するサービスの指定を受け付ける。そして、そのID付き文書の管理IDと指定されたサービスを示すコードとを含むサービス要求を文書管理サーバ10の要求処理部160に送信する。このとき、ユーザ識別情報や操作日時などの属性項目についての検索条件を指定するユーザインタフェース画面を提供し、この画面を介して入力された検索条件を併せて要求処理部160に送信してもよい。また、管理IDと、サービスを示すコード、検索条件以外に、指示を行ったユーザの識別情報や、ユーザの入力した認証情報などといった他の情報を、クライアント端末20から要求処理部160に送信するようにしてもよい。
また別の例として、ユーザによるサービスの指定を一つの「操作」と捉え、その「操作」に対して新たに管理IDを付与することも考えられる。この場合、指定されたサービスのコードを操作種別として含み、指定の際に用いられた元のID付き文書の管理IDを親IDとして含んだID付き文書を生成し、このID付き文書をサービス要求として文書管理サーバ10に送ってもよい。この場合、要求処理部160は、受け取ったID付き文書内の操作種別の情報に基づき提供すべきサービスを判定し、同じくID付き文書内の親IDを、派生関係を遡る処理の起点とする。
要求処理部160は、クライアント端末20からサービス要求を受けた場合、そのサービス要求中に指定された管理IDを起点に、派生関係DB110に登録された管理IDと親IDとの派生関係が構成する木を走査(トラバース)し、その走査の結果得られた情報を用いて、ユーザから要求されたサービスを実行する。
以下、文書管理サーバ10で行われる処理の例を説明する。
図8は、アクション実行部150が実行する処理の手順の例を示す。アクション実行部150は、例えば、システムの管理者などにより予め設定された時間間隔で定期的に、あるいは、予め設定されたタイミングで、図8に例示する手順の処理を実行する。なお、以下の説明では、派生関係DB110は図5の例のデータ内容を有し、アクションテーブル120は図7の例のデータ内容を有するものとする。
図8を参照し、まず、アクション実行部150の起動条件評価部152は、アクションテーブル120中のエントリを1つ取得する(ステップS80)。そして、取得したエントリに登録されたアクション起動条件を、派生関係DB110を参照して評価する(ステップS82)。
以下、ステップS82の処理の具体例を述べる。例えば、図7の例のアクションテーブル120におけるアクション番号「1」のエントリをステップS80で取得したとすると、起動条件評価部152は、ステップS82で、アクション起動条件「“締切日時までの時間が24時間以下”かつ“管理IDの子ノードのうち、操作種別「閲覧」又は「印刷」であるノードのいずれかが操作種別「回答」の子孫を持たない”」が満たされるか否かを判定する。評価対象である当該アクション起動条件のうち、“締切日時までの時間が24時間以下”の部分は、派生関係DB110において、ステップS80で取得したエントリ中の管理ID"Doc1"に関連づけて登録された締切日時「2008-08-08 00:00:00」(図5参照)と図示しない時計手段から取得される現在日時とを比較することで評価される。
また、評価対象のアクション起動条件のうち、“管理IDの子ノードのうち、操作種別「閲覧」又は「印刷」であるノードのいずれかが操作種別「回答」の子孫を持たない”の部分は、例えば、以下の手順により評価される。まず、起動条件評価部152は、派生関係DB110中の文書間の派生関係が表す木構造(図6参照)においてステップS80で取得したエントリ中の管理ID"Doc1"の子ノードに対応するレコードを派生関係DB110から取得する。これは、例えば、管理ID"Doc1"を親IDとして有するレコードを派生関係DB110から抽出することで実現される。図5の例では、管理ID"Doc2","Doc3","Doc4"のレコードが取得される(いずれも親IDが"Doc1")。そして、取得したレコードのうち操作種別が「閲覧」又は「印刷」であるレコードのそれぞれについて、文書間の派生関係が表す木構造において当該レコードに対応するノードの子孫に該当するノードの中に操作種別が「回答」であるノードが存在するか否かを判定する。本例では、取得したレコード(管理ID"Doc2","Doc3","Doc4")のいずれも、操作種別は「閲覧」又は「印刷」である(図5参照)ので、これら管理ID"Doc2","Doc3","Doc4"のレコードのそれぞれについて、そのレコードに対応する上述の木構造におけるノードの子孫に該当するノードの中に操作種別が「回答」であるノードが存在するか否かを判定する。各レコードに対応するノードの子孫に該当するノードのうち操作種別が「回答」であるノードを検索する処理は、例えば、図9の例の手順の処理に従って行う。
図9を参照し、まず、起動条件評価部152は、処理対象の管理IDを注目IDにセットする(ステップS1)。上述の具体例では、管理ID"Doc2","Doc3","Doc4"のいずれかが処理対象の管理IDとして注目IDにセットされる。次に、起動条件評価部152は、派生関係DB110を参照し、注目IDの子IDを検索する(ステップS2)。派生関係DB110のうちその注目IDを「親ID」の値として持つレコードの「管理ID」が、注目IDの子IDである。注目IDの子IDが存在すれば(ステップS3でYes)、ステップS4で、それら子IDごとに、図10に示すような子孫探索処理を実行する。注目IDの子IDが存在しなければ(ステップS3でNo)、処理はステップS5に進む。
ステップS4の子孫探索処理が開始されると、図10のステップS11で、当該子IDを注目IDとする。次に、その注目IDに対応するレコードを派生関係DB110から取得し(ステップS12)、取得したレコードを中間結果リストに入れる(ステップS13)。中間結果リストは、検索処理の結果を求めるための材料となる情報を蓄積するために構築されるリストである。
その後、注目IDの子IDを検索し(ステップS14)、ステップS15で、子IDが検索できたか否かを判定する(ステップS15)。子IDがあれば(ステップS15でYes)、それら各子IDについて、それぞれステップS4の子孫探索処理を再帰的に実行する。すべての子IDについての子孫探索処理が終了すると、当該注目IDについての処理が終了する。ステップS15で子IDがないと判定された場合も、当該注目IDについての処理は終了する。
再び図9を参照し、注目IDのすべての子IDについてステップS4の子孫探索処理が終了すると、中間結果リストには、注目IDに対応する文書の子孫に該当する文書に対応するレコードが蓄積されていることになる。本具体例において、注目IDが図5の"Doc2"である場合、中間結果リストには、管理ID"Doc5"のレコードが蓄積され、注目IDが"Doc3"である場合、中間結果リストは空となり、注目IDが"Doc4"である場合、中間結果リストには、管理ID"Doc6","Doc7"のレコードが蓄積される。次に、ステップS5で、中間結果リストから検索条件を満たすレコードを選択する。本具体例では、起動条件評価部152は、検索条件として「操作種別が「回答」である」という条件を設定する。よって、中間結果リストに管理ID"Doc5"のレコード(操作種別は「回答」)が蓄積されていると、この管理ID"Doc5"のレコードが選択される。ステップS5で選択されたレコードが検索結果となる(ステップS6)。ステップS5で、中間結果リストが空である場合、又は、中間結果リスト中のレコードに検索条件を満たすレコードが存在しない場合、ステップS6において、「検索結果なし」とする。
図9及び図10を参照して説明した手順の処理を、管理ID"Doc1"のノードの子ノードに該当する管理ID"Doc2","Doc3","Doc4"のそれぞれを処理対象として行うと、管理ID"Doc3"のノードの子孫のうち操作種別が「回答」であるノードを検索した結果が空となる。よって、図7の例のアクション番号「1」のアクション起動条件のうち、“管理IDの子ノードのうち、操作種別「閲覧」又は「印刷」であるノードのいずれかが操作種別「回答」の子孫を持たない”の部分は満たされると判定される。この場合、現在日時から、管理ID"Doc1"に関連づけられた締切日時「2008-08-08 00:00:00」までの時間が24時間以下であれば、アクション番号「1」のアクション起動条件が満たされると判定される。
以上、起動条件評価部152がアクション起動条件を評価する処理(図8のステップS82)の具体例を説明した。起動条件評価部152は、ステップS82でアクション起動条件を評価した結果をログ情報転送部154に渡す。
図8の例の手順の処理の説明に戻り、ステップS82における評価の結果、アクション起動条件が満たされると起動条件評価部152が判定した場合(ステップS84でYes)、ログ情報転送部154は、ステップS80で取得したアクションテーブル120のエントリ中のアクション内容で表される処理を実行する(ステップS86)。アクション起動条件が満たされないと起動条件評価部152が判定した場合(ステップS84でNo)は、ステップS86及びステップS88の処理を行わずにステップS90に進む。
以下、ステップS86の処理の具体例を説明する。図7の例のアクション番号「1」のエントリを処理対象とする上述の例を再び用いる。この例では、ステップS86で、アクション内容の項目で設定されているように、「管理IDの子ノードのうち操作種別『閲覧』又は『印刷』であるノードであって操作種別『回答』の子孫を持たないノードの操作者に対して締切通知メールを送信」する処理が行なわれる。上述の具体例では、アクション起動条件評価処理(ステップS82)の結果、管理ID"Doc1"の子ノード(管理ID"Doc2","Doc3","Doc4")のうち操作種別「閲覧」又は「印刷」であるノードであって操作種別「回答」である子孫を持たないノードとして管理ID"Doc3"のノードが得られる。この管理ID"Doc3"を起動条件評価部152から受け取ったログ情報転送部154は、派生関係DB110から、管理ID"Doc3"のレコードの操作者の項目の値「userC」を取得する。さらに、ログ情報転送部154は、現在の処理対象のアクション内容に対応する管理ID"Doc1"のレコードを派生関係DB110から取得する。そして、管理ID"Doc1"のレコード中の締切日時までにuserCが有する管理ID"Doc3"のID付き文書に対して「回答」操作を実行することを促す旨を表す情報を含む電子メールのメッセージを生成する。その後、ログ情報転送部154は、生成した電子メールのメッセージを管理ID"Doc3"の操作者userCの電子メールアドレス宛に送信する。なお、各ユーザの電子メールアドレスは、例えば、文書管理サーバ10が備える記憶装置(図示しない)又は文書管理サーバ10によりアクセス可能な他の装置が備える記憶装置(図示しない)に各ユーザの識別情報と当該ユーザの電子メールアドレスとを予め対応づけて記憶させておき、この記憶装置からログ情報転送部154が取得すればよい。
図7の例のアクションテーブル120のアクション番号「2」のエントリを参照し、図8のステップS86の処理の他の具体例を説明する。アクション番号「2」のエントリが処理対象である場合、ステップS86で、ログ情報転送部154は、「管理IDの子ノードのうち操作種別『閲覧』又は『印刷』であるノードのそれぞれについて、その子孫の中で操作種別『回答』のノードのうち操作日時が最新のものに対応する文書を転送先情報で指定された転送先に転送」する処理を行う。本例では、起動条件評価部152によるアクション起動条件評価処理(ステップS82)において、管理ID"Doc1"の子ノードのうち操作種別「閲覧」又は「印刷」であるノード(管理ID"Doc2","Doc3","Doc4")のそれぞれに対して図9及び図10の例の手順の処理が行われ、管理ID"Doc2"及び"Doc4"のノードが操作種別「回答」の子孫を持つ(管理ID"Doc2"は"Doc5"、管理ID"Doc4"は"Doc6","Doc7")ことが起動条件評価部152からログ情報転送部154に通知される。ログ情報転送部154は、管理ID"Doc2"及び"Doc4"それぞれの子孫であって操作種別「回答」であるノードに対応するレコード("Doc5","Doc6","Doc7")を派生関係DB110から取得する。そして、管理ID"Doc2"及び"Doc4"のそれぞれの子孫として取得したレコードの操作日時を参照し、管理ID"Doc2"及び"Doc4"のそれぞれについて最新の子孫を選択する。ここでは、管理ID"Doc2"について管理ID"Doc5"が選択され、管理ID"Doc4"について管理ID"Doc7"が選択される。その後、ログ情報転送部154は、選択した管理ID"Doc5","Doc7"のID付き文書"Doc5","Doc7"を派生関係DB110において管理ID"Doc1"のレコードに登録された転送先情報「http://server/folder」宛に送信する。ログ情報転送部154は、例えば、派生関係DB110から取得される管理ID"Doc5","Doc7"のレコードの各項目の情報をメタ情報として含み、文書DB100から取得される各管理ID"Doc5","Doc7"に対応する文書内容を含むID付き文書を生成することでID付き文書"Doc5","Doc7"を得る。以上で説明した例の処理により、新規登録された文書であるID付き文書"Doc1"に対する各ユーザの最新の回答文書が、ID付き文書"Doc1"について設定された転送先に転送されることになる。言い換えると、ID付き文書"Doc1"を登録したユーザが設定した転送先に回答文書が回収される。
以上、図8のステップS86の処理の具体例を説明した。ログ情報転送部154は、アクション内容で設定された処理を実行すると(ステップS86)、その処理の対象及び内容をアクション履歴登録部156に通知する。この通知を受けたアクション履歴登録部156は、ステップS86で実行された処理を表す履歴を派生関係DB110に登録する(ステップS88)。ステップS88では、例えば、アクション履歴登録部156は、ステップS86で実行された処理の結果に相当する文書に対して新たな管理IDを付与する。そして、当該新たな管理IDを管理IDとし、ステップS86の処理対象となったID付き文書の管理IDを親IDとするレコードを派生関係DB110において新規生成する。この新規生成したレコードにおいて、アクション履歴登録部156は、操作種別の項目には、ログ情報転送部154から通知された処理の内容を表す値、操作者の項目には、文書管理サーバ10による処理であることを表す値、操作日時の項目には、ステップS86の処理の実行の日時を設定する。
図11に、アクション履歴登録部156が派生関係DB110に登録する履歴の例を示す。図11の例の表において、管理ID"Doc8"のレコードは、図7の例のアクション番号「1」のアクション起動条件が満たされて上述の具体例のような締切通知メールの送信が行われたときに、ステップS88で派生関係DB110に登録されるレコードの例を表す。管理ID"Doc8"は、締切通知メールの送信処理の結果に相当する文書に対してアクション履歴登録部156が付与した新たな管理IDである。管理ID"Doc8"のレコードの親IDの値は、上述の具体例の締切通知メールの送信先となったユーザuserCによる操作のノードの管理IDである"Doc3"に設定される。操作種別の値は、締切通知メールの送信を表す「締切通知」に設定されている。また、操作者の項目の値は、文書管理サーバ10による処理、つまり、システムによる処理であることを表す「sys」に設定されている。なお、操作日時の値は、ログ情報転送部154が締切通知メールの送信を行った日時である。また、管理ID"Doc8"のレコードは、ユーザが文書管理サーバ10に新規登録した文書に対応するレコードではないので、締切日時及び転送先情報の各項目の値は空である。
図11の例の管理ID"Doc9"及び"Doc10"の各レコードは、管理ID"Doc8"のレコードの登録後さらに、図7の例のアクション番号「2」のアクション起動条件が満たされて上述の具体例のように回答文書の転送処理が行われたときに、アクション履歴登録部156により派生関係DB110に登録されるレコードの例を表す。アクション番号「2」のアクション内容に従った処理の上述の具体例では、ID付き文書"Doc5","Doc7"が設定された転送先に転送される。図11の管理ID"Doc9","Doc10"のレコードは、それぞれ、ID付き文書"Doc5","Doc7"の転送処理の履歴に対応し、親IDの値として"Doc5","Doc7"を有する。また、管理ID"Doc9","Doc10"の各レコードにおいて、操作種別の値は、回答文書の転送処理を表す「回答転送」に設定され、操作者の値は「sys」に設定されている。操作日時の値は、各ID付き文書"Doc5","Doc7"が転送先に転送された日時である。なお、管理ID"Doc9","Doc10"の各レコードでも、締切日時及び転送先情報の値は空である。
図12は、図5の例の表に加えて図11の例の表のデータ内容が派生関係DB110に登録された時点での文書間の派生関係が表す木構造の例である。
再び図8を参照し、アクション履歴登録部156による派生関係DB110へのアクション履歴の登録処理(ステップS88)が終了すると、アクションテーブル120中のすべてのエントリについて処理済みであるか否かの判定が行われる(ステップS90)。すべてのエントリについて処理済みであれば(ステップS90でYes)、図8の例の手順の処理は終了する。未処理のエントリがあれば(ステップS90でNo)、ステップS80で、未処理のエントリを1つ取得し、ステップS82以下の処理を繰り返す。
なお、以上では、アクションテーブル120が図7の例のデータ内容を備えるものとしてアクション実行部150の処理を説明したが、アクションテーブル120のデータ内容は、図7の例に限られない。例えば、アクション起動条件の他の例として、図7の例のアクション番号「1」のアクション起動条件において、図7に示す条件「“締切日時までの時間が24時間以下”かつ“管理IDの子ノードのうち、操作種別「閲覧」又は「印刷」であるノードのいずれかが操作種別「回答」の子孫を持たない”」に対し、「管理IDの子孫のうち操作種別が「回答」であるノードが所定の個数に達していない」という条件をAND条件で追加してもよい。この条件を追加すると、操作種別「回答」のノードが所定の個数を超えると締切通知メールの送信は実行されない。操作種別が「回答」であるノードの個数は、例えば、当該アクション起動条件に関連づけられた管理IDを処理対象とし、検索条件を「操作種別が「回答」である」に設定して、図9及び図10を参照して説明した例の処理を実行して得られる検索結果のレコードの個数を求めることで得られる。さらに他の例として、図7の例のアクション番号「1」のアクション起動条件に対し、「管理IDの子ノードであって操作種別「閲覧」又は「印刷」であるノード中の操作種別「回答」の子孫を持たないノードの割合が予め設定された閾値以上である」という条件をAND条件で追加してもよい。この割合は、新規登録文書に対して未回答のユーザの割合を表し、管理IDの子ノードであって操作種別「閲覧」又は「印刷」であるノードのうち操作種別「回答」の子孫を持たないノードの個数を、管理IDの子ノードであって操作種別「閲覧」又は「印刷」であるノードの総数で除算することで求められる。
以上で説明した例では、アクション実行部150は、予め設定された時間間隔で定期的に、あるいは、予め設定されたタイミングで、図8の例の手順の処理を複数回実行する。よって、同じアクション起動条件が複数回評価され、対応するアクション内容の処理が複数回実行されることもあり得る。このとき、各アクション内容の処理の実行回数を制限してもよい。
例えば、各アクション内容の処理を1回だけ実行するように制限する場合、一度アクション起動条件が満たされて対応するアクション内容の処理が実行されると、このアクション内容を含むエントリをアクションテーブル120から削除する。あるいは、当該エントリが無効である旨を表す情報をアクションテーブル120に追加し、その後、図8の例の手順のステップS80では、アクションテーブル120において無効とされていないエントリの中から処理対象のエントリを取得するようにしてもよい。また、アクションテーブル120の各エントリについて、異なる実行回数の制限を設定しておいてもよい。例えば、各エントリに関連づけて、そのアクション内容の処理の実行回数の上限と、そのアクション内容の処理が図8の例の手順のステップS86で実行された回数を表すカウンタと、を記憶させておく。そして、アクション実行部150は、図8の例の手順のステップS86でアクションを実行すると、そのアクション内容を含むアクションテーブル120のエントリに関連づけられた上述のカウンタを1だけ増加させる。このカウンタの値と当該エントリに関連づけられた実行回数の上限とが等しくなったエントリについて、アクション実行部150は、アクションテーブル120から削除するか、あるいは、無効である旨の情報をアクションテーブル120に追加する。
以上では、文書に対する複数のユーザによる共同作業の一例として、アンケートなどのID付き文書を複数のユーザに配布し、配布されたID付き文書から派生した文書に対する「回答」操作を表すID付き文書を回収する例を挙げた。他の例では、企業などの組織において、申請書などの文書が複数のユーザの間で授受され、各ユーザがその業務上の役割に応じた操作(確認や承認など)を当該文書に対して実行することが考えられる。この例の場合の文書管理システムにおける処理の例を以下で説明する。
説明のための例として、ある文書に対し、次の一連の操作「一次確認」,「一次承認」,「最終確認」,「最終承認」が順に実行されることで、その文書に関する業務が完了する場合を考える。このような業務に係る文書に相当するID付き文書を文書管理サーバ10に新規登録するユーザは、当該ID付き文書に対して次に実行されるべき操作の種類「一次確認」と当該操作を実行すべきユーザとを表す情報をクライアント端末20の文書操作部200を用いて設定し、この設定情報は、派生関係組込部204により当該ID付き文書のログ情報に組み込まれる。さらに、当該ID付き文書を新規登録するユーザは、当該ID付き文書に対する「最終承認」操作の完了期限を締切日時として設定し、この締切日時も当該ID付き文書のログ情報に組み込まれる。また、当該ID付き文書又はこれから派生したID付き文書を操作する各ユーザは、自己の操作の次に実行されるべき操作の種類と、次に操作を実行すべきユーザと、を表す情報を文書操作部200により設定し、この設定情報は、各ユーザによる操作結果のID付き文書のログ情報に組み込まれる。
図13に、本例における派生関係DB110のデータ内容の一例を示す。図13の例の表において、管理ID、親ID、操作種別、操作者、及び操作日時の各項目の意味は、図5の例の派生関係DB110と同様である。図13の例の表の締切日時の項目は、新規登録されたID付き文書について設定された「最終承認」操作の完了期限を表す。また、図13の例の表の転送先情報の項目は、次に実行すべき操作を実行する担当のユーザの識別情報及び次に実行すべき操作の操作種別を表す。なお、図14は、図13の例の派生関係DB110のデータ内容が表す木構造の例を示す。
図13及び図14の例が示す文書の履歴を時系列順に説明する。まず、userAのクライアント端末20において、文書管理サーバ10に未登録の文書の「登録」操作が実行される。userAは、この操作のときに、当該文書に対する「最終承認」操作の完了の締切日時と、次に当該文書に対して操作を実行すべきユーザuserB及び実行されるべき操作の種別「一次確認」を含む転送先情報と、を設定する。この操作に応じて、userAのクライアント端末20の文書操作部200は、管理IDが"Doc1"、親IDが空、操作種別が「登録」、締切日時が「2008-08-08 00:00:00」、転送先情報が「userB,一次確認」であるメタ情報と、その文書の文書内容とを含むID付き文書"Doc1"を生成する。さらに、userAは、当該ID付き文書"Doc1"に関し、アクション設定処理部220を用いて、他の複数のユーザとの共同作業を促進するためのアクションを設定する。ID付き文書"Doc1"及びそのアクションの設定情報は、userAのクライアント端末から文書管理サーバ10に送られる。これに応じ、文書管理サーバ10において、そのID付き文書"Doc1"中の文書内容を文書DB100へ、メタ情報を派生関係DB110にそれぞれ登録し、アクションの設定情報をアクションテーブル120に登録する。
図15の例の表のアクション番号「1」〜「4」のエントリは、ID付き文書"Doc1"についてuserAが設定したアクションの情報を表す。図15の例の表は、図7の例のアクションテーブル120の表の各項目に加えて、タイマ時間の項目を備える。タイマ時間の項目は、各エントリについて当該エントリのアクション起動条件を評価するタイミングを表す。各エントリのアクション起動条件は、アクションテーブル120に登録されてから、そのタイマ時間の項目が表す時間だけ経過したときに評価される。
例えば、図15の例のアクション番号「1」のエントリを参照し、当該エントリのアクションテーブル120への登録からタイマ時間「締切日時−現在日時−24時間」だけ経過したときに、アクション起動条件「管理IDのノードの子孫に操作種別「最終承認」のノードが存在しない」が評価される。ここで、「現在日時」は、当該エントリのアクションテーブル120への登録時の日時を表す。
また例えば、アクション番号「2」のエントリを参照すると、タイマ時間の項目の値は「すぐ」に設定されている。この場合、アクション番号「2」のエントリがアクションテーブル120に登録されてから、例えばタイマで設定可能な最小時間が経過したときに、アクション起動条件「管理IDのノードが存在する」が評価される。本例では、対応する管理ID"Doc1"のID付き文書"Doc1"の文書管理サーバ10への登録とともにアクションテーブル120へのアクション番号「1」〜「4」のエントリの登録が行われるため、アクション番号「2」のアクション起動条件が評価されるときには必ず管理ID"Doc1"のノード(つまり、派生関係DB110中のレコード)が存在する。よって、ID付き文書"Doc1"及びこれについてのアクションの情報の登録後すぐにアクション番号「2」のアクション内容で設定された「管理IDのノードの転送先情報で指定されたユーザに処理依頼メールを送信」する処理が実行される。すなわち、文書管理サーバ10が備えるアクション実行部150のログ情報転送部154は、派生関係DB110から管理ID"Doc1"に関連づけられた転送先情報「userB,一次確認」を取得し、userBの電子メールアドレスを宛先として、「一次確認」操作の実行を依頼する旨とともに、ID付き文書"Doc1"を添付した処理依頼メールを送信する。その後、この処理依頼メールの送信の履歴をアクション履歴登録部156が派生関係DB110に登録する。
再び図13を参照し、管理ID"Doc2"のレコードは、userBに対する処理依頼メールの送信処理の履歴としてアクション履歴登録部156が登録したものである。管理ID"Doc2"は、アクション履歴登録部156が新たに生成した管理IDであり、この親ID"Doc1"は、処理依頼メールに添付されたID付き文書"Doc1"の管理IDである。操作種別は、処理依頼メールの送信を表す「処理依頼」に設定され、操作者は、文書管理サーバ10による処理を表す「sys」に設定され、操作日時は、処理依頼メールの送信が行われた日時に設定される。
処理依頼メールに添付されたID付き文書"Doc1"を受け取ったuserBは、自己のクライアント端末20において、処理依頼メールで依頼された操作「一次確認」を実行する。この操作は、例えば、クライアント端末20の文書操作部200を用いてID付き文書"Doc1"を表示させ、操作メニュー上で「一次確認として登録」をuserBが選択することで実現される。このとき、userBは、次の操作ユーザuserCと次の操作種別「一次承認」とを含む転送先情報を設定し、この転送先情報はID付き文書"Doc3"のログ情報に組み込まれる。userBによる「一次確認」操作の結果、クライアント端末20においてID付き文書"Doc3"が生成される。ID付き文書"Doc3"において、管理IDは"Doc3"、親IDは"Doc1"、操作種別は「一次確認」、操作者はuserBとなる。また、操作日時はuserBによる当該操作の日時となり、転送先情報は「userC,一次承認」となる。さらに、userBは、クライアント端末20のアクション設定処理部220を用いて、このID付き文書"Doc3"に関するアクションを設定する。ID付き文書"Doc3"及びこれに関するアクションの設定情報は、クライアント端末20から文書管理サーバ10に送信される。文書管理サーバ10において、ID付き文書"Doc3"は文書DB100及び派生関係DB110に登録され、アクションの設定情報はアクションテーブル120に登録される。
図15の例の表のアクション番号「5」のエントリは、userBによってID付き文書"Doc3"に関して設定されたアクションの情報を表す。アクション番号「5」のエントリのアクション起動条件、アクション内容、及びタイマ時間の各項目の値は、アクション番号「2」のエントリの対応する各項目の値と同様である。よって、アクション番号「2」に関して上述した処理の例と同様、ID付き文書"Doc3"及びアクション番号「5」のエントリの文書管理サーバ10への登録の後、すぐに(タイマの設定可能時間の最小時間の経過後)、ログ情報転送部154は、管理ID"Doc3"の転送先情報で指定された次の操作ユーザuserCの電子メールアドレスを宛先として、「一次承認」操作の実行を依頼する旨を含み、ID付き文書"Doc3"を添付した処理依頼メールを送信する。この処理依頼メールの送信に応じて、アクション履歴登録部156は、新たに生成した管理ID"Doc4"を管理IDの項目の値とし、処理依頼メールに添付したID付き文書"Doc3"の管理ID"Doc3"を親IDとするレコードを派生関係DB110に登録する。このレコードにおいて、操作種別及び操作者の各項目の値は、上述の管理ID"Doc2"のレコードと同様に、それぞれ、「処理依頼」及び「sys」に設定される。操作日時の値は、userCへの処理依頼メールの送信日時に設定される。
図13及び図14は、この時点での派生関係DB110のデータ内容の例を表す。
以下、図15の例のアクションテーブル120を用いたアクション実行部150の処理をより詳細に説明する。
図7の例のアクションテーブル120を参照して説明した例の処理では、文書管理サーバ10のアクション実行部150において、定期的に、あるいは、予め設定されたタイミングで、図8の例の手順の処理が実行され、起動条件評価部152によるアクション起動条件の評価が行なわれるのに対し、本例では、アクションテーブル120の各エントリについて、タイマ時間の項目で設定された時間が経過したときにアクション起動条件が評価される。
アクションテーブル120にエントリが登録されると、起動条件評価部152は、そのエントリのタイマ時間の項目で設定された時間を計測するタイマの作動を開始する。よって、本例では、アクションテーブル120の各エントリについてタイマが作動する。
アクションテーブル120のエントリについて作動しているタイマの計測時間が当該エントリのタイマ時間の項目で設定された時間を越えると、アクション実行部150において、当該エントリを処理対象として、図8の例の手順のステップS82〜ステップS88を実行する。すなわち、まず、起動条件評価部152が当該エントリのアクション起動条件を評価し(ステップS82)、アクション起動条件が満たされる場合(ステップS84でYes)は、ログ情報転送部154が当該エントリのアクション内容の処理を実行し(ステップS86)、アクション履歴登録部156がステップS86の処理の履歴を派生関係DB110に登録する(ステップS88)。アクション起動条件が満たされない場合(ステップS84でNo)は、アクション内容の処理を実行することなく当該エントリについての処理を終了する。
以下、図15の例の表のアクションテーブル120の各エントリのうち、すでに上記で説明したエントリ(アクション番号「2」及び「5」)以外のエントリ(アクション番号「1」,「3」,「4」)について、アクション実行部150による処理の具体例を述べる。
図15のアクション番号「1」のアクション起動条件は、当該エントリのアクションテーブル120への登録から、対応するタイマ時間「締切日時−現在日時−24時間」が経過すると、起動条件評価部152により評価される(ステップS82)。ここで、タイマ時間の設定の中の「締切日時」は、派生関係DB110で対応する管理ID"Doc1"に関連づけられた締切日時「2008-08-08 00:00:00」を表す。よって、管理ID"Doc1"に関連づけられた締切日時まで24時間となったときに、このアクション起動条件が評価されることになる。起動条件評価部152は、このアクション起動条件「管理IDのノードの子孫に操作種別「最終承認」のノードが存在しない」を、例えば、対応する管理ID"Doc1"を処理対象とし、「操作種別が「最終承認」である」という検索条件を設定して、図9及び図10を参照して説明した例の処理を実行することで評価する。図9の例の手順のステップS6で得られる検索結果が「検索結果なし」であれば、このアクション起動条件は満たされ、その検索結果で1以上のノードがあれば、このアクション起動条件は満たされない。このアクション起動条件が満たされる場合、締切日時まで24時間であるにもかかわらず、ID付き文書"Doc1"に関して「最終承認」操作が完了していないことを意味する。この場合、ログ情報転送部154は、アクション内容で設定されているように、「管理IDのノードの子孫の中で末端に位置するノードの転送先情報で指定されたユーザに締切通知メールを送信」する処理を実行する(ステップS84でYes,ステップS86)。「管理IDのノードの子孫の中で末端に位置するノード」とは、対応する管理IDのID付き文書"Doc1"から派生した文書のうち、最後にクライアント端末20で実行された操作に対応するID付き文書を表す。このようなID付き文書は、例えば、派生関係DB110において、まず管理ID"Doc1"を注目ノードとし、その子ノードのうち、注目ノードの転送先情報で指定された次の操作種別を有するノードがあれば、当該ノードを新たな注目ノードとし、注目ノードの転送先情報で指定された次の操作種別を有する子ノードをさらに検索する処理を繰り返すことで得られる。注目ノードの転送先情報で指定された操作種別の子ノードを注目ノードが有しない場合、この注目ノードを末端に位置するノードとする。派生関係DB110が図13の例のデータ内容を有する場合、管理ID"Doc3"のノードが末端のノードとして得られる。ログ情報転送部154は、この末端のノードの転送先情報で指定された次の操作ユーザuserCの電子メールアドレス宛に、対応する管理ID"Doc1"に関連づけられた締切日時を通知する締切通知メールを送信する。この締切通知メールの送信に応じて、アクション履歴登録部156は、この締切通知メールの送信の履歴に対応するレコード(図示しない)を派生関係DB110に登録する(ステップS88)。
図15の例のアクション番号「3」に関し、タイマ時間の項目に「24時間ごと」と設定されているので、起動条件評価部152は、当該エントリの登録から24時間経過するとアクション起動条件を評価し(ステップS82)、その後、さらに24時間経過する毎にアクション起動条件の評価を行う。アクション番号「3」のアクション起動条件「管理IDのノードの子孫に操作種別「最終承認」のノードが存在する」は、アクション番号「1」について上述したアクション起動条件評価処理と同様に、図9及び図10に例示する手順の処理により管理ID"Doc1"の子孫のうち操作種別「最終承認」のノードを検索することで評価される。検索結果として1以上のノードが得られた場合、アクション番号「3」のアクション起動条件は満たされ、検索結果なしの場合は満たされない。このアクション起動条件が満たされる場合(ステップS84でYes)、ログ情報転送部154は、アクション内容「操作種別「最終承認」のノードに対応する文書を管理IDのノードの操作者に送信」する処理を実行する(ステップS86)。例えば、上述の検索の結果として得られた操作種別「最終承認」のノードのメタ情報を派生関係DB110から取得し、文書内容を文書DB100から取得した上で、当該ノードに対応するID付き文書を生成し、このID付き文書を管理ID"Doc1"の操作者userAの電子メールアドレス宛に送信する。そして、この送信処理に対応する履歴が派生関係DB110に登録される(ステップS88)。
図15の例のアクション番号「4」については、当該エントリの登録からタイマ時間「締切日時−現在日時」だけ経過したときに、アクション起動条件「管理IDのノードの子孫に操作種別「最終承認」のノードが存在しない」が評価される(ステップS82)。このアクション起動条件は、上述のアクション番号「1」のアクション起動条件と同様であるので、この評価処理の詳細な説明は省略する。アクション番号「4」のアクション起動条件が満たされる場合、締切日時を経過したにもかかわらず、ID付き文書"Doc1"から派生した文書に対する「最終承認」が完了していないことを意味する。この場合、アクション内容「管理IDのノードの操作者に失敗通知メールを送信」する処理が実行される(ステップS84でYes,ステップS86)。例えば、ログ情報転送部154は、派生関係DB110から取得した管理ID"Doc1"のログ情報とともに、締切日時までに「最終承認」操作が実行されなかった旨を表す情報を含む失敗通知メールを管理ID"Doc1"の操作者userAの電子メールアドレス宛に送信する。アクション履歴登録部156は、この失敗通知メールの送信処理の履歴に対応するレコード(図示しない)を派生関係DB110に登録する。
以上、図13〜図15を参照して説明した例の処理によると、特定の文書について実行すべき一連の操作(及びその操作者)に従って、当該文書に対する操作が行われる。また、当該一連の操作のうちの最後の操作が締切日時までに実行されれば、その操作結果の文書が、新規登録された文書の操作者に対して送信される。一方、締切日時までに最後の操作が実行されなければ、その旨を表す失敗通知メールが新規登録された文書の操作者に対して送信される。なお、本例において、文書に対して実行すべき一連の操作のそれぞれを実行する各ユーザは、一連の操作の全体の流れを把握している必要はない。各ユーザは、自分が実行すべき操作の操作種別(処理依頼メールにより通知される)と、次に実行すべき操作の操作種別及びその操作者(例えば、当該文書に係る業務における自己の役割からわかる)と、を把握していればよい。
また、図13〜図15を参照する例において、処理依頼メールの送信後、予め設定した時間が経過しても、処理依頼メールの宛先のユーザが依頼された処理を実行しなかった場合に、再度処理依頼メールを送るようなアクションを設定してもよい。この場合のアクションテーブル120のエントリの例を図16に示す。図16を参照し、アクション番号「n」のエントリがアクションテーブル120に登録されてからタイマ時間「48時間」だけ経過すると、アクション起動条件「管理IDの子ノードの中に管理IDのノードの転送先情報で指定された操作種別のノードが存在しない」が評価される。このアクション起動条件の評価は、例えば、対応する管理ID"Doc1"の子ノードに該当する派生関係DB110のレコードのうち、管理ID"Doc1"の転送先情報で指定された「一次確認」を操作種別の項目の値として有するものがあるか否かを確認することで行われる。このアクション起動条件が満たされていれば、処理依頼メールの送信が行なわれる。図15の例のアクション番号「2」のエントリとともに、図16の例のアクション番号「n」のエントリをアクションテーブル120に登録しておくと、まず、各エントリの登録後すぐに(つまり、ID付き文書"Doc1"の登録後すぐに)アクション番号「2」のエントリのアクション内容に従って処理依頼メールの送信が実行され、さらに、48時間後、アクション番号「n」のアクション起動条件が評価されて、条件を満たす場合に処理依頼メールの再送信が行われる。
なお、図13〜図15を参照する例において、管理IDに関連づけられた転送先情報に従って、文書管理サーバ10に登録するID付き文書の操作種別及び操作者を制限してもよい。例えば、図13の管理ID"Doc1"の転送先情報「userB,一次確認」に従って、ID付き文書"Doc1"に対する操作の結果のID付き文書(つまり、"Doc1"を親IDとする文書)のうち、操作者がuserBであって操作種別が「一次確認」であるID付き文書のみを文書管理サーバ10に登録する。この場合、文書管理サーバ10の文書登録部130において、クライアント端末20からID付き文書300を受け取ると、その親IDと、ログ情報中の操作者及び操作種別と、を抽出する。そして、抽出した操作者及び操作種別と、抽出した親IDを管理IDとする派生関係DB110中のレコードの転送先情報で指定された操作者及び操作種別と、を比較し、両者が一致する場合にのみ、受け取ったID付き文書300について文書DB100及び派生関係DB110への登録を行う。両者が一致しない場合、文書管理サーバ10は、そのID付き文書300について文書DB100及び派生関係DB110への登録を行わない。クライアント端末20から受け取ったID付き文書300について文書DB100及び派生関係DB110への登録を行わない場合、文書管理サーバ10は、当該ID付き文書300の送信元のクライアント端末20に対して、当該ID付き文書300を文書管理サーバ10に登録しない旨を表す情報及び当該ID付き文書300の親IDに関連づけられた転送先情報の少なくとも一方を送信してもよい。親IDに関連づけられた転送先情報をクライアント端末20が受け取って表示装置に表示させると、ユーザに対し、本来実行すべきであった操作及びその操作者を提示することになる。
また、転送先情報に従って文書管理サーバ10に登録するID付き文書の操作者及び操作種別を制限する例において、上述のように文書管理サーバ10側で登録を制限する処理を行う代わりに、クライアント端末20側でその制限を行ってもよい。例えば、クライアント端末20において、操作対象のID付き文書のログ情報に含まれる転送先情報を抽出し、抽出した転送先情報で指定された操作者が当該ID付き文書に対する操作の実行を指示したユーザであり、かつ、このユーザが指示した操作種別と抽出した転送先情報で指定された操作種別とが一致する場合にのみ、その操作結果のID付き文書の生成及び文書管理サーバ10への送信を行う構成とする。
以上で説明した各種の実施形態の例のいずれにおいても、アクションテーブル120において、新規登録されたID付き文書又はこのID付き文書から派生したID付き文書に対応するアクション起動条件のうち、少なくとも1つは、対応する管理IDのノードの子孫に特定の条件を満たすノードが存在しないことを表す条件を含む。例えば、図7の例のアクション番号「1」、図15の例のアクション番号「1」及び「4」の各アクション起動条件は、対応する管理IDのノードの子孫の中で特定の操作種別のノードが存在しないことをアクション実行の条件の一部として含む。これは、ある文書に対して本来実行されるべき操作が実行されていない場合に、その操作を実行すべきユーザへその旨を通知するなどのアクションを行うためである。
以上に例示した例では、管理IDの発行は各クライアント端末20で行われていたが、この代わりに文書管理サーバ10が管理IDを発行してもよい。この場合、クライアント端末20は、ID付き文書に対して操作を行った場合、操作前のID付き文書内の管理IDを親ID314として含み、更にその操作についてのログ情報316と操作後の文書内容320とを含み、管理ID312は空欄の文書データを生成し、文書管理サーバ10に送る。文書管理サーバ10は、受け取った文書データに対して新たな管理IDを付与し、この管理IDとその文書データとに含まれる情報を、文書DB100及び派生関係DB110に登録する。また、文書管理サーバ10は、付与した管理IDを当該文書データにセットすることによりID付き文書を生成し、これをクライアント端末20に返す。クライアント端末20は、操作前のID付き文書を、受け取ったID付き文書に置き換える。このように、文書管理サーバ10が管理IDを付与する構成でも、上述の各例の処理は同様に実行できる。
また以上の例では、管理ID312、親ID314、ログ情報316、及び文書内容320を含んだID付き文書300がクライアント端末20に保存されたが、この代わりに、クライアント端末20は管理IDしか持たず、その他の情報は文書管理サーバ10に保存されるようにしてもよい。この場合、クライアント端末20で文書を操作する場合、その文書に対応する管理IDを文書管理サーバ10に送り、文書管理サーバ10からその文書を取得する。また、別の例として、クライアント端末20が保持するID付き文書300の中には管理ID312と文書内容320とが含まれ、親ID314及びログ情報316は含まれないようにしても良い。この場合、サーバがその管理ID312に対応づけて親ID314とログ情報316を持つようにすれば良い。
ここで、文書管理サーバ10が管理IDを付与する場合は、その取得の操作に対応する管理IDを文書管理サーバ10が生成し、その管理IDと文書とを対応づけてクライアント端末20に提供するとともに、その取得操作についてのログ情報(操作時刻や操作者など)と、元の管理ID(すなわち親ID)と、付与した管理IDとを派生関係DB110に記録する。クライアント端末20は、文書管理サーバ10に送信した管理IDを、受け取った管理IDに置き換えると共に、受け取った文書を開く。ユーザは、開かれた文書に対して閲覧や編集などの操作を行う。クライアント端末20は、文書に対する操作が完了すると、操作後の文書を管理ID及び当該操作についてのログ情報と共に文書管理サーバ10に送る。文書管理サーバ10は、受け取った文書に対して新たな管理IDを付与して派生関係DB110に登録し、受け取った管理IDを親IDとして派生関係DB110に登録する。また、受け取ったログ情報及び操作後の文書を、派生関係DB110及び文書DB100に登録する。そして、文書管理サーバ10は、新たに付与した管理IDをクライアント端末20に返す。クライアント端末20は、元の管理IDを受け取った管理IDで置き換える。以上のような処理により、操作間の派生関係が文書管理サーバ10に蓄積されることになる。
一方、クライアント端末20が管理IDを付与する構成の場合は、文書管理サーバ10は、クライアント端末20から受け取った管理IDに対応する文書をクライアントに返せばよい。クライアント端末20は受け取った文書を開き、ユーザがその文書を操作する。操作の完了後、クライアント端末20はその操作結果の文書に対して新たな管理IDを付与し、この管理IDを含んだ前述のID付き文書と同様の情報を、文書管理サーバ10に送る。そして、クライアント端末20は、そのID付き文書のうち管理IDのみを保存し、その他の情報を削除する。
以上に例示したシステムにおける文書管理サーバ10は、典型的には、汎用のコンピュータにて上述の文書管理サーバの各部の機能又は処理内容を記述したプログラムを実行することにより実現される。コンピュータは、例えば、ハードウエアとして、図17に示すように、CPU(中央演算装置)40、メモリ(一次記憶)42、各種I/O(入出力)インタフェース44等がバス46を介して接続された回路構成を有する。また、そのバス46に対し、例えばI/Oインタフェース44経由で、ハードディスクドライブ48やCDやDVD、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブ50が接続される。このようなドライブ48又は50は、メモリに対する外部記憶装置として機能する。実施形態の処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク経由で、ハードディスクドライブ48等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されCPUにより実行されることにより、実施形態の処理が実現される。クライアント端末20についても同様である。
10 文書管理サーバ、20 クライアント端末、30 ネットワーク、40 CPU、42 メモリ、44 I/Oインタフェース、46 バス、48 HDD、50 ディスクドライブ、100 文書DB、110 派生関係DB、120 アクションテーブル、130 文書登録部、132 派生関係登録部、140 アクション設定部、150 アクション実行部、160 要求処理部、200 文書操作部、210 登録処理部、220 アクション設定処理部、300 ID付き文書。