STM Web

Executores

Objetivo

Foi desenvolvida uma forma de facilitar a execução de packages, querys e functions no banco de dados. Visando uma maior produtividade e exito na migração das rotinas ja existentes no STM VB.

Os executores se encontram disponiveís na biblioteca Cebi.Stm.Executor que já está instalada nos módulos do stm web.

Váriavel Global

Todos os executores, necessitam da carga de váriavel global, elas já são instanciadas em todas as nossas controllers

Querys

O Executor de query é o mais simples, voce deverá montar a consulta sql em uma string, e passar essa consulta como parametro no construtor do executor:

Esse executor possuí 2 métodos:

Em ambos os métodos, deverá ser informada a classe de retorno no parametro T da execução
Os campos da classe devem ter o mesmo nome dos campos de retorno. Deverá também ser informado no método a carga de variável global.

Packages

Para a execução de packages, no nosso construtor passamos 2 parametros:

O uso ou não do record set será informado pela equipe, por ser um parametro opcional, se não for informado no construtor, seu valor sera "false"

o Executor, tem uma propriedade chamada "Parametros", de tipo "List< object >", que deve ser mapeada da seguinte maneira:

Deverá ser informado na instancia da classe o tipo de dado do parametro.
Os parametros também devem estar na mesma ordem da package no banco de dados

Métodos de Execução

Todos os métodos devem receber a variavel global como parametro

Functions

As functions funcionam de forma parecida das packages, as diferenças são:

Levantamento de Requisitos

Levantamento de Requisitos

Para o desenvolvimento, é necessário ter algumas informações em mãos: a sigla da tabela e sua package de operações básicas.

Para identificar, bastar realizar a seguinte consulta no nosso BD:

select tfa_sigla, tfa_nome from tabelas_cebi where tfa_nome like '{TABELA A SER DESENVOLVIDA}%’

Exemplo:

Já sabemos a nossa sigla, agora, para descobrir o nome das packages é só pegar o conteudo do campo TFA_NOME, incluir PKG_ no inicio, e remover o CEBI

No nosso exemplo, nossa pkg seria: PKG_CARGOS

API's e Serviços

Desenvolvimento Back-End

Mapeamento de Tabelas

Para esse projeto, não usaremos o Entity Framework, usaremos ADO.NET puro para reaproveitar as rotinas já existentes no STM (VB)

Dito isso, não teremos entidades, repositorios, ef config e etc

Para mapeamento, deve ser criado uma classe com exatamente os mesmos nomes e tipos de dados existentes na tabela (usar PL/SQL para consultar)

Exemplo:

Tabela no PL/SQL

Classe da Tabela

A Classe deverá ser criada em: \Domain\TableMaps

Criação da API e Rotas Essenciais

Para garantir o funcionamento das nossas API's, utilizaremos esse padrão em suas criações.

Essas variáveis são essenciais para o funcionamento dos nossos executores genéricos.

Todos os serviços de executores necessitam da variável global para funcionar

Rotas

É necessária uma rota para obter os campos do sistema mapeados, isso acontecerá através de um service de estrutura padrão, como no exemplo a seguir:

No primeiro método, usaremos de um SELECT na tabela em questão, através da chave primária do registro, usando nosso executor de querys.

Já no segundo, usaremos do nosso serviço "MapearCamposConsulta", passando a nossa classe. o retorno do "Executar" e a sigla da nossa tabela.

Essa rota deverá existir em todas as API's

Telas Dinâmicas

Geração de Telas Dinâmicas

Para geração de telas dinâmicas, usaremos uma diretiva, que a partir da sigla informada, realiza uma busca em uma estrutura reaproveitada do sistema VB, e de forma dinâmica, compila todos os campos em tela.

Para criar o nosso modulo, deveremos duplicar a pasta “modelo”, e alterar as referencias para o módulo desejado:

Deverá ser renomeado em todos controllers, views e module as referencias de "modelo" para o módulo que está sendo desenvolvido.

Após isso, deverá ser agregado no “appModules.js” do projeto, o nome do módulo recém criado.

Com todas referencias alterados, modulo importado, devemos alterar as referencias da chamada da diretiva:

Tela de Detalhes

Na tela de detalhes, alterar a propriedade 'api' da diretiva para a rota da api recém criada e para a propriedade 'pk', colocamos a variavel que contém a pk do nosso cadastro, que já está referenciada no nosso controller.js

Exemplo de uso:

Inclusão e Edição

Para telas de inclusão e edição, o processo é ainda mais simples, alteramos a propriedade 'modulo' utilizando a sigla que obtemos no inicio do processo

Pesquisa

A tela de pesquisa deverá ser adaptada de acordo os filtros especificados que serão repassados na hora do desenvolvimento.