Condividi tramite


Aggiungere operatori aritmetici e logici alle regole usando Microsoft Rules Composer (anteprima)

Si applica a: App per la logica di Azure (standard)

Importante

Questa funzionalità è disponibile in anteprima ed è soggetta alle Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Questa guida descrive come aggiungere operatori aritmetici e logici alle regole nel set di regole usando Microsoft Rules Composer.

Prerequisiti

Aggiungere un operatore aritmetico a una regola

È possibile aggiungere un operatore aritmetico a una condizione o a un'azione in una regola. Nella tabella seguente vengono descritti gli operatori aritmetici disponibili:

Operatore aritmetico Descrizione
Aggiunta Operatore di addizione che aggiunge arg1 a arg2.
Sottrai Operatore di sottrazione che sottrae arg1 da arg2.
Per Operatore di moltiplicazione che moltiplica arg1 per arg2.
Divide Operatore di divisione che divide arg1 per arg2.
Resto Operatore di resto che esegue arg1 modulo arg2.
  1. In Microsoft Rules Composer caricare il file XML contenente l'archivio regole su cui si vuole lavorare.

  2. Nella finestra Esplora set di regole trovare e selezionare la regola desiderata.

  3. Nella finestra Esplora fatti selezionare la scheda Vocabolari.

  4. In Vocabolari>funzioni>versione 1.0 trascinare l'operatore aritmetico che si desidera impostare su un argomento in una condizione nell'editor condizioni o in un'azione nell'editor azioni.

  5. Negli argomenti condizione o azione specificare i valori per gli operandi sinistro e destro.

    • Se gli operandi hanno tipi diversi, il motore regole esegue una promozione numerica automatica in cui il motore converte il tipo di operando più piccolo nel tipo di operando più grande.

      Si supponga, ad esempio, di usare l'operatore Add su un operando con tipo int e un operando con tipo long. Prima che il motore esegua l'operazione Add, il motore converte il tipo int nel tipo long.

    • Se il motore può alzare di livello entrambi gli operandi a un tipo comune, il motore supporta la doppia promozione.

      Si supponga, ad esempio, di usare l'operatore Add su un operando con tipo int e un operando con tipo uint. Prima che il motore esegua l'operazione Add , il motore converte entrambi i tipi di operando nel tipo long .

Aggiungere un operatore logico a una regola

È possibile aggiungere un operatore logico a un predicato in una condizione. La tabella seguente descrive gli operatori logici disponibili:

Operatore logico Descrizione
AND Combinare due o più predicati per formare un'espressione AND logica. Restituisce true se entrambi i predicati restituiscono true. In caso contrario, restituisce false.
OPPURE Combinare due o più predicati per formare un'espressione OR logica. Restituisce true se un predicato restituisce true. In caso contrario, restituisce false.
NOT Nega un'espressione logica o un predicato. Restituisce true se il predicato restituisce false. In caso contrario, restituisce false.
  1. In Microsoft Rules Composer caricare il file XML contenente l'archivio regole su cui si vuole lavorare.

  2. Nella finestra Esplora set di regole trovare e selezionare la regola desiderata.

  3. Nel riquadro IF, ovvero l'editor condizioni, dal menu di scelta rapida Condizioni selezionare uno dei comandi seguenti:

    Operatore logico Descrizione
    Aggiungere AND logico Combinare due o più predicati per formare un'espressione AND logica.
    Aggiungere OR logico Combinare due o più predicati per formare un'espressione OR logica.
    Aggiungere NOT logico Nega un'espressione logica o un predicato.
  4. Nell'editor delle condizioni aprire il menu di scelta rapida dell'operatore e aggiungere i predicati o gli operatori logici annidati desiderati.

    Se gli operandi hanno tipi diversi, il motore regole converte il tipo per un operando in modo che corrisponda al tipo per l'altro operando oppure converte i tipi per entrambi gli operandi in un tipo comune prima di valutare l'espressione.

Gestire i valori Null

Nella sezione seguente vengono descritti i comportamenti previsti per i valori Null associati a tipi diversi e vengono fornite opzioni per controllare null o l'esistenza di un campo o di un membro specifico.

Classi .NET

  • Per i tipi derivati dal tipo Object , è possibile impostare i relativi campi su Null.

  • È possibile passare Null come argomento per i parametri che non sono tipi valore, ma è possibile che venga visualizzato un errore di runtime, in base all'implementazione del membro.

  • Non è possibile usare Null per il confronto se il tipo restituito non è un tipo Object .

Elementi XML

  • Un documento XML non restituisce mai un valore XML come Null. Questo valore è invece una stringa vuota o un errore "non esiste". Per una stringa vuota, potrebbe verificarsi un errore per la conversione di determinati tipi, ad esempio i campi specificati come tipo integer quando si compila una regola.

  • Microsoft Rules Composer non consente di impostare un campo su Null o di impostare un tipo di campo su Object.

  • Tramite il modello a oggetti è possibile impostare il tipo su Object. In questo caso, il valore restituito ha il tipo a cui l'XPath valuta, ad esempio Float, Boolean o String, in base all'espressione XPath.

Verificare la presenza di valori Null o di esistenza

Quando si scrivono regole, naturalmente si vuole verificare che un campo esista prima di confrontarne il valore. Tuttavia, se il campo è Null o non esiste, il confronto del valore causa un errore.

Si supponga, ad esempio, di avere la regola seguente:

IF Product/Quantity Exists AND Product/Quantity > 1

Se Product/Quantity non esiste, la regola genera un errore. Per risolvere questo problema, è possibile passare un nodo padre a un metodo helper che restituisce il valore Product/Quantity se tale elemento esiste o restituire un altro elemento se tale elemento non esiste.

L'esempio seguente mostra la regola aggiornata e la nuova regola del metodo helper:

Regola 1

IF Exists(Product/Quantity) THEN Assert(CreateObject(typeof(Helper), Product/Quantity))

Regola 2

IF Helper.Value == X THEN...

Come un'altra possibile soluzione, è possibile creare una regola come l'esempio seguente:

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

Nell'esempio precedente la <CheckQuantityAndDoSomething> funzione controlla il valore del parametro ed esegue se la condizione viene soddisfatta.

Nota

In alternativa, è possibile modificare la proprietà Campo XPath per il fatto XML per rilevare eventuali errori, ma questo approccio non è consigliato.