Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Integracao api client

Cliente em Python desenvolvido para facilitar a extração de dados de bancos de dados de ERPs e a integração com as APIs de integração da Nasajon. Permite que se extraia dados do ERP e efetue integrações na base do bancos web para um tenant previamente configurado, para isso, utiliza-se do mesmo mecanismo de identificação da sincronia pelo Symmetrics, onde um token de tenant é utilizado para prover a comunicação.


Visão geral

O Cliente possui um modo console onde disponibiliza suas principais operações sendo:

Instalação

Possibilita através de uma chave de ativação, configurar a integração, escolhendo quais Grupos Empresariais serão integrados. A chave de ativação pode ser obtida no Diretório->Tenants, seguindo o mesmo fluxo da chave de ativação da sincronia. Caso já exista um sincronia instalada, usará a mesma chave no processo.

Carga Inicial

Efetua a carga inicial de todos os dados das entidades registradas no cliente e dos grupos empresariais selecionados para as apis na web.

Integração

Considerando as entidades com dados pendentes para envio, seleciona os dados dos grupos configurados e os envia para as APIs de integração da Nasajon.

Recarga

Mesmo princípio da carga inicial, selecionando apenas as entidades que se deseje rcarregar.

Verificação de integridade

Permite efetuar uma comparação entre os dados do ambiente na api e os dados locais. A saída permite identificar as diferenaças e corrigir atravéz do envio dos dados para a api de integração.


Arquitetura

O diagrama abaixo apresenta a arquitetura do sistema de integração, destacando os principais componentes e suas interações:

  1. Usuário ERP: Configura e acompanha o processo de integração.
  2. Ambiente ERP Nasajon:
    • Banco de Dados ERP: Contém os dados operacionais do ERP.
    • Integrador: Aplicação local em Python que extrai dados do ERP e os envia para o ambiente web.
  3. Ambiente WEB Nasajon:
    • APIs de Integração Web: Recebem os dados enviados pelo integrador.
    • Banco de Dados Web: Armazena os dados processados pelas APIs.
  4. Biblioteca de Entidades: Modela os dados que serão extraídos e enviados, garantindo a integridade entre o integrador e as APIs.

As relações entre os componentes mostram como os dados fluem desde o ERP até o ambiente web, passando pelo integrador e utilizando a biblioteca de entidades para padronização.

%%{init: {'theme':'default'}}%%
C4Container

Person(usuario, "Usuário ERP", "Configura e executa a integração.")

System_Boundary(erp, "Ambiente ERP Nasajon") {
    ContainerDb(erp_db, "Banco de Dados ERP", "PostgreSQL", "Contém dados operacionais do ERP")
    Container(integrador, "Integrador", "Aplicação Local Python", "Extrai dados do ERP e envia para a Web")
}

System_Boundary(web, "Ambiente WEB Nasajon") {
    System_Ext(apis, "APIs de Integração Web", "Recebem os dados enviados pelo integrador")
    ContainerDb_Ext(db_web, "Banco de Dados Web", "Armazena os dados processados pelas APIs")
}

Container(entidades_lib, "Biblioteca de Entidades", "Python", "Modela os dados que serão extraídos e enviados")

Rel(usuario, integrador, "Configura e acompanha")
Rel(integrador, erp_db, "Lê dados para integrar")
Rel(integrador, entidades_lib, "Entidades modeladas para integração")
Rel(integrador, apis, "Envia entidades via HTTP")
Rel(apis, db_web, "Persiste dados recebidos")
Rel(apis, entidades_lib, "Entidades modeladas para integração")

Componentes

ERP Nasajon

  • Aplicação com banco de dados Postgres, onde residem os dados de um cliente.

Bancos Web

  • Banco de dados Postgres multi-tenant que guarda os dados consumidos pelas aplicações web.

Integrador

  • Captura os dados do ERP e envia para as APIs de integração, usando bibliotecas de entidades.

APIs de Integração

  • Recebe os dados enviados pelo integrador e os armazena no banco de dados web. Poderão existir diversas apis, uma para cada Tribo, a exemplo Integração Pessoas API.

Biblioteca de Entidades

  • Modela os dados que serão capturados e enviados para as APIs de integração. O Integrador e as apis usam a mesmma biblioteca de entidades (nsj_integracao_api_entidades) para garantir a integridade dos dados. Construída através da blioteca nsj_rest_lib.

Modelo de dados

