Share via


Ejemplo de directiva avanzada

Download sample

Este ejemplo amplía el ejemplo de directiva simple. Además de las reglas de descuento residencial y descuento comercial del ejemplo de directiva simple, se han agregado varias nuevas reglas.

Se agrega una regla de valor alto, que proporciona un descuento mayor para los pedidos de valor alto. Se le proporciona un valor de prioridad menor que el de las dos reglas anteriores, para que sobrescriba el campo de descuento y tenga prioridad sobre la regla de descuento residencial o la de descuento comercial.

También se agrega una regla de cálculo del total, que calcula el total en función del nivel de descuento. Muestra cómo hacer referencia a un método definido en la actividad de flujo de trabajo, y cómo utilizar las acciones Else. Esta regla también muestra el comportamiento del encadenamiento, puesto que se evaluará siempre que cambie el campo de descuento. Además, se muestra la atribución de método con RuleWriteAttribute en el método CalculateTotal. Esto hace que las reglas afectadas (ErrorTotalRule) se vuelvan a evaluar siempre que se ejecuta el método.

La última regla agregada es un que detecta los errores (en este caso, Total menor que 0). Si ocurre esto, se detiene la ejecución de la directiva.

Finalmente, se agregan llamadas a Console.Writeline como acciones a cada regla para proporcionar más visibilidad de la ejecución de las reglas, a la vez que se muestra que es posible tener acceso a los métodos estáticos en tipos a los que se hace referencia. También podría utilizar el seguimiento para obtener visibilidad en las reglas que se ejecutan (vea el ejemplo de RuleActionTrackingEvent).

Este ejemplo hace uso de las clases siguientes.

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 evaluación y ejecución de las reglas también se puede ver mediante el seguimiento. Para obtener más información, vea Ejemplo de RuleActionTrackingEvent.

Para generar el ejemplo

  1. Descargue el ejemplo haciendo clic en Descargar ejemplo en este tema.

    Así se extrae el proyecto de ejemplo en el disco duro local.

  2. Haga clic en Inicio, señale Programas, señale Microsoft Windows SDK y, a continuación, haga clic en CMD Shell.

  3. Vaya al directorio de origen del ejemplo.

  4. En el símbolo del sistema, escriba MSBUILD <nombre del archivo de solución>.

Para ejecutar el ejemplo

  • En la ventana del símbolo del sistema del SDK, ejecute el archivo .exe de la carpeta AdvancedPolicy\bin\debug (o la carpeta AdvancedPolicy\bin para la versión de VB del ejemplo), que se encuentra bajo la carpeta principal del ejemplo.

Consulte también

Referencia

RuleSet
PolicyActivity

Otros recursos

Ejemplo de directiva simple
Tutorial: Use Rules and Conditions
Using the PolicyActivity Activity
Ejemplos de actividades
Ejemplos de Windows Workflow Foundation

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.