Basket Line Lifecycle¶
Models the lifecycle of a single line item within a basket (cart). A basket line is created when a product is added, and follows a path through quantity/price updates, optional stock reservation, and eventual conversion to an order line or removal. This lifecycle is subordinate to the Basket Lifecycle.
Object: basket-line ·
States: 5 ·
Transitions: 8
State Diagram¶
flowchart LR
%% ── classDef palette ─────────────────────────────────────
classDef stInit fill:#0d9488,stroke:#0f766e,color:#fff,font-weight:bold
classDef stNorm fill:#3b82f6,stroke:#2563eb,color:#fff
classDef stOk fill:#16a34a,stroke:#15803d,color:#fff,font-weight:bold
classDef stFail fill:#dc2626,stroke:#b91c1c,color:#fff,font-weight:bold
classDef stHold fill:#d97706,stroke:#b45309,color:#fff
%% ── nodes ───────────────────────────────────────────────
added(["Added"])
updated["Updated"]
reserved["Reserved"]
confirmed[["Confirmed"]]
removed[["Removed"]]
%% ── transitions ─────────────────────────────────
added -->|"basket-updated"| updated
reserved -->|"basket-updated"| updated
added -->|"inventory-reserved"| reserved
updated -->|"inventory-reserved"| reserved
added -->|"basket-checked-out"| confirmed
reserved -->|"basket-checked-out"| confirmed
added -->|"basket-updated"| removed
reserved -->|"inventory-released"| removed
%% ── class assignments ───────────────────────────
class added stInit
class updated,reserved stNorm
class confirmed,removed stOk
States¶
| State | Label | Description | Initial | Terminal |
|---|---|---|---|---|
added |
Added | Product added to basket. Price calculated. Stock not yet reserved. | ✓ | |
updated |
Updated | Quantity, variant, or promotion applied to the line. Price recalculated. | ||
reserved |
Reserved | Stock reserved for the line. Item held pending checkout. | ||
confirmed |
Confirmed | Basket checked out. Line converted to Order Line. Terminal state for the basket line. | ✓ | |
removed |
Removed | Line explicitly removed by customer or invalidated (e.g. product discontinued). | ✓ |
Transitions¶
| From | To | Trigger | Guards |
|---|---|---|---|
added |
updated |
basket-updated |
Quantity > 0; Product still available |
reserved |
updated |
basket-updated |
Previous reservation released before update |
added |
reserved |
inventory-reserved |
Stock available at selected fulfillment location |
updated |
reserved |
inventory-reserved |
Stock available for updated quantity/variant |
added |
confirmed |
basket-checked-out |
Basket in locked state; Payment authorised |
reserved |
confirmed |
basket-checked-out |
Basket in locked state; Payment authorised |
added |
removed |
basket-updated |
Customer removes item OR quantity set to 0 |
reserved |
removed |
inventory-released |
Customer removes item; Stock reservation released |