Manual de uso
Informações
Nome do aplicativo: Middleware CRM x Monday
Cliente: Wittel
Histórico de modificações
Versão |
Data da atualização |
O que foi feito? |
Autor |
1.0.0 |
02/09/2021 |
Construção do documento CRM |
João Henrique Barbosa |
2.0.0 |
13/12/2021 |
Alterações pós validação CRM |
João Henrique Barbosa |
2.1.0 |
14/12/2021 |
Adição de informações SAP |
João Henrique Barbosa |
Contexto
O objetivo do projeto é realizar a criação de uma camada de integração (middleware) que fará a sincronização do CRM e SAP da Wittel para os quadros na instância Monday da Wittel.
Como funciona
O middleware trabalha buscando e processando informações da API do CRM e SAP da Wittel para a instância Monday da Wittel.
O Middleware ficará sempre buscando atualizações de inserção e alteração de informações do CRM e SAP da Wittel e então inserindo ou alterando no Monday. Em determinadas situações conforme foi programado ele irá decidir para onde mandar determinadas informações ou até mesmo transformá-las, juntando campos e fazendo relacionamentos entre quadros.
Processos
Todos os processos são iniciados através dos arquivos contidos na pasta "src/app/entrypoints/crm-to-monday" (para CRM) e "src/app/entrypoints/sap-to-monday" (para SAP).
Função de cada um deles:
send-to-queue.js: responsável por buscar, a cada 10 segundos, atualizações em registros na API Wittel e enviar para a fila (Redis);
process-queue.js: responsável por processar, a cada 10 segundos, os itens que estão na fila. É neste processo onde serão criados ou atualizados os itens na instância Monday da Wittel
Regras de migração
Todas as regras estabelecidas para migração por serem poucas estão mantidas no arquivo process-queue.js de cada entrypoint (CRM ou SAP);
Detalhes técnicos
Tecnologias utilizadas:
Docker / Docker-compose
NodeJS
Redis
PM2 (ver tópico Orquestração dos Processos)
Gerenciamento dos Processos com PM2
Como há vários processos rodando simultaneamente, para gerenciá-los utilizamos o PM2. Com ele, temos tanto uma visão geral, como o status e os logs de cada processo. Seguem alguns comandos úteis.
$ pm2 status
Exibe a lista com todos os processos e seus status
$ pm2 logs {processo}
Log em tempo real do que está ocorrendo com o processo. Para ver mais linhas de informações, adicione o parâmetro “--lines XXXX”
$pm2 restart all
Só deve ser usado caso algum processo tenha sido paralisado ou caso tenha ocorrido atualização de código
Observações:
Todos os scripts estão rodando dentro de containers Docker.
Observações: Todos os scripts estão rodando dentro de containers Docker. Caso ocorra uma queda do servidor e ao retornar, todos os processos serão reiniciados automaticamente.
Configuração
Atenção: Ao alterar as configurações recomenda-se que seja feito um backup do projeto antes para evitar problemas com má manipulação das configurações.
As credenciais utilizadas para as consultas da API CRM e consultas/escritas na API do Monday são configuráveis no arquivo “src/.env”.
Onde temos os campos:
Campo |
Descrição |
CRM_TOKEN |
Token de acesso à API CRM. |
SAP_TOKEN |
Token de acesso à API SAP. |
MONDAY_TOKEN |
Token de acesso à API da Monday. |
As demais parametrizações de CRM se encontram no arquivo “src/app/modules/CRM/config.js”:
Enquanto as demais parametrizações se encontram no arquivo “src/app/modules/SAP/config.js”:
Onde estão os campos:
Campo |
Descrição |
baseUrl |
Url da api CRM da Wittel. |
maxLastDays |
O número de dias retroativos que serão buscados na api na primeira execução. |
relations |
Ids de colunas de relacionamentos que respeitam o padrão “boardExtrangeiro_on_boardHospedeiro: idDaColuna” |
endpoints |
Lista de entidades do CRM que serão sincronizadas para dentro do Monday. |
Os campos dentro de endpoints são:
Campo |
Descrição |
boardId |
Id do quadro no Monday para onde vai aquela entidade. |
groupId |
Id do grupo dentro do quadro no Monday para onde vai aquela entidade. |
idKey |
Chave no item que vem do CRM que determina sua unicidade. |
nameKey |
Chave no item que vem do CRM que servirá como nome do item no Monday. Esta propriedade aceita uma função anônima javascript que recebe como parâmetro o item e deve retornar uma string. |
columnsMap |
O mapeamento das chaves no item que vem do CRM para os ids das colunas do Monday. |
Comentários
0 comentário
Por favor, entre para comentar.