[AIX Solaris HP-UX Linux Windows][z/OS]

Intelligent Management:SOAP 操作数

使用子表达式实用程序构建器中的 SOAP 操作数,此构建器是一个可选工具,可帮助您通过使用 AND、OR、NOT 和括号分组从子表达式构建复杂的规则条件。

使用下列子主题链接以查找特定的信息:

规则

每个工作类都包含一个可选的有序规则列表,对特定请求计算这些规则以确定该请求的策略。每个规则都由一个布尔表达式和一个策略值组成。如果该表达式对于特定请求计算为 true,那么将使用与该规则相关联的策略。

规则的布尔表达式的语法和语义类似于结构化查询语言 (SQL) 表达式的 WHERE 子句。更精确地说,表达式的语法由 Java™ Message Service (JMS) 1.1 规范定义。有关表达式的语法和语义的更多信息,请阅读“基于规则的请求分类”。

在 JMS 规范中,标识指的是与请求相关联的各种属性,例如,特定查询参数、cookie 或 HTTP 头。JMS 标识可视为请求变量或操作数。这些操作数可以特定于协议。例如,SOAP 服务名称是一个仅在 SOAP 工作类中有效的操作数。

因为 SOAP 在 HTTP 之上,因此 HTTP 操作数在 SOAP 请求中也有效。JMS 规范使用字面值来指定在与请求变量进行比较时要使用的特定值。例如,对于表达式:
clienthost LIKE '%.ibm.com'
'%.ibm.com' 是字面值,用于与请求的客户机主机名进行比较。此表达式对于所有由 ibm.com® 域中的计算机发出的请求为 true。用单引号将字符串文字括起。不要用单引号将数字文字括起。另外,还可以将括号以及 ANDORNOT 运算符一起使用以设定复合布尔表达式的格式。请参阅 JMS 1.1 规范以获取详细描述。

SOAP 操作数

表 1. SOAP 中支持的操作数
操作数 语法 描述

客户机主机

clienthost 标准的客户机主机名。这是因特网协议 (IP) 命令主机名的值。此操作数支持 >、>=、< 和 <= 之类的数字运算符。

客户机 IPV4

clientipv4 使用因特网协议 V4 (IPv4) 点分四组地址类型 n.n.n.n 的客户机的 IP 地址。

客户机 IPV6

clientipv6 因特网协议版本 6 (IPv6) 128 位地址类型 x:x:x:x:x:x:x:x,符合客户机的请求评论 1924 (RFC 1924)。

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

头名称

header$<name> 头名称和值。
例如,表达式 header$Host='localhost' 对请求进行测试,以查看它是否包含值为 localhost 的 HTTP 主机头。要测试是存在还是缺少主机头,请使用下列其中一个表达式:
header$Host IS NOT NULL 
header$Host IS NULL

HTTP 方法

HTTPMethod 请求的 HTTP 方法。可能值为 POST、GET、PUT 和 DELETE。

MIME 类型

MIMEType 请求的 MIME 类型。

操作

operation Web Service 操作的名称。

百分比

percentage$<val> 百分比操作数对时间的固定百分比求值为 true

例如,percentage$50 对时间的平均值 50% 求值为 true

端口

端口(port) 接收请求所在的侦听端口。

协议

协议 用于传输请求的通信协议。当前受支持的协议是 HTTP、HTTPS、SOAP 和 SOAPS。

查询参数

queryparm$<name> 头名称和值。
例如,表达式 queryparm$timezone='EST' 对请求进行测试,以查看它是否包含名为 timezone、值为 EST 的 HTTP 查询参数。要测试是存在还是缺少查询参数,请使用下列其中一种形式:
queryparm$timezone IS NOT NULL 
queryparm$timezone IS NULL

Rampup

rampup$<startTime>

$<completionTime>

rampup 操作数对时间的可变百分比求值为 true。在 <startTime> 之前,此操作数始终求值为 false;在 <completionTime> 之后,它始终求值为 true。随着时间从 <startTime> 推移到 <completionTime>,此操作数按线性递增百分比概率求值为 true

<startTime><completionTime> 的格式为 day/month/year::hour:min:sec

其中 day 表示月份中的日期,month 表示月份(Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec),year 是用 4 位数字表示的年份,hour 是用 2 位数字表示的 24 小时制的小时,minsec 分别是用 2 位数字值表示的分钟和秒。

例如,

rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00 开始在 2007 年 1 月 1 日上午 8 点偶然求值为 true,并且在同一天的下午 5 点 ramp up 完成时一直求值为 true

服务器主机

serverhost 服务器的标准主机名称。此操作数支持 >、>=、< 和 <= 之类的数字运算符。

服务器 IPV4

serveripv4 服务器计算机的 IP 地址,使用 IPv4 点分四段地址类型 n.n.n.n

服务器 IPV6

serveripv6 IPv6 128 位地址类型 x:x:x:x:x:x:x:x,遵循服务器计算机的 RFC 1924 协议。

Service

服务 Web Service 的名称。

时间

time

用于定义必须执行给定请求的日期和时间。两个可选字段是“开始时间”和“结束时间”。如果在所定义的时间范围以外收到请求,那么将不处理该请求。

“开始时间”和“结束时间”字段都使用以下格式:dayOfWeek/dayOfMonth/month/year::hour:minute:second

例如,2007 年 4 月 11 日星期四下午 1 点 3 分 45 秒被指定为:

Thu/11/Apr/2007::13:03:45

