Desenvolvimento de Workflows

Overview

Workflows são recursos presentes em diversos projetos SharePoint, geralmente são feitos no SharePoint Designer e outros, mais complexos, no Visual Studio.

Neste post vou falar de algumas considerações sobre o desenvolvimento e implantação sobre workflows feitos no Visual Studio, o foco não é explicar como fazer, mas informar sobre alguns cuidados importantes na implantação deles.

Solução

A implantação de novos workflows em ambiente de produção são praticamente iguais a qualquer solução (solution) ou recurso (feature) feitas para o SharePoint 2010, basta “só” instalar o pacote no servidor e associar o workflow à biblioteca.

Até aí não tem muito segredo, mas como fazer quando um workflow estiver sendo executado? Como atualizá-lo? Imaginem o seguinte cenário: a versão 1.0 do workflow está rodando e existem 500 documentos (formulário, documentos, itens, qualquer coisa) que estão executando esse workflow. O worklfow sofre alterações e algumas atividades são adicionadas. Ao liberar a atualização do pacote, sem os devidos cuidados, todas as 500 instâncias que estão em execução irão parar de funcionar.

Por que isso acontece? Porque uma instância de workflow fica grande parte do tempo persistida em banco de dados ao invés de ocupar a memória do servidor – o SharePoint abstrai esse comportamento para nós. Sempre que um workflow está aguardando uma ação de usuário ou resposta de um serviço, a sua instância é serializada e gravada em banco. Quando essa ação acontece, como por exemplo o usuário editar uma tarefa pendente, o workflow é desserealizado, volta para a memória e continua a execução do ponto em que estava.

Agora que já entendemos um pouco mais, fica mais simples de explicar o problema gerado e sua solução. Como o assembly da alteração realizada é diferente da versão original, o .NET não vai conseguir desserializar as instâncias do banco de dados e carregar para a memória, ou seja, todos os processos rodando vão parar de funcionar. É como se a tarefa perdesse a referência com o workflow, ocasionando diversos problemas aos usuários.

A solução para isso é encarar as coisas com uma visão um pouco diferente. Para começar encare que cada alteração no workflow a partir do Visual Studio é um workflow novo que deve ter uma feature com nome e identificadores diferentes, assemblies com versão diferente – o nome das dlls pode ser o mesmo, se eles forem alterados terá muito trabalho desnecessário – e atribuição dos workflows à lista com nomes diferentes. Ao atribuir um workflow novo (versão nova) a uma lista ou biblioteca configure os demais para não iniciarem automaticamente, dessa forma somente a versão nova será iniciada automaticamente.

Isso significa que uma biblioteca terá diversas versões do workflows rodando ao mesmo tempo? Sim, isso mesmo,  lembrando que um item terá uma instância do workflow sendo executada, o que não ocasionará problemas no ambiente.

Pensem no assunto e evitem problemas futuros.

 

Referências

Anúncios

15 Respostas to “Desenvolvimento de Workflows”

  1. Guilherme Says:

    Realmente, versionar eh preciso/recomendado na maioria das vezes, ou isto ira acarretar algumas horas extras de trabalho (as vesperas de um feriado) pra corrigir os efeitos colaterais de uma alteracao errada em um WF =/
    #TrueStory

  2. Maria da Graça Tavares de Pinho Says:

    Olá Fabian André
    Encontrei-o ocasionalmente porque ando à procura de uma forma de começar do zero aprender a mexer com o sharepoint, gostaria de começar pelas coisas básicas de construção de um site em charepoint. Que livro recomenda mas de preferência em português ou brasileiro?
    Gostaria que me ajudasse uma vez que me pareçe ser uma pessoa que domina já o Charepoint.
    Muito obrigada
    Melhores cumprimentos
    Maria da Graça

  3. anderson de fraga Says:

    Cara eu estou desenvolvendo workflows em sharepoint, porém alguns fluxos eu preciso que o meu cliente preencha um formulário, como faço para publicar um formulário num site aberto que não precisa fazer login.. e que alimente uma lista dentro do fluxo do meu site que tem login

  4. Entendendo o Desenvolvimento de Workflows « Fabian André Gehrke Says:

    […] futuros, um deles é a constante atulização das dlls do seu workflow no servidor, veja o post Desenvolvimento de Workflows para entender um pouco melhor o trabalho para resolver […]

  5. Andréa Cursino Says:

    Fabian,

    tenho um workflow rodando porém, precisei fazer algumas alterações. Como indicado, fiz um novo workflow e instalei. A instalação foi ok, mas quando criei um novo item na lista, mesmo sem atribuir o novo, o anterior não funcionou mais, só de instalar e ativar a feature, deu conflito com o que estava instalado.
    Tem ideia do que pode ser?

    • Fabian André Gehrke Says:

      Andréa,

      Vc também criou uma feature nova com novos nomes e IDs novos? Tudo tem que ser novo.

      • Andréa Cursino Says:

        Sim, criei sim.

      • Andréa Cursino Says:

        Criei um novo projeto de workflow no VS2008 e só peguei da versão antiga o código, mas o IDs foram novos, gerados pelo VS.
        Não sei se tem alguma relação, mas utilizo o WSPBuilder para gerar o pacote de instalação.

      • Fabian André Gehrke Says:

        Andréa,

        Que tipo de erro foi gerado no workflow antigo? Descreva melhor por favor.

      • Andréa Cursino Says:

        Ele não dá necessariamente um erro explícito. Ao terminar de cadastrar um novo item, ele parece que entra no workflow, grava o primeiro texto no histórico e quando efetivamente deveria entrar na primieira condição de if que existe no código, ele grava erro no andamento e escreve no histórico que o ocorreu um erro no workflow mas não detalha qual erro.
        Só que quando eu desinstalei os dois e instalei a versão 1, esse funcionou normalmente.
        Porém preciso que esteja instalados os dois, v1 e v2, pois o v1 ficaria para os fluxos que já estão em andamento e o v2 para os novos. 😦

    • Fabian André Gehrke Says:

      Andréa,

      Verifique no log do SharePoint, faça o seguinte, primeiro faça o erro acontecer e depois vá no log do SharePoint e procure por erros de workflow.

      • Andréa Cursino Says:

        Fabian,

        Obrigada pela tentativa, mas ainda não conseguimos resolver.
        Estamos em contato com o Wagner Amorim para ver se ele e o pessoal da Done consegue resolver.
        Se tiver alguma ideia do que seja, vai ajudar muito.


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: