Share via


Esempio di criterio avanzato

Download sample

Questo esempio estende l'esempio di criterio semplice. Oltre alle regole di sconto residenziale e sconto aziendale dell'esempio di criterio semplice, sono state aggiunte molte nuove regole.

Viene aggiunto un valore elevato, che fornisce uno sconto maggiore per ordini di alto valore. Viene fornito un valore di priorità minore rispetto alle due regole precedenti che sovrascriverà il campo dello sconto e avrà la precedenza rispetto alle regole di sconto residenziale o aziendale.

Viene aggiunta una regola di calcolo del totale, che calcola il totale in base al livello di sconto. Viene mostrato come fare riferimento a un metodo definito sull'attività del flusso di lavoro e come utilizzare le azioni else. Questa regola dimostra anche il comportamento mutevole, dal momento che verrà valutata a ogni modifica del campo di sconto. Inoltre, viene mostrata l'attribuzione del metodo con RuleWriteAttribute sul metodo CalculateTotal. Ciò fa in modo che regole con impatto (ErrorTotalRule) vengano rivalutate ogni qualvolta il metodo viene eseguito.

L'ultima regola aggiunta rileva gli errori (in questo caso il Totale inferiore a 0). Se ciò avviene, l'esecuzione del criterio viene interrotta.

Infine, vengono aggiunte le chiamate a Console.Writeline come azioni a ogni regola in modo da fornire più visibilità all'esecuzione della regola, dimostrando allo stesso tempo che è possibile accedere a metodi statici sui tipi a cui viene fatto riferimento. È anche possibile utilizzare il rilevamento per ottenere la visibilità nelle regole eseguite (vedere l'esempio di RuleActionTrackingEvent).

Le regole utilizzate in questo esempio sono:

ResidentialDiscountRule:

IF OrderValue > 500 AND CustomerType = Residential

THEN Discount = 5%

BusinessDiscountRule:

IF OrderValue > 10000 AND CustomerType = Business

THEN Discount = 10%

HighValueDiscountRule:

IF OrderValue > 20000

THEN Discount = 15%

TotalRule:

IF Discount > 0

THEN CalculateTotal(OrderValue, Discount)

ELSE Total = OrderValue

ErrorTotalRule:

IF Total < 0

THEN Error = "Fired ErrorTotalRule"; Halt

La valutazione e l'esecuzione delle regole può essere inoltre visualizzata tramite traccia e rilevamento. Per ulteriori informazioni, vedere Esempio di RuleActionTrackingEvent.

Per generare l'esempio

  1. Scaricare l'esempio facendo clic su Scarica esempio in questo argomento.

    In tal modo viene estratto il progetto di esempio sul disco rigido locale.

  2. Fare clic sul pulsante Start, scegliere Programmi, Microsoft Windows SDK e fare clic su CMD Shell.

  3. Accedere alla directory di origine dell'esempio.

  4. Al prompt dei comandi, immettere MSBUILD <nome file soluzione>.

Per eseguire l'esempio

  • Nella finestra del prompt dei comandi di SDK, eseguire il file exe nella cartella AdvancedPolicy\bin\debug (o nella cartella AdvancedPolicy\bin per la versione VB dell'esempio), collocata sotto la cartella principale dell'esempio.

Vedere anche

Riferimenti

RuleSet
PolicyActivity

Altre risorse

Esempio di semplice criterio
Tutorial: Use Rules and Conditions
Using the PolicyActivity Activity
Esempi di attività
Esempi di Windows Workflow Foundation

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.