mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -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>
|
@@ -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"
|
||||||
|
@@ -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);
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user