Statuses

Deposit Services primarily acts on three types of resources: Submission, Deposit, and RepositoryCopy. Each of these resources carries a status. Managing and reacting to the values of resource statuses is a major function of Deposit Services.

Abstractly, Deposit Services categorizes the value of any status as either intermediate or terminal.

It isn't clear, yet, whether this abstract notion of intermediate and terminal need to be shared amongst components of PASS. If so, then certain classes and interfaces in the Deposit Services code base should be extracted into a shared component.

A terminal status means the resource has completed its workflow and reached the end. No additional state changes are expected, and the resource is considered final and read-only.

An intermediate status means the resource is still in progress within its workflow and has not yet reached completion. The resource is expected to be modified until it achieves a terminal status.

A general pattern within Deposit Services is that resources with terminal status are explicitly accounted for (this is largely enforced by policies which are documented elsewhere), and are considered "read-only".

Submission Status

Submission status is enumerated in the AggregatedDepositStatus class. Deposit services considers the following values:

  • NOT_STARTED (intermediate): Incoming Submissions from the UI must have this status value.

  • IN_PROGRESS (intermediate): Deposit services places the Submission in an IN_PROGRESS state right away. When a thread observes a Submission in this state, it assumes that another thread is processing this resource.

  • FAILED (intermediate): Occurs when a non-recoverable error happens while processing the Submission.

  • ACCEPTED (terminal): Deposit services places the Submission into this state when all of its Deposits have been ACCEPTED.

  • REJECTED (terminal): Deposit services places the Submission into this state when all of its Deposits have been REJECTED.

Deposit Status

Deposit status is enumerated in the DepositStatus class. Deposit services considers the following values:

  • SUBMITTED (intermediate): the custodial content of the Submission has been successfully transferred to the Deposits Repository.

  • ACCEPTED (terminal): the custodial content of the Submission has been accessioned by the Deposit's Repository , i.e. custody of the Submission has successfully been transferred to the downstream Repository.

  • REJECTED (terminal): the custodial content of the Submission has been rejected by the Deposit's Repository, i.e. the downstream Repository has refused to accept custody of the Submission content.

  • FAILED (intermediate): the transfer of custodial content to the Repository failed, or there was some other error updating the status of the Deposit.

RepositoryCopy Status

RepositoryCopy status is enumerated in the CopyStatus class. Deposit services considers the following values:

  • COMPLETE (terminal): a copy of the custodial content is available in the Repository at this location.

  • IN_PROGRESS (intermediate): a copy of the custodial content is expected to be available in the Repository at this location. The custodial content should not be expected to exist until the Deposit status is ACCEPTED.

  • REJECTED (terminal): the copy should be considered to be invalid. Even if the custodial content is made available at the location indicated by the RepositoryCopy, it should not be mistaken for a successful transfer of custody.

RepositoryCopy status is dependent on the Deposit status. They will always be consistent. For example, a RepositoryCopy cannot be COMPLETE if the Deposit is REJECTED. If a Deposit is REJECTED, then the RepositoryCopy must also be REJECTED.

Common Permutations

There are some common permutations of these statuses that will be observed:

  • ACCEPTED Submissions will only have Deposits that are ACCEPTED. Each Deposit will have a COMPLETE RepositoryCopy.

  • REJECTED Submissions will only have Deposits that are REJECTED. REJECTED Deposits will not have any RepositoryCopy at all.

  • IN_PROGRESS Submissions may have zero or more Deposits in any state.

  • FAILED Submissions should have zero Deposits.

  • ACCEPTED Deposits should have a COMPLETE RepositoryCopy.

  • REJECTED Deposits will have a REJECTED RepositoryCopy.

  • SUBMITTED Deposits will have an IN_PROGRESS RepositoryCopy.

  • FAILED Deposits will have no RepositoryCopy.

Last updated