PEXA Serviceについて
チュートリアル
テストツール
定義ファイル
基本プロセス
拡張プロセス
Condition
セッション
モデル
リファレンス
環境設定
|
loopプロセス概要
|
繰り返し処理を行うためのプロセスです。
内部にネストしてプロセスを記述することで、内部のプロセスを指定回数分ループして実行できます。
このプロセスは、プログラミング言語的に言うとforループ的な挙動をとるループ処理を行います。
そのため、ループパラメータを指定して、それに対してループを行う毎に更新を行いつつ判定を行って処理を続行するかを判断します。
なお、無限ループに陥ることを極力避けるため、ループパラメータの省略や、更新時の型違いなどを許していません。
そのため、条件のみの指定といったwhile的な挙動はできないようになっています。
|
|
loopフォーマットタイプ書式
|
(プロセス名
format_type loop
(loop
session_value宣言部(1)
initial宣言部(1)
update宣言部(1)
loop_condition宣言部(1)
counter宣言部(0|1)
processセクション(1)
)
)
記述注:
属性 あらかじめ決められた値を選択する(true/falseなど)
宣言部 値または、値のリストを設定する
セクション 入れ子で他の属性、宣言部、セクションを保持する可能性がある
(値又は、値のリストが設定される場合もある)
(1):必須
(0|1):オプション
(1以上):一個以上必須
(0以上):0個以上(オプション)
session_value宣言部
|
概要
ループパラメータの格納セッションキー名を指定します。
initial宣言部およびupdate宣言部で指定された値がこのセッションキーで格納されます。
|
|
initial宣言部
|
概要
ループパラメータの初期値をSession値やDirectiveで指定します。
ここで指定された初期値が、初回のループ時にsession_value宣言部で指定されたキーに格納されます。
この値がnullだった場合はエラーとなります。
|
|
update宣言部
|
概要
ループパラメータの更新値をSession値やDirectiveで指定します。
ここで指定された値が、ループが実行される毎にsession_value宣言部で指定されたキーに格納されます。
この値が以下の条件に当たる場合は、正常にループを続行できない物と見なしてエラーとなります。
- update値がnullの場合
- 前回ループ時のsession_value値と違う型になっている場合
- 旋回ループ時のseesion_value値から変化がない場合
|
|
loop_condition宣言部
|
概要
ループを続行するための条件を指定します。
この条件に合致しなかった場合は、ループがその場で終了してloopプロセスから抜けることになります。
この条件の判定は、ループの最初に行われます。プログラミング言語でのforループにおける条件に該当すると考えてください。
条件式はSession評価式で指定できます。
session_valueで指定されたループパラメータに対しての判定をこの条件式で行ってください。
|
|
counter宣言部
|
概要
ループカウンタの格納セッションキー名を指定します。
ループが実行された回数がjava.lang.Integerでこのセッションキーに格納されます。
|
|
processセクション
|
概要
繰り返し処理を行うプロセスを記述します。
ネストさせて記述する形になりますので、Service定義ファイルのprocessセクションと同一の書式となります。
|
|
|
|
記述例
|
;----------------------------------------------------------------------
; 今週の開始日から終了日までの間の予定一覧を検索する
;
; 今週の開始日 = initial = &FirstDateOfWeek:{&Today}
; 一日毎に増分 = update = &AddDay:{@BasisDate}
; ループ条件 = loop_condition = "@BasisDate < &FirstDateOfNextWeek:{&Today}"
;----------------------------------------------------------------------
(今週一週間の分検索を行う
format_type loop
(loop
session_value BasisDate
initial &FirstDateOfWeek:{&Today}
update &AddDay:{@BasisDate}
loop_condition "@BasisDate < &FirstDateOfNextWeek:{&Today}"
counter 繰り返し回数
{process
;--------------------------------------------------------------
; BasisDateの予定を検索して、予定一覧リストに追加していく(append=trueによる)
;--------------------------------------------------------------
(予定を検索
format_type search
(search
source OrderSchedule
session_value 予定一覧リスト
filter "ScheduleStartDate <= @BasisDate and @BasisDate < ScheduleEndDate"
append true
)
)
}
)
)
|
|
更新情報
|
- 最終更新者 : $Author: morishita $
- 最終更新日時 : $Date:: 2009-04-03 20:53:53 #$
- バージョン : $Revision: 3405 $
|
|
|