變數

在規則語言中,會使用特定的變數,儲存在不同次數出現的事件或規則之中的事件相關資訊。這個與事件相關的資訊可從規則內的表示式來存取。部分類型的變數是由規則撰寫者來定義,而其他類型的變數則由「主動式相互關聯技術」提供。部分類型可以直接從表示式存取,而其他類型則只能透過「主動式相互關聯技術」所提供的方法來存取。

在 <variable> 元素中定義並透過方法來存取的變數

您可以在規則、規則區塊或規則集的 <variable> 元素中定義變數。然後,您可以使用下列其中一個方法,存取表示式中的這個變數:
  • getVariable() 方法或其中一個 getjavatypeVariable() 方法
  • setVariable() 方法或其中一個 setjavatypeVariable() 方法
例如,如果您在規則的 <variable> 元素中定義變數 rule_writer_variable, 您就可以使用下列程式碼來存取這個變數:
int sample_variable = act_lib.getIntVariable("rule_writer_variable");

由「主動式相互關聯技術」提供且可直接在表示式中存取的變數

下列變數是由「主動式相互關聯技術」提供。您可以在表示式中直接使用這些變數。
  • act_event
  • act_eventList
  • act_lib
例如,使用下列程式碼,您可以存取 act_event 變數,以取得事件的 hostname 屬性:
act_event.getAttribute("hostname");

由「主動式相互關聯技術」提供並透過方法來存取的變數

下列變數是由「主動式相互關聯技術」提供。使用 getVariable() 方法或其中一個 getjavatypeVariable() 方法,您可以在表示式中存取這些變數。
  • act_eventCount
  • act_location
  • act_nodeName
  • act_threshold
例如,使用下列程式碼,您可以存取 act_eventCount 變數:
int eventcount_integer = act_lib.getIntVariable(IACTLibrary.EVENTCOUNT);
表 1顯示 IACTLibrary 介面為這些變數提供的常數。 在程式碼中,為了確保可在編譯期間而不是在執行時期找到拼字或打字錯誤,請一律使用代表這些變數的常數,而不要使用變數本身。例如,使用 act_lib.getIntVariable(IACTLibrary.EVENTCOUNT); 而不用 act_lib.getIntVariable("act_eventCount");
表 1. 具有相關常數的變數
變數 相關常數
act_eventCount EVENTCOUNT
act_location LOCATION
act_nodeName NODENAME
act_threshold THRESHOLD
相關參考
variable 元素