85.6. イベントの時間オペレーター
ストリームモードでは、デシジョンエンジンは、デシジョンエンジンのワーキングメモリーに挿入されるイベントに対して以下の時間オペレーターをサポートします。これらのオペレーターを使用して、Java クラスまたは DRL ルールファイルで宣言するイベントの時間的な理由付け動作を定義できます。デシジョンエンジンがクラウドモードで実行されている場合、時間オペレーターはサポートされません。
-
after
-
before
-
coincides
-
during
-
includes
-
finishes
-
finished by
-
meets
-
met by
-
overlaps
-
overlapped by
-
starts
started by
- after
このオペレーターは、相関イベントの後に現在のイベントが発生するかどうかを指定します。また、このオペレーターは時間を定義でき、この時間の後に、現在のイベントは相関イベントを追跡することができます。または、現在のイベントが相関イベントを追跡できる区切られた時間範囲を定義することもできます。
たとえば、以下のパターンは、
$eventA
が$eventB
の終了後 3 分 30 秒から 4 分の間に開始する場合に一致します。$eventA
が$eventB
の終了後 3 分 30 秒よりも前に開始する場合、または$eventB
の終了後 4 分よりも後に開始する場合は、このパターンが一致しません。$eventA : EventA(this after[3m30s, 4m] $eventB)
以下の方法で、このオペレーターを表すこともできます。
3m30s <= $eventA.startTimestamp - $eventB.endTimeStamp <= 4m
after
オペレーターは、パラメーター値を 2 つまでサポートします。- 2 つの値が定義されると、間隔は 1 番目の値 (例では 3 分 30 秒) で開始し、2 番目の値 (例では 4 分) で終了します。
- 1 つの値のみ定義すると、間隔は提示した値で開始し、終了時間なしで無期限に実行されます。
- 値が定義されない場合、間隔は 1 ミリ秒から開始し、終了時間なしで無期限に実行されます。
after
オペレーターは、負の時間範囲もサポートしています。$eventA : EventA(this after[-3m30s, -2m] $eventB)
1 番目の値が 2 番目の値より大きい場合、デシジョンエンジンは順番を自動的に入れ替えます。たとえば、デシジョンエンジンは以下の 2 つのパターンを同じものと解釈します。
$eventA : EventA(this after[-3m30s, -2m] $eventB) $eventA : EventA(this after[-2m, -3m30s] $eventB)
- before
このオペレーターは、相関イベントの前に現在のイベントが発生するかどうかを指定します。このオペレーターは、現在のイベントが相関イベントに先行できる時間、または現在のイベントが相関イベントに先行できる区切り時間範囲を定義することもできます。
たとえば、以下のパターンは、
$eventA
が$eventB
の開始前 3 分 30 秒から 4 分の間に終了する場合に一致します。$eventA
が$eventB
の開始前 3 分 30 秒よりも前に終了する場合、または$eventB
の開始前 4 分よりも後に終了する場合は、パターンは一致しません。$eventA : EventA(this before[3m30s, 4m] $eventB)
以下の方法で、このオペレーターを表すこともできます。
3m30s <= $eventB.startTimestamp - $eventA.endTimeStamp <= 4m
before
オペレーターは、パラメーター値を 2 つまでサポートします。- 2 つの値が定義されると、間隔は 1 番目の値 (例では 3 分 30 秒) で開始し、2 番目の値 (例では 4 分) で終了します。
- 1 つの値のみ定義すると、間隔は提示した値で開始し、終了時間なしで無期限に実行されます。
- 値が定義されない場合、間隔は 1 ミリ秒から開始し、終了時間なしで無期限に実行されます。
before
オペレーターは、負の時間範囲もサポートしています。$eventA : EventA(this before[-3m30s, -2m] $eventB)
1 番目の値が 2 番目の値より大きい場合、デシジョンエンジンは順番を自動的に入れ替えます。たとえば、デシジョンエンジンは以下の 2 つのパターンを同じものと解釈します。
$eventA : EventA(this before[-3m30s, -2m] $eventB) $eventA : EventA(this before[-2m, -3m30s] $eventB)
- coincides
このオペレーターは、2 つのイベントが同じ開始時刻と終了時刻で同時に発生するかどうかを指定します。
たとえば、
$eventA
と$eventB
の開始タイムスタンプと終了タイムスタンプの両方が同一の場合、以下のパターンは一致します。$eventA : EventA(this coincides $eventB)
coincides
オペレーターは、イベントの開始時間と終了時間の間隔が同じではない場合は、最大 2 つのパラメーター値をサポートします。- パラメーターが 1 つだけ指定されている場合は、このパラメーターを使用して、両方のイベントの開始時間と終了時間のしきい値が設定されます。
- パラメーターが 2 つ指定されている場合、1 番目のパラメーターは開始時間のしきい値として使用され、2 番目のパラメーターは終了時間のしきい値として使用されます。
以下のパターンでは、開始時間と終了時間のしきい値を使用しています。
$eventA : EventA(this coincides[15s, 10s] $eventB)
以下の条件が一致する場合は、パターンが一致します。
abs($eventA.startTimestamp - $eventB.startTimestamp) <= 15s && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 10s
警告デシジョンエンジンは、
coincides
オペレーターの負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。- during
このオペレーターは、相関イベントが開始および終了する時間枠内で現在のイベントが発生するかどうかを指定します。現在のイベントは、相関イベントの開始後に開始し、相関イベントの終了前に終了する必要があります。(
coincides
オペレーターを使用すると、開始時間と終了時間は同じか、ほぼ同じになります)。たとえば、以下のパターンは、
$eventA
が$eventB
の開始後に開始し、$eventB
の終了前に終了する場合に一致します。$eventA : EventA(this during $eventB)
以下の方法で、このオペレーターを表すこともできます。
$eventB.startTimestamp < $eventA.startTimestamp <= $eventA.endTimestamp < $eventB.endTimestamp
during
オペレーターは、1、2、または 4 つの任意のパラメーターをサポートします。- 1 つの値が定義されている場合、この値は 2 つのイベントのそれぞれの開始時間の間隔が最大であるほか、2 つのイベントのそれぞれの終了時間の間隔が最大であることを示しています。
2 つの値が定義されている場合、これらの値はしきい値で、これらのしきい値の間では、現在のイベントの開始時間と終了時間が、相関イベントの開始時間と終了時間に関連して発生する必要があります。
たとえば、値が
5s
と10s
である場合、現在のイベントは相関イベントの開始後 5 秒から 10 秒の間に開始し、相関イベント終了の 5 秒から 10 秒前に終了する必要があります。- 4 つの値が定義されている場合、1 番目と 2 番目の値は、各イベントの開始時間の最小間隔と最大間隔を表しています。また、3 番目と 4 番目の値は、2 つのイベントの終了時間の最小間隔と最大間隔を表しています。
- includes
このオペレーターは、相関イベントが、現在のイベントが発生する時間枠内で発生するかどうかを指定します。相関イベントは、現在のイベントの開始後に開始し、現在のイベントの終了前に終了する必要があります。(このオペレーターの動作は、
during
オペレーターと逆の動作になります)。たとえば、以下のパターンは、
$eventB
が$eventA
の開始後に開始し、$eventA
の終了前に終了する場合に一致します。$eventA : EventA(this includes $eventB)
以下の方法で、このオペレーターを表すこともできます。
$eventA.startTimestamp < $eventB.startTimestamp <= $eventB.endTimestamp < $eventA.endTimestamp
includes
オペレーターは、1 つ、2 つ、または 4 つのオプションのパラメーターをサポートします。- 1 つの値が定義されている場合、この値は 2 つのイベントのそれぞれの開始時間の間隔が最大であるほか、2 つのイベントのそれぞれの終了時間の間隔が最大であることを示しています。
2 つの値が定義されている場合、これらの値はしきい値で、これらのしきい値の間では、相関イベントの開始時間と終了時間が、現在のイベントの開始時間と終了時間に関連して発生する必要があります。
たとえば、値が
5s
と10s
である場合、相関イベントは現在のイベントの開始後 5 秒から 10 秒の間に開始し、現在のイベント終了の 5 秒から 10 秒前に終了する必要があります。- 4 つの値が定義されている場合、1 番目と 2 番目の値は、各イベントの開始時間の最小間隔と最大間隔を表しています。また、3 番目と 4 番目の値は、2 つのイベントの終了時間の最小間隔と最大間隔を表しています。
- finishes
このオペレーターは、現在のイベントが相関イベントの後に開始して、両方のイベントが同時に終了するかどうかを指定します。
たとえば、以下のパターンは、
$eventA
が$eventB
の開始後に開始し、$eventB
と同時に終了する場合に一致します。$eventA : EventA(this finishes $eventB)
以下の方法で、このオペレーターを表すこともできます。
$eventB.startTimestamp < $eventA.startTimestamp && $eventA.endTimestamp == $eventB.endTimestamp
finishes
オペレーターは、2 つのイベントのそれぞれの終了時間の間隔に最大許容時間を設定する 1 つのオプションパラメーターをサポートします。$eventA : EventA(this finishes[5s] $eventB)
これらの条件が一致する場合は、パターンが一致します。
$eventB.startTimestamp < $eventA.startTimestamp && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5s
警告デシジョンエンジンは、
finishes
オペレーターに対して負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。- finished by
このオペレーターは、相関イベントが現在のイベントの後に開始して、両方のイベントが同時に終了するかどうかを指定します。(このオペレーターの動作は、
finishes
オペレーターと逆の動作になります)。たとえば、以下のパターンは、
$eventB
が$eventA
の開始後に開始し、$eventA
と同時に終了する場合に一致します。$eventA : EventA(this finishedby $eventB)
以下の方法で、このオペレーターを表すこともできます。
$eventA.startTimestamp < $eventB.startTimestamp && $eventA.endTimestamp == $eventB.endTimestamp
finished by
オペレーターは、2 つのイベントのそれぞれの終了時間の間隔に最大許容時間を設定する 1 つの任意のパラメーターをサポートします。$eventA : EventA(this finishedby[5s] $eventB)
これらの条件が一致する場合は、パターンが一致します。
$eventA.startTimestamp < $eventB.startTimestamp && abs($eventA.endTimestamp - $eventB.endTimestamp) <= 5s
警告デシジョンエンジンは、
finished by
オペレーターに対して負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。- meets
このオペレーターは、現在のイベントが相関イベントの開始と同時に終了するかどうかを指定します。
たとえば、以下のパターンは、
$eventA
が$eventB
の開始と同時に終了する場合に一致します。$eventA : EventA(this meets $eventB)
以下の方法で、このオペレーターを表すこともできます。
abs($eventB.startTimestamp - $eventA.endTimestamp) == 0
meets
オペレーターは、現在のイベントの終了時間と相関イベントの開始時間との間隔に最大許容時間を設定する 1 つの任意のパラメーターをサポートします。$eventA : EventA(this meets[5s] $eventB)
これらの条件が一致する場合は、パターンが一致します。
abs($eventB.startTimestamp - $eventA.endTimestamp) <= 5s
警告デシジョンエンジンは、
meets
オペレーターに対して負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。- met by
このオペレーターは、相関イベントが現在のイベントの開始と同時に終了するかどうかを指定します。(このオペレーターの動作は、
meets
オペレーターと逆の動作になります)。たとえば、以下のパターンは、
$eventB
が$eventA
の開始と同時に終了する場合に一致します。$eventA : EventA(this metby $eventB)
以下の方法で、このオペレーターを表すこともできます。
abs($eventA.startTimestamp - $eventB.endTimestamp) == 0
met by
オペレーターは、相関イベントの終了時間と現在のイベントの開始時間との間に最大距離を設定する 1 つの任意のパラメーターをサポートします。$eventA : EventA(this metby[5s] $eventB)
これらの条件が一致する場合は、パターンが一致します。
abs($eventA.startTimestamp - $eventB.endTimestamp) <= 5s
警告デシジョンエンジンは、
met by
オペレーターに対して負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。- overlaps
このオペレーターは、現在のイベントが相関イベントの開始前に開始し、相関イベントが発生する時間枠内で終了するかどうかを指定します。現在のイベントは、相関イベントの開始時間と終了時間の間に終了する必要があります。
たとえば、以下のパターンは、
$eventA
が$eventB
の開始前に開始し、$eventB
の終了前に$eventB
が発生する間に終了する場合に一致します。$eventA : EventA(this overlaps $eventB)
overlaps
オペレーターは、パラメーター値を 2 つまでサポートします。- 1 つのパラメーターが定義されている場合、値は相関イベントの開始時間と現在のイベントの終了時間との間の最大間隔になります。
- 2 つのパラメーターが定義されている場合、値は相関イベントの開始時間と現在のイベントの終了時間との間の最短間隔 (1 番目の値) と最大間隔 (2 番目の値) になります。
- overlapped by
このオペレーターは、相関イベントが、現在のイベントの開始前に開始し、現在のイベントが発生する時間枠内で終了するかどうかを指定します。相関イベントは、現在のイベントの開始時間と終了時間の間に終了する必要があります。(このオペレーターの動作は、
overlaps
オペレーターと逆の動作になります)。たとえば、以下のパターンは、
$eventB
が$eventA
の開始前に開始し、$eventA
の終了前に$eventA
が発生する前に終了する場合に一致します。$eventA : EventA(this overlappedby $eventB)
overlapped by
オペレーターは、パラメーター値を 2 つまでサポートします。- 1 つのパラメーターが定義されている場合、値は現在のイベントの開始時間と相関イベントの終了時間との間の最大間隔になります。
- 2 つのパラメーターが定義されている場合、値は現在のイベントの開始時間と相関イベントの終了時間との間の最短間隔 (1 番目の値) と最大間隔 (2 番目の値) になります。
- starts
このオペレーターは、2 つのイベントが同時に開始するが、現在のイベントが相関イベントの終了前に終了するかどうかを指定します。
たとえば、以下のパターンは、
$eventA
と$eventB
が同時に開始し、$eventA
が$eventB
の終了前に終了する場合に一致します。$eventA : EventA(this starts $eventB)
以下の方法で、このオペレーターを表すこともできます。
$eventA.startTimestamp == $eventB.startTimestamp && $eventA.endTimestamp < $eventB.endTimestamp
starts
オペレーターは、2 つのイベントのそれぞれの開始時間の間の最大間隔を設定する 1 つの任意のパラメーターをサポートします。$eventA : EventA(this starts[5s] $eventB)
これらの条件が一致する場合は、パターンが一致します。
abs($eventA.startTimestamp - $eventB.startTimestamp) <= 5s && $eventA.endTimestamp < $eventB.endTimestamp
警告デシジョンエンジンは、
starts
オペレーターに対して負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。- started by
このオペレーターは、2 つのイベントが同時に開始し、現在のイベントの終了前に相関イベントが終了するかどうかを指定します。(このオペレーターの動作は、
starts
オペレーターと逆の動作になります)。たとえば、以下のパターンは、
$eventA
と$eventB
が同時に開始し、$eventB
が$eventA
の終了前に終了する場合に一致します。$eventA : EventA(this startedby $eventB)
以下の方法で、このオペレーターを表すこともできます。
$eventA.startTimestamp == $eventB.startTimestamp && $eventA.endTimestamp > $eventB.endTimestamp
started by
オペレーターは、2 つのイベントのそれぞれの開始時間の間の最大間隔を設定する 1 つの任意のパラメーターをサポートします。$eventA : EventA( this starts[5s] $eventB)
これらの条件が一致する場合は、パターンが一致します。
abs( $eventA.startTimestamp - $eventB.startTimestamp ) <= 5s && $eventA.endTimestamp > $eventB.endTimestamp
警告デシジョンエンジンは、
started by
オペレーターに対して負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。