# Construtor de Subexpressões

Utilize o construtor de subexpressões para construir condições de regras complexas de subexpressões utilizando AND, OR, NOT e agrupamento parentético. O construtor de regras valida a regra quando você aplica as alterações e o alerta para os parênteses não correspondidos e os operadores de lógica não suportados.

Para visualizar essa página de console administrativo, clique em Servidores > Tipos de Servidor > On Demand Routers > odr_name > Propriedades On Demand Router > Políticas de Serviço de Cluster de Servidor Genérico > work_class_name > Addrule > Construtor de Subexpressão.

Para modificar regras com o Construtor de Subexpressões, você deve ter privilégios administrativos de administrador.

## Selecionar Operando

Dependendo do protocolo selecionado, são exibidos operandos diferentes. A tabela a seguir inclui os nomes dos operandos, como exibidos no console, o operando real como aparecerá na expressão, os protocolos válidos por operando e a descrição para cada operando.

Tabela 1. Operandos e suas Descrições
Operando Exibido | Operando | Protocolos Válidos | Descrição
--- | --- | --- | ---
Nome do Aplicativo | `application` | IIOP | O nome do aplicativo onde o EJB está contido.
Host Cliente | `clienthost` | HTTP, SOAP, IIOP | O nome do host cliente completo. Este é o valor do nome do host do comando IP (Internet Protocol). Este operando não suporta operadores numéricos, como `>, >=, <, <=`.
Porta de Cliente | `clientport` | IIOP | O nome da porta do cliente.
Cliente IPV4 | `clientipv4` | HTTP, SOAP | O endereço do Protocolo da Internet Versão 4 do cliente, utilizando o tipo de endereço com pontos: `n.n.n.n`
Cliente IPV6 | `clientipv6` | HTTP, SOAP | O tipo de endereço do Protocolo da Internet Versão 6 de 128 bits `x:x:x:x:x:x:x:x` do computador cliente.
Nome do cabeçalho do cookie | `cookie$<name>` | HTTP, SOAP | Um nome de 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 ausência de um cookie em particular, utilize uma das expressões a seguir: cookie$MyCookieName IS NOT NULL cookie$MyCookieName IS NULL
Nome do módulo EJB | `ejbmodule` | IIOP | O nome do módulo de um EJB.
Nome de EJB | `ejbname` | IIOP | O nome de um EJB.
Nome do método EJB | `ejbmethod` | IIOP | O nome de um método no EJB.
IDs de Grupos | `gids$<name>` | HTTP, SOAP | O ID do grupo do emissor de pedido.
Método HTTP | `HTTPMethod` | HTTP, SOAP | O método HTTP para o pedido. Os valores possíveis são POST, GET, PUT e DELETE.
Tipo MIME | `MIMEType` | HTTP, SOAP | O tipo MIME do pedido.
Porta | `port` | HTTP, SOAP, IIOP | A porta de atendimento em que o serviço é fornecido no host.
Protocolo | `protocolo` | HTTP, SOAP | O protocolo de comunicações que transmite o pedido. Os protocolos suportados atualmente são HTTP, HTTPS, SOAP e SOAPS
Nome do cabeçalho do pedido | `header$<name>` | HTTP, SOAP | 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``
Nome do parâmetro da consulta do pedido | `queryparm$<name>` | HTTP, SOAP | Um nome do parâmetro de consulta especificado na URL de pedido. Para cada pedido, existe um mapa de par nome/valor de parâmetros de consulta, se eles existem. O ODR (roteador on-demand) utiliza o nome de parâmetro de consulta de pedido como uma chave para o mapa de parâmetro e, se ele existe, extrai o valor para avaliar a expressão da regra. Se a regra corresponder, então, a ação especificada será executada. Caso contrário, a ação padrão para a classe de trabalho na qual a expressão é definida será utilizada. Por exemplo, a expressão `queryparm$timezone=EST` testa uma solicitação para ver se ela contém um parâmetro de consulta HTTP denominado `timezone` com um valor de `EST`. Para testar a presença ou ausência de um parâmetro de consulta, utilize um dos seguintes comandos: `queryparm$timezone IS NOT NULL` `queryparm$timezone IS NULL`
Atribuições | `roles$<name>` | HTTP, SOAP | A função do emissor de pedido.
Host do Servidor | `serverhost` | HTTP, SOAP, IIOP | O nome completo do host do servidor. Este operando não suporta operadores numéricos como `>, >=, <, <=.`
Servidor IPV4 | `serveripv4` | HTTP, SOAP | O endereço IP da máquina servidor utilizando o tipo de endereço quadrangular pontilhado IPv4 n.n.n.n.
Servidor IPV6 | `serveripv6` | HTTP, SOAP | O tipo de endereço IPv6 de 128 bits de x:x:x:x:x:x:x:x seguindo o RFC 1924 da máquina servidor.
Tempo | `time` | HTTP, SOAP, IIOP | O operando de tempo tem o seguinte formato: `dayOfWeek/dayOfMonth/month/year::hour:minute:second` dayofWeek os valores incluem Dom, Seg, Ter, Qua, Qui, Sex, Sab. dayOfMonth inclui os valores 1 a 31. month é o valor numérico que representa o mês, iniciando com janeiro como 1 e dezembro como 12. Por exemplo, um valor numérico 5 representa o mês de maio. year é o ano de quatro dígitos. Por exemplo, 2007. hour é a hora do dia no formato de 24 horas. minute são inteiros num intervalo de 0 a 59. second são inteiros num intervalo de 0 a 59. Nota: Omissões e curingas não são suportados para o operando time. A barra (/) é utilizada para separar parâmetros de data, os dois pontos duplos (::) são utilizados para separar os parâmetros de data e hora, e os dois pontos (:) são utilizados para separar a hora dos parâmetros do dia. Observe que esse é o resultado booleano da regra inteira no qual o operando de tempo é utilizado para determinar a ação de roteamento adotada.
Id do usuário | `uid$<name>` | HTTP, SOAP | O ID do usuário do emissor de pedido.
Portal virtual | `virtualportal` | HTTP, SOAP | O portal virtual é a URL de solicitação menos a raiz de contexto para o módulo da Web do aplicativo do aplicativo WebSphere® Portal. Se um determinado pedido corresponde ao portal virtual definido, então, a ação de roteamento definida para essa regra é adotada.
Expressão do XPath | `xpathexpr` | SOAP | A expressão de cadeia XPath possui um campo necessário, utilizado para conter a expressão XPath e um campo opcional para a definição do(s) espaço(s) de nomes local(is). Se todos os espaços de nomes contidos na expressão XPath forem padrão, então o segundo campo pode ser opcional. Se há vários espaços de nomes locais, então separe cada um com vírgula (,). O seguinte é um exemplo de um 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`

## Operador

- = O operador de igualdade expressa uma correspondência que faz distinção entre maiúsculas e minúsculas.
- <> O operador diferente de expressa que o valor do operando não é igual ao valor digitado.
- > O operador maior que deve ser utilizado com números.
- >= O operador maior que ou igual a deve ser utilizado com números.
- < O operador menor que deve ser utilizado com números.
- <= O operador menor que ou igual a deve ser utilizado com números.
- AND: Para `xx` AND `yy`, expressa correspondências que contêm `xx`, `yy`.
- BETWEEN: Esse operador é utilizado com AND para selecionar um intervalo de valores incluindo o primeiro valor ou inferior e o último valor ou superior. Juntos eles operam em números e datas.
- EXISTS: Esse operador Booleano verifica um operando ou o resultado de uma subexpressão composta, por exemplo, enquanto verifica determinados atributos de elemento do cabeçalho HTTP.
- IN: Esse operador expressa um operando com vários valores em uma única expressão. Por exemplo, se, para um operando chamado `port`, você desejar expressar que o valor da porta pode ser qualquer um ou todos os valores, como `9080`, `9090`, `9091`, o fragmento da expressão será`port IN (9080,9090,9091)`. Como os valores dentro dos suportes são expressos depende do tipo de dados da porta. Se a porta for um inteiro, a sintaxe correta será os valores sem aspas. Se a porta for uma sequência, a sintaxe correta será `port IN (9080,9090,9091)`.
- IS NULL: Esse operador expressa que a validação da consulta mostra que o parâmetro solicitado não existe.
- IS NOT NULL: Esse operador expressa que a validação da consulta mostra que o parâmetro solicitado existe.
- LIKE: Esse padrão expressa a correspondência padrão dos valores de operando de cadeia. O valor deve conter o caractere curinga de sinal de porcentagem (%) na posição em que iniciar a correspondência padrão. Por exemplo, a expressão `host LIKE %blanca` fará a correspondência da palavra blanca ou de qualquer outra palavra que termine em blanca, enquanto a expressão `host LIKE blanca%` fará a correspondência da palavra blanca ou de qualquer outra palavra que comece com blanca e a expressão `host LIKE %blanca%` fará a correspondência da palavra blanca ou de qualquer palavra que tenha blanca embutida nela.
- NOT: Para NOT `xx`, esse operador expressa as correspondências não contêm `xx`.
- OR: Para `xx` OR `yy`, esse operador expressa as correspondências que contêm `xx`, `yy`.

## Valor

Dependendo do operador escolhido, digite um valor para a subexpressão que você deseja criar.

## Construir Subexpressão

Gere a subexpressão como um resultado do operando, operador e valores que você especificou.

## Subexpressão Gerada

Copie e cole essa subexpressão em sua regra.

Informações relacionadas:
Políticas de Roteamento On Demand Router
Políticas de Serviço para On Demand Router
Definir Associações de Classe de Trabalho e Regras

Nome do Arquivo: wc_rulebuilder_detail.html