Table of Contents | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Overview
Direct Consortial Borrowing requests go When a patron places a Direct Consortial Borrowing request it goes through some initial [[preflight checks]] to make sure there isn’t anything immediately fatal that will prevent the request from being fulfillled.
If those checks are passed, the request is not accepted by DCB and the patron’s requesting system is notified so that the patron can be informed.
Once those checks are received, the request is stored with DCB and then goes through a largely deterministic sequence once successfully received:
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 | ||||
---|---|---|---|---|---|---|---|---|
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 | SupplierRequest=CLOSED Then 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.
...