Módulo Descrição
util.entidades_integracao Gerencia as entidades que serão integradas. É alimentada pela trigger TRG_registra_entidade_integracao e função util.registra_entidade_integracao().
util.grupos_empresariais_integracao Gerencia os grupos empresariais para integração.

Executando localmente

Para executar localmente, Tenha disponível:

  • Uma base local do ERP Nasajon;
  • Copie o arquivo env.dist para .env e preencha os dados de conexão com o banco de dados local;
  • Usar os comandos dispoíveis no Makefile para executar as operações.

É possível usar tanto as Apis de QA/DEV, quanto subir uma instância de apis local. Para isso, na execução use o parâmetro --env=local|dev|qa|prod.

Caso queira rodar as apis localmente, será preciso uma base de dados do bancosweb para testes e subir o projeto de apis localmente, tal como o integracao-pessoas-api.

Distribuição

Existe uma versão do JobManager onde esta biblioteca foi distribuída como um Job, estando disponível tanto para agendamentos como execução pelo método run_job.

FAQ

Adicionar/alterar entidades na integração?

Para adicionar ou alterar entidades na integração, siga o seguinte procedimento:

  1. Identifique a Entidade Verifique qual entidade precisa ser adicionada ou alterada. Certifique-se de que ela está devidamente modelada na biblioteca de entidades, seguindo a conveção do rest_lib.

  2. Atualize a Biblioteca de Entidades Caso necessário, atualize a biblioteca de entidades (nsj_integracao_api_entidades) no requirements.txt para incluir a nova versão da biblioteca. Atualize a lista de entidades no Integrador respeitando ordem da dependência de chaves estrangeriras.

  3. Configure no Banco de Dados ERP Adicione ou atualize os registros na tabela util.entidades_integracao para que a nova entidade seja reconhecida pelo integrador. Crie uma trigger para a função util.registra_entidade_integracao() apontando a entidade.

    CREATE TRIGGER "TRG_registra_entidade_integracao" AFTER INSERT OR UPDATE ON esquema.tabela FOR EACH ROW EXECUTE PROCEDURE util.registra_entidade_integracao();
    
  4. Teste Localmente Execute o integrador localmente para verificar se a nova entidade está sendo capturada e enviada corretamente para as APIs. Use o comando apropriado no Makefile, como make carga-inicial.

  5. Valide na API de Integração Certifique-se de que os dados enviados estão sendo processados corretamente pela API de integração. Verifique os logs e o banco de dados web para confirmar.

  6. Atualize a Documentação Documente a nova entidade e quaisquer alterações realizadas para garantir que a equipe esteja ciente das mudanças.

  7. Distribua as Alterações Caso esteja utilizando o JobManager, atualize o job correspondente para incluir a nova entidade ou as alterações realizadas.

Dica: Sempre mantenha um ambiente de QA para validar as alterações antes de aplicá-las em produção.

Notas

No Linux, instale designer com:

sudo apt install qttools5-dev-tools
sudo apt install pyqt5-dev-tools

sudo apt install qt5-base-dev sudo apt install qt5-tools-dev

https://gist.github.com/r00tdaemon/1dcd57542bdaf3c9d1b0dd526ccd44ff

Metadata

Release files for nsj-integracao-api-client 1.0.0a20.post33

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nsj-integracao-api-client 1.0.0a20.post33
File Size Uploaded
nsj_integracao_api_client-1.0.0a20.post33.tar.gz 67.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nsj-integracao-api-client 1.0.0a20.post33
File Interpreter ABI Platform
nsj_integracao_api_client-1.0.0a20.post33-py3-none-any.whl Python 3 none any Details

Total release size: 150.9 kB

Release files / nsj_integracao_api_client-1.0.0a20.post33.tar.gz

Download URL nsj_integracao_api_client-1.0.0a20.post33.tar.gz
Size 67.4 kB
Tags Source
SHA-256 checksum
How to use checksums
53aef97046b4d903f644c53db734761ab174c4e4d3047d6f5d8f2e48f9ab883d
BLAKE2b-256 checksum
How to use checksums
ffade3cd9d297623778508e09d09105d4cf407d8632e838c020f1c525df5183b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Release files / nsj_integracao_api_client-1.0.0a20.post33-py3-none-any.whl

Download URL nsj_integracao_api_client-1.0.0a20.post33-py3-none-any.whl
Size 83.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2aef71c3ecadb933c658a0a65abf6a9e5470ae86c65515cba41014dbfea30e30
BLAKE2b-256 checksum
How to use checksums
4da52935f981561b391fe307883aaf3d3046f0b5fcb783ac5cac328311bf1632
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page