Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第2部 Apcoordinatorコアの機能> 第9章 コマンドスクリプティング

9.2 コマンドスクリプティングの利用方法

■コマンドマップの定義

コマンドスクリプティングは、XMLファイルで記述します。コマンドマップでは、コマンドスクリプティングのXMLファイルをインクルードするように記述します。 以下はコマンドマップから、コマンドスクリプティングのXMLファイル"comscript.xml"を取り込む場合の記述例です。

#commandMap
+comscript.xml

■コマンドスクリプティングのXMLファイル

コマンドスクリプティングのXMLファイルは拡張子".xml"で作成する必要があります。 エンコーディングには"UTF-8"、"iso-2022-jp"等、Javaでサポートされている各種のエンコーディングが利用できます。

■コマンドスクリプティング記述の概要

コマンドスクリプティング記述は、以下の構成となります。

XMLヘッダ
<commandMap>
  <config>要素
  <entry>要素
  ...<entry>要素の繰り返し
  <procedure>要素
  ...<procedure>要素の繰り返し
</commandMap>

・config要素
コマンドスクリプティングの情報を指定します。
・entry要素
bean属性で入力データBeanのクラス名を、verb属性でコマンドを指定し、入力のデータと呼ばれるコマンドスクリプティングを対応付けます。
コマンドマップとコマンドスクリプティングを通して、Beanのクラス名とコマンドで一意になる必要があります。
・procedure要素
コマンドスクリプティングのサブルーチンを表します。
サブルーチンは、ファイル内で有効になります。
entry要素、procedure要素の内側には、処理のタグを記述することができます。処理のタグを以下に示します。詳細はリファレンスを参照してください。
タグ名機能
validate最大値や型のチェックをします
specSectionXMLデータ仕様記述をインラインで記述します。
specValidate外部ファイルのXMLデータ仕様記述に従って、処理を行います。
invokeサブルーチン、ビジネスクラス、Apcoordinator利用のEJB、Webサービスを呼び出します。
invokeEJB一般のEJBを呼び出します。
invokeObject一般のクラスオブジェクトを呼び出します。
invokeCobolCOBOLで記述された処理を呼び出します。
setResponseBean表示領域と対応付けてデータBeanを設定します。
newBeanデータBeanオブジェクトを生成します。
copyValue値をコピーします。
copyResourceリソースファイルで定義した文字列をコピーします。
printLogログを出力します。
catch例外時の動作を記述します。内側に処理のタグを記述します。

コマンドスクリプティングの実行中の例外は、com.fujitsu.uji.xscript.ScriptingExceptionとして通知されます。例外時の処理は、セションクラスのhandleExceptionメソッドや、コマンドスクリプティングのcatchタグによって記述することができます。

コマンドスクリプティングでは、処理途中や結果のオブジェクトをスクリプトデータとしてDispatchContextに保存します。スクリプトデータはJavaの記述から、DispatchContextクラスのgetScriptDataおよびsetScriptDataメソッドで参照、設定が可能です。
スクリプトデータの名前として、以下は既定として使用されています。
スクリプトデータ名意味
uji.current現在処理中のオブジェクト、初期値はuji.requestと同じ
uji.request入力のデータBean
uji.verbコマンド名
uji.sessionセションクラス
uji.applicationアプリケーションクラス
uji.exception発生した例外のオブジェクト
この他、"uji."で始まる名前は予約されています。
コマンドスクリプティング実行終了時にuji.currentに設定されているデータが復帰値となります。復帰値はビジネスクラスで復帰値を返す形態のアプリケーションで有効になります。

■動作の概要

以下の記述に従ってコマンドスクリプティングの動作を説明します。

  <entry bean="somepackage.EntryBean" verb="ok">
    <validate property="value" type="int" minValue="0" maxValue="10"
 statusText="valueError" />
    <invoke name="someEjb" verb="#doOk"/>
    <setResponseBean pane="body" verb="resmode"/>
    <catch status="valueError">
      <copyValue bean="#値は0以上10以下で入力してください" targetProperty="message" />
      <setResponseBean pane="body" verb="retry"/>
    </catch>
  </entry>

  1. 入力のデータBeanがsomepackage.EntryBeanで、コマンド名がokの場合、このentry要素が実行されます。
  2. validateタグはuji.currentに保存されている入力データBeanに対して、プロパティvalueのint型チェックと最大最小の判定を行います。
  3. 正常の場合はinvokeタグが実行されます。この場合は名前がsomeEjb、コマンド名doOkを指定し、パラメタの省略値としてuji.currentに設定されている入力のデータBeanが使われます。
  4. invokeの結果はuji.currentに格納され、それをsetResponseBeanタグで画面body、画面モードresmodeで設定します。
  5. validateタグでエラーになった場合、valueErrorというステータス情報を持つ例外が発生します。catch要素はこの例外を受けて実行され、メッセージ領域に文字列を入れて、画面モードretryで画面を再設定します。

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005