Share via


Servicio de administración de flujos de trabajo

El Servicio de administración de flujos de trabajo (WMS) es un servicio de Windows que proporciona los siguientes servicios de administración para instancias del servicio de flujo de trabajo:

  • Activación de instancias del servicio de flujo de trabajo. El WMS activa instancias del servicio de flujo de trabajo en un almacén de instancias cuando las instancias se convierten en activables. Una instancia del servicio de flujo de trabajo de un almacén de instancias se considera activable si la instancia se convierte en ejecutable y en el equipo local no está en ejecución ningún host de servicio que coincida con ella. En la lista siguiente también se presentan motivos para que una instancia se convierta en ejecutable:

    • La instancia se descarga y se conserva mientras espera a que finalice una actividad de retraso y ésta finaliza.

    • El host de servicio se apaga mientras se carga la instancia.

    • La instancia tiene un bloqueo de instancia caducado.

  • Ejecución de comandos de control de usuario. Un proveedor de control de instancias para un almacén de instancias agrega a una cola en el almacén de instancias comandos que recibe desde cmdlets de control de instancias de Windows PowerShell. La cola la crea y mantiene el proveedor de control de instancias. El WMS recupera los comandos de la cola, los ejecuta y, a continuación, los elimina si la ejecución del comando es correcta.

En el resto del tema se explican estos servicios detalladamente. Para conocer el modo de instalar y configurar el WMS, vea Instalación y configuración del servicio de administración de flujos de trabajo.

Activación de instancias del servicio de flujo de trabajo

De manera predeterminada, el WMS descubre automáticamente almacenes de instancias que debe supervisar para ver si hay instancias de flujos de trabajo activables. Para ello, examina los archivos Web.config en los niveles de raíz, sitio y aplicación durante el arranque del servicio y cuando cambia uno de estos archivos de configuración. También puede especificar almacenes de instancias particulares que desea que supervise el WMS en lugar de hacer que éste los descubra automáticamente.

El WMS crea un objeto InstanceStore y se suscribe a HasActivatableWorkflowEvent para cada almacén de instancias que descubre. Un almacén de instancias eleva HasActivatableWorkflowEvent cuando encuentra una instancia de flujo de trabajo activable en el almacén. A continuación, el almacén de instancias deja de supervisar hasta que se llame una vez a QueryActivatableWorkflowsCommand en el almacén.

Cuando el WMS recibe HasActivatableWorkflowEvent, ejecuta QueryActivatableWorkflowsCommand contra el almacén de instancias para obtener parámetros de activación que usa para crear un host de flujo de trabajo.

A continuación, el WMS invoca el servicio de administración de servicios que admite la aplicación que contiene el servicio cuya instancia debe activarse y le transmite parámetros de activación. AppFabric agrega automáticamente el servicio de administración de servicios, un servicio de WCF, a todas las aplicaciones que tienen habilitado el atributo serviceManagement. El servicio de administración de servicios expone un extremo de activación de servicios, al que el WMS obtiene acceso mediante la dirección que crea con el nombre de sitio, la ruta de acceso virtual a la aplicación y la dirección conocida del extremo de activación de servicios. El WMS usa enlaces net.pipe para este extremo. Vea Servicio de administración de servicios para obtener más información acerca de este servicio.

El servicio de administración de servicios activa un host del servicio de flujo de trabajo con los parámetros de activación que recibe del WMS. El host de servicio crea un almacén de instancias (tal como el almacén de instancias de flujo de trabajo de SQL) e invoca un método en él para cargar la instancia del servicio de flujo de trabajo desde el almacén de instancias a la memoria.

Servicio de administración de flujos de trabajo - Activación de instancias

WarningAdvertencia
El Servicio de administración de flujos de trabajo selecciona instantáneamente todos los cambios de los comportamientos de los almacenes de instancias de flujos de trabajo de SQL (SWIS) y las definiciones de almacenes de instancias correspondientes en los archivos de configuración y empieza a realizar el seguimiento de dichos almacenes. Sin embargo, esto no impide que una aplicación pueda continuar usando el almacén de instancias especificado en el comportamiento de SWIS en la versión anterior del archivo de configuración hasta que el dominio de la aplicación vuelva a iniciar el ciclo. El dominio de la aplicación se recicla después el período de tiempo especificado por el atributo delayNotificationTimeout del elemento httpRuntime. Por ejemplo, si el valor de delayNotificationTimeout se define en 5000 (<httpRuntime delayNotificationTimeout = "5000" />), el dominio de la aplicación no se reciclará durante otros 5.000 segundos.

