84.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 つの値が定義されている場合、これらの値はしきい値で、これらのしきい値の間では、現在のイベントの開始時間と終了時間が、相関イベントの開始時間と終了時間に関連して発生する必要があります。

      たとえば、値が 5s10s である場合、現在のイベントは相関イベントの開始後 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 つの値が定義されている場合、これらの値はしきい値で、これらのしきい値の間では、相関イベントの開始時間と終了時間が、現在のイベントの開始時間と終了時間に関連して発生する必要があります。

      たとえば、値が 5s10s である場合、相関イベントは現在のイベントの開始後 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 オペレーターに対して負の間隔をサポートしていません。負の間隔を使用すると、デシジョンエンジンはエラーを生成します。