パターンガードは、where句もしくはwhile句で条件を指定することにより、サブ式の制御を行います。
where句に指定するパターンガードとしては、timer:withinとtimer:withinmaxとがあります。パターンガードを指定するwhere句は複合イベント処理言語でイベントのフィルタリングを指定するwhere句とは異なります。
構文:
timer:within( 時間式 )
パターン式が指定時間以内にtrueとならない場合に、式の評価を終了します。時間式には、時間の表現、もしくは秒数を提供する式を指定します。
構文:
timer:withinmax( 時間式, 最大数式 )
timer:withinの処理に加え、マッチした数を数え、時間式に指定した時間経過するか、最大数式に指定した数に達した段階で式の評価を終了します。
while句で指定するパターンガードは、パターン検知ごとにガード式を評価し、falseとなった時点でパターン式の評価を終了します。
構文:
while ( ガード式 )
ガード式にはboolean (trueまたはfalse)を返す任意の式を書くことができます。