WarningAdvertencia
Si deshabilita aplicaciones o grupos de aplicaciones que contengan 1.000 servicios o más en total, el Servicio de administración de flujos de trabajo podría no activar ninguna otra instancia activable de servicio. La solución es suspender las instancias de servicios que pertenecen a estos grupos de aplicaciones/aplicaciones antes de desactivarlos o deshabilitarlos.

Ejecución de comandos de control de usuario

Cuando emite un comando contra una instancia del servicio de flujo de trabajo mediante un cmdlet de Windows PowerShell, un proveedor de control de instancias lo agrega a una cola de comandos en el almacén de instancias usado por el servicio. La cola de comandos la mantiene el proveedor de control de instancias.

El WMS descubre automáticamente almacenes de instancias que debe supervisar para ver si hay comandos. Para ello, examina los archivos Web.config en los niveles de raíz, sitio y aplicación durante el arranque y cuando cambia uno de estos archivos de configuración. El WMS crea un proveedor de control de instancias para cada almacén de instancias que descubre y sondea al proveedor en busca de comandos a intervalos periódicos. De manera específica, el WMS invoca el método BeginTryReceive en un proveedor de control de instancias para que reciba comandos.

A su vez, el proveedor de control de instancias recupera un comando, pero no lo elimina de la cola de comandos del almacén de instancias y lo devuelve al WMS. El proveedor aplica un bloqueo con un tiempo de caducidad breve sobre el comando en la cola de comandos.

A continuación, el WMS invoca un método adecuado del extremo de control de instancias (ICE) expuesto por el host del servicio de flujo de trabajo para ejecutar el comando contra la instancia del servicio de flujo de trabajo de destino. El WMS requiere que el extremo de control de instancias habilite un enlace net.pipe y que la seguridad del transporte esté habilitada. El WMS crea una dirección de extremo al combinar el nombre del sitio, la ruta de acceso virtual al servicio y la ruta de acceso ICE conocida. El proveedor de control de instancias proporciona la información sobre nombre del sitio y ruta de acceso al servicio virtual. El enlace ICE se codifica en el enlace net.pipe.

Si el comando se ejecuta correctamente, el WMS invoca el método Complete en el proveedor de control de instancias y éste quita el comando de la cola de comandos. Si el comando no se ejecuta correctamente, el WMS invoca el método Abandon en el proveedor de control de instancias y éste debe decidir si quitar el comando de la cola de comandos o conservarlo en ella para reintentarlo posteriormente. El proveedor de control de instancias para el almacén de instancias de flujo de trabajo de SQL intenta ejecutar un comando cinco veces antes de quitarlo de la cola de comandos. Si se bloquea el WMS durante la ejecución de un comando, el bloqueo caducará con el tiempo y el comando podrá ser seleccionado más tarde por la misma instancia del WMS o por otra instancia del WMS.

Servicio de administración de flujos de trabajo - Ejecución de comandos

Si Microsoft DTC (Coordinador de transacciones distribuidas) está habilitado y la comunicación de entrada y salida está habilitada para MS DTC, los comandos de control de instancias se ejecutan de forma transaccional. Por ejemplo, si suspende una instancia de servicio de flujo de trabajo, su estado aparecerá en el Administrador de IIS o se devolverá de un cmdlet como Suspendido inmediatamente después de que se procese el comando. Sin embargo, si MS DTC está deshabilitado o no está configurado correctamente, se ejecutan comandos de control de la instancia de forma no transaccional. En este caso, el estado de la instancia no se actualizará a Suspendido hasta que la instancia se descargue y se persista en el almacén de instancias porque la instancia ha estado inactiva durante más tiempo del especificado (Descargar en configuración inactiva). Tenga en cuenta que si cambia la configuración de MS DTC, deberá reiniciar el Servicio de administración de flujos de trabajo de forma que el servicio seleccione la configuración de MS DTC actualizada.

TipSugerencia
Si experimenta que uno o más comandos de control de instancias permanecen en estado pendiente durante más tiempo del esperado, deberá comprobar si el Servicio de administración de flujos de trabajo está funcionando en cada uno de los servidores del conjunto. Si la instancia se encuentra en ejecución en un servidor en particular (para información de seguimiento) y un comando de control emitido para esa instancia no se ejecuta, deberá comprobar si el Servicio de administración de flujos de trabajo está ejecutándose en el servidor.

