使用過濾程式搭配動作

使用簡式過濾程式

以下是簡式過濾程式的用法範例:

「等待時間:」選項可讓您延遲動作的執行,直到從資料夾中新增或移除裝置後達到指定時間時才執行動作。

使用「作用時觸發」過濾程式

您可以利用「作用時觸發」過濾程式,將動作設為只在條件式變成「作用中」時才執行指令。例如,若您正在監控「找不到送紙匣」事件,則當有人從受監控印表機移除送紙匣時,該印表機就會產生一個狀態為「作用中」的「找不到送紙匣」事件。「作用中」狀態符合過濾程式的條件式,所以會執行指定動作。更換送紙匣後,印表機會產生另一個狀態為「清除」的「找不到送紙匣」事件。「清除」狀態不符合過濾程式的條件式,所以不會執行動作。

使用「作用或清除時觸發」過濾程式

選取「作用或清除時觸發」過濾程式,可將動作設為每當條件變成作用中或清除時執行。例如,您想利用該過濾程式記下所有的印表機夾紙記錄,以判斷清除夾紙所需的平均時間。發生夾紙時,印表機會產生一個狀態為「作用中」的事件。此事件符合過濾程式的條件式,所以會執行該動作。清除夾紙後,印表機會產生另一個狀態為「清除」的事件。此事件也符合過濾程式的條件式, 所以也會執行該動作。這時,記錄檔中會有兩行記錄,一行指出發生夾紙的時間,另一行指出清除夾紙的時間。

使用自訂過濾程式

利用自訂過濾程式定義動作的執行方式。上傳 Script 檔或撰寫新的 Script 檔。MarkVision Messenger 提供一種很簡單定義過濾程式的 Script 語言。以下是一份完整的清單,列有可供自訂過濾程式使用的陳述式和條件式。

陳述式:

條件式:

撰寫範例 Script「作用時觸發」過濾程式

以下是內建「作用時觸發」過濾程式的 Script 表示法範例:

IfThen (EventDataIs("state", "ACTIVE")) Distribute

EventDataIs 條件式的作用是向事件詢問關鍵字為 state 的值。此關鍵字可以插入指令行和電子郵件訊息中。若條件式 EventDataIs ("state", "ACTIVE") 為 True,則 IfThen 陳述式會執行下一個陳述式。若關鍵字 (state) 的值符合給定的值 (ACTIVE),則 EventDataIs 條件式為 True。下一個陳述式 Distribute 會使指令執行。

撰寫含有 30 秒延遲之「作用時觸發」過濾程式的 Script 範例

以下是一個 Script 範例,此 Script 適用於延遲 30 秒的「作用時觸發」過濾程式動作:

{ WaitUntil (TimeIsAfter(30)) IfThen(EventDataIs("state", "ACTIVE")) Distribute }

大括號 ({}) 的功用是將各陳述式集合在一個清單中。前一個範例不需要大括號 ({}),因為 IfThen 和其後的陳述式視為同一個陳述式。

WaitUntil 陳述式會使 Script 暫停,直到條件式為 True。達到指定的秒數後,TimeIsAfter 條件式才會檢查是否為真。若事件在 30 秒後仍在作用中,Distribute 陳述式就會執行指令。

撰寫「作用或清除時觸發」過濾程式的 Script 範例

以下是針對下列情況撰寫的內建「作用或清除時觸發」過濾程式的 Script 表示法:針對 3 號送紙匣選取「找不到送紙匣」事件;執行指令前有 20 分鐘的延遲;若條件式維持「作用中」,則每隔 20 分鐘就重複執行指令一次。

While (And(EventDataIs("state", "ACTIVE"), EventDataIs("location", "Tray 3"))) { WaitUntil(TimeIsAfter(1200)) IfThen(EventDataIs("state", "ACTIVE")) Distribute }

在此範例中,And 用來建立一個複合條件式。事件(針對 3 號送紙匣)為作用中時,才會進入或重複 While 迴圈。此迴圈內的程式碼與「作用時觸發」過濾程式的程式碼相同,唯一的差異就是 TimeIsAfter 條件式設為等待 1200 秒(20 分鐘)。