diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml index 8b03748dc2..51300be384 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml @@ -700,6 +700,11 @@
@@ -105,10 +126,21 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch @Override public void applyInternal() { - int totalFolders = recordsManagementQueryDAO.getRecordFoldersWithSchedulesCount(); - logger.info("Folders to update: "+ totalFolders); + Long maxNodeId = nodeDAO.getMaxNodeId(); - for (Long i = 0L; i < totalFolders; i += BATCH_SIZE) + //int totalFolders = recordsManagementQueryDAO.getRecordFoldersWithSchedulesCount(); + int batchCount = 0; + //logger.info("Folders to update: "+ totalFolders); + transactionService.getRetryingTransactionHelper() + .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + public String execute() throws Throwable + { + qnameDAO.getOrCreateQName(ASPECT_DISPOSITION_PROCESSED); + return null; + } + }, false, true); + for (Long i = 0L; i < maxNodeId; i += BATCH_SIZE) { final Long finali = i; int updatedRecords = transactionService.getRetryingTransactionHelper() @@ -120,6 +152,7 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch List folders = recordsManagementQueryDAO.getRecordFoldersWithSchedules(finali, finali + BATCH_SIZE); for (NodeRef folder : folders) { + behaviourFilter.disableBehaviour(folder); if (LOGGER.isDebugEnabled()) { logger.info("Checking folder: " + folder); @@ -127,7 +160,6 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch DispositionSchedule schedule = dispositionService.getDispositionSchedule(folder); if (schedule.isRecordLevelDisposition()) { - behaviourFilter.disableBehaviour(folder); List records = recordService.getRecords(folder); for (NodeRef record : records) { @@ -143,15 +175,16 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch behaviourFilter.enableBehaviour(record); } } - behaviourFilter.enableBehaviour(folder); } + nodeService.addAspect(folder, ASPECT_DISPOSITION_PROCESSED, null); + behaviourFilter.enableBehaviour(folder); } return recordCount; } }, false, true); - + batchCount ++; logger.info("Records updated: "+ updatedRecords); - logger.info("Updating folders: "+ finali + " to: " +(finali + BATCH_SIZE) + " of "+totalFolders); + logger.info("Completed batch "+ batchCount+" of "+ (Math.ceil(maxNodeId/BATCH_SIZE)+1)); } } }