[
https://jira.duraspace.org/browse/DS-996?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=22111#comment-22111
]
Mark Diggory commented on DS-996:
---------------------------------
I draw my position from Domain Driven Design, where one works to encode the
state clearly in the Data Model. Also where Data Model changes are not
considered heavy weight but proper explicit definition of the system one is
building. The challenge with the approach being taken here (and likewise in
Embargo as well) is the the policies expressed are still hardcoded in the
application layer rather than captured in the Domain model itself.
State Vs Transition Data: Yes what we are currently doing with provenance is
transition data and while I dislike the lack of a proper store for that data,
we have to live with capturing the transition in provenance for the time being,
given it is the only place we now have for this. However, the presentation of a
"reason" for withdrawing the Item is "state data" in that when the withdrawn
item is in force it describes the state in more detail. (In fact, this sort of
state data could be used in combination with delete as well, removing the
metadatavalues, bundles, bitstreams, but leaving behind the item record with a
state=deleted and a reason for that deletion would allow OAI PMH removes to be
properly supported for all Items in DSpace, not just those withdrawn. But that
is an aside.)
Concerning the points about changing all the crosswalks packagers, application,
etc, the current dialog clearly misses that we do not want this withdrawn
status exposed to the enduser in the UI, so adding it to the metadata still
requires that we make sure that crosswalks, packagers and User Interfaces are
always properly blocking the exposure of this metadata field and/or any feature
of the Item that may be accidentally exposed in the UI. Is restricting access
to the Item in the UI sufficient? As we recently see, the metadata can still be
gotten from /metadata/handle/... URI. And finally, as Tim points out, we need
to remove the metadata field or protect it from exposure if the item is ever
restored to the repository. What we see here is a cheap quick solution and
then having to write exception cases into the application in all places the
data may be exposed. What I propose is to add it to the data model and only
expose it in the cases where it is needed. So its a matter of perspective, one
mans "lots of extra work" is another mans "much less work". The data is only
exposed where it is needed.
Please note Withdrawn items are not an edge case because there is a lower
percentage of them in a repository in relation to archived items. The feature
is an important 80/20 rule for Repository Requirements. It is a feature used in
less than 20% of Items but is utilized by greater than 80% of the users. It is
a feature we've observed being used in every DSpace instance we've seen
deployed.
I thought quite awhile about this design dialog and my conclusion is the
following. For enduser customizations where your organization may make a
change to the behavior of the application and want to still be free to upgrade
DSpace without maintaining local changes to the database schema, usage of the
metadatavalue table may be sensible until we achieve a better approach for
storing Object System properties. However, for long term changes to DSpace
that are committed to the official distribution, we should not be comfortable
with this approach. We should be striving to achieve solutions that do not
promote "Procrusteanism". With this in mind I am still against storing the a
reason for the withdraw in the metadata in the form shown in both issues. I
would prefer to see it stored in the Item table where it can be stored without
creating further convoluted conditional metadata filtering rules in all the
applications. This doesn't mean you wouldn't record it in the
dc.description.provenance as a transition record, this would/could still be the
case. But that the reason itself should be system metadata.
The appropriate direction of design is to (1) add the field to the table, (2)
create some simple setters/getters on the Item, (3) add a form field to the
withdraw view so that the value can be added to the item.
I think its critical we make the best possible design choices when designing
the core data model and features of DSpace. This was one of the reasons for
creating the formal Domain Model, so we can design explicit capabilities and
features of DSpace via the Domain itself, not by creating vague metadata
mappings of state and hardcoding their meaning and logic in the surface
application instead of in the core data model.
I am tempted to express a vote of -1 on DS-996 and DS-587 until we see some
agreement here, we should be working to get the design right now, not making
compromises and putting off proper design choices later.
> Add optional reason text to tombstone page
> ------------------------------------------
>
> Key: DS-996
> URL: https://jira.duraspace.org/browse/DS-996
> Project: DSpace
> Issue Type: Improvement
> Components: JSPUI
> Affects Versions: 1.8.0
> Reporter: Richard Rodgers
> Assignee: Richard Rodgers
> Attachments: handle-servlet.patch, msgs.patch, tombstone.patch
>
>
> Following the work at UMich (DS-587), this patch will cause the value of any
> configured item metadata field on the withdrawn item's tombstone page to
> display.
> It is configured by the optional property
> 'webui.tombstone.reason=<metadatafield>' in dspace.cfg
> If configuration property is not defined, the tombstone will appear without a
> reason display area.
> If a given item lacks a value for configured metadata field, the reason
> displayed will be the value of the message: 'jsp.tombstone.noreason'
> The prompt before the reason text is the value of the message:
> 'jsp.tombstone.reason'
> Patches below
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://jira.duraspace.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management
Up to 160% more powerful than alternatives and 25% more efficient.
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
Dspace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-devel