Compartir vía


Conceptos fundamentales de Flujo de trabajo de Windows

El desarrollo de flujos de trabajo en .NET Framework 4.6.1 usa conceptos que pueden ser nuevos para algunos desarrolladores. En este tema se describen algunos de los conceptos y cómo se implementan.

Flujos de trabajo y actividades

Un flujo de trabajo es una colección estructurada de acciones que modela un proceso. Cada acción del flujo de trabajo se modela como una actividad. Un host interactúa con un flujo de trabajo mediante WorkflowInvoker para invocar un flujo de trabajo como si fuera un método, WorkflowApplication para un control explícito sobre la ejecución de una única instancia de flujo de trabajo y WorkflowServiceHost para interacciones basadas en mensajes en escenarios de varias instancias. Dado que los pasos del flujo de trabajo se definen como una jerarquía de actividades, se puede decir que la actividad más alta de la jerarquía puede definir el propio flujo de trabajo. Este modelo de jerarquía sustituye a las clases SequentialWorkflow y StateMachineWorkflow explícitas de versiones anteriores. Las propias actividades se desarrollan como colecciones de otras actividades (con la Activity clase como base, normalmente definidas mediante XAML) o se crean personalizadas mediante la CodeActivity clase , que puede usar el tiempo de ejecución para el acceso a datos o mediante la NativeActivity clase , que expone la amplitud del tiempo de ejecución del flujo de trabajo al autor de la actividad. Las actividades desarrolladas mediante CodeActivity y NativeActivity se crean mediante lenguajes compatibles con CLR, como C#.

Modelo de datos de actividad

Las actividades almacenan y comparten datos mediante los tipos que se muestran en la tabla siguiente.

Tipo Descripción
Variable Almacena los datos en una actividad.
Argumento Mueve los datos hacia y hacia fuera de una actividad.
Expresión Actividad con un valor devuelto elevado usado en enlaces de argumentos.

Tiempo de ejecución de flujo de trabajo

El tiempo de ejecución del flujo de trabajo es el entorno en el que se ejecutan los flujos de trabajo. WorkflowInvoker es la manera más sencilla de ejecutar un flujo de trabajo. El host usa WorkflowInvoker para lo siguiente:

  • Para invocar de forma sincrónica un flujo de trabajo.

  • Para proporcionar la entrada o recuperar la salida de un flujo de trabajo.

  • Para agregar extensiones que serán utilizadas por las actividades.

ActivityInstance es el proxy seguro para subprocesos que los hosts pueden usar para interactuar con el entorno de ejecución. El host usa ActivityInstance para lo siguiente:

  • Para adquirir una instancia creándola o cargándola desde un almacén de instancias.

  • Para que se le notifique sobre los eventos de ciclo de vida de la instancia.

  • Para controlar la ejecución del flujo de trabajo.

  • Para proporcionar la entrada o recuperar la salida de un flujo de trabajo.

  • Para indicar una continuación de flujo de trabajo y pasar valores al flujo de trabajo.

  • Para conservar los datos de flujo de trabajo.

  • Para agregar extensiones que serán utilizadas por las actividades.

Las actividades tienen acceso al entorno de tiempo de ejecución de flujo de trabajo mediante la clase derivada de ActivityContext adecuada, como NativeActivityContext o CodeActivityContext. Lo usan para resolver discusiones y variables, para programar actividades para niños y para muchos otros fines.

Servicios

Los flujos de trabajo proporcionan una manera natural de implementar y acceder a servicios de acoplamiento flexible mediante actividades de mensajería. Las actividades de mensajería se basan en WCF y son el mecanismo principal que se utiliza para insertar y extraer datos de un flujo de trabajo. Puede crear actividades de mensajería juntas para modelar cualquier tipo de patrón de intercambio de mensajes que desee. Para obtener más información, consulte Actividades de mensajería. Los servicios de flujo de trabajo se hospedan mediante la WorkflowServiceHost clase . Para obtener más información, consulte Resumen del hospedaje de servicios de flujo de trabajo. Para obtener más información sobre los servicios de flujo de trabajo, consulte Servicios de flujo de trabajo.

Persistencia, descarga y flujos de trabajo de ejecución prolongada

Windows Workflow simplifica la creación de programas reactivos de ejecución prolongada proporcionando:

  • Actividades que acceden a la entrada externa.

  • La capacidad de crear objetos Bookmark que un agente de escucha del host puede reanudar.

  • La capacidad de conservar los datos de un flujo de trabajo y descargar el flujo de trabajo, a continuación, recargue y reactive el flujo de trabajo en respuesta a la reasunción de los objetos Bookmark en un flujo de trabajo determinado.

Un flujo de trabajo ejecuta continuamente las actividades hasta que no hay más actividades que ejecutar o hasta que todas las actividades que se ejecutan actualmente están esperando la entrada. En este último estado, el flujo de trabajo está inactivo. Es habitual que un host descargue flujos de trabajo que han estado inactivos y que vuelvan a cargarlos para continuar con la ejecución cuando llega un mensaje. WorkflowServiceHost proporciona funcionalidad para esta característica y proporciona una directiva de descarga extensible. Para los bloques de ejecución que usan datos de estado volátil u otros datos que no se pueden conservar, una actividad puede indicar a un host que no debe conservarse mediante NoPersistHandle. Un flujo de trabajo también puede conservar explícitamente sus datos en un medio de almacenamiento duradero mediante la Persist actividad .