Ir para o final dos metadados
Ir para o início dos metadados

You are viewing an old version of this content. View the current version.

Comparar com o atual View Version History

Versão 1 Próxima »

Os robôs na Plataforma Lecom possibilitam a automação dos fluxos de processos, permitindo a execução de ações automáticas e integrações com fontes externas.

Este template exemplifica um fluxo simples para envio de e-mails customizados com base em um HTML, recuperando dados da etapa atual do processo. Ele utiliza o framework RotasOpenAPI, disponibilizado pela nossa equipe de Operações, o que simplifica a execução de chamadas no OpenAPI.

É importante destacar que este template, isoladamente, não atende a um cenário real. Após sua adição ao ambiente, será necessário ajustá-lo para adequá-lo às necessidades específicas do seu caso.

Visão geral

Esta página tem como objetivo exemplificar o funcionamento de um robô simples para envio de e-mail customizado, com dados de processos, disponibilizado no marketplace. Para isso, utilizaremos a biblioteca RotasOpenAPI, disponibilizada pelo time de Operações da Lecom.

Arquivo de Configurações (application.properties)

Na pasta resources, encontra-se o arquivo application.properties. Nele, devem ser configurados os seguintes dados:

  • Domínio da plataforma,

  • API Key do usuário, e

  • Informações do processo a ser consultado.

  • Dados do e-mail:

    • Assunto do e-mail.

    • E-mail de origem e destinatário.

    • Parâmetro “true“ ou “false”, definindo se será e-mail com formatação HTML (utilizar true para exemplo do template).

    • Mensagem utilizado no exemplo do template a ser adicionado ao corpo do e-mail.

Exemplo de configuração:

DOMAIN=<DOMINIO DA PLATAFORMA>
API_KEY=<CHAVE OPEN API DO USUAIRO>
CODIGO_PROCESSO=<CODIGO DO PROCESSO>
VERSAO_PROCESSO=<VERSAO DO PROCESSO>
NOME_ATIVIDADE=<NOME DA ATIVIDADE PARA CONSULTA>
ASSUNTO=<ASSUNTO PARA PREENCHIMENTO NO EMAIL>
DESTINATARIO=<EMAIL DE DESTINO>
ORIGEM=<EMAIL DE ORIGEM>
EMAIL_HTML=<DEFINE SE EMAIL SERA FORMATADO EM HTML (true/false). TRUE PARA EXEMPLO DESTE TEMPLATE>
MENSAGEM_PADRAO=<MENSAGEM A SER ADICIONADO AO INICIO DO EMAIL POR PADRAO>

RotasOpenAPIConfig

A classe RotasOpenAPIConfig deve ser configurada com os valores definidos no arquivo application.properties. Isso permite a autenticação com o OpenAPI em todas as requisições realizadas.

Exemplo:

RotasOpenAPIConfig.setDomain(config.getDomain());
RotasOpenAPIConfig.setCredentials(config.getApiKey());

RotasOpenAPI

Utilizamos a classe RotasOpenApi para consultar os processos pendentes associados ao usuário atual em uma etapa específica.

// Busca processos pendentes para envio de email
ResponseOpenApi<List<ProcessosPendentesUser>> processosPendentes = RotasOpenApi
		.processo()
		.buscarProcessosPendentes()
		.porCodigoProcesso(Integer.valueOf(config.getCodigoProcesso()))
		.porVersaoProcesso(Integer.valueOf(config.getVersaoProcesso()))
		.porNomeAtividade(config.getNomeAtividade())
		.executar();

Iteramos sobre os resultados obtidos e, para cada processo, recuperamos os dados do processo. Esses dados incluem informações como o nome do modelo do processo:

private ResponseOpenApi<RetornoDadosInstancia> recuperaDadosProcesso(Integer codigoInstanciaProcesso){
	return RotasOpenApi
			.processo()
			.retornaDadosAtividadesInstancia()
			.setCodigoInstancia(codigoInstanciaProcesso)
			.executar();
}

Além disso, também extraímos os dados específicos da atividade, permitindo o acesso aos valores dos campos da etapa atual:

private ResponseOpenApi<RetornoProcessoAtividade> recuperaDadosAtividade(ProcessosPendentesUser processo){
	return  RotasOpenApi
			.processo()
			.buscarDadosAtividade()
			.setCodigoInstancia(processo.getProcessInstanceId())
			.setCodigoAtividade(processo.getActivityInstanceId())
			.setCodigoCiclo(processo.getCycle())
			.executar();
}

Na classe EmailUtil, substituímos os valores pré-definidos no template de e-mail localizado na pasta resources do projeto pelos dados obtidos do processo e da atividade:

public String criaConteudoEmail(String titulo, ProcessosPendentesUser processo, ResponseOpenApi<RetornoProcessoAtividade> dadosAtividade, String mensagemPadrao) throws IOException {
    InputStream inputStream = getClass().getClassLoader().getResourceAsStream("email_template.html");
    if (inputStream == null) {
        throw new IOException("Template de e-mail não encontrado.");
    }

    String templateEmail = new BufferedReader(new InputStreamReader(inputStream)).lines().collect(Collectors.joining("\n"));

    String atividadeDetalhes = dadosAtividade.getContent().getContent().stream()
            .map(campoAtividade -> String.format("<p><strong>%s</strong>: %s</p>", campoAtividade.getField(), campoAtividade.getValue()))
            .reduce("", String::concat);

    return templateEmail
            .replace("{{titulo}}", titulo)
            .replace("{{mensagemPadrao}}", mensagemPadrao)
            .replace("{{instancia}}", String.valueOf(processo.getProcessInstanceId()))
            .replace("{{atividadeDetalhes}}", atividadeDetalhes);
}

Finalmente, realizamos o envio do e-mail utilizando a classe WFMail:

  public void enviaEmail(TemplateConfig config, String mensagem){
      try {
          EmailMessage emailMessage = new EmailMessage(
                  config.getAssunto(),
                  mensagem,
                  config.getOrigem(),
                  config.getDestinatario(),
                  config.getEmailHtml()
          );
          WFMAIL.enviaEmailMessage(emailMessage);
      } catch (EmailMessageException e) {
          LOGGER.error("Erro ao enviar o e-mail", e);
      }
  }

Conclusão

Este exemplo demonstrou o funcionamento do template disponibilizado pelo Marketplace para a automação do envio de e-mail customizado com dados de processos. É importante ressaltar que este é um modelo básico. Após a inclusão deste template na sua plataforma, ele deve ser ajustado conforme as necessidades do seu cenário específico.

  • Sem rótulos

0 Comentários

Você não está logado. Qualquer alteração que você fizer será marcada como anônimo. Pode querer Autenticar-se se já tem uma conta.