Statuses
Last updated
Last updated
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 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 Deposit
s have been ACCEPTED
.
REJECTED
(terminal): Deposit services places the Submission into this state when all of its Deposit
s have been REJECTED
.
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 Deposit
s 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
(terminal): the transfer of custodial content to the Repository
failed, or there was some other error updating the status of the Deposit
.
RETRY
(intermediate): the downstream repository was not reachable. The Deposit will be retried at a later time.
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
.
There are some common permutations of these statuses that will be observed:
ACCEPTED
Submission
s will only have Deposit
s that are ACCEPTED
. Each Deposit
will have a COMPLETE
RepositoryCopy
.
REJECTED
Submission
s will only have Deposit
s that are REJECTED
. REJECTED
Deposit
s will not have any RepositoryCopy
at all.
IN_PROGRESS
Submission
s may have zero or more Deposit
s in any state.
FAILED
Submission
s should have zero Deposit
s.
ACCEPTED
Deposit
s should have a COMPLETE
RepositoryCopy
.
REJECTED
Deposit
s will have a REJECTED
RepositoryCopy
.
SUBMITTED
Deposit
s will have an IN_PROGRESS
RepositoryCopy
.
FAILED
Deposit
s will have no RepositoryCopy
.