Exportar (0) Imprimir
Expandir Tudo

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

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

noteObservação
Este tópico fornece uma visão geral do uso de atividades de código personalizado no Workflow Manager 1.0. Para obter mais informações sobre a criação de atividades de código personalizado, consulte Designing and Implementing Custom Activities e Authoring Workflows, Activities, and Expressions Using Imperative Code. O Workflow Manager 1.0 suporta atividades de código personalizado que são herdadas 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 variado conjunto de atividades de fluxo de trabalho prontas para uso que podem ser usadas nas atividades e fluxos de trabalho dos usuários. O Workflow Manager 1.0 define também uma "Superfície confiável", que inclui um conjunto de tipos e atividades suportados.

noteObservaçã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 1.0 e Superfície confiável do Workflow Manager 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.

noteObservaçã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 1.0 e Http Activities..

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\Workflow Manager\1.0\Workflow\WFWebRoot\bin

    • C:\Arquivos de Programas\Workflow Manager\1.0\Workflow\Artifacts

  2. Crie um arquivo chamado AllowedTypes.xml em C:\Arquivos de Programas\Workflow Manager\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\Workflow Manager\1.0\Workflow\Artifacts

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

noteObservaçã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.

noteObservaçã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\Workflow Manager\1.0\Workflow\WFWebRoot\bin e C:\Arquivos de Programas\Workflow Manager\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\Workflow Manager\1.0\Workflow\WFWebRoot\bin e C:\Arquivos de Programas\Workflow Manager\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.

    noteObservação
    Para obter instruções sobre como abrir a janela de comando Workflow PowerShell, consulte Configurando o Workflow Manager 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.

    noteObservação
    Para obter instruções sobre como abrir a janela de comando Workflow PowerShell, consulte Configurando o Workflow Manager 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.


Workflow Manager 1.0 MSDN Community Forum


Data da compilação:

2013-10-23

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft