01. DADOS GERAIS
Produto: | TOTVS Transmite |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Backoffice |
Módulo: | TOTVS Transmite |
Função: | Não Há |
País: | Brasil |
Ticket: | Não Há |
Requisito/Story/Issue (informe o requisito relacionado) : | DSERTSS3-2727 |
02. SITUAÇÃO/REQUISITO
Implementação do novo serviço de provisionamento para o Transmite, utilizando o Message Broker do TotvsApps que está integrado ao CRM, Fluig e RAC.
03. SOLUÇÃO
- A solução está integrada com o CRM da TOTVS, onde as vendas dos produtos geram a mensagem do tipo ApplyContract no Message Broker do TOTVS Apps, contendo informações do cliente.
Essa mensagem é recebida pelo painel de provisionamentos que por sua vez executa as seguintes etapas para provisionamento dos produtos:
• Resolve o tenant no Fluig, em outras palavras, verifica se o cliente já possui um tenant ou cria caso necessário.
• Associa os produtos ao tenant.
• Caso algum produto possua integração com ERP, o fluxo irá enviar um e-mail solicitando a ação do usuário para seleção do ERP desejado no app My Account (todos os tenants provisionados pelo painel de provisionamentos terão esse app associado automaticamente).
• Provisiona o tenant no RAC.
• Envia o e-mail com as credenciais do Fluig para o usuário definido na mensagem ApplyContract enviada pelo CRM.
• Envia para cada produto contido na mensagem ApplyContract, uma mensagem de provisionamento do tipo ProvisionApp para a exchange Provisioning.Contract.Output com o header appCode = <código do produto no Fluig> que deve ser recebida pelo serviço de provisionamento do app para execução das suas tarefas de provisionamento.
As mensagens com o appCode = “transmite” no header são enviadas para a fila ProvisionAppOutput através do Bind configurado na Exchange Provisioning.Contract.Output.
Essas mensagens são consumidas pelo worker de provisionamento do Transmite (microserviços customer_provisioning), que registra o provisionamento na base de dados (Collection Provision) e envia uma resposta para o Message Broker com uma mensagem ProvisionAccepted.
Ao incluir o registro na base são definidos alguns status para o provisionamento no Fluig, Rac e Transmite:
• FluigStatus = 1 (Finalizado)
• RacStatus = 0 (Aguardando)
• ProvisioningTransmitStatus = 0 (Aguardando)
Em seguida o worker solicta o provisionamento do RAC, enviando a mensagem RacProvisioning para a Exchange Provisioning.RAC.Input e fica aguardando o retorno.
Quando concluído o provisionamento no RAC, a aplicação recebe a mensagem RacProvisioningCompleted e atualiza o registro de provisionamento na base de dados com a resposta do RAC. Nesse momento também atualiza a flag RacStatus para (2 = finalizado).
Ao identificar registros com as flags FluigStatus e RacStatus finalizados na collection de provisionamento (Provision), o worker cadastra o cliente no Transmite (Collection Customers) e envia o e-mail de boas-vindas.
Por fim atualiza a flag ProvisioningTransmitStatus para 1 (Finalizado).
A cada interação com o Message Broker a aplicação envia mensagens para o Monitor de Provisionamento do TotvsApps, registrando os logs no painel de provisionamentos.
03.1. Mensageria - Sequência de tarefas
Sequência | Mensagem Recebida | Exchange | Fila | Ação | Mensagem Enviada | Exchange |
1 | ProvisionApp | Provisioning.Contract.Output | ProvisionAppOutput | Regitra provisionamento na base do Transmite | ProvisionAccepted | Provisioning.Contract.Input |
2 | N/A | N/A | N/A | Publica mensagem ProvisioningStarted no Monitor | PrvisioningStarted | Provisioning.Monitor.Input |
3 | N/A | N/A | N/A | Envia mensagem solicitando o provisionamento no RAC | RacProvisioning | Provisioning.RAC.Input |
4 | RacProvsioningCompleted | Provisioning.RAC.Output | RacProvisioningOutput | Atualiza o registro de provisionamento na base com o retorno do RAC | N/A | N/A |
5 | N/A | N/A | N/A | Publica mensagem RacCompleted no Monitor | RacCompleted | Provisioning.Monitor.Input |
6 | N/A | N/A | N/A | Cadastra o Customer na base do Transmite e envia e-mail de boas-vindas | AppProvisioningCompleted | Provisioning.Contract.Input |
7 | N/A | N/A | N/A | Publica mensagem ProvisioningCompleted no Monitor | ProvisioningCompleted | Provisioning.Monitor.Input |
03.2. Fluxo Provisionamento
03.3. Simulador de Provisionamentos
O Message Broker do TotvsApps fornece uma API para simular o envio da mensagem do tipo ApplyContract que dá início ao provisionamento. Segue abaixo o link por ambiente:
Para enviar a mensagem é necessário ter acesso ao RAC para gerar o token de autenticação. Segue abaixo um exemplo da requisição para gerar o token, que pode ser utilizada via Postman, por exemplo:
curl --location --request POST 'https://admin.rac.dev.totvs.io/totvs.rac/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'client_id=transmite-ro' \
--data-urlencode 'client_secret=*****' \
--data-urlencode 'scope=authorization_api' \
--data-urlencode 'username=username@totvs.com.br' \
--data-urlencode 'password=*******' \
--data-urlencode 'acr_values=tenant:totvs'
Ao acessar o simulador de provisionamentos (Swagger), localize a requisição POST para envio da mensagem e execute os passos abaixo:
- Clique no link do cadeado e insira o Token gerado no RAC
- Clique no botão "Try it out" e insira a mensagem (json) que será enviado pra o simulador.
Exemplo do Json (Payload) para simular o provisionamento:
Observação: A chave "appCode" do array "apps" deve conter o valor "transmite" para que possa ser endereçada para a fila do worker de provisionamento.
O objeto "data" do array "apps" é livre para enviar informações específicas do provisionamento de cada aplicação. Para que possam ser recebidas automaticamente no ambiente de produção, é necessário contactar a equipe do HL Cloud e acordar o envio das informações específicas do app.
{
"exchange": "Provisioning.Contract.Input",
"headers": {
"element": "Provisioning.Simulator"
},
"message": {
"type": "ApplyContract",
"transactionId": "298e848c-9a39-47a3-a348-22fb5c61b982",
"data": {
"adminEmail": "adminEmail@dominio.com.br",
"adminName": "Admin Name",
"totvsCode": "T298e848c",
"tenantName": "Test tenant (removeable) Transmite",
"cnpj": "16391605000190",
"phoneNumber": "11999999999",
"contractId": "123",
"contractReview": "1234",
"apps": [
{
"appCode": "transmite",
"data": {
}
}
]
}
}
}
Após enviada a mensagem, utilize o Painel de Provisionamentos para acompanhar o andamento.
04. DEMAIS INFORMAÇÕES
Documentação Message Broker TotvsApps
Documentação Painel de Provisionamentos TotvsApps
Links Painel de Provisionamentos
- Desenvolvimento: https://provisionamento.dev.totvs.app
- Staging: https://provisionamento.staging.totvs.app
- Produção: https://provisionamento.totvs.app
05. ASSUNTOS RELACIONADOS
- Não há