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

@@ -40,7 +40,6 @@
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
<entry key="capabilityCondition.hasDispositionAsOfDate" value="false"/>
</map>
</property>
<property name="group"><ref bean="folderControlGroup"/></property>
@@ -81,5 +80,10 @@
</list>
</property>
<property name="targetCapability" ref="rmCreateModifyDestroyFoldersCapability"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.isClassified" value="false"/>
</map>
</property>
</bean>
</beans>

View File

@@ -137,6 +137,7 @@
<property name="freezeService" ref="freezeService"/>
<property name="recordService" ref="recordService"/>
<property name="parameterProcessorComponent" ref="parameterProcessorComponent"/>
<property name="modelSecurityService" ref="modelSecurityService" />
</bean>
<bean id="rmProxyAction"

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>();
@@ -266,6 +270,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,18 +57,6 @@ 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;

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);
@@ -71,5 +59,4 @@ public class LastDispositionActionCondition extends AbstractCapabilityCondition
}
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;
@@ -55,9 +54,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
*/
@@ -90,14 +86,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