11-20-2013 06:00 PM
I have a multivalue metadata element on my custom document type. I would like to run code when this information changes, but I need to know which items were added or removed from the list of elements in order to run this code.
Simplified examples:
There must be several ways to implement this, but it is a simple enough concept that I think there must be a "best" way in the general case. Could someone give a general outline or a pointer to existing code/documentation that handles metadata changes on documentModified?
05-02-2014 10:45 AM
The better answer is to use the previous document that's already provided to you in the event context for a beforeDocumentModification
:
DocumentModel oldDocument = (DocumentModel) context.getProperty(CoreEventConstants.PREVIOUS_DOCUMENT_MODEL);
if (oldDocument != null) {
// beforeDocumentModification
title = oldDocument.getTitle();
// ...
}
11-21-2013 10:33 AM
You can have access to the origninal document model (the one containing old values, not the one being modified) with:
@{Document.getRef().reference()}
11-21-2013 06:06 PM
Thanks. I am doing this from inside Java code, however. I'm not sure what the equivalent of the above is, but input.getCoreSession().getDocument(input.getRef())
seems to get the same metadata as is on input
during documentModified.
05-01-2014 12:35 PM
The answer to this question is to hook into the "before document modification" and retrieve the document from the repository.
public String run(DocumentModel input) throws ClientException {
DocumentModel oldDocument = session.getDocument(input.getRef());
// ...
}
In the above method, "input" contains the new values and "oldDocument" contains the old values.
My original question assumed "documentModified" was the correct event, but it was not.
edit: see the better answer.
05-02-2014 10:45 AM
The better answer is to use the previous document that's already provided to you in the event context for a beforeDocumentModification
:
DocumentModel oldDocument = (DocumentModel) context.getProperty(CoreEventConstants.PREVIOUS_DOCUMENT_MODEL);
if (oldDocument != null) {
// beforeDocumentModification
title = oldDocument.getTitle();
// ...
}
05-02-2014 11:23 AM
Thank you! I knew there must have been a better way; I just had no idea how to find it.
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.