# Construtor de Expressões de Regras de SIP

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 > Configurações SIP On Demand Router > Regras de SIP de Política de Roteamento > Incluir > Construtor de Subexpressão.

Para modificar regras com o construtor de regras, você deve ter privilégios administrativos de administrador.

## Selecionar Operando

### Operandos de Política de Roteamento e Serviço

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. A tabela a seguir descreve os nomes de operando exibidos no console
Variável do Pedido | Protocolos Válidos | Descrição
--- | --- | ---
`application` | IIOP | O nome do Aplicativo Corporativo no qual o EJB está contido.
`clienthost` | HTTP SOAP IIOP SIP | 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 `>, >=, <, <=`.
`clientport` | IIOP | O nome da porta do cliente.
`clientipv4` | HTTP SOAP SIP | O endereço IP do computador cliente que utiliza o tipo de endereço quadrangular pontilhado IPv4 (Internet Protocol version 4) `n.n.n.n`.
`clientipv6` | HTTP SOAP SIP | 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.
`Cabeçalho de contato` | SIP | O campo Cabeçalho de Contato.
`URI de contato` | SIP | O URI do campo Cabeçalho de Contato.
`cookie$<name>` | HTTP SOAP | 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
`ejbmodule` | IIOP | O nome do módulo de um EJB.
`ejbname` | IIOP | O nome de um EJB.
`ejbmethod` | IIOP | O nome de um método no EJB.
`Cabeçalho de origem` | SIP | O campo Cabeçalho de Origem.
`Nome de exibição do cabeçalho de origem` | SIP | O nome de exibição no campo Cabeçalho de Origem.
`URI de origem` | SIP | O URI do campo Cabeçalho de Origem.
`Host do URI de origem` | SIP | O host no campo Cabeçalho de Origem.
`Porta do URI de origem` | SIP | A porta no URI do campo Cabeçalho de Origem.
`Usuário do URI de origem` | SIP | O usuário no campo Cabeçalho de Origem.
`header$<name>` | HTTP SOAP SIP | 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
`HTTPMethod` | HTTP SOAP | O método HTTP para o pedido. Os possíveis valores são POST, GET, PUT e DELETE.
`MIMEType` | HTTP SOAP | O tipo MIME do pedido.
`operação` | SOAP | O nome de uma operação de serviço da Web.
`percentage$<val>` | HTTP SOAP IIOP SIP | 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.
`port` | HTTP SOAP IIOP SIP | A porta de atendimento na qual o pedido foi recebido.
`protocolo` | HTTP SOAP | O protocolo de comunicações que transmite o pedido. Os protocolos suportados atualmente são HTTP, HTTPS, SOAP e SOAPS.
`queryparm$<name>` | HTTP SOAP | 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$<startTime>$<completionTime>` | HTTP SOAP IIOP SIP | 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.
`Transporte de pedido` | SIP | O transporte do pedido.
`URI do pedido` | SIP | O URI do pedido.
`Host do URI do pedido` | SIP | O host no URI do pedido.
`Porta do URI do pedido` | SIP | A porta no URI do pedido.
`Usuário do URI do pedido` | SIP | O usuário no URI do pedido.
`Esquema do Cabeçalho de origem` | SIP | O esquema do campo Cabeçalho de Origem.
`Esquema do Cabeçalho de destino` | SIP | O esquema do campo Cabeçalho de Destino.
`Esquema do URI` | SIP | O esquema do URI.
`serverhost` | HTTP SOAP IIOP SIP | O nome completo do host do servidor. Esse operando não suporta operadores numéricos, como `>, >=, <, <=`.
`serveripv4` | HTTP SOAP SIP | O endereço IP do computador servidor que utiliza o tipo de endereço quadrangular pontilhado IPv4 `n.n.n.n`.
`serveripv6` | HTTP SOAP SIP | 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.
`service` | SOAP | O nome de um serviço da Web.
`Método SIP` | SIP | O método SIP do pedido. Os valores possíveis são INVITE, TRYING, RINGING, ACK, OK e BYE. Se a mensagem não for um pedido, esse operando retornará nulo.
`Código de resposta do SIP` | SIP | O código da resposta. Se a mensagem não for uma resposta, esse operando retornará -1.
`time` | HTTP SOAP IIOP | Esse operando é utilizado para definir a data e a 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 month é 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, os dois-pontos duplos (::) são utilizados para separar os valores 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 time é utilizado para determinar a ação de roteamento adotada.
`Host do cliente de destino` | SIP | O host do cliente no campo Cabeçalho de Destino.
`Cabeçalho de destino` | SIP | O campo Cabeçalho de Destino.
`Nome de exibição do cabeçalho de destino` | SIP | O nome de exibição no campo Cabeçalho de Destino.
`URI de destino` | SIP | O URI do campo Cabeçalho de Destino.
`Host do URI de destino` | SIP | A porta no URI do campo Cabeçalho de Destino.
`Usuário do URI de destino` | SIP | O usuário no campo Cabeçalho de Destino.
`host virtual` | HTTP SOAP | Os portais virtuais são criados no WebSphere® Portal Server e o WebSphere Extended Deployment suporta esse operando para melhor integração com o WebSphere Portal Server. A porta virtual é a URL de pedido menos a raiz de contexto para o módulo da Web do 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.
`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 (,). A seguir há um exemplo de 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 cifrão ($) é utilizado para indicar 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. A seguir há um exemplo de um 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
A seguir há uma lista de espaços de nomes padrão para xpathexpr:
Tabela 1. Namespaces. Os namespaces padrão estão descritos na tabela a seguir
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/

## 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 cadeia, 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ê optar por criar.

## Gerar Subexpressão

Gere a subexpressão como resultado do operando, operador e valores especificados.

## Anexar

Clique para anexar na caixa no painel de regras.

Informações relacionadas:
Regras de SIP de Política de Roteamento
Regras de SIP de Política de Serviço

Nome do Arquivo: sip_rulebuilder_detail.html