RM-7051 running the find records and update as system

This commit is contained in:
Ross Gale
2019-11-20 10:51:33 +00:00
parent 049837c7bb
commit 7d7946ea06

View File

@@ -63,6 +63,7 @@ import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.domain.node.NodeDAO; import org.alfresco.repo.domain.node.NodeDAO;
import org.alfresco.repo.domain.qname.QNameDAO; import org.alfresco.repo.domain.qname.QNameDAO;
import org.alfresco.repo.policy.BehaviourFilter; import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
@@ -353,42 +354,53 @@ public class UpdateRecordScheduleGet extends AbstractWebScript implements Record
private int updateRecordFolder(final NodeRef recordFolder) private int updateRecordFolder(final NodeRef recordFolder)
{ {
return transactionService.getRetryingTransactionHelper() return transactionService.getRetryingTransactionHelper()
.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Integer>() .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Integer>()
{ {
public Integer execute() throws Throwable public Integer execute() throws Throwable
{ {
int recordCount = 0; int recordCount = 0;
behaviourFilter.disableBehaviour(recordFolder); behaviourFilter.disableBehaviour(recordFolder);
if (logger.isDebugEnabled()) if (logger.isDebugEnabled())
{ {
logger.info("Checking folder: " + recordFolder); logger.info("Checking folder: " + recordFolder);
} }
DispositionSchedule schedule = dispositionService.getDispositionSchedule(recordFolder); recordCount = AuthenticationUtil.runAsSystem(new AuthenticationUtil.RunAsWork<Integer>()
if (schedule.isRecordLevelDisposition()) {
{ @Override
List<NodeRef> records = recordService.getRecords(recordFolder); public Integer doWork() throws Exception
for (NodeRef record : records) {
{ DispositionSchedule schedule = dispositionService.getDispositionSchedule(recordFolder);
if (!nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE)) int innerRecordCount = 0;
{ if (schedule.isRecordLevelDisposition())
if (logger.isDebugEnabled()) {
{
logger.info("updating record: " + record);
}
behaviourFilter.disableBehaviour(record);
dispositionService.updateNextDispositionAction(record, schedule);
recordCount ++;
behaviourFilter.enableBehaviour(record);
}
}
}
nodeService.addAspect(recordFolder, ASPECT_DISPOSITION_PROCESSED, null);
behaviourFilter.enableBehaviour(recordFolder);
return recordCount; List<NodeRef> records = recordService.getRecords(recordFolder);
} for (NodeRef record : records)
}, false, true); {
if (!nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE))
{
if (logger.isDebugEnabled())
{
logger.info("updating record: " + record);
}
behaviourFilter.disableBehaviour(record);
dispositionService.updateNextDispositionAction(record, schedule);
innerRecordCount++;
behaviourFilter.enableBehaviour(record);
}
}
}
return innerRecordCount;
}
});
nodeService.addAspect(recordFolder, ASPECT_DISPOSITION_PROCESSED, null);
behaviourFilter.enableBehaviour(recordFolder);
return recordCount;
}
}, false, true);
} }
} }