diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml index 7f2ad54280..54d76d7938 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml @@ -40,7 +40,6 @@ - @@ -81,5 +80,10 @@ + + + + + \ No newline at end of file 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 20672a5092..5a003d13f7 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 @@ -137,6 +137,7 @@ + applicableKinds = new HashSet(); @@ -265,6 +269,14 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe { return recordsManagementAdminService; } + + /** + * @param modelSecurityService model security service + */ + public void setModelSecurityService(ModelSecurityService modelSecurityService) + { + this.modelSecurityService = modelSecurityService; + } /** * @param applicableKinds kinds that this action is applicable for @@ -407,8 +419,17 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe Action action = this.actionService.createAction(name); action.setParameterValues(parameters); - // Execute the action - this.actionService.executeAction(action, filePlanComponent); + // disable model security whilst we execute the RM rule + modelSecurityService.disable(); + try + { + // Execute the action + actionService.executeAction(action, filePlanComponent); + } + finally + { + modelSecurityService.enable(); + } // Get the result Object value = action.getParameterValue(ActionExecuterAbstractBase.PARAM_RESULT); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsScheduledCapabilityCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsScheduledCapabilityCondition.java index 38ba2ed491..afea96f7eb 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsScheduledCapabilityCondition.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/IsScheduledCapabilityCondition.java @@ -57,21 +57,9 @@ public class IsScheduledCapabilityCondition extends AbstractCapabilityCondition */ @Override public boolean evaluate(NodeRef nodeRef) - { - boolean result = evaluateImpl(nodeRef); - - if (result == false && recordService.isRecord(nodeRef) == true) - { - result = evaluateImpl(nodeService.getPrimaryParent(nodeRef).getParentRef()); - } - - return result; - } - - public boolean evaluateImpl(NodeRef nodeRef) { boolean result = false; - + DispositionAction nextDispositionAction = dispositionService.getNextDispositionAction(nodeRef); if (nextDispositionAction != null) { @@ -83,7 +71,7 @@ public class IsScheduledCapabilityCondition extends AbstractCapabilityCondition result = true; } } - + return result; } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/LastDispositionActionCondition.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/LastDispositionActionCondition.java index f645c87c00..bfcfea81f3 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/LastDispositionActionCondition.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/declarative/condition/LastDispositionActionCondition.java @@ -49,18 +49,6 @@ public class LastDispositionActionCondition extends AbstractCapabilityCondition */ @Override public boolean evaluate(NodeRef nodeRef) - { - boolean result = evaluateImpl(nodeRef); - - if (result == false && recordService.isRecord(nodeRef) == true) - { - result = evaluateImpl(nodeService.getPrimaryParent(nodeRef).getParentRef()); - } - - return result; - } - - private boolean evaluateImpl(NodeRef nodeRef) { boolean result = false; DispositionAction dispositionAction = dispositionService.getLastCompletedDispostionAction(nodeRef); @@ -69,7 +57,6 @@ public class LastDispositionActionCondition extends AbstractCapabilityCondition { result = true; } - return result; + return result; } - } diff --git a/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java b/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java index 6577209469..e5d59cd0e8 100644 --- a/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java +++ b/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java @@ -23,7 +23,6 @@ import java.util.Set; import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; -import org.alfresco.module.org_alfresco_module_rm.model.security.ModelSecurityService; import org.alfresco.module.org_alfresco_module_rm.security.FilePlanAuthenticationService; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; @@ -54,9 +53,6 @@ public class ExtendedRuleServiceImpl extends RuleServiceImpl /** node service */ protected NodeService nodeService; - - /** model security service */ - protected ModelSecurityService modelSecurityService; /** * @param runAsRmAdmin true if run rules as rmadmin, false otherwise @@ -89,14 +85,6 @@ public class ExtendedRuleServiceImpl extends RuleServiceImpl { this.filePlanService = filePlanService; } - - /** - * @param modelSecurityService model security service - */ - public void setModelSecurityService(ModelSecurityService modelSecurityService) - { - this.modelSecurityService = modelSecurityService; - } /** * Init method @@ -178,34 +166,24 @@ public class ExtendedRuleServiceImpl extends RuleServiceImpl // ignore and if (isIgnoredType(typeQName) == false) { - // disable model security whilst we execute the RM rule - //modelSecurityService.disable(); - //try - //{ - if (runAsRmAdmin == true) + if (runAsRmAdmin == true) + { + // run as rmadmin + filePlanAuthenticationService.runAsRmAdmin(new RunAsWork() { - // run as rmadmin - filePlanAuthenticationService.runAsRmAdmin(new RunAsWork() - { - @Override - public Void doWork() throws Exception - { - ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); - return null; - } - }); - } - else - { - // run as current user - ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); - } - //} - //finally - //{ - // enable model security - // modelSecurityService.enable(); - //} + @Override + public Void doWork() throws Exception + { + ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); + return null; + } + }); + } + else + { + // run as current user + ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); + } } } else