以下、本発明に係るサーバ装置、リクエスト検証方法及びリクエスト検証プログラムを適用した実施の形態となるWebアプリケーションシステムを、図面に基づいて詳細に説明する。なお、本実施形態により本発明が限定されるものではない。
[システム構成]
まず、図1は、実施の形態となるWebアプリケーションシステムのシステム構成を示す図である。この図1に示すように、実施の形態のWebアプリケーションシステムは、開発者用コンピュータ装置1、ローコード開発Webサーバ装置2、開発データベース3、Webサーバ装置4(サーバ装置の一例)、クライアント端末装置5、業務API(Application Programming Interface)6及び業務データベース7を有している。
開発者用コンピュータ装置1は、Webブラウザ8により、例えばインターネット等の所定のネットワークを介してローコード開発Webサーバ装置2と通信を行う。ローコード開発Webサーバ装置2は、開発者用コンピュータ装置1に対してローコード開発ツールを提供している。開発者は、ローコード開発Webサーバ装置2で提供されるローコード開発ツールを用いて、開発者用コンピュータ装置1を操作して「Webサーバ装置4用のリクエスト検証プログラム(サーバ用リクエスト検証プログラム)」を作成する。これにより、開発者用コンピュータ装置1で作成されたサーバ用リクエスト検証プログラムの定義データが、ローコード開発Webサーバ装置2を介して開発データベース3に保存される。
Webサーバ装置4は、開発者用コンピュータ装置1で作成されたサーバ用リクエスト検証プログラムの定義データを、開発データベース3から取得する。また、Webサーバ装置4は、取得した定義データに基づいて、リクエスト検証プログラムを生成する。そして、Webサーバ装置4は、生成したリクエスト検証プログラムに基づいて、Webクライアント端末装置5から所望のWebアプリケーションに対するリクエスト(入力値)を検証する(サーバチェック)。Webサーバ装置4は、正当な検証結果が得られた場合に、業務API(WebAPI)6を介して業務データベース7からリクエストに対応するデータを取得して、所望のアプリケーションに対応する実行画面を生成し、Webクライアント端末装置5に提供する。
Webクライアント端末装置5は、インターネット等のネットワークを介してWebサーバ装置4から送信される所望のWebアプリケーションの実行画面を、Webブラウザ9を介して取得して表示部に表示する。また、Webクライアント端末装置5は、実行画面を介してユーザにより入力されたリクエストを、クライアント用のリクエスト検証プログラムに基づいて検証する(クライアントチェック)。Webクライアント端末装置5は、正当な検証結果が得られた場合に、Webブラウザ9を介してWebサーバ装置4にリクエストを送信する。このリクエストに対しては、上述のようにWebサーバ装置4でサーバチェックが施され、正当な検証結果が得られた場合に、業務データベース7から取得されたリクエストに対応するデータを含む実行画面が形成され、Webクライアント端末装置5に提供される。
(ローコード開発基盤)
次に、このようなWebアプリケーションシステムにおけるローコード開発基盤の具体例を説明する。ローコード開発基盤は、図2に例示する、開発者が操作する開発用コンピュータ1に表示される設定画面51と、図3に例示する、業務オペレータが操作するWebクライアント端末装置5に表示される実行画面52とを有する。
開発者は、GUI(Graphical User Interface)操作により、図2に示す設定画面51のレイアウト及びイベント処理の設定等を行う。このような設定画面51の設定情報は、ローコード開発Webサーバ装置2を介して開発データベース3に保存される。設定画面51で設定された設定情報は、開発データベース3から読み出され、Webサーバ装置4上のメモリに展開される。これにより、Webサーバ装置4から図3に示す実行画面52がWebクライアント端末装置5に提供される。業務オペレータは、Webサーバ装置4から提供される、図3に示す実行画面52を介して、所望のアプリケーションを実行する。
(Webサーバ装置の動作概要)
次に、実施の形態のWebアプリケーションシステムは、図4に示すように、Webクライアント端末装置5側でユーザのリクエスト(入力値)を検証すると共に(クライアントチェック)、Webサーバ装置4側でもユーザのリクエストを検証するようになっている(サーバチェック)。
クライアントチェックは、ネットワーク15を介して通信を行う必要がないため、ユーザへのレスポンスが早く、また、Webサーバ装置4に検証の負荷を掛けずに実行できる。しかし、クライアントチェックを正当に通過した場合でも、リクエストを改ざんすることで不正なリクエストがWebサーバ装置4に送信されるおそれがある。
このため、Webアプリケーションシステムおけるサーバチェックは、必須の処理となっており、Webサーバ装置4に対するサーバチェック機能の実装漏れが生ずると、システムセキュリティ上、問題となる。
このようなことから、実施の形態のWebアプリケーションシステムでは、上述のローコード開発基盤上で開発者が設定した設定画面51のレイアウト構造の設定情報を用いることで、
1.一定ルールに基づくサーバチェックの自動実行(サーバチェックの自動化)、
2.サーバチェックのチェック範囲の自動判定(チェック範囲の自動判定)、及び、
3.サーバチェックのエラー通知動作の自動化(エラー通知の自動化)、
等を可能としている。
(サーバチェックの自動化)
具体的に説明すると、図5は、リクエストに応じたデータが反映された実行画面がWebクライアント端末装置5に表示される流れを示す模式図である。業務オペレータは、図5(a)に示すように実行画面に対して基準日及び事業所コード(事業所CD)を入力し(リクエストの入力)、表示ボタンをクリックしたとする。これにより、Webクライアント端末装置5側でクライアントチェックが行われ、正当な検証結果が得られた場合に(OK)、図5(b)に示すように、ネットワーク15を介してWebサーバ装置4にリクエストが送信される。
Webサーバ装置4は、受信したリクエストに対してサーバチェックを実施し、正当な検証結果が得られた場合に(OK)、リクエストに対応するデータを業務データベース7から取得する。そして、Webサーバ装置4は、業務データベース7から取得したデータを反映させた実行画面を形成してWebクライアント端末装置5に送信する。これにより、図5(c)に示すように、リクエストしたデータを含む実行画面が、Webクライアント端末装置5の表示部に表示される。
図6は、実施の形態のWebアプリケーションシステムにおいて、クライアントチェックで不正なリクエストを検出した場合のWebクライアント端末装置の動作を示す図である。例えば、図6(a)に示すように、業務オペレータにより、誤って入力された事業所コード(事業所CD)を、Webクライアント端末装置5側でのクライアントチェックで検出したとする(NG)。この場合、Webクライアント端末装置5は、図6(b)に示すようにWebサーバ装置4に対してリクエストの送信は行わず、図6(c)に示すように、エラー表示を行う。
この図6(c)に示すエラー表示の例は、誤って入力された事業所コード(事業所CD)の入力欄を例えば赤色で高輝度表示し、「範囲指定の開始終了が不正です」等のエラーメッセージを表示した例である。このエラーメッセージにより、業務オペレータは、事業所コード(事業所CD)の入力ミスを認識できる。
図7は、実施の形態のWebアプリケーションシステムにおいて、Webクライアント端末装置5側で不正に改ざんされてクライアントチェックを通過したリクエストを、サーバチェックで検出し、Webクライアント端末装置5に対してエラー表示を行う動作を示す図である。図7(a)の例は、事業所コードを改ざんすることで、Webクライアント端末装置5側のクライアントチェックで検証結果が正当となり(OK)、図7(b)に示すようにネットワーク15を介してWebサーバ装置4に送信された例である。
Webサーバ装置4は、リクエストの指定された範囲の大小比較を行うことで、不当なリクエストであることを示す検証結果を得た場合(NG)、業務データベース7からデータを取得することなく、図7(c)に示すようなエラー表示を含む実行画面を形成し、これをWebクライアント端末装置5に送信する。これにより、図7(c)に示すように、誤って入力された事業所コード(事業所CD)の入力欄が例えば赤色で高輝度表示され、「範囲指定の開始終了が不正です」等のエラーメッセージが表示された実行画面を、Webクライアント端末装置5の表示部に表示できる。業務オペレータは、このエラーメッセージにより、事業所コード(事業所CD)の入力ミスを認識できる。
なお、この図7の例は、Webサーバ装置4側でエラー表示を含む実行画面を形成して、Webクライアント端末装置5に送信して表示する例であった。しかし、Webサーバ装置4は、Webクライアント端末装置5に対してエラー内容を含むエラー通知を行い、Webクライアント端末装置5側で、エラー表示を含む実行画面を形成して表示してもよい。
(チェック範囲の自動判定)
次に、実施の形態のWebアプリケーションシステムのWebサーバ装置4は、業務オペレータにより操作されたボタンの位置に応じたチェック範囲を、実行画面のレイアウト情報に基づいて自動的に判定してサーバチェックを行う。一例として、Webサーバ装置4は、図8(a)に示すパネル上の表示ボタンがクリック操作された場合は、図8(b)に示すように同一パネル内をチェック範囲としてリクエストの検証を行う。また、Webサーバ装置4は、図9(a)に示すコマンドバー上のボタンがクリック操作された場合は、図9(b)に示すように画面全体をチェック範囲としてリクエストの検証を行う。
(エラー通知の自動化)
次に、実施の形態のWebアプリケーションシステムのWebサーバ装置4は、サーバチェックで不当な検証結果を得た場合、下記に例示するエラー通知を自動的に行う。図10は、表示ボタンがクリック操作された場合におけるエラー通知の例を示す図である。すなわち、図10(a)に示す表示ボタンがクリック操作されると、図8(a)及び図8(b)を用いて説明したように、Webサーバ装置4は、表示ボタンが表示されているパネル内の入力項目の検証を行う。そして、例えば事業者コードの入力ミスを検出した場合、Webサーバ装置4は、図10(b)に示すように、入力ミスのある事業者コードの入力項目を例えば赤色で高輝度表示(フォーカス)すると共に、「範囲指定の開始終了が不正です」等のエラーメッセージを表示した実行画面を形成して、Webクライアント端末装置5に送信する。
また、図11は、コマンドバー上のボタンがクリック操作場合のエラー通知の例を示す図である。この場合、図9(a)及び図9(b)を用いて説明したように、Webサーバ装置4は、画面全体の入力項目に対する入力検証を行う。すなわち、図11(a)に示すようにコマンドバー上のボタンがクリック操作されると、Webサーバ装置4は、図11(b)に示すように、各タブアイテムの入力項目を検証する。そして、Webサーバ装置4は、各タブアイテムのうち、入力項目に対する入力ミスが検出された最初の(先頭の)タブアイテムをアクティブ化し、入力ミスを検出した入力項目を高輝度表示(フォーカス)すると共に、所定のエラーメッセージを表示した実行画面を形成する。
すなわち、図11(b)の例は、第1のタブアイテムには、入力ミスは検出されず、次の第2のタブアイテムの入力項目に入力ミスが検出された例である。この場合、Webサーバ装置4は、最初に入力ミスが検出されたタブアイテムである、第2のタブアイテムの文字の前に「感嘆符「!」」を表示したうえで、赤枠で囲み、また、感嘆符を付加した第2のタブアイテムの文字を赤文字で強調表示することでアクティブ化した実行画面を形成する。また、Webサーバ装置4は、入力ミスのある項目を赤色で高輝度表示(フォーカス)し、例えば「入力値が不正です」等のエラーメッセージを表示した実行画面を形成して、Webクライアント端末装置5に送信する。これにより、画面表面に見えていない項目に対する入力ミスを発見し易くできる。
また、図12の例は、タブアイテムが階層化されている場合のエラー表示の一例を示している。図12(a)の例は、第1~第4のタブアイテムが階層化されている例である。この場合において、コマンドバー上のボタンがクリック操作されると、Webサーバ装置4は、図12(b)に示すように、入力項目に入力ミスが検出された例えば第2のタブアイテム及び第3のタブアイテムの文字の前に感嘆符を付したうえで上述と同様にフォーカスした実行画面を形成する。また、アクティブとされたタブアイテムの項目に入力ミスが存在する場合、その入力ミスのある項目を赤色で高輝度表示(フォーカス)し、例えば「入力値が不正です」等のエラーメッセージを表示した実行画面を形成して、Webクライアント端末装置5に送信する。これにより、画面表面に見えていない項目に対する入力ミスを発見し易くできる。
(開発時の設定及び保存データ)
次に、このようなWebサーバ装置4におけるリクエスト検証機能及びエラー表示機能を実現するために開発者が行う各種設定及び開発データベース3に格納する各種情報を説明する。まず、開発者は、図13に示すように、開発用コンピュータ装置1の設定画面のボタンに対するプロパティ(属性)を設定する。プロパティとしては、識別名、テキスト及び検証を行うか否かを設定するようになっている。この図13の例は、表示ボタン50に対して「第1のボタン」との識別名を設定した例である。また、図13の例は、表示ボタン50に対して「表示」とのテキスト表示を行うように設定した例である。
また、図13に示す「検証を行う」のチェックボックスにチェックを入れることで、表示ボタン50が操作された際に、表示ボタン50が表示されているパネル内の入力項目に対してサーバチェックの実行を指定可能となっている。この図13の例は、「検証を行う」のチェックボックスにチェックが入れられた状態を示している。このような各種情報は、設定情報としてローコード開発Webサーバ装置2を介して開発データベース3に記憶される。「検証を行う」の情報は、実行指示情報の一例である。
図14は、各種設定情報の定義の一覧を示している。一例ではあるが、開発データベース3に記憶される設定情報としては、この図14に示すように、ベースパネル、コマンドバーパネル、ベースコンテンツパネル等の名称情報に、プロパティ情報(属性情報)が付加されて記憶される。属性としては、子要素の識別子等が付加される。
また、設定情報としては、タブ及びタブアイテム等の名称情報に、識別子及び子要素の識別子が付加されて、開発データベース3に記憶される。タブは、一般的なタブと同義であり、子要素に複数のタブアイテムを有する。タブアイテムも、一般的なタブアイテムと同義である。
また、設定情報としては、範囲パネル、範囲スタックパネル、チェックボックスグループ、及び、チェックボックス等の名称情報に、識別子及び子要素の識別子等の属性情報が付加されて開発データベース3に記憶される。範囲パネル及び範囲スタックパネルは、図19を用いて後述する。また、チェックボックスグループは、図21を用いて後述する。
また、設定情報としては、文字列テキストボックス、数値テキストボックス及びボタン等の名称情報に、各種属性情報が付加されて開発データベース3に記憶される。文字列テキストボックスは、文字列を入力可能なテキストボックスであり、識別子、入力可能な文字数、半角可否、全角可否、大文字可否及び記号可否等の属性情報が付加されて開発データベース3に記憶される。
数値テキストボックスは、数値を入力可能なテキストボックスであり、識別子、最小値、最大値、整数桁数及び小数桁数等の属性情報が付加されて開発データベース3に記憶される。ボタンは、一般的なボタンと同義であり、識別子、テキスト及び「検証を行うか否かを示す情報」等の属性情報が付加されて開発データベース3に記憶される。
(パネル類の説明)
図15及び図16は、ベースパネル、コマンドバーパネル、ベースコンテンツパネル及びパネルを説明するための図である。図15及び図16に示すように、ベースパネルは、画面構成のルートとなるパネルであり、子要素にコマンドバーパネル及びベースコンテンツパネルを有する。コマンドバーパネルは、図15及び図16に示すように、画面全体に対する操作(登録及び削除等)を行うためのボタンを配置するパネルである。ベースコンテンツパネルは、図15及び図16に示すように、複数のパネルを配置することが可能な画面要素を構成するパネルである。パネルは、図15及び図16に示すように、子要素に複数のテキストボックス又はボタン等のコントロールを配置可能なパネルである。
(タブ及びタブアイテム)
タブ及びタブアイテムは、一般的なタブ及びタブアイテムと同義である。タブは、図17に示すように複数のタブアイテムを設定可能となっている。この図17の例は、タブに対して第1のタブアイテム及び第2のタブアイテムが設定されている例である。また、図17の例は、アクティブ状態とされた第1のタブアイテムの入力項目がタブ上に表示された例を示している。
また、タブは、所望のタブアイテムの下層に、さらにタブアイテムを配置する、いわば入れ子の配置も可能となっている。図18は、タブに対して、第1のタブアイテム及び第2のタブアイテムを配置し、さらに、第1のタブアイテムの下層にタブアイテム1-1及びタブアイテム1-2を配置した例である。そして、この図18は、第1のタブアイテムがアクティブとされ、かつ、タブアイテム1-2がアクティブとされた状態を示している。
このような配置とする場合、図18に示すように、識別子が第1のキーのタブに対して、第2のキー及び第3のキーを子要素として配置する。また、識別子が第2のキーの第1のタブアイテム及び識別子が第3のキーの第2のタブアイテムのうち、第1のタブアイテムに対し、第4のキーを子要素として配置する。そして、この第4のキーに対して、第5のキーのタブアイテム1-1及び第6のキーのタブアイテム1-2を子要素として配置する。このようなデータ構造とすることで、タブを入れ子の配置とすることができる。
(範囲パネル及び範囲スタックパネル)
次に、図19は、範囲パネル及び範囲スタックパネルを説明するための図である。範囲パネルは、図19(a)に示すように、子要素に範囲スタックパネルを2つ持ち、各範囲スタックパネルに入力された値の大小を比較するためのパネルである。範囲スタックパネルは、子要素にテキストボックスを複数配置可能なパネルである。図19(b)に示すように、範囲パネルのうち、左側の範囲スタックパネルが開始スタックパネルとして定義され、右側の範囲スタックパネルが終了スタックパネルと定義されている。なお、範囲パネル内の2つの範囲スタックパネルの構造は、図19(c)に示すように同一の構造とする制限がある。図19(d)に示すように、範囲パネル内の2つの範囲スタックパネルの構造が同一の構造ではない場合、範囲スタックパネルの設定は不可とされる。
図20は、範囲スタックパネルのデータ構造を示す図である。この図20は、第1のキーの範囲パネル内に、第2のキー及び第3のキーの範囲スタックパネルが設定されている例を示している。また、この図20は、第2のキーの範囲スタックパネルには、第4のキーの日付テキストボックスが含まれ、第3のキーの範囲スタックパネルにも第5のキーの日付テキストボックスが設定されている例を示している。
(チェックボックスグループ)
チェックボックスグループは、図21(a)に示すように子要素として複数のチェックボックスを含むパネルである。チェックボックスグループには、必須か否かの属性情報が付加されている。必須の属性情報が付加されている場合、チェックボックスグループ内のチェックボックスが一つもオンになっていない場合は、エラーとなる。
(開発データベースに格納される情報)
図22は、開発データベース3に記憶される設定情報の一例を示す図である。この図22に示すように、第4のキー~第6のキーとなる新規、修正及び削除のボタンのクリック操作に対しては、「検証を行う」の設定が「オフ」に設定されている。この場合、新規、修正及び削除のボタンがクリック操作されても、リクエストに対する検証は行われない。これに対して、第17のキーとなる表示ボタンに対しては、「検証を行う」の設定が「オン」に設定されている。この場合、表示ボタンがクリック操作されると、リクエストに対する検証が実行される。詳しくは、後述する。
(実行画面の動作概要)
次に、業務オペレータが操作する業務画面である実行画面は、図3に示したようにWebサーバ装置4により開発データベース3から読み込まれた設定情報に基づいて動作する。この際、Webサーバ装置4は、実行画面が起動されたタイミングで、実行時のみ必要な情報(追加情報)を、設定情報と共に記憶部12(図32参照)に記憶して保持する。
図23は、実行画面の定義構造を示す図である。この図23に示すように、Webサーバ装置4は、実行画面を構成するコントロールの配列情報であるコントロール情報、及び、特定のイベント実行後における、実行画面上のフォーカス先のコントロールの識別子を、設定情報として記憶部12に記憶する。また、Webサーバ装置4は、設定情報には含まれていないが、実行時に追加で記憶する追加情報を記憶部12に記憶する。
図24は、コントロール情報の一覧を示す図である。この図24に示すように、Webサーバ装置4は、ベースパネル、コマンドバーパネル、ベースコンテンツパネル、パネル、タブ、タブアイテム、範囲パネル、範囲スタックパネル、チェックボックスグループ、チェックボックス、文字列テキストボックス、数値テキストボックス、ボタンの各コントロール情報を記憶部12に記憶する。各コントロール情報の詳細は、図14、図15、図19及び図21の説明を参照されたい。
また、以下、範囲パネル、チェックボックスグループ、文字列テキストボックス及び数値テキストボックスを、総称として「チェック対象コントロール」ということもある。
ここで、図24に示すタブの「アクティブタブインデックス」、タブアイテムの「ステータス」、範囲パネルの「開始終了関連情報」及び「所属タブ」、チェックボックスグループの「所属タブ」、文字列テキストボックスの「所属タブ」、数値テキストボックスの「所属タブ」、ボタンの「検証範囲区分」及び「検証対象識別子」は、設定情報には含まれていないが、実行画面の実行時にWebサーバ装置4が記憶部12上に保持する追加情報となっている。
図25は、アクティブタブインデックスに基づくタブアイテムの表示例及びステータスに基づくエラー表示例を示す図である。図17及び図25(a)に示すように、Webサーバ装置4は、タブに対して、アクティブにするタブアイテムのインデックス情報を設定できる。図25(a)に示す例は、第1のタブアイテムがアクティブに設定された例であり、この場合、タブのアクティブタブインデックスは「0」となる。
ステータスは、タブアイテムに設定される、タブ内の状態(デフォルト又はエラー)を表現するための属性情報である。図25(b)の例は、第2のタブアイテムに対して、「エラーステータス」が設定された場合のエラー表示の一例である。「エラーステータス」が設定された場合、図11(b)を用いて説明したように、第2のタブアイテムの文字の前に「感嘆符「!」」が表示され、赤枠で囲まれると共に、感嘆符を付加した第2のタブアイテムの文字を赤文字で強調表示される。
範囲パネルは、図19(a)を用いて説明したように、開始スタックパネルと終了スタックパネル内のコントロールにおける比較対象の大小比較を行うコントロール情報である。この範囲パネルの「開始終了関連情報」としては、図26(a)及び図26(b)に示すように、テキストボックスAの識別子及びテキストボックスBの識別子が記憶される。
また、図27(a)は、開始スタックパネルがテキストボックスA1及びテキストボックスA2で、終了スタックパネルがテキストボックスB1及びテキストボックスB2の例である。この場合、図27(b)に示すように、テキストボックスA1の識別子、テキストボックスA2の識別子、テキストボックスB1の識別子及びテキストボックスB2の識別子が「開始終了関連情報」として記憶される。
次に、図24に示したボタンのコントロールにおける検証範囲区分及び検証対象識別子は、ボタンの操作時に検証対象となるコントロールを判断するための属性情報である。検証範囲区分としては、「すべて」又は「特定の要素」を設定できる。「すべて」が設定された場合、すべてのコントロールが検証範囲区分に指定される。また、「特定の要素」が設定された場合、検証範囲区分は検証対象となり、この検証対象のコントロール(チェック対象コントロール)の検証対象識別子が配列で記憶される。
次に、図24に示した範囲パネル、チェックボックスグループ、文字列テキストボックス及び数値テキストボックスの「所属タブ」は、チェック対象コントロールが持つタブの所属情報である。図28に示す実行画面の例の場合、図29に示すように、第1のテキストボックスに対する所属タブは存在しない。これに対して、第2のテキストボックスは、第1のタブアイテムがアクティブとされた際に表示されるテキストボックスであり、所属タブは、第1のタブアイテムとなる。このため、第2のテキストボックスの所属タブを示す情報としては、第1のタブアイテムの識別子が登録される。同様に、第3のテキストボックスは、第1のタブアイテムがアクティブとされた際に表示されるテキストボックスである。このため、第3のテキストボックスの所属タブを示す情報としては、第1のタブアイテムの識別子が登録される。
また、第4のテキストボックスは、第1のタブアイテム及び第3のタブアイテムがアクティブとされた際に表示されるテキストボックスであり、所属タブを示す情報として、第1のタブアイテムの識別子及び第3のタブアイテムの識別子が登録される。また、第5のテキストボックスは、第1のタブアイテム及び第3のタブアイテムがアクティブとされた際に表示されるテキストボックスであり、所属タブを示す情報として、第1のタブアイテムの識別子及び第3のタブアイテムの識別子が登録される。
次に、図30は、実行画面形成時におけるWebサーバ装置4の記憶部12に記憶される各種情報の一例を示す図である。この図30に示す例は、コマンドバー上の「新規」のボタンに対して、「検証を行う」の設定を「オン」とした例である。この場合、「新規」のボタンは、コマンドバー上のボタンであるため、図9を用い説明したように、検証範囲区分が「すべて(ベースパネル上のすべてのコントロールが検証対象)」となる。なお、この図30の例の場合、「新規」のボタンの検証対象識別子は、「空」となっている例である。
また、図30に示す例は、コマンドバー上の「修正」のボタンに対して、「検証を行う」の設定を「オン」とした例である。「修正」のボタンは、コマンドバー上のボタンであるため、検証範囲区分が「すべて(ベースパネル上のすべてのコントロールが検証対象)」となる。なお、この図30の例の場合、「修正」のボタンの検証対象識別子は、「空」となっている例である。
また、図30に示す例は、コマンドバー上の「削除」のボタンに対しては、「検証を行う」の設定が「オフ」とされた例である。この場合、検証は行わないことが指定されているため、検証範囲区分は「なし」となり、また、検証対象識別子も「空」となる。
また、図31は、実行画面形成時におけるWebサーバ装置4の記憶部12に記憶される各種情報の一例を示す他の図である。この図31は、タブのアクティブタブインデックスが「0」に設定されている例を示している。この場合、タブ上の第1のタブアイテムがアクティブ状態となる。
また、図31は、タブの文字列テキストボックスが、第1のタブアイテムがアクティブとなった際に表示されるように、所属タブが第1のタブアイテムを示す「キー9」に設定されている例を示している。
(Webサーバ装置のハードウェア構成)
次に、図32は、Webサーバ装置4のハードウェア構成を示すブロック図である。この図32に示すようにWebサーバ装置4は、記憶部12、制御部13及び通信インターフェース部14を備えている。記憶部12には、Webクライアント端末装置5から送信されたリクエストの検証を行うためのサーバ用リクエスト検証プログラムが記憶されている。また、この記憶部12には、開発データベース3から読み込まれた設定情報、及び、設定情報には含まれていないが、実行画面の実行時に保持される追加情報が記憶される。
また、記憶部12には、入力値にエラーが検出されたコントロールの識別子を登録するエラースタック60、及び、各コントロールのステータス(デフォルト又はエラー)が記憶されるステータス記憶部61が設けられている。また、記憶部12には、各コントロールが属するタブアイテムの識別子を示す所属タブが記憶された所属タブ記憶部62、及び、アクティブ表示するタブアイテムを示すアクティブタブインデックスが記憶されるインデックス記憶部63が設けられている。
制御部13は、記憶部12に記憶されているサーバ用リクエスト検証プログラムを実行することで、情報設定部21、取得部22、判定部23、検証実行部24、実行画面形成部25、通信制御部26、及び、エラー処理部27の各機能を実現する。
情報設定部21は、実行画面の初回起動時に、サーバチェックに必要となる各種情報の設定処理を行う。取得部22は、開発データベース3に設定されている実行画面の設定情報を取得する。判定部23は、実行画面に配置されたボタンに対応する検証範囲の判定を行う。
検証実行部24は、検証部の一例であり、文字列検証部31、数値検証部32、範囲パネル検証部33、及び、チェックボックス検証部34を備えている。検証実行部24は、各検証部31~34により、上述の「検証を行う」がオンの属性情報が付加されているボタンに対応する実行画面上の範囲(図8及び図9のチェック範囲)のリクエストに対してサーバチェックを行う。
エラー処理部27は、タブエラー制御部37、フォーカス設定部38、アクティブタブインデックス設定部39を備えている。エラー処理部27は、各部37~39により、リクエストのエラーを業務オペレータに通知するための処理を行う。
実行画面形成部25は、エラー処理部27によるエラー処理が反映された実行画面等を形成する。通信制御部26は、実行画面形成部25で形成された実行画面を、通信インターフェース部14及びネットワーク15を介してWebクライアント端末装置5に送信する。これにより、Webクライアント端末装置5のWebブラウザ9を介して業務オペレータのモニタ装置にエラー処理が反映された実行画面が表示される。
なお、制御部13の情報設定部21~エラー処理部27は、サーバ用リクエスト検証プログラムによりソフトウェアで実現することとして説明を進めるが、情報設定部21~エラー処理部27の全部又は一部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。
また、サーバ用リクエスト検証プログラムは、インストール可能な形式又は実行可能な形式のファイル情報でCD-ROM、フレキシブルディスク(FD)などのコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、サーバ用リクエスト検証プログラムは、CD-R、DVD(Digital Versatile Disk)、ブルーレイ(登録商標)ディスク、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、サーバ用リクエスト検証プログラムは、インターネット等のネットワーク経由でインストールするかたちで提供してもよい。また、サーバ用リクエスト検証プログラムは、機器内のROM等に予め組み込んで提供してもよい。
(サーバチェック動作)
次に、このようなWebサーバ装置4におけるサーバチェック動作を説明する。まず、Webサーバ装置4は、サーバチェックを実行するために、実行画面の初回起動時に、サーバチェックに必要な情報をコントロールに設定する。
(情報設定動作)
具体的には、図32の制御部13の情報設定部21は、実行画面の初回起動時に、サーバチェックに必要となる、
1.各ボタンに対するチェック範囲情報の設定、
2.チェック対象コントロールが属するタブの設定、及び、
3.範囲パネルの開始コントロールと終了コントロールに対する関連情報の設定、
を行う。
(ボタンに対するチェック範囲情報の設定動作)
まず、初回起動時となると、取得部22により開発データベース3から取得された設定情報に基づいて、実行画面形成部25により実行画面が形成される。判定部23は、初回起動時に形成された実行画面の画面構造(UI構造、UI:User Interface)に基づいて、各ボタンに対応する検証範囲区分及び検証対象識別子を自動で判定する。情報設定部21は、各ボタンに対して、判定部23の判定結果となる検証範囲区分及び検証対象識別子の設定を行う。
図33は、初回起動時における実行画面の一例、及び、各ボタンに対応する検証範囲区分の判定結果の一例を示す図である。このうち、図33(a)は、コマンドバーパネルに登録ボタン55が配置され、コマンドバーパネルの下に位置するパネルに確定ボタン56が配置された実行画面の例を示している。パネル内に配置されたボタンに対して「検証を行う」の属性が付加(オン)されていた場合、図8を用いて説明したように、同じパネル内のコントロールに対する入力値が検証対象となる。また、コマンドバーパネルのボタンに対して「検証を行う」の属性が付加(オン)されていた場合、図9を用いて説明したように、ベースコンテンツパネル内(すべて)のコントロールに対する入力値が検証対象となる。
このため、判定部23は、コマンドバーパネル上の登録ボタン55に対する検証範囲区分は「すべて」と判定する。また、判定部23は、パネル上の確定ボタン56に対する検証範囲区分は「特定の要素」と判定すると共に、検査対象を確定ボタン56が配置されたパネルと同一パネル内の「第1のテキストボックス」及び「第2のテキストボックス」と判定する。そして、判定部23は、図33(b)に示すように、登録ボタン55に対して、検証範囲区分は「すべて」とする判定結果を形成し、また、確定ボタン56に、検証対象となる第1のテキストボックスの識別子及び第2のテキストボックスの識別子を関連付けた判定結果を形成する。情報設定部21は、このような判定結果に基づいて、登録ボタン55及び確定ボタン56に対して、判定部23の判定結果となる検証範囲区分及び検証対象識別子の設定を行う。
図34は、サーバ用リクエスト検証プログラムに基づく、各ボタンに対する検証範囲区分及び検証対象識別子の判定動作の流れを示すフローチャートである。この図34のフローチャートにおいて、ステップS1及びステップS2では、判定部23が、実行画面内に配置されたボタンのうち、最初に判定を行うボタン(第1のボタン)の属性情報に基づいて、「検証を行う」の属性情報が、「オン」となっているか否かを判別する。第1のボタンの「検証を行う」の属性情報が、「オン」となっていない場合(ステップS2:False)、第1のボタンに対応する範囲の入力値に対する検証(サーバチェック)は行わないことを示す。このため、判定部23は、ステップS1及びステップS2に処理を戻し、第1のボタンの次に判定を行う第2のボタンの属性情報に基づいて、「検証を行う」の属性情報が、「オン」となっているか否かを判別する。
判定部23は、実行指示検出部の一例であり、このように各ボタンに対する「検証を行う」の属性情報が「オン」となっているか否かを判別し、「検証を行う」の属性情報が「オン」となっているボタンを検出した際に(ステップS2:True)、ステップS3に処理を進める。
ステップS3では、判定部23が、親要素のパネルを、親子の関連情報から取得する。すなわち、このステップS3では、判定部23は、「検証を行う」の属性情報が「オン」となっているボタンが配置されているパネルを検出する。そして、判定部23は、ステップS4において、「検証を行う」の属性情報が「オン」となっているボタンが配置されている親パネルがコマンドバーパネルであるか否かを判別する。
「検証を行う」の属性情報が「オン」となっているボタンが配置されている親パネルがコマンドバーパネルである場合(ステップS4:True)、判定部23は、ステップS5において、そのボタンの検証範囲区分を「すべて」とする判定結果を形成する。図33の例では、「検証を行う」の属性情報が「オン」となっている登録ボタン55がコマンドバーパネルに配置されているため、検証範囲区分を「すべて」とする判定結果がステップS5で形成される(図33(b)参照)。
これに対して、「検証を行う」の属性情報が「オン」となっているボタンが配置されている親パネルがコマンドバーパネルではない場合(ステップS4:False)、判定部23は、ステップS6において、そのボタンの親要素のパネルを規定に子要素を収集する。そして、判定部23は、チェック対象コントロールの識別子を、そのボタンに設定すると共に、そのボタンの検証範囲区分を「パネル」とする判定結果を形成する。すなわち、図33の例に基づいて説明すると、ステップS6では、判定部23が、確定ボタン56が配置されているパネル内から検出された第1のテキストボックスの識別子及び第2のテキストボックスの識別子を判定結果として形成する(図33(b)参照)。
このように判定結果を形成すると、判定部23は、処理をステップS1及びステップS2に戻し、「検証を行う」の属性情報が「オン」となっている次のボタンに対して、上述の検証範囲区分及び検出対象を判定する動作を繰り返し行う。情報設定部21は、このような判定結果に基づいて、登録ボタン55及び確定ボタン56に対して、判定部23の判定結果となる検証範囲区分及び検証対象識別子の設定を行う。
(チェック対象コントロールが属する所属タブの設定)
次に、判定部23は、チェック対象コントロールが属する所属タブを判定する。図35は、サーバ用リクエスト検証プログラムに基づく、チェック対象コントロールが属する所属タブの判定動作の流れを示すフローチャートである。この図35のフローチャートにおいて、判定部23は、まず、実行画面上に配置された第1のタブアイテムを、チェック対象コントロールが属するタブの判定を行うタブアイテムとする(ステップS11)。
ステップS12では、判定部23が、第1のタブアイテム内における、サーバチェックの対象となるコントロールであるチェックコントロール対象を全て取得する。なお、判定部23は、図36(a)及び図36(b)に示すように、タブアイテムが階層化されている場合も、階層化されている各タブアイテムのチェックコントロール対象を全て取得する。
次に、判定部23は、取得した全てのチェックコントロール対象に対し、ステップS13において、現在処理中のタブアイテムの識別子を判定する。判定部23は、このような判定動作を、タブアイテム毎に、順次、繰り返し実行する。
図37は、タブアイテムとタブアイテムに属するコントロールの判定結果を示す図である。図37(a)は、コントロールである第2、第3、第6及び第7のテキストボックスの所属タブは、それぞれ第1のタブアイテムであることを示す判定結果を示している。この場合、情報設定部21は、第2、第3、第6及び第7のテキストボックスに対して第1のタブアイテムの識別子を関連付けて設定する。
同様に、図37(b)は、コントロールである第2、第3、第6及び第7のテキストボックスの所属タブは、それぞれ第1のタブアイテムであり、第4及び第5のテキストボックスの所属タブは、それぞれ第2のタブアイテムであることを示す判定結果を示している。この場合、情報設定部21は、第2、第3、第6及び第7のテキストボックスに対して第1のタブアイテムの識別子を関連付けて設定し、第4及び第5のテキストボックスに対して、第2のタブアイテムの識別子を関連付けて設定する。
同様に、図37(c)は、コントロールである第2、第3、第6及び第7のテキストボックスの所属タブは、それぞれ第1のタブアイテムであり、第4及び第5のテキストボックスの所属タブは、それぞれ第2のタブアイテムであることを示す判定結果を示している。
さらに、図37(c)は、第6及び第7のテキストボックスの所属タブは、それぞれ第3のタブアイテムであることを示す判定結果を示している。この場合、情報設定部21は、第2、第3、第6及び第7のテキストボックスに対して第1のタブアイテムの識別子を関連付けて設定し、第4及び第5のテキストボックスに対して、第2のタブアイテムの識別子を関連付けて設定する。さらに、情報設定部21は、第6及び第7のテキストボックスに対して、第3のタブアイテムの識別子を関連付けて設定する。
(範囲パネルの開始コントロールと終了コントロールに対する関連情報の設定動作)
次に、判定部23は、範囲パネルの開始コントロールと終了コントロールに対する関連情報を判定する。図38は、サーバ用リクエスト検証プログラムに基づく、範囲パネルの開始コントロールと終了コントロールに対する関連情報の判定動作の流れを示すフローチャートである。この図38のフローチャートにおいて、判定部23は、まず、実行画面上に配置された第1の範囲パネルを、開始コントロールと終了コントロールに対する関連情報を判定する範囲パネルとする(ステップS21)。範囲パネルに対する詳細は、図19の説明を参照されたい。
次に、判定部23は、範囲パネルの子要素情報から、2つの範囲スタックパネルを取得する。範囲スタックパネルは、図19(a)及び図19(b)を用いて説明したように、範囲の開始となる入力値が入力される開始スタックパネル、及び、範囲の終了となる入力値が入力される終了スタックパネルである。
次に、判定部23は、ステップS23において、範囲スタックパネルの全ての子要素を取得する。そして、判定部23は、ステップS24において、開始側及び終了側のコントロールの識別子を、順に、関連情報として判定する。判定部23は、このような判定動作を、範囲パネル毎に、順次、繰り返し実行する。情報設定部21は、このような判定結果に基づいて、開始側及び終了側のコントロールの識別子を、順に、範囲パネルの関連情報として設定する。
図39は、このような範囲パネルの開始コントロールと終了コントロールに対する関連情報の判定結果を示す図である。図39(a)は、実行画面の模式図であり、この例のように、第1の範囲パネル及び第2の範囲パネルが検出されたとする。この場合、判定部23は、第1の範囲パネルに対しては、図39(b)に示すように、第1の範囲パネルの開始スタックパネルとなるテキストボックス、及び、第1の範囲パネルの終了スタックパネルとなるテキストボックスを、第1の範囲パネルの関連情報として判定する。情報設定部21は、このような判定結果に基づいて、第1の範囲パネルの開始スタックパネルとなるテキストボックスの識別子、及び、第1の範囲パネルの終了スタックパネルとなるテキストボックスの識別子を、第1の範囲パネルの関連情報として設定する。
また、判定部23は、2つの開始スタックパネル及び2つの終了スタックパネルを備えた第2の範囲パネルに対しては、図39(c)に示すように、第2の範囲パネルの2つの開始スタックパネルに所属するテキストボックス、及び、第2の範囲パネルの2つの終了スタックパネルに所属するテキストボックスを、第2の範囲パネルの関連情報として判定する。情報設定部21は、このような判定結果に基づいて、第2の範囲パネルの2つの開始スタックパネルに所属するテキストボックスの識別子、及び、第2の範囲パネルの2つの終了スタックパネルに所属するテキストボックスの識別子を、第2の範囲パネルの関連情報として設定する。
(サーバチェック動作及びエラー処理動作)
次に、Webサーバ装置4におけるリクエストのサーバチェック動作、及び、エラー処理動作を説明する。図40は、サーバ用リクエスト検証プログラムに基づく、サーバチェック動作及びエラー処理動作の流れを示すフローチャートである。一例ではあるが、図7(a)~図7(c)に示したように、Webクライアント端末装置5の実行画面において表示ボタンをクリック操作して所望のデータの表示を求めるリクエストが改ざんされることで、Webクライアント端末装置5のクライアントチェックを不正に通過し、ネットワーク15を介してWebサーバ装置4で受信されたとする。この場合において、判定部23は、クリック操作された表示ボタンに付加されている「検証を行う」の属性情報がオンとなっているか否かを判別する。
表示ボタンに付加されている「検証を行う」の属性情報がオフの場合(ステップS31:False)、処理がステップS34に進み、ボタンに割り付けられた処理を実行する。すなわち、この場合は、サーバチェックを行うことなく、実行画面形成部25が、リクエストで要求されるデータを業務データベース7から取得して実行画面に反映させる。そして、通信制御部26が、ステップS36において、リクエストを反映させた実行画面をHTML(Hyper Text Markup Language)形式のデータに変換し、ネットワーク15を介して、Webクライアント端末装置5に送信する。
これにより、Webクライアント端末装置5側では、表示ボタンをクリック操作して要求したリクエストが反映された実行画面が、Webブラウザ9を介してモニタ装置に表示される。この場合、改ざんされたリクエストが反映された実行画面がWebクライアント端末装置5側で表示されることとなるが、「検証を行う」の属性情報がオフであるため、問題はない。
これに対して、表示ボタンに付加されている「検証を行う」の属性情報がオンの場合(ステップS31:True)、表示ボタンが配置されているパネルのコントロールに対して、図32に示す検証実行部24が検証(サーバチェック)を行う。図41のフローチャートを用いて後述するが、この検証によりエラーが検出された場合、エラーが検出されたコントロールの識別子が、記憶部12のエラースタック60に記憶されるようになっている。このため、ステップS33では、エラー処理部27が、エラースタック60にデータ(エラーが検出されたコントロールの識別子)が存在するか否かを判別する。
換言すると、ステップS33では、検証によりエラーが検出されたコントロールの有無が判別される。そして、検証によりエラーが検出されたコントロールが存在しない場合(ステップS33:False)、実行画面形成部25が、リクエストで要求されるデータを業務データベース7から取得して実行画面に反映させる。そして、通信制御部26が、ステップS36において、リクエストを反映させた実行画面をHTML形式のデータに変換し、ネットワーク15を介して、Webクライアント端末装置5に送信して表示する。
これに対して、検証によりエラーが検出されたコントロールが存在する場合(ステップS33:True)、エラー処理部27が、ステップS35において、タブのエラー制御及びフォーカスの設定等の、図10~図12を用いて説明したエラー処理を行う。実行画面形成部25は、このようなエラー処理が施された実行画面を形成する。通信制御部26は、ステップS36において、エラー処理が施された実行画面をHTML形式のデータに変換し、ネットワーク15を介して、Webクライアント端末装置5に送信して表示する。これにより、Webクライアント端末装置5側のモニタ装置に、図10~図12を用いて説明したエラー処理が施された実行画面が表示される。
(コントロールの検証動作)
次に、図41のフローチャートを用いて、図40のフローチャートのステップS32のコントロールの検証処理を説明する。例えば、表示ボタンに付加されている「検証を行う」の属性情報がオンであることで、コントロールの検証処理を開始すると、検証実行部24は、ステップS41及びステップS42で、ベースパネル内の全コントロールのうち、最初に入力値のサーバチェックを行うコントロールを選定する。次に、ステップS43では、検証実行部24が、クリック操作されたボタンの検証範囲区分が「すべて」であるか否かを判別する。
すなわち、このステップS43では、コントロールの検証を行う範囲(チェック範囲)を判別しており、コマンドバー上の登録ボタン等がクリック操作された場合は、図9を用いて説明したようにタブ上の「すべて」の範囲内のコントロールが検証対象となる。
このため、ステップS43で、クリック操作されたボタンの検証範囲区分が「すべて」であると判別された場合(ステップS43:True)、ステップS45において、検証実行部24が、ステップS41及びステップS42で選定したコントロールに対して入力値の検証処理を実行する。そして、検証実行部24は、ステップS46において、検証したコントロールに、入力値のエラーが検出されたか否かを判別する。
検証したコントロールの入力値にエラーが検出された場合(ステップS46:True)、検証実行部24は、エラーが検出されたコントロールの識別子を、記憶部12のエラースタック60に登録する。この後、処理がステップS42に戻り、次のコントロールに対する検証処理に移行する。これに対して、検査したコントロールの入力値にエラーが検出されなかった場合(ステップS46:False)、そのまま処理がステップS42に戻り、次のコントロールに対する検証処理に移行する。
一方、ステップS43で、クリック操作されたボタンの検証範囲区分が「すべて」ではないと判別された場合(ステップS43:False)、クリック操作されたボタンが配置されているパネル内が検証範囲となる。このため、ステップS43で、クリック操作されたボタンの検証範囲区分が「すべて」ではないと判別された場合(ステップS43:False)、ステップS44に処理が進む。
ステップS44では、検証実行部24が、現在、検証を行おうとしているコントロール(ステップS41及びステップS42で選定されたコントロール)は、クリック操作されたボタンが配置されているパネル内に含まれているか否かを判別する。現在、検証を行おうとしているコントロールが、クリック操作されたボタンが配置されているパネル内に含まれていない場合(ステップS44:False)、検証を行うコントロールではないため、処理がステップS42に戻り、次のコントロールの検証処理に移行する。
これに対して、現在、検証を行おうとしているコントロールが、クリック操作されたボタンが配置されているパネル内に含まれている場合(ステップS44:True)、そのコントロールは、検証対象となっているため、ステップS45に処理が進む。ステップS45では、検証実行部24が、ステップS41及びステップS42で選定したコントロールに対して入力値の検証処理を実行する。そして、検証実行部24は、ステップS46において、検証したコントロールに、入力値のエラーが検出されたか否かを判別する。
検証したコントロールの入力値にエラーが検出された場合(ステップS46:True)、検証実行部24は、エラーが検出されたコントロールの識別子を、記憶部12のエラースタック60に登録する。この後、処理がステップS42に戻り、次のコントロールに対する検証処理に移行する。これに対して、検査したコントロールの入力値にエラーが検出されなかった場合(ステップS46:False)、そのまま処理がステップS42に戻り、次のコントロールに対する検証処理に移行する。
図42に、このようなコントロールの検証処理におけるチェック内容を示す。この図42に示すようにコントロールが文字列テキストボックスである場合、検証実行部24の文字列検証部31が、入力可能な文字数を満たしているか否か、及び、入力可能な文字種を満たしているか否か(半角,全角,大文字,小文字,記号)等の検証を行う。
また、コントロールが数値テキストボックスである場合、検証実行部24の数値検証部32が、値は数値形式か否か、値の大きさは指定された最小値~最大値の範囲内か否か、及び、値の桁数は、指定された整数桁~小数桁の範囲内か否か等の検証を行う。また、コントロールが範囲パネルである場合、検証実行部24の範囲パネル検証部33が、子要素の開始値よりも終了値のほうが大きい値か否かの検証を行う。また、コントロールがチェックボックスグループである場合、検証実行部24のチェックボックス検証部34が、子要素のチェックボックスの少なくとも一つはチェックがオンになっているか否かの検証を行う。
(範囲パネルの検証動作)
図43は、検証実行部24の範囲パネル検証部33による、範囲パネルの検証動作の流れを示すフローチャートである。範囲パネルの検証を行う場合、検証実行部24の範囲パネル検証部33は、まず、ステップS51において、図24を用いて説明した範囲パネルの子要素の識別子に基づいて、開始側の範囲スタックパネルを取得する。また、範囲パネル検証部33は、ステップS52において、図24を用いて説明した範囲スタックパネルの子要素の識別子に基づいて、範囲スタックパネルの全ての子要素を取得する。
次に、範囲パネル検証部33は、ステップS53で、検証を行うコントロールを決定する。ステップS54では、範囲パネル検証部33が、検証を行うコントロールである、ステップS53で決定された開始側の範囲スタックパネルに対応する終了側の範囲スタックパネル(コントロール)を、図24を用いて説明した範囲パネルの開始終了の関連情報に基づいて取得する。
そして、範囲パネル検証部33は、ステップS55において、開始側の範囲スタックパネル(コントロール)の入力値と、終了側の範囲スタックパネル(コントロール)の入力値とを比較処理する。この比較処理により、開始側の入力値よりも終了側の入力値の方が大きいと判別された場合、開始側及び終了側の各範囲スタックパネル(コントロール)に対する入力値は正常であるため、範囲パネル検証部33は、そのまま図43のフローチャートに示した範囲パネルの検証を終了する。
また、比較処理により、開始側の入力値と終了側の入力値が同じ値と判別された場合、範囲パネル検証部33は、ステップS53に処理を戻す。そして、範囲パネル検証部33は、ステップS53において、次に検証を行うコントロールを決定し、決定したコントロールに対応する終了側のコントロールを取得して(ステップS54)、上述の比較処理を行う(ステップS55)。
また、比較処理により、開始側の入力値よりも終了側の入力値の方が小さいと判別された場合、範囲パネル検証部33は、ステップS56に処理を進め、エラーが発生したコントロールとして、このコントロールの識別子を記憶部12のエラースタック60に登録して、図43のフローチャートに示す範囲パネルの検証を終了する。
(チェックボックスグループの検証動作)
図44は、検証実行部24のチェックボックス検証部34による、チェックボックスグループの検証動作の流れを示すフローチャートである。実施の形態の例の場合、図21を用いて説明したように、チェックボックスグループは、例えば新規、修正及び削除の各チェックボックスを備える。これらのチェックボックスのうち、少なくとも一つのチェックボックスには、チェックを入れる必要がある。このため、チェックボックス検証部34は、図44のフローチャートのステップS61において、図24に示したチェックボックスグループの検証が必須であるか否かを示す属性情報が「必須」となっているか否か(必須設定がオンか否か)を判別する。
チェックボックスグループの検証が必須ではない場合(必須設定がオフ)の場合(ステップS61:False)、チェックボックス検証部34は、チェックボックスグループの検証を行うことなく、図44のフローチャートのチェックボックスグループの検証を終了する。
これに対して、チェックボックスグループの検証が必須である場合(必須設定がオン)の場合(ステップS61:True)、チェックボックス検証部34は、チェックボックスグループの全ての子要素を取得する。そして、チェックボックス検証部34は、ステップS63において、例えば上述の新規、修正及び削除の各チェックボックスのうち、少なくとも一つのチェックボックスにチェックが入っているか否か(少なくとも一つのチェックボックスがオンか否か)を判別する。
少なくとも一つのチェックボックスにチェックが入っている場合(ステップS63:True)、必須設定要件を満たしているため、チェックボックス検証部34は、そのまま図44のフローチャートのチェックボックスグループの検証動作を終了する。これに対して、少なくとも一つのチェックボックスにチェックが入っていない場合(ステップS63:False)、必須設定要件を満たしていないため、チェックボックス検証部34は、ステップS64に処理を進める。そして、チェックボックス検証部34は、ステップS64において、エラーが発生したコントロールとして、このチェックボックスグループの識別子を記憶部12のエラースタック60に登録して、図44のフローチャートのチェックボックスグループの検証動作を終了する。
(エラー処理の詳細)
次に、図40のフローチャートのステップS35のエラー処理の詳細を説明する。図45は、図40のフローチャートのステップS35のエラー処理の詳細な動作の流れを示すフローチャートである。図40のフローチャートのステップS33において、エラースタック60にエラーが生じているコントロールの識別子が登録されていると判断されると(ステップS33:True)、図45のステップS71に処理が進む。
ステップS71では、エラー処理部27のタブエラー制御部37が、エラーが生じているコントロールを含むタブアイテムにエラーマークを付加する。ステップS72では、エラー処理部27のフォーカス設定部38が、エラースタック60の先頭に記憶されているコントロールの識別子を、コントロールのエラー表示であるフォーカスを行うコントロールの識別子(フォーカス先のコントロールの識別子)として設定する。
ステップS73では、エラー処理部27のアクティブタブインデックス設定部39が、フォーカス先のコントロールの所属タブをチェックする。そして、フォーカス先のコントロールの所属タブが存在する場合は、対象のタブアイテムの親のタブのアクティブタブインデックス(図24参照)を設定する。
(エラーマークの付加処理)
図46は、図45のフローチャートのステップS71におけるエラーマークの付加処理(エラーのステータスの設定処理)の詳細な動作の流れを示すフローチャートである。この図46のフローチャートにおいて、ステップS81では、エラー処理部27のタブエラー制御部37が、エラースタック60を参照する。エラースタック60には、図47(a)に示すように、エラーが生じているコントロールの識別子が登録されている。タブエラー制御部37は、エラースタック60の例えば先頭に記憶されている識別子のコントロールを、エラーマークの付加処理を行うコントロールとして選択する。
次に、タブエラー制御部37は、ステップS82及びステップS83において、図47(b)に示す所属タブ記憶部62を参照することで、ステップS81で選択したコントロールが属するタブアイテムの識別子を示す所属タブ情報を取得する。
次に、タブエラー制御部37は、ステップS84において、取得した所属タブ情報に基づいてタブアイテムを特定し、図47(c)に示すステータス記憶部61に記憶されている各タブアイテムのステータスのうち、特定したタブアイテムのステータスに「エラー」のステータスを設定する。
次に、複数のタブアイテムに属するコントロールも存在する。例えば、図47(b)に示す第6のテキストボックスは、第1のタブアイテム及び第3のタブアイテムに属する。このため、ステップS85では、現在、「エラー」のステータスの設定処理を行っているコントロールが属する全タブアイテムに対して、「エラー」のステータス設定が終了したか否かを判別する。全タブアイテムに対する「エラー」のステータス設定が終了していない場合(ステップS85:False)、タブエラー制御部37はステップS83に処理を戻し、現在、「エラー」のステータスの設定処理を行っているコントロールが属する次のタブアイテムに対する「エラー」のステータス設定処理に移行する。
これに対して、現在、「エラー」のステータスの設定処理を行っているコントロールが属する全てのタブアイテムに対する「エラー」のステータス設定が終了した場合は(ステップS85:True)、ステップS86に処理が進む。ステップS86では、タブエラー制御部37が、エラースタック60に記憶されている全タブアイテムに対する「エラー」のステータス設定が終了したか否かを判別する。
全タブアイテムに対する「エラー」のステータス設定が終了していない場合(ステップS85:False)、タブエラー制御部37は、ステップS83に処理を戻し、次のタブアイテムに対する「エラー」のステータス設定処理に移行する。全タブアイテムに対する「エラー」のステータス設定が終了した場合(ステップS85:True)、タブエラー制御部37は、図46のフローチャートに示すエラーマークの付加処理を終了する。
実行画面形成部25は、実行画面を形成する際に、ステータス記憶部61を参照することで、「エラー」のステータスが設定されているタブアイテムを検出する。図47(c)の例は、第1のタブアイテム及び第3のタブアイテムに対して、「エラー」のステータスが設定されている例である。このように「エラー」のステータスが設定されているタブアイテムを検出すると、実行画面形成部25は、図48に示すように、第1のタブアイテム及び第3のタブアイテムの文字の前に「感嘆符「!」」を表示したうえで、赤枠で囲み、また、感嘆符を付加した第1のタブアイテム及び第3のタブアイテムの文字を赤文字で強調表示することでアクティブ化した実行画面を形成する。これにより、業務オペレータに対して、第1のタブアイテム及び第3のタブアイテムに入力値のエラーが生じていることを認識させることができる。
(コントロールに対するフォーカス設定処理)
次に、図45のフローチャートのステップS73の処理となる、コントロールに対するフォーカス設定処理を、図49のフローチャートを用いて説明する。この図49のフローチャートにおいて、ステップS91では、エラー処理部27のフォーカス設定部38が、フォーカス先となるコントロールの識別子に基づいて、フォーカスを行うコントロールを特定し、このコントロールの所属タブ情報を取得する。
ステップS92では、フォーカス設定部38が、ステップS91で取得した所属タブ情報に基づいて、フォーカスを設定するタブアイテムを選択する。ステップS93では、フォーカス設定部38が、ステップS92で選択したタブアイテムの識別子に基づいて、親要素となるタブの特定を行う(図24参照)。ステップS94では、フォーカス設定部38が、タブの子要素情報に基づいて、ステップS92で選択したタブアイテムのインデックスを特定する。
次に、ステップS95では、エラー処理部27のアクティブタブインデックス設定部39が、インデックス記憶部63に記憶されている、ステップS94で特定したタブアイテムのインデックスを、アクティブインデックスに設定する。ステップS96では、フォーカス設定部38が、全タブアイテムのコントロールに対するアクティブタブインデックスの設定が終了したか否かを判別する。
全タブアイテムのコントロールに対するアクティブタブインデックスの設定が終了していない場合は(ステップS96:False)、フォーカス設定部38は、ステップS92に処理を戻し、次のコントロールに対するアクティブタブインデックスの設定処理に移行する。全タブアイテムのコントロールに対するアクティブタブインデックスの設定が終了した場合は(ステップS96:True)、図49のフローチャートに示すフォーカス設定処理を終了する。
図50は、インデックス記憶部63に記憶されたアクティブタブインデックスの一例を示す図である。この図50の例は、第1のタブアイテム及び第2のタブアイテムに対してアクティブインデックスが設定された例である(アクティブタブインデックス→0)。
実行画面形成部25は、実行画面を形成する際に、インデックス記憶部63を参照することで、アクティブタブインデックスが設定されているタブアイテムのコントロールを検出する。例えば、第3のタブアイテムに対してアクティブタブインデックスが設定されていた場合、実行画面形成部25は、図48に示すように、第3のタブアイテムに属するコントロールである第6のテキストボックスを赤色で高輝度表示(フォーカス)した実行画面を形成する。これにより、業務オペレータに対して、第6のテキストボックスに入力値のエラーが生じていることを認識させることができる。なお、このようなフォーカス表示と共に、図12(b)に示したようなエラーメッセージを表示してもよい。これにより、業務オペレータに対して、入力値のエラーの発生を、より認識させることができる。
(実施の形態の効果)
以上の説明から明らかなように、実施の形態のWebアプリケーションシステムは、実行画面のUI構造情報であるコントロールの種類及び親子関係の情報をチェック範囲、チェック内容及び挙動制御に応用している。リクエスト改ざん防止のために行うサーバチェックに実行画面のUI構造情報を用いることで、開発者が特別な実装をしなくても一定ルールに基づくサーバチェック処理を自動的に行うことができる。また、入力値のエラー検出時においても、統一した挙動でユーザに対するエラーの提示を行うことができる。従って、開発者の負担を軽減できると共に、不正アクセス等のリスクを軽減でき、アプリケーション全体の品質を向上させることができる。
また、今日においては、ビジネス環境の変化が激しく、情報システムも経営スピードに追従することが前提とされ、迅速なシステム変化が求められる。このようなことから、ローコード開発ツールが注目されているが、そのユーザ層がベンダーだけでなく、システム利用会社のシステム担当者まで広がっている。実施の形態のWebアプリケーションシステムは、このようなユーザに対しても、セキュリティ性が高く、また、エラー表示の挙動も統一された実行画面を、より簡単に開発可能とする仕組みを提供できる。
[国連が主導する持続可能な開発目標(SDGs)への貢献]
本実施形態により、業務効率化や企業の適切な経営判断を推進することに寄与することができるので、SDGsの目標8及び9に貢献することが可能となる。
また、本実施形態により、廃棄ロス削減や、ペーパレス・電子化を推進することに寄与することができるので、SDGsの目標12、13及び15に貢献することが可能となる。
また、本実施形態により、統制、ガバナンス強化に寄与することができるので、SDGsの目標16に貢献することが可能となる。
[他の実施の形態]
本発明は、上述した実施形態以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施形態にて実施されてよいものである。
例えば、実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、或いは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、本明細書中や図面中で示した処理手順、制御手順、具体的名称、各処理の登録データや検索条件等のパラメータを含む情報、画面例、データベース構成については、特記する場合を除いて任意に変更することができる。
また、Webアプリケーションシステムに関して、図示の各構成要素は機能概念的なものであり、必ずしも図示の如く物理的に構成されていることを要しない。
例えば、Webサーバ装置4が備える処理機能、特に制御部13及び制御部13にて行われる各処理機能については、その全部又は任意の一部を、CPU(Central Processing Unit)および当該CPUにて解釈実行されるプログラムにて実現してもよく、また、ワイヤードロジックによるハードウェアとして実現してもよい。なお、プログラムは、本実施形態で説明した処理を情報処理装置に実行させるためのプログラム化された命令を含む一時的でないコンピュータ読み取り可能な記録媒体に記録されており、必要に応じて業務支援装置1に機械的に読み取られる。すなわち、ROM又はHDD等の記憶部等には、OSと協働してCPUに命令を与え、各種処理を行うためのコンピュータプログラムが記録されている。このコンピュータプログラムは、RAMにロードされることによって実行され、CPUと協働して制御部13を構成する。
また、このコンピュータプログラムである業務支援プログラムは、アプリケーションWebサーバ装置4に対して任意のネットワークを介して接続された他のサーバ装置に記憶されていてもよく、必要に応じてその全部または一部をダウンロードすることも可能である。
また、本実施形態で説明した処理を実行するための業務支援プログラムを、一時的でないコンピュータ読み取り可能な記録媒体に格納してもよく、また、プログラム製品として構成することもできる。ここで、この「記録媒体」とは、メモリーカード、USB(Universal Serial Bus)メモリ、SD(Secure Digital)カード、フレキシブルディスク、光磁気ディスク、ROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(登録商標)(Electrically Erasable and Programmable Read Only Memory)、CD-ROM(Compact Disk Read Only Memory)、MO(Magneto-Optical Disk)、DVD(Digital Versatile Disk)、及び、Blu-ray(登録商標) Disc等の任意の「可搬用の物理媒体」を含むものとする。
また、「プログラム」とは、任意の言語または記述方法にて記述されたデータ処理方法であり、ソースコード又はバイナリコード等の形式を問わない。なお、「プログラム」は必ずしも単一的に構成されるものに限られず、複数のモジュールやライブラリとして分散構成されるものや、OSに代表される別個のプログラムと協働してその機能を達成するものをも含む。なお、実施形態に示した各装置において記録媒体を読み取るための具体的な構成および読み取り手順ならびに読み取り後のインストール手順等については、周知の構成や手順を用いることができる。
記憶部12は、RAM、ROM等のメモリ装置、ハードディスク等の固定ディスク装置、フレキシブルディスク、及び、光ディスク等のストレージ手段であり、各種処理やウェブサイト提供に用いる各種のプログラム、テーブル、データベース、および、ウェブページ用ファイル等を格納する。
また、Webサーバ装置4は、既知のパーソナルコンピュータ装置又はワークステーション等の情報処理装置で構成してもよく、また、任意の周辺装置が接続された当該情報処理装置で構成してもよい。また、情報処理装置は、本実施形態で説明した処理を実現させるソフトウェア(プログラム又はデータ等を含む)を実装することにより実現してもよい。
さらに、装置の分散・統合の具体的形態は図示するものに限られず、その全部又は一部を、各種の付加等に応じて又は機能付加に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。すなわち、上述した実施形態を任意に組み合わせて実施してもよく、実施形態を選択的に実施してもよい。