本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る作業情報管理装置は、図1に例示するように、制御部11、記憶部12、操作部13、及び表示部14を含んで構成されている。
本実施の形態においては、作業情報が図2に例示するように、改訂版ごとに、少なくとも一つの作業の項目を表す情報を行情報を含むものとして、記憶部12に記録されている。この行情報には、作業の項目を特定する情報と、期間(スケジュールバー情報)または日時(マイルストーン情報)の情報とを含む一連の情報が互いに関連付けられ、記録情報として含まれる。
具体的にこれらの情報は、作業情報ごとに、行テーブル(A)、マイルストーン情報テーブル(B)、更新履歴テーブル(C)、スケジュールバー情報テーブル(D)を含む。行テーブルは、行識別情報(a−1)、行タイトル情報(a−2)、改訂版を規定する情報(a−3:リビジョン情報)、及び行数情報(a−4)を互いに関連付けたものである。
またマイルストーン情報テーブルは、マイルストーン識別情報(b−1)、リビジョン情報(b−2)、行識別情報(b−3)、日時情報(b−4)、及び備考情報(b−5:区別のため第一備考情報と呼ぶ)を互いに関連付けたものである。更新履歴テーブルは、リビジョン情報(c−1)、更新識別情報(c−2)、種別情報(c−3)、及び更新内容情報(c−4)を互いに関連付けたものである。さらにスケジュールバー情報テーブルは、スケジュールバー識別情報(d−1)、リビジョン情報(d−2)、行識別情報(d−3)、期間情報(d−4,d−5:開始日時及び終了日時)、及び備考情報(d−6:区別のため第二備考情報と呼ぶ)を互いに関連付けたものである。
制御部11は、CPU(Central Processing Unit)等のプログラム制御デバイスであり、記憶部12に格納されているプログラムに従って動作する。本実施の形態の制御部11は、少なくとも最後の改訂版に係る前記行情報に基づいて、作業の項目を第一の軸方向(例えば縦軸方向)に配列し、当該第一の軸方向に直交する第二の軸方向(例えば横軸方向)を日時の軸として、各作業の項目に関連付けられた期間や日時の情報を、当該第二の軸方向に配した図形により表す画面を表示する。この画面は一般にガントチャートと呼ばれ、図3に例示するようなものとなる。
また本実施の形態の制御部11は、比較の対象として、記録情報として関連付けられた一連の情報のうちいずれか少なくとも一つの情報の指定を受け入れ、各改訂版の記録情報に含まれる、比較の対象として指定された情報に、予め定められた条件に合致する変化があった場合に、当該情報を、当該指定された一対の改訂版ごとに保持された記録情報のうちから抽出する。またこの制御部11は、指定された情報ごとに、k番目の改訂版とk+1番目の改訂版(k=1,2,…)との間で、抽出された情報に予め定められた条件に合致する変化があった場合に、その回数を集計して表示する等の処理を行う。この制御部11の具体的な処理の内容については、後に詳しく説明する。
記憶部12は、メモリデバイスやディスクデバイスを含んで構成される。制御部11によって実行されるプログラムを保持している。このプログラムは、DVD−ROM(Digial Versatile Disc Read Only Memory)等のコンピュータ可読な記録媒体に格納されて提供され、この記憶部12に複写等されて格納されたものであってもよい。また、この記憶部12は制御部11のワークメモリとしても動作する。さらに本実施の形態では、すでに述べた作業情報がこの記憶部12に格納されて保持される。
操作部13は、マウスやキーボード等であり、利用者の操作を受け入れて、当該操作の内容を制御部11に出力する。表示部14は、ディスプレイデバイスやプリンタ等であり、制御部11から入力される指示に従って情報を表示等する。
次に本実施の形態の制御部11の具体的動作について説明する。本実施の形態では、制御部11は、ガントチャートを表示する処理、指定された2つのリビジョン間の比較を行う処理、集計の処理等を行う。また、ガントチャートは、この制御部11によって作成されてもよいし、他の装置で作成され、本実施の形態の記憶部12に格納されたものであってもよい。以下、まずガントチャートを作成する処理について述べる。
[ガントチャートを作成する処理]
ここではガントチャートの基となる作業情報を制御部11が作成する場合を例として述べる。利用者が新規の作業情報を作成する指示を行うと、制御部11は、新規の作業情報に対応する行テーブル(A)、マイルストーン情報テーブル(B)、更新履歴テーブル(C)、スケジュールバー情報テーブル(D)を作成して、記憶部12に格納する。
利用者は、行うべき作業を予め項目(作業項目)にわけておき、作業項目ごとに行を作成する指示を行う。制御部11は、行を作成する指示が行われるたびに、固有の行識別情報を発行し、利用者に対して行タイトル情報の入力を促す。そして行タイトル情報が入力されると、制御部11は、行テーブルに新規のエントリを作成し、発行した行識別情報と、行タイトル情報と、リビジョン情報(ここでは一例として当初「1」であるとする)と、行数情報(当初「1」とする)とを関連付けて当該作成したエントリの情報として記憶部12に格納する。
利用者は、各作業項目について、期日の指定(マイルストーンの設定)や、期間の設定(スケジュールバーの設定)を行う。具体的にマイルストーンを設定する場合、利用者はマイルストーンを設定する作業項目の行を指定し、次にマイルストーンを設定する日時と、第一備考情報とを指定する。この指定を受けた制御部11は、指定された行の行識別情報を取得し、マイルストーン情報テーブルに新規のエントリを作成し、新規に固有のマイルストーン識別情報を発行する。そして制御部11は、リビジョン情報として当初のリビジョンであることを表す情報(例えば「1」)と、発行した固有のマイルストーン情報と、取得した行識別情報と、指定された日時の情報と、第一備考情報とを関連付けてマイルストーン情報テーブルに格納する。
また、具体的にスケジュールバーを設定する場合、利用者はスケジュールバーを設定する作業項目の行を指定し、次にスケジュールバーを設定する期間の始期(開始日時)、期間の終期(終了日時)と、第二備考情報とを指定する。制御部11は、指定された行の行識別情報を取得し、スケジュールバー情報テーブルに新規のエントリを作成し、新規に固有のスケジュールバー識別情報を発行する。そして制御部11は、リビジョン情報として当初のリビジョンであることを表す情報(例えば「1」)と、発行した固有のスケジュールバー情報と、取得した行識別情報と、指定された開始日時及び終了日時の情報と、第二備考情報とを関連付けてスケジュールバー情報テーブルに格納する。
利用者は、作業情報の作成が完了すると、その旨の操作を行う。制御部11は、利用者の作業情報の作成完了の指示を受けて、作業情報の作成処理を終了する。
[ガントチャートを更新する処理]
また作業情報は利用者により更新される。この更新の処理も、本実施の形態の作業情報管理装置とは異なる別の装置によって行われてもよいが、以下の説明では制御部11が行うものとして説明する。
制御部11は、作業情報の指定を受けて、当該指定された作業情報の更新の指示を受けると、当該指定された作業情報の行テーブルを読み出す。そして制御部11は、当該行テーブルに含まれるエントリのそれぞれから、リビジョン情報を読み出し、最後のリビジョン情報(最新のリビジョンを表す情報、例えばリビジョン情報が数値で表現されていれば、読み出したリビジョン情報のうち最大の値となっているもの)を検出する。制御部11は、検出した最後のリビジョン情報を「1つ分」(数値でリビジョン情報が表現されていれば「1」)だけインクリメントして、「次リビジョン情報」として記憶部12のワークメモリに保持する。
制御部11は、利用者から、(1−1)行の追加、(1−2)行の変更、(1−3)行の削除、(2−1)マイルストーンの追加、(2−2)マイルストーンの移動、(2−3)マイルストーンの削除、(3−1)スケジュールバーの追加、(3−2)スケジュールバーの移動、(3−3)スケジュールバーの削除のいずれか等、更新内容を表す指示を受け入れる。
例えば(1−1)行の追加が指示されると、制御部11は、行テーブルにおいて固有の行識別情報を発行し、利用者に対して行タイトル情報の入力を促す。そして行タイトル情報が入力されると、制御部11は、行テーブルに新規のエントリを作成し、発行した行識別情報と、行タイトル情報と、リビジョン情報として次リビジョン情報の値と、行数情報(当初「1」とする)とを関連付けて当該作成したエントリの情報として記憶部12に格納する。
このとき制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として追加した行に係る行識別情報と、種別情報として「行」を表す情報と、更新内容情報として「追加」を表す情報とを関連付けて記録する。
また、行の指定とともに、(1−2)行の変更の指示がされると、制御部11は、利用者に対して新たな行数の入力を促す。ここで行数が入力されると、指定された行に係るエントリを行テーブルから検索する。そして制御部11は、検索により見いだされたエントリに含まれる行数情報を、入力された新たな行数の値に変更し、また、当該エントリのリビジョン情報を次リビジョン情報に書き換える。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として検索により行テーブルから見いだされたエントリに係る行識別情報と、種別情報として「行」を表す情報と、更新内容情報として「変更」を表す情報とを関連付けて記録する。
また、行の指定とともに、(1−3)行の削除の指示がされると、制御部11は指定された行に係るエントリを行テーブルから検索する。そして制御部11は、検索により見いだされたエントリを行テーブルから削除する。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として検索により行テーブルから見いだされたエントリに係る行識別情報と、種別情報として「行」を表す情報と、更新内容情報として「削除」を表す情報とを関連付けて記録する。
また利用者が、行を指定して(2−1)マイルストーンの追加の指示を行うと、制御部11は、日時情報と第一備考情報との指定を求める。利用者が日時情報と第一備考情報とを指定すると、制御部11は、指定された行の行識別情報を取得し、マイルストーン情報テーブルに新規のエントリを作成し、新規に固有のマイルストーン識別情報を発行する。そして制御部11は、発行した固有のマイルストーン識別情報と、リビジョン情報として次リビジョン情報を表す値と、取得した行識別情報と、指定された日時の情報と、第一備考情報とを関連付けてマイルストーン情報テーブルに格納する。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として発行したマイルストーン識別情報と、種別情報として「マイルストーン」を表す情報と、更新内容情報として「追加」を表す情報とを関連付けて記録する。
また利用者が、マイルストーンを指定して(2−2)マイルストーンの移動の指示(新たな日時の指定)を行うと、制御部11は、指定されたマイルストーンに対応するエントリをマイルストーン情報テーブルから検索する。制御部11は、検索により見いだされたエントリに係る日時情報を、指定された日時情報に変更し、またこのエントリのリビジョン情報を、次リビジョン情報に書き換える。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として、検索により見いだされたエントリに係るマイルストーン識別情報と、種別情報として「マイルストーン」を表す情報と、更新内容情報として「変更」を表す情報とを関連付けて記録する。なお、マイルストーン情報における第一備考情報を変更する場合も同様に、指定されたマイルストーンに係るエントリにおける第一備考情報を、指定された第一備考情報に書き換え、またリビジョン情報を書き換えるとともに、更新履歴テーブルに新たなエントリを作成して、リビジョン情報として次リビジョン情報の値と、更新識別情報として、検索により見いだされたエントリに係るマイルストーン識別情報と、種別情報として「マイルストーン」を表す情報と、更新内容情報として「変更」を表す情報とを関連付けて記録する。
また利用者が、マイルストーンを指定して、(2−3)マイルストーンの削除を指示すると、制御部11は指定されたマイルストーンに係るエントリをマイルストーン情報テーブルから検索する。そして制御部11は、検索により見いだされたエントリをマイルストーン情報テーブルから削除する。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として検索によりマイルストーン情報テーブルから見いだされたエントリに係るマイルストーン識別情報と、種別情報として「マイルストーン」を表す情報と、更新内容情報として「削除」を表す情報とを関連付けて記録する。
また利用者が、行を指定して(3−1)スケジュールバーの追加の指示を行うと、制御部11は、日時情報と第二備考情報との指定を求める。利用者が開始日時及び終了日時の情報と第二備考情報とを指定すると、制御部11は、指定された行の行識別情報を取得し、スケジュールバー情報テーブルに新規のエントリを作成し、新規に固有のスケジュールバー識別情報を発行する。そして制御部11は、発行した固有のスケジュールバー識別情報と、リビジョン情報として次リビジョン情報を表す値と、取得した行識別情報と、指定された開始日時及び終了日時の情報と、第二備考情報とを関連付けてスケジュールバー情報テーブルに格納する。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として発行したスケジュールバー識別情報と、種別情報として「スケジュールバー」を表す情報と、更新内容情報として「追加」を表す情報とを関連付けて記録する。
また利用者が、スケジュールバーを指定して(3−2)スケジュールバーの移動の指示(新たな開始日時または終了日時の少なくとも一方の指定)を行うと、制御部11は、指定されたスケジュールバーに対応するエントリをスケジュールバー情報テーブルから検索する。制御部11は、検索により見いだされたエントリに係る開始日時または終了日時の少なくとも一方、指定を受けた情報を、指定された開始日時や指定された終了日時の情報に変更する。また制御部11は、このエントリのリビジョン情報を、次リビジョン情報に書き換える。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として、検索により見いだされたエントリに係るスケジュールバー識別情報と、種別情報として「スケジュールバー」を表す情報と、更新内容情報として「変更」を表す情報とを関連付けて記録する。なお、スケジュールバー情報における第二備考情報を変更する場合も同様に、指定されたスケジュールバーに係るエントリにおける第二備考情報を、指定された第二備考情報に書き換え、またリビジョン情報を書き換えるとともに、更新履歴テーブルに新たなエントリを作成して、リビジョン情報として次リビジョン情報の値と、更新識別情報として、検索により見いだされたエントリに係るスケジュールバー識別情報と、種別情報として「スケジュールバー」を表す情報と、更新内容情報として「変更」を表す情報とを関連付けて記録する。
また利用者が、スケジュールバーを指定して、(3−3)スケジュールバーの削除を指示すると、制御部11は指定されたスケジュールバーに係るエントリをスケジュールバー情報テーブルから検索する。そして制御部11は、検索により見いだされたエントリをスケジュールバー情報テーブルから削除する。さらに制御部11は、更新履歴テーブルに新たなエントリを作成し、リビジョン情報として次リビジョン情報の値と、更新識別情報として検索によりスケジュールバー情報テーブルから見いだされたエントリに係るスケジュールバー識別情報と、種別情報として「スケジュールバー」を表す情報と、更新内容情報として「削除」を表す情報とを関連付けて記録する。
[ガントチャートを表示する処理]
次に、制御部11によるガントチャートを表示する処理について述べる。制御部11は、記憶部12から行テーブルのリビジョン情報を参照し、指定されたリビジョンに係るエントリを抽出する。なお、リビジョンが指定されなかった場合など、デフォルトは最後のリビジョン(最新のリビジョンを表す情報、例えばリビジョン情報が数値で表現されていれば、読み出したリビジョン情報のうち最大の値となっているもの)であるとする。制御部11は、抽出した各エントリについて次の処理を行う。
すなわち制御部11は、描画の対象となる空の画像情報を記憶部12のワークメモリ上に確保する。また制御部11は、行数情報を参照して、当該行数情報によって表される行数だけ、行を確保する。つまり、予め1行あたりのピクセル数等を定めておき、各エントリの行数情報が表す行数分だけの間隔をおいて、X軸方向に延びる線分を描画する。
そして当該確保した行(線分と線分とで挟まれた部分)の左端など、予め定めた位置に、当該エントリに含まれる行タイトル情報の文字列を配する(図3のT)。
次に制御部11は、当該エントリに含まれる行識別情報を参照し、マイルストーン情報テーブルと、スケジュールバー情報とから、当該行識別情報と、指定されたリビジョン(またはデフォルトのリビジョン)を表す情報との双方を含むエントリを抽出する。
制御部11は、マイルストーン情報テーブルから抽出された各エントリについて、エントリに含まれる行識別情報に対応する行内において、エントリに含まれる日時情報が表す位置に予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第一備考情報の文字列を描画する。ここで、日時情報が表す位置は、例えば横軸の原点に予め設定された日付(例えば作業の開始日として別途指定された日付)をとり、そこから日時情報が表す日時までの経過日時に応じて、予め定められた単位時間あたりのピクセル数(例えば一日あたり60ピクセル)を乗じて得たピクセル数だけ横軸方向に移動した位置等とすればよい。
また制御部11は、スケジュールバー情報テーブルから抽出された各エントリについて、エントリに含まれる行識別情報に対応する行内において、エントリに含まれる開始日時の情報が表す位置から、終了日時の情報が表す位置まで延伸された線分や矩形など予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第二備考情報の文字列を描画する。ここで、開始日時や終了日時情報が表す位置は、それぞれマイルストーン情報と同様の方法で計算を行えばよい。
[2つのリビジョン間の比較処理]
また本実施の形態の制御部11は、2つのリビジョン間の比較処理を行う。以下、この処理の内容について述べる。制御部11は、比較の対象となる作業情報について、比較の対象とする2つのリビジョンの指定を受け入れる。また制御部11は、比較の条件の入力を受け入れる。ここで比較の条件は行テーブルにおける行数の変化の有無、マイルストーン情報テーブルにおける行識別情報、日時情報、または備考情報の変化の有無、スケジュールバー情報テーブルにおける行識別情報、開始日時、終了日時、または備考情報の変化の有無のいずれか少なくとも一つを含む。
制御部11は、図4に示す処理を開始し、比較の条件に係る情報が含まれるテーブルを記憶部12から読み出す。具体的にマイルストーン情報テーブルにおける備考情報の変化の有無だけが比較の条件として入力された場合、マイルストーン情報テーブルを記憶部12から読み出し、行テーブルやスケジュールバー情報テーブルは記憶部12から読み出さない。
制御部11は、読み出したテーブルを記憶部12のワークメモリに保持し、比較の対象として指定された2つのリビジョンのうち、より古いものを比較元リビジョン、より新しいものを比較先リビジョンとして、ワークメモリに保持したテーブルから、比較元リビジョンに係るエントリを比較元データとして抽出する(S11)。またワークメモリに保持したテーブルから、比較先リビジョンに係るエントリを比較先データとして抽出する(S12)。なお、処理S11及びS12において、ワークメモリに読み出されたテーブルが複数ある場合は、テーブルごとに比較元データと比較先データとを抽出しておく。
次に制御部11は行差分抽出処理を実行する(S13)。具体的にこの処理は、図5に例示するように、処理対象のテーブル(ここでは行テーブル)がワークメモリに読み出されているか(処理対象のテーブルに係る情報が比較の条件として指定されたか)否かを判断し(S21)、読み出されていなければ(比較の条件として指定されていなければ:Noならば)、処理を終了する。
一方、処理対象のテーブルがワークメモリに読み出されている(処理対象のテーブルに係る情報が比較の条件として指定されている:処理S21でYes)ならば、処理対象のテーブルについて追加検知処理(S22)、変更検知処理(S23)、削除検知処理(S24)を順次行って処理を終了する。この処理S22からS24までの順序は、必ずしもこの順でなくても構わないが、先頭となる検知処理に先立ち、制御部11は、新規に空の差分データを作成してワークメモリに保持する処理を行う。
制御部11は、次に、マイルストーン情報差分抽出処理を実行する(S14)。そしてさらに制御部11は、スケジュールバー情報差分抽出処理を実行する(S15)。この処理S13からS15が差分抽出の処理に相当する。
処理S14及びS15における処理は、処理対象となるテーブルが行テーブルではなく、それぞれマイルストーン情報テーブルとスケジュールバー情報テーブルとであることをのぞけば、図5に例示した処理と同じ処理を行うことになる。
なお、図5における追加検知処理(S22)では図6に例示するように、そして制御部11は、処理S12で処理対象のテーブルから抽出した比較先データ(より後のリビジョンに係るデータ)に含まれるエントリについてループを開始し(S31)、それまで未選択であるエントリを一つ、選択する。
また制御部11は、処理S11で処理対象のテーブルから抽出した比較元データ(より前のリビジョンに係るデータ)に含まれるエントリについてループを開始し(S32)、それまで未選択であるエントリを一つ、選択する。
そして制御部11は、処理S31にて選択した比較先データに含まれるエントリと、処理S32にて選択した比較元データに含まれるエントリとの間で、それぞれに含まれる識別情報が一致するか否かを調べる(S33)。ここで識別情報は処理対象のテーブルが行テーブルであれば行識別情報、処理対象のテーブルがマイルストーン情報テーブルであればマイルストーン識別情報、処理対象のテーブルがスケジュールバー情報テーブルであればスケジュールバー識別情報である。
処理S33において識別情報が一致しない場合(Noの場合)、制御部11は、比較元データに含まれるエントリに未選択のものがあれば処理S32以下のループを繰り返し実行する(S34)。また処理S34において、比較元データに含まれるエントリに未選択のものがなければ制御部11は、ループを抜けて、処理S31にて選択した比較先データのエントリを特定する情報(例えば当該エントリに含まれる識別情報)を差分データに、「追加」に係るデータとして追記する(S35)。
そして制御部11は、比較先データに含まれるエントリに未選択のものがあれば処理S31以下のループを繰り返し実行する(S36)。また処理S36において比較先データに含まれるエントリに未選択のものがなければ、処理を終了する。
なお、処理S33において、識別情報が一致した場合(Yesの場合)、制御部11は処理S36に移行して処理を続ける。
この処理の結果、差分データとして、「追加」に係る識別情報が図7(a)に例示するように、列挙されて記憶部12のワークメモリに保持される。
また図5における変更検知処理(S23)では図8に例示するように、制御部11は、処理S11で処理対象のテーブルから抽出した比較元データ(より前のリビジョンに係るデータ)に含まれるエントリについてループを開始し(S41)、それまで未選択であるエントリを一つ、選択する。
また制御部11は、処理S12で処理対象のテーブルから抽出した比較先データ(より後のリビジョンに係るデータ)に含まれるエントリについてループを開始し(S42)、それまで未選択であるエントリを一つ、選択する。
そして制御部11は、処理S41にて選択した比較元データに含まれるエントリと、処理S42にて選択した比較先データに含まれるエントリとの間で、それぞれに含まれる識別情報が一致するか否かを調べる(S43)。ここで識別情報は処理対象のテーブルが行テーブルであれば行識別情報、処理対象のテーブルがマイルストーン情報テーブルであればマイルストーン識別情報、処理対象のテーブルがスケジュールバー情報テーブルであればスケジュールバー識別情報である。
処理S43において識別情報が一致しない場合(Noの場合)、制御部11は、比較先データに含まれるエントリに未選択のものがあれば処理S42以下のループを繰り返し実行する(S44)。また処理S44において、比較元データに含まれるエントリに未選択のものがなければ制御部11は、ループを抜けて、処理S49に移行する。
一方、処理S44において識別情報が一致した場合(Yesの場合)、制御部11は、処理対象のテーブルについて指定された比較条件ごとにループを開始する(S45)。例えば、比較対象のテーブルがマイルストーン情報テーブルであり、比較の条件が、行識別情報、日時情報、及び備考情報のそれぞれの有無である場合、行識別情報、日時情報、及び備考情報のそれぞれについて、次の処理を繰り返す。
すなわち制御部11は、比較条件ごとに、比較条件に係る情報が、処理S41、S42で選択したエントリ間で共通しているか否かを調べ(S46)、一致していなければ(Noならば)、差分データに「変更」のデータとして、処理S42で選択した比較先データ中のエントリを特定する情報(当該エントリに含まれる識別情報であってもよい)と、比較元データ中のエントリを特定する情報(当該エントリに含まれる識別情報であってもよい)とを追記する(S47)。制御部11は、この処理S46,47を、指定された比較の条件ごとに繰り返す(S48)。
制御部11は、比較の条件ごとの繰り返しが終了すると、比較元データに含まれるエントリに未選択のものがあるか否かを調べ、未選択のものがあれば処理S41以下のループを繰り返し実行する(S49)。また、処理S49にて比較元データに含まれるエントリに未選択のものがなければ、処理を終了する。
この処理(処理S23)の結果、差分データとして、先に記録された「追加」に係る識別情報とともに、「変更」に係る識別情報が図7(b)に例示するように列挙されて、記憶部12のワークメモリに保持される。
さらに図5における削除検知処理(S24)では図9に例示するように、制御部11は、処理S11で処理対象のテーブルから抽出した比較元データ(より前のリビジョンに係るデータ)に含まれるエントリについてループを開始し(S51)、それまで未選択であるエントリを一つ、選択する。
また制御部11は、処理S12で処理対象のテーブルから抽出した比較先データ(より後のリビジョンに係るデータ)に含まれるエントリについてループを開始し(S52)、それまで未選択であるエントリを一つ、選択する。
そして制御部11は、処理S51にて選択した比較元データに含まれるエントリと、処理S52にて選択した比較先データに含まれるエントリとの間で、それぞれに含まれる識別情報が一致するか否かを調べる(S53)。ここで識別情報は処理対象のテーブルが行テーブルであれば行識別情報、処理対象のテーブルがマイルストーン情報テーブルであればマイルストーン識別情報、処理対象のテーブルがスケジュールバー情報テーブルであればスケジュールバー識別情報である。
処理S53において識別情報が一致しない場合(Noの場合)、制御部11は、比較先データに含まれるエントリに未選択のものがあれば処理S52以下のループを繰り返し実行する(S54)。また処理S54において、比較先データに含まれるエントリに未選択のものがなければ制御部11は、ループを抜けて、処理S51にて選択した比較元データのエントリを特定する情報(例えば当該エントリに含まれる識別情報)を差分データに、「削除」に係るデータとして追記する(S55)。
そして制御部11は、比較先データに含まれるエントリに未選択のものがあれば処理S51以下のループを繰り返し実行する(S56)。また処理S56において比較先データに含まれるエントリに未選択のものがなければ、処理を終了する。
この処理(処理S24)の結果、差分データとして、先に記録された「追加」に係る識別情報、及び「変更」に係る識別情報とともに、「削除」に係る識別情報が図7(c)に例示するように列挙されて、記憶部12のワークメモリに保持される。
これらの処理により、記憶部12には、行テーブル、マイルストーン情報テーブル、スケジュールバー情報テーブルのそれぞれについて、比較の対象とされた2つのリビジョン間での情報の追加、変更、削除の記録が、差分データとして記録されることになる。
[集計処理]
また制御部11は、集計処理として次の処理を行う。すなわち制御部11は、集計の起点となるリビジョンの情報(起点リビジョン:Rs)と、集計の終了点となるリビジョンの情報(終点リビジョン:Re)とを特定する情報の入力を利用者から受け入れる。また制御部11は、比較の条件の入力を受け入れる。この集計処理における比較の条件は行テーブルにおける行数の変化の有無、マイルストーン情報テーブルにおける行識別情報、日時情報、または備考情報の変化の有無、スケジュールバー情報テーブルにおける行識別情報、開始日時、終了日時、または備考情報の変化の有無のいずれか少なくとも一つを含んでもよいし、またこの集計処理における比較の条件は、単にテーブルを特定する情報であってもよい。
ここではまず、集計処理において指定される比較の条件が、いずれかのテーブルを特定する情報である場合を例として説明する。
この場合、制御部11は、図10に例示するように、変数k=Rsと初期化し(S61)、変数kについてループを開始する(S62)。制御部11は、更新履歴テーブルを参照して、変数kの値に等しいリビジョン情報を含んだエントリを抽出し(S63)、さらに当該抽出したエントリのうちから、比較の条件に対応するエントリを抽出する(S64)。
具体的に、比較の条件として指定されたテーブルが「マイルストーン情報テーブル」である場合、リビジョン情報がkに一致し、かつ、種別情報が「マイルストーン情報」に一致するエントリが更新履歴テーブルから抽出される。
制御部11は、リビジョン情報kごとに、抽出した各エントリの種別情報と更新識別情報(マイルストーン情報が対象であればマイルストーン識別情報に相当するものとなる)とに関連付けて、当該エントリの更新内容情報を、更新集計要素情報として記録する(S65)。これにより制御部11が記録する情報は、例えば図11(a)に例示するようなものとなる。
制御部11は、変数kを1つ分だけインクリメントする(S66)。これは、リビジョン情報が、版が進むごとに1ずつ大きくなる数値で表されていれば「1」だけインクリメントすることに相当する。そして変数kが終点リビジョンReを超えたか否か(k>Reか否か)を調べ、超えていなければループを繰り返し、処理S62に戻って処理を続ける(S67)。
一方、処理S67にて変数kが終点リビジョンReを超えたならば、ループの繰り返しの間に、処理S64で抽出したリビジョン情報ごとの更新集計要素情報を参照し、種別情報と更新識別情報とをキーとして、各リビジョン情報に対応する更新集計要素情報をキーごとに配列して、図11(b)に示す情報を生成する(S68)。
また、キーである種別情報及び更新識別情報ごとに、各リビジョン情報での追加、変更、削除のいずれかがあるごとに「1」ずつ累算した更新回数の情報を演算し、キーごとに関連付けて記録する(S69)。これにより制御部11は、図11(c)に例示する更新集計情報を生成する。
なお、集計処理における比較の条件に行テーブルにおける行数の変化の有無、マイルストーン情報テーブルにおける行識別情報、日時情報、または備考情報の変化の有無、スケジュールバー情報テーブルにおける行識別情報、開始日時、終了日時、または備考情報の変化の有無のいずれか少なくとも一つが含まれる場合は、次のようにしてもよい。すなわち制御部11は、集計の起点となるリビジョンの情報(起点リビジョン:Rs)と、集計の終了点となるリビジョンの情報(終点リビジョン:Re)とを用いて、Rs≦k<Reなる各kを用い、kとk+1との間のリビジョン間の比較処理を行って、集計処理の比較条件として指定された比較の条件を、そのまま比較処理で指定された比較の条件として、差分データを生成する。
そして更新履歴テーブルを参照するのではなく、この差分データを参照して、対象となったテーブル及び識別情報をキーとして、このキーごとに、各リビジョン情報での追加、変更、削除の有無を示したテーブル(図11(b)と同様)を生成する。また、このキーごとに、各リビジョン情報での追加、変更、削除のいずれかがあるごとに「1」ずつ累算した更新回数の情報を演算し、キーごとに関連付けて記録する。これにより制御部11は、図11(c)に例示したものと同じ更新集計情報(ただし、より細かい比較条件が指定されたもの)を生成する。
[集計等結果表示処理]
制御部11は、これらの処理を用いて生成した差分データや更新集計情報を表示する処理を行う。一例として本実施の形態の作業情報管理装置の制御部11は、利用者から比較の対象となる2つのリビジョン情報(以下、それぞれリビジョンkf,ksとする)の指定を受けて、比較結果の表示を行うべき旨の指示を受けると、次の処理を行う。なお、以下ではリビジョンkfがより先行する(より過去の)リビジョンであり、リビジョンksがより後の(より最近の)リビジョンであるものとする。
制御部11は、指定されたリビジョンkfについてガントチャートを表示する処理を実行し、リビジョンkfについてのガントチャートの画像を生成する。また制御部11は、指定されたリビジョンksについてガントチャートを表示する処理を実行し、リビジョンksについてのガントチャートの画像を生成する。制御部11は、生成したリビジョンkf及びリビジョンksについての各ガントチャートの画像を、指定された態様で配列して表示する。この表示は例えば図12に例示するように、上下二段になるよう、リビジョンkf及びリビジョンksについての各ガントチャートの画像を配してもよい。この際、リビジョンkf及びリビジョンksについての各ガントチャートの画像は、日時の軸方向(図12ではX軸方向)に、同じ日時を表す位置が一致するように(リビジョンkfの画像について特定の日時においてY軸方向に線分を引き、これをリビジョンksの画像まで延長した場合に、当該延長した線分が、リビジョンksの画像について上記特定の日時と同じ日時を表す位置にあるように)配列する。
さらに制御部11は、利用者の指示等により、差分データや更新集計情報に基づいてガントチャートの表示態様を変更してもよい。一例として制御部11はリビジョンkf,ksの2つのリビジョン間の比較の処理を行い、リビジョンkf,ks間の差分データを得る。なお、比較の条件としては、利用者から指定され、あるいは予め定められた条件を用いる。
制御部11は、リビジョンkfについてのガントチャートを作成する処理として、記憶部12から行テーブルのリビジョン情報を参照し、指定されたリビジョンkfに係るエントリを抽出する。そして制御部11は、描画の対象となる空の画像情報を記憶部12のワークメモリ上に確保する。また制御部11は、行数情報を参照して、当該行数情報によって表される行数だけ、行を確保する。つまり、予め1行あたりのピクセル数等を定めておき、各エントリの行数情報が表す行数分だけの間隔をおいて、X軸方向に延びる線分(行区画線分)を描画する。
そして当該確保した行の画像部分(行区画線分と行区画線分とで挟まれた部分、以下行画像部分と呼ぶ)の左端など、予め定めた位置に、当該エントリに含まれる行タイトル情報の文字列を配する。
制御部11はまた差分データを参照して、「削除」に関連付けられた行識別情報があるか否かを調べる。ここで「削除」に関連付けられた行識別情報があれば、制御部11は、当該行識別情報に関連する行画像部分の背景を、「削除」されたことを表す色として予め定めた色で塗りつぶす。
次に制御部11は、当該エントリに含まれる行識別情報を参照し、マイルストーン情報テーブルと、スケジュールバー情報とから、当該行識別情報と、指定されたリビジョン(またはデフォルトのリビジョン)を表す情報との双方を含むエントリを抽出する。
制御部11は、マイルストーン情報テーブルから抽出された各エントリについて、エントリに含まれる行識別情報に対応する行内において、エントリに含まれる日時情報が表す位置を演算により求める。また制御部11は差分データを参照して、当該エントリに含まれるマイルストーン識別情報が「変更」のデータとして差分データに含まれているか否かを調べる。ここで差分データに含まれていなければ、例えば灰色等、背景とのコントラストが比較的低い色で予め定めた図形を、先に演算した位置に描画し、当該図形に隣接する位置にエントリに含まれる第一備考情報の文字列を描画する。
また、当該エントリに含まれるマイルストーン識別情報が「変更」のデータとして差分データに含まれていれば、制御部11は、当該エントリに含まれる行識別情報に関連する行画像部分の背景を、「変更」があったことを表す色として予め定めた色で塗りつぶす。また制御部11は、例えば濃い青色等、背景とのコントラストが比較的高い色で予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第一備考情報の文字列を描画する。
さらに制御部11は、スケジュールバー情報テーブルから抽出された各エントリについて、エントリに含まれる行識別情報に対応する行内において、エントリに含まれる開始日時の情報が表す位置(開始位置)と、終了日時の情報が表す位置(終了位置)とを演算する。
そして制御部11は差分データを参照して、当該エントリに含まれるスケジュールバー識別情報が「変更」のデータとして差分データに含まれているか否かを調べる。ここで差分データに含まれていなければ、例えば灰色等、背景とのコントラストが比較的低い色で、上記演算した開始位置から終了位置までの範囲に広がる線分や矩形など予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第二備考情報の文字列を描画する。
また差分データに含まれていれば、制御部11は、当該エントリに含まれる行識別情報に関連する行画像部分の背景を、「変更」があったことを表す色として予め定めた色で塗りつぶす。また制御部11は、例えば濃い青色等、背景とのコントラストが比較的高い色で、上記演算した開始位置から終了位置までの範囲に広がる線分や矩形など予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第二備考情報の文字列を描画する。
さらに制御部11は、リビジョンksについてのガントチャートを作成する処理として、記憶部12から行テーブルのリビジョン情報を参照し、指定されたリビジョンksに係るエントリを抽出する。そして制御部11は、描画の対象となる空の画像情報を記憶部12のワークメモリ上に確保する。また制御部11は、行数情報を参照して、当該行数情報によって表される行数だけ、行を確保する。つまり、予め1行あたりのピクセル数等を定めておき、各エントリの行数情報が表す行数分だけの間隔をおいて、X軸方向に延びる線分(行区画線分)を描画する。
そして当該確保した行の画像部分(行区画線分と行区画線分とで挟まれた部分、以下行画像部分と呼ぶ)の左端など、予め定めた位置に、当該エントリに含まれる行タイトル情報の文字列を配する。
制御部11はまた差分データを参照して、「追加」に関連付けられた行識別情報があるか否かを調べる。ここで「追加」に関連付けられた行識別情報があれば、制御部11は、当該行識別情報に関連する行画像部分の背景を、「追加」されたことを表す色として予め定めた色で塗りつぶす。
次に制御部11は、当該エントリに含まれる行識別情報を参照し、マイルストーン情報テーブルと、スケジュールバー情報とから、当該行識別情報と、指定されたリビジョン(またはデフォルトのリビジョン)を表す情報との双方を含むエントリを抽出する。
制御部11は、マイルストーン情報テーブルから抽出された各エントリについて、エントリに含まれる行識別情報に対応する行内において、エントリに含まれる日時情報が表す位置を演算により求める。また制御部11は差分データを参照して、当該エントリに含まれるマイルストーン識別情報が「変更」のデータとして差分データに含まれているか否かを調べる。ここで差分データに含まれていなければ、例えば灰色等、背景とのコントラストが比較的低い色で予め定めた図形を、先に演算した位置に描画し、当該図形に隣接する位置にエントリに含まれる第一備考情報の文字列を描画する。
また、当該エントリに含まれるマイルストーン識別情報が「変更」のデータとして差分データに含まれていれば、制御部11は、当該エントリに含まれる行識別情報に関連する行画像部分の背景を、「変更」があったことを表す色として予め定めた色で塗りつぶす。また制御部11は、例えば濃い青色等、背景とのコントラストが比較的高い色で予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第一備考情報の文字列を描画する。
さらに制御部11は、スケジュールバー情報テーブルから抽出された各エントリについて、エントリに含まれる行識別情報に対応する行内において、エントリに含まれる開始日時の情報が表す位置(開始位置)と、終了日時の情報が表す位置(終了位置)とを演算する。
そして制御部11は差分データを参照して、当該エントリに含まれるスケジュールバー識別情報が「変更」のデータとして差分データに含まれているか否かを調べる。ここで差分データに含まれていなければ、例えば灰色等、背景とのコントラストが比較的低い色で、上記演算した開始位置から終了位置までの範囲に広がる線分や矩形など予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第二備考情報の文字列を描画する。
また差分データに含まれていれば、制御部11は、当該エントリに含まれる行識別情報に関連する行画像部分の背景を、「変更」があったことを表す色として予め定めた色で塗りつぶす。また制御部11は、例えば濃い青色等、背景とのコントラストが比較的高い色で、上記演算した開始位置から終了位置までの範囲に広がる線分や矩形など予め定めた図形を描画し、当該図形に隣接する位置にエントリに含まれる第二備考情報の文字列を描画する。
こうして制御部11は、リビジョンkf及びksに係るガントチャートの画像を得て、これらを配列して表示する。この表示は例えば図13に例示するように、上下二段になるよう、リビジョンkf及びリビジョンksについての各ガントチャートの画像を配してもよい。この際、リビジョンkf及びリビジョンksについての各ガントチャートの画像は、日時の軸方向(図13ではX軸方向)に、同じ日時を表す位置が一致するように(リビジョンkfの画像について特定の日時においてY軸方向に線分を引き、これをリビジョンksの画像まで延長した場合に、当該延長した線分が、リビジョンksの画像について上記特定の日時と同じ日時を表す位置にあるように)配列する。
さらに制御部11は、指示により、リビジョンkf及びks間の2つのリビジョン間の比較処理により生成した差分データを表の形式で図14に例示するように表示出力してもよい。この際、いずれかのエントリに対応する欄について利用者がマウスをダブルクリックするなど、予め定めた操作が行われたときには、制御部11は、当該エントリに対応する差分データ内のエントリを参照し、当該差分データのエントリに含まれる識別情報を得る。そして、制御部11は、当該得た識別情報に係る図形や行部分画像と、それ以外の画像とを区別可能な態様で(例えば色を変えるなどして)描画して表示してもよい。
さらに制御部11は、指定されたリビジョンkfからリビジョンksまでの更新集計情報を、図11(c)に例示したデータ内容をそのまま、表の形式で表示してもよい。
[動作]
本実施の形態の作業情報管理装置は、以上の構成を備えてなり、次のように動作する。本実施の形態の作業情報管理装置は、利用者が作成し、あるいは更新して保存した一連のリビジョンの作業情報を保持している。
利用者が、始点となるリビジョンkfと、終点となるリビジョンksとを指定して、ガントチャートの表示を指示すると、本実施の形態の作業情報管理装置は、図12に例示したように、指定された各リビジョンのガントチャートを表示する。またここで比較用に着色する指示を利用者が行うと、本実施の形態の作業情報管理装置は、始点となるリビジョンkfと、終点となるリビジョンksとのそれぞれに係る作業情報間での行や、マイルストーン情報、スケジュールバー情報の追加、変更、削除等、利用者が比較の条件として指定した対象についての更新の有無を調べ、更新されていればその内容(追加、変更、削除)を表すべく、ガントチャートを着色するなどしてその表示態様を変更する(例えば図13)。
また利用者が更新集計情報や、差分データの一覧を表示するよう指示すると、作業情報管理装置は、図14に例示したものや、図11(c)をそのままテーブルとして描画したものなど、各情報を表示する。
利用者は、例えば更新集計情報の更新回数を参照し、頻繁に更新されているデータ項目(マイルストーン情報やスケジュールバー情報等)を見いだすなどして、これらを利用する。
また本実施の形態では、例えば利用者が、スケジュールが頻繁に更新される項目を選択的に確認したい場合は、比較の条件として例えばスケジュールバー情報の日時の情報を設定することで、スケジュールバー情報の日時情報の更新があったときを集計させればよい。
[変形例]
またここまでの説明では、比較の条件は行テーブルにおける行数の変化の有無、マイルストーン情報テーブルにおける行識別情報、日時情報、または備考情報の変化の有無、スケジュールバー情報テーブルにおける行識別情報、開始日時、終了日時、または備考情報の変化の有無のいずれか少なくとも一つを含むものとしたが、これに限られず、例えばマイルストーン情報テーブルにおいて、日時情報が「1週以上更新されたもの」、スケジュールバー情報テーブルにおいて終了日時が「1週以上後に更新されたもの」など、更新時の数値の変化を指定してもよい。
制御部11は、例えば処理S46の処理において、比較条件に係る情報が、処理S41、S42で選択したエントリ間で、比較条件を満足しているか否かを調べればよい。例えばマイルストーン情報テーブルにおいて、日時情報が「1週以上更新されたもの」との比較条件であれば、処理S41、S42で選択した各エントリに含まれる日時情報をそれぞれ抽出してその差を演算し、演算された差が1週以上であれば、処理S47にて、差分データに「変更」のデータとして、処理S42で選択した比較先データ中のエントリを特定する情報(当該エントリに含まれる識別情報であってもよい)を追記するようにすればよい。