JP2011090598A - 文書検証装置および文書検証方法 - Google Patents
文書検証装置および文書検証方法 Download PDFInfo
- Publication number
- JP2011090598A JP2011090598A JP2009245094A JP2009245094A JP2011090598A JP 2011090598 A JP2011090598 A JP 2011090598A JP 2009245094 A JP2009245094 A JP 2009245094A JP 2009245094 A JP2009245094 A JP 2009245094A JP 2011090598 A JP2011090598 A JP 2011090598A
- Authority
- JP
- Japan
- Prior art keywords
- rule
- information
- column
- verification
- document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Machine Translation (AREA)
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】複数のセルを含む表計算文書の妥当性をセルの位置を含めて検証する。
【解決手段】ルール定義情報データベース23は、セルの位置を求めるための位置情報と、この位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、この位置情報に基づいて求められる位置のセルが条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を格納する。文書検証部125は、ルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に求められた位置のセルがルール定義情報に含まれる条件情報によって示される条件を満たすか否か判別する処理に基づいて、表計算文書24を検証する。ログ出力部126は、検証の結果に応じて、求められたセルの位置を示す情報と、ルール定義情報に含まれるメッセージ情報とを含むログ情報25を記憶部20に記憶させる。
【選択図】図1
【解決手段】ルール定義情報データベース23は、セルの位置を求めるための位置情報と、この位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、この位置情報に基づいて求められる位置のセルが条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を格納する。文書検証部125は、ルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に求められた位置のセルがルール定義情報に含まれる条件情報によって示される条件を満たすか否か判別する処理に基づいて、表計算文書24を検証する。ログ出力部126は、検証の結果に応じて、求められたセルの位置を示す情報と、ルール定義情報に含まれるメッセージ情報とを含むログ情報25を記憶部20に記憶させる。
【選択図】図1
Description
本発明は、文書の妥当性を検証する文書検証装置および文書検証方法に関する。
設計〜製造〜検証の一連の製造業務において中間成果物として数多くの文書が作成される。中間成果物の品質は最終製品成果物の品質に直接影響する。このため、最終製品成果物だけではなく中間成果物である文書に対しても開発中に妥当性を検証することが重要である。
一方、ファイル化された電子文書について、構文や文体に対する制約条件が規定されたルールを用いて文書の内容を検証し、不備があればガイダンスを提示する文書作成支援装置が知られている(例えば、特許文献1参照)。
この文書作成支援装置を利用することで検証作業を効率化し、不備のある文書が後工程へ流出する割合を削減することができる。
この文書作成支援装置を利用することで検証作業を効率化し、不備のある文書が後工程へ流出する割合を削減することができる。
製品の中間成果物として表計算アプリケーションで作られた表計算文書が作成される場合がある。表計算文書はデータが記載されているセルの位置を示す位置情報を含んでいる。セルの位置情報を含んだ検証の例として、例えば、「プログラムチェックリストの消化がもれなく実施されているか」がある。
従って、表計算文書についてはセルの位置情報も含めて検証することが望ましい。
従って、表計算文書についてはセルの位置情報も含めて検証することが望ましい。
しかし、特許文献1に開示された文書作成支援装置は、テキストデータで構成された文書を対象とする。この文書作成支援装置は、セルの位置情報を含めて表計算文書を検証することはできない。
本発明は、上記実情を鑑みて行われたものであり、複数のセルを含む表計算文書の妥当性をセルの位置情報を含めて検証することができる文書検証装置および文書検証方法を提供することを目的とする。
上記目的を達成するために、本発明の文書検証装置は、
複数のセルを含む表計算文書を検証する文書検証装置であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるルール定義情報記憶手段と、
表計算文書を取得する表計算文書取得手段と、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出手段と、
前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記表計算文書取得手段によって取得される表計算文書を検証する検証処理手段と、
前記検証処理手段による検証の結果に応じて、前記求められたセルの位置を示す情報と、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする。
複数のセルを含む表計算文書を検証する文書検証装置であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるルール定義情報記憶手段と、
表計算文書を取得する表計算文書取得手段と、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出手段と、
前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記表計算文書取得手段によって取得される表計算文書を検証する検証処理手段と、
前記検証処理手段による検証の結果に応じて、前記求められたセルの位置を示す情報と、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする。
好ましくは、本発明の文書検証装置は、
フォルダの名前を示すフォルダ名と、当該フォルダ名に対応し、当該フォルダに格納されているドキュメントの種類を示すドキュメント種別識別子とを含むドキュメント定義情報を記憶部に記憶させるドキュメント定義情報記憶手段と、
前記ドキュメント種別識別子と前記ドキュメント種別識別子に対応する1以上のルール識別子とを含む関連付け情報を記憶部に記憶させる関連付け情報記憶手段と、
前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダが前記記憶部に有るか否かを判別し、有る場合に前記記憶部に記憶されているドキュメント定義情報に基づいて当該フォルダ名に対応するドキュメント種別識別子を取得するドキュメント種別識別子取得手段と、
前記記憶部に記憶されている関連付け情報に基づいて、前記ドキュメント種別識別子取得手段によって取得されたドキュメント種別識別子に対応する1以上のルール識別子を求めるルール識別子取得手段と、
を備え、
前記ルール定義情報記憶手段は、複数のルール定義情報を前記記憶部に記憶させ、
各前記ルール定義情報は、ルール識別子と、当該ルール識別子に対応するルールの種別を示すルール種別情報と、当該ルールの種別に応じた前記位置情報と、当該ルールの種別に応じた前記条件情報とを含み、
前記表計算文書取得手段は、前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダおよび当該フォルダの下に配置されているフォルダに含まれる表計算文書を取得し、
前記ルール定義情報読出手段は、前記ルール識別子取得手段によって求められた各ルール識別子を含むルール定義情報を前記記憶部から読み出し、
前記検証処理手段は、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるルール種別情報によって示されるルールの種別に応じてセルの位置を求め、更に当該求められた位置のセルが当該ルールの種別に応じた前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、当該ルールの種別に応じて前記表計算文書を検証し、
前記ログ情報は、更に、検証された各前記表計算文書のファイルパスを示すパス情報を含む、
ことを特徴とする。
フォルダの名前を示すフォルダ名と、当該フォルダ名に対応し、当該フォルダに格納されているドキュメントの種類を示すドキュメント種別識別子とを含むドキュメント定義情報を記憶部に記憶させるドキュメント定義情報記憶手段と、
前記ドキュメント種別識別子と前記ドキュメント種別識別子に対応する1以上のルール識別子とを含む関連付け情報を記憶部に記憶させる関連付け情報記憶手段と、
前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダが前記記憶部に有るか否かを判別し、有る場合に前記記憶部に記憶されているドキュメント定義情報に基づいて当該フォルダ名に対応するドキュメント種別識別子を取得するドキュメント種別識別子取得手段と、
前記記憶部に記憶されている関連付け情報に基づいて、前記ドキュメント種別識別子取得手段によって取得されたドキュメント種別識別子に対応する1以上のルール識別子を求めるルール識別子取得手段と、
を備え、
前記ルール定義情報記憶手段は、複数のルール定義情報を前記記憶部に記憶させ、
各前記ルール定義情報は、ルール識別子と、当該ルール識別子に対応するルールの種別を示すルール種別情報と、当該ルールの種別に応じた前記位置情報と、当該ルールの種別に応じた前記条件情報とを含み、
前記表計算文書取得手段は、前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダおよび当該フォルダの下に配置されているフォルダに含まれる表計算文書を取得し、
前記ルール定義情報読出手段は、前記ルール識別子取得手段によって求められた各ルール識別子を含むルール定義情報を前記記憶部から読み出し、
前記検証処理手段は、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるルール種別情報によって示されるルールの種別に応じてセルの位置を求め、更に当該求められた位置のセルが当該ルールの種別に応じた前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、当該ルールの種別に応じて前記表計算文書を検証し、
前記ログ情報は、更に、検証された各前記表計算文書のファイルパスを示すパス情報を含む、
ことを特徴とする。
好ましくは、各前記ルール定義情報は、関連するルール識別子を示す関連ルール識別子情報を含み、
前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に含まれる前記関連ルール識別子情報に基づいて前記ルール定義情報読出手段に前記関連するルール識別子に対応するルール定義情報を前記記憶部から読み出させ、当該読み出されたルール定義情報に基づいて前記検証処理手段に表計算文書を検証させ、当該検証処理手段による検証の結果により前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記表計算文書を検証させるか否かを判別し、検証させると判別された場合に、前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記検証処理手段に前記表計算文書を検証させる検証制御手段を備える、
ことを特徴とする。
前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に含まれる前記関連ルール識別子情報に基づいて前記ルール定義情報読出手段に前記関連するルール識別子に対応するルール定義情報を前記記憶部から読み出させ、当該読み出されたルール定義情報に基づいて前記検証処理手段に表計算文書を検証させ、当該検証処理手段による検証の結果により前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記表計算文書を検証させるか否かを判別し、検証させると判別された場合に、前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記検証処理手段に前記表計算文書を検証させる検証制御手段を備える、
ことを特徴とする。
好ましくは、前記表計算文書は、行方向に並んだ複数のセルと列方向に並んだ複数のセルで構成され、
前記ルール種別情報は、
前記位置情報に基づいて求められる所定の行と所定の列の位置のセルが前記条件情報によって示される条件を満たすか否かを判別する処理を行うための単項検証ルールを示す単項検証ルール情報と、
前記位置情報に基づいて求められる第1の行と第1の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、前記位置情報に基づいて求められる第2の行と第2の列の位置のセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための2項検証ルールを示す2項検証ルール情報と、
前記位置情報に基づいて求められる第3の行と第3の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第3の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列単項検証ルールを示す列単項検証ルール情報と、
前記位置情報に基づいて求められる第4の行と第4の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第4の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第4の列の中の所定の行の範囲に含まれる各セルと同じ行に属し、かつ、前記位置情報に基づいて求められる第5の列に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列2項検証ルールを示す列2項検証ルール情報と、
前記位置情報に基づいて求められる第6の行と第6の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第6の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行単項検証ルールを示す行単項検証ルール情報と、
前記位置情報に基づいて求められる第7の行と第7の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第7の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第7の行の所定の列の範囲に含まれる各セルと同じ列に属し、かつ、前記位置情報に基づいて求められる第8の行に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行2項検証ルールを示す行2項検証ルール情報と、
を含む、
ことを特徴とする。
前記ルール種別情報は、
前記位置情報に基づいて求められる所定の行と所定の列の位置のセルが前記条件情報によって示される条件を満たすか否かを判別する処理を行うための単項検証ルールを示す単項検証ルール情報と、
前記位置情報に基づいて求められる第1の行と第1の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、前記位置情報に基づいて求められる第2の行と第2の列の位置のセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための2項検証ルールを示す2項検証ルール情報と、
前記位置情報に基づいて求められる第3の行と第3の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第3の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列単項検証ルールを示す列単項検証ルール情報と、
前記位置情報に基づいて求められる第4の行と第4の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第4の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第4の列の中の所定の行の範囲に含まれる各セルと同じ行に属し、かつ、前記位置情報に基づいて求められる第5の列に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列2項検証ルールを示す列2項検証ルール情報と、
前記位置情報に基づいて求められる第6の行と第6の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第6の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行単項検証ルールを示す行単項検証ルール情報と、
前記位置情報に基づいて求められる第7の行と第7の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第7の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第7の行の所定の列の範囲に含まれる各セルと同じ列に属し、かつ、前記位置情報に基づいて求められる第8の行に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行2項検証ルールを示す行2項検証ルール情報と、
を含む、
ことを特徴とする。
好ましくは、前記位置情報は、各セルに記録されているデータを示すデータ情報を含み、
前記検証処理手段は、前記データ情報によって示されるデータが記録されているセルを特定し、当該セルが属する行の位置または列の位置を求める、
ことを特徴とする。
前記検証処理手段は、前記データ情報によって示されるデータが記録されているセルを特定し、当該セルが属する行の位置または列の位置を求める、
ことを特徴とする。
好ましくは、前記検証処理手段は、
前記列単項検証ルールまたは前記列2項検証ルールに応じて表計算文書を検証するとき、第9の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に前記所定の行の範囲に含まれるとみなし、
前記行単項検証ルールまたは前記行2項検証ルールに応じて表計算文書を検証するとき、第10の行に属するセルが所定の列開始条件を満たし、かつ所定の列終了条件を満たさない場合に前記所定の列の範囲に含まれるとみなす、
ことを特徴とする。
前記列単項検証ルールまたは前記列2項検証ルールに応じて表計算文書を検証するとき、第9の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に前記所定の行の範囲に含まれるとみなし、
前記行単項検証ルールまたは前記行2項検証ルールに応じて表計算文書を検証するとき、第10の行に属するセルが所定の列開始条件を満たし、かつ所定の列終了条件を満たさない場合に前記所定の列の範囲に含まれるとみなす、
ことを特徴とする。
また、本発明の文書検証方法は、
複数のセルを含む表計算文書を検証する文書検証方法であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるステップと、
表計算文書を取得する表計算文書取得ステップと、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出ステップと、
前記読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記取得された表計算文書を検証する検証処理ステップと、
前記検証の結果に応じて、前記求められたセルの位置を示す情報と、前記読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする。
複数のセルを含む表計算文書を検証する文書検証方法であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるステップと、
表計算文書を取得する表計算文書取得ステップと、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出ステップと、
前記読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記取得された表計算文書を検証する検証処理ステップと、
前記検証の結果に応じて、前記求められたセルの位置を示す情報と、前記読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする。
本発明によれば、複数のセルを含む表計算文書の妥当性をセルの位置情報を含めて検証することができる。
以下、本発明の実施形態に係る文書検証装置について図面を参照しながら説明する。
本発明の実施形態に係る文書検証装置1は、表計算アプリケーションで作られた表計算文書の妥当性を検証する。文書検証装置1は、図1に示すように、処理部10と、記憶部20と、入力部30と、表示部40とを備える。
処理部10は、CPU(Central Processing Unit)11と、メモリ12とを含む。
メモリ12は、ROM(Read Only Memory)やRAM(Random Access Memory)等を含む。メモリ12は、メニュー表示部121と、ドキュメント情報編集部122と、関連情報編集部123と、ルール編集部124と、文書検証部125と、ログ出力部126とで構成されるプログラムを記憶している。
記憶部20は、ハードディスク装置、光ディスク装置、USBメモリ(Universal Serial Bus)等を含む。記憶部20は、ドキュメント定義情報DB(データベース)21と、関連付け情報DB(データベース)22と、ルール定義情報DB(データベース)23と、複数の表計算文書24と、ログ情報25とを記憶している。
CPU11は、メモリ12に記憶されているプログラムを実行する。
メモリ12は、ROM(Read Only Memory)やRAM(Random Access Memory)等を含む。メモリ12は、メニュー表示部121と、ドキュメント情報編集部122と、関連情報編集部123と、ルール編集部124と、文書検証部125と、ログ出力部126とで構成されるプログラムを記憶している。
記憶部20は、ハードディスク装置、光ディスク装置、USBメモリ(Universal Serial Bus)等を含む。記憶部20は、ドキュメント定義情報DB(データベース)21と、関連付け情報DB(データベース)22と、ルール定義情報DB(データベース)23と、複数の表計算文書24と、ログ情報25とを記憶している。
CPU11は、メモリ12に記憶されているプログラムを実行する。
入力部30は、キーボードやマウス等を含む。入力部30は、ユーザによる操作を受け付ける。
表示部40は、ディスプレイやプリンタ等を含む。表示部40は、メッセージや各種の画面等を表示する。
表示部40は、ディスプレイやプリンタ等を含む。表示部40は、メッセージや各種の画面等を表示する。
メニュー表示部121は、ドキュメント情報編集部122と関連情報編集部123と文書検証部125の呼び出し、および各種初期設定を行う。
ドキュメント情報編集部122は、ドキュメント定義情報(詳細は後述する。)を作成または編集し、そのドキュメント定義情報を記憶部20に記憶されているドキュメント定義情報DB21に格納する。
関連情報編集部123は、関連付け情報(詳細は後述する。)を作成または編集し、その関連付け情報を記憶部20に記憶されている関連付け情報DB22に格納する。また、関連情報編集部123は、ルール編集部124を呼び出す。
ルール編集部124は、ルール定義情報(詳細は後述する。)を作成または編集し、そのルール定義情報を記憶部20に記憶されているルール定義情報DB23に格納する。
ドキュメント情報編集部122は、ドキュメント定義情報(詳細は後述する。)を作成または編集し、そのドキュメント定義情報を記憶部20に記憶されているドキュメント定義情報DB21に格納する。
関連情報編集部123は、関連付け情報(詳細は後述する。)を作成または編集し、その関連付け情報を記憶部20に記憶されている関連付け情報DB22に格納する。また、関連情報編集部123は、ルール編集部124を呼び出す。
ルール編集部124は、ルール定義情報(詳細は後述する。)を作成または編集し、そのルール定義情報を記憶部20に記憶されているルール定義情報DB23に格納する。
文書検証部125は、ドキュメント定義情報DB21と関連付け情報DB22とルール定義情報DB23とを参照して表計算文書24を検証する(詳細は後述する。)。また、文書検証部125は、ログ出力部126にログ情報25の出力を要求する。
ログ出力部126は、ログ情報25を記憶部20に記憶させる(詳細は後述する。)。
ログ出力部126は、ログ情報25を記憶部20に記憶させる(詳細は後述する。)。
図2はトリー状に配置されたフォルダ群の構成の一例を示す。
図2では、ルートフォルダの下に、PCLと、議事録と、設計文書というフォルダ名のフォルダが置かれている。それらの各フォルダの下には、それぞれチームAからチームZまでのフォルダが置かれている。チームAからチームZの各フォルダには各チームが作成した文書が置かれて(格納されて)いる。
PCLというフォルダ名のフォルダ(以下、PCLフォルダという。)には、プログラムチェックリスト(以下、PCLという)が格納されている。PCLは表計算文書24の一例である。PCLには、製品検査でよく実施される検査の検査項目とその消化結果が記載されている。
議事録と設計文書というフォルダ名のフォルダ(以下、それぞれ議事録フォルダと設計文書フォルダという。)には、それぞれ議事録と設計文書が格納されている。議事録と設計文書は、表計算文書24以外の文書であり、例えばテキストデータで構成される文書である。
図2では、ルートフォルダの下に、PCLと、議事録と、設計文書というフォルダ名のフォルダが置かれている。それらの各フォルダの下には、それぞれチームAからチームZまでのフォルダが置かれている。チームAからチームZの各フォルダには各チームが作成した文書が置かれて(格納されて)いる。
PCLというフォルダ名のフォルダ(以下、PCLフォルダという。)には、プログラムチェックリスト(以下、PCLという)が格納されている。PCLは表計算文書24の一例である。PCLには、製品検査でよく実施される検査の検査項目とその消化結果が記載されている。
議事録と設計文書というフォルダ名のフォルダ(以下、それぞれ議事録フォルダと設計文書フォルダという。)には、それぞれ議事録と設計文書が格納されている。議事録と設計文書は、表計算文書24以外の文書であり、例えばテキストデータで構成される文書である。
図3は、PCLの内容の一例を示す。図3のPCLは12行9列のマトリクス状に配置されたセルで構成される。各セルには、”チェック条件”、”チェックID”、”0001”、”空白(ブランク)”等の文字データが記載(記録)されている。
以下では、図2のフォルダ群の構成において、図3に示すPCLについて確認日の記入の妥当性を検証する場合を例として、本実施形態に係る文書検証装置1の動作を説明する。
まず、CPU11は、文書検証装置1の起動直後にメニュー表示部121の処理を実行する。
メニュー表示部121は、ルートフォルダのパスの設定と、検証実行済みのPCLのうちエラーとなったもののみ絞り込んで実行する再検証機能の有効/無効設定と、ドキュメント情報編集部122と関連情報編集部123と文書検証部125の呼び出しとを行うことができる。
メニュー表示部121は、ルートフォルダのパスの設定と、検証実行済みのPCLのうちエラーとなったもののみ絞り込んで実行する再検証機能の有効/無効設定と、ドキュメント情報編集部122と関連情報編集部123と文書検証部125の呼び出しとを行うことができる。
文書検証装置1は、ルートフォルダの下に置かれている各フォルダに格納されているファイルを対象として検証処理を実行する。
また、大量の文書を検証して修正した後、再検証する際に再度全て検証することは非効率的である。このため、文書検証装置1は、再検証機能を有効に設定されると、検証がOKとなった後更新されていないPCLを再度の検証対象から外す。一般的に再検証機能は最初の検証の際には無効に設定され、2回目以降の検証の際に有効に設定される。
また、大量の文書を検証して修正した後、再検証する際に再度全て検証することは非効率的である。このため、文書検証装置1は、再検証機能を有効に設定されると、検証がOKとなった後更新されていないPCLを再度の検証対象から外す。一般的に再検証機能は最初の検証の際には無効に設定され、2回目以降の検証の際に有効に設定される。
以下、ルールの設定、検証の実行の順で説明を進める。
メニュー表示部121は、ドキュメント情報編集部122を呼び出す。ドキュメント情報編集部122は、ドキュメント定義情報の作成、編集、削除等を行うための画面(図示無し)を表示部40に表示する。ドキュメント定義情報DB21は、図4に示すように、ドキュメント種別ID(識別子、Identifier)とドキュメント種別名と一致条件とで構成される。ドキュメント情報編集部122は、ドキュメント種別IDとドキュメント種別名と一致条件とが設定されたドキュメント定義情報を記憶部20のドキュメント定義情報DB21に格納する(記憶させる)。
メニュー表示部121は、ドキュメント情報編集部122を呼び出す。ドキュメント情報編集部122は、ドキュメント定義情報の作成、編集、削除等を行うための画面(図示無し)を表示部40に表示する。ドキュメント定義情報DB21は、図4に示すように、ドキュメント種別ID(識別子、Identifier)とドキュメント種別名と一致条件とで構成される。ドキュメント情報編集部122は、ドキュメント種別IDとドキュメント種別名と一致条件とが設定されたドキュメント定義情報を記憶部20のドキュメント定義情報DB21に格納する(記憶させる)。
本実施形態では、ユーザは、入力部30を用いて表計算文書24が格納されているフォルダのフォルダ名、またはそのフォルダの直上に配置されているフォルダのフォルダ名を一致条件としてドキュメント定義情報DB21に設定する。後述するように、文書検証部125は、ドキュメント定義情報DB21を検索し、フォルダ名と一致するドキュメント種別IDを取得する。
例えば、図2では、検証の対象であるPCLはPCLフォルダの下のチームA〜チームZの各フォルダに格納されている。そして、ドキュメント定義情報DB21には、例えば、ドキュメント種別IDと一致条件としてそれぞれ”1”と”PCL”が設定される。この場合、文書検証部125は、PCLフォルダのフォルダ名”PCL”と一致条件”PCL”とが一致するので、ドキュメント種別IDとして、”1”を取得する。
例えば、図2では、検証の対象であるPCLはPCLフォルダの下のチームA〜チームZの各フォルダに格納されている。そして、ドキュメント定義情報DB21には、例えば、ドキュメント種別IDと一致条件としてそれぞれ”1”と”PCL”が設定される。この場合、文書検証部125は、PCLフォルダのフォルダ名”PCL”と一致条件”PCL”とが一致するので、ドキュメント種別IDとして、”1”を取得する。
文書検証部125は、キーワードマッチングと正規表現によるマッチングを行うことができる。ユーザが、一致条件として、例えば”PCL”、”PC*”、”*L”を設定することにより、PCLを検証の対象とすることができる。
他の表計算文書24を別のルールで検証する場合には、他の表計算文書24をPCLフォルダとは別のフォルダに格納し、ドキュメント定義情報DB21の一致条件にそのフォルダ名を設定すればよい。
他の表計算文書24を別のルールで検証する場合には、他の表計算文書24をPCLフォルダとは別のフォルダに格納し、ドキュメント定義情報DB21の一致条件にそのフォルダ名を設定すればよい。
次に、メニュー表示部121は、入力部30に入力されたユーザの操作に応答して関連情報編集部123を呼び出す。
関連情報編集部123は、図5に示す画面を表示部40に表示する。図5の画面は、ドキュメント種別一覧表示部51と、ドキュメント設定ボタン52と、ルール一覧表示部53と、ルール設定部54とで構成される。
関連情報編集部123は、ドキュメント定義情報DB21を参照してドキュメント定義情報DB21内にあるすべてのドキュメント種別名をドキュメント種別一覧表示部51に表示する。ユーザはドキュメント種別一覧表示部51上で入力部30のマウス等を用いてドキュメント種別名を選択する。
関連情報編集部123は、図5に示す画面を表示部40に表示する。図5の画面は、ドキュメント種別一覧表示部51と、ドキュメント設定ボタン52と、ルール一覧表示部53と、ルール設定部54とで構成される。
関連情報編集部123は、ドキュメント定義情報DB21を参照してドキュメント定義情報DB21内にあるすべてのドキュメント種別名をドキュメント種別一覧表示部51に表示する。ユーザはドキュメント種別一覧表示部51上で入力部30のマウス等を用いてドキュメント種別名を選択する。
関連情報編集部123は、ユーザがドキュメント設定ボタン52を押下すると、ドキュメント情報編集部122を呼び出す。ドキュメント情報編集部122は、上記と同様に、ドキュメント定義情報を作成または編集するための画面(図示無し)を表示部40に表示する。ユーザは、その画面上でドキュメント定義情報を編集することができる。
関連情報編集部123は、ドキュメント定義情報DB21と関連付け情報DB22とルール定義情報DB23とを参照して、ドキュメント種別一覧表示部51で選択したドキュメント種別名に関連するルール全てをルール一覧表示部53に表示する。
関連付け情報DB22は、図6に示すように、ドキュメント種別IDとルールID(識別子)とで構成される。関連付け情報DB22のドキュメント種別IDはドキュメント定義情報DB21のドキュメント種別IDを指す。一方、関連付け情報DB22のルールIDはルール定義情報DB23のルールIDを指す(詳細は後述する)。この関連付け情報DB22の構成によりドキュメント種別IDに対応する1つのドキュメント種別に対して複数のルールを関連付けることができる。
図5に示す画面のルール設定部54には、新規ボタン、編集ボタン、削除ボタン、コピーボタンとコピー先ドキュメント選択欄が表示される。ユーザは、入力部30のマウス等を用いてこれらのボタンを押下することにより、ドキュメント種別一覧表示部51で選択されているドキュメント種別に対する新規ルールの追加、ルール一覧表示部53で選択状態となっているルールの編集・削除、コピー先ドキュメント選択欄で選択されたドキュメント種別からドキュメント種別一覧表示部51で選択されているドキュメント種別へのルールのコピーを行うことができる。
例えば、編集ボタンが押下された場合には、関連情報編集部123はルール定義情報DB23から現在選択中のルールの詳細情報を読み込み、読み込んだ内容を反映させた状態でルール編集部124を呼び出す。新規ボタンが押下された場合は、関連情報編集部123は初期状態でルール編集部124を呼び出す。ルール編集部124でルールの編集処理または作成処理が完了した時点で、関連情報編集部123は関連付け情報DB22に関連付け情報を登録する。
関連情報編集部123から呼び出されるルール編集部124は、図7に示す画面を表示する。
図7の画面は、ルール種別設定部61、テンプレート情報設定部62、座標・一致条件設定部63、プレビュー機能部64から構成される。登録ボタンが押下されると入力不足のチェックを行い、問題がある場合は不足箇所を提示し、問題がなければルール定義情報DB23と関連付け情報DB22にそれぞれルール定義情報と関連付け情報を格納する。
図7の画面は、ルール種別設定部61、テンプレート情報設定部62、座標・一致条件設定部63、プレビュー機能部64から構成される。登録ボタンが押下されると入力不足のチェックを行い、問題がある場合は不足箇所を提示し、問題がなければルール定義情報DB23と関連付け情報DB22にそれぞれルール定義情報と関連付け情報を格納する。
図8は、ルール定義情報DB23に格納されるルール定義情報の一例を示す。ルール定義情報は、ルール識別部とルール定義部とで構成される。ルール識別部はルールID、および図7のルール種別設定部61とテンプレート情報設定部62で設定される各項目とで構成される。また、ルール定義部は、図7の座標・一致条件設定部63で設定される各項目で構成される。
次に、図9〜13を参照しながら個々のルールについて説明する。なお、各ルールについて説明した後、図7について詳細に説明する。
図7のルール種別設定部61のルール種別の欄には、予め用意された6種類のルール種別がプルダウンメニューとして表示される。ユーザはこの6種類のルール種別の中からルールを選択する。6種類のルールは表計算文書24の検証パターンをほぼ網羅している。
まず、特定の位置にあるセルに記載されている文字列データをチェックするための単項検証ルールと2項検証ルールについて説明する。
図7のルール種別設定部61のルール種別の欄には、予め用意された6種類のルール種別がプルダウンメニューとして表示される。ユーザはこの6種類のルール種別の中からルールを選択する。6種類のルールは表計算文書24の検証パターンをほぼ網羅している。
まず、特定の位置にあるセルに記載されている文字列データをチェックするための単項検証ルールと2項検証ルールについて説明する。
単項検証ルールは、特定の行と列の位置にあるセルの内容が妥当かどうかを検証するためのルールである。
単項検証ルールに基づいて検証するに当たり必要な情報は行の位置、列の位置、一致条件の3つである。例えば、図9の241の位置にあるセルが”PCL”と記載されているか否かをチェックする場合、図7の画面の確認先の行欄に「2」、列欄に「2」、一致条件に「PCL」を設定する。
単項検証ルールに基づいて検証するに当たり必要な情報は行の位置、列の位置、一致条件の3つである。例えば、図9の241の位置にあるセルが”PCL”と記載されているか否かをチェックする場合、図7の画面の確認先の行欄に「2」、列欄に「2」、一致条件に「PCL」を設定する。
また、2項検証ルールは前提条件を満たした場合のみ確認先で指定したチェックを行う。2項検証ルールは対になって記入されていなければならない文字列データをチェックするために用いるルールである。
詳細に言い換えると、2項検証ルールでは、CPU11は、前提として指定されるセルに対して単項検証を行い、前提条件を満たすかどうかをチェックする。そして、もし前提条件を満たした場合には別に指定した確認先のセルも同様に単項検証を実行する。必要な情報は前提条件を設定するための行の位置、列の位置、一致条件と確認先の条件を設定するための行の位置、列の位置、一致条件の計6つである。例えば、図9の242で承認日欄が記入されている場合に承認者欄の記入が漏れていないかどうかをチェックしたい場合、図7の画面の前提の行欄に「4」、列欄に「3」、一致条件欄に「.+」を設定し、確認先の行欄に「5」、列欄に「3」、一致条件欄に「.+」を設定する。ここで「.+」は正規表現であり、一文字以上の文字列を意味する。
次に、図10を用いて列単項検証ルールについて説明する。列単項検証ルールでは、CPU11は、2項検証ルールと同様に前提として指定されるセルが前提条件を満たす場合のみ確認先のセルをチェックする。ただし、CPU11は、チェックの範囲を単独セルから1列に拡張し、1列の中で一致条件を満たさないセル(または一致条件を満たすセル)を全て検出する。
チェック対象となる列の位置は、たとえば直値で指定する。行の位置は指定しない。例えば、図10で「B」、「○」、「×」を含む列をチェックする場合、その列の位置を2と指定する。
チェック対象となる列の位置は、たとえば直値で指定する。行の位置は指定しない。例えば、図10で「B」、「○」、「×」を含む列をチェックする場合、その列の位置を2と指定する。
ただし、チェックの対象である列の位置が変動する場合、チェック範囲がずれる問題がある。このような場合、列の持つ特徴を利用して列の位置を定めることによりこの問題を解決することができる。すなわち、位置情報の中にセルに記録されているデータを示すデータ情報を含める。そして、CPU11は、データ情報によって示されるデータが記録されているセルを特定する。これにより、CPU11は、セルが属する列の位置を求めることができる。なお、データは¥d{3}等の正規表現で指定することもできる。
これにより、例えば、表計算文書24の中に列に含まれるセルに何の項目が記載されているかを示す項目名の記載されたセルが含まれている場合、項目名をキーとして検索することにより列を特定することができる。この場合、項目名がデータ情報によって示されるデータである。
例えば、図10で「○」、「×」が記載されている列に対してチェックを行いたい場合、まず項目行の位置を調べると2行目に項目行が存在している。そこで2行目の項目行に対して「○」、「×」が記載されている列の項目名であるBを探し出すことで列位置を特定することができる。
これにより、例えば、表計算文書24の中に列に含まれるセルに何の項目が記載されているかを示す項目名の記載されたセルが含まれている場合、項目名をキーとして検索することにより列を特定することができる。この場合、項目名がデータ情報によって示されるデータである。
例えば、図10で「○」、「×」が記載されている列に対してチェックを行いたい場合、まず項目行の位置を調べると2行目に項目行が存在している。そこで2行目の項目行に対して「○」、「×」が記載されている列の項目名であるBを探し出すことで列位置を特定することができる。
次に問題となるのはチェック対象となる列のチェック範囲である。通常、表計算ソフトの限界値まで範囲を拡大することはなくある範囲内に留めている。そこで、最も簡単にチェック範囲を指定する方法は、チェック範囲の終了条件としてセルの最大数を指定することである。ただし、表計算文書24のように表形式で記載されている文書では表の行数が流動的となっている場合がある。このような場合、セルの最大数を指定するだけでは対応できない。
そのため本実施形態では、チェック範囲の終了条件として、終了条件の判定用の列を指定し、判定用の列に含まれるセルが一致条件を満たすときに終了する方法を採用する。すなわち、CPU11は、判定用の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に所定の行の範囲に含まれるとみなして、表計算文書24を検証する。一方、CPU11は、判定用の列に属するセルが所定の行終了条件を満たす場合に、表計算文書24の検証を終了する。
この方法により、CPU11は、例えば判定用の列においては空白が記載されているセルが検出されたときに終了することができる。これにより、列方向での終了範囲を柔軟に決めることができ、余計なチェックを省略することができる。
そのため本実施形態では、チェック範囲の終了条件として、終了条件の判定用の列を指定し、判定用の列に含まれるセルが一致条件を満たすときに終了する方法を採用する。すなわち、CPU11は、判定用の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に所定の行の範囲に含まれるとみなして、表計算文書24を検証する。一方、CPU11は、判定用の列に属するセルが所定の行終了条件を満たす場合に、表計算文書24の検証を終了する。
この方法により、CPU11は、例えば判定用の列においては空白が記載されているセルが検出されたときに終了することができる。これにより、列方向での終了範囲を柔軟に決めることができ、余計なチェックを省略することができる。
例えば、図10に示すように、「A」が記載されているセルが含まれる列(以下、A列という。)に含まれる各セルに項目番号が記載されており、「B」が記載されているセルが含まれる列(以下、B列という。)に項目番号に合わせて「○」または「×」が記載されているとする。このとき、チェックすべき行の範囲はA列に含まれるセルに記載されている数値が1となる3行目から5となる7行目までとなる。終了条件として最大数を指定する場合、行数が固定である前提ならば開始条件として3行目、終了条件として最大数7を指定すれば3行目から7行目までのB列に含まれる各セルのそれぞれの文字列データをチェックすることができる。
また、表の行数が変動することを加味してB列に含まれる各セルをチェックしたい場合は、A列を判定用の列として設定し、終了条件としてA列に含まれるセルが空欄となった場合に終了するように設定する。これにより、3行から7行までのB列に含まれる各セルのそれぞれの文字列データをチェックすることができる。また、仮にB列の行数が増えても対応することができる。
また、表の行数が変動することを加味してB列に含まれる各セルをチェックしたい場合は、A列を判定用の列として設定し、終了条件としてA列に含まれるセルが空欄となった場合に終了するように設定する。これにより、3行から7行までのB列に含まれる各セルのそれぞれの文字列データをチェックすることができる。また、仮にB列の行数が増えても対応することができる。
次に図11を用いて、列2項検証ルールについて説明する。列2項検証ルールは列単項検証ルールの前提条件部分を列の範囲指定に拡張したルールである。列2項検証ルールでは前提条件の列と確認先の列が指定される。CPU11は、前提条件の列に含まれるセルが前提項目で設定した一致条件(前提条件)を満たした場合に、この前提条件の列に含まれるセルと同じ行に含まれ、かつ、確認先の列に含まれるセルが確認先項目で設定した一致条件(確認先条件)を満たしているかどうか、チェックすべき行の範囲の終わりまで繰り返しチェックする。
例えば図11でB列に日付が入っている場合に「F」が記載されているセルが含まれる列(以下、F列という。)に属する各セルに「○」または「×」が記載されているかどうかをチェックする場合、ループ終了判定用の列をA列に設定、開始条件を3行目、終了条件をA列に含まれるセルが空欄となった場合に終了するように設定し、前提条件の列をB列、一致条件(前提条件)を日付の正規表現に設定する。ここで、日付を示す正規表現は「¥d{1,2}/¥d{1,2}」である。¥d{1,2}は1桁または2桁の数値を意味する。
また、確認先の列をF列と設定し、一致条件(確認先条件)を[○|×]と設定する。このとき3行目のB列に含まれるセルに記載されている文字列は「1/1」で日付の正規表現を満たしている。このため、CPU11は、3行目のF列に含まれるセルに記載されている文字列が「○」または「×」のいずれかに一致するか否かチェックを行うが、3行目のF列に含まれるセルは空欄のため一致条件(終了条件)を満たさない。この場合、CPU11は、3行目のF列に含まれるセルはエラーであることを指摘する。次に、CPU11は、4行目のA列に含まれるセルが空欄かどうか判定を行う。図11では「2」の文字列があり空欄ではない。このため、前提条件の列であるB列のチェックを行う。B列に含まれるセルは空欄であり、一致条件(前提条件)を満たさないため次の行へスキップする。以降A列に含まれるセルが空欄になる(終了条件を満たす)まで各行で前提条件と確認先条件の判定処理を実施していく。
なお、列2項検証ルールは、列の特定、列のチェック範囲の指定については列単項検証ルールと同様であるため、これらについての説明を省略する。
次に図12を用いて、行単項検証ルールについて説明する。行単項検証ルールは、チェックの対象を列単項検証ルールにおける列から行に変えたものである。行単項検証ルールは、前提として指定されるセルが前提条件を満たす場合に、このセルが含まれる1行の中で一致条件を満たさないセル(または一致条件を満たすセル)を全て検出するルールである。
例えば、図12で数値のデータがある行を空欄のある列までチェックしたい場合、2列目に項目が記載されているセルを含む列が存在しているので、2列目において項目名としてEが記載されているセルを含む行を探し出す。Eが記載されているセルを含む行には数値データが記載されている。これにより、確認先の行の位置を特定することができる。
次に確認先の一致条件として数値かどうかを示す正規表現¥dを指定、判定用の行をチェック対象と同じ行に設定し、開始条件を3列目、終了条件をセルに空白が記載されている場合に設定する。この時図12のE列のある5行目について3列目から7列目まで走査が行われ、3列目から7列目の値は順に1,2,3,4と全て数値であり一致条件(確認先条件)を満たすため正常なデータとして扱われる。
次に確認先の一致条件として数値かどうかを示す正規表現¥dを指定、判定用の行をチェック対象と同じ行に設定し、開始条件を3列目、終了条件をセルに空白が記載されている場合に設定する。この時図12のE列のある5行目について3列目から7列目まで走査が行われ、3列目から7列目の値は順に1,2,3,4と全て数値であり一致条件(確認先条件)を満たすため正常なデータとして扱われる。
なお、行単項検証ルールは、行の特定、行のチェック範囲の指定について列単項検証ルールにおける列を行に変えたものとみなすことができ、列単項検証ルールと同様であるため、行の特定、行のチェック範囲の指定についての説明を省略する。
次に図13を用いて、行2項検証ルールについて説明する。行2項検証ルールはチェックの対象を列2項検証ルールにおける列から行に変えたものである。行2項検証ルールでは、前提条件用の行と確認先の行が指定される。CPU11は、前提条件の行に属するセルが前提項目で設定した一致条件(前提条件)を満たした場合に同じ列で確認先の行に属するセルが確認先項目で設定した一致条件(確認先条件)を満たしているかどうか、行のチェック範囲の終わりまで繰り返しチェックする。
例えば、図13の表計算文書24において、数値が記載されている行の2列目がEである場合に、2列目がCである行にXが記載されているかどうかを3列目から6列目までチェックする処理について説明する。CPU11は、まず項目が記載されている2列目から、数値の記載されている行に含まれるEとXの記載されている行に含まれるCとを探し出すことで前提条件の行と確認先の行とを特定する。次に、CPU11は、5行3列目のセルから表計算文書24の右方向へ走査を開始する。CPU11は、5行3列目のセルには1と数値が記載されており前提条件を満たすので、3行3列目のセルの内容を確認する。CPU11は、3行3列目のセルには空白が記載されており一致条件(確認先条件)であるXとは異なるため、エラーを出力する。次に、CPU11は、5行4列目のセルにはBが記載されており前提条件である数値ではないため、スキップする。次に、CPU11は、5行5列目のセルには3が記載されているため、3行5列目のセルをチェックする。CPU11は、3行5列目のセルにはXが記載されており確認先条件と一致しているため、問題無しと判定する。次に、CPU11は、5行6列目のセルにはCが記載されており前提条件である数値ではないため、スキップする。CPU11は、5行6列目のセルが空白であり、終了条件を満たすため処理を終了する。
なお、行2項検証ルールは、行の特定、行のチェック範囲の指定について列2項検証ルールにおける列を行に変えたものとみなすことができ、列2項検証ルールと同様であるため、行の特定、行のチェック範囲の指定についての説明を省略する。
各ルール種別の説明は以上で、再びルール編集部124が表示する図7に示す画面の説明に戻る。
ルール種別設定部61では、ルール種別欄のプルダウンメニューにより上述した6種類のルールのいずれかを選択し、ルール名欄にルールの名前を記入する。
ルール種別設定部61では、ルール種別欄のプルダウンメニューにより上述した6種類のルールのいずれかを選択し、ルール名欄にルールの名前を記入する。
テンプレート情報設定部62では、ルール実行の前提条件とするための別ルールとの関連付けを設定する。
テンプレート情報設定部62の「テンプレートルールにする」欄にマークを付すと、図7の画面上で編集中のルールは関連テンプレート用のルールとなる。このとき、関連テンプレートID欄のプルダウンメニューを選択することはできない。
テンプレート情報設定部62の「テンプレートルールにする」欄にマークが付されていないとき、関連テンプレートID欄のプルダウンメニューにより関連テンプレートのルールIDを選択することができる。これにより、図7の画面上で編集中のルール(以下、元のルールという。)を関連テンプレートのルールIDに関連付けることができる。元のルールを関連テンプレートの別ルールと関連付けた場合、検証実行時に検証対象の文書が前提条件となった関連テンプレートのルールを満たさない場合、元のルールは検証されない。
テンプレート情報設定部62の「テンプレートルールにする」欄にマークを付すと、図7の画面上で編集中のルールは関連テンプレート用のルールとなる。このとき、関連テンプレートID欄のプルダウンメニューを選択することはできない。
テンプレート情報設定部62の「テンプレートルールにする」欄にマークが付されていないとき、関連テンプレートID欄のプルダウンメニューにより関連テンプレートのルールIDを選択することができる。これにより、図7の画面上で編集中のルール(以下、元のルールという。)を関連テンプレートのルールIDに関連付けることができる。元のルールを関連テンプレートの別ルールと関連付けた場合、検証実行時に検証対象の文書が前提条件となった関連テンプレートのルールを満たさない場合、元のルールは検証されない。
文書を単純に検証した場合、想定していない文書フォーマットが混じっているとエラーを誤検出する可能性がある。検証対象の文書が関連テンプレートのルールを満たすか否かをチェックすることにより、検証対象の文書のフォーマットが想定したものであるときのみ元のルールで検証されるため、エラーの誤検出を防止することができる。
座標・一致条件設定部63では、ルール種別設定部61で選択したルール種別に応じて表計算文書24の検証に必要な座標・一致条件を設定する。
選択されたルール種別ごとにルール種別設定部61で入力すべき項目が異なる。そこで、ルール種別設定部61で入力が不要な項目については非活性状態にして入力できないようにする。
選択されたルール種別ごとにルール種別設定部61で入力すべき項目が異なる。そこで、ルール種別設定部61で入力が不要な項目については非活性状態にして入力できないようにする。
前提の入力部では、前提条件に当たるセルの座標(位置)と一致条件を設定する。CPU11は、前提条件を満たす時のみ確認先条件を満たすか否か検証する。各ルール種別で検証する範囲を前提条件-確認先条件で表すと、2項検証(セル-セル)、列単項検証(セル-列)、行単項検証(セル-行)、列2項検証(列-列)、行2項検証(行-行)の5パターンがある。
前提条件の検証範囲がセルとなっているルール種別では、前提の入力部で行欄、列欄、一致条件欄の全てを入力することが必要である。
前提条件の検証範囲が列となっているルール種別では、前提の入力部で行欄(項目行に対するループの開始行)と一致条件欄を入力することが必要である。このとき、列欄には列を指定できるが対象の列位置が変動するケースでは列欄を空白にし、段落[0064]で説明する項目の入力部にて必要な項目を記入する必要がある。前提条件の検証範囲が行となっているルール種別では、前提の入力部で列欄(ある行に対するループの開始列)と一致条件欄を入力することが必要である。このとき、行欄には行を指定できるが対象の行位置が変動するケースでは行欄を空白にし、段落[0064]で説明する項目の入力部にて必要な項目を記入する必要がある。
前提条件の検証範囲がセルとなっているルール種別では、前提の入力部で行欄、列欄、一致条件欄の全てを入力することが必要である。
前提条件の検証範囲が列となっているルール種別では、前提の入力部で行欄(項目行に対するループの開始行)と一致条件欄を入力することが必要である。このとき、列欄には列を指定できるが対象の列位置が変動するケースでは列欄を空白にし、段落[0064]で説明する項目の入力部にて必要な項目を記入する必要がある。前提条件の検証範囲が行となっているルール種別では、前提の入力部で列欄(ある行に対するループの開始列)と一致条件欄を入力することが必要である。このとき、行欄には行を指定できるが対象の行位置が変動するケースでは行欄を空白にし、段落[0064]で説明する項目の入力部にて必要な項目を記入する必要がある。
確認先の入力部では、確認先条件に当たるセルの座標(位置)と一致条件を設定する。
確認先条件の検証範囲がセルとなっているルール種別では、前提の入力部と同様に確認先の入力部で行欄、列欄、一致条件欄の全てを入力することが必要である。
確認先条件の検証範囲が列となっているルール種別では、確認先の入力部で行欄(項目行に対するループの開始行)と一致条件欄を入力することが必要である。このとき、列欄には入力できず、列欄は空白である。確認先条件の検証範囲が行となっているルール種別では、確認先の入力部で列欄(ある行に対するループの開始列)と一致条件欄を入力することが必要である。このとき、行欄には入力できず、行欄は空白である。
確認先条件の検証範囲がセルとなっているルール種別では、前提の入力部と同様に確認先の入力部で行欄、列欄、一致条件欄の全てを入力することが必要である。
確認先条件の検証範囲が列となっているルール種別では、確認先の入力部で行欄(項目行に対するループの開始行)と一致条件欄を入力することが必要である。このとき、列欄には入力できず、列欄は空白である。確認先条件の検証範囲が行となっているルール種別では、確認先の入力部で列欄(ある行に対するループの開始列)と一致条件欄を入力することが必要である。このとき、行欄には入力できず、行欄は空白である。
ただし、検証する範囲が列-列、行-行のルール種別では、前提条件の検証範囲と確認先条件の検証範囲のループ開始行またはループ開始列が同じであるため、確認先の入力部では一致条件欄のみ設定する。このとき、行欄と列欄はいずれも空白である。
項目の入力部は、列単項検証(セル-列)、行単項検証(セル-行)、列2項検証(列-列)、行2項検証(行-行)のように列または行方向に走査するルール種別において対象となる列、行位置が変動するケースに使用される。このようなルール種別において、項目の入力部では、項目名が記載されている行または列の位置と、前提条件に当たる行または列を特定するためのデータと、確認先条件に当たる行または列を特定するためのデータと、ループ停止用に該当する列または行とを設定する。
図11の例では、「A〜G」が記載されている2行目が項目行に該当する。また、「B」と「F」がそれぞれ前提条件と確認先条件に当たる列を特定するためのデータに該当する。このとき、項目の入力部の行欄に「2」、前提欄に「B」、確認先欄に「F」を設定する。なお、項目の入力部の列欄とループ停止用欄は入力されず、空白である。
図11の例では、「A〜G」が記載されている2行目が項目行に該当する。また、「B」と「F」がそれぞれ前提条件と確認先条件に当たる列を特定するためのデータに該当する。このとき、項目の入力部の行欄に「2」、前提欄に「B」、確認先欄に「F」を設定する。なお、項目の入力部の列欄とループ停止用欄は入力されず、空白である。
ループ停止条件の入力部は、列単項検証(セル-列)、行単項検証(セル-行)、列2項検証(列-列)、行2項検証(行-行)のような列、行方向に走査するルール種別において使用される。このようなルール種別において、ループ停止条件の入力部では走査の停止条件を設定する。
ループ停止条件の指定方法として、最大範囲を指定する直値に該当する行または列まで走査する方法、または特定の行または列に属するセルが停止パターンにマッチする(終了条件を満たす)まで走査する方法を選択できる。
ループ停止条件の指定方法として、最大範囲を指定する直値に該当する行または列まで走査する方法、または特定の行または列に属するセルが停止パターンにマッチする(終了条件を満たす)まで走査する方法を選択できる。
出力の入力部では、確認先の入力部で入力された一致条件(確認先条件)を満たした場合にエラーにするのか、満たさない場合にエラーにするのかの選択と、エラーの際にログ情報25に記録するエラーメッセージ内容を設定する。
例えば、出力の入力部の「条件を満たさない場合エラー」欄にマークを付さない場合、図8に示すルール定義情報DB23の例において、エラー反転出力フラグ欄にOFFが記載される。
例えば、出力の入力部の「条件を満たさない場合エラー」欄にマークを付さない場合、図8に示すルール定義情報DB23の例において、エラー反転出力フラグ欄にOFFが記載される。
プレビュー機能は、座標・一致条件設定部63で設定した内容が妥当かどうかを予め一つの文書に対してチェックする機能である。プレビュー機能部64の「プレビュー」ボタンが押下されると、「プレビュー対象ファイルパス」で指定したファイルパスに置かれた表計算文書24に連動する表計算アプリケーションを起動させ、表計算文書24を検証し、座標・一致条件設定部63で入力された項目と、検証結果をそれぞれ色づけして表示部40に表示する。
次に、図3に示すPCLについて確認日の記入の妥当性を検証するルールの設定例を説明する。
検証する対象はチェックID欄がある場合の確認日欄のみであるため、適用するルール種別は”行2項検証ルール”となる。また、確認日欄は図3の12行目に存在するが、2行目〜10行目はチェック内容が記載されておりチェック内容次第では確認日欄の行数が変わる恐れがある。このため、確認日欄の行数が変わっても検証できるように確認日の行を「確認日」の項目を元に抽出する。確認日の項目は1列目固定である。
検証する対象はチェックID欄がある場合の確認日欄のみであるため、適用するルール種別は”行2項検証ルール”となる。また、確認日欄は図3の12行目に存在するが、2行目〜10行目はチェック内容が記載されておりチェック内容次第では確認日欄の行数が変わる恐れがある。このため、確認日欄の行数が変わっても検証できるように確認日の行を「確認日」の項目を元に抽出する。確認日の項目は1列目固定である。
この場合、図14に示すように、項目の入力部の列欄に”1”、確認先欄に”確認日”、確認先の入力部の一致条件欄に”¥d{1,2}/¥d{1,2}”(日付を意味する正規表現)を設定する。次に、確認日をチェックすべき列(3列目)の1行目には必ず4桁の数字で記載されたチェックIDが入る特徴を利用し、図14の確認先の入力部の列欄に”3“、ループ停止条件の入力部の行欄に”1”、停止パターンに”.+”を設定する。検証する列の範囲の開始位置は図3では3列目であるが、間に列が挿入されてずれるケースを考慮して、前提の入力部の一致条件欄に”¥d{4}”(チェックIDを意味する4桁の数字の正規表現)を設定する。
ここまでルールの設定について説明した。次にルールの実行について説明する。
表計算文書24を検証するユーザは、図1のメニュー表示部121を用いて処理対象のフォルダのルートパスを設定する。ルートパスが設定されると、メニュー表示部121は文書検証部125を呼び出す。
表計算文書24を検証するユーザは、図1のメニュー表示部121を用いて処理対象のフォルダのルートパスを設定する。ルートパスが設定されると、メニュー表示部121は文書検証部125を呼び出す。
図15は、文書検証部125における文書検証処理の流れを示す。
CPU11は、後述するファイル走査処理を行い、フォルダに対応するドキュメント種別を選定し、検証の対象である表計算文書24を取得する(S101)。
CPU11は、次に検証の対象である表計算文書24を取得できたか否かを判別する(S102)。ここで、CPU11は、メニュー表示部121で設定されたルートパス以下のフォルダに表計算文書24が含まれていない場合、またはルートパス以下のフォルダに含まれている表計算文書24の検証を全て終了した場合に、検証の対象である表計算文書24は取得できないと判別する。
CPU11は、検証の対象である表計算文書24を取得できない場合(S102:No)、文書検証処理を終了してメニュー表示部121に戻る。一方、CPU11は、検証の対象である表計算文書24を取得できた場合(S102:Yes)、記憶部20に記憶されている関連付け情報DB23に基づいて、ステップS101で取得されたドキュメント種別IDをキーに関連付け情報DB23のドキュメント種別IDに一致するレコードを抽出し、ステップS101で選定されたドキュメント種別に対応する1以上のルールIDを求める。そして、CPU11は、求められたルールIDに対応するルール定義情報(以下、ルールという。)を記憶部20に記憶されているルール定義DB23から抽出して読み出す(S103)。
CPU11は、後述するファイル走査処理を行い、フォルダに対応するドキュメント種別を選定し、検証の対象である表計算文書24を取得する(S101)。
CPU11は、次に検証の対象である表計算文書24を取得できたか否かを判別する(S102)。ここで、CPU11は、メニュー表示部121で設定されたルートパス以下のフォルダに表計算文書24が含まれていない場合、またはルートパス以下のフォルダに含まれている表計算文書24の検証を全て終了した場合に、検証の対象である表計算文書24は取得できないと判別する。
CPU11は、検証の対象である表計算文書24を取得できない場合(S102:No)、文書検証処理を終了してメニュー表示部121に戻る。一方、CPU11は、検証の対象である表計算文書24を取得できた場合(S102:Yes)、記憶部20に記憶されている関連付け情報DB23に基づいて、ステップS101で取得されたドキュメント種別IDをキーに関連付け情報DB23のドキュメント種別IDに一致するレコードを抽出し、ステップS101で選定されたドキュメント種別に対応する1以上のルールIDを求める。そして、CPU11は、求められたルールIDに対応するルール定義情報(以下、ルールという。)を記憶部20に記憶されているルール定義DB23から抽出して読み出す(S103)。
そして、CPU11は、抽出したルールIDに対応するルールを全て処理したか否か判別する(S104)。
CPU11は、抽出したルールIDに対応するルールの中に処理されていないルールがある場合(S104:No)、テンプレートルールでないルールを選択し(S105)、そのルールが関連するテンプレートルールを有するか否か判別する(S106)。
CPU11は、抽出したルールIDに対応するルールの中に処理されていないルールがある場合(S104:No)、テンプレートルールでないルールを選択し(S105)、そのルールが関連するテンプレートルールを有するか否か判別する(S106)。
CPU11は、選択されたルールに対して関連テンプレートが指定されている場合(S106:Yes)、ルール定義DB23から関連するテンプレートルールのルールIDを抽出し(S107)、後述する検証処理を実行する(S108A)。ステップS108Aの検証処理では、CPU11は、テンプレートルールに設定されているルール種別に基づき表計算文書24を検証する。表計算文書24がテンプレートルールを満たし、ステップS108Aの検証処理でエラーとならなかった場合(S109:Yes)、CPU11は、ステップS105で選択したルールIDに対応するルールの検証処理を実行する(S108B)。なお、ステップS108Aとステップ108Bは同一の検証処理を実行する。
表計算文書24がテンプレートルールを満たしておらず、ステップS108Aの検証処理でエラーとなった場合(S109:No)、CPU11は、ログ出力部126を呼び出し、記憶部20にログ情報25を記録して(S111)、ステップS104に戻り、次のルールIDに対応するルールを処理する。
表計算文書24がテンプレートルールを満たしておらず、ステップS108Aの検証処理でエラーとなった場合(S109:No)、CPU11は、ログ出力部126を呼び出し、記憶部20にログ情報25を記録して(S111)、ステップS104に戻り、次のルールIDに対応するルールを処理する。
CPU11は、ステップS105で選択されたルールに対して関連テンプレートが指定されていない場合(S106:No)、または上述したように、ステップS108Aの検証処理でエラーとならなかった場合(S109:Yes)、ステップS105で選択されたルールの検証処理を実行する(S108B)。
表計算文書24がルールを満たしておらず、ステップS108Bの検証処理でエラーとなった場合(S110:No)、CPU11は、ログ出力部126を呼び出し、記憶部20にログ情報25を記録して(S111)、ステップS104に戻り、次のルールを処理する。
表計算文書24がルールを満たしており、ステップS108Bの検証処理でエラーとならなかった場合(S110:Yes)、CPU11は、ステップS111をスキップしてステップS104に戻り、次のルールを処理する。
表計算文書24がルールを満たしておらず、ステップS108Bの検証処理でエラーとなった場合(S110:No)、CPU11は、ログ出力部126を呼び出し、記憶部20にログ情報25を記録して(S111)、ステップS104に戻り、次のルールを処理する。
表計算文書24がルールを満たしており、ステップS108Bの検証処理でエラーとならなかった場合(S110:Yes)、CPU11は、ステップS111をスキップしてステップS104に戻り、次のルールを処理する。
CPU11は、ステップS103で抽出したルールを全て処理した場合(S104:Yes)、ステップS101に戻り、次の表計算文書24を検証する。
このように、CPU11は、記憶部20に記憶されているルール定義情報DB23から抽出されたルール(ルール定義情報)に含まれる関連テンプレートID(関連テンプレートのルールID)に基づいて、関連テンプレートのルールIDに対応するルールを記憶部20に記憶されているルール定義情報DB23から抽出する(S107)。そして、CPU11は、抽出されたルールに基づいて表計算文書24を検証する(S108A)。次に、CPU11は、検証の結果によりステップS105で選択されたルールに基づいて表計算文書24を検証するか否かを判別し(S109)、検証すると判別した場合(S109:Yes)に、ステップS105で選択されたルールに基づいて表計算文書24を検証する(S108B)。
以上の流れにより、CPU11はルートパス以下の全ての表計算文書24を関連するルールにより検証する。
図16は、ステップS101のファイル走査処理の流れを示す。
ファイル走査処理は、検証処理の対象である表計算文書24の探索、表計算文書24の属するドキュメント種別IDの取得、検証済みの表計算文書24を再度検証する場合の検証のスキップの3つの処理を実行する。ファイル走査処理は、ルートパスで指定されるルートフォルダの下のフォルダを深さ優先探索で走査する。
ファイル走査処理は、検証処理の対象である表計算文書24の探索、表計算文書24の属するドキュメント種別IDの取得、検証済みの表計算文書24を再度検証する場合の検証のスキップの3つの処理を実行する。ファイル走査処理は、ルートパスで指定されるルートフォルダの下のフォルダを深さ優先探索で走査する。
CPU11は、前回ファイル走査処理を行った際にステップS206で作成されたファイル一覧が存在し、そのファイル一覧中に未検証のファイル(表計算文書24)が有るか否かを判別する(S201)。なお、ファイル走査処理が文書検証処理から最初に呼び出されたとき(文書検証処理の起動後、ステップS101が最初に実行されたとき)、ファイル一覧は存在しない。
CPU11は、ファイル一覧が存在しないか、またはファイル一覧の中のファイルが全て検証済みである場合(S201:No)、ルートフォルダの下に未検証のフォルダが有るか否か調べる(S202)。CPU11は、未検証のフォルダが無い場合(S202:No)、文書検証処理に戻る。
CPU11は、未検証のフォルダがある場合(S202:Yes)、ドキュメント定義情報DB21の一致条件のフィールドとフォルダ名が一致するフォルダを深さ優先で探索する。その際、既にファイル一覧が作成された検証済みのフォルダは探索の対象から除外される。CPU11は、ドキュメント定義情報DB21の一致条件とフォルダ名が一致するフォルダが無かった場合(S203:No)、文書検証処理に戻る。
CPU11は、ドキュメント定義情報DB21の一致条件とフォルダ名が一致するフォルダを発見した場合(S203:Yes)、発見したフォルダをカレントフォルダとし、ドキュメント定義情報DB21からカレントフォルダのフォルダ名に対応するドキュメント種別IDを取得する(S204)。
CPU11は、未検証のフォルダがある場合(S202:Yes)、ドキュメント定義情報DB21の一致条件のフィールドとフォルダ名が一致するフォルダを深さ優先で探索する。その際、既にファイル一覧が作成された検証済みのフォルダは探索の対象から除外される。CPU11は、ドキュメント定義情報DB21の一致条件とフォルダ名が一致するフォルダが無かった場合(S203:No)、文書検証処理に戻る。
CPU11は、ドキュメント定義情報DB21の一致条件とフォルダ名が一致するフォルダを発見した場合(S203:Yes)、発見したフォルダをカレントフォルダとし、ドキュメント定義情報DB21からカレントフォルダのフォルダ名に対応するドキュメント種別IDを取得する(S204)。
次に、CPU11は、カレントフォルダおよびカレントフォルダの下に配置されているサブフォルダの中にファイルが有るか否か調べる(S205)。カレントフォルダまたはその下に配置されているサブフォルダの中にファイルが有る場合(S205:Yes)、CPU11は、それらのファイルのファイルパスを含むファイル一覧を作成する(S206)。次に、CPU11は、ファイル一覧に含まれるファイル(表計算文書24)の1つを検証対象とて取得して、そのファイルパスを検証対象のファイルパスとして設定し(S207)、文書検証処理に戻る。
一方、カレントフォルダまたはその下に配置されているサブフォルダの中にファイルが無い場合(S205:No)、CPU11は、ステップS202に戻り、未検証のフォルダを深さ優先で探索する。なお、再度未検証のフォルダを探索するとき、ステップS205でファイルが無いと判別されたカレントフォルダおよびその下に配置されているサブフォルダは検証済みとみなす。
一方、カレントフォルダまたはその下に配置されているサブフォルダの中にファイルが無い場合(S205:No)、CPU11は、ステップS202に戻り、未検証のフォルダを深さ優先で探索する。なお、再度未検証のフォルダを探索するとき、ステップS205でファイルが無いと判別されたカレントフォルダおよびその下に配置されているサブフォルダは検証済みとみなす。
CPU11は、ファイル一覧が存在し、そのファイル一覧の中に未検証のファイルが有る場合(S201:Yes)、ファイル一覧の中から未検証のファイルを1つ選択する(S208)。
次に、CPU11は、メニュー表示部121の処理で再実行機能が有効に設定されているか否か判別する(S209)。CPU11は、メニュー表示部121の処理で再実行機能が無効に設定されている場合(S209:No)、選択されたファイルを検証対象として取得して、そのファイルパスを検証対象のファイルパスとして設定し(S211)、文書検証処理に戻る。
次に、CPU11は、メニュー表示部121の処理で再実行機能が有効に設定されているか否か判別する(S209)。CPU11は、メニュー表示部121の処理で再実行機能が無効に設定されている場合(S209:No)、選択されたファイルを検証対象として取得して、そのファイルパスを検証対象のファイルパスとして設定し(S211)、文書検証処理に戻る。
CPU11はメニュー表示部121の処理で再実行機能が有効に設定されている場合(S209:Yes)、前回文書検証処理が実行されたときのログ情報25を記憶部20から読み込む。そして、CPU11は、ステップS208で選択されたファイルのファイルパスをキーにログ情報25を検索し、ログ情報25の中に選択されたファイル(表計算文書24)が含まれているか否か判別する(S210)。
CPU11は、ログ情報25の中に選択されたファイルが含まれている場合(S210:Yes)、選択されたファイル(表計算文書24)を検証対象として取得して、そのファイルパスを検証対象のファイルパスとして設定し(S211)、文書検証処理に戻る。
CPU11は、ログ情報25に選択されたファイル(表計算文書24)が含まれていない場合(S210:No)、前回の文書検証処理ではエラーとならなかったファイルであるため、選択されたファイル(表計算文書24)を検証済みとみなし、ステップS201に戻る。これにより、前回の文書検証処理でエラーとならなかった表計算文書24を検証処理の対象から除外することができる。
CPU11は、ログ情報25の中に選択されたファイルが含まれている場合(S210:Yes)、選択されたファイル(表計算文書24)を検証対象として取得して、そのファイルパスを検証対象のファイルパスとして設定し(S211)、文書検証処理に戻る。
CPU11は、ログ情報25に選択されたファイル(表計算文書24)が含まれていない場合(S210:No)、前回の文書検証処理ではエラーとならなかったファイルであるため、選択されたファイル(表計算文書24)を検証済みとみなし、ステップS201に戻る。これにより、前回の文書検証処理でエラーとならなかった表計算文書24を検証処理の対象から除外することができる。
図17は、検証処理108A、108Bの処理の流れを示す。
まずチェック対象の表計算文書24のファイルパスを元にファイル(表計算文書24)をオープンする(S31)。
次に実行中のルールのルール種別を決定し(S32)、ルール種別が1の場合は単項検証処理(S331)、2の場合は2項検証処理(S332)、3の場合は行単項検証処理(S333)、4の場合は行2項検証処理(S334)、5の場合は列単項検証処理(S335)、6の場合は列2項検証処理(S336)を実行する。対象のファイルが複数のシートで構成されている場合は各々のシートに対しチェック処理を実行する。CPU11は、検証を終了すると、チェック対象ファイル(表計算文書24)をクローズする(S34)。
まずチェック対象の表計算文書24のファイルパスを元にファイル(表計算文書24)をオープンする(S31)。
次に実行中のルールのルール種別を決定し(S32)、ルール種別が1の場合は単項検証処理(S331)、2の場合は2項検証処理(S332)、3の場合は行単項検証処理(S333)、4の場合は行2項検証処理(S334)、5の場合は列単項検証処理(S335)、6の場合は列2項検証処理(S336)を実行する。対象のファイルが複数のシートで構成されている場合は各々のシートに対しチェック処理を実行する。CPU11は、検証を終了すると、チェック対象ファイル(表計算文書24)をクローズする(S34)。
単項検証処理(S331)では実行中のルールの確認先位置_列、確認先位置_行にある対象ファイルのセル内容が確認先一致条件を満たすかどうか評価を行う。実行中ルールのエラー反転出力フラグがOFFかつ確認先一致条件を満たさない場合もしくは実行中ルールのエラー反転出力フラグがONかつ確認先一致条件を満たす場合はログ出力部126にファイルパス、対象ファイル名、対象シート名、チェック対象のセルの列と行位置、エラーメッセージ内容の情報を渡し、ログ出力部126を呼び出す。
2項検証処理(S332)では実行中のルールの前提位置_列、前提位置_行にある対象ファイルのセル内容が前提一致条件を満たすかどうか評価を行う。一致しない場合はチェック処理対象から除外とみなしそのまま処理を終了する。一致する場合は、単項検証処理(S331)と同じ処理を実行する。
図18はステップS333の行単項検証処理の流れを示す。
まず前提判定処理(S3331)で実行中のルールの前提位置_列、前提位置_行にある対象ファイルのセル内容が前提一致条件を満たすかどうか評価を行う。前提条件に一致しない場合はチェック処理対象から除外とみなしそのまま処理を終了する。
一致する場合は、項目列判定処理(S3332)に移る。項目列判定処理(S3332)ではルールの項目列が0かどうか判定を行う。ルールの項目列が0の場合、項目列は未設定とみなし、ルールの項目列が0以外の場合は項目列が設定されているとみなす。項目列が設定されている場合、ルールの確認先項目一致条件が設定されていれば確認先行探索処理(S3333)を実行する。また、ルールの確認先項目一致条件が設定されていなければ確認先行探索処理(S3333)を実行せずにループ停止項目一致条件の判定処理に進む。確認先行探索処理(S3333)では対象ファイルの項目列で指定された列全体に対してルールの確認先項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ12内の確認先行に格納する。またルールのループ停止項目一致条件が設定されていればループ停止対象行探索処理(S3334)を実行する。また、ルールのループ停止項目一致条件が設定されていなければループ停止対象行探索処理(S3334)を実行せずに必須データ確認処理(S3335)を実行する。ループ停止対象行探索処理(S3334)では同じ列全体に対してルールのループ停止項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ12内のループ停止対象行に格納する。
まず前提判定処理(S3331)で実行中のルールの前提位置_列、前提位置_行にある対象ファイルのセル内容が前提一致条件を満たすかどうか評価を行う。前提条件に一致しない場合はチェック処理対象から除外とみなしそのまま処理を終了する。
一致する場合は、項目列判定処理(S3332)に移る。項目列判定処理(S3332)ではルールの項目列が0かどうか判定を行う。ルールの項目列が0の場合、項目列は未設定とみなし、ルールの項目列が0以外の場合は項目列が設定されているとみなす。項目列が設定されている場合、ルールの確認先項目一致条件が設定されていれば確認先行探索処理(S3333)を実行する。また、ルールの確認先項目一致条件が設定されていなければ確認先行探索処理(S3333)を実行せずにループ停止項目一致条件の判定処理に進む。確認先行探索処理(S3333)では対象ファイルの項目列で指定された列全体に対してルールの確認先項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ12内の確認先行に格納する。またルールのループ停止項目一致条件が設定されていればループ停止対象行探索処理(S3334)を実行する。また、ルールのループ停止項目一致条件が設定されていなければループ停止対象行探索処理(S3334)を実行せずに必須データ確認処理(S3335)を実行する。ループ停止対象行探索処理(S3334)では同じ列全体に対してルールのループ停止項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ12内のループ停止対象行に格納する。
次に必須データ確認処理(S3335)でチェックに必要なデータ(確認先行、ループ停止対象行)が揃っているかどうかチェックを行う。具体的にはメモリ12内の確認先行が0かどうかチェックし、0の場合はルールの確認先位置_行も0かどうかをチェックする。ルールの確認先位置_行が0でなければメモリ12内の確認先行に値を格納する。もしルールの確認先位置_行も0の場合は、設定エラー処理(S3338)でログ出力部126にファイルパス、対象ファイル名、対象シート名、エラーメッセージ“確認先行が設定されていません“のデータを渡し、ログ出力部126を呼ぶ。ループ停止対象行についても確認先行と同様に、設定されている場合はメモリ12内のループ停止対象行に値を格納し、未設定の場合は設定エラー処理(S3338)でログ出力部126にエラーメッセージ”ループ停止対象行が設定されていません“のデータを渡し、ログ出力部126を呼ぶ。
チェック処理に必要なデータが揃っている場合、走査列の開始値をルールの確認先位置_列に設定し、ループ停止判定処理(S3336)に進む。ループ停止判定処理(S3336)では対象ファイル内でメモリ内のループ停止対象行と走査列に該当するセルに対してループ停止条件を満たすかどうかチェックする。ループ停止条件を満たさないあるいは走査列が最大確認範囲_列を超えた場合は処理を終了する。確認先判定処理(S3337)では走査列、確認先行にあるセルが確認先一致条件を満たすかどうか評価を行う。実行中ルールのエラー反転出力フラグがOFFかつ確認先一致条件を満たさない場合もしくは実行中ルールのエラー反転出力フラグがONかつ確認先一致条件を満たす場合はログ出力部126にファイルパス、対象ファイル名、対象シート名、チェック対象のセルの列と行位置、エラーメッセージ内容の情報を渡し、ログ出力部126を呼び出す。確認先一致の評価後、走査列をインクリメントし、ループ停止判定処理(S3336)を呼び出す。以上より行単項検証処理(S333)を実現できる。
図19はステップS334の行2項検証処理の流れを示す。
行単項検証処理(S333)と共通の処理については同一のステップ番号を付して説明を省略し、差異のある部分のみ説明する。
行2項検証処理(S334)では前提判定処理(S3343)を各列に対して実施しているため、最初に項目列判定処理(S3332)を実行する。または項目列設定がされている場合、前提行探索処理(S3341)が追加される。前提行探索処理(S3341)では対象ファイルの項目列で指定された列全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ12内の前提項目行に格納する。また必須データ確認処理(S3342)では確認先行、ループ停止対象行に加え前提項目行が設定されているかどうかを確認する。具体的にはメモリ12内の前提項目行が0かどうかチェックし、0の場合はルールの前提位置_行も0かどうかをチェックする。ルールの前提位置_行が0でなければメモリ12内の前提行に値を格納する。もしルールの前提位置_行も0の場合は、設定エラー処理でログ出力部126にファイルパス、対象ファイル名、対象シート名、エラーメッセージ“前提行が設定されていません“のデータを渡し、ログ出力部126を呼ぶ。
行単項検証処理(S333)と共通の処理については同一のステップ番号を付して説明を省略し、差異のある部分のみ説明する。
行2項検証処理(S334)では前提判定処理(S3343)を各列に対して実施しているため、最初に項目列判定処理(S3332)を実行する。または項目列設定がされている場合、前提行探索処理(S3341)が追加される。前提行探索処理(S3341)では対象ファイルの項目列で指定された列全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ12内の前提項目行に格納する。また必須データ確認処理(S3342)では確認先行、ループ停止対象行に加え前提項目行が設定されているかどうかを確認する。具体的にはメモリ12内の前提項目行が0かどうかチェックし、0の場合はルールの前提位置_行も0かどうかをチェックする。ルールの前提位置_行が0でなければメモリ12内の前提行に値を格納する。もしルールの前提位置_行も0の場合は、設定エラー処理でログ出力部126にファイルパス、対象ファイル名、対象シート名、エラーメッセージ“前提行が設定されていません“のデータを渡し、ログ出力部126を呼ぶ。
必須データ確認処理(S3342)で必要なデータが揃った場合、走査列の開始値をルールの確認先位置_列に設定し、ループ停止判定処理を実行する。ループ停止判定処理でループ停止条件を満たすかどうかチェックし、ループ停止条件を満たさない場合は行2項検証処理(S334)を終了する。ループ停止条件を満たさない場合は前提判定処理(S3343)を実行する。前提判定処理(S3343)では走査列、前提行にあるセルが前提一致条件を満たすかどうか評価を行う。実行中ルールのエラー反転出力フラグがOFFかつ前提一致条件を満たさない場合もしくは実行中ルールのエラー反転出力フラグがONかつ前提一致条件を満たす場合は確認先判定処理(S3337)に移り、満たさない場合は走査列をインクリメントし、ループ停止判定処理に移る。確認先判定処理(S3337)を実行後、走査列をインクリメントし、ループ停止判定処理に移る。
図20はステップS335の列単項検証処理の流れを示す。
行単項検証処理(S333)と基本的な処理の流れは同じで行と列が入れ替わるだけのため差異の部分のみ説明する。
項目行判定処理(S3352)ではルールの項目行が0かどうか判定を行う。確認先列探索処理(S3353)ではファイルの項目行で指定された行全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ12内の確認先列に格納する。ループ停止対象列探索処理(S3354)では同じ行全体に対してルールのループ停止項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ12内のループ停止対象列に格納する。必須データ確認処理(S3355)ではチェックに必要なデータ(確認先列、ループ停止対象列)が揃っているかどうかチェックを行う。チェック処理に必要なデータが揃っている場合、走査行の開始値をルールの確認先位置_行に設定し、ループ停止判定処理(S3356)に進む。ループ停止判定処理(S3356)では対象ファイル内でメモリ内のループ停止対象列と走査行に該当するセルに対してループ停止条件を満たすかどうかチェックする。ループ停止条件を満たすあるいは走査行が最大確認範囲_行を超えた場合は処理を終了する。確認先判定処理(S3357)で走査行、確認先列にあるセルが確認先一致条件を満たすかどうか評価を行う。確認先一致の評価後、走査行をインクリメントし、ループ停止判定処理(S3356)を呼び出す。
行単項検証処理(S333)と基本的な処理の流れは同じで行と列が入れ替わるだけのため差異の部分のみ説明する。
項目行判定処理(S3352)ではルールの項目行が0かどうか判定を行う。確認先列探索処理(S3353)ではファイルの項目行で指定された行全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ12内の確認先列に格納する。ループ停止対象列探索処理(S3354)では同じ行全体に対してルールのループ停止項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ12内のループ停止対象列に格納する。必須データ確認処理(S3355)ではチェックに必要なデータ(確認先列、ループ停止対象列)が揃っているかどうかチェックを行う。チェック処理に必要なデータが揃っている場合、走査行の開始値をルールの確認先位置_行に設定し、ループ停止判定処理(S3356)に進む。ループ停止判定処理(S3356)では対象ファイル内でメモリ内のループ停止対象列と走査行に該当するセルに対してループ停止条件を満たすかどうかチェックする。ループ停止条件を満たすあるいは走査行が最大確認範囲_行を超えた場合は処理を終了する。確認先判定処理(S3357)で走査行、確認先列にあるセルが確認先一致条件を満たすかどうか評価を行う。確認先一致の評価後、走査行をインクリメントし、ループ停止判定処理(S3356)を呼び出す。
図21はステップS336の列2項検証処理の流れを示す。
行2項検証処理(S334)と処理の流れは同じで行と列が入れ替わるだけでまた項目行判定処理(S3352)、確認先列探索処理(S3353)、ループ停止対象列探索処理(S3354)、ループ停止判定処理(S3356)に関してはステップS335の列単項検証処理と同一のため差異の部分のみ説明する。
前提列探索処理(S3361)では対象ファイルの項目行で指定された行全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ12内の前提項目列に格納する。必須データ確認処理(S3362)では確認先列、ループ停止対象列に加え前提項目列が設定されているかどうかを確認する。必須データ確認処理(S3362)で必要なデータが揃った場合、走査行の開始値をルールの確認先位置_行に設定し、ループ停止判定処理を実行する。前提判定処理(S3363)では走査行、前提列にあるセルが前提一致条件を満たすかどうか評価を行う。
ログ出力部126では文書検証部125から来た出力データを元にファイルオープンし、処理時刻、ファイルパス、ファイル名、シート名、列、行、メッセージの順にカンマ区切りでログ情報25に1行毎に追記し、ファイルをクローズする。図22はログ情報25の一例を示す。
行2項検証処理(S334)と処理の流れは同じで行と列が入れ替わるだけでまた項目行判定処理(S3352)、確認先列探索処理(S3353)、ループ停止対象列探索処理(S3354)、ループ停止判定処理(S3356)に関してはステップS335の列単項検証処理と同一のため差異の部分のみ説明する。
前提列探索処理(S3361)では対象ファイルの項目行で指定された行全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ12内の前提項目列に格納する。必須データ確認処理(S3362)では確認先列、ループ停止対象列に加え前提項目列が設定されているかどうかを確認する。必須データ確認処理(S3362)で必要なデータが揃った場合、走査行の開始値をルールの確認先位置_行に設定し、ループ停止判定処理を実行する。前提判定処理(S3363)では走査行、前提列にあるセルが前提一致条件を満たすかどうか評価を行う。
ログ出力部126では文書検証部125から来た出力データを元にファイルオープンし、処理時刻、ファイルパス、ファイル名、シート名、列、行、メッセージの順にカンマ区切りでログ情報25に1行毎に追記し、ファイルをクローズする。図22はログ情報25の一例を示す。
以上で文書検証部125の処理の説明は終わり、図2のフォルダ構成、図3のPCLに対して図4、図6、図8の各種DBデータでメニュー表示部121の再実行機能を無効で設定した場合の具体的な処理の流れを以降で説明する。
まず文書検証部125が呼ばれると図15においてファイル走査処理(S101)が呼ばれ、図16のファイル走査処理ではまずルートの直下にファイルがあるかどうかを確認する。しかし、ファイルはないため次にサブフォルダの存在を確認する。するとPCLのフォルダが見つかるためPCLをキーにドキュメント定義情報DB21の一致条件を満たすレコードを摘出する。図4のようにドキュメント種別IDのデータが一致条件を満たすレコードがあるため、ドキュメント種別IDの情報をメモリ12に格納し、現在走査中のファイルパスをPCLのフォルダのパスに更新する。
次にPCLのフォルダの直下にファイルがあるかどうかを確認するがファイルは見つからないため、サブフォルダの存在を確認する。するとチームAのサブフォルダが見つかるためチームAをキーにドキュメント定義情報DB21の一致条件を満たすレコードを抽出する。しかしチームAに一致するレコードは存在しないため、ドキュメント種別IDの情報は更新しない。そして現在走査中のファイルパスをチームAのファイルパスに更新する。
次にチームAの直下にファイルがあるかどうかを確認する。するとファイルが存在するので再確認フラグがONかOFFか確認する。メニュー表示部121で再実行機能にチェックされていない場合は再確認フラグがOFFになり、対象ファイルパスを設定しファイル走査処理(S101)が完了する。
次にチームAの直下にファイルがあるかどうかを確認する。するとファイルが存在するので再確認フラグがONかOFFか確認する。メニュー表示部121で再実行機能にチェックされていない場合は再確認フラグがOFFになり、対象ファイルパスを設定しファイル走査処理(S101)が完了する。
ファイル走査処理(S101)で対象ファイルパスが指定されているので検証ルールを抽出する処理(S103)を行う。検証ルールの抽出処理(S103)ではメモリ12に格納されたドキュメント種別IDを参照し、この値をキーとして関連付け情報DB22からドキュメント種別IDが1のレコードを抽出する。図6より該当するレコードは3件見つかり、ルールID21、28,29がメモリ12に保存される。メモリ12に保存されたルールID21,28,29をキーにルール定義情報DB23のルールIDと一致するレコードを抽出すると図8となり、抽出されたレコードがメモリ12に保存される。
ルールID21、27,28のルールから順に処理が進められるが、ルールID21はテンプレートフラグがONとなっているためテンプレートルールとして認識される。そのためルールID21の処理はスキップされ、ルールID27のルールの処理から実行される。
ルールID27はテンプレートフラグがOFFであるため、関連テンプレートIDが設定されているかを確認する。ルールID27の関連テンプレートIDは21と設定されているため、テンプレートルールを抽出する処理(S107)を行う。
テンプレートルールを抽出する処理(S107)ではテンプレートフラグがONかつルールIDが21のレコードを抽出する。結果としてルールID21が見つかったためルールID21に対して検証処理(S108A)を実行する。検証処理(S108A)で対象となるチームAのPCLファイルをオープンする。次にルールID21のルール種別は1であるため単項検証処理(S331)を実行する。
テンプレートルールを抽出する処理(S107)ではテンプレートフラグがONかつルールIDが21のレコードを抽出する。結果としてルールID21が見つかったためルールID21に対して検証処理(S108A)を実行する。検証処理(S108A)で対象となるチームAのPCLファイルをオープンする。次にルールID21のルール種別は1であるため単項検証処理(S331)を実行する。
単項検証処理(S331)ではルールID21の確認先位置_列が1、確認先位置_行が1で確認先一致条件が"チェック条件"となっているため、オープンしたファイルの1行1列目のセルの値が"チェック条件"と同じかチェックする。図3より1行1列目は"チェック条件"であるため条件を満たし、またルールID21のエラー反転出力フラグはOFFであるため、テンプレートルールを満たしていると認識される。テンプレートルールを満たしているためルールID27に対して検証処理(S108B)を実行する。検証処理(S108B)でルールID27のルール種別は4であるため行2項検証処理(S334)を実行する。
行2項検証処理(S334)ではまず項目列判定処理(S3332)でルールID27の項目列が0かどうか判定を行う。ルールID27の項目列は0であるため必須データ確認処理(S3342)に移る。必須データ確認処理(S3342)でメモリ12内の前提項目行は0であるため、ルールID27の前提位置_行が0かどうか判定を行う。ルールID27の前提位置_行は1であるためメモリ12内の前提項目行を1に更新する。確認先行も同様にメモリ12内では0だがルールID27の確認先位置_行は12であるためメモリ12内の確認先行を12に更新する。ループ停止対象行も同様にメモリ12内では0だがルールIDのループ停止対象行は1であるためメモリ内のループ停止対象行を1に更新する。結果としてチェックに必要なデータは揃っているため走査列の開始値をルールID27の確認先位置_列である3に設定され、ループ停止判定処理(S3336)に進む。ループ停止判定処理(S3336)ではオープンしたファイルの走査列とループ停止対象行に該当するセルがループ停止条件を満たすかどうか判定を行う。ファイルの走査列3、ループ停止対象行1に該当するセルは”0001”でループ停止条件は”.+”であり、ループ停止条件を満たすので前提判定処理(S3343)に進む。
前提判定処理(S3343)ではオープンしたファイルの走査列と前提行に該当するセルが前提一致条件を満たすかどうか判定を行う。ファイルの走査列3、前提行1に該当するセルは"0001"で前提一致条件は”¥d{4}”であり、前提一致条件を満たすので確認先判定処理(S3337)に進む。
確認先判定処理(S3337)ではオープンしたファイルの走査列と確認先行に該当するセルが確認先一致条件を満たすかどうか判定を行う。ファイルの走査列3、確認先行12に該当するセルは”5/26”で確認先一致条件は”.+”であり、エラー反転出力フラグがOFFのため確認先一致条件を満たすのでファイルの走査列をインクリメントし、ループ停止判定処理(S3336)に進む。ループ停止判定処理(S3336)でファイルの走査列4、ループ停止対象行1に該当するセルは”0002”でループ停止条件は”.+”であり、ループ停止条件を満たすので前提判定処理(S3343)に進む。
確認先判定処理(S3337)ではオープンしたファイルの走査列と確認先行に該当するセルが確認先一致条件を満たすかどうか判定を行う。ファイルの走査列3、確認先行12に該当するセルは”5/26”で確認先一致条件は”.+”であり、エラー反転出力フラグがOFFのため確認先一致条件を満たすのでファイルの走査列をインクリメントし、ループ停止判定処理(S3336)に進む。ループ停止判定処理(S3336)でファイルの走査列4、ループ停止対象行1に該当するセルは”0002”でループ停止条件は”.+”であり、ループ停止条件を満たすので前提判定処理(S3343)に進む。
前提判定処理(S3343)でファイルの走査列4、前提行1に該当するセルは”0002”で前提一致条件は”¥d{4}”であり、前提一致条件を満たすので確認先判定処理(S3337)に進む。
確認先判定処理(S3337)でファイルの走査列4、確認先行12に該当するセルは” ”で確認先一致条件は”.+”であり、エラー反転出力フラグがOFFのため確認先一致条件を満たさないため、ルールID27のエラーメッセージ内容を参照し、ログ出力部126にファイルパス:”C:¥チームA¥PCL”、対象ファイル名:”PCL.xls”、対象シート名:"1"、列:"4"、行:"12"、エラーメッセージ内容:"確認日が未記入です。"の情報を渡し、ログ出力部126で処理を受け付けた時刻の情報を付与し、カンマ区切りで処理時刻、ファイルパス、ファイル名、シート名、行、列、メッセージの順に記載を行う。今回は下記情報がログ情報25に追記される。
"2009/8/22
14:30","C:\チームA\PCL","PCL1.xls","1","12","4","確認日が未記入です。"
確認先判定処理(S3337)でファイルの走査列4、確認先行12に該当するセルは” ”で確認先一致条件は”.+”であり、エラー反転出力フラグがOFFのため確認先一致条件を満たさないため、ルールID27のエラーメッセージ内容を参照し、ログ出力部126にファイルパス:”C:¥チームA¥PCL”、対象ファイル名:”PCL.xls”、対象シート名:"1"、列:"4"、行:"12"、エラーメッセージ内容:"確認日が未記入です。"の情報を渡し、ログ出力部126で処理を受け付けた時刻の情報を付与し、カンマ区切りで処理時刻、ファイルパス、ファイル名、シート名、行、列、メッセージの順に記載を行う。今回は下記情報がログ情報25に追記される。
"2009/8/22
14:30","C:\チームA\PCL","PCL1.xls","1","12","4","確認日が未記入です。"
次に走査列をインクリメントし、走査列5ではループ停止条件、前提一致条件を満たすため確認先判定処理(S3337)に進む。確認先判定処理(S3337)でファイルの走査列5、確認先行12に該当するセルは"○"で確認先一致条件は”.+”であり、エラー反転出力フラグがOFFのため確認先一致条件を満たすので走査列をインクリメントし、ループ判定処理に進む。
走査列6,7の場合も同様でループ停止条件、前提一致条件、確認先一致条件をすべて満たしているので走査列をそのままインクリメントされる。走査列8の場合は走査列4と同様で確認先一致条件を満たさないためログ出力部126で下記ログを追加出力する。
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","8","確認日が未記入です。"
走査列9の場合ループ停止判定処理(S3336)でファイルの走査列9、ループ停止対象行1に該当するセルは” ”でループ停止条件は”.+”でありループ停止条件を満たさないため行2項検証処理を終了し、対象ファイルをクローズする。
走査列6,7の場合も同様でループ停止条件、前提一致条件、確認先一致条件をすべて満たしているので走査列をそのままインクリメントされる。走査列8の場合は走査列4と同様で確認先一致条件を満たさないためログ出力部126で下記ログを追加出力する。
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","8","確認日が未記入です。"
走査列9の場合ループ停止判定処理(S3336)でファイルの走査列9、ループ停止対象行1に該当するセルは” ”でループ停止条件は”.+”でありループ停止条件を満たさないため行2項検証処理を終了し、対象ファイルをクローズする。
次のルールID28に対しても同様に関連テンプレートが21と設定されているためルールID21に対して検証処理(S108A)を実行する。結果としてテンプレートルールを満たしているためルールID28に対して検証処理(S108B)を実行する。ルールID28のチェック種別は4であるため行2項検証処理(S334)を実行する。行2項検証処理(S334)内の項目列判定処理(S3332)でルールID28の項目列が0かどうか判定を行う。項目列は1と設定されているため、前提項目行、確認先行、ループ停止対象行の探索処理に移る。
まずルールID28の前提項目一致条件は”チェック条件”と設定されているため、対象ファイルの項目列である1列目にチェック条件のキーワードと一致する行を検索する。図3より1行1列目のセルが条件を満たすため前提項目行は1がセットされる。次にルールID28の確認先項目一致条件は”確認日”と設定されているため、対象ファイルの項目列である1列目にチェック条件のキーワードと一致する行を検索する。図3より12行1列目のセルが条件を満たすため確認先行は12がセットされる。次にルールID28のループ停止項目一致条件は”チェック条件”と設定されているため、対象ファイルの項目列である1列目にチェック条件のキーワードと一致する行を検索する。図3より1行1列目のセルが条件を満たすためループ停止行は1がセットされる。
次に必須データ確認処理(S3342)でメモリ12内の前提項目行、確認先行、ループ停止行を見るがいずれもセットされているため、走査列の開始値をルールID28の確認先位置_列である3に設定し、ループ停止判定処理に進む。ループ停止条件及び前提一致条件はルールID27と同じのため3〜8列目は確認先判定処理(S3337)の動作のみ説明する。確認先判定処理(S3337)でルールID28の確認先一致条件である¥d{1,2}/¥d{1,2}を満たさない列は4列目の” ”,5列目の”○”,8列目の” ”が該当し、エラーメッセージ内容は"確認日が不正です。"であるためログ出力部126では下記3行がエラーログとして追記される。
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","4","確認日が不正です。"
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","5","確認日が不正です。"
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","8","確認日が不正です。"
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","4","確認日が不正です。"
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","5","確認日が不正です。"
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","8","確認日が不正です。"
走査列が9の場合、ループ停止判定処理でファイルの走査列9、ループ停止対象行1に該当するセルは” ”でループ停止条件は”.+”でありループ停止条件を満たさないため行2項検証処理を終了し、対象ファイルをクローズする。
以上でドキュメント種別に関連するルールに関する検証処理を一通り実行したことになるので、ファイル走査処理(S101)にて次のチェック対象のファイルを探索する。図2のチームA以下にあるファイル全てチェックが終わると、チームBのフォルダに移りチームB以下のファイル全てをチェックしていく、PCLのサブフォルダ全てに対して同様の処理を進め、議事録のフォルダに走査が移った場合、対象ドキュメント種別情報はルートの状態に戻り、議事録がドキュメント定義情報DB21の一致条件に合わなければチェック対象から外れる。ドキュメント定義情報DB21で議事録、設計文書に関する定義は未設定であるため議事録及び設計文書以下のフォルダに対してチェックは実行されず文書検証部125の処理を終了する。
なお、上記実施形態では、ルールの種別を示すルール種別情報をルール定義情報DB23に明示的に格納したが、ルール種別情報は、ルール定義情報DB23に明示的に格納せず、位置情報に黙示的に含まれており、検証処理の際に位置情報から求めることとしても良い。
例えば、図8のルール定義情報DB23の中の確認位置_列欄と確認位置_行欄と確認先一致条件欄のみ定義され、前提欄と項目欄とループ停止条件欄の中の各項目が全て0または空白であった場合、ルール種別情報を単項検証ルールと判別することができる。
例えば、図8のルール定義情報DB23の中の確認位置_列欄と確認位置_行欄と確認先一致条件欄のみ定義され、前提欄と項目欄とループ停止条件欄の中の各項目が全て0または空白であった場合、ルール種別情報を単項検証ルールと判別することができる。
また、上記実施形態では、表計算文書24やその他の文書は記憶部20のフォルダに格納されているとしたが、フォルダは単なる名称に過ぎず、例えば、記憶部20のディレクトリ等に格納されているとしても良い。
以上説明したように、本発明によれば、複数のセルを含む表計算文書の妥当性をセルの位置情報を含めて検証することができる。
また、関連付け情報DB22とルール定義情報DB23を分けて管理しているため、他人が作成したルールの展開もしくは他人へのルールの展開が容易に実現できる。
また、ルール定義情報DB23でルールをデータベース化しているため、ルール種別を追加したい場合でも既に定義されたデータへの悪影響を無くすことができる。
また、テンプレート用のルールを用意することで想定したテンプレートに対してのみルールを実施することができ、誤認識による過剰検出を抑止することができる。
また、関連付け情報DB22とルール定義情報DB23を分けて管理しているため、他人が作成したルールの展開もしくは他人へのルールの展開が容易に実現できる。
また、ルール定義情報DB23でルールをデータベース化しているため、ルール種別を追加したい場合でも既に定義されたデータへの悪影響を無くすことができる。
また、テンプレート用のルールを用意することで想定したテンプレートに対してのみルールを実施することができ、誤認識による過剰検出を抑止することができる。
更に、本実施形態の文書検証装置によれば、次のような効果がある。
位置情報を含んだ表計算文書の検証ルールを6種類のルール種別に基づきGUI上で表計算文書の様々な検証パターンに追従した表計算文書の検証ルールの設定及び検証ルールと対象となる表計算文書の紐付けが容易にできる。
また、ルール編集部124にシミュレート機能を持たせることでルール編集後すぐにルール自体の評価を行うことができる。
また、エラーとなった文書を修正しエラーとなっていた文書のみ再度実行したい場合に対して前回実行したログ情報25を参照し、文書検証部125でチェック実行可否を自動的に判断することで大量の表計算文書に対して効率的に処理を実行できる。
位置情報を含んだ表計算文書の検証ルールを6種類のルール種別に基づきGUI上で表計算文書の様々な検証パターンに追従した表計算文書の検証ルールの設定及び検証ルールと対象となる表計算文書の紐付けが容易にできる。
また、ルール編集部124にシミュレート機能を持たせることでルール編集後すぐにルール自体の評価を行うことができる。
また、エラーとなった文書を修正しエラーとなっていた文書のみ再度実行したい場合に対して前回実行したログ情報25を参照し、文書検証部125でチェック実行可否を自動的に判断することで大量の表計算文書に対して効率的に処理を実行できる。
以上、本発明の実施形態について説明したが、設計上の都合やその他の要因によって必要となる様々な修正や組み合わせは、請求項に記載されている発明や発明の実施形態に記載されている具体例に対応する発明の範囲に含まれると理解されるべきである。
1…文書検証装置、10…処理部、11…CPU、12…メモリ、121…メニュー表示部、122…ドキュメント情報編集部、123…関連情報編集部、124…ルール編集部、125…文書検証部、126…ログ出力部、20…記憶部、21…ドキュメント定義情報データベース、22…関連付け情報データベース、23…ルール定義情報データベース、24…表計算文書、25…ログ情報、30…入力部、40…表示部、
51…ドキュメント種別一覧表示部、52…ドキュメント設定ボタン、53…ルール一覧表示部、54…ルール設定部54、61…ルール種別設定部、62…テンプレート情報設定部、63…座標・一致条件設定部、64…プレビュー機能部。
51…ドキュメント種別一覧表示部、52…ドキュメント設定ボタン、53…ルール一覧表示部、54…ルール設定部54、61…ルール種別設定部、62…テンプレート情報設定部、63…座標・一致条件設定部、64…プレビュー機能部。
Claims (7)
- 複数のセルを含む表計算文書を検証する文書検証装置であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるルール定義情報記憶手段と、
表計算文書を取得する表計算文書取得手段と、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出手段と、
前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記表計算文書取得手段によって取得される表計算文書を検証する検証処理手段と、
前記検証処理手段による検証の結果に応じて、前記求められたセルの位置を示す情報と、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする文書検証装置。 - フォルダの名前を示すフォルダ名と、当該フォルダ名に対応し、当該フォルダに格納されているドキュメントの種類を示すドキュメント種別識別子とを含むドキュメント定義情報を記憶部に記憶させるドキュメント定義情報記憶手段と、
前記ドキュメント種別識別子と前記ドキュメント種別識別子に対応する1以上のルール識別子とを含む関連付け情報を記憶部に記憶させる関連付け情報記憶手段と、
前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダが前記記憶部に有るか否かを判別し、有る場合に前記記憶部に記憶されているドキュメント定義情報に基づいて当該フォルダ名に対応するドキュメント種別識別子を取得するドキュメント種別識別子取得手段と、
前記記憶部に記憶されている関連付け情報に基づいて、前記ドキュメント種別識別子取得手段によって取得されたドキュメント種別識別子に対応する1以上のルール識別子を求めるルール識別子取得手段と、
を備え、
前記ルール定義情報記憶手段は、複数のルール定義情報を前記記憶部に記憶させ、
各前記ルール定義情報は、ルール識別子と、当該ルール識別子に対応するルールの種別を示すルール種別情報と、当該ルールの種別に応じた前記位置情報と、当該ルールの種別に応じた前記条件情報とを含み、
前記表計算文書取得手段は、前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダおよび当該フォルダの下に配置されているフォルダに含まれる表計算文書を取得し、
前記ルール定義情報読出手段は、前記ルール識別子取得手段によって求められた各ルール識別子を含むルール定義情報を前記記憶部から読み出し、
前記検証処理手段は、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるルール種別情報によって示されるルールの種別に応じてセルの位置を求め、更に当該求められた位置のセルが当該ルールの種別に応じた前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、当該ルールの種別に応じて前記表計算文書を検証し、
前記ログ情報は、更に、検証された各前記表計算文書のファイルパスを示すパス情報を含む、
ことを特徴とする請求項1に記載の文書検証装置。 - 各前記ルール定義情報は、関連するルール識別子を示す関連ルール識別子情報を含み、
前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に含まれる前記関連ルール識別子情報に基づいて前記ルール定義情報読出手段に前記関連するルール識別子に対応するルール定義情報を前記記憶部から読み出させ、当該読み出されたルール定義情報に基づいて前記検証処理手段に表計算文書を検証させ、当該検証処理手段による検証の結果により前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記表計算文書を検証させるか否かを判別し、検証させると判別された場合に、前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記検証処理手段に前記表計算文書を検証させる検証制御手段を備える、
ことを特徴とする請求項2に記載の文書検証装置。 - 前記表計算文書は、行方向に並んだ複数のセルと列方向に並んだ複数のセルで構成され、
前記ルール種別情報は、
前記位置情報に基づいて求められる所定の行と所定の列の位置のセルが前記条件情報によって示される条件を満たすか否かを判別する処理を行うための単項検証ルールを示す単項検証ルール情報と、
前記位置情報に基づいて求められる第1の行と第1の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、前記位置情報に基づいて求められる第2の行と第2の列の位置のセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための2項検証ルールを示す2項検証ルール情報と、
前記位置情報に基づいて求められる第3の行と第3の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第3の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列単項検証ルールを示す列単項検証ルール情報と、
前記位置情報に基づいて求められる第4の行と第4の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第4の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第4の列の中の所定の行の範囲に含まれる各セルと同じ行に属し、かつ、前記位置情報に基づいて求められる第5の列に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列2項検証ルールを示す列2項検証ルール情報と、
前記位置情報に基づいて求められる第6の行と第6の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第6の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行単項検証ルールを示す行単項検証ルール情報と、
前記位置情報に基づいて求められる第7の行と第7の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第7の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第7の行の所定の列の範囲に含まれる各セルと同じ列に属し、かつ、前記位置情報に基づいて求められる第8の行に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行2項検証ルールを示す行2項検証ルール情報と、
を含む、
ことを特徴とする請求項1乃至3のいずれか1項に記載の文書検証装置。 - 前記位置情報は、各セルに記録されているデータを示すデータ情報を含み、
前記検証処理手段は、前記データ情報によって示されるデータが記録されているセルを特定し、当該セルが属する行の位置または列の位置を求める、
ことを特徴とする請求項4に記載の文書検証装置。 - 前記検証処理手段は、
前記列単項検証ルールまたは前記列2項検証ルールに応じて表計算文書を検証するとき、第9の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に前記所定の行の範囲に含まれるとみなし、
前記行単項検証ルールまたは前記行2項検証ルールに応じて表計算文書を検証するとき、第10の行に属するセルが所定の列開始条件を満たし、かつ所定の列終了条件を満たさない場合に前記所定の列の範囲に含まれるとみなす、
ことを特徴とする請求項4又は5に記載の文書検証装置。 - 複数のセルを含む表計算文書を検証する文書検証方法であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるステップと、
表計算文書を取得する表計算文書取得ステップと、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出ステップと、
前記読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記取得された表計算文書を検証する検証処理ステップと、
前記検証の結果に応じて、前記求められたセルの位置を示す情報と、前記読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする文書検証方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009245094A JP2011090598A (ja) | 2009-10-26 | 2009-10-26 | 文書検証装置および文書検証方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009245094A JP2011090598A (ja) | 2009-10-26 | 2009-10-26 | 文書検証装置および文書検証方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011090598A true JP2011090598A (ja) | 2011-05-06 |
Family
ID=44108774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009245094A Withdrawn JP2011090598A (ja) | 2009-10-26 | 2009-10-26 | 文書検証装置および文書検証方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011090598A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150074020A (ko) * | 2012-10-17 | 2015-07-01 | 아브 이니티오 테크놀로지 엘엘시 | 데이터에 규칙 지정 및 적용 |
JP2022013022A (ja) * | 2020-07-03 | 2022-01-18 | 株式会社岩崎電機製作所 | データ群識別装置、データ群識別方法、および、データ群識別プログラム |
WO2022215276A1 (ja) * | 2021-04-09 | 2022-10-13 | 株式会社KPMG Ignition Tokyo | データ抽出装置、データ抽出方法、データ抽出プログラム、データ抽出支援装置、データ抽出支援方法、データ抽出支援プログラム |
CN115577704A (zh) * | 2022-10-31 | 2023-01-06 | 中国人民财产保险股份有限公司 | 报表校验方法及装置 |
-
2009
- 2009-10-26 JP JP2009245094A patent/JP2011090598A/ja not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150074020A (ko) * | 2012-10-17 | 2015-07-01 | 아브 이니티오 테크놀로지 엘엘시 | 데이터에 규칙 지정 및 적용 |
JP2016504642A (ja) * | 2012-10-17 | 2016-02-12 | アビニシオ テクノロジー エルエルシー | データに対する規則の指定及び適用 |
US10489360B2 (en) | 2012-10-17 | 2019-11-26 | Ab Initio Technology Llc | Specifying and applying rules to data |
KR102126099B1 (ko) | 2012-10-17 | 2020-06-23 | 아브 이니티오 테크놀로지 엘엘시 | 데이터에 규칙 지정 및 적용 |
JP2022013022A (ja) * | 2020-07-03 | 2022-01-18 | 株式会社岩崎電機製作所 | データ群識別装置、データ群識別方法、および、データ群識別プログラム |
WO2022215276A1 (ja) * | 2021-04-09 | 2022-10-13 | 株式会社KPMG Ignition Tokyo | データ抽出装置、データ抽出方法、データ抽出プログラム、データ抽出支援装置、データ抽出支援方法、データ抽出支援プログラム |
CN115577704A (zh) * | 2022-10-31 | 2023-01-06 | 中国人民财产保险股份有限公司 | 报表校验方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3057019B2 (ja) | 部品選定装置及びcad機能を備えた部品選定システム | |
US8380650B2 (en) | Information extraction rule making support system, information extraction rule making support method, and information extraction rule making support program | |
KR100751691B1 (ko) | 다수의 파워포인트 문서 편집 방법 | |
JP2003505854A (ja) | 印刷回路基板用原始部品リストの標準部品リストへの変換方法 | |
JP2011090598A (ja) | 文書検証装置および文書検証方法 | |
JP6076660B2 (ja) | プログラム構造評価システム、プログラム | |
CN114357596B (zh) | 一种bim构件资源快捷设计方法及系统 | |
US20110173552A1 (en) | Gui evaluation system, gui evaluation method, and gui evaluation program | |
JP5747698B2 (ja) | 要件管理支援装置 | |
CN111753349B (zh) | 结构构件的尺寸修改方法、Revit平台及存储介质 | |
JP5670156B2 (ja) | テスト結果照合システム、方法、及びプログラム | |
JP2011204069A (ja) | テスト方法およびテスト仕様書テストデータ自動生成装置 | |
JP4278610B2 (ja) | 数値解析支援装置,数値解析支援方法,数値解析支援プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体 | |
JP5504212B2 (ja) | テストケース自動生成システム、テストケース自動生成方法、およびテストケース自動生成プログラム | |
JP2011209971A (ja) | テスト支援装置、テスト支援システム、制御方法、プログラム、及び記録媒体 | |
JP2007241347A (ja) | プログラムの品質管理装置、及びプログラムの品質管理レポートの生成方法 | |
JP3310415B2 (ja) | Cad装置 | |
JP5595224B2 (ja) | ラダープログラム比較方法 | |
JP2010134766A (ja) | 文書データ処理装置およびそのプログラム | |
JP2008234297A (ja) | 回路ブロック検出装置、その方法及びプログラム | |
JP4113652B2 (ja) | 住宅開発設計システム | |
JP2001222566A (ja) | 製品仕様決定支援システム及び製品仕様決定支援プログラム記録媒体 | |
CN118211930A (zh) | 一种基于vericut的装刀作业指导书自动生成方法、系统及装置 | |
JP2010073118A (ja) | ログファイル共通管理システムおよびログファイル共通管理方法およびそのためのプログラム | |
JP4539214B2 (ja) | 設計支援方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130108 |