Table of Contents | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Once those checks are received, the request is stored with DCB and then goes through a largely deterministic sequence:
Preliminary States - ensure we have good data to propagate requests in downstream systems
SUBMITTED_TO_DCB
PATRON_VERIFIED
RESOLVED
Circulation Tracking - to track and synchronise downstream systems
REQUEST_PLACED_AT_SUPPLYING_AGENCY
CONFIRMED
REQUEST_PLACED_AT_BORROWING_AGENCY
PICKUP_TRANSIT
RECEIVED_AT_PICKUP
READY_FOR_PICKUP
LOANED
RETURN_TRANSIT
Finishing States - to terminate and clean up traces of finished requests where possible
Preliminary Finishing
NOT_SUPPLIED_CURRENT_SUPPLIER
NO_ITEMS_AVAILABLE_AT_ANY_AGENCY
Circulation FInishing
CANCELLED
Happy Path Finishing
COMPLETED
FINALISED
Unexpected Termination
ERROR
...
DCB STATE | Max backoff / Next Poll interval / Next Step
| Max backoff / Next Poll interval / Next Step
| What tracking for next step in 2l process | What tracking for next step in 3l process | ||||
---|---|---|---|---|---|---|---|---|
None | None | Auto Triggers ValidatePatronTransition Moves us to PATRON_VERIFIED | ||||||
None | None | Auto Triggers PatronRequestResolutionStateTransition Moves us to RESOLVED | ||||||
None | None | Auto Triggers PlacePatronRequestAtSupplyingAgencyStateTransition Moves us to REQUEST_PLACED_AT_SUPPLYING_AGENCY |
...
DCB STATE | Max backoff / Next Poll interval / Next Step
| Max backoff / Next Poll interval / Next Step
| What tracking for next step in 2l process | What tracking for next step in 3l process | ||||
---|---|---|---|---|---|---|---|---|
REQUEST_PLACED_AT_SUPPLYING_AGENCY | 10ms | 10ms | wait for SupplierRequest= CONFIRMED | TRANSIT → HandleSupplierRequestConfirmed Moves us into the CONFIRMED state | |||||
CONFIRMED | 10m | 10m | Auto Triggers PlacePatronRequestAtBorrowingAgencyStateTransition Moves us to REQUEST_PLACED_AT_BORROWING_AGENCY | |||||
REQUEST_PLACED_AT_BORROWING_AGENCY | 10m | 1h | wait for SupplyingItem State = TRANSIT -> HandleSupplierInTransit Moves us to PICKUP_TRANSIT | |||||
PICKUP_TRANSIT | 10m | 1h | wait for BorrowingItem = RECEIVED | LOANED | ON_HOLD_SHELF Then HandleBorrowerItemReceived moves us to RECEIVED_AT_PICKUP | |||||
RECEIVED_AT_PICKUP | 10m | 1h | wait for BorrowingItem = ON_HOLD_SHELF | LOANED Then HandleBorrowerItemOnHoldShelf moves us to READY_FOR_PICKUP | |||||
READY_FOR_PICKUP | 10m | 1h | wait for BorrowingItem = LOANED Then HandleBorrowerItemLoaned moves us to LOANED | |||||
LOANED | 10m | 6h | wait for BorrowingItem = AVAILABLE | TRANSIT OR SupplierItem=AVAILABLE HandleBorrowerRequestReturnTransit moves us to RETURN_TRANSIT N.b. CLOSED==FOLIO Specific N.b. Additional check needed here - item loaned other | |||||
RETURN_TRANSIT | 10m | 1h | SupplierItem = AVAILABLE | SupplierRequest=CLOSED Then HandleSupplierItemAvailable moves us to COMPLETED N.b. CLOSED==FOLIO Specific N.b. Additional check needed here - item loaned other |
Finishing States
When a request completes its cycle, or if it terminates prematurely, it enters a finishing state.
...