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

View File

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

View File

@@ -26,8 +26,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; 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.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.audit.RecordsManagementAuditService;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionActionDefinition; 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.fileplan.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService; 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.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.record.RecordService;
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService; import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase; import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
@@ -121,6 +122,9 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
/** Freeze Service */ /** Freeze Service */
protected FreezeService freezeService; protected FreezeService freezeService;
/** model security service */
protected ModelSecurityService modelSecurityService;
/** List of kinds for which this action is applicable */ /** List of kinds for which this action is applicable */
protected Set<FilePlanComponentKind> applicableKinds = new HashSet<FilePlanComponentKind>(); protected Set<FilePlanComponentKind> applicableKinds = new HashSet<FilePlanComponentKind>();
@@ -265,6 +269,14 @@ public abstract class RMActionExecuterAbstractBase extends PropertySubActionExe
{ {
return recordsManagementAdminService; return recordsManagementAdminService;
} }
/**
* @param modelSecurityService model security service
*/
public void setModelSecurityService(ModelSecurityService modelSecurityService)
{
this.modelSecurityService = modelSecurityService;
}
/** /**
* @param applicableKinds kinds that this action is applicable for * @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 action = this.actionService.createAction(name);
action.setParameterValues(parameters); action.setParameterValues(parameters);
// Execute the action // disable model security whilst we execute the RM rule
this.actionService.executeAction(action, filePlanComponent); modelSecurityService.disable();
try
{
// Execute the action
actionService.executeAction(action, filePlanComponent);
}
finally
{
modelSecurityService.enable();
}
// Get the result // Get the result
Object value = action.getParameterValue(ActionExecuterAbstractBase.PARAM_RESULT); Object value = action.getParameterValue(ActionExecuterAbstractBase.PARAM_RESULT);

View File

@@ -57,21 +57,9 @@ public class IsScheduledCapabilityCondition extends AbstractCapabilityCondition
*/ */
@Override @Override
public boolean evaluate(NodeRef nodeRef) 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; boolean result = false;
DispositionAction nextDispositionAction = dispositionService.getNextDispositionAction(nodeRef); DispositionAction nextDispositionAction = dispositionService.getNextDispositionAction(nodeRef);
if (nextDispositionAction != null) if (nextDispositionAction != null)
{ {
@@ -83,7 +71,7 @@ public class IsScheduledCapabilityCondition extends AbstractCapabilityCondition
result = true; result = true;
} }
} }
return result; return result;
} }
} }

View File

@@ -49,18 +49,6 @@ public class LastDispositionActionCondition extends AbstractCapabilityCondition
*/ */
@Override @Override
public boolean evaluate(NodeRef nodeRef) 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; boolean result = false;
DispositionAction dispositionAction = dispositionService.getLastCompletedDispostionAction(nodeRef); DispositionAction dispositionAction = dispositionService.getLastCompletedDispostionAction(nodeRef);
@@ -69,7 +57,6 @@ public class LastDispositionActionCondition extends AbstractCapabilityCondition
{ {
result = true; 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.fileplan.FilePlanService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; 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.module.org_alfresco_module_rm.security.FilePlanAuthenticationService;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
@@ -54,9 +53,6 @@ public class ExtendedRuleServiceImpl extends RuleServiceImpl
/** node service */ /** node service */
protected NodeService nodeService; protected NodeService nodeService;
/** model security service */
protected ModelSecurityService modelSecurityService;
/** /**
* @param runAsRmAdmin true if run rules as rmadmin, false otherwise * @param runAsRmAdmin true if run rules as rmadmin, false otherwise
@@ -89,14 +85,6 @@ public class ExtendedRuleServiceImpl extends RuleServiceImpl
{ {
this.filePlanService = filePlanService; this.filePlanService = filePlanService;
} }
/**
* @param modelSecurityService model security service
*/
public void setModelSecurityService(ModelSecurityService modelSecurityService)
{
this.modelSecurityService = modelSecurityService;
}
/** /**
* Init method * Init method
@@ -178,34 +166,24 @@ public class ExtendedRuleServiceImpl extends RuleServiceImpl
// ignore and // ignore and
if (isIgnoredType(typeQName) == false) if (isIgnoredType(typeQName) == false)
{ {
// disable model security whilst we execute the RM rule if (runAsRmAdmin == true)
//modelSecurityService.disable(); {
//try // run as rmadmin
//{ filePlanAuthenticationService.runAsRmAdmin(new RunAsWork<Void>()
if (runAsRmAdmin == true)
{ {
// run as rmadmin @Override
filePlanAuthenticationService.runAsRmAdmin(new RunAsWork<Void>() public Void doWork() throws Exception
{ {
@Override ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules);
public Void doWork() throws Exception return null;
{ }
ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); });
return null; }
} else
}); {
} // run as current user
else ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules);
{ }
// run as current user
ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules);
}
//}
//finally
//{
// enable model security
// modelSecurityService.enable();
//}
} }
} }
else else