sequenceRule 元素

<sequenceRule> 元素會根據序列型樣來定義規則。序列規則是唯一容許多個事件選擇器的規則。此外,它至少必須有兩個事件選擇器。

屬性

<sequenceRule> 具有下列屬性:

表 1. <sequenceRule> 元素的屬性
名稱 說明 資料類型 必要的嗎?
name 識別規則。此 ID 在包含此規則的規則區塊中必須是唯一的。它不能包含句點。 xsd:NMTOKEN
processOnlyForwardedEvents 決定規則會接收所有事件,或是只接收從其他規則轉遞來的事件。預設值為 false, 這表示規則會接收所有事件,包括那些從其他規則轉遞來的事件。 xsd:boolean
arrivalOrder 定義事件是否必須依照規則中編碼 <eventSelector> 元素的次序到達。有效值為:
  • inOrder (預設值)
  • randomOrder
xsd:string

如果 arrivalOrder 屬性的值是 randomOrder, 則 <eventSelector> 元素的編碼次序就非常重要。編碼時,應該將事件選擇準則最具體的 <eventSelector> 元素,置於事件選擇準則較為簡略之 <eventSelector> 元素的前面。否則,便無法在需要時偵測到序列。

例如,假設下列情況:
  • 已定義三個 <eventSelector> 元素。
  • 第一個 <eventSelector> 元素檢查事件 eventA
  • 第二個 <eventSelector> 元素檢查任何事件。
  • 第三個 <eventSelector> 元素檢查事件 eventB
  • 在指定的時間範圍內,會將下列事件呈現給系統:eventAeventBeventC
規則行為如下所示,且無法在需要時偵測到序列:
  1. 第一個 <eventSelector> 元素接受第一個事件 eventA
  2. 第二個 <eventSelector> 元素接受第二個事件 eventB
  3. 忽略第三個事件 eventC
假設下列情況,且已正確編碼 <eventSelector> 元素, 也就是事件選擇準則最具體的元素位於事件選擇準則較為簡略之元素的前面:
  • 第一個 <eventSelector> 元素檢查事件 eventA
  • 第二個 <eventSelector> 元素檢查事件 eventB
  • 第三個 <eventSelector> 元素檢查任何事件。
規則行為如下所示,且偵測到序列:
  1. 第一個 <eventSelector> 元素接受第一個事件 eventA
  2. 第二個 <eventSelector> 元素接受第二個事件 eventB
  3. 第三個 <eventSelector> 元素接受第三個事件 eventC

包含範圍

<sequenceRule> 內含在下列元素中:

包含

<sequenceRule> 包含下列元素。

元素必須按照所顯示的次序來編碼。如果元素是選用的,則無需進行編碼,但所有編碼的元素都必須遵循正確的次序。

表 2. <sequenceRule> 元素中包含的元素
元素 必要的或選用的?
<comment> 選用的。出現次數 0 或 1 是可接受的。
<variable> 選用的。出現次數 0 或更多是可接受的。
<activationInterval> 選用的。出現次數 0 或 1 是可接受的。
<lifeCycleActions> 選用的。出現次數 0 或 1 是可接受的。
<eventSelector> 序列規則要求此元素出現 2 次。可出現更多次。
<groupingKey> 選用的。出現次數 0 或 1 是可接受的。
<timeWindow> 必要的。只允許出現 1 次。
<onDetection> 選用的。出現次數 0 或 1 是可接受的。
<onTimeOut> 選用的。出現次數 0 或 1 是可接受的。
相關概念
序列型樣