PEXA Serviceについて
チュートリアル
テストツール
定義ファイル
基本プロセス
拡張プロセス
Condition
セッション
モデル
リファレンス
環境設定
|
Serviceセッション値書式について
|
ServiceSession上に保持するSession値を設定、読み込み指定するための書式を以下で解説します。
ServiceSessionに対する任意のSession値の設定はsessionプロセスでのみ行います。
また、その他のサービスプロセスの処理結果なども随時ServiceSessionに設定されます。詳細はそれぞれのサービスプロセスの説明を参照してください。
ServiceSessionからのSession値の読み込みは全てのプロセスやbefore_condition, after_condition等で行われます。
文字列を設定する
|
先頭が
"@","$","!","%","&"
ではじまらないか、シングルクオートで文字列が囲まれている場合、文字列が設定される。
記述例:
文字列
'文字列'
'文字列1 文字列2'
文字列が以下の条件を満たす場合、文字列をシングルクオートで囲むこと。
- 文字列が空白を含む
- 文字列内にシングルクオートを含む
|
|
ServiceSessionキーに対応する値を設定する
|
先頭に"@"をつけてServiceSessionキー名を指定する
記述例:
支払額 @支払額
ServiceSessionキー名が設定対象のServiceSessionキー値と同じ場合"@"の後ろのServiceSessoinキー名を省略できる。
下記の二つの例は等価。
記述例:
設定対象ServiceSessionキー名 @
設定対象ServiceSessionキー名 @設定対象ServiceSessionキー名
この省略形は、serviceセクションのsession_keys指定などで利用できる。
ServiceSessionキーの値がモデル(Observableのサブクラス)の場合、ServiceSessionキー名に続けてパスを指定できる。
また、パス指定には条件式を含むこともできる。
記述例:
支払額合計 @交通費精算書/支払額合計
|
|
ServiceSessionキーに対応するデータモデルの内容を現象型パスで読み込む
|
Session上に格納されているデータモデルに対して現象型パス式を使うことで、データモデルが持つ項目の値を読み込むことができます。
書式:
@データモデルのセッションキー名/現象型名1/現象型名2/..../現象型名n
例えば,"顧客データモデル"Sessionキーに格納されているデータモデルがあったとして,そのデータモデルが顧客名や顧客性別、顧客住所などを持っている場合は以下のような形でそれぞれの値を参照することができます。
例:顧客データモデルから項目を読み出してSession上に保存
(顧客データモデルの項目を読み出し
format_type session
(session
(session_keys
読み出した顧客名 @顧客データモデル/顧客名
読み出した顧客性別 @顧客データモデル/顧客性別
読み出した顧客住所 @顧客データモデル/顧客住所
)
)
)
上記のようにすると、Sessionキー"読み出した顧客名", "読み出した顧客性別", "読み出した顧客住所"で、データモデルから読み出した項目の値がServiceSession上に設定されます。
なお、読み出した値が単値か複数値(リスト)になるかは、現象型パスの中にMultipleの現象型が存在するかどうかで決まります。
明細データを読み出すための現象型などが含まれていれば、読み出した結果は複数値(リスト)になります。
例:交通費精算書から明細に含まれている金額を読み出してSession上に保存(複数値)
(交通費精算書データモデルの項目を読み出し
format_type session
(session
(session_keys
読み出した交通費明細金額リスト @交通費精算書データモデル/交通費精算書明細/交通費金額
)
)
)
現象型パスの書式についての詳細は、こちらを参照してください。
|
|
ServiceSessionキーに対応するデータモデル集合の内容を現象型パスで読み込む
|
Session上に格納されているデータモデルの集合(ListやSet等)に対して現象型パス式を使うことで、集合に含まれるデータモデルが持つ項目の値を読み込むことができます。
この場合、返される値は必ず複数値(リスト)になります。
書式:
@データモデル集合のセッションキー名/現象型名1/現象型名2/..../現象型名n
例:顧客データモデル検索結果リストから項目を読み出して、値のリストとして設定
(顧客Noのリストを設定
format_type session
(session
(session_keys
顧客Noリスト @顧客データモデル検索結果リスト/顧客No
)
)
)
また、データモデル検索時でin演算子を利用するような場合にも利用できます。
例:顧客データモデル検索結果リストから項目を読み出して、別の検索処理の条件として利用
(見積依頼を検索
format_type search
(search
source 見積依頼モデル
session_value 見積依頼検索結果リスト
filter "依頼元顧客No in (@顧客データモデル検索結果リスト/顧客No)"
)
)
現象型パスの書式についての詳細は、こちらを参照してください。
in演算子によるデータモデル検索については、こちらを参照してください。
|
|
現象型を指定して値を設定する
|
先頭に"$"をつけて現象型名を指定、":"につづけて指定した現象型の観測値を指定する
記述例:
支払額合計 $支払額合計:1000
":"の後ろの1000は現象型"支払額合計"の観測値の型"BigDecimal"に変換されてServiceSessionキー"支払額合計"に設定される。
":"の後ろには文字列以外に、ServiceSessionキーや、Directive、外部Helper等、ServiceSession値で指定可能な書式を指定できる。
記述例2:
支払額 $支払額:@交通費精算書/支払額合計
mapping内で指定されるか、Updatableの生成書式内においては、"$現象型名:"を省略することができる。
その場合、現象型名の部分には設定対象現象型名が指定されたと見なされる。
|
|
Javaクラスを設定する
|
先頭に"%"につづけてJavaクラス名を指定する。
指定したJavaクラスを指定、":"につづけて指定した文字列で値を指定する。
記述例:
支払額合計 %java.math.BigDecimal:100
":"の後ろの100を文字列として認識してnew BigDecimal("100")と同じ動作をする。
|
|
Directiveを設定する
|
先頭に"&"につづけてDirective名を指定する。
Directiveは実行時に一定のルールに従った値に変換される。
指定可能なDirectiveの一覧については、付録:Directive一覧を参照。
記述例:現日時を設定する
最終更新日時 &Now
記述例2:nullを設定する
最終更新日時 &Null
Directiveによっては、設定対象のServiceSessionの値を必要とする物や、":"に続けて引数を必要とする物もある。
|
|
外部Helperの出力結果を設定する
|
先頭に"!"に続けて外部Helperを指定する。
外部Helperには、
- JavaHelperクラスの呼び出し
- SessionBeanHelerの呼び出し
のいずれかを指定できる。
記述1:JavaHelperクラスを指定する
!パッケージ名を含むJavaクラス名
値の先頭に"!"をつけて、パッケージ名を含むJavaのクラス名を指定する。
記述例:
!imeg.share.session.交通費精算書.支払額合計SessionOperatorProducer
javaのクラスは、下記のインタフェースを実装する必要がある。
pexa.share.service.ServiceSessionValueProducer
実行時には上記インタフェースの下記のメソッドが呼び出される
public Object getValue(ServiceSession session) throws FatalException;
なお、pexaは外部Helperクラスオブジェクトを取得するに当たって、下記の順番でメソッド、コンストラクタを検索する
- staticなgetInstance(pexa.share.util.res.Resource)
- staticなgetInstance()
- pexa.share.util.res.Resourceを引数に持つコンストラクタ
- デフォルトコンストラクタ
記述2:SessionBeanHelperの呼び出し
!JNDIパス名
値の先頭に"!"をつけて、SessionBeanのJNDIパス名を指定する。
ただし、JNDIパス名に":"が含まれていること(":"の有無でSessionBeanの呼び出しであるか否かを判断している)
記述例:
facade:支払額合計SessionOperatorProducerSession
SessionBeanは、下記のインタフェースを実装する必要がある
pexa.share.service.ServiceSessionValueProducerFacade
実行時には上記インタフェースの下記のメソッドが呼び出される
public Object getValue(ServiceSession session) throws FatalException,RemoteException;
|
|
|
|
更新情報
|
- 最終更新者 : $Author: tann $
- 最終更新日時 : $Date:: 2016-01-06 13:14:29 #$
- バージョン : $Revision: 8375 $
|
|
|