none
Fluxo de trabalho com contagem de horas úteis RRS feed

  • Pergunta

  • Boa tarde a todos

    preciso criar um fluxo de trabalho que aguarde horas úteis. Exemplo, empresa com horário de funcionamento entre 08:00 e 18:00 horas e as ocorrências não classificadas dentro de 2 horas disparem um email como lembrança. Caso a ocorrência seja aberta às 17:00 o email só deve ser enviado no dia seguinte às 9:00.

    O fluxo de trabalho do crm é capaz de fazer isso ou é necessário desenvolver o fluxo no VS?

    []s
    Pedro
    Att: Pedro Andrade
    segunda-feira, 20 de julho de 2009 20:02

Respostas

  • Olá Pedro,

    Utilizando somente o WF do CRM não é possível.

    Imagino que vc terá que fazer o seguinte:

    - Criar um novo campo na entidade de ocorrência, de data (vamos chamar de new_incidentdateCtrl), para que, de 2 em duas 2 horas, o wf analise a ocorrência;

    - Criar um wf para o evento de [criação] de ocorrência;

    - Adicionar a etapa [aguardar até] que a data [new_incidentdatectrl] da ocorrência passe das duas horas de criação.
    Veja um exemplo de uso do recurso [Timeout] do CRM:
          - http://crm.davidyack.com/journal/2008/1/14/workflow-wait-condition-parallel-wait-branch-steps.html
          - http://blogs.msdn.com/crm/archive/2007/12/12/crm-4-0-workflow-turning-inaction-into-action.aspx

    - Se passou, atualizar este campo com a data atual (para que o controle de [aguardar até] funcione, pois a comparação de 2 em 2 horas é feita através deste campo);

    - Se depois de 2 horas a ocorrência não foi classificada, checar se a [hora do sistema] está entre [08:00 e 18:00]. Porém, neste ponto o CRM não consegue te passar esta informação. Vai ser necessária a criação de um [Custom Workflow Activity], uma dll,  que retorne a [hora atual]. Veja exemplo em : http://msdn.microsoft.com/en-us/library/cc677097.aspx

    - Com esta informação vc consegue prosseguir com a etapa e enviar o email.

    []

    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    • Marcado como Resposta Pedro Andrade sexta-feira, 24 de julho de 2009 13:09
    terça-feira, 21 de julho de 2009 15:06

Todas as Respostas

  • Olá Pedro,

    Utilizando somente o WF do CRM não é possível.

    Imagino que vc terá que fazer o seguinte:

    - Criar um novo campo na entidade de ocorrência, de data (vamos chamar de new_incidentdateCtrl), para que, de 2 em duas 2 horas, o wf analise a ocorrência;

    - Criar um wf para o evento de [criação] de ocorrência;

    - Adicionar a etapa [aguardar até] que a data [new_incidentdatectrl] da ocorrência passe das duas horas de criação.
    Veja um exemplo de uso do recurso [Timeout] do CRM:
          - http://crm.davidyack.com/journal/2008/1/14/workflow-wait-condition-parallel-wait-branch-steps.html
          - http://blogs.msdn.com/crm/archive/2007/12/12/crm-4-0-workflow-turning-inaction-into-action.aspx

    - Se passou, atualizar este campo com a data atual (para que o controle de [aguardar até] funcione, pois a comparação de 2 em 2 horas é feita através deste campo);

    - Se depois de 2 horas a ocorrência não foi classificada, checar se a [hora do sistema] está entre [08:00 e 18:00]. Porém, neste ponto o CRM não consegue te passar esta informação. Vai ser necessária a criação de um [Custom Workflow Activity], uma dll,  que retorne a [hora atual]. Veja exemplo em : http://msdn.microsoft.com/en-us/library/cc677097.aspx

    - Com esta informação vc consegue prosseguir com a etapa e enviar o email.

    []

    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    • Marcado como Resposta Pedro Andrade sexta-feira, 24 de julho de 2009 13:09
    terça-feira, 21 de julho de 2009 15:06
  • Oi Gilberto,

    vou tentar fazer dessa forma. Não vai ser por agora, mas surgindo mais dúvidas eu volto a postar.

    Me tira mais uma dúvida, já li que o fluxo de trabalho cria uma linha no banco e então não importa a quantidade de worflows em espera que não vai perder performance, mas também já li que muitos workflows em espera vai sim afetar a performance, qual informação procede?

    abs
    Pedro
    Att: Pedro Andrade
    sexta-feira, 24 de julho de 2009 12:54
  • Olá Pedro,

    Se vc pensar em uma estrutura recomendada pela MS, que consiste em um servidor somente para rodar serviços [CRM-CrmAsyncService], outro servidor somente para o [CRM-IIS], outro somente para o Banco [CRM-SQL] realmente não terá problemas de performance com workflows em espera.

    Diria que o que mais prejudica performance hoje no CRM seria o servidor de banco não exclusivo (o que infelizmente muitas empresas fazem).

    []
    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    sexta-feira, 24 de julho de 2009 13:52
  • Gilberto

    Geralmente a estrutura q estou montanto é um servidor de banco exclusivo e outro para o CRM com os demais serviços (exceto email). Um servidor para o IIS e demais serviços conseguiria rodar sem problemas?

    []s
    Att: Pedro Andrade
    sexta-feira, 24 de julho de 2009 14:16
  • Sim, acredito que vai rodar sem problemas. Inclusive se puder deixar o [Serviço de Processamento Assíncrono do CRM] somente no servidor de serviços, melhor.

    []


    Gilberto Tezini - MCP ASP.NET (C#/VB.NET) / MCP CRM - (http://gtezini.blogspot.com)
    sexta-feira, 24 de julho de 2009 14:35
  • Olá Gilberto,

    Estou trabalhando com este problema levantado pelo Pedro.

       Será que não teria como fazer esta contagem de horas úteis via JScript? Não pensei muito sobre como fazer isto, mas me parece uma alternativa viável.

    Sobre trabalhar com WorkFlow, tive algumas dúvidas:
       Estava analisando o exemplo que você colocou acima (http://msdn.microsoft.com/en-us/library/cc677097.aspx) sobre retornar um valor calculado. Resolvi copiar o código pra o VS2008 para poder visualisar melhor e testá-lo. Percebi então que faltava alguma(s) referência(s) relativas a [System.Workflow]. Você sabe me dizer onde encontro tais referências?

       Outra dúvida: Há alguma diferença em desenvolver o Plugin no VS2005 ou VS2008?

       Obrigado.
       Bruno Cardoso
    quarta-feira, 29 de julho de 2009 15:53