diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/alfresco-global.properties b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/alfresco-global.properties index 7f39bba3c9..9e3b331ec8 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/alfresco-global.properties +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/alfresco-global.properties @@ -51,6 +51,11 @@ rm.autocompletesuggestion.nodeParameterSuggester.aspectsAndTypes=rma:record,cm:c # rm.dispositionlifecycletrigger.cronexpression=0 0/5 * * * ? +# +# Global RM notify of records due for review cron job expression +# +rm.notifyOfRecordsDueForReview.cronExpression=0 0/8 * * * ? + # # Records contributors group # diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml index c2330f7c55..dbb1bc2332 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-job-context.xml @@ -47,7 +47,7 @@ - 0 0/15 * * * ? + ${rm.notifyOfRecordsDueForReview.cronExpression} diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/NotifyOfRecordsDueForReviewJobExecuter.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/NotifyOfRecordsDueForReviewJobExecuter.java index 8159c50f37..ec5f0707eb 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/NotifyOfRecordsDueForReviewJobExecuter.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/job/NotifyOfRecordsDueForReviewJobExecuter.java @@ -91,12 +91,8 @@ public class NotifyOfRecordsDueForReviewJobExecuter extends RecordsManagementJob // Query is for all records that are due for review and for which // notification has not been sent. StringBuilder queryBuffer = new StringBuilder(); - queryBuffer.append("+ASPECT:\"rma:vitalRecord\" "); - queryBuffer.append("+(@rma\\:reviewAsOf:[MIN TO NOW] ) "); - queryBuffer.append("+( "); - queryBuffer.append("@rma\\:notificationIssued:false "); - queryBuffer.append("OR ISNULL:\"rma:notificationIssued\" "); - queryBuffer.append(") "); + queryBuffer.append("ASPECT:\"rma:vitalRecord\" "); + queryBuffer.append("AND @rma\\:reviewAsOf:[MIN TO NOW] "); String query = queryBuffer.toString(); ResultSet results = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_FTS_ALFRESCO, query); diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/vital/ReviewedAction.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/vital/ReviewedAction.java index 1cdd507c73..336aa669ff 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/vital/ReviewedAction.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/vital/ReviewedAction.java @@ -30,6 +30,7 @@ package org.alfresco.module.org_alfresco_module_rm.vital; import java.util.Date; import org.alfresco.module.org_alfresco_module_rm.action.RMActionExecuterAbstractBase; +import org.alfresco.repo.dictionary.types.period.Immediately; import org.alfresco.service.cmr.action.Action; import org.alfresco.service.cmr.repository.NodeRef; import org.apache.commons.logging.Log; @@ -44,56 +45,72 @@ public class ReviewedAction extends RMActionExecuterAbstractBase { private static Log logger = LogFactory.getLog(ReviewedAction.class); - /** - * - * @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, - * org.alfresco.service.cmr.repository.NodeRef) - */ - @Override - protected void executeImpl(Action action, NodeRef actionedUponNodeRef) - { - VitalRecordDefinition vrDef = getVitalRecordService().getVitalRecordDefinition(actionedUponNodeRef); + /** + * + * @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, + * org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + protected void executeImpl(Action action, NodeRef actionedUponNodeRef) + { + VitalRecordDefinition vrDef = getVitalRecordService().getVitalRecordDefinition(actionedUponNodeRef); if (vrDef != null && vrDef.isEnabled()) { - if (getRecordService().isRecord(actionedUponNodeRef)) - { - reviewRecord(actionedUponNodeRef, vrDef); - } - else if (getRecordFolderService().isRecordFolder(actionedUponNodeRef)) - { - for (NodeRef record : getRecordService().getRecords(actionedUponNodeRef)) + if (getRecordService().isRecord(actionedUponNodeRef)) + { + reviewRecord(actionedUponNodeRef, vrDef); + } + else if (getRecordFolderService().isRecordFolder(actionedUponNodeRef)) + { + for (NodeRef record : getRecordService().getRecords(actionedUponNodeRef)) { reviewRecord(record, vrDef); } - } - } - } + } + } + } - /** - * Make record as reviewed. - * - * @param nodeRef - * @param vrDef - */ - private void reviewRecord(NodeRef nodeRef, VitalRecordDefinition vrDef) - { + /** + * Make record as reviewed. + * + * @param nodeRef + * @param vrDef + */ + private void reviewRecord(NodeRef nodeRef, VitalRecordDefinition vrDef) + { // Calculate the next review date - Date reviewAsOf = vrDef.getNextReviewDate(); - if (reviewAsOf != null) + if (vrDef.getReviewPeriod().getPeriodType().equals(Immediately.PERIOD_TYPE)) { // Log if (logger.isDebugEnabled()) { StringBuilder msg = new StringBuilder(); + msg.append("Removind reviewAsOf property from") + .append(nodeRef); + logger.debug(msg.toString()); + } + + this.getNodeService().removeProperty(nodeRef, PROP_REVIEW_AS_OF); + } + else + { + Date reviewAsOf = vrDef.getNextReviewDate(); + if (reviewAsOf != null) + { + // Log + if (logger.isDebugEnabled()) + { + StringBuilder msg = new StringBuilder(); msg.append("Setting new reviewAsOf property [") .append(reviewAsOf) .append("] on ") .append(nodeRef); - logger.debug(msg.toString()); + logger.debug(msg.toString()); + } + + this.getNodeService().setProperty(nodeRef, PROP_REVIEW_AS_OF, reviewAsOf); + // TODO And record previous review date, time, user } - - this.getNodeService().setProperty(nodeRef, PROP_REVIEW_AS_OF, reviewAsOf); - //TODO And record previous review date, time, user } - } + } }