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
Scaricare e installare Microsoft Rules Composer.
File XML contenente il set di regole su cui si desidera lavorare.
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. |
In Microsoft Rules Composer caricare il file XML contenente l'archivio regole su cui si vuole lavorare.
Nella finestra Esplora set di regole trovare e selezionare la regola desiderata.
Nella finestra Esplora fatti selezionare la scheda Vocabolari.
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.
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. |
In Microsoft Rules Composer caricare il file XML contenente l'archivio regole su cui si vuole lavorare.
Nella finestra Esplora set di regole trovare e selezionare la regola desiderata.
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. 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.