(57)【要約】【課題】オーバレイ処理で生成された帳票の出力ページに対する入力値を検証して、当該出力ページに含まれるグラフの破綻を回避する。【解決手段】一実施形態に係る情報処理装置は、出力ページとともにオーバレイ処理時に生成された、出力ページに関連する出力フィールドデータの書式情報を含む出力ページ情報を受信する。情報処理装置は、出力ページの閲覧画面上でユーザが選択した出力フィールドデータに対する入力値を、出力フィールドデータの書式情報に基づいて検証する。情報処理装置は、検証した出力フィールドデータの値で、出力フィールドデータに関連するグラフを更新する。【選択図】図１６
2020113120.tif 000002
【特許請求の範囲】
【請求項１】
フォームファイルとフィールドデータをオーバレイして生成された帳票の出力ページを表示する情報処理装置であって、
前記出力ページとともにオーバレイ処理時に生成された、前記出力ページに関連する出力フィールドデータの書式情報を含む出力ページ情報を受信する受信手段と、
前記出力ページの閲覧画面上でユーザが選択した出力フィールドデータに対する入力値を、前記出力フィールドデータの書式情報に基づいて検証する検証手段と、
前記検証した出力フィールドデータの値で、前記出力フィールドデータに関連するグラフを更新する更新手段と
を有する情報処理装置。
【請求項２】
前記ユーザが選択した前記出力フィールドデータの値をデフォルト値として表示する入力フォームを表示する表示手段をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記書式情報に定義された前記出力フィールドデータの固定文字部分と書式記号部分とに基づいて、前記書式記号部分を入力可能エリアとした入力フォームを表示する表示手段をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記書式情報に定義された前記出力フィールドデータの書式の種類に基づいて決定した入力フォームを表示する表示手段をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記入力フォームは、プルダウン、カレンダー、チェックボタン、スライダー、カラーピッカー、テキストエリアのうちの少なくとも１つを含むことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記入力フォームは、前記閲覧画面上で前記ユーザが選択した箇所に前記出力フィールドデータが存在する場合に表示されることを特徴とする請求項２乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記出力ページ情報に定義された前記フォームファイルのフィールドの編集可否情報に応じて、前記フィールドに関連する表とグラフを画像に変換する画像化手段をさらに有することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記検証手段は、検証結果が無効を示す場合にエラーメッセージを表示することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記出力ページは、ＳＶＧ（Ｓｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｇｒａｐｈｉｃｓ）形式であることを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
コンピュータを、請求項１乃至９のいずれか１項に記載の情報処理装置として機能させるためのプログラム。
【請求項１１】
フォームファイルとフィールドデータをオーバレイして帳票の出力ページを生成するサーバ装置と、前記出力ページを前記サーバ装置から受信して表示するクライアント装置とを含む電子帳票システムであって、
前記サーバ装置は、
オーバレイ処理時に前記出力ページとともに、前記出力ページに関連する出力フィールドデータの書式情報を含む出力ページ情報を生成する生成手段を有し、
前記クライアント装置は、
前記サーバ装置から受信した前記出力ページの閲覧画面上でユーザが選択した出力フィールドデータに対する入力値を、前記サーバ装置から受信した前記出力ページ情報に含まれる前記出力フィールドデータの書式情報に基づいて検証する検証手段と、
前記検証した出力フィールドデータの値で、前記出力フィールドデータに関連するグラフを更新する更新手段と有する電子帳票システム。
【請求項１２】
フォームファイルとフィールドデータをオーバレイして生成された帳票の出力ページを表示する情報処理装置において、前記出力ページのグラフを更新する方法であって、
前記出力ページとともにオーバレイ処理時に生成された、前記出力ページに関連する出力フィールドデータの書式情報を含む出力ページ情報を受信する受信工程と、
前記出力ページの閲覧画面上でユーザが選択した出力フィールドデータに対する入力値を、前記出力フィールドデータの書式情報に基づいて検証する検証工程と、
前記検証した出力フィールドデータの値で、前記出力フィールドデータに関連するグラフを更新する更新工程と
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子帳票を閲覧及び編集する技術に関する。
【背景技術】
【０００２】
従来、電子帳票（電子ファイル形式の帳票データ）の作成方法としては、以下の方法があった。まず、帳票の雛型（定型部分）を示すフォームファイルを、フォームエディタを用いて作成する。次に、当該フォームファイルに指定された各フィールドに対して、フィールドデータを重ね合わせる（オーバレイ処理）。つまり、フォームファイル内の各フィールドに、対応するフィールドデータを流し込む。こうすることにより、帳票データ（例えば、ＰＤＦ形式のファイル）を作成する。この方法では、例えば、サーバにおいてオーバレイ処理を実行して帳票データを作成し、クライアントコンピュータが、該帳票データをサーバから受信して該帳票データの表示や印刷を行う。
【０００３】
また、従来から電子帳票では、顧客への円滑な説明や、商品の視覚的インパクトを目的として、表データを用いてグラフを生成し、生成したグラフを表示することが多い。タブレットデバイスなどの携帯端末で商品説明をする際には、例えば、説明の最中に商品の価格を割引価格に変更し、変更後の割引価格をグラフに反映させたいというケースが多くある。そのような場合、新たな入力値が入力された表データでグラフを更新することになり、予期しない入力値によってグラフが破綻し、グラフ表示が乱れてしまうことがある。そのために、入力値が事前に定めた書式に沿っているかどうかを検証するのが一般的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１１９６８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、特許文献１には、帳票の入力項目ごとに書式情報を保存しておき、その書式情報を使って入力値を検証する技術が開示されている。しかしながら、フォームファイルにフィールドデータをオーバレイする場合、入力項目の有無がフィールドデータの内容やフォームファイルとの組み合わせによって異なるため、事前に書式情報を保存しておくことができない。
【０００６】
本発明は、このような問題に鑑みてなされたものであり、その目的とするところは、オーバレイ処理で生成された帳票の出力ページに対する入力値を検証して、当該出力ページに含まれるグラフの破綻を回避することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態において、フォームファイルとフィールドデータをオーバレイして生成された帳票の出力ページを表示する情報処理装置は、前記出力ページとともにオーバレイ処理時に生成された、前記出力ページに関連する出力フィールドデータの書式情報を含む出力ページ情報を受信する受信手段と、前記出力ページの閲覧画面上でユーザが選択した出力フィールドデータに対する入力値を、前記出力フィールドデータの書式情報に基づいて検証する検証手段と、前記検証した出力フィールドデータの値で、前記出力フィールドデータに関連するグラフを更新する更新手段とを有する。
【発明の効果】
【０００８】
本発明によれば、オーバレイ処理で生成された帳票の出力ページに対する入力値を検証して、当該出力ページに含まれるグラフの破綻を回避することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態における電子帳票システムの構成例を示す図。
【図２】第１の実施形態における情報処理装置のハードウェア構成例を示すブロック図。
【図３】第１の実施形態における帳票生成サーバの機能構成例を示す図。
【図４】第１の実施形態におけるウェブ帳票閲覧画面を生成する処理のシーケンスを示す図。
【図５】第１の実施形態におけるオーバレイ処理のフローチャートを示す図。
【図６】第１の実施形態における出力ページ情報の一例を示す図。
【図７】第１の実施形態におけるフォームエディタのフォーム編集画面を示す図。
【図８】第１の実施形態におけるグラフ属性の一例を示す図。
【図９】第１の実施形態におけるフィールドデータの一例を示す図。
【図１０】第１の実施形態におけるＳＶＧ形式の出力ページの一例を示す図。
【図１１】第１の実施形態におけるグラフ生成処理のフローチャートを示す図。
【図１２】第１の実施形態におけるグラフ生成処理の各処理を行うＪａｖａｓｃｒｉｐｔ（登録商標）プログラムの一例を示す図。
【図１３】第１の実施形態における識別情報付与後のＳＶＧ形式の出力ページの一例を示す図。
【図１４】第１の実施形態において生成されたウェブ帳票閲覧画面の一例を示す図。
【図１５】第１の実施形態において生成されたＳＶＧ形式のグラフの構成例を示す図。
【図１６】第１の実施形態におけるグラフ更新処理のフローチャートを示す図。
【図１７】第１の実施形態におけるグラフ更新処理の各処理を行うＪａｖａｓｃｒｉｐｔプログラムの一例を示す図。
【図１８】第２の実施形態におけるウェブ帳票閲覧画面の一例を示す図。
【図１９】第２の実施形態における出力データ更新ダイアログの構成例を示す図。
【図２０】第２の実施形態におけるグラフ更新処理のフローチャートを示す図。
【図２１】第３の実施形態における書式と入力フォームの組み合わせの例を示す図。
【図２２】第３の実施形態におけるウェブ帳票閲覧画面の一例を示す図。
【図２３】第３の実施形態におけるグラフ更新処理のフローチャートを示す図。
【図２４】第４の実施形態におけるグラフ生成処理のフローチャートを示す図。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明に係る実施形態について詳細に説明する。なお、以下の実施形態は本発明を限定するものではない。また、本実施形態で説明されている特徴の組み合わせの全てが本発明に必須のものとは限らない。同一の構成については、同じ符号を付して説明する。
【００１１】
（第１の実施形態）
＜システム構成＞
図１は、本実施形態における電子帳票システムの構成例を示す。電子帳票システムは、帳票生成サーバ（サーバ装置）１０１、クライアント装置１０２、及びプリンタ１０３を含む。
【００１２】
帳票生成サーバ１０１は、オーバレイ処理、及びウェブ帳票閲覧プログラムの生成処理を実行する。すなわち、帳票生成サーバ１０１は、帳票の雛形（定型部分）を示す所定のフォームファイルにフィールドデータを重ね合わせて、電子ファイル形式の出力ページ（帳票データ）を生成する。そして、生成された電子ファイル形式の出力ページをクライアント装置１０２のウェブブラウザ上で閲覧するためのウェブ帳票閲覧プログラムを生成する。
【００１３】
本実施形態におけるウェブ帳票閲覧プログラムは、ネットワーク１００を介してクライアント装置１０２に配信され、クライアント装置１０２のウェブブラウザ上で動作するウェブアプリケーションである。一般的に、このようなウェブアプリケーションは、ウェブページを表現するマークアップ言語（ＨＴＭＬ）及びウェブブラウザ上で動作するプログラミング言語（ＪａｖａＳｃｒｉｐｔ）により動作するアプリケーションである。なお、ウェブ帳票閲覧プログラムは、コンピュータシステム上で実行されるアプリケーションでもよい。また、帳票生成サーバ１０１が、後述する出力ページ及び出力ページ情報を格納したファイルのみを生成し、クライアント装置１０２が、当該ファイルを閲覧するためのウェブ帳票閲覧プログラムを備えてもよい。ウェブ帳票閲覧プログラムは、ウェブブラウザ上で帳票の出力ページを表示し、ユーザに閲覧させる画面を生成するアプリケーションであるため、以下ではウェブ帳票閲覧画面とも呼ぶ。
【００１４】
クライアント装置１０２は、帳票生成サーバ１０１からウェブ帳票閲覧プログラムを受信して実行し、ウェブ帳票閲覧画面を表示する。また、クライアント装置１０２は、帳票の出力ページに含まれるグラフの描画に必要な情報を帳票生成サーバ１０１から受信し、グラフを描画する。クライアント装置１０２は、ユーザ操作に応じてグラフ描画を更新する。
【００１５】
プリンタ１０３は、クライアント装置１０２からリクエストを受信して、帳票の出力ページを印刷する。
【００１６】
上記構成要素は、ネットワーク１００を介して通信可能に接続されている。ネットワーク１００は、例えば、ＬＡＮ、ＷＡＮ、インターネット、電話回線、専用デジタル回線、ＡＴＭやフレームリレー回線、ケーブルテレビ回線、データ放送用無線回線等の任意のネットワークでよい。また、ネットワーク１００は、これらの任意の組み合わせにより実現される通信ネットワークでもよい。このように、ネットワーク１００は、上記構成要素間でのデータ送受信が可能なネットワークであればよい。
【００１７】
＜ハードウェア構成＞
図２は、本実施形態における帳票生成サーバ１０１やクライアント装置１０２として利用可能な情報処理装置のハードウェア構成例を示すブロック図である。
【００１８】
ＣＰＵ２０１は、内部バス２０８で接続される各デバイス（後述のＲＯＭ２０２、ＲＡＭ２０３など）を直接或いは間接的に制御し、本発明を実現するためのプログラムを実行する。ＲＯＭ２０２は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）等のプログラムを格納している。ＲＡＭ２０３は、ＣＰＵ２０１のワーク領域として利用されたり、本発明を実現するためのプログラムをロードするための一時記憶領域として利用されたりする直接記憶装置である。
【００１９】
ＨＤＤ（ハードディスクドライブ）２０４は、基本ソフトウェアであるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等のプログラムが記憶されている間接記憶装置である。
【００２０】
入力装置２０５は、不図示のキーボードやポインティングデバイスなどである。出力装置２０６は、ディスプレイなどである。Ｉ／Ｆ（インターフェース）２０７は、ネットワーク１００に接続するためのインターフェースである。
【００２１】
このような情報処理装置では、起動後に、ＣＰＵ２０１によりＢＩＯＳが実行され、ＯＳがＨＤＤ２０４からＲＡＭ２０３に実行可能にロードされる。ＣＰＵ２０１は、ＯＳの命令に従って後述する各種プログラムをＨＤＤ２０４からＲＡＭ２０３に随時、実行可能にロードする。各種プログラムは、上記各デバイスの協調によりＣＰＵ２０１によって実行され動作する。また、Ｉ／Ｆ２０７は、ネットワーク１００に接続されており、ＯＳの命令に従ってＣＰＵ２０１により制御され、上述したネットワークによる通信を実現する。
【００２２】
＜ソフトウェア構成＞
図３は、本実施形態における帳票生成サーバ１０１の機能構成例を示す図である。各機能部は、図２に示したＨＤＤ２０４に記憶されたプログラムを、前述したようにＣＰＵ２０１がＲＡＭ２０３にロードし、実行することによって実現される。
【００２３】
帳票生成サーバ１０１は、アクセス制御部３０１、ウェブページ生成部３０２、データアクセス部３０３、出力ページ生成部３０４、及び帳票関連データベース３０５を有する。帳票関連データベース３０５は、フォーム３０６、フィールドデータ３０７、出力ページ３０８、出力ページ情報３０９、及び帳票部品情報３１０というデータベースを含む。
【００２４】
アクセス制御部３０１は、クライアント装置１０２からのリクエストに応じて、ユーザ認証を行う。
【００２５】
ウェブページ生成部３０２は、クライアント装置１０２にレスポンスとして返すウェブページを生成する。また、ウェブページ生成部３０２は、ウェブ帳票閲覧プログラムであるウェブアプリケーションに必要なＨＴＭＬ、ＪａｖａＳｃｒｉｐｔなどのファイルも生成し、クライアント装置１０２に返す。
【００２６】
データアクセス部３０３は、上述した各データベース３０５、３０６、３０７、３０８、３０９へのアクセス処理を行う。
【００２７】
出力ページ生成部３０４は、データアクセス部３０３を介してフォーム３０６から読み出したフォームファイルと、フィールドデータ３０７から読み出したフィールドデータを重ね合わせて、帳票の出力ページを生成する（オーバレイ処理）。さらに、出力ページ生成部３０４は、生成した出力ページから、プリンタドライバなどのソフトウェアを利用して電子ファイル形式の出力ページを生成する。出力ページ生成部３０４はさらに、電子ファイル形式の出力ページを、ＳＶＧ（Ｓｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｇｒａｐｈｉｃｓ）形式等の別の形式へ変換することもできる。
【００２８】
帳票関連データベース３０５は、帳票関連データを格納する。帳票関連データは、帳票名や所有者など、帳票に関する情報を表す。また、帳票関連データベース３０５は、帳票と、フォームファイル及びフィールドデータとを紐付けて格納している。さらに、帳票関連データベース３０５は、帳票と、オーバレイ処理で生成される出力ページ及び後述する出力ページ情報とを紐付けて格納している。帳票関連データベース３０５を利用することで、例えば、ある帳票ページがどのフォームファイルから生成されたのかを特定することができる。
【００２９】
フォーム３０６は、フォームファイルを格納するデータベースである。フィールドデータ３０７は、フィールドデータを格納するデータベースである。出力ページ３０８は、出力ページ生成部３０４が生成した出力ページを格納するデータベースである。出力ページ情報３０９は、オーバレイ処理時に生成される出力ページ情報を格納するデータベースである。出力ページ情報については後述する。帳票部品情報３１０は、出力ページに配置可能なパーツ（帳票部品）の情報を格納するデータベースである。帳票部品には複数の種類があり、ユーザが用途や目的によって使い分ける。帳票部品には、帳票プレビュー時に押下するとメッセージを表示する「ポップアップ」や、押下すると指定のＵＲＬを開く「リンク」等が含まれる。
【００３０】
また、本実施形態におけるクライアント装置１０２は、図２に示したＨＤＤ２０４に記憶されたプログラムを、前述したようにＣＰＵ２０１がＲＡＭ２０３にロードし、実行することによって、以下の機能部を実現する。特に、クライアント装置１０２は、帳票生成サーバ１０１から受信したウェブ帳票閲覧プログラム（例えば、ＨＴＭＬやＪａｖａｓｃｒｉｐｔなど）を実行することにより、各機能を実現する。
【００３１】
クライアント装置１０２は、出力ページとともにオーバレイ処理時に生成された、出力ページに関連する出力フィールドデータの書式情報を含む出力ページ情報を受信する受信部を有する。また、クライアント装置１０２は、出力ページの閲覧画面上でユーザが選択した出力フィールドデータに対する入力値を、出力フィールドデータの書式情報に基づいて検証する検証部を有する。また、クライアント装置１０２は、検証した出力フィールドデータの値で、出力フィールドデータに関連するグラフを更新する更新部を有する。詳細は後述する。
【００３２】
なお、帳票生成サーバ１０１及びクライアント装置１０２が有する機能部は上述したものに限定されず、その他の機能部も有してよい。
【００３３】
＜帳票出力＞
次に、本実施形態における帳票の出力ページの生成処理、すなわち、オーバレイ処理について説明する。
【００３４】
帳票の出力ページを生成するためのフォームファイルは、ユーザがフォームエディタを利用して作成し、帳票生成サーバ１０１に保存される。フォームファイルは、フィールドデータに依存しない固定的なフォームオブジェクトと、フィールドデータを所定の書式情報に従って表示するフィールドオブジェクトを含む。フィールドオブジェクトは、フィールドデータを受け取るフィールドを含む。フィールドオブジェクトとフィールドは関連付けられている。
【００３５】
帳票生成サーバ１０１は、フィールドオブジェクトが定義されたフォームファイルと、フィールドオブジェクトのフィールドに対応するフィールドデータとを重ね合わせて（オーバレイ処理）、帳票の出力ページを生成する。
【００３６】
＜フォームファイル＞
図７は、本実施形態におけるフォームエディタのフォーム編集画面を示す。図７のフォーム編集画面は、複数のフォームファイルを含む複合フォームファイルを表示している。以下では、図７を参照してフォームファイルについて説明する。
【００３７】
複合フォームファイル７０１は、１つの帳票ファイルとして出力される。複合フォームファイル７０１は、ユーザがフォームエディタを利用して作成し、帳票生成サーバ１０１に保存される。複合フォームファイル内の各フォームファイルを「フェース（Ｆａｃｅ）」と呼ぶ。
【００３８】
図７（ａ）は、フォーム編集画面においてＦａｃｅ１  ７０２が選択され、フォームファイル７０４が表示された状態を示す。また、図７（ｂ）は、フォーム編集画面においてＦａｃｅ２  ７０３が選択され、フォームファイル７０５が表示された状態を示す。フォームファイル７０５は、表オブジェクト７０６及びグラフ７０７を含む。
【００３９】
表オブジェクト７０６は、表形式のフィールドオブジェクトであり、「年齢区分」、「商品Ａ＿月額保険料」、及び「商品Ｂ＿月額保険料」という３つのフィールドを含む。表オブジェクト７０６は、フィールドデータをレコード単位で受け取る。
【００４０】
グラフ７０７は、表オブジェクト７０６のフィールドデータをグラフ化する。グラフ７０７は、「年齢区分」フィールドのフィールドデータをＸ軸ラベルにして、「商品Ａ＿月額保険料」及び「商品Ｂ＿月額保険料」のフィールドデータをそれぞれ折れ線グラフとして描画するよう設定されている。グラフの設定は、フォームファイルがフォームエディタによって保存される際に、「グラフ属性」としてフォームファイル内に保持される。
【００４１】
図８は、本実施形態におけるグラフ属性の一例を示す。グラフ属性（ｇｒａｐｈ＿ａｔｔｒｉｂｕｔｅ）８０１は、フォームファイル内の１つのグラフに関するグラフ属性を示す。グラフ属性８０１は、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）形式で示しているが、別の形式でもよい。
【００４２】
グラフ属性識別子（ａｔｔｒｉｂｕｔｅ＿ｉｄ）８０２は、グラフ属性を区別するための識別子であり、フォームファイル内で一意となる。本例の場合、グラフ属性識別子８０２は「ｇｒａｐｈ＿ａｔｔｒｉｂｕｔｅ＿１」を示す。
【００４３】
タイプ（ｔｙｐｅ）８０３は、グラフの種類を示す。本例の場合、タイプ８０３は「ｌｉｎｅ」を示し、折れ線グラフを表す。
【００４４】
シリーズ部分（ｓｅｒｉｅｓ）８０４は、グラフにプロットされる系列データを示す。本例では、２つの系列データが指定されている。系列データの指定は、系列データに関する詳細設定を含む。本例では、シリーズ部分８０４は、グラフ毎にフィールド名（ｆｉｅｌｄ＿ｎａｍｅ）８０５、及び色指定（ｃｏｌｏｒ）８０６を含む。フィールド名８０５は、系列データとして利用されるフィールド名を示す。色指定８０６は、表示される系列データの色を示す。本例では、「商品Ａ＿月額保険料」フィールドのデータが赤い折れ線でグラフ化され、「商品Ｂ＿月額保険料」フィールドのデータが青い折れ線でグラフ化されるように設定されている。
【００４５】
ラベル（ｌａｂｅｌ）８０７は、グラフのＸ軸ラベルに使用するフィールド名を示す。本例では、「年齢区分」フィールドが設定されている。
【００４６】
オーバレイ処理では、読み込まれたフィールドデータが、「年齢区分」、「商品Ａ＿月額保険料」、及び「商品Ｂ＿月額保険料」の３つのフィールドに流し込まれる。そして、描画位置等を決定するレイアウト処理が行われ、３つのフィールドに紐づくフィールドオブジェクトの書式情報に従って出力データが表示される。図７（ｂ）のようにフォームファイル７０５内にグラフ７０７が存在する場合、さらにそのグラフ属性８０１に従ってグラフが描画される。グラフには、「年齢区分」フィールドに流し込まれたフィールドデータがＸ軸に、「商品Ａ＿月額保険料」及び「商品Ｂ＿月額保険料」フィールドに流し込まれたフィールドデータがそれぞれ折れ線として描画される。このようにして、１つのフィールドデータに連動した表とグラフを含む帳票の出力ページが生成される。なお、上記説明は、通常のオーバレイ処理についてのものであり、本実施形態では、グラフ描画に関する処理が異なる。詳細は後述する。
【００４７】
図９は、本実施形態におけるフィールドデータの一例を示す。
【００４８】
フォームファイル関連定義９０１は、フォームファイル切り替え命令９０２及びフェース切り替え命令９０３を含む。帳票生成サーバ１０１がフィールドデータを読み込んだ際、フォームファイル関連定義９０１を読み込んで、各切り替え命令を解釈してフィールドデータを流しこむフォームファイル及びフェースを特定する。図９のフィールドデータでは、「複合フォーム１」の「Ｆａｃｅ１」のフォームファイルに定義された表Ａに対して、データブロック９０４が流し込まれる。さらに、「複合フォーム１」の「Ｆａｃｅ２」のフォームファイルに定義された表Ｂに対して、データブロック９０５が流し込まれる。
【００４９】
このようにして、複合フォームファイルとそこに流し込まれるフィールドデータがオーバレイされ、１つの帳票ファイルが生成される。表及びグラフを含む１つのフォームファイルに関するオーバレイ処理の概要については、図８の説明で述べたとおりである。
【００５０】
＜ウェブ帳票閲覧画面の生成＞
図４は、本実施形態におけるウェブ帳票閲覧画面を生成する処理のシーケンスを示す図である。図示された一連の処理は、帳票生成サーバ１０１またはクライアント装置１０２のＣＰＵがＲＯＭに記憶されているプログラムをＲＡＭに展開し、実行することにより行われる。あるいはまた、一連の処理の一部または全部を実行する機能をＡＳＩＣや電子回路等のハードウェアで実現してもよい。なお、各処理の説明における記号「Ｓ」は、当該シーケンスにおけるステップを意味する。後述するその他のフローチャートについても同様である。
【００５１】
まず、Ｓ４０１において、クライアント装置１０２は、ウェブブラウザ上でユーザのログインリクエストを受け付け、ネットワーク１００を介して帳票生成サーバ１０１に送信する。なお、ユーザのログイン方法は特に限定するものではなく、一般的なユーザ認証でよい。
【００５２】
Ｓ４０２において、帳票生成サーバ１０１のアクセス制御部３０１は、クライアント装置１０２から受信したログインリクエストに応じて、ログイン処理を行う。アクセス制御部３０１で、ログインリクエストが有効であると判断された場合、Ｓ４０３に進む。
【００５３】
Ｓ４０３において、帳票生成サーバ１０１のウェブページ生成部３０２は、ログインしたユーザの情報に応じて帳票選択画面を生成する。帳票選択画面は、ウェブページ生成部３０２によって帳票関連データベース３０５から抽出された、ログインしたユーザが閲覧可能な帳票名、例えば、ログインしたユーザが所有する帳票名の一覧を、選択可能に表示する。
【００５４】
Ｓ４０４において、帳票生成サーバ１０１のアクセス制御部３０１は、Ｓ４０３で生成された帳票選択画面を、ネットワーク１００を介してクライアント装置１０２に返す。
【００５５】
Ｓ４０５において、クライアント装置１０２は、帳票生成サーバ１０１からのレスポンスである帳票選択画面を受け取り、ウェブブラウザ上に表示する。
【００５６】
Ｓ４０６において、クライアント装置１０２は、ユーザが帳票選択画面から選択した帳票の帳票名を受け取る。
【００５７】
Ｓ４０７において、クライアント装置１０２は、帳票選択画面を通じて帳票生成サーバ１０１に、ユーザが選択した帳票に関する帳票処理リクエストを送信する。帳票処理リクエストの中に、処理対象の帳票を特定できる情報が包含される。
【００５８】
Ｓ４０８において、帳票生成サーバ１０１のアクセス制御部３０１は、クライアント装置１０２から送信された帳票処理リクエストを受信する。続いて、帳票生成サーバ１０１の出力ページ生成部３０４は、データアクセス部３０３を介して、処理対象の帳票に関連するフォームファイル及びフィールドデータを取得する。
【００５９】
Ｓ４０９において、帳票生成サーバ１０１のアクセス制御部３０１は、Ｓ４０８で受信した帳票処理リクエストがウェブ帳票閲覧画面の生成リクエストかどうかを判定する。具体的には、受信した帳票処理リクエストのｔｙｐｅパラメータを解析し、値が「ｗｅｂｖｉｅｗ」の場合に、ウェブ帳票閲覧画面の生成リクエストであると判定する。
【００６０】
Ｓ４０９でウェブ帳票閲覧画面の生成リクエストと判定した場合、Ｓ４１０において、帳票生成サーバ１０１の出力ページ生成部３０４は、ウェブ帳票向けの出力ページを生成するオーバレイ処理を行う。その際、Ｓ４０８で取得したフォームファイル及びフィールドデータを使用する。
【００６１】
Ｓ４０９でウェブ帳票閲覧画面の生成リクエストではないと判定した場合、Ｓ４１１において、帳票生成サーバ１０１の出力ページ生成部３０４は、通常の出力ページを生成するオーバレイ処理を行う。Ｓ４１１より後の処理については一般的なフローになるため、説明を省略する。
【００６２】
以下、図５のフローチャートを用いて、Ｓ４１０及びＳ４１１におけるオーバレイ処理を説明する。Ｓ４１０及びＳ４１１では基本的な処理は同じであるため、差分を説明しつつ両ステップにおけるオーバレイ処理について説明する。
【００６３】
図５は、本実施形態におけるオーバレイ処理のフローチャートを示す。フローチャートに示す一連の処理は、帳票生成サーバ１０１が実行するものとして説明するが、具体的には、帳票生成サーバ１０１の出力ページ生成部３０４が実行する。
【００６４】
Ｓ５０１において、帳票生成サーバ１０１は、処理対象のフィールドデータを読み込む。
【００６５】
Ｓ５０２において、帳票生成サーバ１０１は、読み込んだフィールドデータ内に、フォームファイル切り替え命令９０２が含まれているかどうかを判定する。フォームファイル切り換え命令９０２が含まれていない場合、Ｓ５０５に進む。一方、フォームファイル切り替え命令９０２が含まれている場合、Ｓ５０３に進む。
【００６６】
Ｓ５０３で、帳票生成サーバ１０１は、カレントフォームファイル情報を更新する。カレントフォームファイル情報は、現在処理対象のフォームファイルの情報であり、帳票生成サーバ１０１のＲＡＭ２０３に確保されたバッファ領域に記憶される。帳票生成サーバ１０１は、フォームファイル切り替え命令９０２によって指定された切り替え先のフォームファイルを処理対象のフォームファイルとするように、カレントフォームファイル情報を更新する。
【００６７】
Ｓ５０４において、帳票生成サーバ１０１は、Ｓ５０３で更新したカレントフォームファイル情報に対応するフォームファイルの中身をＲＡＭ２０３上に読み込む（フォームファイル取得）。
【００６８】
Ｓ５０５において、帳票生成サーバ１０１は、読み込んだフィールドデータ内に、フェース切り替え命令９０３が含まれているかどうかを判定する。フェース切り替え命令９０３が含まれていない場合、Ｓ５０８に進む。一方、フェース切り替え命令９０３が含まれている場合、Ｓ５０６に進む。
【００６９】
Ｓ５０６において、帳票生成サーバ１０１は、カレントフェース情報を更新する。カレントフェース情報は、現在処理対象のフェースの情報であり、帳票生成サーバ１０１のＲＡＭ２０３に確保されたバッファ領域に記憶される。帳票生成サーバ１０１は、フェース切り替え命令９０３によって指定された切り替え先のフェースを処理対象のフェースとするように、カレントフェース情報を更新する。なお、カレントフォームファイルが複合フォームファイルではない場合も、仮想的なフェース（「仮想フェース」）があるものとして処理する。
【００７０】
Ｓ５０７において、帳票生成サーバ１０１は、Ｓ５０６で更新したカレントフェース情報に対応するフェースの実体であるフォームファイルの中身を、ＲＡＭ２０３上に読み込む（フェース取得）。
【００７１】
Ｓ５０８において、帳票生成サーバ１０１は、レイアウト処理を行う。レイアウト処理とは、読み込んだフィールドデータをフィールドに流し込み、フィールドに紐づくフィールドオブジェクトに設定された文字サイズ等の各種属性を反映したうえで、文字列及び矩形枠線等の関連する各種オブジェクトの配置を決定する処理である。
【００７２】
Ｓ５０９において、帳票生成サーバ１０１は、このオーバレイ処理がウェブ帳票向けのオーバレイ処理かどうかを判定する。ウェブ帳票向けの出力ページとその他の用途向けの出力ページとで異なる処理が必要なため、本ステップで判定を行う。判定は、Ｓ４０９での判定結果を元に行う。
【００７３】
Ｓ５０９でウェブ帳票向けのオーバレイ処理ではないと判定した場合、Ｓ５１０において、帳票生成サーバ１０１は、１ページの描画処理を行う。帳票生成サーバ１０１は、Ｓ５０８で決定したレイアウトに従い、文字列等の各種オブジェクトを実際に描画していく。具体的には、ＯＳであるＷｉｎｄｏｗｓ（登録商標）のＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）が提供するＴｅｘｔＯｕｔ等の関数を用いて各種オブジェクトを描画する。
【００７４】
Ｓ５０９でウェブ帳票向けのオーバレイ処理であると判定した場合、Ｓ５１１において、帳票生成サーバ１０１は、グラフ描画なしで１ページの描画処理を行う。Ｓ５１１の描画処理は、通常のオーバレイ処理であるＳ５１０の描画処理と基本的には変わらないが、フォームファイル内のグラフ７０７については検知しても描画を行わないようにする。
【００７５】
Ｓ５１２において、帳票生成サーバ１０１は、１ページの描画が全て完了したかどうかを判定する。上述したＳ５０８〜Ｓ５１１にて、帳票生成サーバ１０１は、読み込んだフィールドデータをフィールドに流し込みながら、レイアウト処理及び描画処理を行う。各ステップでは１ページの切れ目を意識した処理はしていないので、本ステップで１ページの描画が完了したかを確認する。１ページの描画が完了していないと判定された場合は、Ｓ５０８に戻り、レイアウト処理及び描画処理を継続する。一方、１ページの描画が完了したと判定された場合には、Ｓ５１３に進む。なお、１ページ分の描画完了判定は、フィールドデータのオーバフロー検知により行う。例えば、フィールドデータを表に流し込んでレイアウト処理及び描画処理を繰り返している際に、フォームファイルに定義された表の最大行数を超えるフィールドデータの読み込みを検知した場合に、１ページ分の描画を完了したと判定する。
【００７６】
Ｓ５１３において、帳票生成サーバ１０１は、このオーバレイ処理がウェブ帳票向けのオーバレイ処理かどうかを判定する。判定方法は、Ｓ５０９と同じである。
【００７７】
Ｓ５１３でウェブ帳票向けのオーバレイ処理ではないと判定した場合、Ｓ５１６に進む。一方、Ｓ５１３でウェブ帳票向けのオーバレイ処理であると判定した場合、Ｓ５１４において、帳票生成サーバ１０１は、出力ページ情報を更新する。出力ページ情報が存在しない場合は、新規に作成する。
【００７８】
図６は、本実施形態における出力ページ情報の一例を示す。出力ページ情報は、ウェブ帳票閲覧画面の構築及び画面内のグラフ描画を行う際に利用される情報である。出力ページ情報は、オーバレイ処理でのみ取得できる情報を含む。本例では、出力ページ情報は、ファイル形式（ＪＳＯＮフォーマット）であるが、これに限定されない。
【００７９】
出力ページ情報６０１は、複数のページブロック６０２を含む。ページブロック６０２は、各ページの出力ページについての情報をまとめたブロックである。例えば、出力ページ情報６０１の１つ目のページブロック６０２は、ページ番号６０３、利用フォームファイル名６０４及び利用フェース名６０５を含む。利用フォームファイル名６０４は、その出力ページのために利用されたフォームファイルの名前を示す。利用フェース名６０５は、その出力ページのために利用されたフェースの名前を示す。出力ページ情報６０１によると、１ページ目（ページ番号「１」）では、フォームファイル「ｆｏｒｍ＿ａ」のフェース「１」が利用されたことが分かる。
【００８０】
出力データ情報ブロック６０６は、各出力ページ上に出力された出力データの情報を示す。フィールドデータは、各フィールドに流し込まれ、フィールドオブジェクトの文字色やフォント属性に従って出力ページ上に描画される。出力データは、出力ページ上に描画された結果要素である。出力データ情報ブロック６０６には、各出力データ（すなわち、描画されたフィールドデータ）の情報が羅列される。出力データ情報ブロック６０６の１要素は、「フィールド名」（ｆｉｅｌｄ＿ｎａｍｅ）、「出力データ識別子」（ｉｄ）、「書式情報」（ｆｏｒｍａｔ）、及び「位置・サイズ情報」（ｌｅｆｔ，ｔｏｐ，ｗｉｄｔｈ，ｈｅｉｇｈｔ）を含む。帳票生成サーバ１０１は、これらの情報を参照することで、その出力データ（フィールドデータ）が関連付くフィールドの編集の際に入力値を検証するための書式を特定する。また、出力データ（フィールドデータ）の描画位置及びサイズも特定できる。
【００８１】
出力グラフ情報６０７は、各出力ページ上に出力されたグラフに関する情報を示す。出力グラフ情報６０７は、グラフが出力された出力ページに対してのみ存在するため、２ページ目（ページ番号「２」）には存在しない。出力グラフ情報６０７は、グラフ属性識別子６０８（ａｔｔｒｉｂｕｔｅ＿ｉｄ）、出力グラフ識別子６０９（ｉｄ）を含む。また、出力グラフデータ範囲６１０（ｔａｒｇｅｔ＿ｐａｇｅ＿ｒａｎｇｅ）、出力グラフ位置６１１（ｌｅｆｔ、ｔｏｐ、ｗｉｄｔｈ、ｈｅｉｇｈｔ）を含む。グラフ属性識別子６０８は、グラフ属性８０１のグラフ属性識別子８０２に対応する。グラフ属性識別子６０８は、このグラフがどのグラフ属性に従って生成されたかを示す。出力グラフデータ範囲６１０は、このグラフで使用された出力データが存在する出力ページのページ番号を示す。グラフが複数ページにまたがる場合、ページ番号はカンマ区切りで羅列される。
【００８２】
図５に戻り、Ｓ５１４における出力ページ情報の更新の際に、帳票生成サーバ１０１は、現在処理中のフォームファイル及びフェース名、並びに現在の出力ページ数に基づいて、出力ページ情報へページブロック６０２の情報を追記していく。出力ページ情報が存在しない場合は新規に作成する。さらに帳票生成サーバ１０１は、Ｓ５０８のレイアウト処理で決定した各出力データ（フィールドデータ）に関するレイアウト情報を、出力データ情報ブロック６０６へ追記する。帳票生成サーバ１０１は、出力データ（フィールドデータ）ごとに、「フィールド名」、「出力データ識別子」、「書式情報」、及び「位置・サイズ情報」を追記していく。１ページ中に同じフィールドに関連付く出力データ（フィールドデータ）が複数存在する場合があるため、「出力データ識別子」は、各出力データ（フィールドデータ）で一意になるよう生成する。また、帳票生成サーバ１０１は、Ｓ５０８のレイアウト処理の結果、現在の出力ページにグラフを出力した場合、出力ページ情報６０１のページブロック６０２へ出力グラフ情報６０７を追記する。出力したグラフの属性識別子を、フォームファイル内のグラフ属性８０１から特定し、グラフ属性識別子６０８として追記する。フォームファイル内のグラフ属性８０１から関連フィールド（「商品Ａ＿月額保険料」、「商品Ｂ＿月額保険料」、「年齢区分」）を特定し、そのフィールドに紐づく出力データが出力されたページの番号を、出力グラフデータ範囲６１０として追記する。
【００８３】
Ｓ５１５において、帳票生成サーバ１０１は、出力ページ情報を、データアクセス部３０３を介して出力ページ情報のデータベース３０９に格納する。そして、出力ページ情報を特定できる情報を帳票関連データのデータベース３０５中の該当レコードに追加する。
【００８４】
Ｓ５１６において、帳票生成サーバ１０１は、フィールドデータの読み込みが完了したかどうかを判定する。完了していればオーバレイ処理は終了する。完了していなければＳ５０１に戻り、フィールドデータの読み込みを続ける。
【００８５】
以上説明したように、Ｓ４１０もしくはＳ４１１におけるオーバレイ処理が行われ、出力ページが生成される。
【００８６】
図４に戻り、Ｓ４１２において、出力ページ生成部３０４は、Ｓ４１０もしくはＳ４１１で生成したＰＤＦ形式の出力ページを、ＳＶＧ（スケーラブル・ベクター・グラフィックス）形式の出力ページに変換する。ＰＤＦ形式の出力ページは、文字列や矩形等の各描画要素が個々のオブジェクトとして独立して保持されておらず、より基本的な線や面の描画命令の集合で構成されている。例えば、矩形は、原点の移動命令や線分の描画命令で構成されており、矩形としてオブジェクトを認識できない。このため、ＰＤＦ形式のままでは、ウェブブラウザ上で各描画要素を直接編集しづらい。これを解消するため本ステップでは、より編集しやすい形式（本実施形態ではＳＶＧ形式）の出力ページに変換する。続いて、出力ページ生成部３０４は、データアクセス部３０３を介してＳＶＧ形式の出力ページを出力ページのデータベース３０８に格納する。そして、格納されたＳＶＧ形式の出力ページを特定できる情報を、帳票関連データのデータベース３０５中の該当レコードに追加する。
【００８７】
図１０は、本実施形態におけるＳＶＧ形式の出力ページの一例を示す。ＳＶＧ形式の出力ページ１００１では、各描画要素が独立したオブジェクトとしてタグ形式で表現されている。ＳＶＧタグ１００２には、出力ページ全体の様々な描画要素が混在して収められる。テキストタグ１００３は、文字列要素であり、描画文字列は＜ｔｅｘｔ＞タグで囲まれた内部に保持され、その描画座標がｘ及びｙのタグ属性で指定されている。また、出力ページ１００１は、罫線タグ１００４や矩形タグ１００５により、罫線や矩形の描画要素を含む。
【００８８】
図４に戻り、Ｓ４１３において、帳票生成サーバ１０１は、Ｓ４０８で受信した帳票処理リクエストの対象帳票のウェブ帳票閲覧画面のリダイレクトＵＲＬをクライアント装置１０２に返す。リダイレクトＵＲＬは、Ｓ４１２で生成したＳＶＧ形式の出力ページを特定できる情報を含む。本実施形態では、リダイレクトＵＲＬの中に、出力ページと関連する帳票関連データの帳票名が含まれている。
【００８９】
Ｓ４１４において、クライアント装置１０２は、帳票生成サーバ１０１から返されたリダイレクトＵＲＬを使用してウェブ帳票閲覧画面にリダイレクトするリダイレクトリクエストを帳票生成サーバ１０１に送信する。
【００９０】
Ｓ４１５において、帳票生成サーバ１０１のウェブページ生成部３０２は、クライアント装置１０２から受信したリダイレクトリクエストに応じて、ウェブ帳票閲覧画面を生成する。ウェブ帳票閲覧画面は、ＳＶＧ形式の出力ページ、出力ページの閲覧及び編集操作を制御するためのＪａｖａｓｃｒｉｐｔプログラム、並びに画面を構成するＨＴＭＬコードを含む。ウェブページ生成部３０２は、リダイレクトリクエスト中の帳票名を利用して、データアクセス部３０３を介して対象帳票に関連する出力ページをデータベース３０８から取得する。対象帳票に関連する出力ページが複数ある場合は、複数ページ取得する。クライアント装置１０２は、Ｊａｖａｓｃｒｉｐｔプログラムを用いて複数の出力ページとページ番号を紐付けて管理する。
【００９１】
Ｓ４１６において、帳票生成サーバ１０１は、Ｓ４１５で生成したウェブ帳票閲覧画面をクライアント装置１０２に返す。
【００９２】
Ｓ４１７において、クライアント装置１０２は、帳票生成サーバ１０１から返されたウェブ帳票閲覧画面をブラウザ上に表示する。複数の出力ページがある場合、１ページ目を最初に表示する。また、後続のＳ４１８以降で行う各種情報の取得処理が終わるまでは、ブラウザ上のウェブ帳票閲覧画面に、ロード中を示すアイコンを重ねて描画する。後述するＳ４２３やＳ４２４等の処理は、本ステップで帳票生成サーバ１０１から配信されたＪａｖａｓｃｒｉｐｔプログラムにより制御される。Ｊａｖａｓｃｒｉｐｔプログラムは、クライアント装置１０２のＲＡＭ２０３にブラウザプロセスと共にロードされ、ブラウザ上に読み込まれたＨＴＭＬの操作や帳票生成サーバ１０１へのリクエスト等を行う。
【００９３】
Ｓ４１８において、クライアント装置１０２は、帳票生成サーバ１０１へ出力ページ情報やグラフ属性等の各種情報の取得リクエストを行う。リクエストは、画面を構成するＪａｖａｓｃｒｉｐｔプログラムからＡｊａｘ（Ａｓｙｎｃｈｒｏｎｏｕｓ  ＪａｖａＳｃｒｉｐｔ  ＋  ＸＭＬ）を利用して行われる。すなわち、リクエストは、ＪａｖａｓｃｒｉｐｔプログラムからＡｊａｘを利用して、帳票生成サーバ１０１が開示するＲＥＳＴ（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）インターフェースに対して行われる。クライアント装置１０２は、帳票生成サーバ１０１のＲＥＳＴインターフェースに対して、帳票名を指定して各種情報の取得リクエストを行う。
【００９４】
Ｓ４１９において、帳票生成サーバ１０１は、クライアント装置１０２から受信したリクエストに含まれる帳票名をもとに、データアクセス部３０３を介して対象帳票に関連する各種情報を取得する。具体的には、出力ページ情報をデータベース３０９から、グラフ属性をデータベース３０６から取得する。グラフ属性はＳ８１５にて帳票生成サーバ１０１がデータベース３０６に帳票名と紐付けて保存したものである。
【００９５】
Ｓ４２０において、帳票生成サーバ１０１は、Ｓ４１９で取得した各種情報、すなわち、出力ページ情報及びグラフ属性を、レスポンスとしてクライアント装置１０２へ返す。
【００９６】
Ｓ４２１において、クライアント装置１０２は、帳票生成サーバ１０１から返された出力ページ情報及びグラフ属性を、帳票名と紐付けた状態でＲＡＭ２０３に保存する。これにより、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムは、帳票名をキーとして特定の帳票に紐付けられた出力ページ情報及びグラフ属性にアクセス可能となる。
【００９７】
Ｓ４２２において、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムは、ウェブ帳票閲覧画面に現在表示されているページの番号を特定する。通常、初回表示時は１ページ目が表示される。画面のロード中に操作を受け付けるようにすることも可能である。ユーザ操作によりページが遷移した場合、Ｊａｖａｓｃｒｉｐｔプログラムはそれを検知して、ＲＡＭ２０３に保持されている現在表示中のページ番号情報を更新する。
【００９８】
Ｓ４２３において、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムは、グラフ生成処理を行う。詳細は後述する。
【００９９】
Ｓ４２４において、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムは、グラフ更新処理を行う。詳細は後述する。
【０１００】
図１１は、Ｓ４２３でクライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムが行うグラフ生成処理のフローチャートを示す。また、図１２は、図１１のフローチャートに対応するグラフ生成処理の各処理を行うＪａｖａｓｃｒｉｐｔプログラムの一例を示す。図１２（ａ）は、図１１のフローチャートのＳ１１０１〜Ｓ１１１０の全体的な処理に対応するＪａｖａｓｃｒｉｐｔプログラムを示す。また、図１２（ｂ）は、図１１のフローチャートのＳ１１０８の識別情報付与処理に対応するＪａｖａｓｃｒｉｐｔプログラムを示す。図示されたＪａｖａｓｃｒｉｐｔプログラムは、すべてクライアント装置１０２上で動作する。
【０１０１】
Ｓ１１０１において、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラム（以下、プログラムとも称する）１２０１は、帳票名に紐付けられた状態でＲＡＭ２０３に保存された出力ページ情報６０１を取得する。
【０１０２】
Ｓ１１０２において、プログラム１２０２は、現在表示中の出力ページ（現在ページ）に存在するグラフの出力グラフ情報６０７を取得する。プログラム１２０２は、Ｓ１１０１で取得した出力ページ情報６０１の現在ページのページブロック６０２を参照し、出力グラフ情報６０７を取得する。
【０１０３】
Ｓ１１０３において、プログラム１２０３は、現在表示中の出力ページにグラフが１つ以上存在するかどうかを判定する。プログラム１２０３は、Ｓ１１０２で取得した出力グラフ情報６０７を参照し、１つ以上のグラフが含まれるかどうかを判定する。グラフが１つ以上存在する場合は、ｅｘｉｓｔメソッドの戻り値が真となり、１つ以上のグラフが存在すると判定される。１つ以上のグラフが存在すると判定された場合は、Ｓ１１０４に進む。一方、グラフが存在しないと判定された場合は、グラフ描画処理を終了する。
【０１０４】
Ｓ１１０４において、プログラム１２０４は、現在ページに存在するグラフのグラフ属性８０１を取得する。プログラム１２０４は、ＲＡＭ２０３に保存された複数のグラフ属性８０１のうち、出力グラフ情報６０７のグラフ属性識別子６０８に対応するグラフ属性８０１を取得する。フォームファイルには複数のグラフが定義可能なため、複数のグラフ属性８０１が存在する可能性がある。
【０１０５】
Ｓ１１０５において、プログラム１２０５は、グラフ属性８０１をもとに関連するフィールドを特定する。プログラム１２０５は、Ｓ１１０４で取得したグラフ属性８０１内の、グラフの系列データとして利用するフィールド名８０５と、グラフのＸ軸ラベルに使用するラベルフィールド名８０７とを参照して、関連フィールドを特定する。
【０１０６】
Ｓ１１０６において、プログラム１２０６は、グラフに表示する出力フィールドデータを含む出力ページ（ＳＶＧ）を特定する。プログラム１２０６は、Ｓ１１０１で取得した出力ページ情報６０１内の出力グラフデータ範囲６１０のページ番号値を参照して、グラフ表示に必要な出力フィールドデータを含む出力ページ（ＳＶＧ）１００１を特定する。
【０１０７】
Ｓ１１０７において、プログラム１２０７は、Ｓ１１０６で特定した出力ページ（ＳＶＧ）１００１を取得する。出力ページ（ＳＶＧ）１００１は、ＲＡＭ２０３に保持されている。
【０１０８】
Ｓ１１０８において、プログラム１２０８は、出力ページ（ＳＶＧ）１００１に含まれるテキストタグ１００３に識別情報を付与する。Ｓ１１０８を行う前には、出力ページ（ＳＶＧ）１００１内のテキストタグ１００３を参照することで、文字列が存在することは確認できる。しかし、その文字列がフィールドオブジェクトから生成された出力データ（すなわち、出力フィールドデータ）であるかどうかは判断できない（フィールドに関連のある文字列なのかは判断できない）。本ステップは、出力ページ（ＳＶＧ）１００１内の文字列がフィールドに関連のある出力データであるかどうかの判断をしやすくするために行う。識別情報の付与は、出力データの座標情報をもとに行うが、文字列がどのフィールドに関連付いているかをプログラムから判断できればよい。このため、必ずしも識別情報を付与するのではなく、出力ページ（ＳＶＧ）１００１内の走査時に座標情報をもとにリアルタイムで判断を行ってもよい。このように、プログラム１２０８は、出力ページ（ＳＶＧ）１００１内を走査し、Ｓ１１０５で特定した関連フィールドのテキストタグ１００３に識別情報を付与する。
【０１０９】
図１２（ｂ）は、本実施形態における識別情報付与処理を行うＪａｖａｓｃｒｉｐｔプログラム（以下、プログラムとも称する）の一例を示す。
【０１１０】
プログラム１２１１は、図１２（ｂ）のプログラムが、図１２（ａ）のプログラム１２０８から呼び出される識別情報付与関数であることを示す。
【０１１１】
プログラム１２１２は、まず、Ｓ１１０６（プログラム１２０６）で特定したグラフ表示に必要な出力ページを含む全ページの出力データ情報ブロック６０６を特定する。各ページに対応する出力データ情報ブロック６０６の特定は、Ｓ１１０１（プログラム１２０１）で取得した出力ページ情報６０１のページブロック６０２のページ番号６０３を参照して行う。
【０１１２】
続いて、プログラム１２１２は、出力データ情報ブロック６０６内の各出力データを走査し、フィールド名情報（ｆｉｅｌｄ＿ｎａｍｅ）が関数に指定されたフィールド名（ｆｉｅｌｄＮａｍｅ）と合致する出力データの情報を特定する。特定した出力データのリストはＲＡＭ２０３上に保持する（変数名：ｏｕｔｐｕｔＤａｔａＩｎＴａｒｇｅｔＰａｇｅＲａｎｇｅ）。
【０１１３】
プログラム１２１３は、プログラム１２１２によってＲＡＭ２０３に保持されたリスト内の各出力データに対して処理を行うことを示す。
【０１１４】
プログラム１２１４は、出力ページ（ＳＶＧ）１００１内のテキストタグ１００３を走査し、各テキストタグ１００３に対して処理を行う。変数ｅｌｅｍが、テキストタグ１００３の要素に対応する。変数ｅｌｅｍのメソッドを呼び出すことで、テキストタグ要素への属性追加等が行える。
【０１１５】
プログラム１２１５は、テキストタグ１００３で表される文字列の開始位置座標を変数ｘ及びｙとしてＲＡＭ２０３に保持する。
【０１１６】
プログラム１２１６は、プログラム１２１５によってＲＡＭ２０３に保持されたテキストタグ１００３で表される文字列の開始位置が、プログラム１２１２によって取得された出力データの外接矩形内に含まれるかどうかを判定する。出力データの外接矩形の大きさは、出力データ情報ブロック６０６内の出力データ情報であるｌｅｆｔ、ｔｏｐ、ｗｉｄｔｈ、及びｈｅｉｇｈｔの値から求めることができる。
【０１１７】
プログラム１２１７は、変数ｅｌｅｍの属性追加メソッド（ａｔｔｒ）を呼び出して、テキストタグ要素へ２つの属性を追加する。１つはｆｉｅｌｄ＿ｎａｍｅ属性で、値としては出力データ情報ブロック６０６内の該当の出力データのフィールド名情報（ｆｉｅｌｄ＿ｎａｍｅ）を設定する。もう１つはｉｄ属性で、値としては出力データ情報ブロック６０６内の該当の出力データのＩＤ情報（ｉｄ）を設定する。
【０１１８】
以上説明したように、図１２（ａ）のプログラム１２０８は、図１２（ｂ）のプログラムを読み出して実行することで、出力ページ（ＳＶＧ）１００１内のテキストタグ１００３に識別情報を付与する。
【０１１９】
図１３は、プログラム１２０８により識別情報が付与された後の出力ページ（ＳＶＧ）１００１の一例を示す。図１３の出力ページ（ＳＶＧ）１００１では、単なる文字列ではなく、フィールドに関連付いた出力データであると判断されたテキストタグ１００３に、識別子１３０１としてフィールド名情報（ｆｉｅｌｄ＿ｎａｍｅ）及びＩＤ情報（ｉｄ）が付与されている。同じフィールドに関連付いた出力データが１ページに複数出力される場合、ＩＤ情報（ｉｄ）の値の末尾に数値を割り当てることで一意のＩＤを付与する。末尾の数値は、オーバレイ処理で流し込まれた順にインクリメントして生成する。
【０１２０】
図１２（ａ）に戻り、Ｓ１１０９において、プログラム１２０９は、Ｓ１１０８で付与された識別情報をもとに、テキストタグ１００３を特定し、出力フィールドデータ（Ｘ軸ラベルのデータ及び系列データ）の値を取得する。プログラム１２０９は、目的のフィールド名（例えば、ｌａｂｅｌＦｉｅｌｄＮａｍｅ変数の値である「年齢区分」等）をｆｉｅｌｄ＿ｎａｍｅ属性に持つテキストタグ１００３を全て検出する。タグの検索は、ウェブブラウザ上にロードされたＨＴＭＬやＳＶＧの各タグ要素を操作するためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）をＪａｖａｓｃｒｉｐｔプログラムから呼び出すことで行う。これらのタグ要素操作ＡＰＩは、国際的な標準化団体等により標準化されており、各ウェブブラウザに標準的に実装されている。
【０１２１】
プログラム１２０９は、特定したテキストタグ１００３の出力フィールドデータの値（例えば「１０代」や「￥１，０２０」）とｉｄの値を取得し、フィールド名と紐付けた形でＲＡＭ２０３に保持する。プログラム１２０９は、以上述べた出力フィールドデータの値の取得処理を、３つのフィールド名に対して行う。すなわち、Ｘ軸ラベルのデータとして、「年齢区分」フィールドに関連づく出力フィールドデータの値を取得する。系列１のデータとして、「商品Ａ＿月額保険料」フィールドに関連づく出力フィールドデータの値を取得する。系列２のデータとして、「商品Ｂ＿月額保険料」フィールドに関連づく出力フィールドデータの値を取得する。
【０１２２】
Ｓ１１１０において、プログラム１２１０は、プログラム１２０９が取得した３つの出力フィールドデータの値を用いてグラフ生成を行う。プログラム１２１０は、実データの他にもグラフのタイプ（棒グラフ、線グラフなど）を決定するために該当のグラフのグラフ属性８０１も利用する。グラフ属性８０１は、ＲＡＭ２０３に読み込まれている。本例では、プログラム１２１０は、グラフについてもＳＶＧ形式で出力する。なお、グラフの形式は別の形式でもよく、ウェブブラウザで表示でき、プログラムからの容易な操作が可能な形式であればよい。また、本例では、出力ページ（ＳＶＧ）１００１とは別にグラフ用のＳＶＧを生成し、ウェブブラウザに重ねて表示を行うよう制御するが、出力ページ（ＳＶＧ）１００１と同一のＳＶＧに要素としてグラフＳＶＧを追加してもよい。プログラム１２１０は、出力フィールドデータの値やグラフ属性８０１に基づいて、グラフの各要素を描画していくが、ＳＶＧの各タグ要素をプログラムから直接出力するのは一般的ではない。グラフ生成用にデータを可視化する専用のＪａｖａｓｃｒｉｐｔライブラリ等を使用するのが一般的である。本例でもライブラリを使用するため、プログラムからはＳＶＧ要素を直接生成しない。
【０１２３】
図１４は、図４のシーケンスで生成されるウェブ帳票閲覧画面１４０１の一例を示す。ウェブ帳票閲覧画面１４０１は、図１２のＪａｖａｓｃｒｉｐｔプログラムによって生成されたＳＶＧ形式のグラフ１４０２を含む。ウェブ帳票閲覧画面１４０１では、表１４０３内の出力フィールドデータ１４０４が、グラフ（ＳＶＧ）１４０２の折れ線グラフにプロットされている。ウェブ帳票閲覧画面１４０１は、図１７を参照して後述する書式エラーが起きた場合は、書式エラーメッセージ１４０５を表示する。
【０１２４】
図１５は、本実施形態におけるグラフ（ＳＶＧ）１４０２の構成例を示す。図示されるように、Ｘ軸ラベルの値１５０１や折れ線要素１５０２が独立したタグ要素として、プログラムから操作可能な状態にある。
【０１２５】
図１６は、Ｓ４２４でクライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムが行うグラフ更新処理のフローチャートを示す。また、図１７は、図１６のフローチャートに対応するグラフ更新処理の各処理を行うＪａｖａｓｃｒｉｐｔプログラムの一例を示す。図示されたＪａｖａｓｃｒｉｐｔプログラム（以下、プログラムとも称する）は、すべてクライアント装置１０２上で動作する。
【０１２６】
Ｓ１６０１において、プログラム１７０１は、ユーザがウェブ帳票閲覧画面１４０１の出力ページ（ＳＶＧ）１００１に対してタッチ操作を行ったかどうかを判定する。プログラム１７０１は、出力ページ（ＳＶＧ）１００１に対してタッチ操作が行われると、ウェブブラウザから呼び出される関数である。変数ｅｖｅｎｔには、ウェブブラウザが設定したタッチ操作に関する情報が格納されている。
【０１２７】
Ｓ１６０２において、プログラム１７０２は、出力ページ（ＳＶＧ）１００１のタッチ箇所の要素情報を変数ｔｏｕｃｈＯｂｊｅｃｔに格納し、位置情報を変数ｘ及びｙに格納する。それぞれの情報は、変数ｅｖｅｎｔに格納されている。
【０１２８】
Ｓ１６０３において、プログラム１７０３は、現在表示している出力ページ（ＳＶＧ）１００１を特定する。出力ページ（ＳＶＧ）１００１は、ＲＡＭ２０３に保持されている。プログラム１７０３は、帳票名と現在のページ番号から出力ページ（ＳＶＧ）１００１を特定する。
【０１２９】
Ｓ１６０４において、プログラム１７０４は、タッチ箇所に出力データが存在するか判定する。判定は、変数ｘ及びｙに格納したタッチ箇所の位置情報を使って行うこともできるが、ここではタッチ操作された要素情報を使って行う。変数ｔｏｕｃｈＯｂｊｅｃｔにはタッチされた座標に存在するＳＶＧ構成要素（例えば、テキストタグ１００３）に関する情報がウェブブラウザにより格納されている。プログラム１７０４は、変数ｔｏｕｃｈＯｂｊｅｃｔにテキストタグ１００３が格納されており、かつ、そのテキストタグ１００３がｆｉｅｌｄ＿ｎａｍｅ属性を持っている場合に、タッチ箇所に出力データが存在すると判定する。出力データが存在しないと判定した場合には、グラフ更新処理を終了する。
【０１３０】
Ｓ１６０４で出力データが存在すると判定された場合は、Ｓ１６０５において、プログラム１７０５は、不図示の出力データ更新ダイアログ（入力フォーム）を表示する。更新ダイアログの表示中は処理が中断され、ユーザからの入力待ち状態となる。プログラム１７０５は、更新ダイアログのテキストエリア（入力可能エリア）に、タッチ箇所の出力データの値をデフォルト値として表示する。ユーザは、テキストエリアに対して任意の値を入力し、ＯＫボタンを押下することで、出力データの値の更新を指示する。プログラムは、ユーザによりテキストエリアに入力された値（入力値）を取得することができる。ユーザによりＯＫボタンが押下されると、Ｓ１６０６に進む。
【０１３１】
Ｓ１６０６において、プログラム１７０６は、帳票名に紐づく出力ページ情報６０１を取得する。すなわち、タッチ箇所の出力データに関連する出力ページ情報６０１を取得する。
【０１３２】
Ｓ１６０７において、プログラム１７０７は、関連する出力データの値を取得する。プログラム１７０７は、出力ページ（ＳＶＧ）１００１から、Ｓ１６０５でユーザにより入力された入力値を、更新後の出力データの値として取得する。
【０１３３】
Ｓ１６０８において、プログラム１７０８は、ユーザによりテキストエリアに入力された入力値を、タッチ箇所の出力データの書式情報（ｆｏｒｍａｔ）を使って検証する。すなわち、ユーザにより入力された入力値が、有効であるかまたは無効であるか判定する。
【０１３４】
Ｓ１６０９において検証結果が無効を示す場合、Ｓ１６１２に進み、プログラム１７０９は、前述した書式エラーメッセージ１４０５を帳票閲覧画面１４０１に表示する。
【０１３５】
一方、Ｓ１６０９で検証結果が有効を示す場合、Ｓ１６１０に進み、プログラム１７１０は、タッチ箇所の出力データに関連するグラフが存在するか判定する。プログラム１７１０は、Ｓ１６０６で取得した出力ページ情報６０１を参照し、現在ページのページブロック６０２に出力グラフ情報６０７があるか判定する。出力グラフ情報６０７があった場合、その出力グラフ情報６０７のグラフ属性識別子６０８と同じ識別子を持つグラフ属性８０１をＲＡＭ２０３から特定する。プログラム１７１０は、出力データのｆｉｅｌｄ＿ｎａｍｅ属性の値が、特定したグラフ属性８０１の系列データとして利用するフィールド名８０５もしくはラベルフィールド名８０７と一致するかどうかを判定する。一致するものがあれば、出力データに関連するグラフが存在すると判定する。関連するグラフが存在しないと判定した場合、グラフ更新処理を終了する。
【０１３６】
Ｓ１６１０で出力データに関連するグラフが存在すると判定した場合、Ｓ１６１１において、プログラム１７１１は、Ｓ１６０７で取得した更新後の出力データの値でグラフ（ＳＶＧ）１４０２を更新する。
【０１３７】
このように、図１６及び図１７を参照して説明したグラフ更新処理によって更新されたグラフを含むウェブ帳票は、表１４０３内の出力データの値がユーザにより変更されたものとなる。また、変更された出力データの値に連動し、グラフ（ＳＶＧ）１４０２の折れ線グラフもインタラクティブに変化する。出力データの値が有効な書式なので、書式エラーメッセージ１４０５も表示されない。
【０１３８】
以上説明したように、本実施形態によると、オーバレイ処理で生成された帳票の出力ページに対する入力値を検証することができ、当該出力ページに含まれるグラフの破綻を回避することができる。
【０１３９】
（第２の実施形態）
第１の実施形態で説明した電子帳票システムでは、ユーザがフォームファイルのフィールドに対して、固定文字と書式記号を組み合わせたユーザ独自の書式を定義することができる。このようなフォームファイルから生成した帳票をユーザが編集する場合、ユーザはフィールドで許可されている書式を推測する必要がある。しかしながら、ユーザ独自の書式は推測が困難であり、帳票編集のユーザビリティが低下してしまう。
【０１４０】
そこで、本実施形態では、第１の実施形態で説明した電子帳票システムにおいて、ユーザビリティを保ったまま帳票の編集を行うことを可能にする構成について説明する。なお、基本的な処理は第１の実施形態と同様であるため、異なる部分のみ説明する。
【０１４１】
図１８は、本実施形態におけるウェブ帳票閲覧画面の一例を示す。ウェブ帳票閲覧画面１８０１は、ユーザ独自の書式が定義されたフォームファイルを使って生成された画面である。ユーザが表１８０３の出力データ１８０４を画面上でタップすると、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラム（以下、プログラムとも称する）は、出力データと紐付いた書式情報を出力データ情報から取得する。クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムは、書式情報中の固定文字部分と書式記号部分とを切り分け、入力可能なテキストエリア１８０６と編集不可能な文字列１８０７とをもつ出力データ更新ダイアログ１８０５を表示する。なお、出力データの変更を受けて関連するグラフの表示を変更する処理は、第１の実施形態のＳ１６０９以降の処理と同じである。
【０１４２】
図１９は、本実施形態における出力データ更新ダイアログの構成例を示す。図１８の出力データ１８０４が画面上でタップされると、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムはウェブ帳票閲覧画面を書き換え、出力データ更新ダイアログ１９０１を表示する。出力データ更新ダイアログ１９０１は、出力ページ情報から取得した書式１９０２、ユーザからの入力を受け付ける入力可能エリアであるテキストエリア１９０３、及びユーザによる更新実行を受け付けるＯＫボタン１９０４を含む。
【０１４３】
図２０は、本実施形態におけるグラフ更新処理のフローチャートを示す。Ｓ２００１からＳ２００４までの処理は、第１の実施形態で説明した図１６のグラフ更新処理と同じであるため、説明は省略する。
【０１４４】
本実施形態では、タッチ箇所に出力データが存在すると判定された場合、Ｓ２００５において、クライアント装置１０２のプログラムは、出力ページ情報６０１を取得する。
【０１４５】
Ｓ２００６において、クライアント装置１０２のプログラムは、出力ページ情報６０１から、タップされた出力データの書式情報を取得する。
【０１４６】
Ｓ２００７において、クライアント装置１０２のプログラムは、書式情報を固定文字が定義されたブロックと、書式記号が定義されたブロックとに分ける。例えば、「税込み★ＸＸＸＸ円」という書式が定義されていた場合、まず、各文字が書式記号か判定する。その後、書式全体を書式記号のブロックとそれ以外とに分ける。本例では、書式情報は、固定文字のブロック「税込み★」と、書式記号のブロック「ＸＸＸＸ」と、固定文字のブロック「円」との３つのブロックに分けられる。
【０１４７】
Ｓ２００８において、クライアント装置１０２のプログラムは、固定文字のブロックには入力できない文字列を有し、書式記号のブロックには入力可能なテキストエリアを有する出力データ更新ダイアログを表示する。
【０１４８】
Ｓ２００９において、クライアント装置１０２のプログラムは、ユーザによりテキストエリア１８０６に入力された値と固定文字１８０７を結合し、出力データの書式情報に対して有効であるかまたは無効であるかを検証する。
【０１４９】
Ｓ２０１０〜Ｓ２０１３の処理はそれぞれ、図１６のＳ１６０９〜Ｓ１６１２の処理と同じであるため、説明は省略する。
【０１５０】
以上説明したように、本実施形態によると、ユーザ独自の書式が定義されていた場合でも、ユーザビリティを保ったまま、ユーザに入力可能な書式を提示することができる。そして、オーバレイ処理で生成された帳票の出力ページに対する入力値をユーザ独自の書式にしたがって検証し、当該出力ページに含まれるグラフの破綻を回避することができる。
【０１５１】
（第３の実施形態）
第１の実施形態で説明した電子帳票システムでは、ユーザがフォームファイルのフィールドに対して、候補からの選択、日時型、比率、範囲などの書式を定義することができる。このようなフォームファイルから生成した帳票をユーザが編集する場合、入力フォームがテキストエリアに対するものだけでは帳票編集のユーザビリティが低下してしまう。
【０１５２】
そこで、本実施形態では、第１の実施形態で説明した電子帳票システムにおいて、ユーザビリティを保ったまま帳票の編集を行うことを可能にする構成について説明する。なお、基本的な処理は第１の実施形態と同様であるため、異なる部分のみ説明する。
【０１５３】
図２１は、本実施形態においてフィールドに定義された書式と入力フォームの組み合わせ（入力フォームマップ）の一例を示す。本実施形態におけるクライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラム（以下、プログラムとも称する）は、画面上でタップされた出力データと紐付いた出力ページ情報から、書式を取得し、その種類を判定する。また、本実施形態におけるクライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムは、入力フォームマップ２１０１を使用して入力フォーム２１０２を決定する。
【０１５４】
図２２は、本実施形態におけるウェブ帳票閲覧画面入力フォーム表示の一例を示す。ユーザが表２２０３の出力データ２２０４をタップすると、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラムは、入力フォーム２１０２を決定し、ウェブ帳票閲覧画面を書き換え、出力データ更新ダイアログ２２０２を表示する。本例では、ユーザは、カレンダー上で日付を選択して、出力データを更新することができる。なお、入力フォームはカレンダーに限らず、プルダウン、チェックボタン、スライダー、カラーピッカー、テキストエリアなどであってもよい。
【０１５５】
図２３は、本実施形態におけるグラフ更新処理のフローチャートを示す。Ｓ２３０１からＳ２３０４までの処理は、第１の実施形態で説明した図１６のグラフ更新処理と同じであるため、説明は省略する。
【０１５６】
本実施形態では、タッチ箇所に出力データが存在すると判定された場合、Ｓ２３０５において、クライアント装置１０２のプログラムは、出力ページ情報６０１を取得する。
【０１５７】
Ｓ２３０６において、クライアント装置１０２のプログラムは、関連する出力データを取得し、出力ページ情報６０１から出力データの書式情報を取得する。
【０１５８】
Ｓ２３０７において、クライアント装置１０２のプログラムは、取得した書式情報を用いて、入力フォームマップ２１０１から入力フォーム２１０２を決定する。
【０１５９】
Ｓ２３０８において、クライアント装置１０２のプログラムは、Ｓ２３０７で決定した入力フォーム２１０２に従って、出力データ更新ダイアログ２２０２を表示する。
【０１６０】
Ｓ２３０９〜Ｓ２３１３の処理はそれぞれ、図１６のＳ１６０８〜Ｓ１６１２の処理と同じであるため、説明は省略する。
【０１６１】
以上説明したように、本実施形態によると、書式に応じた入力方法をユーザに提示することができる。そして、オーバレイ処理で生成された帳票の出力ページに対する入力値を検証し、当該出力ページに含まれるグラフの破綻を回避することができる。
【０１６２】
（第４の実施形態）
第１の実施形態で説明した電子帳票システムでは、ユーザは、グラフと紐付いた表の出力データであれば、タッチ操作で選択して値を編集することができる。一方、例えば契約内容についての値など、編集を許可すべきでない表が存在する。このような表の編集を禁止するためには、特定の表に対してタッチ操作を禁止する等の制限を設けることが考えられるが、タッチ操作を禁止したとしても、ブラウザの開発者コンソール等により編集は可能である。
【０１６３】
そこで、本実施形態では、第１の実施形態で説明した電子帳票システムにおいて、特定の表に対する編集を不可とする構成について説明する。なお、基本的な処理は第１の実施形態と同様であるため、異なる部分のみ説明する。
【０１６４】
まず、本実施形態における出力ページ情報の構成について説明する。本実施形態における出力ページ情報は、「編集可否」の設定を示す項目「ｅｄｉｔａｂｌｅ」（すなわち、編集可否情報）を含む。ユーザは、フォームエディタを用いてフィールドを作成する場合に、フィールドに対して「編集可否」を設定する。帳票生成サーバ１０１は、フィールドに対して「編集可否」が設定されたフォームファイルを使ってオーバレイする際に、出力ページ情報の項目「ｅｄｉｔａｂｌｅ」に編集可否の設定を含める。出力ページ情報における、その他の要素については第１の実施形態と同様であるため、説明は省略する。
【０１６５】
図２４は、本実施形態における、クライアント装置１０２のＪａｖａｓｃｒｉｐｔプログラム（以下、プログラムとも称する）が行うグラフ生成処理のフローチャートを示す。このグラフ生成処理は、図４のＳ４２３での処理に対応する。
【０１６６】
Ｓ２４０１〜Ｓ２４１０の処理は、第１の実施形態で説明した図１１のＳ１１０１〜Ｓ１１１０の処理と同様であるため、説明は省略する。
【０１６７】
本実施形態ではグラフを生成した後、Ｓ２４１１において、クライアント装置１０２のプログラムは、Ｓ２４０５で特定した、グラフと関連するフィールドの、項目「ｅｄｉｔａｂｌｅ」の値を参照し、当該関連フィールドの編集を禁止するかどうか判定する。項目「ｅｄｉｔａｂｌｅ」の値が「ｆａｌｓｅ」である場合、編集は禁止されているため、Ｓ２４１２に進む。
【０１６８】
Ｓ２４１２において、クライアント装置１０２のプログラムは、ＳＶＧ形式のグラフを１つの画像ファイルに変換し、ＳＶＧタグ１００２内のグラフを定義した要素を、変換した画像ファイルを参照する要素に書き換える。すなわち、グラフを画像化して差し替える。ＳＶＧ形式から画像ファイルへの変換は一般的な技術であるため、説明は省略する。
【０１６９】
Ｓ２４１３において、クライアント装置１０２のプログラムは、ＳＶＧ形式の表を１つの画像ファイルに変換し、ＳＶＧタグ１００２内の表を定義した要素を、変換した画像ファイルを参照する要素に書き換える。すなわち、表を画像化して差し替える。ＳＶＧ形式から画像ファイルへの変換は一般的な技術であるため、説明は省略する。
【０１７０】
Ｓ２４１４において、クライアント装置１０２のプログラムは、出力ページ情報内のグラフと関連するフィールドの値を破棄する。
【０１７１】
一方、Ｓ２４１１で項目「ｅｄｉｔａｂｌｅ」の値が「ｔｒｕｅ」であり、当該関連フィールドの編集が禁止されていないと判定された場合、クライアント装置１０２のプログラムは、グラフ生成処理を終了する。
【０１７２】
以上説明したように、本実施形態によると、フィールドデータに連動した表とグラフを含む帳票の出力ページにおいて、フォームファイル作成者が指定した表の編集を不可とする構成が実現できる。したがって、出力ページに含まれるグラフの破綻を回避することができる。
【０１７３】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2020113120.tif 000003
【図２】
2020113120.tif 000004
【図３】
2020113120.tif 000005
【図４】
2020113120.tif 000006
【図５】
2020113120.tif 000007
【図６】
2020113120.tif 000008
【図７】
2020113120.tif 000009
【図８】
2020113120.tif 000010
【図９】
2020113120.tif 000011
【図１０】
2020113120.tif 000012
【図１１】
2020113120.tif 000013
【図１２】
2020113120.tif 000014
【図１３】
2020113120.tif 000015
【図１４】
2020113120.tif 000016
【図１５】
2020113120.tif 000017
【図１６】
2020113120.tif 000018
【図１７】
2020113120.tif 000019
【図１８】
2020113120.tif 000020
【図１９】
2020113120.tif 000021
【図２０】
2020113120.tif 000022
【図２１】
2020113120.tif 000023
【図２２】
2020113120.tif 000024
【図２３】
2020113120.tif 000025
【図２４】
2020113120.tif 000026