WarningAdvertencia
El servicio de administración de flujos de trabajo usa comandos con transacciones si están habilitadas las opciones de configuración del DTC "Permitir entrantes" y "Permitir salientes". Si deshabilita DTC, asegúrese de deshabilitar explícitamente estas opciones de configuración para que se usen comandos que no sean transaccionales.

Compatibilidad con entornos de granja de servidores

Normalmente, cada nodo de una granja de servidores ejecuta una instancia del WMS. Una instancia del WMS puede supervisar varios almacenes de instancias. Un nodo puede ejecutar varias instancias del WMS bajo diferentes identidades de Windows. Es recomendable ejecutar únicamente una instancia del WMS para un almacén de instancias de un nodo. Si se ejecutan varias instancias del WMS en el mismo nodo que supervisa el mismo almacén de instancias, pueden producirse problemas de escalabilidad.

Una instancia que se ejecutó anteriormente en un nodo podría ser seleccionada por el WMS en otro nodo y activarse en él. Esto ayudaría a equilibrar la carga de trabajo para el WMS en la granja de servidores.

Cuando emite un comando de control para una instancia de flujo de trabajo, ésta podría estar ejecutándose o no en cualquier parte de la granja. El WMS proporciona el comando al equipo que ejecuta el flujo de trabajo o indica al equipo local que cargue el flujo de trabajo y ejecute el comando. Esto permite emitir comandos a instancias sin necesidad de conocer en qué equipo se ejecuta la instancia.

Características dependientes

Los siguientes puntos son de aplicación para el servicio de administración de flujos de trabajo (WMS):

  • El WMS activa y ejecuta comandos contra instancias de servicios de flujo de trabajo hospedados mediante WorkflowServiceHost únicamente en el entorno IIS/WAS. El WMS no admite servicios de flujo de trabajo hospedados mediante un host diferente o en un entorno de hospedaje diferente.

  • El WMS activa instancias de servicios de flujo de trabajo que usan un almacén de instancias para una persistencia de estado durable.

  • El WMS activa instancias de servicios de flujo de trabajo que pertenecen a una aplicación que proporciona el servicio de administración de servicios. El WMS usa el servicio de administración de servicios para activar un host de servicios que, a su vez, cargará una instancia del almacén de instancias.

  • El WMS necesita que se agregue el enlace net.pipe al sitio y que se habilite el protocolo net.pipe en la aplicación que contiene el servicio. El WMS registra un error en el registro de eventos si el protocolo net.pipe no está habilitado en la aplicación.

  • El WMS requiere que una instancia del servicio de flujo de trabajo exponga un extremo de control de instancias (ICE). El WMS usa este extremo para emitir comandos, tal como Suspender y Reanudar, a instancias del servicio de flujo de trabajo.

  • El WMS funciona con cualquier almacén de instancias que se incluya con un proveedor de almacenes de instancias y un proveedor de control de instancias.

  • El WMS requiere un almacén de instancias para generar el evento HasActivatableWorkflowsEvent cuando una instancia se convierte en activable.

Nota

Para obtener información relacionada con la seguridad acerca del WMS, vea Configuración de seguridad para almacenes de persistencia.

Seguridad

El servicio de administración de flujos de trabajo (WMS) debe conectarse al extremo de control de instancias (ICE) expuesto por un host del servicio de flujo de trabajo para controlar instancias del servicio de flujo de trabajo. Asimismo, debe conectarse al extremo de administración de servicios expuesto por una aplicación web para iniciar un host del servicio de flujo de trabajo y, a continuación, cargar instancias del servicio de flujo de trabajo. El grupo AS_Administrators tiene acceso a estos dos extremos. El identificador de seguridad (SID) del Servicio de administración de flujos de trabajo de AppFabric es miembro de este grupo. Por lo tanto, no es necesario agregar de manera explícita la cuenta bajo la cual se ejecuta el WMS al grupo AS_Administrators.

