Definir y usar actividades de código y tipos personalizados en un flujo de trabajo de Workflow Manager 1.0

 

Publicada: mayo de 2016

Para marcar la autoría de los flujos de trabajo Workflow Manager 1.0 se usa un modelo completamente declarativo. No obstante, si se requiere una actividad de código personalizada o un tipo de datos personalizado, los administradores del servidor pueden agregar dicho tipo de datos personalizado a los tipos admitidos. Para ello, deben seguir los pasos descritos en este tema.Se puede agregar cada tipo explícitamente, lo cual se recomienda sobre todo para los entornos de producción.Por otro lado, es posible deshabilitar la protección contra la ejecución de código arbitrario, que tiene un efecto similar al de permitir los tipos de todos los ensamblajes del servidor.Este enfoque simplifica el desarrollo del proceso, pero implica problemas de seguridad, por lo que no es adecuado para entornos de producción.

System_CAPS_noteNota

En este tema se proporciona información general sobre cómo usar actividades de código personalizadas en Workflow Manager 1.0.Para obtener más información sobre creación de actividades de código personalizado, consulte Designing and Implementing Custom Activities y Authoring Workflows, Activities, and Expressions Using Imperative Code.Workflow Manager 1.0es compatible con las actividades personalizadas que heredan de Activity y CodeActivity.

Workflow Manager 1.0 permite a los usuarios publicar y usar sus propias actividades y flujos de trabajo declarativos.También proporciona un amplio conjunto de innovadoras actividades de flujo de trabajo que pueden utilizarse en las actividades y flujos de trabajo de los usuarios.Workflow Manager 1.0 también define una "superficie de confianza', que incluye el conjunto de tipos y actividades admitidos.

System_CAPS_noteNota

Para obtener más información sobre las actividades predefinidas en Workflow Manager 1.0 y sobre la superficie de confianza, consulte Introducción a Workflow Manager 1.0 y Superficie de confianza de Workflow Manager 1.0.

Extender el conjunto de tipos y actividades permitidas puede tener un gran impacto en la seguridad, el funcionamiento, la escalabilidad y la disponibilidad de Workflow Manager 1.0 y no se debe hacer, a no ser que sea totalmente necesario, como por ejemplo, cuando los flujos de trabajo tiene que llevar a cabo cálculos o transformaciones de datos muy sofisticados que pueden resultar poco prácticos en una actividad declarativa.En este caso, los usuarios más avanzados igual prefieren usar una actividad de código personalizada.El administrador del servidor puede ampliar el conjunto de tipos permitidos para incluir dicha actividad de código, siempre que el administrador esté seguro de que es de confianza.

System_CAPS_noteNota

Las actividades que llevan a cabo funciones de E/S, deben usar las actividades de mensajes Http soportadas para asegurar que la comunicación forma parte del modelo de consistencia.Para obtener más información, vea Mensajería en Workflow Manager 1.0 y Actividades Http.

Para ampliar el conjunto de tipos permitidos, el administrador tiene que llevar a cabo los siguientes pasos:

  1. Copie el ensamblaje que contiene el tipo (por ejemplo, una actividad de código personalizada) junto con todos archivos dependientes y péguelo en las dos siguientes carpetas:

    • C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin

    • C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts

  2. Cree un archivo llamado AllowedTypes.xml en C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin

  3. Edite el archivo AllowedTypes.xml y agregue los tipos deseados en el elemento XML <AllowedTypes>, tal como se muestra en el ejemplo siguiente.

    <AllowedTypes>
      <Assembly Name="Contoso.DataTransformations">
        <Namespace Name="Contoso.DataTransformations.Activities">
          <Type>DoDomainSpecificCalculation1</Type>
        </Namespace>
      </Assembly>
    
      <Assembly Name="Contoso.StronglyTypedAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <Namespace Name="Contoso.FinancialCalculation.Activities">
          <Type> GetPresentValueOfABond</Type>
        </Namespace>
      </Assembly>
    </AllowedTypes>
    
  4. Copie AllowedTypes.xml en la segunda carpeta: C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts

  5. Reanude el servidor Workflow Manager 1.0 durante el siguiente período de mantenimiento planeado.

System_CAPS_noteNota

En el caso de implementaciones multiservidor, tendrá que repetir el paso anterior en cada servidor.

Ahora ya se pueden usar los tipos agregados en el paso 3 en las nuevas actividades y flujos de trabajo.

System_CAPS_noteNota

