Criteri avanzati

Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.

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 aggiunta una regola per valori elevati, che consente uno sconto maggiore per gli 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 si verifica tale condizione, l'esecuzione del criterio verrà 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 RuleActionTrackingEvent Sample.

Per compilare 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

  1. Nella finestra del prompt dei comandi di SDK eseguire il file con estensione exe nella cartella AdvancedPolicy\bin\debug (oppure nella cartella AdvancedPolicy\bin per la versione Visual Basic dell'esempio), collocata sotto la cartella principale dell'esempio.
Ee960219.Important(it-it,VS.100).gif Nota:
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.

<UnitàInstallazione>:\WF_WCF_Samples

Se questa directory non esiste, visitare la pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi di Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.

<UnitàInstallazione>:\WF_WCF_Samples\WF\Basic\Rules\Policy\AdvancedPolicy

Vedere anche

Riferimento

RuleSet
PolicyActivity

Altre risorse

Simple Policy Sample
Tutorial: Use Rules and Conditions
Using the PolicyActivity Activity
Activities Samples
Windows Workflow Foundation Samples