Apcoordinator ユーザーズガイド
|
目次
|
10.2.3 制御の記述
■実行する仕様セクションを指定する
データ仕様内のセクションの実行を制御することができます。
<?xml version="1.0" encoding="iso-2022-jp" ?>
<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" >
<control>
<validate section="sect1" />
<validate section="^nextSection" />
</control>
<section name="sect1" >
...
<term property="#true" value="#sect2" target="^nextSection" />
</section>
<section name="sect2" >
...
</section>
</specification>
</eSpec>
|
control
- 実行する仕様セクションを制御する場合は、
specification
タグのコンテントの先頭にcontrol
タグを記述します。control
タグを記述すると、validate
タグの指定に従って、仕様セクションが実行されます。control
タグを記述しない場合は、specification
タグのコンテントの全ての仕様セクションが記述順に実行されます。
validate
validate
タグでは、section
アトリビュートによって実行する仕様セクションを指定します。section
アトリビュートでは、直接セクション名を指定する他に、内部変数が利用できます。内部変数は先頭に"^"
を付加して指定し、値はterm
タグで設定します。この例では、最初のvalidate
タグでは直接にセクション"sect1"
が指定されているため、まず仕様セクション"sect1"
を実行します。仕様セクション"sect1"
の中では内部変数"nextSection"
に文字列"sect2"
を設定していて、2個目のvalidate
タグではこれを参照して、次に仕様セクション"sect2"
が実行されます。
section
name
アトリビュートでセクション名を指定します。
validate
タグのsection
アトリビュートに固定の仕様セクション名を記述する場合は"#"
を付けないで記述します。term
タグでセクション名を文字列として指定する場合は、"#"
を付けた定数形式で指定します。
■データBeanの一部に対して仕様セクションを実行する
データBeanに階層構造がある場合には、下の階層のデータBeanに対して仕様セクションを実行することができます。
<?xml version="1.0" encoding="iso-2022-jp" ?>
<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" >
<control>
<validate section="sect1" node="subBean" targetNode="subTarget" />
<validate section="sect2" node="*detail" />
</control>
<section name="sect1" >
...
</section>
<section name="sect2" >
...
</section>
</specification>
</eSpec>
|
validate
validate
タグのnode
アトリビュートは、仕様セクションの対象となるデータBeanの階層を指定します。例ではデータBeanのgetSubBean()
で取得できるBeanをチェック対象、代入先データBeanのgetSubTarget()
で取得できるBeanを代入先として、仕様セクション"sect1"
を実行します。
node
アトリビュートの指定の先頭に"*"
を付加した場合は、そのオブジェクトの配列の各要素について、仕様セクションを実行します。例では、データBeanのgetDetail()
で取得した配列の各要素に対して、仕様セクション"sect2"
を実行します。
node
に"*"
を記述する場合は、対象となるオブジェクト(例ではgetDetail()
で取得されるオブジェクト)が配列かjava.util.List
のいずれかである必要があります。
node
に"*"
を記述し、実行する仕様セクション中に代入がある場合は、targetNode
も必ず指定する必要があります。
node
、targetNode
の両方を指定し、かつ配列を利用する場合は、双方に"*"
を記述し、双方が配列またはList
である必要があります。このとき、配列サイズが異なる場合は、要素数の少ない方の数だけ仕様セクションが実行されます。
■XMLデータ仕様記述からの復帰値を設定する
ESpecValidator
のvalidate
メソッドの復帰値はresult
アトリビュートで設定します。
result
result
アトリビュートは、validate
メソッドの復帰値を設定します。複数記述した場合は、最後に実行されたものが有効になります。例では、文字列"abc"
が復帰値となります。
■XMLデータ仕様記述をデバッグする
XMLデータ仕様記述のdebug
指定により、実行状況をログに出力することができます。
<?xml version="1.0" encoding="iso-2022-jp" ?>
<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>
<debug>trace</debug>
</config>
<specification name="sampleCheck" >
...
</specification>
</eSpec>
|
debug
debug
タグを記述した場合には、XMLデータ仕様記述の動作状況を出力します。"snap"
と指定した場合は、1タグで1行のログが出力されます。"trace"
と指定した場合は、プロパティ値や演算の評価状況など詳細なログが出力されます。
- XMLデータ仕様記述のデバッグログは標準出力に出力されます。実行環境によって実際の出力先は変わります。
- デバッグログはインタプリタ実行時にのみ出力できます。XMLデータ仕様記述コンパイラを使用してJavaソースに変換する場合は、
debug
タグは無視され、ログは出力されません。
All Rights Reserved, Copyright © 富士通株式会社 2000-2005