WebSphere WebSphere Enterprise Service Bus V6.0.1 操作系统: AIX, HP-UX, Linux, Solaris, Windows

编写事件选择器

事件选择器定义一组事件。

事件选择器是一个正则表达式,它根据事件的属性数据(属性或子元素)定义一组事件。例如,事件选择器可以指定特定主机中严重性超出 30(警告)的所有事件。事件选择器用来定义事件组、指定过滤条件和查询事件服务器。

因为公共基本事件规范是以 XML 为基础的,所以事件选择器是使用 XPath 语法的子集编写的。您可以用于事件选择器的特定语法取决于事件选择器的使用方式(如下表所述)。

事件选择器用途 语法
事件组定义 限制为缺省数据存储插件支持的 XPath 子集
通过事件访问接口查询和清除事件 限制为缺省数据存储插件支持的 XPath 子集
发射器过滤器配置 任何有效的 XPath
通过通知辅助控件接口进行预订 任何有效的 XPath
注: 缺省数据存储插件使用 XPath 语法的子集。但是,如果使用另一数据存储插件,它可能支持 XPath 语法的另一子集。您为事件组定义和事件访问接口编写的事件选择器必须使用数据存储插件支持的语法。

编写 XPath 事件选择器

XPath 是一种用于识别 XML 文档各部分的标准语言;有关更多信息,请参阅位于 http://www.w3.org/TR/xpath 的 XPath 规范。

指定属性值的简单 XPath 事件选择器形式如下:
CommonBaseEvent[@attribute = value]
value 可以是数值或用单引号或双引号括起来的字符串。
您还可以指定子元素的属性:
CommonBaseEvent[/subelement/@attribute = value]

使用 XPath 运算符时,请记住以下一般规则:

以下示例是有效的 XPath 事件选择器。

XPath 事件选择器 选择器定义
CommonBaseEvent[@extensionName = 'ApplicationStarted'] extensionName 属性为 ApplicationStarted 的所有事件
CommonBaseEvent[sourceComponentId/ @location = "server1"] 包含 location 属性为 server1 的 sourceComponentId 元素的所有事件
CommonBaseEvent[@severity] 带有 severity 属性(无论值为多少)的所有事件
CommonBaseEvent[@creationTime < '2003-12-10T12:00:00-05:00' and @severity > 30] 2003 年 12 月 10 日美国东部时间中午之前创建的、严重性超出 30(警告)的所有事件
CommonBaseEvent[contains(@msg, 'disk full')] msg 属性中出现短语 disk full 的所有事件
CommonBaseEvent[(@severity = 30 or @severity = 50) and @priority = 100] severity 属性等于 30 或 50 且 priority 等于 100 的所有事件。

为缺省数据存储插件编写事件选择器

如果事件选择器可能用于定义事件组或查询持久数据存储,它受到缺省数据存储插件的限制。这些限制如下:
  • 只能在运算符或 XPath 函数的左侧指定事件属性。运算符右侧的值必须是文字值。以下示例不是有效的事件选择器:
    CommonBaseEvent[30 < @priority and 
                    contains('this message', @msg)]
    反而可能会重写为如下所示:
    CommonBaseEvent[@priority > 30 and 
                    contains(@msg, 'this message')]
  • 仅支持下列 XPath 函数:
    • contains
    • starts-with
    • false
    • true
    • not
  • 不支持联合运算符(|)。
  • 事件选择器必须采用以下形式:
    CommonBaseEvent[predicate_expression]
    只有单个谓词表达式能与 CommonBaseEvent 元素关联。堆栈化谓词不受支持(如 CommonBaseEvent[@extensionName = "server_down"][@severity = 10])。
  • 谓词只能与位置路径的最后一个步骤相关联。以下示例不是有效的事件选择器:
    CommonBaseEvent[contextDataElement[@contextValue = "myContextValue"]
                    /@contextId = "myContextId"]
    反而可能会重写为如下所示:
    CommonBaseEvent[contextDataElement[@contextValue = "myContextValue" 
                    and @contextId = "myContextId"]]
  • 如果事件选择器引用的扩展数据元素的属性处于 XML 容器分层结构不同级别时,必须按级别将这些元素归在一起。以下示例不是有效的事件选择器,原因是对 extendedDataElementstypevalue 属性(都是顶级)的引用被隔开了:
    CommonBaseEvent[extendedDataElements[@type = 'int' and
                                         children/@type = 'intArray' and
                                         children/@name = 'myName' and
                                         @value = 10]]
    反而可能会重写为如下所示,将顶级和次组属性组合到一起:
    CommonBaseEvent[extendedDataElements[@type = 'int' and
                                         @value = 10 and
                                         children/@type = 'intArray' and
                                         children/@type = 'myName']]
  • 节点索引不受支持(如 CommonBaseEvent[extendedDataElements[1]])。
  • 通配符不受支持(如 CommonBaseEvent[extendedDataElements/*/children/values = "text"])。
  • 引用扩展数据元素的 values 属性时,必须同时指定属性的值和类型:
    CommonBaseEvent[extendedDataElements[values = "myVal" 
      and @type = "string"]]
    可通过用圆括号将复合表达式中的多个比较括在一起来对它们指定类型:
    CommonBaseEvent[extendedDataElements[(values = "myVal" or 
                                          values = "yourVal") and
                                          @type = "string"]]
    在此示例中,type 表达式适用于圆括号中复合表达式的两个部分。您不能通过在圆括号内指定另一 type 表达式来覆盖它。
    还可以通过使用 starts-withcontains 函数来将多个相关类型组合到一起。例如,以下表达式将属性与字符串或 stringArray 类型相匹配:
    CommonBaseEvent[extendedDataElements[values = "myVal" and
                                         starts-with(@type, 'string')]]

概念主题

使用条款 | 评价此页

Timestamp icon上次更新时间: 3 Mar 2006
http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.wesb.doc.nl1_6.0.1\doc\ccei_adminCBEB_eventselector.html

(C) Copyright IBM Corporation 2005, 2006. All Rights Reserved.
本信息中心基于 Eclipse 技术。(http://www.eclipse.org)