Share via


Definindo e usando tipos e atividades de código personalizado em um fluxo de trabalho do Workflow Manager Tools 1.0

 

Publicado: maio de 2016

Os fluxos de trabalho do Workflow Manager 1.0 são criados usando um modelo declarativo completo, mas se uma atividade baseada em código personalizado ou um tipo de dados personalizado for necessário, os administradores do servidor podem adicionar esse tipo personalizado aos tipos suportados usando as etapas descritas neste tópico.Cada tipo pode ser adicionado explicitamente, o que é recomendado, especialmente para produção.Como alternativa, a proteção contra a execução de código arbitrário pode ser desativada, o que tem efeito similar ao de todos os tipos de todos os assemblies no servidor terem sido permitidos.Essa abordagem pode simplificar o processo de desenvolvimento, mas tem consequências sobre a segurança, logo não é adequada para produção.

Neste tópico

  • Dando suporte às atividades de código personalizado

  • Dando suporte aos tipos de dados personalizados

  • Removendo uma atividade de código ou tipo de dados personalizado

  • Dando suporte ao código personalizado ao desativar a proteção contra a execução de código arbitrário

Observação

Este tópico fornece uma visão geral de como usar atividades de código personalizadas em Workflow Manager 1.0.Para como criar atividades de código personalizadas Para obter mais informações sobre, consulte Designing and Implementing Custom Activities e Authoring Workflows, Activities, and Expressions Using Imperative Code.O Workflow Manager 1.0 oferece suporte a atividades personalizadas que herdam de Activity e CodeActivity.

Dando suporte às atividades de código personalizado

O Workflow Manager 1.0 permite aos usuários publicar e usar as suas próprias atividades declarativas e fluxos de trabalho declarativos.Ele também fornece um conjunto avançado de atividades de fluxo de trabalho prontas para uso que podem ser usadas em atividades e fluxos de trabalho dos usuários.O Workflow Manager 1.0 também define uma "superfície confiável", que inclui o conjunto de tipos e atividades com suporte.

Observação

Para obter mais informações sobre as atividades prontas para uso no Workflow Manager 1.0 e a superfície confiável, consulte Visão geral das atividades do Workflow Manager Tools 1.0 e Superfície confiável do Workflow Manager Tools 1.0.

Potencialmente, estender o conjunto de atividades e tipos permitidos tem um grande impacto sobre a segurança, o desempenho, a escalabilidade e a disponibilidade do Workflow Manager 1.0 e não deve ser considerado, exceto quando absolutamente necessário. Por exemplo, quando os fluxos de trabalho precisam realizar cálculos sofisticados ou conversão de dados que não seriam práticas para o autor em uma atividade declarativa.Nesse caso, os usuários avançados podem querer usar uma atividade de código personalizado como alternativa.O administrador do servidor pode estender o conjunto de tipos permitidos para incluir essa atividade de código, isto é, se o administrador confia plenamente nessa atividade de código.

Observação

As atividades que realizam E/S devem usar as atividades suportadas do sistema de mensagens Http para garantir que a comunicação participe do modelo de consistência.Para obter mais informações, consulte Sistema de mensagens no Workflow Manager Tools 1.0 e Atividades Http.

Para estender o conjunto de tipos permitidos, um administrador precisa seguir as seguintes etapas:

  1. Copie o assembly que contém o tipo (por exemplo, uma atividade de código personalizada) junto com todos os arquivos dependentes para as duas pastas a seguir:

    • C:\Arquivos de Programas\Gerenciador de Fluxo de Trabalho\1.0\Workflow\WFWebRoot\bin

    • C:\Arquivos de Programas\Gerenciador de Fluxo de Trabalho\1.0\Workflow\Artifacts

  2. Crie um arquivo chamado AllowedTypes.xml em C:\Arquivos de Programas\Gerenciador de Fluxo de Trabalho\1.0\Workflow\WFWebRoot\bin

  3. Edite AllowedTypes.xml para e adicione os tipos desejados dentro do elemento xml <AllowedTypes>, como mostrado no exemplo a seguir.

    <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 para a segunda pasta: C:\Arquivos de Programas\Gerenciador de Fluxo de Trabalho\1.0\Workflow\Artifacts

  5. Reinicie o servidor de Workflow Manager 1.0 durante a próxima janela de manutenção planejada.

Observação

No caso de implantação em vários servidores, as etapas acima devem ser executadas em todos os servidores.

Agora, os tipos adicionados na etapa 3 podem ser usados nos fluxos de trabalho e atividades publicados recentemente.

Observação

No Workflow Manager 1.0, a abordagem acima é limitada às atividades de código personalizado que derivem das classes base Activity ou CodeActivity.

Dando suporte aos tipos de dados personalizados

