"Mea culpa" — SharePoint Designer * pode * criar fluxos de trabalho de máquina de estado

Descobri recentemente que é possível e até bastante fácil de criar um fluxo de máquina de estado usando o SharePoint Designer. A necessidade é a mãe da invenção e tudo o que é bom e eu tinha uma necessidade desta semana que olhou para uma invenção. Por coincidência, Me deparei com Este post no fórum MSDN também. Minha experiência pessoal, esta semana e essa confirmação independente"" empresta a força para minha condenação. Eu pretendo escrever sobre isso no maior comprimento com um exemplo completo soprado, Mas aqui está o essencial:

  • A abordagem utiliza o fato de que um fluxo de trabalho pode alterar um item da lista, disparando um novo fluxo de trabalho. Normalmente eu considerei isto para ser um incômodo e até mesmo blogou sobre o uso de semáforos para lidar com isso.
  • SharePoint permite vários fluxos de trabalho independentes ser ativo contra um item de lista específica.

Para configurá-lo:

  • Projetar sua máquina de estado (ou seja, os Estados-Membros e como Estados de transição de um para o outro).
  • Implementar cada Estado como separado de fluxo de trabalho.
  • Configurar cada um destes fluxos de trabalho do estado para executar em resposta a qualquer mudança no item de lista.

Cada fluxo de trabalho do estado segue este padrão áspero:

  • Após a inicialização, determinar se ele deve realmente ser executado inspecionando as informações de estado no item"atual". Abortar se não.
  • Fazer o trabalho.
  • Atualizar o item atual"" com informações de estado de novo. Isto provoca uma atualização para o item atual e dispara todos os fluxos de trabalho estado.

Além do benefício óbvio que cria um fluxo de máquina de estado declarativa, Tudo o que o informações do estado são ótima para construção de KPIs e interessante views.

Ele tem uma desvantagem substancial — rastreamento do histórico de fluxo de trabalho padrão é ainda mais inútil do que o normal 🙂 que é facilmente remediado, no entanto. Armazenar todas as informações de tipo de auditoria em uma lista personalizada. Isso provavelmente é uma boa idéia mesmo para fluxo de trabalho seqüencial baunilha, mas isso é para outro post 🙂

Chamo a isto um "mea culpa" Porque eu tenho, Infelizmente, disse mais de uma vez em fóruns e em outros lugares que se deve usar visual studio para criar um fluxo de trabalho de máquina de estado. Isso simplesmente não é verdade.

</fim>

Subscreva ao meu blog.

Technorati Tags:

4 pensamentos ""Mea culpa" — SharePoint Designer * pode * criar fluxos de trabalho de máquina de estado

  1. Jaustral escreveu:
    Oi Paulo,
    Quantos Estados que está lidando? Eu só vou ter duas diferentes fluxos de trabalho ativos, quando eu ir para a página de configurações de fluxo de trabalho?
    Melhor,
    Juan.
    Resposta
  2. Sanjeev Rajput
    Eu realmente gostaria de ler os exemplos completo. Espero que um de vocês pode ajudar a esclarecer alguns pesadelos que tenho tido com meu processo semelhante. Eu estou no ponto onde eu estou pronto para começar de novo.
    Resposta
  3. Paul Galvin
    Isso é um muito interessante coloca de abordagem uma exclamação ponto no ponto de maior que o SPD pode criar fluxos de trabalho de máquina de estado.
    Não sei se existem diferenças substanciais em termos de performance, entre o que você contorne e o esboço. No meu caso esta semana, desempenho não é um problema porque este determinado fluxo de trabalho é um caso de longa (16 ou mais semanas do início ao fim) e nunca há mais do que uns dúzia de ativo a qualquer momento. Se houvesse uma dúzia, arranque e executando cada hora … Isso seria uma história diferente. Acho que, em geral, desempenho e fluxo de trabalho é um assunto muito nebuloso.
    Não sei se você executar o seu próprio blog ou não. Se você fizer, Você deveria considerar exclusivamente sobre sua abordagem mais detalhadamente. Se não, Eu ficaria mais que feliz para chamá-lo de um blogueiro convidado do"" e fazer o upload de seu post no meu blog.
    Obrigado pelo comentário. É uma das melhores que fui capaz de eliciar no meu blog!
    –Paul G
    Resposta
  4. Mike Atkins
    Eu implementei a máquina de estado usando uma lista separada para manter o estado durante as transições de estado. O principal fluxo de trabalho criado um item aqui e definir o estado inicial. Eu usei um único, separado, fluxo de trabalho para lidar com todos os Estados-, usando um "se-então-ELSEIF" estrutura (na "Etapa 1") sobre os Estados possíveis.
    Para cada Estado, Tudo o que eu precisava fazer era obter uma resposta de um usuário.
    Meu exemplo foi uma aprovação seqüencial de vários níveis, onde cada passo (representado por um estado) poderia ter vários sucessores possíveis. Isto significou que cada usuário (potencialmente) diferentes opções disponíveis em um menu de escolha. Meu "passo dois" também foi um "IF-THEN-ELSE" estrutura que considera todas as respostas possíveis (de todas as fases), e então decidir o que deve ser o próximo estado. "Passo 3" em seguida, definir o estado, e o fluxo de trabalho terminou.
    Este método tem a (óbvio) vantagem de acontecer dentro de um único (secundário) fluxo de trabalho. No entanto, o escopo do que pode ser realizado neste fluxo de trabalho é mais limitado que teria com fluxos de trabalho para cada Estado. Eu queria saber, no entanto, que tipo de desempenho atingido ocorre se todos os fluxos de trabalho do estado individual iniciar (Embora terminando imediatamente a seguir).
    Também, Eu uso uma lista secundária (com seu próprio fluxo de trabalho) para representar a transição entre Estados, como este processo pode ser apenas parte de um maior fluxo de trabalho. Quando o fluxo de trabalho principal inicia o processo de máquina de estado, entra em um estado de espera, e continua quando o "loop" tem termintaed. Que contemplava também a possibilidade de que meu fluxo de trabalho principal pode também querer alterar dados no Item da lista original, e eu queria evitar demissões desnecessárias"" do fluxo de trabalho de máquina de estado.
    Resposta

Deixar uma resposta

seu endereço de e-mail não será publicado. Campos obrigatórios são marcados *