# Colaborando/Alterando atividades dos processos por WebService Com a liberação da nova versão (Refactor) do DOX, a colaboração dos processos e alguns outros recursos passaram a ser realizadas por meio de chamadas via WebServices. Por conta disso, vou demostrar como configurar eventos no Dox para alterar a atividade das suas instâncias, da mesma forma que ocorre quando você abre uma instância no Dox Estúdio e define uma atividade manualmente. Regras para alterar a atividade (via WebServices) de um processo: - O processo não pode estar sendo colaborado por outro usuário. - O processo não pode estar cancelado ou finalizado. - As regras de atribuições das atividades que você vai mover, também vale para o webservices. Ou seja, o usuário que está executando os eventos de webservices precisa ter acesso aquela atividade para a qual você vai mover. - A atividade onde está sendo utilizado os eventos de Webservice precisam ser do tipo **MANUAL**, pois atualmente é necessário que o HASHSESSAO esteja autenticado por um usuário válido e logado no portal. Pré requisitos: **Versão 12.0 ou superior** Processo simples Primeiramente vamos criar um processo simples com uma atividade e 1 evento, para testar a configuração do evento antes de prosseguir com o resto do desenvolvimento. [![image-1648756147424.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648756147424.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648756147424.png)
**O que você vai precisar**
**Quantidade****Descrição**
1Conector do tipo "Web Services (Rest)"
1Processo com: - 1 Atividade manual - 1 Evento BPM
##### **1 - Conector**
Crie o conector de "Web Services (Rest)" apontando para o seu servidor DOX:
- **Descrição**: WebServices EMA - BPMSERVER - **Tipo**: Web Services (REST) - **Endereço URL**: substitua 127.0.0.1 pelo IP do servidor onde está instalado o Dox. - **Protocolo de segurança:** TLS - **Autenticação**: Nenhum - **Usuário**: manter como está - **Senha**: manter como está
Caso o Dox esteja usando uma porta diferente de 80 ou 443, coloque a portal após o seu IP.
- - - Exemplo: 192.168.0.100:8888
[![image-1648755824499.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648755824499.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648755824499.png) ##### **2 - Aba "processos"**
Crie um processo com 1 com as configurações a seguir:
- **Tipo:** Escolha um da sua lista de tipo; - **Descrição:** Colaborar por WebService - **Assunto:** Colaborar por WebService - **Nome Reduzido:** Colaborar por WebService
[![image-1648756020503.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648756020503.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648756020503.png) ##### **3 - **Aba "Permissões"****
- "Qualquer usuário cadastrado"
[![image-1648756039263.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648756039263.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648756039263.png) ##### **4 - Aba "Atividade"** - Crie uma atividade Manual chamada "Informar MD5 e Código da Atividade" [![image-1648756119152.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648756119152.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648756119152.png) ##### **5 - Formulários** Edite a atividade "Informar MD5 e Código da Atividade": [![image-1648756629816.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648756629816.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648756629816.png) Mantenha a aba "Atribuição", mantenha como está. Na aba "Formulário", crie 2 formulários: - Primeiro: - **Tipo**: Dissertativa - **Título**: MD5 - **Armazenar** **em**: /\*MD5PROCESSOMOVER**\*/** (texto) - **Tipo de dados**: Texto - **Obrigatório**: Sim - **Visível**: Sim - **Largura do container**: 33% - **Largura do elemento**: Padrão - Segundo: - **Tipo**: Dissertativa - **Título**: Código da nova atividade - **Armazenar em**: **/\*IDATIVIDADENOVA\*/** (inteiro) - **Tipo de dados**: Inteiro - **Obrigatório**: Sim - **Visível**: Sim - **Largura do container**: 67% - **Largura do elemento**: Padrão Essa informações serão usadas no evento de Webservices para mover o processo que você deseja. ##### **6 - Eventos** Na aba "Eventos", crie um evento de "Web Service - Requisição" com as configurações: - **Descrição**: WS - Requisição PATCH ao BPMSERVER - **Momento da execução**: Ao sair da atividade - **Atualizar status da execução no Portal:** Marque se desejar (Opcional) - **Serviço**: Use a "lupa" para selecionar o código do conector criado na **etapa 01 do passo 1**. - **Recurso**: /api/instancias/execucao//\*MD5PROCESSOMOVER\*//desvio//\*IDATIVIDADENOVA\*/ *Aqui usamos as variáveis criadas para os formulários, verifique se os nomes delas estão iguais as que você criou.* - **Método**: Patch Na aba "Requisição" adicione uma única linha: - **Tipo**: Header - **Nome**: Authorization - **Valor**: Bearer /\*HASHSESSAO\*/ *Usamos a tag **Bearer*** antes da /\*HASHSESSAO\*/ para autenticar na API do Dox, esse configuração é essencial para o funcionamento do evento. - **Corpo**: Movido via evento Web Services pelo processo /\*IDPROCESSO\*/. Você pode alterar o texto da forma que achar melhor. A informação digitada nesse campo será alimentada no LOG do processo que você moveu. - **Timeout**: 60 segundos (caso for necessário, pode alterar) [![image-1648756933509.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648756933509.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648756933509.png) Na aba "Resposta" - **Cabeçalho (Header)**: deixar em branco - **Corpo (Body):** application/json - **Utilizar codificação UTF-8**: Marcar - **Armazenar em:** /\*JSON.RETORNO\*/ (Texto longo) - **Exceção**: - **Armazenar em:** /\*JSON.EXCECAO\*/ (Texto longo) [![image-1661189561903.png](http://kb.ema.net.br/uploads/images/gallery/2022-08/scaled-1680-/ZYgeAflhIlBcXCKl-image-1661189561903.png)](http://kb.ema.net.br/uploads/images/gallery/2022-08/ZYgeAflhIlBcXCKl-image-1661189561903.png) ##### **7 - Validar processo** Para finalizar o desenvolvimento do BPM, valide o processo para garantir que não tenha nenhum erro. Se houver, corrija como solicitado no assistente. [![image-1648757907241.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648757907241.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648757907241.png) **Exemplo de Funcionamento:** Conforme a imagem a seguir, o processo acima vai executar um evento Web Services ao sair da atividade, que vai mover um processo de uma atividade para outra. [![image-1648757979550.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648757979550.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648757979550.png) ##### **Vamos testar!** Comece pegando o código MD5 da instância de um processo, para isso navegue até **Processos > Instâncias de negócio > Listar o processo desejado > CTRL + SHIFT + D** [![image-1648758259472.png](http://kb.ema.net.br/uploads/images/gallery/2022-03/scaled-1680-/image-1648758259472.png)](http://kb.ema.net.br/uploads/images/gallery/2022-03/image-1648758259472.png) Depois você vai precisar saber o código da atividade para qual você vai mover o seu processo, no exemplo o código é 3. Agora, basta inserir nos formulários feitos e clicar em confirmar: [![image-1648818847007.png](http://kb.ema.net.br/uploads/images/gallery/2022-04/scaled-1680-/image-1648818847007.png)](http://kb.ema.net.br/uploads/images/gallery/2022-04/image-1648818847007.png) Analisando o LOG da instâncias #867 verifique se o Retorno da requisição foi "**HTTP/1.1 204 No Content**" se sim, o processo foi movido com sucesso. [![image-1648818937899.png](http://kb.ema.net.br/uploads/images/gallery/2022-04/scaled-1680-/image-1648818937899.png)](http://kb.ema.net.br/uploads/images/gallery/2022-04/image-1648818937899.png) O Web Service da Ema vai retorna *"204 No Content"* sempre que ele executar a chamada sem erros. Porém essa informação não é alimentado nas variáveis /\*JSON.RETORNO\*/ ou /\*JSON.EXECAO\*/. Em resumo, se as variáveis não tiverem os valores atualizados após o retorno do Web Services, então tudo ocorreu com sucesso. Analisando o LOG do processo com MD5 **1F44DD21E9254498BB28B69065D86D60,** que foi movido pelo nosso web service, a mensagem que aparece no log é: [![image-1648819300033.png](http://kb.ema.net.br/uploads/images/gallery/2022-04/scaled-1680-/image-1648819300033.png)](http://kb.ema.net.br/uploads/images/gallery/2022-04/image-1648819300033.png) ##### **Atenção!** \*\* Lembrando que, ao utilizar dos eventos de webservice para mover atividades, é necessário que seja configurado em atividades do tipo MANUAL. Caso seja necessário utilizar em atividades AUTOMÁTICAS, entrar em contato com a Ema software e solicitar uma orientação de sua funcionalidade.