Apcoordinator ユーザーズガイド
|
目次
|
10.3.1 インタプリタ形式での実行
■ビジネスクラスからの実行
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
を継承して利用者定義メソッドを追加したクラスのコンストラクタを利用します。
- (1)で指定する
ClassLoader
は、static形式の利用者定義メソッドのクラスをロードする場合に使用します。static形式の利用者定義メソッドを使用しない場合には不要です。また、static形式の利用者定義メソッドを使用しても、実行形態(環境)によっては指定不要(標準のClassLoader
で動作可能)の場合もありますが、利用者定義メソッドでエラーになる場合には必ず指定してください。
- XMLファイルをフルパスや
InputStream
で指定する場合には、(2)でInfLoader
を指定する必要はありません。この場合は、(3)のsetXml
メソッドの代わりにコンストラクタでXMLファイルを指定することができます。
■コマンドスクリプティングからの実行
コマンドスクリプティングからXMLデータ仕様記述を呼び出すことができます。
<?xml version="1.0" encoding="iso-2022-jp"?>
<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
タグを利用して、コマンドスクリプティング中に仕様セクションを直接記述することができます。
コマンドスクリプティングの概要についてはコマンドスクリプティング、詳細についてはコマンドスクリプティングリファレンスを参照してください。
All Rights Reserved, Copyright © 富士通株式会社 2000-2005