Este aplicativo de exemplo demonstra um sistema simples de atendimento de pedidos, decomposto em vários componentes independentes (como microsserviços ).
O repositório contém código para múltiplas alternativas de implementação para permitir que um público amplo entenda o código e compare alternativas. A tabela abaixo lista essas alternativas.
O exemplo respeita os aprendizados de Domain Driven Design (DDD) , Event Driven Architecture (EDA) e Microservices (µS) e foi projetado para fornecer acesso prático a esses tópicos.
Nota: O código foi escrito para ser explicado. Portanto, preferi o código simplificado ou copiar e colar em vez do código pronto para produção com soluções genéricas. Não considere as melhores práticas de estilo de codificação! Ele foi escrito especificamente para ser um código facilmente explicável .
Você pode encontrar mais informações sobre os conceitos no livro Practical Process Automation da O'Reilly.
O varejo fluido simula um sistema de atendimento de pedidos muito fácil:
A escolha mais fundamental é selecionar o mecanismo de comunicação :
Após o mecanismo de comunicação, a próxima escolha é o mecanismo de fluxo de trabalho :
e a linguagem de programação :
O varejo fluido simula um sistema de atendimento de pedidos muito fácil. A lógica de negócios é separada nos serviços mostrados acima (mostrados como um mapa de contexto).
Alguns serviços são de longa duração - por exemplo: o serviço de pagamento solicita aos clientes que atualizem cartões de crédito vencidos. Um mecanismo de fluxo de trabalho é usado para persistir e controlar essas interações de longa duração.
Observe que a máquina de estado ( ou mecanismo de fluxo de trabalho, neste caso ) é uma biblioteca usada em um serviço. Se diferentes serviços precisarem de um mecanismo de fluxo de trabalho, eles poderão executar qualquer mecanismo que desejarem. Dessa forma é uma decisão autônoma da equipe se eles querem usar um framework, e qual deles: