Partilhar via


Adicionar operadores aritméticos e lógicos a regras usando o Microsoft Rules Composer (Visualização)

Aplica-se a: Aplicativos Lógicos do Azure (Padrão)

Importante

Esta funcionalidade está em pré-visualização e está sujeita aos Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.

Este guia descreve como adicionar operadores aritméticos e lógicos às regras em seu conjunto de regras usando o Microsoft Rules Composer.

Pré-requisitos

  • Transfira e instale o Microsoft Rules Composer.

  • O arquivo XML que contém o conjunto de regras no qual você deseja trabalhar.

Adicionar um operador aritmético a uma regra

Você pode 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 Description
Adicionar O operador de adição que adiciona arg1 a arg2.
Subtrair O operador de subtração que subtrai arg1 de arg2.
Multiplicar O operador de multiplicação que multiplica arg1 por arg2.
Dividir O operador de divisão que divide arg1 por arg2.
Restante O operador restante que executa arg1 modulo arg2.
  1. No Microsoft Rules Composer, carregue o arquivo XML que contém o repositório de regras no qual você deseja trabalhar.

  2. Na janela RuleSet Explorer, localize e selecione a regra desejada.

  3. Na janela Facts Explorer, selecione a guia Vocabulários.

  4. Em Funções de Vocabulário>>Versão 1.0, arraste o operador aritmético desejado para um argumento em uma condição no editor de condições ou uma ação no editor de ações.

  5. Nos argumentos de condição ou ação, especifique os valores para os 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 Add em um operando que tenha tipo int e um operando que tenha tipo longo . Antes de o motor executar a operação Add, o motor converte o tipo int para o tipo longo.

    • Se o motor pode promover ambos os operandos para um tipo comum, o motor suporta dupla promoção.

      Por exemplo, suponha que você use o operador Add em um operando que tenha int type e um operando que tenha uint type. Antes de o mecanismo executar a operação Add , o mecanismo converte os tipos de operando para o tipo longo .

Adicionar um operador lógico a uma regra

Você pode 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 Description
E AINDA Combine dois ou mais predicados para formar uma expressão lógica E . Retorna true se ambos os predicados forem avaliados como true. Caso contrário, retorna false.
OU Combine dois ou mais predicados para formar uma expressão lógica OR . Retorna true se um predicado for avaliado como true. Caso contrário, retorna false.
NÃO Negate uma expressão lógica ou predicado. Retorna true se o predicado for avaliado como false. Caso contrário, retorna false.
  1. No Microsoft Rules Composer, carregue o arquivo XML que contém o repositório de regras no qual você deseja trabalhar.

  2. Na janela RuleSet Explorer, localize e selecione a regra desejada.

  3. No painel SE, que é o editor de condições, no menu de atalho Condições, selecione um dos seguintes comandos:

    Operador lógico Description
    Adicionar lógica E Combine dois ou mais predicados para formar uma expressão lógica E .
    Adicionar lógica OU Combine dois ou mais predicados para formar uma expressão lógica OR .
    Adicionar lógico NÃO Negate uma expressão lógica ou predicado.
  4. No editor de condições, abra o menu de atalho do operador e adicione os predicados ou operadores lógicos aninhados desejados.

    Se os operandos tiverem tipos diferentes, o mecanismo de regras converte o tipo de um operando para corresponder ao tipo do outro operando ou converte os tipos de ambos os operandos em um tipo comum antes de avaliar a expressão.

Processar valores nulos

A seção a seguir descreve os comportamentos esperados para valores nulos associados a diferentes tipos e fornece opções para verificar null ou a existência de um campo ou membro específico.

Classes .NET

  • Para tipos derivados do tipo Object , você pode definir seus campos como null.

  • Você pode passar null como um argumento para parâmetros que não são tipos de valor, mas pode obter um erro de tempo de execução, com base na implementação do membro.

  • Não é possível usar null para comparação se o tipo de retorno não for um tipo Object .

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 para a 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 ou defina um tipo de campo como Objeto.

  • Através do modelo de objeto, você pode definir o tipo como Objeto. Nesse caso, o valor retornado tem o tipo para o qual o XPath avalia, como Float, Boolean ou String, com base na expressão XPath.

Verificar se há nulo ou existência

Quando você escreve regras, naturalmente deseja verificar se um campo existe antes de comparar seu valor. No entanto, 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 retorna o valor Product/Quantity se esse elemento existir, ou retornar algo mais se esse elemento não existir.

O exemplo a seguir mostra a regra do método auxiliar atualizado e novo:

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 o exemplo a seguir:

IF Product/Quantity Exists THEN CheckQuantityAndDoSomething(Product/Quantity)

No exemplo anterior, a <CheckQuantityAndDoSomething> função verifica o valor do parâmetro e é executada se a condição for atendida.

Nota

Como alternativa, você pode modificar a propriedade XPath Field para o fato XML para detetar erros, mas essa abordagem não é recomendada.