Histórico da Página
...
| Produto: | TOTVS Agro API Hub |
|---|---|
| Linha de Produto: | Linha PIMS |
| Segmento: | Agroindústria |
| Módulo: | Framework |
| Função: | Todas |
| País: | Brasil |
| Ticket: | |
| Requisito/Story/Issue (informe o requisito relacionado) : | DAGROFRAME-4860 |
02. SITUAÇÃO/REQUISITO
Criar métodos de execução das formulas existentes nos serviços de mobilidade do TOTVS Agro Bioenergia.
Específicos:
- Implementar um método para identificar o nome do formular e buscar na base tabela MOBILE_SERVICES
- Identificar o tipo de formula a ser executada
- SQL
- SqlParam
- Const
- SqlTernario
- BeforeSql
- Implementar a execução da formula e a substituição do nome da formula pelo resultado da execução da formula
03. SOLUÇÃO
Foi desenvolvido métodos de identificação, formatação e execução das formulas com base no padrão já existente no Portal Mobilidade, para que tenha o menor impacto possível nos aplicativos de mobilidade do TOTVS Agro Bioenergia.
- Padrão de Projeto Factory
Foi criada a Classe ExecutorStrategyFactory para gerenciar as instancias dos tipos de formulas existentes
- Padrão de Projeto Strategy
Foi desenvolvida uma interface chamada ExecutorStrategy a qual todo tipo de formula deverá implementar o método execute() com sua própria logica.
- Formato de cadastro das formulasAs formulas devem ser inseridas na Tabela MOBILE_SERVICES respeitando o seguinte padrão no valor a ser inserido na coluna query - [Tipo_Formula, Formula]. Por Exemplo:
["Sql", "Select nome FROM Usuario WHERE codigo = 1]
A exceção desse formato é o tipo SqlTernario que segue o seguinte padrão [SqlTernario, formula, condição, true, false]. Por Exemplo
["SqlTernario","Select MAX(codigo) FROM Usuario", 0, 1, "Select MAX(codigo)+1 FROM Usuario"]
...
Adequar o sistema para suportar múltiplas bases de dados externas, permitindo que os serviços da API trabalhem com diferentes produtos (ex: Bioenergia, Indústria-MI, Indústria-PI) de forma dinâmica, conforme o contexto da requisição.
03. SOLUÇÃO
- Alteração do application.yml para utilizar a propriedade ta-api-hub.products, possibilitando configuração de múltiplos produtos e seus respectivos datasources.
- Criação das classes ExternalProductContext, ProductDataSourceConfig, ExternalProductFilter e da anotação ExternalProductAware para controle dinâmico do contexto de produto externo por requisição.
- Modificação da DataSourceUtil para gerenciar múltiplos datasources, templates e named templates conforme o produto ativo.
- O cabeçalho X-Product passou a ser utilizado para identificar o produto externo em cada requisição, garantindo isolamento e seleção correta da base de dados.
04. DEMAIS INFORMAÇÕES
Não se aplica.
...