Versions Compared

Key

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

...

  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

LIVE

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.

...

DCB STATE

Max backoff / Next Poll interval / Next Step

DEV / TEST

Max backoff / Next Poll interval / Next Step

LIVE

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_AVAILABLE_AT_ANY_AGENCY → NO_ITEMS_SELECTABLE_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

...