Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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.

...