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
- O orquestrador (
WMS.Integration.Services) agenda workers que processam mensagens e disparam integrações. - Quando um evento de integração precisa ser executado, o worker identifica qual integrador deve ser acionado.
- 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.
- Novos integradores podem ser adicionados criando um novo módulo em
- Reuso do framework interno
- O desenvolvedor apenas define a classe do integrador, sem precisar reimplementar a orquestração.