En Workflow Manager 1.0, todo el enfoque anterior se limita a actividades de código personalizadas que derivan de las clases base Activity o CodeActivity.

También se pueden agregar tipos de datos al conjunto de tipos permitidos.Para habilitar el uso de ese tipo en los flujos de trabajo, debe seguir los pasos mencionados anteriormente.Sin embargo, puede que sea necesario agregar actividades adicionales a la lista de tipos permitidos para acceder a las propiedades del tipo de datos personalizados o para iniciarlo.El traductor de la expresión no gestionará automáticamente las referencias a las propiedades; por lo que no se pueden usar expresiones VB para esto.Por ejemplo, si el tipo personalizado Employee cuenta con las propiedades Name y Salary y tiene que acceder a estas propiedades de un flujo de trabajo, tendrá que marcar la autoría de las actividades de código personalizadas GetEmployeeName y GetEmployeeSalary, y agregarlas a la lista de tipos permitidos.

Para quitar un tipo agregado anteriormente a la lista de tipos permitidos, tiene que seguir estos pasos:

  1. Edite AllowedTypes.xml en las dos ubicaciones (C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin y C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts), en cada uno de los servidores, y quite la referencia al tipo o tipos que quiera quitar de la lista de los tipos permitidos.

  2. Detenga WorkflowServiceBackend en todos los servidores

  3. Detenga el grupo de aplicaciones WorkflowMgmtPool en todos los servidores. Esto provocará que el servidor Workflow Manager 1.0 no esté disponible, por lo que hay que hacerlo durante un periodo de mantenimiento

  4. Quite todos los archivos personalizados de todos los servidores copiados anteriormente en C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin y C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts

  5. Inicie el grupo de aplicaciones WorkflowMgmtPool en todos los servidores

  6. Inicie WorkflowServiceBackend en todos los servidores

  7. Quite todas las actividades declarativas y flujos de trabajo declarativos que usen el tipo o tipos que ha quitado para que no continúen haciéndole referencia o no se publique ninguna nueva versión de las actividades y flujos de trabajo que hagan referencia a los tipos quitados.

Workflow Manager 1.0 permite al administrador deshabilitar la protección contra la ejecución de código arbitrario.Esto puede ser una opción recomendable durante el desarrollo de soluciones que usan un código personalizado para evitar el peso de tener que agregar continuamente tipos necesarios a la lista de los tipos permitidos.Cuando la protección contra la ejecución de código arbitrario está deshabilitada, tiene un efecto parecido al de permitir que se agreguen los tipos de todos los ensamblajes del servidor a la lista de los tipos permitidos.Esto conlleva problemas de seguridad y solo debe usarse cuando Workflow Manager 1.0 está configurado de tal manera que solo los usuarios de confianza tienen permiso para cargar actividades de los flujos de trabajo o modificar las bases de datos usadas por Workflow Manager 1.0.

Para deshabilitar la protección contra la ejecución de código arbitrario en Workflow Manager 1.0, el administrador tiene que seguir estos pasos:

  1. Abra la ventana Comandos de Workflow PowerShell.

    System_CAPS_noteNota

    Para obtener instrucciones sobre cómo abrir la ventana de comandos de Workflow PowerShell, consulte Configurar Workflow Manager 1.0 mediante PowerShell.

  2. Ejecute el cmdlet Set-WFServiceConfiguration con los siguientes parámetros:

    • En ServiceUri, especifique el URI del servidor del flujo de trabajo, por ejemplo https://myserver.mydomain.mycompany.com:12290.

    • En Name, especifique WorkflowServiceAllowUnsafeTypes.

    • En Value, especifique true.

Para habilitar de nuevo la protección contra la ejecución de código arbitrario en Workflow Manager 1.0, el administrador tiene que seguir estos pasos:

  1. Abra la ventana Comandos de Workflow PowerShell.

    System_CAPS_noteNota

    Para obtener instrucciones sobre cómo abrir la ventana de comandos de Workflow PowerShell, consulte Configurar Workflow Manager 1.0 mediante PowerShell.

  2. Ejecute el cmdlet Set-WFServiceConfiguration con los siguientes parámetros:

    • En ServiceUri, especifique el URI del servidor del flujo de trabajo, por ejemplo https://myserver.mydomain.mycompany.com:12290.

    • En Name, especifique WorkflowServiceAllowUnsafeTypes.

    • En Value, especifique false.

Adiciones de comunidad

AGREGAR
Mostrar: