Apcoordinator ユーザーズガイド |
目次
![]() ![]() |
第2部 Apcoordinatorコアの機能 | > 第11章 XMLデータ仕様記述 | > 11.3 XMLデータ仕様記述の実行 |
XMLデータ仕様記述をインタプリタ形式で実行する場合は、標準的には以下のように記述します。
import com.fujitsu.uji.DispatchContext; import com.fujitsu.uji.xscript.ESpecValidator; import com.fujitsu.uji.xscript.ESpecResultException; import com.fujitsu.uji.xscript.ESpecException; .... public void processOrder(DispatchContext context, OrderBean bean) throws java.lang.Exception { ESpecValidator validator = ESpecValidator.getInstance(getClass().getClassLoader()); // (1) validator.setInfLoader(context.getApplicationProfile().getInfLoader()); // (2) try { validator.setXml("checkPrice.xml"); // (3) validator.validate("checkValue", bean); // (4) } catch(ESpecResultException e) { ... // (5) } catch(Exception e) { throw e; // (6) } ... }
(1) ESpecValidator
クラスのインスタンスを作成します。利用者定義メソッド呼び出しのために、ClassLoader
を引数にします。(2) InfLoader
を指定することで、XMLファイルの読み込み場所を設定ファイルフォルダにします。設定ファイルフォルダは、コマンドマップ、リモートマップなどApcoordinatorの定義ファイルを置くフォルダです。例えば、Webアプリケーションの場合はWEB-INF
フォルダです。(3) setXml
メソッドは、XMLデータ仕様記述のXMLファイルを読み込みます。(4) validate
メソッドによって、XMLデータ仕様記述を実行します。代入先に別のデータBeanを利用する場合には、データBeanを2個指定する形式のメソッドを利用します。(5) 項目チェックでエラーになった場合は、 ESpecResultException
となります。一般的には、画面にエラー情報を出して再入力の処理になります。(6) その他の例外の場合は、XMLデータ仕様の記述や実行環境を確認してください。
ESpecValidator.getInstance(...)
の代わりにESpecValidator
を継承して利用者定義メソッドを追加したクラスのコンストラクタを利用します。
ClassLoader
は、static形式の利用者定義メソッドのクラスをロードする場合に使用します。static形式の利用者定義メソッドを使用しない場合には不要です。また、static形式の利用者定義メソッドを使用しても、実行形態(環境)によっては指定不要(標準のClassLoader
で動作可能)の場合もありますが、利用者定義メソッドでエラーになる場合には必ず指定してください。
InputStream
で指定する場合には、(2)でInfLoader
を指定する必要はありません。この場合は、(3)のsetXml
メソッドの代わりにコンストラクタでXMLファイルを指定することができます。
コマンドスクリプティングからXMLデータ仕様記述を呼び出すことができます。
<?xml version="1.0" encoding="Shift_JIS"?> <commandMap xmlns="http://interstage.fujitsu.com/schemas/uji/commandMap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/commandMap http://interstage.fujitsu.com/schemas/uji/commandmap.xsd"> ... <entry bean="sample.OrderBean" verb="process"> <specValidate file="checkPrice.xml" name="checkValue" /> <specSection> <term property="val1" op="ADD" operand="val2" target="result"/> </specSection> ... <catch exception="ESpecResultException"> ... </catch> </entry> </commandMap>
specValidate
タグは、XMLデータ仕様記述を実行します。
specSection
タグを利用して、コマンドスクリプティング中に仕様セクションを直接記述することができます。
コマンドスクリプティングの概要についてはコマンドスクリプティング、詳細についてはコマンドスクリプティングリファレンスを参照してください。
目次
![]() ![]() |