Tipos de dados personalizados também podem ser adicionados ao conjunto de tipos permitidos.O mesmo conjunto de etapas acima deve ser seguido para permitir o uso desses tipos nos fluxos de trabalho.Entretanto, pode ser necessário adicionar atividades adicionais à lista de tipos permitidos para que seja possível acessar as propriedades desse tipo de dados personalizado ou inicializá-lo.As referências de propriedades não serão automaticamente manipuladas pelo conversor de expressões, por isso as expressões VB não podem ser usadas nesse caso.Por exemplo, se um tipo personalizado Employee tem as propriedades Name e Salary, e é necessário acessar essas propriedades a partir de um fluxo de trabalho, então devem ser criadas as atividades de código personalizado GetEmployeeName e GetEmployeeSalary, que devem ser adicionadas à lista de tipos permitidos.

Removendo uma atividade de código ou tipo de dados personalizado

Para remover um tipo adicionado anteriormente da lista de tipos permitidos, as etapas a seguir devem ser seguidas:

  1. Edite AllowedTypes.xml nos dois locais (C:\Arquivos de Programas\Gerenciador de Fluxo de Trabalho\1.0\Workflow\WFWebRoot\bin e C:\Arquivos de Programas\Gerenciador de Fluxo de Trabalho\1.0\Workflow\Artifacts) em todos os servidores e remova a referência ao tipo ou tipos que você deseja remover da lista de tipos permitidos.

  2. Interrompa o serviço WorkflowServiceBackend em todos os servidores

  3. Interrompa o pool de aplicativos WorkflowMgmtPool em todos os servidores – isso deixará o servidor Workflow Manager 1.0 indisponível, por isso deve ser feito durante uma janela de manutenção

  4. Remova todos os arquivos personalizados em todos os servidores anteriormente copiados para C:\Arquivos de Programa\Gerenciador de Fluxo de Trabalho\1.0\Workflow\WFWebRoot\bin e C:\Arquivos de Programas\Gerenciador de Fluxo de Trabalho\1.0\Workflow\Artifacts

  5. Inicie o pool de aplicativos WorkflowMgmtPool em todos os servidores

  6. Inicie o serviço WorkflowServiceBackend em todos os servidores

  7. Remova todas as atividades e fluxos de trabalho declarativos que estão usando o(s) tipo(s) removido(s) para que eles não sejam mais referenciados ou publique uma nova versão dessas atividades e fluxos de trabalho que não referenciem mais os tipos removidos.

Dando suporte ao código personalizado ao desativar a proteção contra a execução de código arbitrário

O Workflow Manager 1.0 permite que um administrador desative a proteção contra a execução de código arbitrário.Essa pode ser uma opção conveniente durante o desenvolvimento de soluções que usam código personalizado para evitar o trabalhoso processo de adicionar, ao longo do tempo, os tipos necessários à lista de tipos permitidos.Quando a proteção contra a execução de código arbitrário é desativada, tem efeito similar ao de todos os tipos de todos os assemblies no servidor terem sido adicionados à lista de tipos permitidos.Isso tem implicações na segurança e deve ser usado apenas quando o Workflow Manager 1.0 está configurado de modo que apenas os usuários confiáveis tenham permissão para carregar atividades de fluxo de trabalho ou modificar bancos de dados usados pelo Workflow Manager 1.0.

Para desativar a proteção contra a execução de código arbitrário

Para desativar a proteção contra a execução de código arbitrário no Workflow Manager 1.0, um administrador deve seguir as etapas a seguir:

  1. Abra a janela de comando do Workflow PowerShell.

    Observação

    Para obter instruções sobre como abrir a janela de comando Workflow PowerShell, consulte Configurando o Workflow Manager Tools 1.0 usando PowerShell.

  2. Execute o cmdlet Set-WFServiceConfiguration com os seguintes parâmetros:

    • Para ServiceUri, especifique o Uri do servidor de fluxo de trabalho, por exemplo https://servidor.dominio.empresa.com:12290.

    • Para Name, especifique WorkflowServiceAllowUnsafeTypes.

    • Para Value, especifique true.

Para reativar a proteção contra a execução de código arbitrário

Para reativar a proteção contra a execução de código arbitrário no Workflow Manager 1.0, um administrador deve seguir as etapas a seguir:

  1. Abra a janela de comando do Workflow PowerShell.

    Observação

    Para obter instruções sobre como abrir a janela de comando Workflow PowerShell, consulte Configurando o Workflow Manager Tools 1.0 usando PowerShell.

  2. Execute o cmdlet Set-WFServiceConfiguration com os seguintes parâmetros:

    • Para ServiceUri, especifique o Uri do servidor de fluxo de trabalho, por exemplo https://servidor.dominio.empresa.com:12290.

    • Para Name, especifique WorkflowServiceAllowUnsafeTypes.

    • Para Value, especifique false.