Histórico da Página
Índice
CONTEÚDO
- Visão Geral
- Modelagem de Dados Protheus Insights
- Backend TOTVSApps
- Backend Advpl
- Front-end
- Pipelines Carol
- Data models Carol
01. Visão Geral
02. Modelagem de Dados Protheus Insights
Estrutura Atual
A atual estrutura do protheus insights Protheus Insights é constituida constituída das seguintes tabelas:
- I14 - Controle de Msg Smartlink: Tabela de alertas de Insights (Permissão de Insight, Financeiros, Ruptura de Estoque, Demandas de Compras, Relatório de Previsão de Fluxo de Caixa);
- I16 - Insight Contabil: Tabela de matches de Insights Contábeis provenientes dos Alertas de Insights Contábeis;
Apesar desta estrutura estar funcional, ela foi criada como protótipo e apresenta diversas limitações no controle de recebimento e processamento de mensagens de insight provenientes do Smartlink e será descontinuada com a implementação da estrutura sugerida mais abaixo.
Algumas destas limitações são:
- Falta de visibilidade no recebimento de mensagens de insights por parte do cliente Protheus;
- Travamento da thread do consumer de mensagens devido ao processamento de regras de insights no recebimento;
- Limitação no desenvolvimento de novos insights tornando-os, aumentando os custos e requerimentos de recursos para o desenvolvimento dos mesmos;
- Pouco tolerante a falhas;
Estrutura Sugerida
Para a nova estrutura sugerida serão implementadas as seguintes tabelas:
- I19 - Controle Mensagens de Insights: Tabela utilizada para Controle de Recebimento e Status de Mensagens de Insights provenientes do Smartlink, para serem utilizadas em futuros processamentos de Regras de Negócios de Insight;
- I20 - Configurações de Insights: Tabela utilizada para armazenamento das configurações de Processamento de Insights;
- I21 - Insights Unificada: Tabela unificada utilizada para armazenamento do produto do processamento das regras de negócios de insights;
Nesta nova estrutura, existirá a possibilidade de monitorar o recebimento de mensagens e seu conteúdo real através da tabela I19, onde as mensagens serão armazenadas para análise e posterior processamento/re-processamento, liberando assim a thread do consumer do Smartlink para posteriores recebimentos, solicitando baixa quantidade de recurso e tempo de execução para o simples recebimento de mensagens de insights.
Campo | Tipo | Tamanho | Título | Descrição |
---|---|---|---|---|
I19_FILIAL | Caracter | 8 | Filial | Filial do Sistema |
I19_UIDMSG | Caracter | 36 | Message UUID | ID da Mensagem (UUID) |
I19_TIDMSG | Caracter | 36 | Transact. ID | ID da Transação da Mensagem |
I19_TENANT | Caracter | 36 | Tenant UUID | ID do Rac Tenant |
I19_INSIGT | Caracter | 30 | Tipo Insight | Tipo de Insight |
I19_PAYLOD | Memo | XX | Payload Mens | Conteúdo da Mensagem |
I19_DTRECV | Caracter | 30 | Dt. Recebim. | Data de Recebimento |
I19_STRECV | Caracter | 3 | Status Rece. | Status do Recebimento |
I19_DTSCHD | Caracter | 30 | Dt. Agend. | Data do Último Agendamento |
I19_DTPROC | Caracter | 30 | Dt. Process. | Data do Último Processamento |
I19_STPROC | Caracter | 3 | Status Proc. | Status do Último Processamento |
I19_LSTPRV | Caracter | 6 | Ult. Vers. P | Última Versão da Configuração de Processamento |
I19_LSTPRM | Memo | XX | Ult. Pr. Msg | Mensagens de Processamento |
Com a criação da tabela I20, poderão ser armazenados os tipos de Insights que serão processados pelo cliente Protheus e suas respectivas classes de processamento das Regras de Negócio, as quais deverão ser desenvolvidas em ADVPL/TLPP e adicionadas ao repositório, facilitando assim o desenvolvimento de novos insights. Estas configurações podem ser controladas também por um versionamento, o que facilita o rastreio de alterações no decorrer do tempo para cada tipo de Insight.
Campo | Tipo | Tamanho | Título | Descrição |
---|---|---|---|---|
I20_FILIAL | Caracter | 8 | Filial | Filial do sistema |
I20_INSIGT | Caracter | 30 | Insight | Tipo de Insight |
I20_VERSAO | Caracter | 6 | Versao Insig | Versão da Configuração |
I20_CLSPRC | Caracter | 254 | Classe Proc. | Classe de Processamento da Regra de Negócio |
I20_PRIORI | Lógico | 1 | Prioritario | Indica se Insight é Prioritário |
I20_HASKEY | Lógico | 1 | Calc. Chave | Indica se Insight Calcula Chave de Busca |
I20_HASFIL | Lógico | 1 | Calc. Filtro | Indica se Insight Calcula Filtro de Pesquisa |
I20_STATUS | Caracter | 1 | Status Conf. | Status da Configuração |
I20_DTCREA | Caracter | 30 | Dt. Criacao | Data de Criação da Configuração |
I20_DTALT | Caracter | 30 | Dt. Altera. | Data de Alteração da Configuração |
I20_TABLES | Caracter | 254 | Aliases Util | Tabelas para abertura de ambiente, referente a Regra de Negócio (ex. SA1,SB1) |
A tabela I21 é uma implementação de tabela unificada de Processamento de Insights, ela poderá ser adotada pelas classes de Regras de Negócio para armazenamento do produto resultante do processamento aplicado a uma mensagem de Insight. Esta tabela suporta o armazenamento de dados diversos formatos através de um campo MEMO (inclusive JSON) e possui campos facilitadores de busca e filtro bem como campos para data inicial e final (todos usados de forma opcional na utilização da classe de regra de negócio).
Campo | Tipo | Tamanho | Título | Descrição |
---|---|---|---|---|
I21_FILIAL | Caracter | 8 | Filial | Filial do Sistema |
I21_BRANCH | Caracter | 8 | Filial Insig | Campo de controle de Filiais abrangidas pelo Insight (não controlada pelo sistema) |
I21_UIDINS | Caracter | 36 | Id. Insight | ID da linha de Insight |
I21_UIDMSG | Caracter | 36 | Id Mensagem | ID da mensagem de origem do Insight (I19) |
I21_INSIGT | Caracter | 30 | Insight | Tipo de Insight |
I21_MODULO | Caracter | 20 | Modulo Insig | Modulo do Insight |
I21_PAYLOD | Memo | XX | Payload Ins. | Conteúdo do Insight |
I21_KEY | Caracter | 240 | Chave Busca | Campo de Chave unica de busca a ser gerada pelo processamento da Regra de Negócios referente ao Insight (opcional) |
I21_FILTER | Caracter | 240 | Filtro | Campo de Valor de Filtro de busca a ser preenchido pelo processamento da Regra de Negócios referente ao Insight (opcional) |
I21_DTDE | Data | 8 | Data De | Campo de Valor de Data Inicial de busca a ser preenchido pelo processamento da Regra de Negócios referente ao Insight (opcional) |
I21_DTATE | Data | 8 | Data Ate | Campo de Valor de Data Final de busca a ser preenchido pelo processamento da Regra de Negócios referente ao Insight (opcional) |
I21_DTPROC | Caracter | 30 | Dt. Process. | Data do último processamento |
I21_VSPROC | Caracter | 6 | Vers. Proce. | Última versão de configuração de processamento (I20) |
I21_STATUS | Caracter | 3 | Status | Status do último processamento |
I21_DESCST | Caracter | 50 | Desc. Status | Descrição do status de último processamento |
I21_DTREPR | Caracter | 30 | Dt. Reproce. | Data do último re-processamento |
I21_VSREPR | Caracter | 6 | Vers. Repro. | Versão do último re-processamento |
Vantagens da Estrutura Sugerida:
- Maior controle e monitoramento no recebimento de mensagens de Insights pelo cliente Protheus;
- Modelo configurável e flexível de Regras de Negócios aplicadas as mensagens de Insights;
- Maior visibilidade nos resultados dos processamentos das Regras de Negócios;
- Tabela unificada para armazenamento de resultado de processamento posteriormente utilização dos dados por parte do ERP;
- Melhor tolerância a falhas;
- Baixa requisição de recursos (financeiros e temporais) para o desenvolvimento de Insights;
03. Backend TOTVSApps
Estrutura Atual
A atual infra-estrutura do Protheus Insights Totvs Apps pode ser apresentada pelo seguinte diagrama:
A atual estrutura do Protheus Insights Totvs Apps provou ser uma estrutura resiliente porém, com algumas limitações, as quais serão minimizadas na estrutura proposta mais abaixo.
Algumas destas limitações são listadas a seguir:
- Esquema de autenticação fraco utilizando-se de chaves de API;
- Armazenamento de dados de diversos Tenants em mesmas tabelas, facilitando o vazamento de informações entre Tenants se muita precaução não for tomada na descida de mensagens para a fila do SmartLink;
- Não possui suporte 100% a Insights Online;
- Difícil enumeração de custo de recurso por Tenant;
Estrutura Proposta
A estrutura proposta para o Totvs Apps Protheus Insights visa melhorar a atual estrutura, adicionando novos recursos para aumentar sua resiliência a falhas de disponibilidade e segurança. Esta estrutura contará com a implementação de um banco de dados com a separação de schemas por Tenants, novos meios de autenticação de clientes e novas APIs que suportarão também o uso de Insights Online.
As vantagens apresentadas a seguir estarão efetivamente em funcionamento no momento de sua implementação:
- Esquema de autenticação integrado com o Fluig Identity para Tenants e usuários da API de administração (utilizando JWT);
- Base de dados Multi-Tenant para armazenamento de mensagens de Insights provenientes do Big-Query Carol;
- Tabela unificada de armazenamento de Modelos de Insights;
- Provisionamento em real-time de novos schemas para recém adicionados Tenants;
- APIs seguras de gerenciamento de Provisionamento e controle de Mensagens de Insights;
- Novo sistema de mensageria capaz de processar requisições de Insights Online;
- Melhor visibilidade nos recursos utilizados por cada Tenant, devido ao banco de dados multi-esquema;
04. Backend ADVPL
Estrutura Atual
Esta atual estrutura de Insights desenvolvida para o cliente Protheus, tem se provado pouco eficiente no tratamento de mensagens on-line e pouco resiliente no tratamento de exceções quando o processamento de mensagens de Insights.
Um outro ponto de atenção é o desempenho no recebimento de mensagens e a execução do processamento da Regra de Negócio do Insight na mesma Thread de recebimento da mensagem, o que impossibilita o Smartlink de processar novas mensagens enquanto as Regras para a atual ainda estiver processando, causando um congestionamento na liberação da fila em momentos de muita demanda.
A seguir serão apresentados alguns pontos que fez parte do aprendizado com a implementação desta estrutura:
- Congestionamento de Fila: Como mencionado anteriormente, a execução de Regras de Negócio de Insights na mesma thread de recebimento da mensagem causa atraso no recebimento de novas mensagens o que torna inviável a utilização desta estrutura em ambientes de alta demanda/disponibilidade;
- Flexibilidade de Dados: Quando utilizada a definição de "criação de uma tabela por Insight", o processo de desenvolvimento de novos Insights torna-se lento e dependente de janelas específicas de release que estão fora do controle da equipe;
- Complexidade do Desenvolvimento: Novos insights tornam-se cada vez mais complexos de serem desenvolvidos devido a certas limitações apresentadas pela inflexibilidade de dados;
- Desempenho Insatisfatório para Insights Online: O congestionamento de Fila torna o custo de tempo para uma resposta de insights online praticamente inviável e pouco performático (como por exemplo o Insight Financeiro de Relaótio de Fluxo de Caixa);
- Limitação de Front-End (Angular App): Os atuais aplicativos utilizando Angular/PO-UI estão utilizando o mecanismo de websocket WebChannel para comunicação com a thread protheus, isto inviabiliza certas funcionalidades como por exemplo paginação de payload de resposta do endpoint;
Estrutura Proposta
A estrutura proposta visa implementar um sistema mais eficiente no recebimento de mensagens de Insights, mais resiliente a falhas e transparente durante o processo desde o início até sua conclusão.
A seguir será apresentado um resumo do funcionamento desta estrutura:
Deck of Cards | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||
|
05. Front-End
A estrutura de execução de um aplicativo de Front-End do Protheus Insights será remodelada e terá a adição de uma biblioteca de serviços REST que farão parte da biblioteca de Insights (ADVPL) disponiblizada disponibilizada pela equipe de BA.
Estas alterações visam remover a limitação imposta pela utilização do WebChannel como meio de comunicação e bem como habilitando a utilização de Insights On-Line de uma forma simples.
Uma biblioteca desenvolvida para o framework Angular será implementada para intermediar a comunicação com os serviços disponibilizados pelo pelo back-end Protheus de uma forma modular e simples.
06. Pipelines Carol
Esta seção está em desenvolvimento e será atualizada em breve.
07. Data Models Carol
Esta seção está em desenvolvimento e será atualizada em breve.