Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel6
outlinefalse
typelist
separatorbrackets
printabletrue

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:

  1. Preliminary States - ensure we have good data to propagate requests in downstream systems

    1. SUBMITTED_TO_DCB

    2. PATRON_VERIFIED

    3. RESOLVED

  2. Circulation Tracking - to track and synchronise downstream systems

    1. REQUEST_PLACED_AT_SUPPLYING_AGENCY

    2. CONFIRMED

    3. REQUEST_PLACED_AT_BORROWING_AGENCY

    4. PICKUP_TRANSIT

    5. RECEIVED_AT_PICKUP

    6. READY_FOR_PICKUP

    7. LOANED

    8. RETURN_TRANSIT

  3. Finishing States - to terminate and clean up traces of finished requests where possible

    1. Preliminary Finishing

      1. NOT_SUPPLIED_CURRENT_SUPPLIER

      2. NO_ITEMS_AVAILABLE_AT_ANY_AGENCY → NO_ITEMS_SELECTABLE_AT_ANY_AGENCY

    2. Circulation FInishingFinishing

      1. CANCELLED

    3. Happy Path Finishing

      1. COMPLETED

      2. FINALISED

    4. Unexpected Termination

      1. ERROR

...

DCB STATE

Max backoff / Next Poll interval / Next Step

DEV / TEST

Max backoff / Next Poll interval / Next Step

LIVEstatus

titleNOT USED

What tracking for next step in 2l process

What tracking for next step in 3l process

SUBMITTED_TO_DCB

None

None

Auto Triggers ValidatePatronTransition

Moves us to PATRON_VERIFIED

PATRON_VERIFIED

None

None

Auto Triggers PatronRequestResolutionStateTransition

Moves us to RESOLVED

RESOLVED

None

None

Auto Triggers PlacePatronRequestAtSupplyingAgencyStateTransition

Moves us to REQUEST_PLACED_AT_SUPPLYING_AGENCY

...

NOT USED

DCB STATE

Max backoff / Next Poll interval / Next Step

DEV / TEST

Max backoff / Next Poll interval / Next Step

LIVE

Status
title

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.

...

NOT USED

DCB STATE

Max backoff / Next Poll interval / Next Step

DEV / TEST

Max backoff / Next Poll interval / Next Step

LIVE

Status
title

What 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

DCB-1230:

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

DCB-1289:

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

...

  • https://github.com/openlibraryenvironment/dcb-service/commit/fd9aa6e3a2016afec703820559c5220aa46c39b2

    • Reduced from 60s to 10ms rather than as 0s appears to be treated as effectively terminating.

  • Jira Legacy
    serverSystem Jira
    serverIda6f93653-ee50-3e81-88ad-29eb84ada35c
    keyDCB-1243

  • DCB-1289 Generalise transition to FINALISE and apply to CANCELLED to extend cleanup

  • Jira Legacy
    serverSystem Jira
    serverIda6f93653-ee50-3e81-88ad-29eb84ada35c
    keyDCB-1230

  • Default to production interval timings

  • Roll back

    Jira Legacy
    serverSystem Jira
    serverIda6f93653-ee50-3e81-88ad-29eb84ada35c
    keyDCB-1517

  • DCB-1102 Rename NO_ITEMS_AVAILABLE_AT_ANY_AGENCY to NO_ITEMS_SELECTABLE_AT_ANY_AGENCY

  • Status
    colourPurple
    titleDATE TBC
    DCB-1786 Add supplier renewal