以下、本発明の実施の形態を図面を参照して説明する。図1は、本発明による文書ファイルコピー移動監視システムの構成の一例を示すブロック図である。図1に示すように、文書ファイルコピー移動監視システムは、アプリケーションソフトウェア1と、アプリケーション監視手段2と、文書操作推定手段3と、アプリケーション状態検出手段4と、文書コピー移動ログ記憶手段5とを含む。
アプリケーションソフトウェア(以下、単にアプリケーションともいう)1は、ワードプロセッサ等のファイルを読み込み編集するための一般ソフトウェアである。
アプリケーション監視手段2は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理端末のCPUによって実現される。アプリケーション監視手段2は、例えば「名前をつけて保存」コマンドがユーザ操作に従って実行された場合等、ユーザ操作に伴うアプリケーション1の動作を外部のプログラムから監視する機能を備える。アプリケーション状態検出手段4は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理端末のCPUによって実現される。アプリケーション状態検出手段4は、ウインドウに表示されているウインドウタイトルの文字列等にもとづいて、アプリケーション1の状態を検出する機能を備える。
文書操作推定手段3は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理端末のCPU及び記憶装置によって実現される。文書操作推定手段3は、アプリケーション監視手段2の監視結果を、アプリケーション状態検出手段4の検出機能を利用して解析することによって、そのアプリケーション1で読み込まれた文書ファイルに対してユーザのファイル操作が行われたか否かを推定する機能を備える。なお、「ファイル操作」とは、ファイルのコピー又は移動のための操作のことである。
文書コピー移動ログ記憶手段5は、具体的には、パーソナルコンピュータ等の情報処理端末の記憶装置によって実現される。文書コピー移動ログ記憶手段5は、文書操作推定手段3が推定したファイル操作の推定結果をログとして記憶する。
本実施の形態では、アプリケーション1をユーザが通常と変わらない方法で利用する。すると、コンピュータ上に常駐しているアプリケーション監視手段2は、アプリケーション1へのユーザ操作を監視し、この監視結果を随時文書操作推定手段3に通知する。監視結果の通知情報を受けると、文書操作推定手段3は、ユーザがどんなファイルを読み込み、それら読み込んだファイルをどのように切り替え、どうファイル操作をしたかを推定する。すなわち、文書操作推定手段3は、読み込んだファイルがどこからどこへコピー又は移動されたかを推定する。そして、文書操作推定手段3は、この推定結果を文書コピー移動ログ記憶手段5に記憶させるよう動作する。
図1に示す文書ファイルコピー移動監視システムの各構成要素の機能を説明する。アプリケーション1は、ユーザが利用する一般ソフトウェアである。アプリケーション1は、ファイルを読み込み編集して保存するという機能を有していれば、他に特殊な機能を有するソフトウェアでなくてもよい。本実施の形態では、アプリケーション1として、マイクロソフト株式会社のWindows用Microsoft Wordを用いる場合を例に説明する。ただし、これは説明のための一例であり、アプリケーション1として他のソフトウェアを用いてもよい。
なお、本実施の形態では、「アプリケーション1が保存する」等の表現を用いるが、実際には、情報処理端末のCPUがアプリケーション1に従って処理を実行する。このことは、他のソフトウェアやソフトウェアによって実現される手段についても同様である。
アプリケーション監視手段2は、ユーザのGUI操作を監視する操作イベント検出手段201と、ファイルシステムへのアクセスを監視するI/Oイベント検出手段202とを含む。操作イベント検出手段201は、アプリケーション1で発生している操作イベントを横取りする機能を備える。
操作イベントの横取りについて説明する。通常ユーザがアプリケーション1上で操作すると、オペレーティングシステム(以下、OSともいう)は、アプリケーション1に操作イベントを通知する。例えば、ユーザによってメニューが選択されると、OSは、メニュー操作イベントをアプリケーション1に通知する。アプリケーション1は、イベントが通知されると、この通知されたイベントを処理するルーチンへジャンプすることで、イベントドリブンプログラムを用いてユーザが選択した機能を起動することができる。
本実施の形態では、操作イベント検出手段201は、アプリケーション1で発生しているイベントを横取りする。すなわち、本実施の形態では、OSは、本来アプリケーション1に通知すべきイベントをそのアプリケーション1に通知するのではなく、操作イベント検出手段201に一旦通知する。操作イベント検出手段201は、この通知されたイベントを処理した後、アプリケーション1にイベントを転送することで、アプリケーション1を正常に動作させることができる。
なお、本実施の形態において、「イベントを横取りする」とは、イベントを一旦操作イベント検出手段201に転送し、操作イベント検出手段201が処理した後にアプリケーション1に転送することをいう。この方式は、一般的に「メッセージフック」と呼ばれ、Windows等のOSではAPIとして一般に提供されている。
なお、全てのAPI呼び出しをフックする必要はない。本実施の形態では、操作イベント検出手段201は、「文書ファイル読み込み」、「文書切り替え」及び「文書ファイル書き込み」に関する操作だけをフックすればよく、これら3つ以外のメッセージを無視する。本実施の形態では、操作イベント検出手段201は、このメッセージフックを利用して実現される。以下、操作イベント検出手段201がメッセージフックするイベントを「ユーザ操作イベント」という。すなわち、本実施の形態では、操作イベント検出手段201は、メッセージフックすることによって、ユーザ操作に伴うイベントであるユーザ操作イベントを検出する。
図2は、ユーザ操作イベントの一例を示す説明図である。図2に示すように、ユーザ操作イベントは、ウインドウクラスT020101と、操作シーケンスT020102と、ファイルダイアログパラメータT020103とを含む。
ウインドウクラス(T020101)は、アプリケーション1の種類に応じて割り与えられる識別子である。本実施の形態では、ウインドウクラス(T020101)は、ユーザが操作したウインドウのクラス名である。クラス名とは、アプリケーション1がウインドウ生成時につける固有の名前である。従って、ウインドウクラス(T020101)は、アプリケーション1毎に決定される。例えば、Microsoft Wordの場合、ウインドウクラス(T020101)は「OpusApp」となり、Microsoft Excelの場合、ウインドウクラス(T020101)は「XLMAIN」となる。
操作シーケンス(T020102)は、ユーザの操作に伴う一連の操作の流れを示す情報である。例えば、ユーザ操作イベントは、操作シーケンス(T020102)として、「メニュー→ファイル→開く」等を含む。ただし、本実施の形態では、分かりやすくするためにメニューのラベル名で表記する場合を説明するが、実際にWindowsを用いる場合には、各メニューに「bods_sdm_Mso96」等のコード名が割り当てられている。この場合、ユーザ操作イベントは、操作シーケンス(T020102)としてコード名を含む。
ファイルダイアログパラメータ(T020103)は、ダイアログボックスを用いたユーザ操作によって入力されたデータであり、ダイアログボックス等でユーザが入力又は選択したパラメータである。例えば、ダイアログボックスでファイルを選択した場合には、ファイルダイアログパラメータ(T020103)によってファイル名等の情報が通知される。例えば、ファイルダイアログパラメータ(T020103)によって「(ファイル名=AAA);(文字コード=EUC)」といったパラメータの集合が通知される。なお、本実施の形態では、図2に示すように、各パラメータを「;」で接続して表現し、各パラメータを(「キー」=「値」)の形式で表現している。
I/Oイベント検出手段202は、アプリケーション1で発生しているファイルアクセスイベントを横取りする機能を備える。すなわち、I/Oイベント検出手段202は、ファイルシステムへのアクセスに伴うイベントであるファイルアクセスイベントを検出する。I/Oイベント検出手段202は、「APIフック」と呼ばれるWindows等のOSに標準に備わっている機能で実装することができる。「APIフック」とは、前述したメッセージフックと似た機能であり、アプリケーション1がOSのAPIの呼び出し命令を横取りする機能である。
I/Oイベント検出手段202は、ファイルオープン/クローズAPI、ファイル読み込み/書き込みAPIをフックすることで、どのアプリケーション1がどのファイルにアクセスしたかの通知を受けることができる。以下、どのアプリケーション1がどのファイルへアクセスしたかの通知情報を「ファイルアクセスイベント集合」という。
図3は、ファイルアクセスイベント集合の一例を示す説明図である。図3に示すように、ファイルアクセスイベント集合は、実行ファイル名T020201と、ファイルアクセスモードT020202と、ファイルフルパス名T020203とを含む。
実行ファイル名(T020201)は、アプリケーション1の実行ファイル名である。例えば、ファイルアクセスイベント集合は、実行ファイル名T020201として「WORD.EXE」等を含む。
ファイルアクセスモード(T020202)は、読み込みモード又は書き込みモードのうちのいずれのアクセスモードであるかを示す情報である。すなわち、ファイルアクセスモード(T020202)は、ファイルアクセスの目的がデータの読み込みであるか、データの書き出しであるかを示す。通常、ファイルシステムにアクセスされる場合、読み込みモードでアクセスする場合と書き込みモードでアクセスする場合とがある。本実施の形態では、ファイルアクセスモード(T020202)によって、どちらのモードでアクセスしているかが通知される。なお、本実施の形態では、図3に示すように、読み込みモードを「READ」と表記し、書き込みモードを「WRITE」と表記する場合の例を示す。
ファイルフルパス名(T020203)は、アクセスしている処理対象のファイルのフルパス名である。例えば、ファイルアクセスイベント集合は、ファイルフルパス名(T020203)として「C:¥Doc¥AAA.DOC」等を含む。
文書操作推定手段3は、操作イベント検出手段201のイベント検出結果とI/Oイベント検出手段202のイベント検出結果とにもとづいて、ユーザ操作とファイルシステムの動作との整合性があるか否かを判断する。文書操作推定手段3は、イベント処理全体制御手段301と、アクティブ文書判定手段302と、アクティブ文書記憶手段303と、状況解析手段304と、編集文書管理手段305と、編集文書記憶手段306と、文書コピー移動ログ生成手段307とを含む。
イベント処理全体制御手段301は、文書操作推定手段3が行うアプリケーション監視手段2の監視結果の解析処理全体を制御する機能を備える。状況解析手段304は、I/Oイベント検出手段202からのファイルパス名と、操作イベント検出手段201からのファイル名との関係をマッチング(照合)する機能を備える。すなわち、状況解析手段304は、I/Oイベント検出手段202が検出結果として出力するファイル情報と、操作イベント検出手段201が検出結果として出力するファイル情報とを照合する。
編集文書管理手段305は、アプリケーション1で読み込まれたファイルと、ファイルを読み込んだことによるアプリケーション1の状態の変化(例えば、ウインドウタイトルの文字列の変化)とを対応づける機能を備える。本実施の形態では、編集文書管理手段305は、アプリケーション1で読み込まれたファイルと、アプリケーション1の状態の変化とを対応づけた対応情報を生成する。そして、編集文書管理手段305は、生成した対応情報を編集文書記憶手段306に記憶させる。
編集文書記憶手段306は、編集文書管理手段305が生成したファイルとアプリケーション1の状態との対応関係を記憶する。本実施の形態では、編集文書記憶手段306は、編集文書管理手段305が生成した対応情報を記憶する。
アクティブ文書判定手段302は、読み込んだ複数ファイルの中から現在フォーカスがあたっている文書(操作対象となっているアクティブドキュメント)を検出する機能を備える。すなわち、アクティブ文書判定手段302は、アプリケーション1で読み込まれた複数ファイルの中から、アクティブ状態となっている文書ファイルを検出する。なお、本実施の形態では、ファイル等が操作対象となっていることをフォーカスがあたっているとも表現する。アクティブ文書記憶手段303は、アクティブ文書判定手段302の検出結果を記憶する。
文書コピー移動ログ生成手段307は、ファイルが書き込まれた場合に、アプリケーション監視手段2から通知(出力)されるイベントと状況解析手段304の照合結果とにもとづいて、どのファイルの内容がどのファイルに書き込まれたかを推定する機能を備える。また、文書コピー移動ログ生成手段307は、どのファイルに書き込まれたかの推定結果をログとして生成する機能を備える。
イベント処理全体制御手段301は、文書操作推定手段3全体を制御する。イベント処理全体制御手段301の制御対象となる処理は、以下に示す「文書読み込み処理」、「文書切り替え処理」及び「文書書き込み処理」の3種類の処理に大きく分類される。
「文書読み込み処理」は、ユーザ操作に従って、アプリケーション1で文書ファイルを読み込む際の処理である。「文書切り替え処理」は、ユーザ操作に従ってアプリケーション1で複数の文書を読み込んでおり、それら複数文書を切り替える際の処理である。「文書書き込み処理」は、ユーザ操作に従って、アプリケーション1で文書ファイルを書き込む際の処理である。
また、イベント処理全体制御手段301は、操作イベント検出手段201からのイベントの種類にもとづいて処理をディスパッチする。本実施の形態では、イベント処理全体制御手段301は、例えば、処理をディスパッチするための知識テーブルを予め記憶する。イベント処理全体制御手段301は、イベントの種類が「文書読み込み処理」の場合、知識テーブルにもとづいて、編集文書管理手段305に処理を実行させる。また、イベント処理全体制御手段301は、イベントの種類が「文書切り替え処理」の場合、アクティブ文書判定手段302に処理を実行させる。また、イベント処理全体制御手段301は、イベントの種類が「文書書き込み処理」の場合、文書コピー移動ログ生成手段307に処理を実行させる。
図4は、処理をディスパッチするための知識テーブルの一例を示す説明図である。図4に示すように、知識テーブルは、操作シーケンスT030101と操作種類T030102とを含む。操作シーケンス(T030101)は、ユーザ操作イベントの操作シーケンスフィールドの値と同様に、ユーザの操作に伴う一連の操作の流れを示す情報である。操作種類(T030102)は、「文書読み込み処理」、「文書切り替え処理」又は「文書書き込み処理」のいずれかの値を示す情報である。
図4に示す例では、例えば、知識テーブルの1行目は、「メニュー→ファイル→開く」という操作シーケンスのイベントが発生すると、イベントの種類が「文書読み込み処理」であることを意味する。この場合、イベント処理全体制御手段301は、編集文書管理手段0305に処理をディスパッチする。なお、処理をディスパッチする動作については、後述する動作の説明においてフローチャートを用いて説明する。
編集文書管理手段305は、ユーザ操作に従ってアプリケーション1でファイルが読み込まれた際にイベント処理全体制御手段301から呼び出される。例えば、ユーザがMicrosoft Wordのメニューから「開く」を選択して文書を読み込む操作をした場合に、イベント処理全体制御手段301は、「開く」が選択されたというユーザ操作イベントと、文書読み込みのファイルアクセスイベントとを編集文書管理手段305に通知する。
ユーザ操作イベントとファイルアクセスイベントとの通知を受けると、編集文書管理手段305は、以下に示す3つの処理を行う。(1)編集文書管理手段305は、各アプリケーション1毎に開いているファイルの一覧を作成する。(2)また、編集文書管理手段305は、開いているファイルをアクティブにした際のアプリケーション1の状態変化を検出する。なお、編集文書管理手段305は、アプリケーション1の状態変化として、ウインドウタイトル等アクティブな文書を切り替える際に変化があるGUI部品の変化を検出すればよい。本実施の形態では、編集文書管理手段305は、ウインドウタイトルの文字列の変化を検出する場合を説明する。
(3)また、編集文書管理手段305は、処理(1)で作成した一覧や処理(2)で検出したアプリケーション1の状態変化等の処理結果を記憶させる。なお、編集文書管理手段305は処理(1)から処理(3)までの機能を実現するための制御部であり、具体的には、処理(1)は、編集文書管理手段305の指示に従って状況解析手段304によって実行される。また、処理(2)は、編集文書管理手段305の指示に従ってアプリケーション状態検出手段4によって実行される。また、処理(3)は、編集文書管理手段305によって、編集文書記憶手段306に処理結果が記憶される。また、編集文書管理手段305が行う詳細な処理の流れについては、後述する動作の説明において説明する。
状況解析手段304は、I/Oイベント検出手段202からのファイルパス名と、操作イベント検出手段201からのファイル名とをマッチング(照合)して整合性をとる。
通常ユーザがファイル操作を行うと、アプリケーション1は、操作対象ファイル以外の多くのファイルにアクセスする。例えば、図3は、ユーザがアプリケーション1「Micorosoft Word」の「WORD.EXE」で、「AAA.DOC」というファイルを開く操作をした場合を示している。図3に示す例では、一行目は、アプリケーション1が標準のテンプレートファイル「Normal.dot」を読み込んでいることを示している。また、二行目は、別のアプリケーション「Hidemaru.exe」が書き込みをしていることを示している。また、三行目は、ユーザによって指定されたファイルを「WORD.EXE」のメモリに読み込んでいることを示している。また、四行目は、アプリケーション1が、読み込んだファイルのバックアップをテンポラリファイルに書き出していることを示している。また、五行目は、テンポラリファイルを「WORD.EXE」のメモリに読み込んでいることを示している。
図3に示すように、状況解析手段304は、一般にI/Oイベント検出手段202から複数の情報を通知される。
一方、操作イベント検出手段201からの通知については、ファイルのフルパス名が通知されるとは限らない。例えば、図2に示す例では、ファイル読み込みダイアログを用いてファイルを開いた場合、読み込みファイル名が操作イベント検出手段201から状況解析手段304に通知されるが、そのファイルのパス名は通知されない。図2で示す例のように、操作イベント検出手段201から状況解析手段304に通知される情報は、ファイルに関する情報が不完全である場合がある。
以上説明したように、操作イベント検出手段201から通知される情報は不完全である場合があるので、状況解析手段304は、I/Oイベント検出手段202からのファイルパス名と、操作イベント検出手段201からのファイル名との整合性をとる必要がある。この整合性をとる動作は、所定の選択基準に従って、ユーザ操作イベントと最も関連のあるイベントを、ファイルアクセスイベント集合の中から選択することによって実現される。
本実施の形態では、状況解析手段304は、整合性をとるための選択基準として、以下に示す3つの基準(基準1〜基準3)を用いる。基準1は、同じアプリケーション1であることという基準である。すなわち、状況解析手段304は、ユーザ操作イベントのウインドウクラスとファイルアクセスイベントの実行ファイル名とをマッチングさせ、アプリケーション1が同じであるか否かを判断する。そして、同じであると判断すると、状況解析手段304は、基準1を満たすと判断する。
例えば、状況解析手段304は、ウインドウクラスと実行ファイルとを対応づけた対応テーブル(対応表)を予め記憶し、対応テーブルにもとづいてアプリケーション1が同じであるか否かを判断する。すなわち、状況解析手段304は、対応テーブルにもとづいて、ユーザ操作イベントとファイルアクセスイベントとの整合性があるか否かを判断する。
図5は、予め記憶する対応テーブルの一例を示す説明図である。図5に示す例では、ウインドウクラス「OpusApp」のアプリケーションと、実行ファイル「WORD.EXE」のアプリケーションとは、同じアプリケーション1であることを示している。
基準2は、ユーザの操作に対応したファイルアクセスのモードであることという基準である。一般に、ユーザ操作の種類毎に、ファイルへのアクセスのモードが決定される。例えば、「読み込み」操作はREADモードであり、「名前をつけて保存」操作はWRITEモードである。
例えば、状況解析手段304は、ユーザの操作とファイルアクセスモードとを対応づけた対応テーブル(対応表)を予め記憶している。そして、状況解析手段304は、対応テーブルにもとづいて、ユーザ操作に対応したファイルアクセスのモードであるか否かを判断し、基準2を満たすか否かを判断する。そして、状況解析手段304は、対応テーブルにもとづいて、I/Oイベント検出手段202が検出したファイルアクセスイベント集合に含まれるイベントを絞り込む。状況解析手段304は、例えば、図6に示すように、ユーザ操作の操作シーケンスとファイルアクセスモードとを対応づけた対応テーブルを記憶している。
基準3は、ファイル名が似ていることという基準である。状況解析手段304は、ファイルアクセスイベントのファイルフルパス名の中のファイル名の文字列と、ユーザ操作イベントのパラメータのファイル名の値とをマッチングさせて評価し、基準3を満たすか否かを判断する。この場合、状況解析手段304は、以下の3種類の基準(基準3−1〜基準3−3)で判断し、評価結果を求める。
基準3−1は、ファイル名及び拡張子が全く同じであるという基準である。状況解析手段304は、基準3−1を満たす場合、最も似ていると判断する。基準3−2は、ファイル名が同じであるが、拡張子がなく拡張子のマッチング不可能であるという基準である。状況解析手段304は、基準3−2を満たす場合、基準3−1の次に似ていると判断する。基準3−3は、ファイル名及び拡張子が異なるという基準である。状況解析手段304は、基準3−3に該当する場合、ファイル名が異なると判断する。なお、状況解析手段304がこれらの基準1〜基準3や基準3−1〜基準3−3を利用して行う処理の流れについては、後述する動作の説明において説明する。
編集文書記憶手段306は、編集文書管理手段305の処理結果を記憶する。図7は、編集文書記憶手段306が記憶する情報のフィールドの一例を示す説明図である。図7に示すように、編集文書記憶手段306は、ウインドウクラスT030601と、ファイルフルパス名T030602と、アクティブアプリケーション状態T030603とを対応づけて記憶する。
ウインドウクラス(T030601)は、前述したユーザ操作イベントのウインドウクラス(T020101)と同様に、アプリケーション毎に割り振られた名前である。ファイルフルパス名(T030602)は、読み込んだファイルのフルパス名である。本実施の形態では、ファイルフルパス名(T030602)は、文書の状態が現在フォーカスがあたっている「アクティブ文書」であるか、読み込んでいるがフォーカスがあたっていない「バックグランド文書」であるかのいずれかの値である。アクティブアプリケーション状態(T030603)は、この読み込んだ文書がアクティブに切り替わった際のあるGUI部品の値である。例えば、アクティブアプリケーション状態(T030603)は、ウインドウタイトル等である。
編集文書管理手段305が編集文書記憶手段306に処理結果を記憶させる手順について説明する。図8は、編集文書管理手段305の処理結果の記憶方法の処理手順の一例を示す流れ図である。編集文書管理手段305は、ファイルとアプリケーション1の状態変化との対応付けの処理を行うと、編集文書記憶手段306にレコードを1つ追加させる(ステップS30601)。編集文書管理手段305は、状況解析手段304の処理結果にもとづいて、ウインドウクラス(T030601)及びファイルフルパス名(T030602)を、ステップS30601で追加したレコードにセット(格納)する(ステップS30602)。
編集文書管理手段305は、アプリケーション状態検出手段4に現在のウインドウタイトルを問い合わせる。そして、編集文書管理手段305は、アプリケーション状態検出手段4からのウインドウタイトルの値(文字列)を、追加したレコードのアクティブアプリケーション状態(T030603)にセット(格納)する(ステップS30603)。通常文書を読み込んだ際には読み込んだ文書にフォーカスがあてられるので、編集文書管理手段305は、文書の状態をアクティブ文書記憶手段303にセット(格納)する(ステップS30604)。なお、編集文書管理手段305は、アクティブ文書判定手段302にウインドウハンドル及びファイルフルパス名を通知することで、アクティブ文書判定手段302を介して文書の状態をセットする。この文書状態のセットの処理については後述する。
アクティブ文書判定手段302は、ユーザによって文書の切り替え操作が行われる際に、イベント処理全体制御手段301から呼び出される。この呼び出しの際に、イベント処理全体制御手段301は、ユーザ操作によって文書を切り替えられたアプリケーション1のウインドウクラスをアクティブ文書判定手段302に通知する。すると、アクティブ文書判定手段302は、以下に示す3ステップの処理を実行し、アクティブ文書を判定する。
図9は、アクティブ文書判定手段302がアクティブ文書を判定する処理手順の一例を示す流れ図である。アクティブ文書判定手段302は、イベント処理全体制御手段301からのウインドウクラスをキーとして、アプリケーション1の状態の変化をアプリケーション状態検出手段4に問い合わせる。そして、イベント処理全体制御手段301は、アプリケーション状態検出手段4からウインドウタイトルを受け取る(ステップS30201)。
アクティブ文書判定手段302は、ウインドウタイトルの値をキーとして、編集文書記憶手段306のアクティブアプリケーション状態フィールド(T030603)を検索する(ステップS30202)。なお、ユーザが文書をアクティブに切り替える操作をした場合、その切り替え対象の文書は既にアプリケーション1に読み込まれているはずであり、編集文書記憶手段306に既に登録されているはずである。従って、ステップS30202において、アクティブ文書判定手段302は、編集文書記憶手段306を検索すると、条件に合致するレコードを必ず1つ見つけて抽出する。
アクティブ文書判定手段302は、検索の結果抽出したレコードのファイルフルパス名(T030602)を、アクティブ文書としてアクティブ文書記憶手段303に一時記憶させる(ステップS30203)。以下、アクティブ文書判定手段302は、アクティブ文書のアクティブ文書記憶手段303への登録処理を実行する。
図10は、アクティブ文書記憶手段303が所定のスキーマに従って記憶する情報の一例を示す説明図である。図10に示すように、アクティブ文書記憶手段303は、ウインドウクラスT030301とファイルフルパス名T030302とを対応づけて記憶する。ウインドウクラス(T030301)は、イベント処理全体制御手段301から通知されたウインドウクラスである。ここでは、ウインドウクラス(T030301)は、文書の切り替えを行ったアプリケーション1の種類を表すことになる。ファイルフルパス名(T030302)は、編集文書記憶手段306の検索の結果抽出したレコードのファイルフルパス名である。
アクティブ文書判定手段302は、以下の4ステップの処理を実行し、アクティブ文書をアクティブ文書記憶手段303に記憶させる。図11は、アクティブ文書のアクティブ文書記憶手段303への登録処理の一例を示す流れ図である。
アクティブ文書判定手段302は、イベント処理全体制御手段301から通知されたウインドウクラスの値をキーとして、編集文書記憶手段306のウインドウクラスフィールド(T030301)を検索する(ステップS30301)。そして、アクティブ文書判定手段302は、合致するウインドウクラスがあるか否かを判断する(ステップS30302)。合致するウインドウクラスが見つかった場合には、アクティブ文書判定手段302は、ステップS30303に進み処理を実行する。合致するウインドウクラスが見つからなかった場合には、アクティブ文書判定手段302は、ステップS30304に進み処理を実行する。
合致するウインドウクラスがあると判断すると、アクティブ文書判定手段302は、このウインドウクラスが合致したレコードのファイルフルパス名の値を更新する(ステップS30303)。合致するウインドウクラスがないと判断すると、アクティブ文書判定手段302は、新たにレコードを追加し、追加したレコードにウインドウクラス及びファイルフルパス名をセット(格納)する(ステップS30304)。
文書コピー移動ログ生成手段307は、ユーザが「文書書き込み処理」の操作を行った際に、イベント処理全体制御手段301から呼び出される。この呼び出しの際、イベント処理全体制御手段301は、ユーザ操作イベントとファイルアクセスイベント集合とを、文書コピー移動ログ生成手段307に通知する。このイベント処理全体制御手段301からの通知を受けて、文書コピー移動ログ生成手段307は、文書のコピー移動ログを生成する。この場合、文書コピー移動ログ生成手段307は、ウインドウクラス、コピー元ファイルフルパス名及びコピー先ファイルフルパス名の項目を含むログを生成する。
なお、コピー移動ログに含まれるウインドウクラスは、コピーしたアプリケーション1を示すことになる。また、コピー元ファイルフルパス名は、アプリケーション1で読み込んだファイル名を示す。また、コピー先ファイルフルパス名は、文書書き込み操作によるファイル書き込み先のファイル名を示す。
文書コピー移動ログ生成手段307は、以下に示す方法で、生成したコピー移動ログの値を文書コピー移動ログ記憶手段5に登録する。まず、文書コピー移動ログ生成手段307は、ウインドウクラスについて、ユーザ操作イベントのウインドウクラスの値をログとして設定する。
コピー元ファイルフルパス名は、このユーザ操作を伴ったアプリケーション1のアクティブドキュメントのコピー元ファイルのパス名である。文書コピー移動ログ生成手段307は、ウインドウハンドルをキーとしてアクティブ文書記憶手段303を検索することによって、ファイルフルパス名を得る。そして、文書コピー移動ログ生成手段307は、検索して得たファイルフルパス名をコピー元ファイルパス名として設定する。
コピー先ファイルフルパス名は、この操作に伴うイベントで対象となっているファイルのコピー先ファイルのパス名である。文書コピー移動ログ生成手段307は、ユーザ操作イベント及びファイルアクセスイベント集合を状況解析手段306に転送してファイルフルパス名を特定し、この特定した値をコピー先ファイルフルパス名とする。
アプリケーション状態検出手段4は、アクティブ文書を切り替えると、その切り替えに応じて変化するGUI部品を検出する。例えば、Windowsに限らず、殆どのウインドウシステムでは、ウインドウで読み込んでいる文書に応じてタイトルバーのテキスト(ウインドウタイトル)が変化する。このウインドウタイトルの値は、OS標準のAPIを用いて取得することができる。この場合、例えば、アプリケーション状態検出手段4は、ウインドウクラスをパラメータとしてウインドウタイトルを取得し、取得したウインドウタイトルをアプリケーション状態として扱えばよい。
なお、本実施の形態で示すアプリケーション状態の取得方式は一例であり、例えばウインドウの下のステータスバーの値をアプリケーション状態として用いる等、他の取得方法を用いてもよい。
文書コピー移動ログ記憶手段5は、コピー移動ログを記憶するデータベースである。図12は、文書コピー移動ログ記憶手段5が所定のスキーマに従って記憶する情報の一例を示す説明図である。図12に示すように、文書コピー移動ログ記憶手段5は、ウインドウクラスT0501と、コピー元ファイルフルパス名T0502と、コピー先ファイルフルパス名T0503とを対応づけて記憶する。ウインドウクラス(T0501)は、ユーザがコピー操作したアプリケーション1のウインドウクラスである。コピー元ファイルフルパス名(T0502)は、アプリケーション1で読み込んだファイルのファイル名である。コピー先ファイルフルパス名(T0503)は、文書書き込み操作によるファイル書き込み先のファイル名である。
なお、本実施の形態において、文書ファイルコピー移動監視システムの記憶装置(図示せず)は、文書ファイルのコピー及び移動を監視する処理を実行させるための各種プログラムを記憶している。例えば、文書ファイルコピー移動監視システムの記憶装置は、コンピュータに、ユーザ操作に伴うアプリケーションソフトウェアの動作を監視するアプリケーション監視処理と、アプリケーションソフトウェアの状態を検出するアプリケーション状態検出処理と、アプリケーション監視処理の監視結果を、アプリケーション状態検出処理を利用して解析することによって、アプリケーションソフトウェアで読み込まれた文書ファイルに対して、ファイルのコピー又は移動のための操作であるファイル操作が行われたか否かを推定する文書操作推定処理と、文書操作推定処理のファイル操作の推定結果を、ログデータとして記憶装置に記憶させる文書コピー移動ログ記憶処理とを実行させるための文書ファイルコピー移動監視プログラムを記憶している。
次に、フローチャートを参照して、本実施の形態の全体の動作について説明する。図13は、文書ファイルコピー移動監視システムが行う全体処理の一例を示す流れ図である。ユーザは、情報処理端末を操作して、Microsoft Word等のアプリケーション1を用いて文書の編集等を行う(ステップS1)。
ユーザがアプリケーション1を利用している間、アプリケーション監視手段2は、アプリケーション1で発生したイベントをフックする(ステップS2)。この場合、操作イベント検出手段201がユーザのアプリケーション操作のイベントを、I/Oイベント検出手段202がファイルアクセスのイベントを、それぞれフックする。
また、文書操作推定手段3は、ステップS2でアプリケーション監視手段2がフックしたイベントを解析する(ステップS3)。この場合、文書操作推定手段3のイベント処理全体制御手段301は、ユーザ操作イベントの操作シーケンス及び図4に示す知識テーブルを用いて、ユーザの操作とファイルシステムの動作との整合性があるかマッチング(照合)し、ユーザの操作種類を特定する。
イベント処理全体制御手段301は、ユーザの操作種類を特定できたか否かを判断する(ステップS4)。本実施の形態では、イベント処理全体制御手段301は、対応する操作種類が対応テーブルに存在するか否かを判断する。対応する操作種類が知識テーブルに存在しないと判断すると、文書ファイルコピー移動監視システムは、特にファイルのコピー移動の監視処理を行う必要がないと判断し、ステップS1に戻り以降の処理を繰り返し実行する。知識テーブルに存在すると判断すると、文書ファイルコピー移動監視システムは、ステップ5に進み処理を実行する。
文書操作推定手段3は、特定したユーザの操作の種類に応じて処理を実行する(ステップS5)。この場合、文書操作推定手段3は、操作の種類に応じて以下の3種類の処理を行う。特定した操作種類が「文書読み込み操作」である場合、文書操作推定手段3は、イベントを解析することで読み込んだファイルのファイル名を特定し、各アプリケーション1毎に読み込んだファイルリストを作成する。また、文書操作推定手段3は、この処理結果であるファイルリストを編集文書記憶手段306に記憶する。
特定した操作種類が「文書切り替え操作」である場合、文書操作推定手段3は、イベントを解析することで各アプリケーション1毎にアクティブ文書を特定する。この特定処理では、アプリケーション状態検出手段4がウインドウタイトル等文書の切り替えに応じて変化するGUIの部品の値を検出し、文書操作推定手段3は、このアプリケーション状態検出手段4が特定した値にもとづいてアクティブな文書を特定する。また、文書操作推定手段3は、この特定結果をアクティブ文書記憶手段303に記憶する。
特定した操作種類が「文書書き込み操作」である場合、文書操作推定手段3は、イベントを解析することでユーザが行ったコピー操作をログに残す。この場合、文書操作推定手段3は、コピー元のファイルのフルパス名をアクティ文書記憶手段303から抽出する。また、文書操作推定手段3の状況解析手段304は、コピー先のファイルのフルパス名を、イベントにもとづいて算出する。また、文書操作推定手段3の文書コピー移動ログ生成手段307は、コピー移動ログを作成し、文書コピー移動ログ記憶手段5に蓄積させる。
ステップS5で操作種類に応じた処理を終了すると、文書ファイルコピー移動監視システムは、ステップS1に戻り以降の処理を繰り返し実行する。
以上のように、文書ファイルコピー移動システムは、一旦起動されるとマシンを終了させるまで常駐し続け、ファイルのコピーや移動の監視を行う。以下、ステップS5における文書読み込み処理、文書切り替え処理及び文書書き込み処理の動作について、3つの場合に分けて説明する。
図14は、文書読み込み処理の一例を示す流れ図である。図14に示す文書読み込み処理では、編集文書管理手段305がメイン制御部となり、編集文書管理手段305は、状況解析手段304、アプリケーション状態検出手段4及び編集文書記憶手段306を用いて、以下に示すステップの処理を実行する。
イベント処理全体制御手段301は、編集文書管理手段305にユーザ操作イベントとファイルアクセスイベント集合とを渡し(ステップS101)、文書読み込み処理を開始させる。また、編集文書管理手段305は、ステップS1で受け取ったユーザ操作イベントとファイルアクセスイベント集合とを状況解析手段304に渡し(ステップS102)、ユーザ操作イベントと関連のあるイベントをファイルアクセスイベント集合の中から検索する処理を開始させる。
まず、状況解析手段304は、基準1に従って、ファイルアクセスイベント集合の中のイベントを絞り込む(ステップS103)。すなわち、状況解析手段304は、ユーザ操作イベントが発生したアプリケーション1に関するイベントのみに、ファイルアクセスイベント集合を絞り込む。
状況解析手段304は、絞り込んだ結果、ファイルアクセスイベント集合が空集合になったか否かを判断する(ステップS104)。絞り込んだ結果、ファイルアクセスイベント集合が空集合になった場合、ユーザが操作をしたが途中でキャンセル操作したり、なんらかのエラーで処理が正常に終了しなかった場合であるので、状況解析手段304は、そのまま処理を終了する。ファイルアクセスイベント集合が空集合にならなかった場合、状況解析手段304は、ステップ105へ進み処理を実行する。
状況解析手段304は、基準2に従って、ファイルアクセスイベント集合の中のイベントを絞り込む(ステップS105)。文書読み込み処理の場合、ファイルのアクセスモードはREADモードである。そのため、状況解析手段304は、ファイルアクセスイベント集合をREADモードのイベントだけに絞り込む。
状況解析手段304は、絞り込んだ結果、ファイルアクセスイベント集合が空集合になったか否かを判断する(ステップS106)。絞り込んだ結果、ファイルアクセスイベント集合が空集合になった場合、ユーザが操作をしたが途中でキャンセル操作したり、なんらかのエラーで処理が正常に終了しなかった場合であるので、状況解析手段304は、そのまま処理を終了する。ファイルアクセスイベント集合が空集合にならなかった場合、状況解析手段304は、ステップS107へ進み処理を実行する。
状況解析手段304は、基準3−3に従って、ファイルアクセスイベント集合の中のイベントを絞り込む(ステップS107)。すなわち、状況解析手段304は、ファイル名及び拡張子が全く異なるイベントを、ファイルアクセスイベント集合から削除する。
状況解析手段304は、絞り込んだ結果、ファイルアクセスイベント集合が空集合になったか否かを判断する(ステップS108)。絞り込んだ結果、ファイルアクセスイベント集合が空集合になった場合、ユーザが操作をしたが途中でキャンセル操作したり、なんらかのエラーで処理が正常に終了しなかった場合であるので、状況解析手段304は、そのまま処理を終了する。ファイルアクセスイベント集合が空集合にならなかった場合、状況解析手段304は、ステップS109へ進み処理を実行する。
状況解析手段304は、基準3−1に従って、ファイルアクセスイベント集合の中のイベントを絞り込む(ステップS109)。すなわち、状況解析手段304は、ファイル名が全く同じイベントだけになるように、ファイルアクセスイベント集合を絞り込む。
状況解析手段304は、絞り込んだ結果、ファイルアクセスイベント集合が空集合になったか否かを判断する(ステップS110)。絞り込んだ結果、ファイルアクセスイベント集合が空集合になった場合、状況解析手段304は、ステップS111へ進み処理を実行する。
空集合にならなかった場合、そのファイルアクセスイベント集合に含まれるイベントに対応するファイルがユーザの操作対象ファイルのフルパス名である。複数のイベントが存在した場合、それら複数イベントに対応するフルパス名が同じであれば、状況解析手段304は、そのフルパス名のファイルをユーザ操作対象ファイルと判断する。
フルパス名が異なるイベントがファイルアクセスイベント集合に複数残る場合、アプリケーション1が対象ファイルを読み込み、読み込んだファイルを用いて、別のディレクトリにテンポラリファイル等を作成した場合である。従って、状況解析手段304は、最初の(時間的に最も古い)イベントのフルパス名で示されるファイルをユーザ対象ファイルと判断する。ただし、この判断方法は、必ずしも正しいとは限らない。例えば、あるアプリケーション1のある機能では、時間的に新しい方のイベントがユーザ対象ファイルのイベントである場合がある。従って、より厳密に判断するために、状況解析手段304は、アプリケーション名やユーザ操作シーケンスに対して、どの順のイベントをユーザ対象ファイルのイベントであると判断するかを示す知識テーブルをもつことが望ましい。この場合、状況解析手段304は、知識テーブルにもとづいて、何番目のイベントがユーザ操作対象ファイルのイベントであるかを判断する。
ステップS110でファイルアクセスイベント集合が空集合になったと判断する場合、状況解析手段304は、ステップS111の処理を実行する。具体的には、ステップS111の処理を実行するのは、ユーザ操作イベントで拡張子が通知されなかった場合である。例えば、ユーザがダイアログボックスでファイル名を入力する操作をする際に、ユーザが拡張子を省略する操作をした場合に相当する。この場合、状況解析手段304は、基準3−1を用いた絞り込みを中止し、基準3−2に従ってファイルアクセスイベント集合の中のイベントを絞り込む(ステップS111)。すなわち、状況解析手段304は、拡張子を無視したマッチング(照合)を行う。
状況解析手段304は、絞り込んだ結果、ファイルアクセスイベント集合が空集合になったか否かを判断する(ステップS112)。絞り込んだ結果、ファイルアクセスイベント集合が空集合になった場合、ユーザが操作をしたが途中でキャンセル操作したり、なんらかのエラーで処理が正常に終了しなかった場合であるので、状況解析手段304は、そのまま処理を終了する。
空集合にならなかった場合、そのファイルアクセスイベント集合に含まれるイベントに対応するファイルのフルパス名が、ユーザの操作対象ファイルのフルパス名である。ファイルアクセスイベント集合に複数のイベントが存在する場合、それら複数イベントに対応するフルパス名が同じであれば、状況解析手段304は、そのフルパス名のファイルをユーザ操作対象ファイルと判断する。
フルパス名が異なるイベントがファイルアクセスイベント集合に複数残る場合、アプリケーション1が対象ファイルを読み込み、読み込んだファイルを用いて、別のディレクトリにテンポラリファイル等を作成した場合である。従って、状況解析手段304は、最初の(時間的に最も古い)イベントのフルパス名で示されるファイルをユーザ対象ファイルと判断する。
以上のように、ステップS101からステップS112までの処理が実行されることによって、状況解析手段304によるファイルフルパス名の特定処理が終了し、ステップS113の処理に進む。
編集文書管理手段305は、ユーザ操作イベントのウインドウクラスの値をパラメータとして、アプリケーション状態検出手段4を呼び出す。アプリケーション状態検出手段4は、編集文書管理手段305から渡されたウインドウクラスに対応したウインドウの状態を検出し、編集文書管理手段305に回答(検出結果を出力)する。本実施の形態では、アプリケーション状態検出手段4は、アプリケーション1の状態として、ウインドウタイトルを編集文書管理手段305に返す。そして、編集文書管理手段305は、アプリケーション状態検出手段4からのウインドウタイトルを受け取る(ステップS113)。
編集文書管理手段305は、ステップS101からステップS113までの処理結果を、編集文書記憶手段306に保存させる(ステップS114)。本実施の形態では、編集文書管理手段305は、図7に示すように、特定したファイルフルパス名を編集文書記憶手段306に保存させる。また、編集文書管理手段305は、アクティブアプリケーション状態として、ウインドウタイトルを編集文書記憶手段306に保存させる。
図15は、文書切り替え処理の一例を示す流れ図である。図15に示す文書切り替え処理では、アクティブ文書判定手段302がメイン制御部となり、アクティブ文書判定手段302は、アプリケーション状態検出手段4、編集文書記憶手段306及びアクティブ文書記憶手段303を用いて、以下に示すステップの処理を実行する。
編集文書管理手段305は、アクティブ文書判定手段302にユーザ操作イベントのウインドウクラスの値を渡し(ステップS201)、アクティブドキュメントの切り替え処理を開始させる。アクティブ文書判定手段302は、アプリケーション状態検出手段4にウインドウクラスを送り、そのウインドウクラスに対応したアプリケーション1のウインドウタイトルの値を、アプリケーション状態検出手段4から受け取って取得する(ステップS202)。
アクティブ文書判定手段302は、取得したウインドウタイトルを用いて編集文書記憶手段306を検索する(ステップS203)。この場合、アクティブ文書判定手段302は、ステップS201で受け取ったウインドウクラスの値をキーとして、編集文書記憶手段306のウインドウクラスのフィールドを検索する。また、アクティブ文書判定手段302は、ステップS202で取得したウインドウタイトルの値をキーとして、編集文書記憶手段306のアクティブアプリケーション状態のフィールドを検索する。
アクティブ文書判定手段302は、検索の結果、ウインドウクラスやウインドウタイトルが合致するファイルのファイルフルパス名を抽出して取得する(ステップS204)。また、アクティブ文書判定手段302は、検索の結果抽出したファイルフルパス名を、アクティブ文書として一時記憶する。
なお、アクティブ文書判定手段302は、検索の結果、必ず1つのファイルフルパス名を抽出する。すなわち、同じ文書を複数回同じアプリケーション1で読み込めないので、編集文書記憶手段306のアクティブアプリケーション状態のフィールドが重複することはなく、検索結果が複数になることはない。さらに、文書がアクティブになるためには、文書がアプリケーション1に事前に読み込まれている必要があるので、検索結果がないということもない。
そして、アクティブ文書判定手段302は、ステップS201で得たウインドウクラスとステップS204で得たファイルフルパス名とを、アクティブ文書記憶手段303に登録する(ステップS205)。
図16は、文書書き込み処理の一例を示す流れ図である。図16に示す文書書き込み処理では、文書コピー移動ログ生成手段307がメイン制御部となり、文書コピー移動ログ生成手段307は、状況解析手段304、アクティブ文書記憶手段303及び文書コピー移動ログ記憶手段5を用いて、以下に示すステップの処理を実行する。
イベント処理全体制御手段301は、文書コピー移動ログ生成手段307にユーザ操作イベントとファイルアクセスイベントとを渡し(ステップS301)、文書書き込み処理を開始させる。文書コピー移動ログ生成手段307は、ステップS301で受け取ったユーザ操作イベントとファイルアクセスイベントとを状況解析手段304に渡し(ステップS302)、ユーザ操作イベントと関連のあるイベントをファイルアクセスイベント集合の中から検索する処理を開始させる。
次に、状況解析手段304は、状況解析の処理を実行する(ステップS303)。本実施の形態では、状況解析手段304は、図14で示した文書読み込み処理のステップS103からステップS112までと同様の処理を、状況解析の処理として実行する。状況解析手段304は、状況解析の結果として、ファイルフルパス名を文書コピー移動ログ生成手段307に返す。この状況解析手段304が文書コピー移動ログ生成手段307に返すファイルフルパス名は、ユーザ操作の対象ファイルであり、ログのコピー先ファイルフルパス名に相当する。
文書コピー移動ログ生成手段307は、ステップS301で得たウインドウクラスをキーとして、アクティブ文書記憶手段303のウインドウクラスフィールドを検索する(ステップS304)。また、文書コピー移動ログ生成手段307は、検索の結果抽出したファイルフルパス名を、ログのコピー元ファイルフルパス名として一時記憶する(ステップS305)。
なお、文書コピー移動ログ生成手段307は、検索の結果必ず1つのフルパス名を抽出する。すなわち、アクティブ文書記憶手段303のウインドウクラスの値には重複がないので、複数レコードが検索されることはない。また、書き込み処理を行っているアプリケーション1は書き込みの前に読み込み処理を行っており、この読み込みの際にアクティブ文書記憶手段303に登録されるので、検索結果がないということもない。
文書コピー移動ログ生成手段307は、ウインドウクラスや操作シーケンス、コピー先ファイルフルパス名、コピー元ファイルフルパス名を含むログを生成する(ステップS306)。この場合、文書コピー移動ログ生成手段307は、ステップS301で受け取ったユーザ操作イベントのウインドウクラスや操作シーケンスを含むログを生成する。また、文書コピー移動ログ生成手段307は、ステップS303で受け取ったファイルフルパス名をコピー先ファイルフルパス名として含むログを生成する。更に、文書コピー移動ログ生成手段307は、ステップS305の検索結果のファイルフルパス名をコピー元ファイルフルパス名として含むログを生成する。
文書コピー移動ログ生成手段307は、生成したログを文書コピー移動ログ記憶手段5に登録する(ステップS307)。この場合、文書コピー移動ログ生成手段307は、登録方法として、文書コピー移動ログ記憶手段5にレコードを1つ追加し、追加したレコードにステップS306で生成したログを書き込む。
以上のように、本実施の形態によれば、アプリケーション監視手段2がアプリケーション1の動作を外部のプログラムから監視し、アプリケーション状態検出手段4が表示されているウインドウタイトルの文字列等をアプリケーション1の状態として検出する。また、文書操作推定手段3は、アプリケーション監視手段2の監視結果を、アプリケーション状態検出手段4の検出機能を利用して解析することによって、そのアプリケーション1で読み込まれた文書ファイルに対して、ユーザのファイル操作が行われたか否かを推定する。そして、文書操作推定手段3は、推定したファイル操作の推定結果を、ログとして文書コピー移動ログ記憶手段5に記憶させる。
アプリケーション1の状態を検出し、アプリケーション1の動作の監視結果を解析することによって、ファイルのコピーや移動のファイル操作が行われたか否かを推定できるので、ワードプロセッサで「名前をつけて保存」をした場合のように、間接的にファイルをコピー又は移動するる操作であっても、正確に監視できることにある。従って、市販のワードプロセッサ等、様々なアプリケーションソフトウェアのファイルフォーマットに対応して、ファイルのコピーや移動を監視することができる。また、ユーザによってファイル名を変えられた場合や、アプリケーションソフトウェアでファイルの内容が編集された場合であっても、ファイルの位置の変化を正確に監視することができる。更に、ユーザに対して従来と全く変わらない操作性のままで、ファイルのコピーや移動を監視することができる。
また、本実施の形態によれば、アプリケーション監視手段2は、ユーザのGUIの操作を監視する操作イベント検出手段201と、ファイルシステムへのアクセスを監視するI/Oイベント検出手段202とを含む。そのような構成によって、ユーザが行った操作と実際のファイルシステムの動作との両方の整合性を検証でき、ファイルのコピーや移動を精度よく監視することができる。
例えば、「名前をつけて保存」をユーザが選択操作したとしても、既に同じ名前のファイルが存在したためにキャンセルされる場合もあれば、磁気ディスク装置の空きスペースがなく書き込みに失敗することもある。このように保存がキャンセルされたり失敗した場合であっても、I/Oイベント検出手段202がファイルアクセスを監視しているので、ファイルのコピーや移動の監視結果を誤ることはない。従って、ファイルアクセスのエラー等が発生した場合であっても、ファイルのコピーや移動を正確に監視することができる。
また、本実施の形態によれば、文書操作推定手段3は、イベント処理全体制御手段301と、状況解析手段304と、編集文書管理手段305と、編集文書記憶手段306と、アクティブ文書判定手段302と、アクティブ文書記憶手段303と、文書コピー移動ログ生成手段307とを含む。
イベント処理全体制御手段301は、アプリケーション監視手段2の監視結果の解析処理全体を制御する。また、状況解析手段304は、I/Oイベント検出手段202からのファイルフルパス名と、操作イベント検出手段201からのファイル名との関係をマッチングする。編集文書管理手段305は、アプリケーション1で読み込まれたファイルと、アプリケーション1の状態の変化(読み込まれたことによるウインドウタイトルの文字列の変化等)とを対応づける。そして、編集文書記憶手段306は、編集文書管理手段305が生成したファイルとアプリケーション1の状態との関係を記憶する。
また、アクティブ文書判定手段302は、複数読み込んだファイルの中から、現在フォーカスがあたっている文書(アクティブドキュメント)を検出をする。また、アクティブ文書記憶手段303は、アクティブ文書判定手段302の検出結果を記憶する。そして、文書コピー移動ログ生成手段307は、ファイルへの書き込みが行われた場合に、アプリケーション監視手段2が監視結果として通知するイベントと、状況解析手段304の照合結果とにもとづいて、どのファイルの内容がどのファイルに書き込まれたかを推定する。
そのような構成によって、アプリケーション1内で文書の切り替えを管理でき、アプリケーション1で一度に複数のファイルを開いた場合であっても、ファイルのコピーや移動をより正確に監視することができる。従って、アプリケーション1で一度に複数のファイルを開いた場合であっても、ファイルのコピーや移動を正確に監視することができる。
次に、具体的な実施例について説明する。本実施例では、実施の形態で示した文書ファイルコピー移動監視システムの処理内容を具体例を用いて説明する。なお、本実施例では、文書ファイルコピー移動監視システムの動作を、(1)文書読み込み、(2)文書切り替え、及び(3)文書書き込みの場合に分けて説明する。
(1)まず、文書読み込みの場合の動作を、図13及び図14を用いて説明する。図13のステップS1では、ユーザは、情報処理端末を操作して、アプリケーション1「Microsoft Word」のメニューから「ファイル→開く」操作を選択し、ファイル「AAA」を開く。ただし、Microsoft Wordの実行ファイルは「WORD.EXE」であり、Microsoft Wordのウインドウクラスは「OpuaApp」であるとする。
ステップS2では、操作イベント検出手段201は、ステップS1の操作に対し、図2に示すような操作イベントをフックする。また、I/Oイベント検出手段202は、ファイルアクセスイベント集合として、図3に示すようなレコードセットをフックする。なお、ファイルアクセスイベント集合には、図3に示す第二レコードのように、他のアプリケーションで発生したイベントが含まれることがある。本例では、ステップS1の操作がユーザによってされたタイミングと同時に、アプリケーション「HIDEMARU.EXE」が「BBB.txt」というファイルのWRITEを行っていることを示している。
ステップS3では、イベント処理全体制御手段301は、ユーザ操作イベントの操作シーケンスの項目と、図4に示す知識テーブルの操作シーケンスフィールドT030101とをマッチング(照合)する。本例では、操作シーケンスが「メニュー→ファイル→開く」であるので、図4に示す知識テーブルの第一レコードとマッチ(合致)する。従って、イベント処理全体制御手段301は、図4に示す操作種類フィールドT030102の値である「文書読み込み処理」を、このユーザの操作の種類と判断する。
ステップS4では、文書操作推定手段3は、ステップ3でユーザの操作の種類が特定できたと判断するので、ステップS5の処理を実行する。ステップS5では、文書操作推定手段3は、図14に示す「文書読み込み処理」を実行する。
図14のステップS101では、イベント処理全体制御手段301は、編集文書管理手段305に、図2に示すユーザ操作イベントと図3に示すファイルアクセスイベント集合とを送る。ステップS102では、編集文書管理手段305は、ステップ101で受け取った図2のユーザ操作イベントと図3のファイルアクセスイベント集合とを、状況解析手段304に送る。
本例では、ユーザ操作イベントのウインドウクラスは「OpusApp」である。よって、図5から、このウインドウクラス「OpusApp」の実行ファイルが「WORD.EXE」であることがわかる。従って、ステップS103では、状況解析手段304は、図3に示すファイルアクセスイベント集合を、この実行ファイル「WORD.EXE」に関するイベントだけを含むように絞り込む。本例では、状況解析手段304は、図17に示す4レコードにファイルアクセスイベント集合を絞り込む。ステップS104では、状況解析手段304は、ファイルアクセスイベント集合が空集合ではないと判断するので、ステップ105に進む。
また、本例では、ユーザ操作イベントの操作シーケンスは「メニュー→ファイル→開く」である。よって、図6より、この操作シーケンスのファイルアクセスモードが「READ」であることがわかる。従って、ステップS105では、状況解析手段304は、図17に示すファイルアクセスイベント集合を、「READ」のイベントだけを含むように絞り込む。本例では、状況解析手段304は、図18に示す3レコードにファイルアクセスイベント集合を絞り込む。ステップS106では、状況解析手段304は、ファイルアクセスイベント集合が空集合ではないと判断するので、ステップ107に進む。
また、本例では、ファイルアクセスイベントのファイル名が「AAA」であり、拡張子がない。従って、ステップS107では、状況解析手段304は、図18に示すファイルアクセスイベント集合を、ファイル名が「AAA」であるか拡張子がないファイルに対応するイベントだけを含むように絞り込む。本例では、状況解析手段304は、図19に示す2レコードにファイルアクセスイベント集合を絞り込む。ステップS108では、状況解析手段304は、ファイルアクセスイベント集合が空集合ではないと判断するので、ステップ109に進む。
図19に示すように、本例では、絞り込んだファイルアクセスイベント集合は、ユーザ操作イベントのファイル名と拡張子との両方が同じであるイベントのログを含まない。従って、ステップS109で状況解析手段304が更に絞り込みを行うと、ファイルアクセスイベント集合は空集合になる。ステップS110では、状況解析手段304は、ファイルアクセスイベント集合が空集合であると判断するので、ステップS111に進む。
ステップS111では、状況解析手段304は、拡張子のマッチングを無視した絞り込みを行う。拡張子のマッチングを無視すると、図19に示すいずれのレコードも基準に合致する。この場合、絞り込み後のファイルアクセスイベント集合は、図19に示す集合と同じになる。
図19に示すように、本例では、ファイルアクセスイベント集合に含まれるレコードは複数存在する。従って、ステップS112では、状況解析手段304は、ログが古いほうのイベント(すなわち、図19に示す第一レコードのイベント)を、ユーザ操作イベントに対応するファイルアクセスイベントであると判断する。
ステップS113では、編集文書管理手段305は、ユーザ操作イベントのウインドウクラスの値「OpusApp」をパラメータとして、アプリケーション状態検出手段4を呼び出す。アプリケーション状態検出手段4は、渡されたウインドウクラスに対応したウインドウタイトルを検出し、編集文書管理手段305に回答する。例えば、アプリケーション状態検出手段4は、「WORD[AAA.DOC]」等と回答する。
ステップS114では、編集文書管理手段305は、以上の処理結果を編集文書記憶手段306に保存させる(例えば、図7に示す第一レコード)。
(2)次に、文書切り替えの場合の動作を、図13及び図15を用いて説明する。図13のステップS1では、ユーザは、情報処理端末を操作して、アプリケーション1「Microsoft Word」を用いて、「AAA.DOC」以外の文書の読み込み編集作業を行う。例えば、ユーザは、メニューから「ファイル→ウインドウ→切り替え」操作を選択し、ファイル「AAA」にフォーカスをあてる。
ステップS2では、操作イベント検出手段201は、ステップS1の操作に対し、図20に示すような操作イベントをフックする。なお、文書切り替えの場合、ファイルへのアクセスはないので、ファイルアクセスイベント集合には何もイベントが発行されない。
ステップS3では、イベント処理全体制御手段301は、ユーザ操作イベントの操作シーケンスの項目と、図4に示す知識テーブルの操作シーケンスフィールドT030101とをマッチングする。本例では、操作シーケンスが「メニュー→ウインドウ→切り替え」であるので、図4に示す知識テーブルの第三レコードとマッチする。従って、イベント処理全体制御手段301は、図4に示す操作種類フィールドT030102の値である「文書切り替え処理」を、このユーザの操作の種類と判断する。
ステップS4では、文書操作推定手段3は、ステップS3でユーザの操作の種類が特定できたと判断するので、ステップS5の処理を実行する。ステップS5では、文書操作推定手段3は、図15に示す「文書切り替え処理」を実行する。
図15のステップS201では、編集文書管理手段305は、アクティブ文書判定手段302にユーザ操作イベントのウインドウクラスの値「OpusApp」を渡し、アクティブドキュメントの切り替え処理を開始させる。ステップS202では、アクティブ文書判定手段302は、アプリケーション状態検出手段4にウインドウクラス「OpusApp」を送る。そして、アクティブ文書判定手段302は、このウインドウクラス「OpusApp」に対応したアプリケーション1のウインドウタイトルの値「WORD[AAA.DOC]」を、アプリケーション状態検出手段4から受け取って取得する。
ステップS203では、アクティブ文書判定手段302は、図7に示す編集文書記憶手段306が記憶する情報のテーブルに対して情報検索を行う。この場合、アクティブ文書判定手段302は、編集文書記憶手段306のウインドウクラスのフィールドが「OpusApp」で、且つ編集文書記憶手段306のアクティブアプリケーション状態のフィールドが「WORD[AAA.DOC]」であるレコードを検索する。本例では、アクティブ文書判定手段302は、図7に示す第一レコードを検索結果として抽出する。
ステップS204では、アクティブ文書判定手段302は、検索結果のファイルフルパス名フィールドの値「C:¥Doc¥AAA.DOC」を、アクティブ文書として一時記憶する。ステップS205では、アクティブ文書判定手段302は、ステップS201で得たウインドウクラス「OpusApp」と、ステップS204で得たファイルフルパス名「C:¥Doc¥AAA.DOC」とを、アクティブ文書記憶手段303に登録する(例えば、図10に示す第一レコード)。
(3)次に、文書書き込みの場合の動作を、図13及び図16を用いて説明する。図13のステップS1では、ユーザは、情報処理端末を操作して、アプリケーション1「Microsoft Word」を用いて、メニューから「メニュー→ファイル→名前を付けて保存」を選択し、保存先ファイル名「XXX」を入力する。
ステップS2では、操作イベント検出手段201は、ステップS1の操作に対し、図21に示すような操作イベントをフックする。また、I/Oイベント検出手段手段202は、ファイルアクセスイベント集合として、図22に示すレコードセットをフックする。
ステップS3では、イベント処理全体制御手段301は、ユーザ操作イベントの操作シーケンスの項目と、図4に示す知識テーブルの操作シーケンスフィールドT030101とをマッチングする。本例では、操作シーケンスが「メニュー→ファイル→名前を付けて保存」であるので、図4に示す知識テーブルの第五レコードとマッチする。従って、イベント処理全体制御手段301は、図4に示す操作種類フィールドT030102の値である「文書書き込み処理」を、このユーザの操作の種類と判断する。
ステップS4では、文書操作推定手段3は、ステップS3でユーザの操作の種類が特定できたと判断するので、ステップS5の処理を実行する。ステップS5では、文書操作推定手段3は、図16に示す「文書書き込み処理」を実行する。
図16のステップS301では、イベント処理全体制御手段301は、文書コピー移動ログ生成手段307にユーザ操作イベントとファイルアクセスイベントとを渡し、文書書き込み処理を開始させる。ステップS302では、文書コピー移動ログ生成手段307は、ステップS301で受け取ったユーザ操作イベントと図22のファイルアクセスイベント集合とを状況解析手段304に渡す。
ステップS303では、状況解析手段304は、図14で示した文書読み込み処理のステップS103からステップS112までの処理を実行する。ステップS103からステップS112までの処理が実行された結果、状況解析手段304は、図22に示すファイルアクセス集合の各レコードを、以下のように絞り込む。図23は、ファイルアクセス集合の絞り込み結果を示す説明図である。
状況解析手段304は、図22に示すファイルアクセス集合の第一レコードを、基準3−3に従って削除する。また、状況解析手段304は、第二レコードを残し、図23に示すように、ファイルアクセス集合の第一レコードにする。また、状況解析手段304は、第三レコードを、基準3−2に従って削除する。また、状況解析手段304は、第四レコードを、基準2に従って削除する。
本例では、状況解析手段304は、「C:¥Doc¥XXX.DOC」を文書コピー移動ログ生成手段307に返す。この状況解析手段304から受け取ったファイルフルパス名は、ユーザ操作の対象ファイルのパス名であり、ログのコピー先ファイルフルパス名に相当する。
ステップS304では、文書コピー移動ログ生成手段307は、ステップS301で得たウインドウクラス「OpusApp」をキーとして、図10に示すアクティブ文書記憶手段303のウインドウクラスフィールドを検索する。文書コピー移動ログ生成手段307は、その検索の結果、図10に示す第一レコードを検索結果として抽出する。ステップS305では、文書コピー移動ログ生成手段307は、検索の結果抽出したファイルフルパス名「C:¥Doc¥AAA.DOC」を、ログのコピー元ファイルフルパス名として一時記憶する。
ステップS306では、文書コピー移動ログ生成手段307は、ウインドウクラス「OpusApp」、コピー元ファイル「C:¥Doc¥AAA.DOC」、及びコピー先ファイル「C:¥Doc¥XXX.DOC」を含むログを生成する。ステップS307では、文書コピー移動ログ生成手段307は、生成したログを文書コピー移動ログ記憶手段5に登録する。本例では、図24に示すように、文書コピー移動ログ生成手段307は、第四レコードとしてログを文書コピー移動ログ記憶手段5に登録する。