Advanced Policy, exemple

Download sample

Cet exemple complète l'exemple de stratégie simple. Outre les règles de remise résidentielle et de remise d'entreprise traitées dans l'exemple de stratégie simple, plusieurs nouvelles règles ont été ajoutées.

Une règle de valeur élevée est ajoutée afin de proposer une remise plus importante pour les commandes à valeur élevée. Sa valeur de priorité est inférieure à celle des deux règles précédentes de sorte qu'elle remplace le champ de remise et reste prioritaire par rapport aux règles de remise résidentielle ou d'entreprise.

Une règle de calcul du total est également ajoutée afin de calculer le montant total en fonction du niveau de remise. Elle indique comment faire référence à une méthode définie sur l'activité de workflow et comment utiliser des actions Else. Cette règle illustre également le comportement de chaînage puisqu'elle sera évaluée à chaque modification du champ de remise. En outre, l'attribution de méthode est illustrée avec la classe RuleWriteAttribute sur la méthode CalculateTotal. Les règles impliquées (ErrorTotalRule) doivent être réévaluées chaque fois que la méthode est exécutée.

La dernière règle ajoutée détecte les erreurs (dans ce cas, Total inférieur à 0). Si cela se produit, l'exécution de la stratégie est interrompue.

Enfin, les appels Console.Writeline sont ajoutés en tant qu'actions à chaque règle afin d'apporter plus de visibilité à l'exécution de la règle, tout en montrant également qu'il est possible d'accéder aux méthodes statiques sur les types référencés. Vous pouvez également utiliser le suivi pour disposer d'une visibilité au niveau des règles exécutées (consultez l'exemple RuleActionTrackingEvent).

Les règles utilisées dans cet exemple sont les suivantes :

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

L'évaluation et l'exécution des règles peuvent également être consultées par traçage et suivi. Pour plus d'informations, consultez RuleActionTrackingEvent, exemple.

Pour générer l'exemple

  1. Téléchargez l'exemple en cliquant sur Télécharger l'exemple dans cette rubrique.

    L'exemple de projet est alors extrait sur votre disque dur local.

  2. Cliquez sur Démarrer, pointez sur Programmes, puis sur Microsoft Windows SDK et cliquez sur Environnement de commande.

  3. Accédez au répertoire source de l'exemple.

  4. À l'invite de commandes, tapez MSBUILD <Nom du fichier solution>.

Pour exécuter l'exemple

  • Dans la fenêtre Invite de commandes du Kit de développement SDK, exécutez le fichier .exe dans le dossier AdvancedPolicy\bin\debug (ou le dossier AdvancedPolicy \bin pour la version VB de l'exemple), situé sous le dossier principal de l'exemple.

Voir aussi

Référence

RuleSet
PolicyActivity

Autres ressources

Simple Policy, exemple
Tutorial: Use Rules and Conditions
Using the PolicyActivity Activity
Exemples d'activités
Exemples de Windows Workflow Foundation

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.