(57)【特許請求の範囲】
【請求項１】
それぞれが複数のセルを含む１つまたは２つ以上のスプレッドシートのデータを監視および監査するためのシステムであって、
スプレッドシートデータを含むファイル（２０）を格納し得るファイルストア(１０、１４)と、
１またはそれ以上の前記スプレッドシートデータを含むファイルを格納するファイルストアとは別のデータベース(２６)と、
前記１又はそれ以上のスプレッドシートファイルのコンテンツをデータベースにロードする手段と、
監視手段(２２)とを備え、
該監視手段は前記ファイルストア内のスプレッドシートデータの変更を継続的に検出し、セル内の数式の変更を含む前記変更を前記データベースに記録するようにし、
前記監視手段は、最新のバージョン内の各セルと前バージョン内の対応するセルを比較することによって、前記ファイルストア内の最新のバージョンのファイルを以前のバージョンのファイルと比較する比較手段を有し、セルの内容が変更されたと判断された場合に、変更の性質を分類するデータを含んだ記録をデータベースに作成して、前記データベースが各バージョンの個別のスプレッドシートになされた変更の全ての完全な履歴を含み、前回のバージョンおよびそれ以前に保存されたバージョンのスプレッドシートの状態を再現可能なようにしたことを特徴とするシステム。
【請求項２】
前記変更の性質は：データ追加、データ変更、データ削除、関数追加、関数変更、関数削除、データから関数へ、関数からデータへ、セルエラー、関数再計算、スクリプト変更、外部参照変更、指定範囲変更、リンク変更、パスワード変更、シート追加、シート削除、シート名称変更、スプレッドシート名称変更、スプレッドシート削除、スプレッドシート追加、のうちの１つまたは２つ以上として分類されていることを特徴とする請求項１に記載のシステム。
【請求項３】
前記記録には、変更がなされた時間を示すタイムスタンプが含まれていることを特徴とする請求項１または２に記載のシステム。
【請求項４】
前記記録には、変更をしたユーザーを特定するデータが含まれていることを特徴とする請求項１乃至３のいずれかに記載のシステム。
【請求項５】
監視対象のファイルは、前記比較手段によって処理される前に分析され、およびXMLに変換されることを特徴とする請求項１乃至４のいずれかに記載のシステム。
【請求項６】
前記比較手段はセル内の値と式の両方の変更を検出することを特徴とする請求項１乃至５のいずれかに記載のシステム。
【請求項７】
前記比較手段は、最新のセルマトリクス位置が以前のセルマトリクス位置よりも大きい場合に、記録はデータが追加されたことを示し、最新のセルマトリクス位置が以前のセルマトリクス位置よりも小さい場合に、記録はデータが削除されたことを示すことを特徴とする、請求項１乃至６のいずれかに記載のシステム。
【請求項８】
前記監視手段は、前記監視手段が監視するようになっているファイルを生成するネットワーククライアントとは非同期に動作するようにしたことを特徴とする請求項１乃至７のいずれかに記載のシステム。
【請求項９】
請求項１乃至８のいずれかに記載のシステムのロードする手段と監視手段としてコンピュータを機能させることを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スプレッドシート及び他文書におけるデータ及びコードの変更の監査及びトラッキングに関する。
【背景技術】
【０００２】
スプレッドシートアプリケーションは、ユーザーが２次元および３次元配列データを操作することを可能にするコンピュータプログラムである。スプレッドシートアプリケーションのユーザーには２次元配列のセルが表示され、それぞれのセルには数値データ、テキスト、ソフトウェアオブジェクト、または数式が格納されるようになっている。３次元スプレッドシートは、一定の順序を有するこのような配列を複数備えている。セルが数式を含む場合は、数式が定義する計算の結果が通常表示される。数式は、その入力変数の中に、同じ表または他の表の他のセルの値を含むことができる。もちろん他のセルの値は、当該他のセルが含む数式によって計算される結果であっても構わない。このようなセル間の結合は、いくらでも複雑にすることができる。
【０００３】
スプレッドシートは、個人のデータの迅速な計算を行うために用いられるツールとして開発された。これに対し、組織の運営に重要なデータ及び機能は、従来、特定の管理された動作をこれらデータ上で実行するためにプログラマーが開発してきたコンピュータアプリケーションをサポートするデータベースに保存されるものであった。パーソナルコンピュータのパワーの拡大に伴い、コンピュータスプレッドシートは数多くの組織で遍在的になった。従って実際、多くの組織はこのような従来のデータ管理モデルに従わなくなってきている。かつて、プログラムされたデータベースではできない計算を行うために急いで作られたスプレッドシートが、今ではその作成者の業務に中心的な位置を占める必須のツールとなり、実際、ビジネスの運営においても中心的な位置を占めるようになってきている。
【特許文献１】米国特許第５３０３１４６号明細書
【非特許文献１】A paper by Paul Goldwater and Lois S. Mahoney “Collaborate on Spreadsheets Journal of Accountancy Online Issues, January 2004
【非特許文献２】OASIS Open Document Essentials- Using OASIS Open Document XML by J. David Eisenberg, 9 December 2003, Chapter 4 “Text Documents”
【発明の開示】
【発明が解決しようとする課題】
【０００４】
現状においては、ユーザーにとってスプレッドシートの魅力である機能は、組織全体の視点から見ると歓迎すべきものとはいえない。スプレッドシートは簡単に変更することができる。しかし、スプレッドシートのセルの相互接続性は、そのような変更がどのような結果をもたらすか、予測が難しいということを意味する。これは、スプレッドシートが他の者によって作成されたかもしれない別のスプレッドシートに参照されている場合、特に顕著である。さらに、特定の時点におけるスプレッドシートの内容を特定することができないため、スプレッドシートの内容から導き出された結論の背景を辿ることができないことがある。さらに、現代のパーソナルコンピュータのパワーをもってすれば、スプレッドシートアプリケーションのスクリプト言語でいくらでも複雑な計算、動作を行うことが現実的に可能である。しかし、このようなコードは、従来のプログラム言語のプログラマーにはおなじみのバージョン制御および変更トラッキングを受けない。
【０００５】
明らかに、このような状況は大きな組織にとって容認できるものではない。何故なら、データおよび機能の品質管理が不可能であり、さらに財政不正管理を防ぐために必要な、監査可能なビジネス行為（口座の準備など）をビジネス内に構築するのにも妨げとなるからである。
【０００６】
どんな特定の時点におけるスプレッドシートの状態でも再現でき、かつ状態間の変化を質問できるような方法で、スプレッドシートにおいて行われる動作を記録するメカニズムを提供することが有利であると正しく理解した。この際、スプレッドシートの魅力である本来の柔軟性を失わないようにすることが非常に望ましい。
非特許文献１には、複数のユーザに使用されるスプレッドシート内で変更をトラッキングする、Microsoft Excel（商標）などのシステムが記載されている。全ての変更が引き起こされるにつれて、モニタリングおよびストアリングすることによって動作する。示されている図５によると、変更はスプレッドシートのバージョンの形態で記録される。非特許文献２には、実質的に同じであるテキストドキュメントに関係してOpenOffice．org内で使用されるトラッキング機能が第6ページに記載されている。
特許文献１には、様々なバージョンまたはスプレッドシートモデルの「scenarios」を作成および管理するスプレッドシート内のいわゆる「scenario management」が記載されている。スプレッドシートの補正バージョンは、ベースバージョンと比較されてセルの値の差分を決定し、異なるscenariosはベースバージョンからの変更としてストアされる。セル変更は、差分または「delta」として記録されてもよい。システムは「what if?」タイプの分析を提供する。
【課題を解決するための手段】
【０００７】
第１の形態に基づく本発明は、それぞれが複数のセルを含む１つまたは複数のスプレッドシートのデータを監視および監査するためのシステムを提供し、このシステムは、スプレッドシートデータを含むファイルを格納し得るファイルストアと、データベースと、監視手段とを備え、その監視手段は、ファイルストア内のスプレッドシートデータの変更を検出し、その変更をデータベースに記録するようにする。
監視手段は、ファイルストア内の連続したバージョンのファイルを比較するように動作可能な比較手段を含む。これにより、システムが同じファイルの連続して保存されたバージョン間の相違を決定することを可能にしている。さらに詳しくは、比較手段は最新のバージョンの各セルを以前のバージョンの対応するセルと比較し、セルの内容が変更されたことを決定した場合は、変更の記録を作成する。したがって、変更はセル−セル基準に記録され得る。記録は、変更の性質を分類するデータを含んでいる。
【０００８】
データベースに適当なデータを格納することにより、個別のスプレッドシートになされた変更全ての完全な履歴を作成することができる。
ファイルストアは、本発明の様々の実施形態において様々な形態を取り得、様々な要素を含むことができる。例えば、ファイルストアは、ファイルサーバーとワークステーションコンピュータとのうちの１つまたは２つ以上を含むことができる。ファイルストアの要素は、様々な地点に散在しローカルエリアまたはワイドエリアネットワークリンクによって互いに接続されていてもよい。同様に、監視手段も、ローカルエリアまたはワイドエリアのネットワークリンクを用いてファイルストアにアクセスしてもよい。監視手段は、ファイルストア内から監視対象のスプレッドシートを探すファイル位置探索モジュールを含むことが最も好ましい。
【０００９】
システムによって生成された記録を検査することにより、スプレッドシートファイルになされた変更の性質を質的に理解することができる。変更の性質は：データ追加、データ変更、データ削除、関数追加、関数変更、関数削除、データから関数へ、関数からデータへ、セルエラー、関数再計算、スクリプト変更、外部参照変更、指名範囲変更、リンク変更、パスワード変更、シート追加、シート削除、シート名称変更、スプレッドシート名称変更、スプレッドシート削除、スプレッドシート追加、のうちの１つまたは２つ以上に分類することができる。実施例の全てがこれらの分類の全てを有するわけではなく、実施例によっては上記リストにない分類を含んでいてもよい。記録には、いつ変更がなされたかを示すタイムスタンプや変更を行ったユーザーの身元など、追加データが含まれていてもよい。
【００１０】
ここで、二進数フォーマットで格納されたファイルを互いに比較するのが生来困難であることはよく知られている。そこで、本発明のより効果的な実施例においては、監視されているファイルは分析され、テキストベースのフォーマット（XMLなど）等、より処理しやすいフォーマットに変換される。XMLにはさらに、処理を行うツールが多々ある、ならびにテキストベースのシリアル形式及び階層的形式の双方で表示可能である、といった利点もある。
【００１１】
スプレッドシートアプリケーションは、計算ツールとしての発展と並行して、これまでになく強力なスクリプト能力も統合してきた。これにより、今ではスプレッドシートアプリケーションは、強力なプログラミング環境とみなされるまでに発展している。例えば、マイクロソフトエクセルの場合、プログラミング言語であるVisual Basic for Applications (VBA)が高度に複雑なプログラムの実現を可能にするスクリプト言語として備えられている。スプレッドシートデータと同様、これはユーザーに、迅速かつ柔軟にプログラムを作成する能力を提供する。しかしこの柔軟性は、ソフトウェアの開発に対して管理がほぼないことを意味している。特に、バージョンコントロールやソースコード管理のシステムがないため、プログラムコードの変更が何故なされたのか、後から確認することは不可能である。
【００１５】
この問題は本発明を具現するシステムを使用することによって改善され得る。データベースはコードになされた変更の履歴を含み、コードの一定期間における発展及び進化を監視及び監査することができるようにする。
別の形態における本発明は、コンピュータのハードウェアで実行可能であり、本発明の監視手段を形成するコンピュータプログラム製品を提供する。
【００１７】
本発明の実施例の動作によりネットワークのクライアントの動作に干渉することは望ましくなく、本実施例の存在はクライアントのユーザーにはできる限り透明であることが望ましい。このため、本発明の実施例は、ネットワークのクライアントとは非同期に動作することがきわめて望ましい。特に、本実施例がファイルストアに格納されたファイルを処理する間、クライアントの動作が遮断されるべきではない。
【発明を実施するための最良の形態】
【００１８】
図１に示すように、本実施例は既存のビジネスデスクトップおよびネットワーク環境と共に機能するシステムである。動作にあたっては、システムはネットワーク内のスプレッドシートファイルの存在を検出し、ビジネスが管理上の目的で選択したファイルを取り込む。次いでシステムは、これらファイルの内容のデータベースを作成する。最初のデータベースが作成されると、システムは管理されているファイルにおきるイベントを探すべく、ネットワークを監視する。スプレッドシートのファイル保存を（排他的にではなく）含む特定のトリガーイベントがおきると、システムはファイルのコピーを検索し、それを要素パーツに分解し、これをデータベースに保持されているオリジナルと比較する。システムは、データベースになされた変更を保存する。ファイルが名称変更された場合、削除された場合、または移動された場合は、それもデータベースに記録する。システムは、データベースが中央で収集したデータをビジネスが閲覧できるようにしている。このシステムは、既存の技術を使ったポータルを用いることによって、データを収集し分析することができる。
【００１９】
図２に示すように、このシステムは、複数のネットワークドメインにアクセスし、管理対象のファイル維持のための作業を行うことができる。システムは、ファイルの内容を拡張可能マークアップ言語、 Extensible Markup Language (XML)での表現に変換し、このフォーマットを用いて比較を行う。システムは、ファイルの保存、ファイル変更のトラッキング及び検出及び取り込みに際しては、もっとも細かいレベルで作業を行う。データベースはこの大変細かいレベルにおいて入力されている。ビジネスユーザーは、自身のレポートツールや分析の選択をデータに適用することができる。本発明は、データに何が行われるかについて限定するものではない。
【００２０】
図３に示すように、システムはアクセスが許されたドメインにて機能することができる。システムは、ファイル、イベントおよびイベント後バージョンのファイルを探知して、データベースを作成する。
【００２１】
図４に示すように、システムはターゲットのネットワーク環境をスキャンし、監視されるべきファイル全てのリストを引き出す。本発明では、前回スキャン以降新たに作成されたファイルの存在、削除されたファイルの存在を特定する。このスキャンにより、自動ソフトウェアツールまたはビジネスが処理開始（図１）やファイル維持（図２）のためにファイルの取り込みをトリガーすることができるレポートを作成する。
図面の詳細な説明
後の記述は、図面を参照し、参照符号を使用してプロセス中のステートまたはステップである図中のブロックを識別する。上述されたように、図１は、発明の実施形態のハイレベルな概略図である。図１に示されているように、ビジネスデスクトップおよびネットワーキング環境に関連して、発明の好ましい実施形態はターゲット環境１０１内で機能する。
システムの第1の機能は、ターゲット環境１０２内の全てのファイルを識別することである。これは、以下に記述するように、図４内に詳細に示されている。システムの次の機能は、マネージメント１０３の範囲を定義およびセットすることである。これは、特別なファイル、ファイルのネストまたはドメインおよびトリガイベントがマネージメントについて選択１０３されることを許容する。システムの次の機能は、ネットワーク１０４を越えたファイルをキャプチャすることである。このプロセスは、ネットワークにログされた個々のPC内に位置するファイルをキャプチャすることを含む。このプロセスは、図３に詳述されている。システムの次の機能は、ファイルおよびファイルの内容１０５のデータベースを構築することである。システムのさらなる機能は、データを集計し、分散データ１０６の中央集約ストアを作成することである。重要な並行する機能は、データの維持（図１のブロック１０７および図３の３１０）であり、図１の実施形態内のデータ維持のプロセスを示す、後述する、図２に詳細に示される。マネージメント下の様々なファイルが、集合的にファイルストアを構成する、ネットワークを越えたいくらかの異なるPC内にストアされてよい（ブロック１０４として表される）。
図1および特にブロック１０８を再び参照すると、システムは何のファイルが存在するか１０９、ファイルに何の変更が起こったか１１０、および誰がデータをマニピュレートしているか１１１を知らなければならない。このために、全てのデータの監査証跡およびアクティビティの履歴が構築され１１２−１１３、データがシステム１１４によって分析される。
上述のプロセスから結果的に生じるデータが得られるように、システムの次の機能はデータへのポータルアクセスを形成する１１５。ポータル１１６を経由したデータへのアクセスが与えられるかもしれない。他の可能な機能は、報告ツールの提供とファイルまたはアプリケーションを復元する能力である。
図１および図２のプロセス内にストアされたデータの維持に関与する機能は、ここでさらに詳しく説明される。第１のステップとして、上述のように例えばファイル保存機能であり得る、トリガイベント２０１が発生する。つぎに管理下のファイルが取り込まれ２０２、ワークブック２０４を含む様々な部門２０３からの図３に詳述される。例えば、図２に記載されるように、１つのワークブック２が（ｂ）部門に位置し得る一方で、２つのワークブックが（ａ）部門に位置し得る。データ維持の次のステップ２０５において、取り込まれたファイルの内容がＸＭＬに変換される。次のステップ２０６において取り込まれたファイルは、以前のバージョンのファイルと比較されて、発生した変更が探知される。これらの変更が取り込まれ２０７、データベースに入力される２０８。データへのポータルアクセスが形成され２０９、ポータルからのデータへのアクセス２１０が提供される。報告ツール２１１はシステムによってまた提供される。
図１においてファイルを取り込むことに関連した機能は、図３に図示されている。このプロセスは適切なドメインの選択およびアクセス３０１、ワークブック３０４を含む様々な部門からの図４に示されるようなファイルの存在特定３０２ｍファイル取得３０５、管理用ファイル選択３０６、およびファイル内容をＸＭＬに変換すること３０７を含んでいる。バイナリ内に保持されたファイルの親バージョンが取り込まれ３０８、データベース入力３０９される。
ネットワークにログオンされる各ＰＣを含むターゲット環境におけるネットワークを越えてファイルを識別することに関連した機能は、図４に図示される。このプロセスは、ターゲット環境内の適切なドメインの選択およびアクセス取得４０１と、全てのエクセルファイルについてネットワークの探知４０２を含む。このプロセスは複数スキャンを行い動作があるかチェックするサブプロセス４０３、新規作成されたファイルがあるかチェックするサブプロセス４０４、見つからなかったファイルがあるかチェックするサブプロセス４０５を含んでいる。これらのサブプロセスの結果は、見つかったファイルおよび動作につきレポート作成し４０６、ビジネス用にレポート作成する４０７ために使用される。このレポートは、ターゲット環境１０２内の全てのファイルを識別し、図３中のログオンされる個々のＰＣを含むネットワーク１０４を介したファイルの取り込みを可能にする。
【００２２】
実施例のより詳しい記述
本発明の本実施例は、コンピュータのネットワーク内で実施される。このネットワーク内には、任意多数のクライアントがあり、これらクライアントはパーソナルコンピュータであり、ユーザーはこれらパーソナルコンピュータでスプレッドシートアプリケーションを実行してスプレッドシートを展開し、使用することができる。ユーザーは、個人のスプレッドシートファイルをこれらコンピュータに格納してもよい。ファイルは、ネットワークにリンクされたどのドライブからでも監視することができる。いつもではないが通常、重要なスプレッドシートは中央ファイルサーバーに置かれている。またネットワークには監視サーバーが置かれており、ユーザーがスプレッドシートに実行した活動を監視し、および記録する役目を負っている。
【００２３】
図５に示すように、組織内のコンピュータネットワークは任意多数のクライアントコンピュータ１０を有している。各クライアントコンピュータ１０はユーザーに用いられて、スプレッドシートを含むパーソナル文書を作成する。典型的には、各クライアントコンピュータは、スプレッドシートに関連する個人的嗜好と作業習慣とを有する１人のユーザーによって使用される。
【００２４】
各クライアントコンピュータ１０は、ネットワーク１２に接続されている。これは、図示のため、図１には統合されたネットワークとして示されている。しかし、実際の実施例では、多数のサブネット、およびローカルエリアネットワークリンクとワイドエリアネットワークリンクとを有することが多い。
【００２５】
ネットワーク１２には、１つまたは２つ以上のファイルサーバー１４が接続されている。ネットワークのポリシーにより、ユーザーはファイルを自身のクライアントマシン１０若しくはファイルサーバー１４に保存することができる。クライアントコンピュータ１０によるローカル保存と、ファイルサーバー１４とで、多様なファイルストアを形成している。
【００２６】
監視サーバー１６は、ネットワーク１２に接続され、オペレーターのポリシーによってファイルストア全体または一部のみにアクセスできるようになっている。本発明によって提供されるプロセスが行われるのは、監視サーバー１６の内部である。監視サーバー１６の構成は、ネットワーク全体の性質に大きく依存する。監視サーバー１６は、クライアント１０で実行されるソフトウェアの動作の遅れが最小になるように、タスクを処理し得なければならない。監視サーバー１６は、場合によっては単一のマシンでもよいし、場合によってはサーバー４４で複数文書のパラレル処理が可能なように制御されたマシンのクラスターであってもよい。これらに関する詳細は後述される。
【００２７】
図６において、ファイルストア内のスプレッドシートファイル全体が２０で示されている。図６の他のアイテムは、監視サーバー１６の論理コンポーネントである。これらのコンポーネントは、ウォッチングサービス２２と、コントローラサービス２４と、メタ格納データベース２６と、非同期フレームワーク３０とを含み、非同期フレームワーク３０は監視サービス３２及びプロセスサービス３４を有する。システム全体の動作は、タスクメッセージを種々の論理コンポーネントの間で回すことにより制御される。これにより、更なるマシンをクラスターに追加し、タスクメッセージをそれらの間で回すことによって、システムの規模を拡大することが可能であるという利点がある。さらに、監視サーバーがスプレッドシートファイル２０をクライアントと非同期に処理することが可能となり、これによりそのユーザーのスプレッドシートプログラムの動作との干渉を最小限に留めることができる。
【００２８】
ウォッチングサービス２２の機能は、スプレッドシートファイル２０を監視し、それらのうちのいずれかが変更されたときにイベントを立ち上げるものである。変更が検出されると、ファイルが読まれ、その現在の内容と前回ファイルが読まれたときのファイル内容とが比較され、そして特定された変更は次いでデータベースに格納される。こうして、ファイルストアのファイルが変更される度に、記録が生成される。従って、ファイルストアにあるままのファイルから始め、記録された変更を逆に適用することによって、その展開途中の以前の状態のファイルにさかのぼることができる。ウォッチングサービス２２を備えることにより、ファイルの変更時に動作をトリガーするためのフックをスプレッドシートプログラムに備えておく必要がなくなる。
【００２９】
総じて、この実施例はMicrosoftのExcelを用いて形成されたスプレッドシート処理に関する。このアプリケーションは、ファイル名拡張子が一般に“XLS”であるファイル（一般に“XLSファイル”と呼ばれる）にスプレッドシートを格納する。これらは、バイナリファイルである。しかし、本発明の原理は、スプレッドシートデータがどのように格納されるかに依らず、他のアプリケーションで作成されたスプレッドシートにも適用可能である。バイナリファイルについて内容分析を行うのが難しいことはよく知られるところであるので、本実施例ではXLSファイルをまず拡張可能マークアップ言語、Extensible Markup Language (XML)形式による表現に転換するアプローチをとっている。他のスプレッドシートプログラム、特にOpenOffice.org Calcは、XMLをネイティブのファイルフォーマットとして使っている。従って、ファイル処理にあたって変換のステップを省くことができる。
上述のように、この実施例はコンピュータのクラスターに対して実施される。サーバーが行う動作は、個別のタスクとして行われる。タスクオブジェクトが形成されると、タスクキューに置かれる。タスクがキューの先頭にくると、クラスター内の最初に処理可能となるマシンによって処理が行われる。
【００３０】
図７は、全てのタスクが導出される基となる親クラスの構造を図示するものである。各タスクオブジェクト３６により４つの手法が示されている。それらは、操作タスク、開始タスク、実行タスク、終了タスクである。操作タスクは、非同期フレームワークがオブジェクトを開始するための方法である。またこれは、トレーシングコードへのログ記入も行う。タスクが処理中に用いる状態変数を含むトランザクション状態オブジェクトTransaction State Object（TSO）も入力として受け付ける。開始タスク手法は、実行のコンフィギュレーション変数を設定する。実行タスクは、タスクを完了するための全ての機能を行う。終了タスクは、終了動作を全て行う。
【００３１】
図７に図示されたクラスから導出される主要クラス自身が、図８に示されている。これらは、ファイルストアからのファイル検索、ファイルの内容の変換と比較、マクロの処理、データベース内のストアの操作、及び変更情報の操作を行うためのタスクオブジェクトを含む。これらクラスにつき、簡単に述べる。
ファイル検索：このクラスは、ファイルをターゲットの変更位置からコピーする役目を果たす。
【００３２】
変換：このクラスは、XLSファイルを取得し、ファイルをXMLワークシートに解体する役目を果たす。変換クラスは、全てのデルタオペレーションを行うために比較クラスとマクロクラスとを呼び出す。このクラスは、指名された領域を全て解体し、変更を検出する。またこのクラスは、比較及びマクロ分解タスクを非同期フレームワークに変更する。
比較：このクラスは、最新時点での状態を計算及び分類し、「デルタ」と呼ばれる、XMLの２時点間の変更の記載を行う。このクラスは、全種類の変更および全種類のセルを分類し、デルタ変更をそれぞれ関連する変更で関連付ける。このクラスは、以下のアルゴリズムを用いる。
【００３３】
ポインタを前XMLファイルと現ファイルのXMLファイルとから最初のセルに置く。
【００３４】
２つのセルのセルマトリックス位置（行位置、列位置）を比較する。もし現セル位置と前セル位置とが同じであれば、セルの値及び数式とを比較して違いがないかをみる。この比較によって、変更の種類が特定され、および分類される。もしセルが数式を含んでいれば、そのセルは“数式”の種類によりタグが付けられ、これにより固定値を含むセルと数式評価の結果同じ値が表示されるセルとが明確に区別される。セル変化の違いも確立されている。整数値の場合、差は２つの整数の差である。ストリングの差は、各ストリングの長さに基づいて決められる。日付の差は、日数に基づいて計算される。現セル位置が前セル位置よりも大きい場合、「データ追加」の記録がデルタXMLファイルに追加される。もし前セル位置が現セル位置よりも大きい場合、「データ削除」の記録がデルタXMLファイルに追加される。
【００３５】
ファイルのセルマトリクス位置の最も小さいセルから次のセルを取得し、セルマトリクス位置を比較することによって比較処理を再び始める。
【００３６】
この処理を、前および現XMLファイルが共にファイルの最後まで読まれるまで繰り返す。
【００３７】
この処理が終わると、デルタXMLファイルができる。このファイルは、現時点と前時点との間の違いを分類したものが含まれている。
【００３８】
大量ロード：このクラスは、変換／比較タスクによって生成されたデルタファイルを大量挿入する役目を果たす。
【００３９】
XML格納：このクラスは、文書の変換により生成されたXMLファイルを保存する役目を果たす。このクラスは、生成された現XMLファイルを圧縮し、前ファイルを除去して新しいファイルをデータ保存部にアップロードする。
【００４０】
マクロ解体：このクラスは、２時点における２つのプログラムスクリプトの差を計算する。取り込まれたスクリプトは、既存のソースコード制御システム４０に統合されてもよい。
【００４１】
リミットチェッカー：このクラスは、データストア内の変更の種類を監視し、特定のターゲットに対して警告を発する。
図９から図１４は、図８の様々なクラスの操作を図示するものである。これらの図を参照すると、各ケースにおいて、操作タスクメソッド５１０は、ログエントリをトレーシングコード内にするログトレースコール機能５１２をコールする。状態確認オペレーション５１４もまた実行される。開始タスクメソッド５１６は初期変数を設定し５８１、キュー設定を形成する５２０。メタ格納部２６は開始時状態に設定５２２を含んでいる。タスクが完了すると、終了タスクメソッド５２４が、メタ格納部２６内に完了状態を設定する５２６。
図９は図８のファイル検索のクラスのオペレーションを図示している。ファイル検索クラス実行タスクメソッド５３０はファイルを検索する機能５３２と、トランザクション状態オブジェクト(TSO)を経由してファイルが存在するかチェックする機能、非同期フレームワーク３０にファイルを追加する機能を含んでいる。
図１０において図示されるように、変換クラス実行タスクメソッドは、ワークブック（WB）を処理する機能５４０を含んでいる。これはワークブックを開く機能５４２、ワークブックの保護解除する機能５４４、ワークシート（WS）動作リストを計算する機能５４６、ワークブック内に氏名範囲を作成する機能５４８、ワークブック内にマクロを分割する機能５５０、およびXMLファイルとしてワークブックを保存する機能５５２を含んでいる。実行タスクメソッドはXMLワークシートを分割する機能５５４、XMLヘッダーを処理する機能５５６、および各ワークシートをフレームワークに追加する機能５５８を含んでいる。この最後の機能において、比較タスクを発動するトランザクション状態オブジェクト（TSO）は、非同期フレームワーク３０に発行される。非同期巣フレームワーク（AF）結果を取得する機能５６０において、スプレッドシート内の変更を表す「デルタ」のXMLファイルネームを含む比較タスクは、非同期フレームワークから戻されて、ロードデータセット５６２を生成する。各マクロはトランザクション状態オブジェクトをマクロ分解クラス５６６に発行することによって処理され、バルクロード５６８はトランザクション状態オブジェクトをバルクローダクラスに発行することによって実行される。
図１１に図示されるように、マクロ分解実行タスクメソッドは、スクリプトのチェックサムが違うかチェックする機能５７０を含んでいる。トランザクション状態オブジェクトはメタ格納部２６内にファイル格納する機能５７２およびソースコード制御システム４０によって発行される。非同期フレームワーク内でマクロリミットの要求するために機能５７４はフレームワーク３０に提供される。
図１２に図示されるように、比較クラス実行タスクメソッドはメタ格納部２６からワークシートのタイムポイントバージョンを取得する機能５８０を含んでいる。チェックサムをチェックする機能５８２、ワークシートを比較する機能５８４、処理要旨を設定する機能５８６、および比較からの結果のデルタファイル位置リターンの機能５８８も提供される。チェックサムをチェックする機能５８２は、５９０において示されるように、チェックサムが同じであれば「変更なし」と設定する。ワークシート比較機能５８４は、XML要素を追加するための結合されたプロセス５９２を有する。
図１３に図示されるように、大量ロードクラス実行タスクメソッドは、スプレッドシート比較から生成された各デルタファイルを非同期フレームワーク３０に追加するための機能を含んでいる。ロード機能はメタ格納部２６にデータを提供する。ある機能は、非同期フレームワークからの結果を待つ。
最後に、図１４に図示されるように、XMLストレージクラス実行タスクメソッドはXMLファイルを圧縮する機能６１０を含んでいる。圧縮されたXMLファイルは、ファイル格納機能６１２によってメタ格納部２６に格納される。メタ格納部から前ファイルを消去する機能６１４もまた実行される。
【００４２】
本実施例にウェブベースのインターフェースが備えられ、ユーザーがそこからデータベース内のデータにアクセスできる場合、これによってスプレッドシート動作の全てを監視できる中心ポイントを提供する。監視サーバー１６（図５参照）において実行される処理は、データベースに適用されるクエリーを生成し、これらクエリーの結果を基に、ウェブサーバー３８によってウェブブラウザに提供されるページが生成される。クエリーの範囲と生成されるレポートとには、本質的に制限はない。これらは、システムの特定のユーザーの特定の要求に応じることができる。また。同じインターフェースを、システムの構成と維持とに用いることもできる。ウェブベースのインターフェースをデータベースに設置することは日常的に行われる業務であり、ここではこれ以上の細かい説明は行わない。
【００４３】
さらに、クエリーの結果に基づいて警告を生成することもできる。例えば管理者は、特定のスプレッドシートのある部分につき、一連の禁止行為を規定してもよく、または、特定のセルの値が予め定めた範囲の外に移動したときに警告で知らせるようにしてもよい。システムは、警告が発生されるべきことを検出したときに、電子メールメッセージを生成し、そして予め定めたアドレスに送信してもよい。
【００４４】
他のウェブベースインターフェースによって提供される主要スクリーンのいくつかにつき、簡単に述べる。
【００４５】
図１５は、どのファイルが監視されているかをユーザーが見ることができ、およびファイルがリンクされている場合にはリンクされたファイルのヒエラルキーをユーザーが見ることができるスクリーンを示す。
【００４６】
図１６は、スプレッドシート内の特定のセルの値が、時間を経るにつれどのように変遷したかを、ユーザーが監視することができるスクリーンを示す。このスクリーンでは、値はグラフによって示されている。
【００４７】
図１７は、時間を経るにつれスプレッドシートになされた変更の要旨をユーザーに示すスクリーンを示す。各変更の性質及び変更を行った人が特定されている。
【００４８】
図１８は、本発明のソースコード制御の形態を示している。図１９では、右手側の画面が現バージョンのプログラムコードの一部を表示し、左手側の画面は前バージョンのコードを表示している。
かくして、図示されたシステムは、各スプレッドシートが従来の態様で複数のセルから構成されている、スプレッドシート内のデータをモニタリングおよび監査するために有利なシステムを提供する。システムは、クライアントマシン１０および／またはファイルサーバ１４内で実施されてもよいファイルストアを含んでいる。ファイルストア内に、スプレッドシートデータを含んでいるファイル２０が格納される。
システムはメタ格納部２６内のデータベースと、ウォッチングサービス２２を含む監視アレンジメントとを提供する。監視アレンジメントはファイルストア内のスプレッドシートデータにおける変更を検出し、検出された変更をデータベースに記録するように動作する。データベースはこの目的のために使用されることを注意されたい（上述のとおり、従来技術におけるトラッキングされたデータはスプレッドシート自体に格納される。）
監視手段は、比較機能２０６および８４を含んでいる。これはファイルストア内のファイルの連続したバージョンを比較する、すなわち、最新のバージョンを以前のバージョンと比較する。（上述したように、従来技術のシステムは、実行された全ての変更をトラッキングすることを企図しており、最新のバージョンを以前のバージョンと比較するは企図していない。）
比較は、最新のバージョンにおける各セルを以前のバージョンにおける対応するセルと比較することを意味する。セルが変更されたという内容を決定する場合、比較機能はデータベース内に保持された変更の記録を作成する。
各変更の性質は分類される。データベースに格納される変更の記録は、変更の性質を分類するデータを含んでいる。
このシステムにおいて、比較機能は、セル内で、値の変更だけでなく、式の変更をも検出する。
【００４９】
MicrosoftおよびExcelは、マイクロソフト・コーポレーションの商標である。
【図面の簡単な説明】
【００５０】
本発明の実施例を例示として、添付の図面を参照にして詳述する。ここで
【図１】本発明の実施例の概略を示す高レベル模式図である。
【図２】図１の実施例のデータ維持プロセスを示す図である。
【図３】図１の実施例のファイルのキャプチャプロセスを示す図である。
【図４】図１の実施例の部分を示す図である。
【図５】本発明が実施された組織内におけるコンピュータネットワークの全体図である。
【図６】本発明の実施例の主要機能部を示すブロック図である。
【図７】他のタスクのクラスが導出される基となる、基本クラスを示す図である。
【図８】種々のタスクのクラスを示す図である。
【図９】ファイル検索クラスの動作を示す図である。
【図１０】変換クラスの動作を示す図である。
【図１１】マクロ分解クラスの動作を示す図である。
【図１２】比較クラスの動作を示す図である。
【図１３】大量ロードクラスの動作を示す図である。
【図１４】XML保存クラスの動作を示す図である。
【図１５】本実施例の動作中に生成される種々のディスプレイのスクリーン図である。
【図１６】本実施例の動作中に生成される種々のディスプレイのスクリーン図である。
【図１７】本実施例の動作中に生成される種々のディスプレイのスクリーン図である。
【図１８】本実施例の動作中に生成される種々のディスプレイのスクリーン図である。
【図１】
0005312742.tif 000002
【図２】
0005312742.tif 000003
【図３】
0005312742.tif 000004
【図４】
0005312742.tif 000005
【図５】
0005312742.tif 000006
【図６】
0005312742.tif 000007
【図７】
0005312742.tif 000008
【図８】
0005312742.tif 000009
【図９】
0005312742.tif 000010
【図１０】
0005312742.tif 000011
【図１１】
0005312742.tif 000012
【図１２】
0005312742.tif 000013
【図１３】
0005312742.tif 000014
【図１４】
0005312742.tif 000015
【図１５】
0005312742.tif 000016
【図１６】
0005312742.tif 000017
【図１７】
0005312742.tif 000018
【図１８】
0005312742.tif 000019
【図１９】
0005312742.tif 000020