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→ NO_ITEMS_SELECTABLE_AT_ANY_AGENCY
Circulation FInishingFinishing
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
| title | NOT USEDWhat 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 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.
...
DCB STATE | Max backoff / Next Poll interval / Next Step
| Max backoff / Next Poll interval / Next Step
| title | NOT USEDWhat tracking for next step in 2l process | What tracking for next step in 3l process | |
---|---|---|---|---|---|---|
Preliminary Finishing (follows a preliminary state before a request enters tracked circulation) | ||||||
NOT_SUPPLIED_CURRENT_SUPPLIER | None | None | Auto Triggers: ResolveNextSupplierTransition Moves us to NO_ITEMS_AVAILABLESELECTABLE_AT_ANY_AGENCY | |||
NO_ITEMS_AVAILABLESELECTABLE_AT_ANY_AGENCY | None | None | TERMINAL STATE (For now) | |||
Circulation Finishing (interrupts tracked circulation, and is typically manually instigated) | ||||||
CANCELLED | None | None | Auto Triggers: FinaliseRequestTransition moves us to FINALISED | |||
Happy Path Finishing (follows directly after the end of tracked circulation) | ||||||
COMPLETED | None | None | Auto Triggers: FinaliseRequestTransition moves us to FINALISED | |||
FINALISED | None | None | TERMINAL STATE | TERMINAL STATE | ||
Unexpected Termination (can happen at any stage) | ||||||
ERROR | None | None | TERMINAL STATE | TERMINAL STATE |
...
Reduced from 60s to 10ms rather than as 0s appears to be treated as effectively terminating.
Jira Legacy server System Jira serverId a6f93653-ee50-3e81-88ad-29eb84ada35c key DCB-1243 DCB-1289 Generalise transition to FINALISE and apply to CANCELLED to extend cleanup
Jira Legacy server System Jira serverId a6f93653-ee50-3e81-88ad-29eb84ada35c key DCB-1230 Default to production interval timings
Roll back
Jira Legacy server System Jira serverId a6f93653-ee50-3e81-88ad-29eb84ada35c key DCB-1517 DCB-1102 Rename
NO_ITEMS_AVAILABLE_AT_ANY_AGENCY
toNO_ITEMS_SELECTABLE_AT_ANY_AGENCY
DCB-1786 Add supplier renewalStatus colour Purple title DATE TBC