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