-
Notifications
You must be signed in to change notification settings - Fork 1
/
hyrax-workflow.html
205 lines (202 loc) · 6.76 KB
/
hyrax-workflow.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>OTM Appendix - Hyrax Workflow</title>
<script
src='https://www.w3.org/Tools/respec/respec-w3c'
class='remove'></script>
<script class='remove'>
var respecConfig = {
specStatus: "base",
editors: [{
name: "Tom Johnson",
company: "University of California, Santa Barbara Library",
companyURL: "https://www.library.ucsb.edu/"
},{
name: "Sibyl Schaefer",
company: "University of California, San Diego",
companyURL: "https://ucsd.edu"
}],
gitHub: "ucsdlib/otm-specs",
shortName: "otm-gateway-api",
wg: "One to Many Working Group",
wgURI: "https://wiki.lyrasis.org/display/OTM",
edDraftURI: "https://github.com/ucsdlib/otm-specs/blob/master/hyrax-workflow.html",
maxTocLevel: 3,
localBiblio: {
"Hyrax": {
title: "Hyrax: An open-source, Samvera-powered repository front-end",
href: "https://hyrax.samvera.org/"
}
},
otherLinks: [{
key: "OTM Specifications",
data: [{
value: "One to Many (OTM) Specifications Overview",
href: "."
},
{
value: "OTM Preservation Workflow",
href: "preservation-workflow.html"
},
{
value: "OTM Bridge API Specification",
href: "otm-bridge.html"
},
{
value: "OTM Gateway API Specification",
href: "otm-gateway.html"
},
{
value: "OTM Appendix - Audit Events",
href: "audit-appendix.html"
}]
}]
};
</script>
<link rel="stylesheet" href="otm-styles.css">
</head>
<body>
<p class='copyright'>This document is licensed under a
<a class='subfoot' href='https://creativecommons.org/licenses/by/4.0/' rel='license'>
Creative Commons Attribution 4.0 License
</a>.
</p>
<section id='abstract'>
<p>
This document describes a workflow for the [[Hyrax]] repository system intended for use with the
<a href="otm-gateway.html">OTM Gateway API</a>. This workflow is designed to enable active selection and
management of content within a distributed digital preservation (DDP) system, in satisfaction of the
<a href="https://wiki.lyrasis.org/display/OTM/User+Stories">One to Many User Stories</a>.
</p>
</section>
<section>
<h2>Status of This Document</h2>
<p>This document is an appendix to a specification, created as part of the One to Many grant, funded by the Andrew W.
Mellon Foundation.</p>
</section>
<section>
<h2>Hyrax Preservation Workflow</h2>
<p>
<img src="images/hyrax-workflow.png" width="100%">
</p>
<section>
<h3>States</h3>
<dl>
<dt>New</dt>
<dd>The state of objects that are not yet submitted. Objects are in this state before being created and assigned an identifier.</dd>
</dl>
<dl>
<dt>Submitted</dt>
<dd>The state of object that has been saved in the repository system.</dd>
</dl>
<dl>
<dt>Preserved</dt>
<dd>The state of object that has been preserved in at least one DDP.</dd>
</dl>
</section>
<section>
<h3>Actions</h3>
<dl>
<dt>submit</dt>
<dd>Submits the item to the repository. Notifies curators of the new content which may be selected for preservation. Transitions the object from <code>New</code> to <code>Submitted</code>.</dd>
</dl>
<dl>
<dt>preserve</dt>
<dd>Requests deposit in one or more DDPs via the Gateway. Notifies curators and administrators that preservation has been requested. Transitions the object to <code>Preserved</code>.</dd>
</dl>
<dl>
<dt>purge</dt>
<dd>Requests purge from all DDPs via the Gateway. Notifies curators and administrators that purge has been requested. Transitions the object from <code>Preserved</code> to <code>Submitted</code>.</dd>
</dl>
<dl>
<dt>update preserved content</dt>
<dd>Triggered when content that has already been preserved in at least one DDP is updated locally. Notifies curators of the new content which may be selected for preservation. Does not transition object state.</dd>
</dl>
<dl>
<dt>comment</dt>
<dd>Allows curators, administrators, and automated auditors to comment on submitted or preserved objects without triggering other workflow actions. Does not transition object state.</dd>
</dl>
</section>
<section>
<h3>Workflow Specification JSON</h3>
<pre>
{ "workflows": [
{
"name": "otm_preservation_deposit",
"label": "One to Many Mediated Deposit with Preservation",
"description": "",
"actions": [
{
"name": "submit",
"from_states": [],
"transition_to": "submitted",
"notifications": [
{
"notification_type": "email",
"name": "Hyrax::Workflow::AvailableForPreservation",
"to": ["curating"]
}
],
"methods": [
"Hyrax::Workflow::GrantReadToDepositor",
"Hyrax::Workflow::DeactivateObject"
]
},
{
"name": "preserve",
"from_states": [{"names": ["submitted", "preserved"], "roles": ["curating"]}],
"transition_to": "preserved",
"notifications": [
{
"notification_type": "email",
"name": "Hyrax::Workflow::PreservationRequested",
"to": ["curating", "admin"]
}
],
"methods": [
"Hyrax::Workflow::DepositToOtmGateway"
]
},
{
"name": "purge",
"from_states": [{"names": ["preserved"], "roles": ["curating"]}],
"transition_to": "submitted",
"notifications": [
{
"notification_type": "email",
"name": "Hyrax::Workflow::PurgeRequested",
"to": ["curating", "admin"]
}
],
"methods": [
"Hyrax::Workflow::PurgeFromOtmGateway"
]
},
{
"name": "update_preserved_content",
"from_states": [{"names": ["preserved"], "roles": ["curating"]}],
"notifications": [
{
"notification_type": "email",
"name": "Hyrax::Workflow::PreservedContentChanged",
"to": ["curating"]
}
]
},
{
"name": "comment",
"from_states": [
{ "names": ["submitted"], "roles": ["curating", "admin", "auditing"] },
{ "names": ["preserved"], "roles": ["curating", "admin", "auditing] }
]
}
]
}
]
}
</pre>
</section>
</section>
</body>