図1は,本発明の実施の形態を示すシステム構成の概要図である。サーバ1は,複数の個別業務アプリ10を搭載し,これらの個別業務アプリ10によって各種の業務処理を遂行する。サーバ1は,ネットワークを介して複数のクライアント40または他システム41に接続され,クライアント40または他システム41との間でそれぞれ電文を送受信することにより,業務処理を行う。
通信パッケージ13は,クライアント40または他システム41との通信プロトコルに応じた通信制御を行うモジュールである。電文制御部14は,電文の送受信先に応じた電文の振り分け制御を行うモジュールである。
業務マスタ16は,個別業務アプリ10による業務処理において参照または更新されるデータベースであり,アクセス部品15は,業務マスタ16へアクセスするためのデータベース管理システムが提供するプログラム群である。
各クライアント40または他システム41との間の電文は,それぞれシステムまたは業務ごとに予めデータのレイアウト(フォーマット)が決められている。また,業務マスタ16に格納されるデータのレイアウト,すなわちデータベースの各レコードのフォーマット等も予め固定的に決められている。
以上のクライアント40,他システム41,通信パッケージ13,電文制御部14,アクセス部品15,業務マスタ16は,図15を用いて説明した従来システムのものと同様である。
本発明では,個別業務アプリ10が,予め固定的に定められている電文のレイアウトおよび業務マスタ16のデータのレイアウトを意識しないで,電文および業務マスタのデータの作成,参照,更新,削除などの処理を行うことができるように,主にレイアウトの変換と,各個別業務アプリ10に共通な処理を行うための,データ管理部品モジュール20が設けられている。データ管理部品モジュール20は,電文の入出力時や業務マスタ16のデータの入出力時に呼び出されて,電文および業務マスタ16のデータのレイアウト変換を行う。ナビゲーションテーブル記憶部30には,後に詳しく説明するように,このレイアウト変換に必要となる各種のテーブルが記憶されている。
予め固定的に定められている電文のレイアウトおよび業務マスタ16に格納されているデータのレイアウトを,ここでは外部形式または外部データ形式と呼ぶ。データ管理部品モジュール20が行うレイアウト変換とは,個別業務アプリ10がデータを入力するときに,外部形式のデータを統一的に定められた内部形式(内部データ形式ともいう)に変換して保持し,また,個別業務アプリ10がデータを出力するときに,前記内部形式のデータを出力先に応じた外部形式に変換して出力することである。なお,本明細書においては,後者の変換をレイアウトの逆変換ということもある。
一つの電文や業務マスタ16のレコードを単位とするデータの内容をリソースといい,リソース中の個々の項目をアイテムという。外部形式では,一つの電文や業務マスタ16のレコードにおけるアイテムの物理的な位置やサイズ,すなわちレイアウトが固定的に定められているのに対し,内部形式では,各アイテムの物理的な位置やサイズが捨象された情報として保持される。このような外部形式から内部形式への変換,また内部形式から外部形式への変換のための情報は,ナビゲーションテーブルとして,ナビゲーションテーブル記憶部30に予め登録しておく。外部形式から内部形式へのデータの変換を,データの正規化という。具体的には,以下のとおりである。
内部形式では,アイテムの物理的な位置を個別業務アプリ10が意識しなくてもデータにアクセスできるように,個々のアイテムを識別するアイテムIDでそのデータを参照,更新することができるようにする。また,内部形式においては,アイテムのサイズはナビゲーションテーブルによって定められる。ナビゲーションテーブルには,複数の個別業務アプリ10が共通に利用するアイテムに対して,それらが必要とするサイズの最大サイズを予測してサイズ情報を設定してもよい。また,共通化のために,必要に応じてデータ形式を変換する情報をナビゲーションテーブルに設定しておくようにしてもよい。例えば,数値データを2進数で保持するか,文字型データで保持するか,内部10進形式で保持するかというような情報である。
個別業務アプリ10における主プロセス11は,個別業務アプリ10における全体の制御を司るメインのプログラム実行部であり,サブプロセス12は,各電文に応じて主プロセス11から呼び出され,業務マスタ16の参照,更新等の具体的な業務処理を行うプログラムの実行部である。一般に,個別業務アプリ10は,一つの主プロセス11と複数のサブプロセス12とを有する。
図1に示すシステムにおいて,個別業務アプリ10が,あるクライアント40から通信パッケージ13,電文制御部14を介して,一つの電文を受信すると,個別業務アプリ10における主プロセス11は,データ管理部品モジュール20を呼び出し,受信した電文のレイアウト変換を指示する。データ管理部品モジュール20は,ナビゲーションテーブル記憶部30に格納されたナビゲーションテーブルを参照し,受信した電文のデータを外部形式から内部形式に変換して,内部形式データ記憶部21に保持する。このとき,内部形式に変換された電文のデータに対して,データを一意に識別するためのリソースIDが付与される。
主プロセス11は,その電文を処理するサブプロセス12を呼び出す。サブプロセス12は,データ管理部品モジュール20が提供する検索機能を使用して,処理対象とする内部形式に変換された電文のリソースIDを取得する。以後,サブプロセス12は,そのリソースIDにより,データ管理部品モジュール20を介してその電文のデータにアクセスする。したがって,サブプロセス12は,電文の物理的なレイアウトを意識することなく,電文のデータを処理することができる。すなわち,電文のレイアウトが変わっても,ナビゲーションテーブルを変更するだけで,自動的に新しい外部形式から正規化された内部形式へのデータの変換が行われるため,サブプロセス12は,レイアウトの変更前と同様にデータを使用することができ,レイアウト可変になる。
電文を個別業務アプリ10が作成し,個別業務アプリ10からクライアント40または他システム41へ送信する場合,サブプロセス12は,データ管理部品モジュール20を用いて内部形式で電文のデータを作成する。内部形式で作成されたデータは,電文の送信時にナビゲーションテーブルに従って外部形式に変換され,電文制御部14を通して出力される。
上記処理において,主プロセス11からサブプロセス12を呼び出すときに,パラメータでリソースIDを引き渡すようにしてもよい。しかし,本実施の形態のように,主プロセス11とサブプロセス12との入出力パラメータにリソースIDを用いないようにすれば,サブプロセス12の独立性を高め,共通化がさらに容易になる。この場合,サブプロセス12では,後述するデータ管理部品モジュール20の検索機能を使用して電文のデータを示すリソースIDを取得するが,主プロセス11が戻り電文を編集する場合にも,同様に検索機能で戻り電文のデータのリソースIDを取得し,戻り電文を編集することになる。
個別業務アプリ10において,業務マスタ16のレコードを参照,更新する場合にも,同様にナビゲーションテーブルを利用することにより,入出力データの外部形式から内部形式への変換およびその逆変換が行われる。
例えば,サブプロセス12が,電文を処理するために業務マスタ16のデータを参照する場合,データ管理部品モジュール20を呼び出すことにより,業務マスタ16へのアクセスを行う。データ管理部品モジュール20は,アクセス部品15を使用して業務マスタ16のデータを読み込み,そのデータを業務マスタ16のレコードフォーマットである外部形式から,ナビゲーションテーブルで指定された内部形式に変換して,内部形式データ記憶部21に格納する。サブプロセス12は,その内部形式に変換されたデータを利用する。一方,サブプロセス12が業務マスタ16にデータを書き込む場合,同様にデータ管理部品モジュール20を呼び出す。データ管理部品モジュール20は,内部形式で保持しているデータをナビゲーションテーブルに従って外部形式に変換し,アクセス部品15を用いて業務マスタ16に書き込む。
ナビゲーションテーブルには,電文または業務マスタ16のレコードのレイアウト変換を行うか行わないかの情報も設定可能になっており,ナビゲーションテーブルにレイアウト変換不要が設定されている場合には,データ管理部品モジュール20は,外部形式から内部形式への変換,および内部形式から外部形式への変換は行わない。この場合,個別業務アプリ10は,電文のレイアウトおよび業務マスタ16のデータのレイアウトに従った処理を行う。すなわち,従来システムと同様のレイアウトを意識した処理を行う。
したがって,個別業務アプリ10を段階的に改版していくような場合に,改版前には,ナビゲーションテーブルにレイアウト変換不要を設定しておき,既存の個別業務アプリ10のプログラムによって業務処理を遂行し,改版後には,ナビゲーションテーブルにレイアウト変換要を設定して,レイアウト可変とした新しい個別業務アプリ10のプログラムによって業務処理を遂行することができるようになる。このようなレイアウト変換の処理手段を用いることにより,既存のプログラムと新しいプログラムとが混在した状態でシステムを運用することができ,段階的なシステムの再構築が可能になる。
図2は,本発明に関連する部分の詳細な構成例を示す図である。図2において,図1と同符号のものは図1に示すものに対応する。
データ管理部品モジュール20は,レイアウト変換部22,運転管理部23,ログ編集部24,入力項目チェック部25,圧縮/非圧縮変換部26,暗号化/復号化変換部27を備える。ログ情報記憶部28は,ログ編集部24によって編集されたログ情報を記憶する装置である。個別業務アプリ10における共通部品群29は,個別業務アプリ10がデータ管理部品モジュール20の機能を利用するための種々のプログラム部品であり,個別業務アプリ10のプログラムとデータ管理部品モジュール20とのソフトウェアインタフェースである。実装上は,例えばマクロ命令,関数呼出し,またはサブルーチン呼出しなどによって実現される。
レイアウト変換部22は,上述したように,ナビゲーションテーブル記憶部30に格納されたナビゲーションテーブルに従って,電文や業務マスタ16のデータを,外部形式から内部形式に変換して内部形式データ記憶部21に格納する処理,また,内部形式データ記憶部21に格納された内部形式のデータを,外部形式に変換して出力するための変換処理を行う。さらに,レイアウト変換部22は,レイアウトの変換に付随して,入力項目チェック部25,圧縮/非圧縮変換部26,暗号化/復号化変換部27を呼び出すことにより,それぞれ入力項目チェック,データの圧縮/非圧縮,データの暗号化/復号化のための処理を行わせるための処理機能を持つ。
運転管理部23は,レイアウト変換のためのテーブルをメモリに展開する初期設定処理や,統計情報の照会に対する処理,ログ解析情報の照会に対する処理などを行う。ログ編集部24は,レイアウト変換に伴う各種のログ情報,例えば不正電文の情報やデータ使用情報などを収集し,ログ情報記憶部28に格納する処理を行う。入力項目チェック部25は,ナビゲーションテーブルに入力項目をチェックすることが指定されている場合に,設定されたチェック条件に従って,入力項目の形式が正しいかどうかをチェックする。また,圧縮/非圧縮変換部26は,ナビゲーションテーブルに従って,レイアウト変換時におけるデータの領域単位に圧縮または非圧縮の処理を行う。暗号化/復号化変換部27は,ナビゲーションテーブルに従って,レイアウト変換時にデータの項目単位に暗号化または復号化の処理を行う。
ナビゲーションテーブル記憶部30には,レイアウト変換のための各種のテーブルが予め登録され,記憶される。このナビゲーションテーブルの作成・登録は,管理用端末50から行われる。システムの開発者または管理者は,各種の電文のレイアウトや業務マスタ16のレコードのレイアウト情報,および入力項目チェックの要否,データの圧縮/非圧縮の要否,データの暗号化/復号化の要否などが記載された設計書56をもとに,管理用端末50からナビゲーションテーブルの作成に必要な情報を入力する。
管理用端末50の条件入力画面表示部51は,ナビゲーションテーブルに設定する情報を入力するための画面を表示する。条件入力部52は,表示した条件入力画面から入力されたレイアウト変換条件の情報を取得する。ナビゲーションテーブル生成部53は,条件入力部52によって入力された情報をもとに,詳しくは後述する各種のナビゲーションテーブルを生成し,ナビゲーションテーブル記憶部30に格納する。これらのナビゲーションテーブルの生成処理は,GUI(Graphical User Interface)を用いて行われるので,レイアウトの変換に必要な情報を容易に入力することができる。
また,設計書56のデータが電子化されている場合には,そのデータから直接的にナビゲーションテーブルを自動生成することもできる。なお,このようなテーブルの自動生成プログラムは,入力情報と出力情報とが明らかであれば,容易に作成することができるので,ここではテーブル自動生成方法の詳細な処理手続きの説明は省略する。この場合,設計ドキュメントからナビゲーションテーブルを自動生成することにより,テーブルの設定誤りが防止され,高品質化が可能になる。また,テーブルのメンテナンスの運用稼動コストを削減することができる。
また,管理用端末50は,統計情報照会部54および解析情報照会部55を備える。統計情報照会部54は,データ管理部品モジュール20の運転管理部23に対し,データ使用状況や各種メモリ情報等の問い合わせを行い,その問い合わせ結果を出力する。また,解析情報照会部55は,例えば個別アプリ10がシグナル等で異常終了した場合に,その時点のアクセス・データ等の解析情報を運転管理部23に照会し,異常の原因を解析するための解析情報を運転管理部23から受け取り,出力する。これにより,トラブル解析を容易に行うことができるようになる。
統計情報照会部54によって,電文種類ごとの件数を統計情報として収集することができるので,データの負荷分散を目的にナビゲーションテーブルの最適化(ハッシュ値の最適値設定)が可能になる。また,統計情報照会部54によって,項目ごとにユーザ入力誤り(電文の誤り)などの件数を統計情報として収集することにより,誤操作防止を目的とした画面仕様の改善などに統計情報を活用することができる。すなわち,ユーザ入力誤りの集中傾向を分析し,例えば「項目の入力方法を,直接入力から選択入力に変える」とか,「クライアント上の入力チェック機能を補完し,誤入力そのものを抑止する」というように,画面入力仕様の改善に活かすことができる。
図2に示すデータ管理部品モジュール20を,個別業務アプリ10から共通部品群29を介して利用することができるようにすることにより,以下のような効果がある。
(1) 電文や業務マスタ16のデータのレイアウトを,個別業務アプリ10が意識する必要がないので,業務処理の共通化が容易になり,保守性が向上する。
(2) 電文や業務マスタ16のデータのレイアウト変更において,個別業務アプリ10が変更項目を直接使用しない場合には,個別業務アプリ10の改修は不要となり,保守性が向上する。
(3) ナビゲーションテーブルで暗号化の対象/対象外が設定可能であるため,例えば氏名,電話番号,口座番号等の個人情報に該当する項目を,ナビゲーションテーブルへの設定だけで暗号化することができ,個別業務アプリ10の改修を行わないで,個人情報等に対するセキュリティレベルを上げることができるようになる。業務マスタ16は,ナビゲーションテーブルの条件に従って暗号化したデータを格納し,個別業務アプリ10では,自動的に復号されたデータを利用することができるようにすることも可能であるため,個別業務アプリ10における暗号化データの利用を容易化することができる。
(4) データ管理部品モジュール20において,ナビゲーションテーブルへの設定条件により,入力項目チェックがレイアウト変換時に自動的に行われるため,個別業務アプリ10が個々に入力項目チェックのロジックを持つ必要がなくなり,個別業務アプリ10が簡素化され保守性が向上する。
(5) ナビゲーションテーブルに従って,領域の圧縮/非圧縮が自動的に行われるため,個別業務アプリ10が個々に圧縮/非圧縮のロジックを持つ必要がなく,保守性が向上する。
図3は,ナビゲーションテーブルとして用いられる各テーブルのデータ構成の例を示す図である。レイアウト変換方法を示すナビゲーション情報が登録されるナビゲーションテーブルとして,本実施の形態では,図3に示すような電文管理テーブル31,業務マスタ管理テーブル32,アクション管理テーブル33,レイアウト変換テーブル34,アイテム管理テーブル35,条件設定テーブル36が用いられる。
各テーブルは,ナビゲーションテーブル記憶部30に記憶される。図中,矢印に沿って(1:1)と記載されているのは,テーブルが1対1の関係であることを示し,矢印に沿って(1:n)と記載されているのは,テーブルが1対n(nは1以上の整数)の関係であることを示す。また,各テーブルにおいて,(キー)と記載された項目は,そのテーブルにおいてユニークなキーとなる項目であることを示す。また,各テーブルにおいて,(n)と記載された項目は,1つのテーブルに同じ項目がn個繰り返されることを示す。
電文管理テーブル31は,業務の種類および電文の種類ごとに用意されるテーブルであり,業務ID,電文ID,およびレイアウト変換方法を識別するアクションIDなどの情報から構成される。業務IDは,電文を処理する業務を識別する識別情報である。電文IDは,電文の種類を識別する識別情報である。アクションIDは,対応するアクション管理テーブル33を特定する情報である。
業務マスタ管理テーブル32は,業務マスタ16を管理するテーブルであり,業務マスタID,DBアクセスID,アクションIDなどの情報から構成される。業務マスタIDは,業務マスタ16を識別する情報である。DBアクセスIDは,業務マスタ16のデータベースを識別する識別情報である。アクションIDは,対応するアクション管理テーブル33を特定する情報である。なお,電文管理テーブル31と業務マスタ管理テーブル32は,それぞれ電文および業務マスタ16ごとに用意されるテーブルであるので,ナビゲーションテーブル記憶部30とは別に,例えば電文制御部14またはアクセス部品15と個別業務アプリ10との間のインタフェース部(システム固有部)で参照するテーブルとして設けてもよい。
アクション管理テーブル33は,電文や業務マスタ16に対して,どのようなレイアウト変換方法を用いるかを示すアクションを管理するテーブルであり,アクションID,レイアウト種別,レイアウト変換要否,入力項目チェック要否,暗号化機能要否などの情報から構成される。アクションIDは,電文または業務マスタ16に対するレイアウト変換のポリシーを特定する情報である。レイアウト種別は,電文または業務マスタ16のレイアウトを特定する情報である。レイアウト変換要否は,電文または業務マスタ16のレイアウト変換を行うか否かを示す情報である。入力項目チェック要否は,電文または業務マスタ16のデータの入力項目チェックを行うか否かを示す情報である。暗号化機能要否は,電文または業務マスタ16のデータの暗号化を行うか否かを示す情報である。
レイアウト変換テーブル34は,レイアウト変換対象のデータ構成情報を管理するテーブルである。レイアウト種別,レイアウト区分,レイアウトハッシュ値,外部領域数,変換区分,外部内部変換領域ID,内部外部変換領域ID,初期値,外部領域位置,外部領域サイズ,領域繰返し数などの情報から構成される。
レイアウト種別は,レイアウトを特定する情報である。レイアウト区分は,そのレイアウトが何に関するレイアウトなのかを示す情報である。レイアウト区分は,本実施の形態では,レイアウト区分の値に応じて,
1:電文,
2:業務マスタ,
3:作業域,
4:電文(圧縮済み),
となっている。レイアウト区分=4の場合には,入力電文のデータが圧縮されているので,非圧縮後にレイアウト変換を行う。
レイアウトハッシュ値は,内部形式に変換されたリソース(電文等)の管理に必要となる情報である。レイアウトハッシュ値の詳細は後述する。外部領域数は,外部形式のデータの項目の種類数を示す情報である。以下の情報は,データの項目ごとの情報となる。
変換区分は,レイアウト変換時にその項目のデータを転送(コピー)するのか別に固定値を設定するのかなどを指定する情報である。外部内部変換領域IDは,外部形式から内部形式にレイアウト変換を行う場合に,内部形式のデータに設定するアイテム種別を示す情報である。内部外部変換領域IDは,内部形式から外部形式にレイアウト変換を行う場合に,外部形式のデータとして設定する内部形式のデータのアイテム種別を示す情報である。初期値は,その項目に初期値として設定する値の情報である。外部領域位置は,その項目の外部領域での位置を示す情報である。外部領域サイズは,その項目の外部領域でのサイズを示す情報である。領域繰返し数は,その項目のデータの数を示す情報である。
アイテム管理テーブル35は,内部形式に変換されるデータの項目を示すアイテムのデータ構成情報を管理するテーブルである。レイアウト種別,アイテム種別,領域条件(暗号化要否など),領域属性,領域サイズ,コードチェック条件,相関チェック条件などの情報から構成される。
レイアウト種別は,そのアイテムが変換されるときのレイアウトを特定する情報である。アイテム種別は,個々のアイテムをユニークに識別する識別情報である。領域条件は,そのアイテムのアイテム値(データ)の暗号化の要否等を指定する情報である。領域条件は,本実施の形態では領域条件の値に応じて,
1:暗号化項目(内部形式へのレイアウト変換時に暗号化する),
2:暗号化項目(暗号化済み),
0:暗号化の対象外,
となっている。領域条件=1,2の場合,個別業務アプリ10から参照要求があったときには該当アイテムを復号化して引き渡す。また,個別業務アプリ10からの更新要求があったときには該当アイテムを暗号化して内部形式データ記憶部21に格納する。この領域条件により,例えば個人情報のような場合,メモリ上の内部領域を含め,暗号化し,個別業務アプリ10が処理するときにだけ復号する。
クライアント40/他システム41が非暗号化で,領域条件=1のケースでは,電文(非暗号化状態),内部形式のデータ(暗号化状態),個別業務アプリ10のアクセスデータ(非暗号化状態),業務マスタ16のデータ(暗号化状態)となる。
クライアント40/他システム41が暗号化で,領域条件=2のケースでは,電文(暗号状態),内部形式のデータ(暗号化状態),個別業務アプリ10のアクセスデータ(非暗号化状態),業務マスタ16のデータ(暗号化状態)となる。
領域属性は,アイテムの属性(文字,数値など)を示す情報である。領域サイズは,内部形式でのアイテムの領域のサイズを示す情報である。コードチェック条件は,アクション管理テーブル33において入力項目チェック要となっている場合に,入力項目のコードが正しい範囲内のものになっているかどうかをチェックする条件を示す情報である。後述する条件設定テーブル36の一つをポイントする。また,相関チェック条件は,アクション管理テーブル33において入力項目チェック要となっている場合に,入力項目が他の項目との関係で正しいかどうかをチェックする条件を示す情報である。後述する条件設定テーブル36の一つをポイントする。コードチェック条件または相関チェック条件として,条件設定テーブル36が指定されている場合,その条件設定テーブル36を使用して入力項目チェックが行われる。
条件設定テーブル36は,検索の条件やソートの条件および前述した入力項目チェックの条件を設定するテーブルであり,条件設定ID,条件区分,レイアウト種別,アイテム種別,アイテム値,比較条件,チェック方法,連結条件(AND,OR),次条件設定IDなどの情報から構成される。
条件設定IDは,各条件設定を一意に識別する情報である。条件区分は,設定された条件が何の条件(検索条件やソート条件など)であるかを示す情報である。レイアウト種別は,条件として指定されたレイアウト種別を示す情報である。アイテム種別は,条件として指定されたアイテム種別を示す情報である。アイテム値は,条件として指定されたアイテムの値を示す情報である。比較条件は,例えば=,≠,<,≦,>,≧など,アイテム値をどのように比較するかを示す情報である。
チェック方法は,例えば相関チェック条件に従った入力項目チェックのために,専用のチェックプログラムを利用する必要があるような場合に,そのチェックプログラムを呼び出すためのプログラムを指定する情報である。連結条件は,複数の条件設定テーブル36で条件を指定する場合に,他の条件設定テーブル36とどのように連結されるか(AND条件,OR条件かなど)を示す情報である。次条件設定IDは,他の条件設定テーブル36と連結される場合に,連結先となる条件設定テーブル36の条件設定IDを指定する情報である。
図4は,リソース入力時のレイアウト変換の例を説明する図である。電文などのリソースは,外部形式のデータであり,データ管理部品モジュール20によって,内部形式のデータにレイアウト変換され,内部形式データ記憶部21に記憶される。
図5は,内部形式のデータの構成の例を示す図である。ここで,図5を用いて,図4に示されている各データの構成の例を説明しておく。図5(A)はリソースハッシュテーブル210の構成例を示し,図5(B)はリソース情報211の構成例を示し,図5(C)はリソースID212の構成例を示す。また,図5(D)はアイテムハッシュテーブル213の構成例を示し,図5(E)はアイテム情報214の構成例を示し,図5(F)はアイテムID215の構成例を示す。
図5(A)に示すように,リソースハッシュテーブル210では,エントリごとに,件数,ポインタの情報が記録される。件数は,そのエントリに属するリソースの件数である。ポインタは,そのエントリに属するリソースのうち,先頭のリソース情報211の領域へのポインタである。件数の初期値は0であり,ポインタの初期値はnullである。リソース情報211をリソースハッシュテーブル210のどのエントリに接続するかは,レイアウトハッシュ値によって決める。本実施の形態におけるレイアウトハッシュ値は,あるキーとなる情報からランダムに定める値ではなく,予めレイアウト種別ごとにシステム開発者または管理者が決める値であり,リソースハッシュテーブル210の何番目のエントリであるかを示すエントリ番号(No.)である。
リソースハッシュテーブル210の使用により,各リソースへのアクセス性能のバラツキをなくすことができる。また,レイアウト変換テーブル34におけるレイアウトハッシュ値を変更することで,プログラムの改修を行わずに,リソースハッシュテーブル210配下の資源分散を行うことが可能となる。
リソース情報211は,図5(B)に示すように,リソースID212,次ポインタ,下位ポインタの情報から構成される。リソースID212は,そのリソースを一意に識別する識別情報である。次ポインタは,そのリソースの次にリソースハッシュテーブル210の同じエントリに属することになったリソースのリソース情報211の領域へのポインタである。下位ポインタは,そのリソースに属するアイテムを管理するためのアイテムハッシュテーブル213の領域へのポインタである。そのリソースの後にリソースハッシュテーブル210の同じエントリに属するリソースがまだ入力されていない場合には,次ポインタはnullとなる。
リソースID212は,図5(C)に示すように,レイアウト種別,リソース通番,レイアウトハッシュ値の情報から構成される。レイアウト種別は,そのリソースのレイアウト種別である。リソース通番は,リソースハッシュテーブル210内で一意の値である。ここでは,入力された順に1,2,... とリソース通番を設定するものとする。レイアウトハッシュ値は,レイアウト種別をもとにレイアウト変換テーブル34から得られる値である。リソースID212にレイアウトハッシュ値を持たせることにより,個別業務アプリ10がテーブルを参照せずに各アイテムにアクセスすることを可能とする。
図5(D)に示すように,アイテムハッシュテーブル213では,エントリごとに,件数,ポインタの情報が記録される。件数は,そのエントリに属するアイテムの件数である。ポインタは,そのエントリに属する先頭のアイテム情報214の領域へのポインタである。アイテム情報214を,アイテムハッシュテーブル213におけるどのエントリに接続するかは,アイテムハッシュ値によって決められる。アイテムハッシュ値は,アイテム種別から予め定められた計算式によって算出される。アイテムハッシュテーブル213の使用により,各アイテムへのアクセス性能のバラツキをなくすことができる。
アイテム情報214は,図5(E)に示すように,アイテムID215,アイテム値,次ポインタの情報から構成される。アイテムID215は,そのアイテムを一意に識別する識別情報である。アイテム値は,そのアイテムの持つ実際のデータ値である。次ポインタは,そのアイテムの次にアイテムハッシュテーブル213の同じエントリに属することになったアイテム情報214の領域へのポインタである。そのアイテムの後にアイテムハッシュテーブル213の同じエントリに属するアイテムがない場合には,次ポインタはnullとなる。
アイテムID215は,図5(F)に示すように,レイアウト種別,リソース通番,レイアウトハッシュ値,アイテム種別,アイテム通番,領域条件の情報から構成される。レイアウト種別は,そのアイテムが属するリソースのレイアウト種別である。リソース通番は,そのアイテムが属するリソースのリソース通番である。レイアウトハッシュ値は,そのアイテムが属するリソースのレイアウトハッシュ値である。アイテム種別は,そのアイテムの項目名などの種別である。アイテム通番は,アイテムハッシュテーブル213内で各アイテムに一意に付与される番号である。領域条件は,そのアイテムに設定された暗号化要否等の情報である。
以下,図5に示すような各データの構成を踏まえて,図4に示すリソース入力時のレイアウト変換の例を説明する。
図4において,リソース(1),(2),(3)は,レイアウト種別Aのデータであり,アイテム種別A,B,C,Dのアイテムからなる。リソース(4)は,レイアウト種別Bのデータであり,アイテム種別A,Eのアイテムからなる。リソース(5),(6)は,レイアウト種別Cのデータであり,アイテム種別F,G,Hのアイテムからなる。
データ管理部品モジュール20は,その起動時に,予めリソースハッシュテーブル210の領域を動的に確保し,初期化しておく。リソースハッシュテーブル210の領域は,レイアウト変換テーブル34の各レコードのリソースハッシュ値の最大値分の領域を確保する。ここでは,エントリ1〜4の領域が確保されている。
最初にリソース(1)が入力されると,そのリソース(1)のリソース情報211の領域が動的に確保される。リソース(1)のレイアウト種別はAであるので,そのレイアウト種別Aでレイアウト変換テーブル34を検索し,レイアウトハッシュ値を取得する。取得されたレイアウトハッシュ値に該当するリソースハッシュテーブル210のエントリが1であるものとすると,エントリ1のポインタ部に,確保されたリソース(1)のリソース情報211の領域のアドレスが設定され,エントリ1の件数がインクリメント(0→1)される。また,リソース通番のインクリメント(0→1)が行われ,そのリソース通番とレイアウト種別とレイアウトハッシュ値とからリソース(1)のリソースID212が作成される。作成されたリソースID212は,リソース(1)のリソース情報211に設定される。なお,リソース(1)のリソース情報211の次ポインタは,この時点で初期値(null)である。
本実施の形態では,アイテムハッシュテーブル213とアイテム情報214の格納領域は,連続領域として動的に確保する。そこで,レイアウト変換テーブル34と各アイテム管理テーブル35とから,アイテムハッシュテーブル213と全アイテム情報214との格納領域のサイズを計算し,メモリから動的に領域を確保する。リソース(1)の場合には,アイテムハッシュテーブル213としてエントリ1〜3の領域が確保され,エントリ1に属するアイテム情報214の領域としてアイテム種別Aの領域が,エントリ2に属するアイテム情報214の領域としてアイテム種別B,Dの領域が,エントリ3に属するアイテム情報214の領域としてアイテム種別Cの領域が確保される。
アイテムハッシュテーブル213の各エントリのポインタに,それぞれ先頭のアイテム情報214の領域のアドレスが設定され,アイテム種別Bのアイテム情報214の次ポインタに,アイテム種別Dのアイテム情報214の領域のアドレスが設定される。アイテムハッシュテーブル213の各エントリの件数に,それぞれ属するアイテムの件数が設定される。また,リソース(1)のリソース情報211の下位ポインタに,確保されたアイテムハッシュテーブル213の領域のアドレスが設定される。
リソース(1)のリソースID212,レイアウト変換テーブル34,アイテム管理テーブル35をもとに,各アイテム情報214にアイテムID215が設定される。また,リソース(1)の各アイテムの値(データ)が,各アイテム情報214のアイテム値に設定される。
次にリソース(2)が入力されると,そのリソース(2)のリソース情報211の領域が動的に確保される。リソース(2)のレイアウト種別はAであるので,リソース(1)と同じリソースハッシュテーブル210のエントリ1に属することになる。リソースハッシュテーブル210のエントリ1のポインタにはすでにリソース(1)のリソース情報211の領域のアドレスが設定されているので,リソース(1)のリソース情報211の次ポインタに,リソース(2)のリソース情報211の領域のアドレスが設定される。リソースハッシュテーブル210のエントリ1の件数がインクリメント(1→2)される。また,リソース通番がインクリメント(1→2)され,リソース(2)のリソースID212のリソース通番は2となる。リソース(1)の場合と同様に,アイテムに関する処理を行う。
次にリソース(4)が入力されると,そのリソース(4)のリソース情報211の領域が動的に確保される。リソース(4)のレイアウト種別はBであるので,そのレイアウト種別Bでレイアウト変換テーブル34を検索し,レイアウトハッシュ値を取得する。取得されたレイアウトハッシュ値に該当するリソースハッシュテーブル210のエントリが3であるものとすると,エントリ3のポインタに,確保されたリソース(4)のリソース情報211の領域のアドレスが設定され,エントリ3の件数がインクリメント(0→1)される。また,リソース通番がインクリメント(2→3)され,リソース(4)のリソースID212のリソース通番は3となる。リソース(1)の場合と同様に,アイテムに関する処理を行う。
次にリソース(3)が入力されると,そのリソース(3)のリソース情報211の領域が動的に確保される。リソース(3)のレイアウト種別はAであるので,リソース(1)と同じリソースハッシュテーブル210のエントリ1に属することになる。リソースハッシュテーブル210のエントリ1のポインタにはすでにリソース(1)のリソース情報211の領域のアドレスが設定されているので,リソース(2)のリソース情報211の次ポインタに,リソース(3)のリソース情報211の領域のアドレスが設定される。リソースハッシュテーブル210のエントリ1の件数がインクリメント(2→3)される。また,リソース通番がインクリメント(3→4)され,リソース(3)のリソースID212のリソース通番は4となる。リソース(1)の場合と同様に,アイテムに関する処理を行う。
次にリソース(5)が入力されると,そのリソース(5)のリソース情報211の領域が動的に確保される。リソース(5)のレイアウト種別はCであるので,そのレイアウト種別Cでレイアウト変換テーブル34を検索し,レイアウトハッシュ値を取得する。ここで,取得されたレイアウトハッシュ値に該当するリソースハッシュテーブル210のエントリが,レイアウト種別がBであるリソース(4)と同じ3であるものとする。リソースハッシュテーブル210のエントリ3のポインタにはすでにリソース(4)のリソース情報211の領域のアドレスが設定されているので,リソース(4)のリソース情報211の次ポインタに,リソース(5)のリソース情報211の領域のアドレスが設定される。リソースハッシュテーブル210のエントリ3の件数がインクリメント(1→2)される。また,リソース通番がインクリメント(4→5)され,リソース(5)のリソースID212のリソース通番は5となる。リソース(1)の場合と同様に,アイテムに関する処理を行う。
次にリソース(6)が入力されると,そのリソース(6)のリソース情報211の領域が動的に確保される。リソース(6)のレイアウト種別はCであるので,リソース(5)と同じリソースハッシュテーブル210のエントリ3に属することになる。リソースハッシュテーブル210のエントリ3のポインタにはすでにリソース(4)のリソース情報211の領域のアドレスが設定されているので,リソース(5)のリソース情報211の次ポインタに,リソース(6)のリソース情報211の領域のアドレスが設定される。リソースハッシュテーブル210のエントリ3の件数がインクリメント(2→3)される。また,リソース通番がインクリメント(5→6)され,リソース(6)のリソースID212のリソース通番は6となる。リソース(1)の場合と同様に,アイテムに関する処理を行う。
以上の処理により,図4に示すように,外部形式のデータがデータ管理部品モジュール20によって内部形式のデータにレイアウト変換され,内部形式データ記憶部21に記憶される。図4の例では,リソースハッシュテーブル210,アイテムハッシュテーブル213を用いることにより,アクセス性能のバラツキをなくしている。
図6は,運転管理部23が行う運転管理処理フローチャートである。図6の運転管理処理は,レイアウト変換処理のための準備を行う処理であり,データ管理部品モジュール20の初回起動時に実行される。
運転管理部23は,ナビゲーションテーブル記憶部30のナビゲーションテーブル(電文管理テーブル31,業務マスタ管理テーブル32,アクション管理テーブル33,レイアウト変換テーブル34,アイテム管理テーブル35,条件設定テーブル36)を,メモリに展開する(ステップS10)。
次に,レイアウト変換テーブル34からレイアウトハッシュ値の最大値を取得し(ステップS11),取得した最大値分のリソースハッシュテーブル210の領域を動的に確保する(ステップS12)。確保したリソースハッシュテーブル210の領域を初期化し(ステップS13),処理を終了する。
図7は,レイアウト変換部22が行うレイアウト変換処理フローチャートである。図7のレイアウト変換処理は,入力された外部形式のデータであるリソースを,内部形式のデータに展開する処理の例である。なお,ここでは説明を簡単にするために,暗号化/復号化変換の処理,圧縮/非圧縮変換の処理,入力項目チェックの処理は省略している。電文についてのレイアウト変換の例を説明するが,業務マスタ16のデータのレイアウト変換も同様である。
レイアウト変換部22は,入力されたリソースの電文IDで電文管理テーブル31を検索し,アクションIDを取得する(ステップS20)。取得したアクションIDでアクション管理テーブル33を検索し,レイアウト種別を取得する(ステップS21)。取得したレイアウト種別でレイアウト変換テーブル34を検索し,該当するレイアウト変換テーブル34を抽出する(ステップS22)。リソース情報211の領域を動的に確保する(ステップS23)。
ステップS22で抽出されたレイアウト変換テーブル34に保持されたレイアウトハッシュ値に該当するリソースハッシュテーブル210のエントリのポインタがnullであれば(ステップS24),ステップS23で動的に確保されたリソース情報211の領域のアドレスを該当エントリのポインタに設定する(ステップS25)。
ステップS22で抽出されたレイアウト変換テーブル34に保持されたレイアウトハッシュ値に該当するリソースハッシュテーブル210のエントリのポインタがnullでなければ(ステップS24),エントリのポインタからリンクを追い,最終のリソース情報211の次ポインタに,ステップS23で動的に確保されたリソース情報211の領域のアドレスを設定する(ステップS26)。
アイテムハッシュテーブル213とアイテム情報214の格納領域のサイズを計算し,アイテムハッシュテーブル213とアイテム情報214の格納領域を動的に確保する(ステップS27)。
ステップS22で抽出されたレイアウト変換テーブル34の情報をリソース情報211の領域に設定し,リソース情報211を編集する(ステップS28)。リソース通番をインクリメントし,リソース情報211の領域に設定し,リソース情報211を編集する(ステップS29)。アイテムハッシュテーブル213の領域のアドレスを,リソース情報211の領域に設定し,リソース情報211を編集する(ステップS30)。
アイテムハッシュテーブル213の各エントリのポインタに,それぞれ属するアイテムのアイテム情報214の領域のアドレスを設定する(ステップS31)。このとき,複数のアイテムが同じエントリに属する場合には,アイテム情報214の次ポインタを用いてつないでいく。ステップS22で抽出されたレイアウト変換テーブル34を参照し,入力されたリソースの値を切り出して,各アイテム情報214に設定する(ステップS32)。リソースハッシュテーブル210の該当リソースが属するエントリの件数をインクリメントする(ステップS33)。
なお,ここでは説明を簡単化したが,実際にはステップ32のリソースの値を切り出す処理において,アクション管理テーブル33および各アイテム管理テーブル35の設定情報に従って,必要であれば,入力項目チェック部25の呼び出し,圧縮/非圧縮変換部26の呼び出し,暗号化/復号化変換部27の呼び出しを行い,アイテム情報214に設定するアイテム値について,入力項目チェックの処理,非圧縮の処理,暗号化の処理などを行う。また,ログ編集部24は,随時,トラブル解析等に有用な情報をログ情報として編集し出力する処理を行う。
図8,図9は,外部形式のデータから内部形式のデータへのレイアウト変換を説明する図である。図8は,レイアウト変換テーブル34,アイテム管理テーブル35の具体例を示し,図9は,図8のテーブルに従って,外部形式のデータ(レイアウト固定)を内部形式のデータ(レイアウト可変)に変換する例を示す。ここでは,電文を内部形式のデータに変換する例を説明する。
図8(A)は,単純転送を示すレイアウト変換テーブル34,アイテム管理テーブル35である。単純転送では,外部形式の領域から内部形式の領域にそのままデータ値を複写する。図8(A)のレイアウト変換テーブル34とアイテム管理テーブル35とにより,図9に示すように,A項目の値“AA”が,内部形式のアイテム種別“R00A”のアイテム値に複写される。
図8(B)は,繰返し転送を示すレイアウト変換テーブル34,アイテム管理テーブル35である。繰返し転送では,複数データの項目を外部形式の領域から内部形式の領域に設定する。図8(B)のレイアウト変換テーブル34では,領域繰返し数として3が設定されている。そのため,図8(B)のレイアウト変換テーブル34とアイテム管理テーブル35とにより,図9に示すように,B項目−1,B項目−2,B項目−3のそれぞれの値“100”,“200”,“300”が,内部形式の3つのアイテム種別“R00B”のアイテム値に,繰返し設定される。
図8(C)は,固定値設定を示すレイアウト変換テーブル34,アイテム管理テーブル35である。固定値設定では,固定値を内部形式の領域に設定する。図8(C)のレイアウト変換テーブル34では,変換区分が2(固定値設定)に設定され,初期値として“1234”が設定されている。図9の外部形式のデータに示すように,C項目はダミーエントリとなっている。すなわち,外部領域サイズが0であり,実際には存在しない。しかし,内部形式では,個別業務アプリ10の処理において,例えば互換性や共通化のために必要とするため,図8(C)のレイアウト変換テーブル34とアイテム管理テーブル35とにより,図9に示すように,内部形式のアイテム種別“R00C”のアイテム値に,固定値として,任意の値の“1234”を設定できるようにしている。
図8(D)は,領域切り捨てを示すレイアウト変換テーブル34,アイテム管理テーブル35である。領域切り捨てでは,内部形式の領域サイズに合わせて外部形式のデータを切り捨てて設定する。図8(D)のレイアウト変換テーブル34では,外部領域サイズが3となっている。これに対して図8(D)のアイテム管理テーブル35では,領域サイズが2となっている。図8(D)のレイアウト変換テーブル34とアイテム管理テーブル35とにより,図9に示すように,D項目の値“BBB”が内部形式の領域サイズ2に合わせて切り捨てられ,アイテム種別“R00D”のアイテム値に“BB”として設定される。
図8(E)は,暗号化項目を示すレイアウト変換テーブル34,アイテム管理テーブル35である。暗号化項目では,内部形式の領域への設定時に暗号化を行う。図8(E)のアイテム管理テーブル35では,領域条件が1(内部変換時に暗号化)となっている。図8(E)のレイアウト変換テーブル34とアイテム管理テーブル35とにより,図9に示すように,E項目の値“123456”が暗号化され,アイテム種別“R00E”のアイテム値に“XXXXXX”として設定される。
図10,図11は,内部形式のデータから外部形式のデータへのレイアウト変換を説明する図である。図10は,レイアウト変換テーブル34,アイテム管理テーブル35の具体例を示し,図11は,図10のテーブルに従って,内部形式のデータ(レイアウト可変)を外部形式のデータ(レイアウト固定)に変換する例を示す。ここでは,内部形式のデータを外部形式である業務マスタ16のレコードに変換する例を説明する。
図10(A)は,単純転送を示すレイアウト変換テーブル34,アイテム管理テーブル35である。単純転送では,内部形式の領域から外部形式の領域にそのままデータ値を複写する。図10(A)のレイアウト変換テーブル34,アイテム管理テーブル35により,図11に示すように,アイテム種別“R00A”のアイテム値“AA”が,外部形式のA項目に複写される。
図10(B)は,繰返し転送を示すレイアウト変換テーブル34,アイテム管理テーブル35である。繰返し転送では,複数データのアイテム種別を内部形式の領域から外部形式の領域に設定する。図10(B)のレイアウト変換テーブル34では,領域繰返し数として3が設定されている。そのため,図10(B)のレイアウト変換テーブル34,アイテム管理テーブル35により,図11に示すように,3つのアイテム種別“R00B”のアイテム値“100”,“200”,“300”が,それぞれ外部形式のB項目−1,B項目−2,B項目−3に繰返し設定される。
図10(C)は,固定値設定を示すレイアウト変換テーブル34,アイテム管理テーブル35である。内部形式の領域への設定時に固定値設定を行った場合には,外部形式の領域への設定は行わない。図10(C)のレイアウト変換テーブル34では,変換区分が2(固定値設定)に設定されている。そのため,図10(C)のレイアウト変換テーブル34,アイテム管理テーブル35により,図11に示すように,外部形式のデータでは,C項目はダミーエントリとなる。
図10(D)は,内部変換時と異なる領域を示すレイアウト変換テーブル34,アイテム管理テーブル35である。内部変換時と異なる領域では,アイテム種別を変えて外部形式の領域に設定する。図10(D)のレイアウト変換テーブル34では,外部内部変換領域IDが“R00D”であるのに対し,内部外部変換領域IDが“R00A”となっている。図10(D)のレイアウト変換テーブル34,アイテム管理テーブル35により,図11に示すように,アイテム種別“R00D”のアイテム値“BB”ではなく,アイテム種別“R00A”のアイテム値“AA”が,外部形式のD項目に設定される。
図10(E)は,暗号化項目を示すレイアウト変換テーブル34,アイテム管理テーブル35である。アイテム管理テーブル35の領域条件の値が1または2の暗号化項目の場合,内部形式の領域では暗号化済みのアイテム値を保持する。したがって,アイテム種別“R00E”のアイテム値は,すでに暗号済みの状態であるので,図10(D)のレイアウト変換テーブル34,アイテム管理テーブル35により,図11に示すように,アイテム種別“R00E”のアイテム値“XXXXXX”が,外部形式のE項目に設定される。なお,領域条件の値が2の暗号化項目は,外部形式において暗号化された値が保持されることを示す。
図12は,個別業務アプリと内部形式のデータとの関連を説明する図である。ここでは,入力電文,業務マスタ16,出力電文のそれぞれについて,個別業務アプリ10が内部形式のデータをどのように扱うかを説明する。個別業務アプリ10の入出力インタフェースは,リソースID212を用いてデータへのアクセスを行う。このため,個別業務アプリ10は,電文や業務マスタ16のレイアウトを意識したコーディングが不要となる。
まず,入力電文について説明する。入力電文があると,個別業務アプリ10の主プロセス11は,電文取込機能により,データ管理部品モジュール20を用いて,入力電文を内部形式に変換する(手順a)。これにより,例えば図12の内部形式データ記憶部21に示すように,リソースハッシュテーブル210のエントリ1配下に,入力電文が内部形式で展開されることになる。
主プロセス11は,内部形式に変換された入力電文を処理するために,入力電文の種類に応じたサブプロセス12の呼び出しを行う(手順b)。個別業務アプリ10のサブプロセス12は,リソース検索機能により,入力電文のリソースID212を検索する(手順c)。入力電文を特定する検索条件を指定することにより,入力電文のリソースID212を取得することができる。また,サブプロセス12は,リソース参照機能とアイテム参照機能により,入力電文のアイテムAを参照する(手順d)。アイテム参照機能では,入力電文のアイテムAのアイテムID215を指定することにより,そのアイテムのアイテム値を得ることができる。
次に,業務マスタ16のアクセスについて説明する。サブプロセス12は,アクセス部品15を用い,アイテムAのアイテム値をキーに業務マスタ16を参照する(手順e)。ここでは,アイテムAのアイテム値を含む業務マスタ16のリソースが検出されたものとする。サブプロセス12は,業務マスタ取込機能により,業務マスタ16を内部形式に変換する(手順f)。この例では,図12の内部形式データ記憶部21に示すように,リソースハッシュテーブル210のエントリ3配下に,業務マスタ16が内部形式で展開されるものとする。
次に,出力電文について説明する。サブプロセス12は,リソース作成機能により,出力電文のリソースを作成する(手順g)。この例では,図12の内部形式データ記憶部21に示すように,リソースハッシュテーブル210のエントリ4配下に,出力電文のリソースが内部形式で作成されている。リソース作成時のアイテム情報は,初期値となる。サブプロセス12は,アイテム更新機能により,出力電文のアイテムを更新する(手順h))。このとき,アイテムID215で更新するアイテムを指定し,該当するアイテムのアイテム情報のアイテム値を更新する。
サブプロセス12から主プロセスに戻る(手順i)。主プロセス11は,電文編集機能により,出力電文を外部形式に変換する(手順j)。このとき,出力電文のリソースID212で内部形式のデータを指定し,外部形式のデータに変換する。
図13は,個別業務アプリが利用可能なデータ管理部品モジュール20の機能を説明する図である。個別業務アプリ10は,共通部品群29を用いることにより,図13に示すような様々なデータ管理部品モジュール20が提供する機能を利用することができる。これらの「機能」は,関数,サブルーチンもしくはマクロ命令と読み替えてもよい。例えば,電文取込機能は,電文取込関数と読み替えることができ,個別業務アプリ10が電文取込関数を発行することにより,データ管理部品モジュール20内の電文取込プログラムが電文取込の処理を実現するようになっている。
図13に示すように,データ管理部品モジュール20による外部内部変換としては,電文取込機能,業務マスタ取込機能がある。電文取込機能は,電文領域のデータをサーバの内部形式にレイアウト変換し,リソースID212を返却する機能である。業務ID,電文ID,電文領域を入力パラメータとし,リソースID212を返却値とする。業務マスタ取込機能は,業務マスタ領域のデータをサーバの内部形式にレイアウト変換し,リソースID212を返却する。業務マスタID,DBアクセスID,業務マスタ領域を入力パラメータとし,リソースID212を返却値とする。
内部外部変換としては,電文編集機能,業務マスタ編集機能がある。電文編集機能は,電文領域のデータを外部形式にレイアウト変換し,電文領域を返却する機能である。リソースID212を入力パラメータとし,業務ID,電文ID,電文領域を返却値とする。業務マスタ編集機能は,業務マスタ領域のデータを外部形式にレイアウト変換し,業務マスタ領域を返却する機能である。リソースID212を入力パラメータとし,業務マスタID,DBアクセスID,業務マスタ領域を返却値とする。
検索機能としては,リソース検索機能がある。リソース検索機能は,検索条件に該当するリソースを,ソート条件の順序で検索する機能である。ソート条件は任意であり,ソート条件が指定されていれば,検索結果のリソースID212をソート条件の順序で出力する。検索条件,ソート条件を入力パラメータとし,1または複数のリソースID212を返却値とする。
参照機能としては,リソース参照機能,アイテム参照機能がある。リソース参照機能は,指定されたリソース配下のアイテムを参照する機能である。リソースID212を入力パラメータとし,リソース配下のアイテムID215,アイテム値を返却値とする。アイテム参照機能は,指定されたアイテムのアイテム値を参照する機能である。アイテムID215を入力パラメータとし,アイテム値を返却値とする。
更新機能としては,リソース作成機能,リソース複写機能,アイテム更新機能がある。リソース作成機能は,リソース通番を払出し,新規にリソースを作成する機能である。このとき,作成されるリソース配下の各アイテムは,初期値で作成される。レイアウト種別を入力パラメータとし,リソースID212を返却値とする。リソース複写機能は,複写元のリソースから複写先のリソースに,各アイテムを複写する機能である。複写元のリソースID212,複写先のリソースID212を入力パラメータとする。アイテム更新機能は,指定されたアイテムの作成や更新を行う機能である。アイテムID215,アイテム値を入力パラメータとする。
削除機能としては,リソース削除機能,アイテム削除機能がある。リソース削除機能は,検索条件に該当するリソースを削除する機能である。検索条件を入力パラメータとし,削除したリソースID212を返却値とする。アイテム削除機能は,指定されたアイテムを削除する機能である。アイテムID215を入力パラメータとする。
条件設定としては,条件設定機能,条件解除機能がある。条件設定機能は,検索条件またはソート条件を設定する機能である。条件区分,条件設定値を入力パラメータとし,条件設定IDを返却値とする。条件区分は,検索条件であるかソート条件であるかの区分を示す。条件解除機能は,設定済みの検索条件またはソート条件を解除する機能である。条件設定IDを入力パラメータとする。
図14は,条件設定機能による検索条件の例を示す図である。ここでは,図13に示す条件設定機能を用いて検索条件を設定する例を説明する。検索条件は,条件設定テーブル36(図3参照)に設定される。なお,図14の例では,条件設定ID,条件区分,レイアウト種別,チェック方法の情報は省略されており,次条件設定IDは,次ポインタとして示している。
図14(a)は,アイテム種別Aのアイテム値が10以上かつ20未満であるリソースを対象とする検索条件の例である。(a1)の条件設定テーブル36では,アイテム種別がA,アイテム値が10,比較条件が≧(〜以上)であることから,アイテム種別Aのアイテム値が10以上という条件が示されている。また,(a1)の条件設定テーブル36の次ポインタで指定された(a2)の条件設定テーブル36では,アイテム種別がA,アイテム値が20,比較条件が<(〜未満)であることから,アイテム種別Aのアイテム値が20未満という条件が示されている。
(a1)の条件設定テーブル36の連結条件がAND条件であることから,(a1)の条件設定テーブル36と,(a2)の条件設定テーブル36とがAND条件で連結されていることがわかる。したがって,これらの2つの条件設定テーブル36のAND条件から,アイテム種別Aのアイテム値が10以上,かつ,20未満という条件が設定されていることになる。
図14(b)は,アイテム種別Bのアイテム値が30またはアイテム種別Cのアイテム値が40であるリソースを対象とする検索条件の例である。(b1)の条件設定テーブル36では,アイテム種別がB,アイテム値が30,比較条件が=であることから,アイテム種別Bのアイテム値が30という条件が示されている。また,(b1)の条件設定テーブル36の次ポインタで指定された(b2)の条件設定テーブル36では,アイテム種別がC,アイテム値が40,比較条件が=であることから,アイテム種別Cのアイテム値が40という条件が示されている。
(b1)の条件設定テーブル36の連結条件がOR条件であることから,(b1)の条件設定テーブル36と(b2)の条件設定テーブル36とがOR条件で連結されていることがわかる。したがって,これらの2つの条件設定テーブル36のOR条件から,アイテム種別Bのアイテム値が30,または,アイテム種別Cのアイテム値が40という条件が設定されていることになる。