Use os operandos SOAP no construtor de utilitário de subexpressão, uma ferramenta opcional que ajuda a construir condições das regras complexas a partir de subexpressões usando AND, OR, NOT e agrupamento parentético.
Cada classe de trabalho contém uma lista ordenada opcional de regras que são avaliadas para um pedido específico para determinar a política para tal pedido. Cada regra consiste em uma expressão booleana e em um valor de política. Se a expressão for avaliada como verdadeira para um determinado pedido, a política associada a essa regra será utilizada.
A sintaxe e as semânticas de uma expressão booleana para uma regra são semelhantes à cláusula WHERE de uma expressão SQL (Linguagem de consulta estruturada). Mais precisamente, a sintaxe de uma expressão é definida pela especificação JMS (Java Message Service) 1.1. Consulte Classificação de Pedidos Baseada em Regras para obter informações adicionais.
Na especificação JMS, os identificadores referem-se a vários atributos que podem ser associados a um pedido, por exemplo, um parâmetro de consulta específico, um cookie ou um cabeçalho HTTP. Um identificador JMS pode ser visto como uma variável, ou operando, do pedido. Esses operandos podem ser específicos de um protocolo. Por exemplo, o nome do serviço SOAP é um operando que é válido somente em um classe de trabalho de SOAP.
clienthost LIKE '%.ibm.com''%.ibm.com' é um literal que é utilizado para comparação com o nome do host do cliente para um pedido. Essa expressão é verdadeira para todos os pedidos que se originam de um computador no domínio ibm.com. Coloque os literais da cadeia entre aspas simples. Não delimite literais numéricos com aspas simples. Os parênteses, juntamente com os operadores AND, OR e NOT, podem ser usados também para formar expressões booleanas compostas. Consulte a especificação JMS 1.1 para obter uma descrição detalhada.
Operando | Sintaxe | Descrição |
---|---|---|
Host do cliente |
clienthost | O nome completo do host cliente. Este é o valor do nome do host do comando IP (Internet Protocol). Esse operando não suporta operadores numéricos, como >, >=, <, <=. |
Cliente IPV4 |
clientipv4 | O endereço IP do cliente que usa o o tipo de endereço quadrangular pontilhado do Internet Protocol versão 4 (IPv4) n.n.n.n. |
Cliente IPV6 |
clientipv6 | O tipo de endereço IPv6 (Internet Protocol version 6) de 128 bits de x:x:x:x:x:x:x:x seguindo o RFC 1924 (Pedido de Comentários 1924) do computador cliente. |
Nome do Cookie |
cookie$<name> | O nome de um cookie. Por exemplo, a expressão cookie$My_Cookie_Name='My_Cookie_Value' testa
um pedido para ver se ele contém um cookie denominado My_Cookie_Name com
um valor de My_Cookie_Value. Para testar a presença ou a ausência de um determinado cookie, utilize uma das expressões a seguir:
cookie$MyCookieName IS NOT NULL cookie$MyCookieName IS NULL |
Nome do Cabeçalho |
header $<name> | O nome e o valor de um cabeçalho. Por exemplo, a expressão header$Host='localhost' testa um pedido para ver se ele contém um
cabeçalho do host HTTP com um valor de host local.
Para testar a presença ou ausência do cabeçalho do host, utilize uma das seguintes
expressões:
header$Host IS NOT NULL header$Host IS NULL |
Método HTTP |
HTTPMethod | O método HTTP para o pedido. Os possíveis valores são POST, GET, PUT e DELETE. |
Tipo MIME |
MIMEType | O tipo MIME do pedido. |
Operação |
operation | O nome de uma operação de serviço da Web. |
Porcentagem |
percentage$<val> | O operando de porcentagem é avaliado como true,
uma porcentagem fixa do tempo. Por exemplo, percentage$50 é avaliado como true na média de 50% do tempo. |
Porta |
porta | A porta de atendimento na qual o pedido foi recebido. |
Protocolo |
protocol | O protocolo de comunicações que transmite o pedido. Os protocolos suportados atualmente são HTTP, HTTPS, SOAP e SOAPS. |
Parâmetro de consulta |
queryparm$<name> | O nome e o valor de um cabeçalho. Por exemplo, a expressão queryparm$timezone='EST' testa
um pedido para ver se ele contém um parâmetro de consulta HTTP denominado fuso horário com um valor EST. Para testar a presença ou a ausência de um parâmetro de consulta, utilize uma das formas a seguir:
queryparm$timezone IS NOT NULL queryparm$timezone IS NULL |
Rampup |
rampup$<startTime>$<completionTime> | O operando rampup é avaliado como true, uma
porcentagem variável do tempo. Ele é sempre avaliado como false antes de <startTime> e
como true depois de <completionTime>.
Conforme o tempo progride de <startTime> para <completionTime>,
ele é avaliado como true, uma porcentagem de aumento linear. O formato de <startTime> e <completionTime> é day/month/year::hour:min:sec. em que day é o dia do mês, month é um dos doze meses: jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez, year é o ano de 4 dígitos, hour é a hora de 2 dígitos do formato de 24 horas e min e sec são valores de 2 dígitos para minuto e segundo, respectivamente.Por exemplo, rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00 começa a ser avaliado ocasionalmente como true às 8h de 1 de jan de 2007 e é sempre avaliado como true pela hora de conclusão de ramp up às 17h do mesmo dia. |
Host do servidor |
serverhost | O nome completo do host do servidor. Esse operando não suporta operadores numéricos, como >, >=, <, <=. |
IPV4 do servidor |
serveripv4 | O endereço IP do computador servidor que utiliza o tipo de endereço quadrangular pontilhado IPv4 n.n.n.n. |
IPV6 do servidor |
serveripv6 | O tipo de endereço IPv6 de 128 bits de x:x:x:x:x:x:x:x seguindo o RFC 1924 do computador servidor. |
Serviço |
service | O nome de um serviço da Web. |
Time |
time | Usado para definir a data e hora do dia que um determinado pedido deve ser cumprido. Dois campos adicionais são StartTime e EndTime. Se um pedido for recebido fora daquela janela definida, o pedido não será processado. Os campos Start Time e End Time têm o seguinte formato: dayOfWeek/dayOfMonth/month/year::hour:minute:second. Por exemplo, Quinta-feira, 11 de abril de 2007 às 13:03:45 é especificado como: Qui/11/Abr/2007::13:03:45 Qualquer campo pode utilizar um curinga com o valor *. Por exemplo, o primeiro dia de cada mês é especificado como */1. Os valores dayofWeek são dom, seg, ter, qua, qui, sex, sáb e os valores dayOfMonth variam de 1 a 31. O valor mês é um valor não-numérico que representa os doze meses: jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez. O valor year é composto de quatro dígitos do ano. Por exemplo, 2007. O valor hour é a hora do dia no relógio de 24 horas. Por exemplo, 8h é representado como ::8. O minute e second são representados como inteiros que variam de 0-59. A barra (/) é utilizada para separar parâmetros de data, dois-pontos (::) são utilizados para separar a hora dos parâmetros de dia. Note que é o resultado booleano da regra inteira na qual o operando horário que é usado, determina a ação de roteamento utilizada. |
Portal Virtual |
virtualportal | Os portais virtuais são criados dentro do WebSphere Portal Server, e o WebSphere Virtual Enterprise suporta este operando para melhor integração com o WebSphere Portal Server. O portal virtual é a URL do pedido menos a raiz de contexto do módulo da Web de aplicativo WebSphere Portal. Se um determinado módulo corresponder ao portal virtual definido, então, a ação de roteamento definida para essa regra será utilizada. |
A sintaxe para a expressão Xpath é xpathexpr e é suportada pelo SOAP.
A expressão de cadeia XPath tem um campo necessário que contém a expressão XPath e um campo opcional para definir espaço(s) de nomes locais. Se todos os espaços de nomes contidos na expressão XPath forem padrões, então, o segundo campo poderá ser opcional. Se houver vários espaços de nomes locais, então, separe cada um com uma vírgula (,).
O exemplo a seguir mostra uma xpathexpr com uma definição de espaço de nomes local:
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
Na expressão anterior, a expressão XPath é /soap:Envelope/soap:Body/n:getTimeZone/n:clientId. Ela contém o espaço de nomes local de n. Portanto, o segundo campo de xpathexpr é definido como n \\=http://test.classify.ws.ibm.com. O sinal de dólar ($) é utilizado para denotar o início de uma definição de campo. As barras duplas invertidas são a seqüência de escape neste exemplo. O primeiro sinal de igual (=) recebe escape porque faz parte da definição de espaço de nomes local, enquanto o segundo sinal de igual (=) é o operador da expressão de classificação e não deve receber escape.
O exemplo a seguir mostra uma xpathexpr com dois espaços de nomes locais:
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
Espaço de nomes | 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/ |
O WebSphere Virtual Enterprise suporta os operadores na seguinte tabela nas expressões de regras. Esses operadores são referidos também como predicados na terminologia SQL porque comparecem dentro de uma cláusula WHERE ou HAVING. Os operadores não fazem distinção entre maiúsculas e minúsculas.
Operador | Descrição |
---|---|
OR | O operador lógico OR. |
AND | O operador lógico AND. |
NOT | O operador de negação. |
IN | Expressa um operando com vários valores em uma única
expressão. Seu significado é consistente com o significado padrão
do SQL do operador. Por exemplo, se você desejar expressar que o valor da porta seja qualquer um ou todos os valores, como 9080, 9090, 9091, use o fragmento da expressão:
port IN (9080,9090,9091) No SQL, o modo como os valores dentro dos parênteses são expressos, depende do tipo de dado da porta. Se a porta for um número inteiro, os valores sem as aspas simples serão sintaticamente corretos. Se a porta for uma cadeia, a expressão correta será:
port IN ('9080','9090','9091') |
LIKE | Expressa a correspondência padrão dos valores do operando da cadeia. O valor deve conter o caractere curinga (%) na posição onde se espera que a correspondência padrão seja iniciada. Por exemplo,
a expressão:
host LIKE %blancacorresponde à palavra blanca e a qualquer outra palavra que termine em blanca, enquanto a expressão: host LIKE blanca%corresponde à palavra blanca e a qualquer outra palavra que inicie com blanca. A expressão: host LIKE %blanca%corresponde à palavra blanca e a qualquer palavra que tenha o token blanca integrado nela. A classe java.util.regex.Pattern é usada. |
= | O operador de igualdade expressa uma correspondência na correspondência que faz distinção entre maiúsculas e minúsculas. |
> | O operador Greater-than para utilização com operandos numéricos. |
>= | Operador Greater-than ou equal para utilização com operandos numéricos. |
< | Operador Less-than para utilização com operandos numéricos. |
<= | Operador Less-than ou equal para utilização com operandos numéricos. |
< > | Operador Não igual. |
BETWEEN | Utilizado com AND para selecionar um intervalo de valores incluindo o primeiro (baixo) e o último (alto) valores. Juntos, eles operam em números e valores de datas. |
IS NULL | Testa um operando que tenha um valor NULL. |
IS NOT NULL | Testa um operando que tenha um valor diferente de NULL. |