将过滤器用于操作

使用简单过滤器

下面是简单过滤器的使用示例:

使用“延迟”选项来在设备被添加到文件夹或从文件夹中被删除后,延迟操作的执行到指定的时间。

使用“活动时触发”的过滤器

选择“活动时触发”的过滤器来设置只在状态变为“活动”时才执行命令的操作。例如,如果您正在监视“缺少进纸匣”事件,并且有人从被监视的打印机中取出进纸匣,打印机产生状态为“活动”的“缺少进纸匣”事件。“活动”状态满足过滤器的条件,因此执行指定的操作。当进纸匣被装回原位时,打印机产生另一个“缺少进纸匣”事件,状态为“清除”。“清除”状态不满足过滤器的条件,因此操作不被执行。

使用“活动或清除时触发”的过滤器

选择“活动或清除时触发”的过滤器来设置每次在状态变为“活动”或“清除”时执行的操作。例如,使用过滤器来对所有打印机卡纸进行记录,这样可以确定清除卡纸所需要的平均时间。当发生卡纸时,打印机产生状态为“活动”的事件。这满足过滤器的条件,因此执行操作。当卡纸被清除时,打印机产生另一个状态为“清除”的事件。该事件也满足过滤器的条件,因此执行操作。现在,在日志文件中有两行记录,一行是发生卡纸的时间,另一行是清除卡纸的时间。

使用自定义过滤器

使用自定义过滤器来定义如何执行操作。上载脚本文件或编写新的脚本。MarkVision Messenger 提供非常简单的脚本编写语言来定义过滤器。下面是完整的语句和条件的列表,您可以用来编写自定义过滤器:

语句:

条件:

脚本示例 - “活动时触发”的过滤器

下面是内建的“活动时触发”过滤器的脚本表示:

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

EventDataIs 条件的作用是询问事件有关 event: state 关键字的值。这个关键字可以被插入命令行和电子邮件消息中。IfThen 语句在条件 EventDataIs ("state", "ACTIVE") 为真时执行下一条语句。如果关键字(state)与给定的值(ACTIVE)相匹配,则 EventDataIs 条件为真。下一条语句,Distribute,使命令被执行。

脚本示例 - “活动时触发”的过滤器带 30 秒延迟

下面是“活动时触发”的过滤器被延迟 30 秒时使用的脚本示例:

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

大括号({})被用于将语句组成列表。在前面的示例中不需要它们,因为 IfThen 和后面的语句被当作一条语句处理。

WaitUntil 语句使脚本暂停执行,直到条件为真。TimeIsAfter 条件只在经过指定的秒数后检查是否为真。当经过 30 秒之后,如果事件仍然为活动,则 Distribute 语句执行命令。

脚本示例 - “活动或清除时触发”的过滤器

下面是内建的“活动或清除时触发”过滤器的脚本表示,用于下列环境:“缺少进纸匣”事件选定为“进纸匣 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 分钟)之外,循环中的代码与“活动时触发”过滤器的代码相同。