diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml index d1d7ea5699..0ae8c884fa 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml @@ -16,7 +16,6 @@ - FILE_PLAN RECORD_CATEGORY RECORD_FOLDER RECORD @@ -61,27 +60,31 @@ parent="action-condition-evaluator" abstract="true" class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.CapabilityConditionEvaluator"> - + + - + + - + + - + + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java index 0e66280617..42dcab9595 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/RecordsManagementActionConditionEvaluatorAbstractBase.java @@ -21,6 +21,10 @@ package org.alfresco.module.org_alfresco_module_rm.action; import java.util.List; import org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase; +import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; +import org.alfresco.repo.transaction.RetryingTransactionHelper; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.action.ActionConditionDefinition; import org.alfresco.service.cmr.action.ParameterDefinition; import org.springframework.beans.factory.BeanNameAware; @@ -44,6 +48,8 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte /** public condition */ protected boolean publicCondition = true; + private RetryingTransactionHelper retryingTransactionHelper; + /** * @param recordsManagementActionService records management action service */ @@ -51,7 +57,15 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte { this.recordsManagementActionService = recordsManagementActionService; } - + + /** + * @param retryingTransactionHelper + */ + public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper) + { + this.retryingTransactionHelper = retryingTransactionHelper; + } + /** * @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#init() */ @@ -59,7 +73,27 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte public void init() { // override to prevent condition being registered with the core action service - recordsManagementActionService.register(this); + + // run the following code as System + AuthenticationUtil.runAs(new RunAsWork() + { + public Object doWork() + { + RetryingTransactionCallback callback = new RetryingTransactionCallback() + { + public Void execute() throws Throwable + { + recordsManagementActionService.register(RecordsManagementActionConditionEvaluatorAbstractBase.this); + + return null; + } + }; + + retryingTransactionHelper.doInTransaction(callback); + return null; + } + }, AuthenticationUtil.getSystemUserName()); + } @Override diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/HasDispositionActionEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/HasDispositionActionEvaluator.java index c8e7b3c255..fa8ab9b6b0 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/HasDispositionActionEvaluator.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/HasDispositionActionEvaluator.java @@ -70,49 +70,52 @@ public class HasDispositionActionEvaluator extends RecordsManagementActionCondit String action = ((QName) actionCondition.getParameterValue(PARAM_DISPOSITION_ACTION)).getLocalName(); - if (position.equals(DispositionActionRelativePositions.ANY.toString())) + if (dispositionService.isDisposableItem(actionedUponNodeRef) == true) { - DispositionSchedule dispositionSchedule = dispositionService.getDispositionSchedule(actionedUponNodeRef); - if (dispositionSchedule != null) + if (position.equals(DispositionActionRelativePositions.ANY.toString())) { - for (DispositionActionDefinition dispositionActionDefinition : dispositionSchedule.getDispositionActionDefinitions()) + + DispositionSchedule dispositionSchedule = dispositionService.getDispositionSchedule(actionedUponNodeRef); + if (dispositionSchedule != null) { - if (dispositionActionDefinition.getName().equals(action) == true) + for (DispositionActionDefinition dispositionActionDefinition : dispositionSchedule.getDispositionActionDefinitions()) + { + if (dispositionActionDefinition.getName().equals(action) == true) + { + result = true; + break; + } + } + } + } + else if (position.equals(DispositionActionRelativePositions.NEXT.toString())) + { + DispositionAction nextDispositionAction = dispositionService.getNextDispositionAction(actionedUponNodeRef); + if (nextDispositionAction != null) + { + // Get the disposition actions name + String actionName = nextDispositionAction.getName(); + if (actionName.equals(action) == true) + { + result = true; + } + } + } + else if (position.equals(DispositionActionRelativePositions.PREVIOUS.toString())) + { + DispositionAction lastCompletedDispositionAction = dispositionService.getLastCompletedDispostionAction(actionedUponNodeRef); + if (lastCompletedDispositionAction != null) + { + // Get the disposition actions name + String actionName = lastCompletedDispositionAction.getName(); + if (actionName.equals(action) == true) { result = true; - break; } } } } - else if (position.equals(DispositionActionRelativePositions.NEXT.toString())) - { - DispositionAction nextDispositionAction = dispositionService.getNextDispositionAction(actionedUponNodeRef); - if (nextDispositionAction != null) - { - // Get the disposition actions name - String actionName = nextDispositionAction.getName(); - if (actionName.equals(action) == true) - { - result = true; - } - } - } - else if (position.equals(DispositionActionRelativePositions.PREVIOUS.toString())) - { - DispositionAction lastCompletedDispositionAction = dispositionService.getLastCompletedDispostionAction(actionedUponNodeRef); - if (lastCompletedDispositionAction != null) - { - // Get the disposition actions name - String actionName = lastCompletedDispositionAction.getName(); - if (actionName.equals(action) == true) - { - result = true; - } - } - } - return result; } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsKindEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsKindEvaluator.java index faf73db118..57ee314af9 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsKindEvaluator.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsKindEvaluator.java @@ -68,7 +68,7 @@ public class IsKindEvaluator extends RecordsManagementActionConditionEvaluatorAb FilePlanComponentKind filePlanComponentKind = rmService.getFilePlanComponentKind(actionedUponNodeRef); - if (filePlanComponentKind.equals(kind)) + if (filePlanComponentKind.toString().equals(kind)) { result = true; } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsRecordTypeEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsRecordTypeEvaluator.java index 9c4de772bf..daa810da4d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsRecordTypeEvaluator.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/evaluator/IsRecordTypeEvaluator.java @@ -21,7 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.action.evaluator; import java.util.List; import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionConditionEvaluatorAbstractBase; -import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; +import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; import org.alfresco.repo.action.ParameterDefinitionImpl; import org.alfresco.service.cmr.action.ActionCondition; import org.alfresco.service.cmr.action.ParameterDefinition; @@ -41,7 +41,7 @@ import org.alfresco.service.namespace.QName; /** * @author ctan */ -public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvaluatorAbstractBase implements RecordsManagementModel +public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvaluatorAbstractBase implements DOD5015Model { /** * Evaluator constants @@ -68,7 +68,7 @@ public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvalu if (type != null) { - result = nodeService.hasAspect(actionedUponNodeRef, QName.createQName(RM_URI, type)); + result = nodeService.hasAspect(actionedUponNodeRef, QName.createQName(DOD_URI, type)); } return result;