Olá,
Eu tenho um processo chamado Pauta de Reunião da Diretoria, que é literalmente uma pauta da reunião e que ao término da reunião esse processo é finalizado.
Quando inicio o processo eu preencho automaticamente alguns campos dele no evento de formulário displayFields. Esses campos são obrigatórios (gerente e unidade).
Agora estou criando o processo Contratações e em determinado momento essa contratação deve virar uma pauta de reunião, então criei uma atividade subprocesso que inicia o processo Pauta de Reunião da Diretoria.
O problema ocorre quando inicio o subprocesso, pois os eventos de formulário displayFields e enableFields não são disparados, assim os campos não são preenchidos.
Fazendo muitos testes descobri que o evento de formulário inputFields é disparado e nele eu posso fazer o preenchimento dos campos, porém eu só consigo alterar o valor dos campos que foram configurados em "Campos" da Atividade SubProcesso.
Como os campos gerente_id e unidade não foram configurados, pois não precisam existir nesse Processo Pai, eu não consigo alterar os valores com o form.setValue no evento enableFields.
Tentei fazer as alterações no formulário com eventos de processos, mas todos os eventos de processo ocorrem após o evento de formulário validateForm (e que dispara o erro por não ter os campos preenchidos).
Eu imaginei duas opções pra resolver isso:
- Criar campos em branco no processo pai só pra configurar na atividade subprocesso e assim poder alterar seus valores no evento inputFields;
- Descartar o evento validateForm, fazendo as validações no JS no próprio HTML do formulário, e assim usar algum evento de processo para alterar os campos do subprocesso.
Mas ainda assim eu fiquei muito confuso com esse funcionamento, pois é contra intuitivo que não possamos alterar qualquer campo no evento do formulário só porque ele veio como um subprocesso.
Ps: analisando melhor a situação eu imagino a variável form, que é entregue no evento inputFields, é um objeto "request" que só possui os campos enviados via HTTP e por isso não dá pra adicionar um campo que não veio na requisição, somente editar o que foi enviado.
Como vocês trabalham em casos assim de preencher automaticamente alguns campos em formulários de subprocessos?