Saltar al contenido principal

Serviço de Integração

O serviço de integração é responsável por conectar o WMS a sistemas externos (ERP, plataformas de terceiros, etc.).
Ele é baseado em um framework interno da Delage, que abstrai a orquestração de integrações.

A estrutura é dividida em dois projetos:


WMS.Integration.Services

Projeto responsável por orquestrar a execução das integrações. Ele referencia o framework de integração da Delage e dispara os workers que fazem o processamento contínuo.

Estrutura

  • Workers
    • MessageProcessorWorker → processa mensagens recebidas e inicia o fluxo de integração.
    • PoolingIntegrationWorker → executa pooling periódico em busca de novas mensagens/eventos.
  • Settings
    Arquivos de configuração que controlam comportamento de execução e parâmetros de integração (appsettings.json, integrationSettings.json).
  • Program.cs
    Ponto de entrada do serviço.

WMS.Integrators

Projeto responsável por implementar os integradores específicos.
Aqui é onde se define a lógica de integração com cada sistema externo, extendendo o framework interno da Delage.

Estrutura

  • B1 → Exemplo de integrador para um ERP (SAP B1). Neste módulo são definidas as classes e serviços específicos para comunicação com a API do sistema externo.

Como funciona

  1. O orquestrador (WMS.Integration.Services) agenda workers que processam mensagens e disparam integrações.
  2. Quando um evento de integração precisa ser executado, o worker identifica qual integrador deve ser acionado.
  3. O integrador (WMS.Integrators) contém a lógica específica para se conectar ao sistema externo e realizar a operação necessária.

Exemplo de Integrador

B1Integrator.cs
public class B1Integrator(
B1OrderIntegrationService integrationService,
B1OrderProcessorService processorService
)
: PoolingIntegrator<B1QueryData, B1Payload>
{
protected override async Task<B1QueryData> Query()
{
// Consulta os dados da integração
}

protected override async Task<B1Payload> Parse(B1QueryData data)
{
// Mapeia os dados para integração
}

protected override async Task<B1Payload> Send(B1Payload parsedData)
{
// Envia dados para integração
}
}

Benefícios da Arquitetura

  • Separação de responsabilidades
    • Services → orquestração e workers.
    • Integrators → lógica específica de cada integração.
  • Extensibilidade
    • Novos integradores podem ser adicionados criando um novo módulo em WMS.Integrators.
  • Reuso do framework interno
    • O desenvolvedor apenas define a classe do integrador, sem precisar reimplementar a orquestração.