XMLデータ仕様記述の概要
ビジネスアプリケーションでは、データ項目に対して値の範囲や形式について仕様を決めて、実行時に仕様を満たしているかどうかのチェックを行います。また、データ項目へのデフォルト値の設定や、データ項目間で値の転記、変換などの処理を行います。このようなデータ項目に対する処理は、ビジネスアプリケーションの中でかなりの部分を占めています。
XMLデータ仕様記述は、データ項目の仕様をXML形式で記述して、その記述をそのままの形で実行する機能です。データ項目の処理をJavaプログラムで記述する代わりに、XMLデータ仕様記述のXMLを作成します。
XMLデータ仕様記述は、データBeanの項目(プロパティ)のチェックや、項目間の転記の仕様として作成します。通常のデータBeanの他、XMLデータBean(com.fujitsu.uji.xml.XmlDataBean)やHashMap(java.util.HashMap)に対しても利用可能です。
XMLデータ仕様記述を利用することによって、次のような効果があります。
データのチェック処理を、プログラムするのではなく、データ仕様を定義するような方法で作成できます。プログラムで記述するのに比べて明解で、作成時の誤りを軽減し、保守時の見直しを容易にします。
XMLデータ仕様記述を外付けのファイルからインタプリタ形式で実行することによって、データ項目の仕様変更が発生した時に、プログラムを変更することなくXMLデータ仕様記述を入れ替えるだけで対応できます。
利用者定義メソッドを作成することにより、機能のカスタマイズが容易にできます。
記述形式がXMLであるため、ツール等との連携が容易です。例えば、EXCELシートからXMLデータ仕様記述を作成することができます。
XMLデータ仕様記述をJavaソースに変換するコンパイラを利用できます。
図11.1 XMLデータ仕様記述の概要図
1) XMLデータ仕様記述
各データ項目について、データの範囲、文字列パターンのマッチングなどのデータ仕様をXML形式で記述します。このXMLファイルを「XMLデータ仕様記述」と呼びます。 XMLデータ仕様記述は、インタープリタ機能を使用してそのまま実行するか、または、コンパイラ機能を使用してJavaソースに変換して実行します。
2) XMLデータ仕様記述コンパイラ
XMLデータ仕様記述コンパイラは、XMLデータ仕様記述をJavaのクラスに変換します。XMLデータ仕様記述コンパイラを利用すると、アプリケーション実行時にXMLを解析する必要がなくなるため、XMLデータ仕様記述をそのままインタープリタで実行するよりも実行性能を向上することができます。
3) XMLデータ仕様記述実行系
作成したXMLデータ仕様記述を実行します。データBeanなどに対して、XMLデータ仕様記述に書かれた項目チェックや項目間転記の操作を行います。
XMLデータ仕様記述の使用例
以下では、インタプリタを利用した単純な範囲チェックの例を説明します。記述方法の詳細やエラー処理の方法は次節以降で説明します。
XMLデータ仕様記述
<?xml version="1.0" encoding="Shift_JIS" ?> <eSpec xmlns=http://interstage.fujitsu.com/schemas/uji/eSpec xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/eSpec http://interstage.fujitsu.com/schemas/uji/espec.xsd"> <config> <version>6.0</version> </config> <specification name="sampleCheck" > <section name="sect1" > <!-- プロパティsampleNumberが0以上10以下であることをチェックします --> <verify property="sampleNumber" op="GE" operand="#0" exception="#ERR01" info="#0以上" /> <verify property="sampleNumber" op="LE" operand="#10" exception="#ERR01" info="#10以下" /> </section> </specification> </eSpec>
eSpec
このXMLがXMLデータ仕様記述であることを表します。
config
XMLデータ仕様記述の情報を表します。
version
XMLデータ仕様記述のバージョンです。"6.0"と指定します。
specification
一組のデータ仕様を表します。データ仕様はいくつかのセクションで表現されます。ここでは、データ仕様の名前を"sampleCheck"としています。
section
データ仕様のセクションを表します。セクション内に個々のデータ仕様を記述します。
verify
チェックのデータ仕様です。この例では、データBeanのプロパティsampleNumberが0以上、10以下であることを確認し、範囲外の場合は例外とします。
ビジネスクラスの記述
import com.fujitsu.uji.xscript.ESpecValidator; import com.fujitsu.uji.xscript.ESpecResultException; import com.fujitsu.uji.xscript.ESpecRuntimeException; ... public void someMethod(DispatchContext context, SomeBean bean) throws java.lang.Exception { ESpecValidator validator = new ESpecValidator("c:\\espec\\sampleCheck.xml"); String errMsg = null; try { validator.validate("sampleCheck", bean); } catch(ESpecResultException e) { errMsg = "チェックエラー:" + e.getInfo(); } catch(Exception e) { throw e; } ... }
import
XMLデータ仕様記述関連のクラスは、com.fujitsu.uji.xscriptパッケージで提供されます。
ESpecValidator
ESpecValidatorは実行機能のクラスです。XMLデータ仕様記述のファイル名を指定して作成します。
validate
ESpecValidatorのvalidateメソッドを呼ぶことで、XMLデータ仕様記述が実行されます。引数はデータ仕様の名前と、チェック対象のデータBeanです。
ESpecResultException
チェックの結果エラーとなった場合は、ESpecResultExceptionが発生します。
その他のException
プロパティオブジェクトが見つからない等の問題が発生した場合は、ESpecRuntimeExceptionが発生します。また、XMLデータ仕様記述自体の記述誤りなどの場合は、ESpecExceptionとなります。このような場合は、XMLデータ仕様記述を見直してください。