RM-967: Disposition actions appearing for records when disposition set to record folder

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@55374 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2013-09-17 03:37:09 +00:00
parent c40d3e4310
commit 8ca1a310af
6 changed files with 50 additions and 71 deletions

View File

@@ -26,8 +26,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService;
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionActionDefinition;
@@ -40,6 +40,7 @@ import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventTy
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
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.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
@@ -121,6 +122,9 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
/** Freeze Service */
protected FreezeService freezeService;
/** model security service */
protected ModelSecurityService modelSecurityService;
/** List of kinds for which this action is applicable */
protected Set<FilePlanComponentKind> applicableKinds = new HashSet<FilePlanComponentKind>();
@@ -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);

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<Void>()
{
// run as rmadmin
filePlanAuthenticationService.runAsRmAdmin(new RunAsWork<Void>()
{
@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