Tenho uma dúvida um pouco complexa de explicar. Mas o cenário é o seguinte:
Eu tenho um processo já criado no qual a segunda atividade (atividade B) tem como mecanismo de atribuição o mesmo usuário que executou a primeira atividade (atividade A).
Agora estou tentando criar um outro processo no qual uma atividade do tipo serviço chama esse processo anterior como um sub-processo. Estou usando o webservice ECMWorkflowEngineService. Como precisa passar o login e senha para o método startProcess, foi criado um usuário com nome user.service já deixando setado essas informações por padrão.
No método eu passo a matrícula do usuário logado para que ele seja o usuário responsável pela atividade B, que será chamada no sub-processo.
Aí está o problema: o usuário "user.service" inicia o sub-processo e, como a atividade B pega o usuário da atividade A, não consigo setar o usuário logado como responsável. Retorna um erro falando que essa atividade já tem um usuário selecionado (no caso, o "user.service").
Quando eu tiro o mecanismo de atribuição para essa atividade, funciona perfeitamente. Porém não posso tirá-lo, pois esse processo também é iniciado de forma independente, e não posso deixar que o usuário selecione a si mesmo para continuar.
Alguém tem uma ideia de como posso resolver esse problema? Preciso resolver isso o mais rápido possível. Se algo estiver gerando dúvidas eu explico com mais detalhes.
Victor, o comportamento descrito é exatamente o esperado. Para o caso em questão você pode tá utilizando o mecanismo de atribuição por associação ou customizado. Na documentação o exemplo descrito acredito que seja exatamente o que precisa. Segue:
https://tdn.totvs.com/pages/releaseview.action?pageId=265783517#Configurarmecanismodeatribui%C3%A7%C3%A3o-Atribui%C3%A7%C3%A3oporassocia%C3%A7%C3%A3o
Pelo visto você já tem conhecimento na plataforma, acredito que com essas informações você já consiga solucionar. Segue a luz, Victor.
Boa sorte!
Lembrando que, caso a resposta lhe seja satisfatória, marque-a como correta. Isso pode ajudar outros usuários com a mesma dúvida.
Alef, obrigado pela resposta. Mas ainda não consegui elaborar uma solução. Inicialmente eu pensei em criar um campo hidden passando como valor a matrícula do usuário logado. E coloquei como mecanismo de atribuição o campo do formulário. Porém, como eu setei no método que é pra iniciar na atividade B, o campo só será preenchido na atividade B, enquanto o meu problema é exatamente esse. Como vou conseguir pegar a matrícula do usuário que estou tentando passar antes de entrar nessa atividade?
Antes disso eu tinha tentado iniciar o processo pela atividade A mesmo, que no caso é a atividade INÍCIO. O que não funciona, pois o usuário que inicia o processo é o “user.service”, e não dá pra atribuir dois usuários pra mesma tarefa. Então o que pensei, que não sei se tem jeito de resolver, é iniciar o processo pelo início deixando como responsável o “user.service” mesmo, porém passar automaticamente pra atividade B (aí sim pegando o valor do campo como atribuição). Mas não sei se tem jeito.
Victor, nessa caso, essa segunda sugestão, descrita no segundo comentário pode resolver a sua vida. Tem jeito sim!
Alef, consegui resolver. Escrevi a solução abaixo. Mas se não se importa, vou adicionar assim mesmo, caso eu encontre futuros problemas rsrs. Obrigado.
Consegui resolver. O problema era que eu estava passando valores errados no parâmetro.
Eu estava passando completeTask = true e o userId = "user.service". Então o user.service criava a solicitação e já forçava o avanço da atividade Início pra atividade B, o que dava erro, porque tava tentando passar o usuário do processo-pai como responsável.
Agora eu simplesmente troquei o completeTask = false e o userId = "matricula_usuario_logado", então usuário do processo-pai cria a solicitação, automaticamente vai ser o responsável pela atividade B, e o sub-processo fica parado no início (é o que eu preciso).
Uma simples falta de atenção me custou dois dias de trabalho rs.
Kkkkkkkkkkkkkkkk acontece, Victor, faltou a informação que gostaria que ficasse na atividade inicial. Mesmo assim, parabéns e obrigado por compartilhar a solução. Show!