Compartir a través de


Actividad Externalized Policy en .NET Framework 4.5

El ejemplo Rules-ExternalizedPolicy4 muestra cómo la actividad ExternalizedPolicy4 permite ejecutar objetos RuleSet existentes de Windows Workflow Foundation (WF 3.5) de .NET Framework 3.5 en Windows Workflow Foundation (WF 4.5) de .NET Framework 4.6.1 directamente con el motor de reglas incluido en WF 3.5. Con esta actividad, se puede abrir y ejecutar cualquier RuleSetde WF 3.5 existente. Para más información sobre el motor de reglas de WF 3.5 que se incluye como parte de Windows Workflow Foundation, lea Introducción al motor de reglas de Windows Workflow Foundation. Para más información sobre cómo migrar reglas a WF en .NET Framework 4.6.1, consulte la guía de migración.

Proyectos en este ejemplo

Nombre de proyecto Descripción Archivos principales
ExternalizedPolicy4 Contiene la actividad ExternalizedPolicy4 y su diseñador de WF4. ExternalizedPolicy4.cs: definición de la actividad.

ExternalizedPolicy4Designer.xaml: diseñador personalizado de la actividad ExternalizedPolicy4. Utiliza el editor de reglas (RuleSetDialog) del motor de reglas de WF 3.5.
ImperativeCodeClientSample Aplicación cliente de ejemplo que configura y ejecuta un flujo de trabajo mediante una aplicación ExternalizedPolicy4 que utiliza el código C# imperativo (no se utiliza ningún diseñador). ApplyDiscount.rules: archivo con definiciones de reglas de WF.

Order.cs: tipo que representa un pedido de cliente. Las reglas se aplican a los objetos de este tipo.

Program.cs: configura y ejecuta un flujo de trabajo que tiene una actividad Policy4 para aplicar las reglas definidas en ApplyDiscount.rules a las instancias de objetos Order.

App.config: el archivo de configuración con la ruta de acceso del archivo de reglas.
DesignerClientSample Aplicación cliente de ejemplo que configura y ejecuta un flujo de trabajo con una aplicación ExternalPolicy4 en el diseñador de WF. Sequence1.xaml: flujo de trabajo secuencial que utiliza una actividad Policy4 para realizar evaluaciones de reglas.

Program.cs: ejecuta una instancia de flujo de trabajo definida en Sequence1.xaml.

La actividad ExternalizedPolicy4

La actividad ExternalizedPolicy4 es un objeto NativeActivity que permite ejecutar objetos RuleSet de WF 3.5 dentro de flujos de trabajo de WF 4.5. El siguiente ejemplo es una definición simplificada del modelo de objetos público de la actividad.

public class ExternalizedPolicy4Activity<TResult>: CodeActivity
{
    public string RulesFilePath

    public string RuleSetName

    [RequiredArgument]
    public InArgument<T> TargetObject

    [RequiredArgument]
    public OutArgument<T> ResultObject

    public OutArgument<ValidationErrorCollection> ValidationErrors
}
Propiedad Descripción
RuleSetFilePath Ruta de acceso al archivo RuleSet de .NET Framework 3.5 que se evaluará cuando se ejecute la actividad.
RuleSetName Nombre del RuleSet que se va a utilizar dentro del archivo .rules.
TargetObject El objeto con el que se evaluarán los objetos Rule del RuleSet.
ResultObject El objeto resultante una vez aplicadas las reglas (por ejemplo, las reglas se aplican con el argumento Input y el resultado se almacena en el argumento Result.
ValidationError La lista de errores de validación devuelta por el motor de reglas de WF 3.5 al validar la clase RuleSet con el objeto de destino antes de realizar la ejecución.

Diseñador de la actividad ExternalizedPolicy4

El diseñador de ExternalizedPolicy4 le permite configurar una actividad para utilizar un conjunto de reglas existente sin escribir código. Simplemente establezca la ruta de acceso donde se encuentra localizado el archivo .rules y especifique el nombre RuleSet que desea utilizar. También le permite modificar el objeto RuleSet. Después de compilar la solución, se puede encontrar en el cuadro de herramientas de la sección Microsoft.Samples.Activities.Rules. El diseñador le permite seleccionar un archivo .rules y un objeto RuleSet. Cuando se hace clic en el botón Editar RuleSet, se muestra RuleSetDialog de WF 3.5. Este diálogo representa el editor de reglas de WF 3.5 re-hospedado y se utiliza para ver y modificar las reglas que ejecuta la actividad ExternalizedPolicy4.

Policy4 y ExternalPolicy4

La actividad Policy permite crear y ejecutar un conjunto de reglas de .NET Framework 3.5 en un flujo de trabajo de WF 4.5. El objeto RuleSet se serializa alineado en la definición XAML de la actividad Policy4. El ejemplo de ExternalizedPolicy4 muestra cómo utilizar un objeto RuleSet externo existente (incluido en un archivo .rules).

Uso de este ejemplo

No se exige ninguna configuración especial para ejecutar este ejemplo. Abra la solución en Visual Studio y, luego, presione F5 para ejecutar la aplicación.

Este ejemplo contiene dos aplicaciones cliente: ImperativeCodeClientSample y DesignerClientSample. El cliente ImperativeCodeClientSample muestra cómo configurar y ejecutar la actividad ExternalizedPolicy4 utilizando el código imperativo C#. DesignerClientSample muestra cómo configurar y ejecutar la actividad ExternalizedPolicy4 mediante el diseñador.

Ejecución de la aplicación ImperativeCodeClientSample

  1. Con Visual Studio, abra el archivo de solución Policy4sample.sln.

  2. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto ImperativeCodeClientSample y seleccione Establecer como proyecto de inicio.

  3. Para ejecutar el proyecto, presione Ctrl+F5.

Ejecución de la aplicación DesignerClientSample

  1. Con Visual Studio, abra el archivo de solución Policy4sample.sln.

  2. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto DesignerClientSample y seleccione Establecer como proyecto de inicio.

  3. Presione Ctrl+Mayús+B para compilar el proyecto.

  4. Presione Ctrl+F5 para ejecutar el proyecto.