variable 元素

<variable> 元素會定義變數,並包含可被表示式參照的格式資訊。您可以在規則集、規則區塊或規則層次定義變數。

詳細資訊

規則集變數
適用於整個規則集,並且可被規則集中的任何表示式參照。
規則區塊變數
僅在規則區塊內 (及任何內含的規則區塊內) 適用,並且可被規則區塊內的任何表示式參照。
規則變數
僅適用於規則中的表示式。

在規則階層的不同層次,變數可以有相同的名稱。當存取變數時,會使用變數的最本端定義。例如,如果在規則集層次、規則區塊層次及規則層次定義相同名稱的變數,則規則內的表示式會使用規則層次的變數定義。

當在規則集或規則區塊層次定義變數時,多個規則會在不同時間取得並設定這些變數。因此,為了確保正確維護變數值,請瞭解您在規則集的變數之間,撰寫交談作業程式碼的方式。

如果在規則集或規則區塊層次定義變數,則在符合規則型樣之後,不會重新起始設定它。

在下列任何一種情況下,請使用取得並設定規則集及規則區塊變數的鎖定,以防止錯誤地設定變數值:
  • 如果計時器規則在 <onTimeOut> 動作期間取得並設定變數
  • 如果內含「主動式相互關聯技術」引擎的應用程式是多緒應用程式

如果使用分組鍵定義規則,則 <variable> 元素定義的規則變數在生命週期動作中是無效的, 在內含於 <activationInterval> 元素之 <activateOnEvent> 或 <deactivateOnEvent> 元素內的 <filteringPredicate> 元素中也是無效的。這是因為在此情況下,規則變數僅適用於規則實例,而規則實例在這些表示式執行時不存在。

屬性

<variable> 具有下列屬性:

表 1. <variable> 元素的屬性
名稱 說明 資料類型 必要的嗎?
name 識別特定的變數。變數可由其名稱來參照。 xsd:NMTOKEN
dataType 識別變數包含的資訊類型。這必須是完整的資料類型,例如 java.lang.String。 xsd:NMTOKEN

變數的名稱限制

變數名稱具有特定的限制。因此,<variable> 元素上的 name 屬性值具有下列限制:
  • 它只能包含下列字元:
    • 大寫 ASCII 拉丁文字母 A-Z。Unicode 表示法為 \u0041-\u005a
    • 小寫 ASCII 拉丁文字母 a-z。Unicode 表示法為 \u0061-\u007a
    • ASCII 底線 (_)。Unicode 表示法為 \u005f
    • 錢幣符號 ($)。Unicode 表示法為 \u0024
    • ASCII 數字 0 – 9。Unicode 表示法為 \u0030-\u0039
  • 不能為空值。
  • 不能為空字串。
  • 不能包含任何空格。
  • 不能包含句點。
  • 在任何格式 (大寫、小寫或大小寫混合格式) 下都不能以 act_ 開頭。

包含範圍

包含

<variable> 包含下列元素。

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

表 2. <variable> 元素中包含的元素
元素 必要的或選用的?
<comment> 選用的。出現次數 0 或 1 是可接受的。
<varInitializer> 必要的。只允許出現 1 次。
相關概念
變數