Muitas vezes nos deparamos com este dilema “Usar um Workflow ou um Plugin para fazer determinada atividade?”. No material para a certificação de Extensão do CRM existe um material bem completo sobre em quais situações tendemos a utilizar um ou outro.
Resumidamente o que podemos concluir:
- Workflows (nativos) – Deve ser sempre a primeira hipótese a ser pensada, pois na teoria é que envolve o menor esforço (tempo) para ser concebido. Interface visual, controles intuitivos e aproximação ao “mundo real” por si só já saem na frente de qualquer outra alteranativa, além é claro que com um breve treinamento os próprios usuários podem começar a construir os seus fluxos (cuidado com isso). Agora após a empolgação inicial e antes de sair contruindo os seus “500 workflows”! rs Pense um pouco, pois ele não foi idealizado para fazer todo o tipo de atividade e outro agravante é o processamento assíncrono, que fica em background realizando as atividades que em alguns casos precisamos de um resposta imediata. Por fim, a integração com outros sistemas, validação de dados e implementação de regras de negócio complexas, notará que existem limitações e partirá para outras soluções;
- Custom Workflow Activity – Some todas as vantagens dos Workflows nativos a possibilidade de criar regras de negócio bem mais completas, bem como depuração (debug) e usando o nosso C#/VB.Net. Agora encontrei o que queria você está pensando, não é? Certamente irá possibilitar uma gama bem maior de forma de uso, mas lembra-se dos problemas na validação de dados, processamento assíncrono? Ainda existem, avalie bem o que precisa fazer;
- Plugins – Traz todas as possibilidades anteriores e outras vantagens, como opção de processamento (síncrono ou assíncrono), realizar validações de dados em dois estágios (pré e post). É sem dúvida a opção que permitirá maior flexibidade e autonomia, porém na teoria é a solução mais complexa para ser implementada, recomendaria o seu uso para integrações e regras de negócio que devem ser aplicadas sincronamente;