En la lista siguiente se proporcionan directrices para proteger los almacenes de instancias y los archivos de configuración que usa el WMS:

  • El Servicio de administración de flujos de trabajo lee la información de configuración incluidas las cadenas de conexión de archivos de configuración en la memoria. Este servicio no procesa cadenas de conexión cifradas en este momento, por lo que estas deberán presentarse en formato de texto simple. Un usuario malintencionado podría obtener acceso a cualquier información confidencial (como el nombre de usuario y la contraseña en una cadena de conexión) de la memoria. Por lo tanto, no debe especificar datos confidenciales en una cadena de conexión definida en un archivo de configuración.

    Se recomienda usar la autenticación de Windows integrada para las cadenas de conexión almacenadas en archivos Web.config. Si no puede usar la autenticación integrada de Windows y especifica un nombre de usuario y una contraseña en una cadena de conexión definida en un archivo Web.config, defina las listas de control de acceso apropiadas en los archivos de configuración. Asegúrese de que el grupo AS_Administrators tiene acceso a los archivos Web.config a los que el Servicio de administración de flujos de trabajo necesita tener acceso. Debe tener en cuenta, sin embargo, que las listas de control de acceso de configuración no podrán detener a un usuario malintencionado en su intento por obtener acceso a la información de una cadena de conexión de la memoria.

  • Puede habilitar la comunicación SQL cifrada si agrega “;Encrypt=yes” a la cadena de conexión de SQL. Si está usando la clase SqlConnectionStringBuilder para generar una cadena de conexión, establezca la propiedad Encrypt en true. Vea https://go.microsoft.com/fwlink/?LinkID=187283 para obtener información detallada sobre cómo habilitar la comunicación cifrada en el servidor. Un usuario malintencionado puede manipular o ejecutar comandos contra la base de datos de SQL Server si no aplica ninguna medida de seguridad a la comunicación entre la aplicación y SQL Server.

  • Las colas de comandos no conservan información de credenciales. Los usuarios que son miembros del grupo AS_Administrators, que no está asignado al rol WorkflowAdministrators de SQL, tienen derecho a controlar todas las instancias del almacén de instancias y no un tipo específico de instancias. Por lo tanto, las instancias que no están concebidas para que las controlen usuarios diferentes deben almacenarse en almacenes de instancias diferentes, y el rol WorkflowAdministrators de SQL para estos almacenes de instancias debe asignarse a diferentes grupos de Windows.

  • Cada vez que se modifica un archivo Web.config, el WMS lee el archivo y comprueba si se han agregado o quitado definiciones de almacenes del archivo. Para impedir que usuarios sin autorización activen el procesamiento de archivos del WMS, es recomendable restringir el acceso de escritura a los archivos Web.config.

  • En función del nivel de seguimiento, la característica de seguimiento de AppFabric recopila datos a grandes velocidades. Es recomendable no colocar los almacenes de seguimiento y persistencia juntos en la misma base de datos. De este modo, si se desborda el almacén de seguimiento no se verá afectado el subsistema de persistencia.

En la tabla siguiente se describen los roles de SQL que protegen el acceso a la cola de comandos y a la base de datos de persistencia. El contenido de esta tabla se aplica únicamente al almacén de instancias de flujo de trabajo de SQL.

Rol de SQL Descripción Grupo de Windows

WorkflowAdministrators

Los miembros de este rol pueden poner (agregar) comandos en la cola de comandos, que forma parte de la base de datos de persistencia. Un usuario que desee controlar instancias (por ejemplo, mediante cmdlets de Windows PowerShell) debe ser miembro de este rol.

AS_Administrators

WorkflowManagementServiceUsers.

Los miembros de este rol pueden quitar (recuperar) comandos de la cola de comandos. La cuenta bajo la cual se ejecuta el WMS debe ser miembro de este rol, de modo que el WMS pueda recuperar comandos almacenados en la cola de comandos.

AS_Administrators

WorkflowActivationUsers

Los miembros de este rol pueden activar instancias del servicio de flujo de trabajo que persisten en la base de datos de persistencia y están listas para su ejecución.

AS_Administrators

InstanceStoreObservers

Los miembros de este rol pueden consultar el almacén de instancias para ver si hay instancias y recuperar comandos de la cola de comandos del almacén.

AS_Administrators y AS_Observers

InstanceStoreUsers

Los miembros de este rol pueden cargar y guardar instancias. Las acciones de carga y almacenamiento las realiza un host del servicio que ejecuta un flujo de trabajo.

Si las instancias de un servicio Service1 persisten en un almacén de instancias Store1, entonces el grupo de aplicaciones AppPool1 que ejecuta el host del servicio debe ejecutarse bajo una identidad que tenga derechos de usuario en Store1.

IIS_USRS

Para obtener información de seguridad basada en escenarios en relación con la persistencia, vea Configuración de seguridad para almacenes de persistencia.

Vea también

Conceptos

Configuración de seguridad para almacenes de persistencia
Instalación y configuración del servicio de administración de flujos de trabajo

  2011-12-05