任何字段都可以使用值 * 作为通配符。

例如,将每个月的第一天指定为 */1。

dayofWeek 值为 Sun、Mon、Tue、Wed、Thu、Fri 和 Sat,而 dayOfMonth 值的范围介于 1 至 31。

month 值是表示十二个月的非数字值:Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov 和 Dec。

year 值由表示某个年份的四个数字组成。例如 2007。

hour 值是一天中的某个小时(以 24 小时制表示)。例如,早上 8 点表示为 ::8。minutesecond 是范围介于 0 至 59 的整数。

正斜杠(/)用于分隔 date 参数、双冒号(::)用于分隔 hour 参数以及冒号(:)用于分隔 timeOfDay 参数。注意,由使用了 time 操作数的整个规则的布尔结果确定要执行的路由操作。

虚拟门户网站

virtualportal 在 WebSphere® Portal Server 中创建虚拟门户网站,并且 Intelligent Management 支持此操作数以与 WebSphere Portal Server 更好地集成在一起。从请求 URL 中减去 WebSphere Portal 应用程序的 Web 模块的上下文根即可得到虚拟门户网站。如果给定请求与已定义的虚拟门户网站匹配,那么将执行对该规则定义的路由操作。

Xpath 表达式

Xpath 表达式的语法是 xpathexpr,并受 SOAP 支持。

XPath 字符串表达式有一个用于包含 XPath 表达式的必需字段和一个用于定义局部名称空间的可选字段。如果 XPath 表达式中包含的所有名称空间都是标准的,那么第二个字段可以是可选的。如果存在多个局部名称空间,那么使用逗号(,)分隔各个局部名称空间。

以下示例显示带有一个局部名称空间定义的 xpathexpr:

xpathexpr$/soap:Envelope/soap:Body/m:getTimeZone/n:clientId$m\\=http://test.classify.ws.ibm.com,n\\=http://test2.classify.ws.ibm.com 
 = \\'1000\\' or operation IS NOT NULL

在上一表达式中,XPath 表达式为 /soap:Envelope/soap:Body/n:getTimeZone/n:clientId。它包含 n 局部名称空间。因此,xpathexpr 的第二个字段定义为 n \\=http://test.classify.ws.ibm.com。美元符号($)用于表示字段定义的开头。在此示例中,双反斜杠是转义序列。第一个等于号(=)是局部名称空间定义的一部分,因此进行了转义,而第二个等于号(=)是分类表达式中的运算符,不能转义。

以下示例显示带有两个局部名称空间的 xpathexpr:

xpathexpr$/soap:Envelope/soap:Body/m:getTimeZone/n:clientId$m\\=http://test.classify.ws.ibm.com,n\\=http://test2.classify.ws.ibm.com 
 = \\'1000\\' or operation IS NOT NULL
下表显示了 xpathexpr 表达式的标准名称空间:
表 2. 名称空间
名称空间 URL
soap http://schemas.xmlsoap.org/soap/envelope/
soap-env http://schemas.xmlsoap.org/soap/envelope/
soapenc http://schemas.xmlsoap.org/soap/encoding/
soapbind http://schemas.xmlsoap.org/wsdl/soap/
xsd http://www.w3.org/2001/XMLSchema
xsi http://www.w3.org/2001/XMLSchema-instance
xsi http://ws-i.org/schemas/conformanceClaim/
wsdl http://schemas.xmlsoap.org/wsdl/

运算符

Intelligent Management 支持在下表中的规则表达式中使用运算符。因为这些运算符出现在 WHERE 或 HAVING 子句中,所以在 SQL 术语中也将其称为谓词。运算符不区分大小写。

表 3. 请求分类运算符
运算符 描述
OR 逻辑 OR 运算符。
AND 逻辑 AND 运算符。
NOT 否定运算符。
IN 在单个表达式中使用多个值来表示一个操作数。其含义与运算符的 SQL 标准含义一致。
例如,如果要将端口值表示为 9080、9090 和 9091 等值中的任意值或所有值,请使用表达式片段:
port IN (9080,9090,9091)
在 SQL 中,如何在括号中表示这些值取决于端口的数据类型。如果端口是整数,那么未加单引号的值在语法上是正确的。如果端口是字符串,那么正确的表达式为:
port IN ('9080','9090','9091')
LIKE

表示针对字符串操作数值的模式匹配。值必须在模式匹配的预期开始位置包含通配符 (%)。

例如,表达式:
host LIKE %blanca
匹配单词 blanca 和任何其他以 blanca 结尾的值,而表达式为:
host LIKE blanca%
匹配单词 blanca 和任何其他以 blanca 开头的单词。表达式:
host LIKE %blanca%
匹配单词 blanca 和任何包含其中嵌入标记 blanca 的单词。

使用了 java.util.regex.Pattern 类。

= “等于”运算符表示匹配时区分大小写。
> “大于”运算符,与数字操作数配合使用。
>= “大于”或“等于”运算符,与数字操作数配合使用。
< “小于”运算符,与数字操作数配合使用。
<= “小于”或“等于”运算符,与数字操作数配合使用。
< > “不等于”运算符。
BETWEEN AND 配合使用,用于选择一组值,包括第一个值(下限值)和最后一个值(上限值)。这两个运算符可以共同对数字和日期值执行运算。
IS NULL 测试操作数是否包含 NULL 值。
IS NOT NULL 测试操作数是否包含非 NULL 值。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwve_odrsoap
文件名:rwve_odrsoap.html