Adicionar operadores aritméticos e lógicos às regras usando o Microsoft Rules Composer (Versão prévia)
Aplica-se a: Aplicativos Lógicos do Azure (Standard)
Importante
Esse recurso está em versão prévia e está sujeito aos Termos de uso suplementares para versões prévias do Microsoft Azure.
Este guia descreve como adicionar operadores aritméticos e lógicos às regras de seu conjunto de regras usando o Microsoft Rules Composer.
Pré-requisitos
Faça o download e instale o Microsoft Rules Composer.
O arquivo XML que contém o conjunto de regras com o qual você deseja trabalhar.
Adicionar um operador aritmético a uma regra
É possível adicionar um operador aritmético a uma condição ou ação em uma regra. A tabela a seguir descreve os operadores aritméticos disponíveis:
Operador aritmético | Descrição |
---|---|
Add | O operador de adição que adiciona o arg1 a arg2. |
Subtract | O operador de subtração que subtrai o arg1 de arg2. |
Multiply | O operador de multiplicação que multiplica o arg1 por arg2. |
Divide | O operador de divisão que divide o arg1 por arg2. |
Restante | O operador do restante que executa o arg1 módulo arg2. |
No Microsoft Rules Composer, carregue o arquivo XML que contém o repositório de regras com o qual você deseja trabalhar.
Na janela RuleSet Explorer, localize e selecione a regra desejada.
Na janela Gerenciador de Fatos, selecione a guia Vocabulários.
Em Vocabulários>Funções>Versão 1.0, arraste o operador aritmético desejado para um argumento em uma condição no editor de condições ou em uma ação no editor de ações.
Nos argumentos da condição ou da ação, especifique os valores dos operandos esquerdo e direito.
Se os operandos tiverem tipos diferentes, o mecanismo de regras executará a promoção numérica automática, em que o mecanismo converte o tipo de operando menor para o tipo de operando maior.
Por exemplo, suponha que você use o operador Adicionar em um operando do tipo int e um operando do tipo long. Antes de o mecanismo executar a operação Adicionar, ele converte o tipo int para o tipo long.
Se o mecanismo puder promover ambos os operandos para um tipo comum, ele dará suporte à promoção dupla.
Por exemplo, suponha que você use o operador Adicionar em um operando que tenha o tipo int e um operando que tenha o tipo uint. Antes de o mecanismo executar a operação Adicionar, ele converterá os dois tipos de operando para o tipo long.
Adicionar um operador lógico a uma regra
É possível adicionar um operador lógico a um predicado em uma condição. A tabela a seguir descreve os operadores lógicos disponíveis:
Operador lógico | Descrição |
---|---|
AND | Combine dois ou mais predicados para formar uma expressão lógica AND. Retorna verdadeiro se ambos os predicados forem avaliados como verdadeiro. Caso contrário, retornará Falso. |
OR | Combina dois ou mais predicados para formar uma expressão lógica OR. Retorna verdadeiro se um predicado for avaliado como verdadeiro. Caso contrário, retornará Falso. |
NOT | Negar uma expressão lógica ou um predicado. Retorna verdadeiro se o predicado for avaliado como falso. Caso contrário, retornará Falso. |
No Microsoft Rules Composer, carregue o arquivo XML que contém o repositório de regras com o qual você deseja trabalhar.
Na janela RuleSet Explorer, localize e selecione a regra desejada.
No painel SE, que é o editor de condições, no menu de atalho Condições, selecione um dos seguintes comandos:
Operador lógico Descrição Adicionar AND lógico Combine dois ou mais predicados para formar uma expressão lógica AND. Adicionar OR lógico Combina dois ou mais predicados para formar uma expressão lógica OR. Adicionar NOT lógico Negar uma expressão lógica ou um predicado. No editor de condições, abra o menu de atalho do operador e adicione os predicados ou operadores lógicos aninhados que desejar.
Se os operandos tiverem tipos diferentes, o mecanismo de regras converterá o tipo de um operando para corresponder ao tipo do outro operando ou converterá os tipos de ambos os operandos em um tipo comum antes de avaliar a expressão.
Manipular valores nulos
A seção a seguir descreve os comportamentos esperados para valores nulos associados a diferentes tipos e fornece opções para verificar se há nulidade ou a existência de um campo ou membro específico.
Classes .NET
Para tipos derivados do tipo Objeto, é possível definir seus campos como nulos.
Você pode passar nulo como argumento para parâmetros que não sejam tipos de valor, mas poderá receber um erro de runtime, com base na implementação do membro.
Não é possível usar nulo para comparação se o tipo de retorno não for um tipo Objeto.
Elementos XML
Um documento XML nunca retorna um valor XML como nulo. Em vez disso, esse valor é uma cadeia de caracteres vazia ou um erro "não existe". Para uma cadeia de caracteres vazia, pode ocorrer um erro na conversão de determinados tipos, como campos especificados como um tipo inteiro quando você cria uma regra.
O Microsoft Rules Composer não permite que você defina um campo como nulo nem que defina um tipo de campo como Objeto.
Por meio do modelo de objeto, você pode definir o tipo como Objeto. Nesse caso, o valor retornado tem o tipo para o qual o XPath é avaliado, como Float, Booliano ou Cadeia de caracteres, com base na expressão XPath.
Verificação de nulidade ou existência
Ao escrever regras, é natural que você queira verificar se um campo existe antes de comparar seu valor. Entretanto, se o campo for nulo ou não existir, a comparação do valor causará um erro.
Por exemplo, suponha que você tenha a seguinte regra:
IF Product/Quantity Exists AND Product/Quantity > 1
Se Produto/Quantidade não existir, a regra gerará um erro. Para contornar esse problema, você pode passar um nó pai para um método auxiliar que retorne o valor Produto/Quantidade se esse elemento existir ou retornar outra coisa se esse elemento não existir.
O exemplo a seguir mostra a regra atualizada e a nova regra do método auxiliar:
Regra 1
IF Exists(Product/Quantity) THEN Assert(CreateObject(typeof(Helper), Product/Quantity))
Regra 2
IF Helper.Value == X THEN...
Como outra solução possível, você pode criar uma regra como a do exemplo a seguir:
IF Product/Quantity Exists THEN CheckQuantityAndDoSomething(Product/Quantity)
No exemplo anterior, a função <CheckQuantityAndDoSomething>
verifica o valor do parâmetro e é executada se a condição for atendida.
Observação
Como alternativa, você pode modificar a propriedade Campo XPath do fato XML para detectar quaisquer erros, mas essa abordagem não é recomendada.