Como iniciar um processo através de uma widget em página pública?

Opa, esta é uma situação ainda sem exemplos na documentação, o que ocorre é o seguinte, tenho um formulário com os mesmos campos de uma widget, e esta widget está atrelada a uma página pública, para que os dados sejam preenchidos por fornecedores externos que não possuem licença de acesso ao fluig.

O que preciso é que quando o fornecedor clicar em algum botão da página, seja iniciado automaticamente um processo que atribuído a um determinado grupo.

Já revirei toda a documentação do Fluig e não encontrei nenhum exemplo ou coisa parecida, encontrei apenas informações de como apresentar dados de dataset na widget, mas de inserir os dados preenchidos em um dataset, ou de iniciar o processo automaticamente a partir da widget na página pública não encontrei nada..

Agradeço pela ajuda!!

Na maioria das vezes que vi algo do gênero, era feito por se criar um dataset que chame o serviço ECMWorkflowEngineService via SOAP e iniciava a solicitação através do método startProcess. Então era chamado o dataset através da Widget e iniciava o processo.

Opa, primeiramente obrigado pelo auxílio Gustavo!

Li a respeito do startProcess e tentei chamar o mesmo na ação de um botão do widget via javaScript, mas não funcionou.

Normalmente nesses casos, onde exatamente você chama o ‘startProcess’?

No caso eu teria que fazer um serviço REST (por exemplo) e chamar o starProcess dentro desse serviço?

Obrigado!

Então, o que geralmente é feito é criar um serviço “Visualização de Serviços → Cadastrar” no Studio apontando para o WSDL do ECMWorkflowEngineService e então chamando o método startProcess dentro do dataset e então na Widget se chama este Dataset em específico enviando por CONSTRAINTs as informações necessárias para a abertura do processo. É um pouco trabalhoso, mas é a maneira mais comum quando se trata de realizar esse tipo de operação em widgets customizadas.

Ah, então devo criar um dataset customizado, e dentro dele chamar o startProcess, então realizar uma ‘busca’ nesse dataset a partir do meu widget, passando os campos no array de constraints… Só na parte que você comentou de incluir o serviço pelo studio, como sei qual URL devo passar referente ao ECMWorkflowEngineService? Obrigado!

Opa encontrei, seria meu endereço + /webdesk/ECMWorkflowEngineService?wsdl

Gustavo, sabe como faço para chamar o startProcess dentro do dataset customizado? Tentei chamar ‘hAPI.startProcess’ mas deu como ‘hAPI is not defined’. Obrigado

Datasets não são partes do BPM, portanto não possuem hAPI. Você pode seguir esta documentação pra criar os stubs e implementar o dataset: Integração com Aplicativos Externos - TOTVS Fluig - TDN , também é possível implementar a integração enviando o soap diretamente como está na documentação: Consumo de um WS SOAP de um Widget - TOTVS Fluig - TDN , mas nesta opção teria de tratar o SOAP para ser enviado.

Obrigado Gustavo, agora entendi um pouco mais, porém seguindo a documentação que você passou, para criar os stubs, me deparei com o erro ‘class not found’ ao tentar instanciar a classe do WorkflowEngineService em: serviceHelper.instantiate(‘com.totvs.technology.ecm.workflow.ws.WorkflowEngineService’);

Consultando o serviço pela 'Visualização de serviços" do fluig aparentemente esta correto o nome da classe.
Não sei se você já trabalhou com a WorkflowEngineService alguma vez, mas sabe onde é possível verificar qual o nome da classe que deve ser chamado ao instanciar ali? Obrigado!

O stub que te passei é ECMWorkflowEngineService, então acredito que o nome correto da classe seja ECMWorkflowEngineService mesmo. Pra confirmar, na aba “Visualização de Serviços”, você pode selecionar a função “Consultar Serviços” e selecionar o serviço que você criou em cima desse WSDL, assim você vai ver todas as classes criadas dentro do serviço, incluindo esta.

Opa agora funcionou Gustavo, no final das contas utilizei uma biblioteca JavaScript de cliente SOAP para chamar o serviço, e alterei para utilizar o ‘startProcessClassic’ ao invés do ‘simpleStartProcess’.

Agradeço pela ajuda!

Alguém teria algum exemplo de como é feito o dataset e o envio das informações da página pública para solicitação iniciada? Estou precisando. Obrigado!

Bom dia Jean

Compartilha a solução