Package-level declarations
Types
Destination-side hook fired when a demand transitions into ksl.modeling.supplychain.DemandStateId.Delivered. The endpoint is responsible for advancing the demand to its terminal state — by calling demand.store() (for storing destinations) or by triggering a re-ship via demand.ship() (for pass-through destinations such as cross-docks with downstream routing).
A DemandFillerIfc that doesn't fulfil demands from local stock — instead it forwards each incoming demand to an upstream supplier, waits for delivery, and runs a user-supplied callback when the upstream delivers. Analogous to a real-world freight forwarder or drop-shipper: takes the order, places it with a supplier, takes delivery, hands the goods to the original customer.
Named lifecycle hooks for SupplyChainModel.Demand state transitions. Implement only the hooks you care about; the others default to no-op.
Single-server discrete-event dock that interposes a service-time delay between a demand reaching DemandStateId.Delivered and the terminal action (store or ship) chosen by the dock's configuration.
Terminal action a Dock performs once its service-time delay elapses for an arriving demand.
Named lifecycle hooks for SupplyChainModel.Order state transitions. Implement only the hooks you care about; the others default to no-op.
Default delivery endpoint for storing destinations. On every Delivered transition, immediately calls demand.store(), advancing the demand to Stored at the same simulation time.
Lookup table mapping a demand's final destination (SupplyChainModel.Demand.demandSender) to the next intermediate hop along its multi-hop journey. Used by a DockTerminalAction.Ship (or any custom re-ship endpoint) to decide where to forward an arriving demand.
Functions
Attach observer to this demand. Returns the underlying DemandStateChangeListener so callers can remove the subscription later via SupplyChainModel.Demand.removeStateChangeListener.
Attach observer to this order. Returns the underlying OrderStateChangeListener so callers can remove the subscription via SupplyChainModel.Order.removeStateChangeListener.
Accept this demand and start processing it: transitions it through RECEIVED → IN_PROCESS at receiver. Equivalent to the two-call sequence receive(receiver); process(receiver) but named for the intent ("the receiver has taken the demand and is now responsible for finishing it").