eShop order flow - architecture
eshop · whole model (1 arch file)
Diagram
Context mapContext map of eshop · blueprint v2.8 covering the whole model (1 arch files): 4 bounded contexts, 0 outside the selection, 3 dependencies, 3 of them carrying derived contract traffic over 7 service-to-service edges. 8 cross-context policy binding(s), 5 of them named in the hover of 3 edge(s); 3 in no hover because no edge makes the owning context downstream of the trigger's - a model inconsistency: Catalog reacts to Ordering (2), Payment reacts to Ordering (1).Context mapeshopwhole model · 1 arch file(s) · 4 context(s) · 5 service(s) · 3 dependencies · 0 outsidecustomer-supplier · MSG ×4 operation(s) · via eshop_event_bus · queues Catalog, Ordering · Ordering asks for a stock check by event and waits for the answer by event. · policy "When stock is confirmed, ask for payment" (owned by Ordering) reacts to Order Stock Confirmed from Catalog · policy "When stock is rejected, cancel the order" (owned by Ordering) reacts to Order Stock Rejected from Catalogcustomer-supplier · MSG ×3 operation(s) · via eshop_event_bus · queues Ordering, PaymentProcessor · Ordering asks for payment by event and reacts to succeeded or failed. · policy "When payment fails, cancel the order" (owned by Ordering) reacts to Order Payment Failed from Payment · policy "When payment succeeds, mark the order paid" (owned by Ordering) reacts to Order Payment Succeeded from Paymentconformist · MSG ×1 operation(s) · via eshop_event_bus · queues Basket · Empties the basket when Ordering says an order has started. · policy "When an order starts, empty the basket" (owned by Basket) reacts to Order Started from OrderingBC002BC002SUPPORTCatalogcatalog-apiservices 1inbound 1outbound 0BC003BC003GENERICPaymentpayment-processorservices 1inbound 1outbound 0BC004BC004SUPPORTBasketbasket-apiservices 1inbound 0outbound 1BC001BC001COREOrderingordering-apiorder-processorservices 2inbound 1outbound 2UDUDUDMSG ×4MSG ×3MSG ×1
Integration map5 of 5 service(s) · 11 link(s) · 1 channel(s) · implementation: 0 as-is · 0 wip · 0 to-be · 0 unclear · 5 unstated of 5. Scope: whole model (1 arch file). Messages run through 1 declared channel(s); 4 queue(s) read by one service each are chips on that service. 8 operation(s) on 2 service(s) face outward with no consumer in this selection; 3 event(s) sent with no receiver here - counts are relative to the selection, not to the system.Integration mapeshop5 of 5 service(s) · 11 link(s) · 1 channel(s) · implementation: 0 as-is · 0 wip · 0 to-be · 0 unclear · 5 unstated of 5Scope: whole model (1 arch file). Messages run through 1 declared channel(s); 4 queue(s) read by one service each are chips on that service. 8 operation(s) on 2 service(s) face outward with no consumer in this selection;3 event(s) sent with no receiver here - counts are relative to the selection, not to the system.MSG · 5 operation(s) via eshop_event_bus · queue Ordering: Order Stock Confirmed, Order Stock Rejected, Grace Period Confirmed, Order Payment Succeeded, Order Payment FailedMSG · 2 operation(s) via eshop_event_bus · queue Catalog: Order Status Changed To Awaiting Validation, Order Status Changed To PaidMSG · 1 operation(s) via eshop_event_bus · queue PaymentProcessor: Order Status Changed To Stock ConfirmedMSG · 1 operation(s) via eshop_event_bus · queue Basket: Order StartedHTTP (inferred) · 5 operation(s): Create Order - POST /api/orders [User decision], Cancel Order - PUT /api/orders/cancel [User decision], Ship Order - PUT /api/orders/ship [Manual work], Get My Orders - GET /api/orders [Task type not stated], Get Order - GET /api/orders/{orderId} [Task type not stated]RPC (inferred) · 3 operation(s): Update Basket [User decision], Delete Basket [User decision], Get Basket [Task type not stated]MSG · 7 operation(s) via eshop_event_bus: Order Started, Order Status Changed To Submitted, Order Status Changed To Awaiting Validation, Order Status Changed To Stock Confirmed, Order Status Changed To Paid, Order Status Changed To Cancelled, Order Status Changed To ShippedMSG · 1 operation(s) via eshop_event_bus: Grace Period ConfirmedSTORE · 1 operation(s): Submitted OrdersMSG · 2 operation(s) via eshop_event_bus: Order Stock Confirmed, Order Stock RejectedMSG · 2 operation(s) via eshop_event_bus: Order Payment Succeeded, Order Payment Failedeshop_event_bustopic · RabbitMQ (eventbus)eshop_event_bus (MCH001) - topic · RabbitMQ (eventbus) · 12 routing key(s) · 12 operation(s) travel on itexternal consumersinferredinferred - 8 operation(s) on 2 service(s) are exposed and no service in this selection calls them.⇄ apiSVC001SVC001ordering-apiopenapi 5▲asyncapi 7▲ 5▼queue Orderingqueue Ordering (MCH002) - ordering-api reads through itinprocess 10▲shareddata 1▲ordering-api - Order commands and queries, and the outbox that publishes the order events.⚙ workerSVC002SVC002order-processorasyncapi 1▲inprocess 1▲shareddata 1▼order-processor - The grace period clock. Reads the ordering database directly.⇄ apiSVC003SVC003catalog-apiasyncapi 2▲ 2▼queue Catalogqueue Catalog (MCH003) - catalog-api reads through itinprocess 2▲catalog-api⚙ workerSVC004SVC004payment-processorasyncapi 2▲ 1▼queue PaymentProcessorqueue PaymentProcessor (MCH005) - payment-processor reads through itinprocess 1▲payment-processor⇄ apiSVC005SVC005basket-apiasyncapi 1▼queue Basketqueue Basket (MCH004) - basket-api reads through itprotobuf 3▲inprocess 1▲basket-apiMSG ×5MSG ×2MSG ×1MSG ×1HTTP ×5 · 3 commands, 2 queriesRPC ×3 · 2 commands, 1 queryMSG ×7MSG ×1STORE ×1MSG ×2MSG ×2
Strategy gridNo context in this selection carries an evolution stage, so nothing can be placed.Strategy grideshop4 contexts - no evolution stages statedNo context in this selection carries an evolution stage, so nothing can be placed.BC001 (Ordering)BC002 (Catalog)BC003 (Payment)BC004 (Basket)
Domain map4 domain(s) · 3 aggregated dependency(ies) · 0 crossing(s). 4 of 4 context(s) placed across 4 declared domain(s). Not shown: 1 of 3 edge labels had no free spot beside its edge - it is in that edge's tooltip.Domain map4 domain(s) · 3 aggregated dependency(ies) · 0 crossing(s)eshop4 of 4 context(s) placed across 4 declared domain(s). Not shown: 1 of 3 edge labels had no free spot beside its edge - it is in that edge'stooltip.1 dep · conformist1 dep · customer-supplier1 dep · customer-supplierDOMAIN · 1 contextbasketBasketbasket - 1 context(s)DOMAIN · 1 contextcatalogCatalogcatalog - 1 context(s)DOMAIN · 1 contextpaymentPaymentpayment - 1 context(s)DOMAIN · 1 contextorderingOrderingordering - 1 context(s)1 dep · conformist1 dep · customer-supplier

Printed whole to fit the sheet. The report and the PDF delivered beside this page print it at reading size.

Context Map

  • customer-supplier
  • conformist
  • U upstream (supplies) · D downstream (consumes)
  • MSG ×n - derived from contracts
  • context kind - core · support · generic
  • eShop (4)
scroll to zoom · drag to pan