# 子表达式构建器设置

通过使用 AND、OR、NOT 和括号进行分组，可以使用子表达式构建器，根据子表达式构建复杂的规则条件。当您应用更改时，规则构建器将对规则进行验证。如果找到未配对的括号以及不支持的逻辑运算符，那么将发出警报。

要查看此页面，请单击服务器 > 服务器类型 > Web 服务器 > web_server_name > Intelligent Management > 跟踪规范 > 子表达式构建器。

## 逻辑运算符

以下列表显示了逻辑运算符选项：

表 1. 跟踪逻辑运算符
运算符 | 描述
--- | ---
`OR` | 逻辑 `OR` 运算符。
`AND` | 逻辑 `AND` 运算符。
`NOT` | 逻辑 `NOT` 运算符。

## 选择操作数

操作数包含在由运行时用来使规则与作业匹配的分类规则中。例如，如果您指定协议类型等于 `HTTP`，那么运行时将搜索协议类型为 `HTTP` 的作业。以下列表显示了操作数选项：

表 2. HTTP 请求操作数
操作数 | 语法 | 描述
--- | --- | ---
虚拟主机 | `virtualhost` | 请求的虚拟主机目标，用来将 Web 应用程序配置到特定主机名。
虚拟端口 | `numeric` | 请求的虚拟端口目标，用来将 Web 应用程序配置到特定端口。
URI | `uri` | 统一资源标识 帮助您识别请求的路径：如果 URL 为 http://host:port/path?p1=v1，那么路径为 `path`。
用户标识 | `userid` | 返回发送请求的已认证的用户的用户标识。
组标识 | `groupingid` | 返回发送请求的已认证的用户的组名的列表。
请求查询参数名 | `queryparm$<name>` | 头的名称或值。 例如，表达式 `queryparm$timezone='EST'` 测试请求以了解该请求是否包含名为 `timezone` 并且值为 `EST` 的 HTTP 查询参数。要测试查询参数是否存在，请使用下列其中一种格式：
    queryparm$timezone IS NOT NULL
    queryparm$timezone IS NULL
请求头名称 | `header$<name>` | 头的名称或值。 例如，表达式 `header$Host='localhost'` 会测试请求以了解它是否包含值为 `localhost` 的 HTTP 主机头。要测试主机头是否存在，请使用下列其中一个表达式：
    header$Host IS NOT NULL
    header$Host IS NULL
Cookie 头名称 | `cookie$<name>` | cookie 名称。 例如，表达式 `cookie$My_Cookie_Name='My_Cookie_Value'` 会测试请求，以了解它是否包含名为 `My_Cookie_Name` 并且值为 `My_Cookie_Value` 的 cookie。要测试特定 cookie 是否存在，请使用下列其中一个表达式：
    cookie$MyCookieName IS NOT NULL
    cookie$MyCookieName IS NULL
HTTP 方法 | `HTTPMethod` | 请求的 HTTP 方法。可能的值包括 POST、GET、PUT 和 DELETE。
客户机主机 | `clienthost` | 标准客户机主机名。此值为因特网协议 (IP) 命令主机名。此操作数不支持 `>、>=、< 和 <=` 之类的数字运算符。
客户机 IPV4 | `clientipv4` | 客户机的 IP 地址，使用因特网协议版本 4（IPv4）点分四段地址类型 `n.n.n.n`。
客户机 IPV6 | `clientipv6` | 因特网协议版本 6（IPv6）128 位地址类型 `x:x:x:x:x:x:x:x`，符合客户机的 Request for Comments 1924（RFC 1924）。
服务器主机 | `serverhost` | 服务器的标准主机名。此操作数不支持 `>、>=、< 和 <=` 之类的数字运算符。
服务器 IPV4 | `serveripv4` | 服务器的 IP 地址，使用 IPv4 点分四段地址类型 `n.n.n.n`。
服务器 IPV6 | `serveripv6` | IPv6 128 位地址类型 `x:x:x:x:x:x:x:x`，遵循服务器的 RFC 1924 协议。
端口 | `port` | 接收到请求的侦听端口。
协议 | `protocol` | 传送请求的通信协议。当前支持的协议包括 HTTP、HTTPS、SOAP 和 SOAPS。
时间 | `time` | 用于定义必须处理特定请求的当日的日期和时间。两个可选字段是 `StartTime` 和 `EndTime`。如果在该已定义窗口外接收到请求，那么不会处理该请求。 “开始时间和结束时间”字段都必须使用以下格式：`dayOfWeek/dayOfMonth/month/year::hour:minute:second`。 例如，2007 年 4 月 11 日下午 1:03:45 指定为： Thu/11/Apr/2007::13:03:45 任何字段都可使用值为 * 的通配符。 例如，每个月的第一天指定为 `*/1`。 `dayofWeek` 值为 Sun、Mon、Tue、Wed、Thu、Fri、Sat，而 `dayOfMonth` 值的范围是 1 到 31。 `month` 值是表示 12 个月的非数字值：Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec。 `year` 值由表示年份的 4 位数字组成。例如，2007。 `hour` 值是以 24 小时制表示的当天小时。例如，8am 表示为 ::8。`minute` 和 `second` 是范围在 0 到 59 之间的整数。 正斜杠 (/) 用于分隔 date 参数、双冒号 (::) 用于分隔 hour 参数以及冒号 (:) 用于分隔 timeOfDay 参数。使用了 `time` 操作数的整个规则的布尔结果确定要执行的路由操作。
百分比 | `percentage$<val>` | 百分比操作数对时间的固定百分比求值为 `true`。 例如，`percentage$50` 对时间的平均值 50% 求值为 `true`。
Ramp up | `rampup$<startTime>$<completionTime>` | `rampup` 操作数对时间的可变百分比求值为 `true`。它在 `<startTime>` 之前一直求值为 `false`，在 `<completionTime>` 之后一直求值为 `true`。从 `<startTime>` 至 `<completionTime>` 的时间内，它对线性增长的百分比求值为 `true`。 `<startTime>` 和 `<completionTime>` 的格式为 `day/month/year::hour:min:sec`。 其中 `day` 表示月份中的日期，`month` 表示12 个月（Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec）中的一个月，`year` 是用 4 位数字表示的年份，`hour` 是用 2 位数字表示的 24 小时制的小时，`min` 和 `sec` 分别是用 2 位数字值表示的分钟和秒。 例如， `rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00` 开始在 2007 年 1 月 1 日上午 8 点偶然求值为 `true`，并且在同一天的下午 5 点 ramp up 完成时一直求值为 `true`。

## 运算符

根据选择的运算符，为要创建的子表达式输入值。所有运算符都求值为布尔值。运算符不区分大小写：`AND` 等同于 `AnD`。

表 3. 跟踪规范运算符
运算符 | 描述
--- | ---
忽略大小写等于 (EQUALSIGNORECASE) | 忽略大小写等于运算符。将会忽略字符串的大小写。`'ABC' EQUALSIGNORECASE 'abc'` 为 true。`('ABC' = 'abc')` 为 false。
不等于 (< >) | “不等于”运算符表示操作数值与输入的值不相等。
包含 (IN) | 当左边的字符串与右边列示的字符串完全匹配（区分大小写）时，`string IN list of strings` 求值为 true。例如： ’adrian’ in `('keith','eric','kalyan','david', 'adrian and etc')` 为 false。 `'adrian'` in `('tom','adrian')`为 true。 ’adrian’ in `('Tom','Adrian')`为 false。 `integer IN list of integers`： `1` in `(1,2,3,4,5)` 为 true。 `6` in `(1,2,3,4,5)`为 false。
模式匹配 (LIKE) | 表示针对字符串操作数值的模式匹配。在模式匹配的预期开始位置，值必须包含通配符 (`%`)。 例如，表达式：
    host LIKE %blanca
匹配单词 `blanca` 以及任何其他以 `blanca` 结尾的词，而表达式：
    host LIKE blanca%
匹配单词 `blanca` 以及任何其他以 `blanca` 开头的表达式。表达式：
    host LIKE %blanca%
匹配单词 `blanca` 和内嵌有标记 `blanca` 的任何单词。
忽略大小写模式匹配 (LIKEIGNORECASE) | 此运算符表示针对字符串操作数值的模式匹配。将会忽略字符串的大小写。
不为 Null (IS NOT NULL) | 查询验证结果表明所请求的参数存在。
连接 (+) | 此运算符将 `'abc'+'def'` 求值为 `'abcdef'`。
模式匹配包含 (LIKEIN) | 当 `likein` 左边的字符串与一个或多个字符串 (stringN) 匹配时，此运算符表示 `string likein (string1, string2, string3,...)` 求值为 true。
为 Null (IS NULL) | 查询验证结果表明所请求的参数不存在。操作数测试值为 `NULL`。
等于 ( = ) | “等于”运算符表示以区分大小写方式进行匹配。
大于 (>) | 求值为标准逻辑结果。
大于或等于 (>=) | 求值为标准逻辑结果。
小于 (<) | 求值为标准逻辑结果。
小于或等于 (<=) | 求值为标准逻辑结果。
Between (BETWEEN) | 与 `AND` 配合使用，用于选择一组值，包括第一个值（下限值）和最后一个值（上限值）。这两个运算符可以共同对数字和日期值执行运算。

## 值

根据所选运算符的不同，输入要创建的子表达式的值。

## 生成子表达式

根据已指定的操作数、运算符和值，生成子表达式。

## 追加

单击以追加至条件面板上的框。

相关信息：
Intelligent Management for web server 插件
跟踪规范
Intelligent Management 插件属性
Intelligent Management 属性集合
Web 服务器 Intelligent Management 远程单元

文件名：uwve_tracerulebuilder.html