mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-694 A records manager has the following list of available rule conditions
More check-in for bug fixes from developer test. * Fixed issues for "Has Disposition Action", "Is Kind" and "Is Record Type". * Added transaction or security context around the contents in RecordsManagementActionConditionEvaluatorAbstractBase.init() so that action conditions can use RecordsManagementActionService (the capitalised one) in Spring config. * Removed "File Plan" from Is Kind action condition dropdown list selection. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@51941 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
<bean id="rm-ac-is-kind-kinds" class="org.alfresco.module.org_alfresco_module_rm.action.constraint.CustomParameterConstraint" parent="action-constraint">
|
||||
<property name="parameterValues">
|
||||
<list>
|
||||
<value>FILE_PLAN</value>
|
||||
<value>RECORD_CATEGORY</value>
|
||||
<value>RECORD_FOLDER</value>
|
||||
<value>RECORD</value>
|
||||
@@ -61,27 +60,31 @@
|
||||
parent="action-condition-evaluator"
|
||||
abstract="true"
|
||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.CapabilityConditionEvaluator">
|
||||
<property name="recordsManagementActionService" ref="recordsManagementActionService" />
|
||||
<property name="recordsManagementActionService" ref="RecordsManagementActionService" />
|
||||
<property name="retryingTransactionHelper" ref="retryingTransactionHelper" />
|
||||
</bean>
|
||||
|
||||
<bean id="isKind"
|
||||
parent="action-condition-evaluator"
|
||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.IsKindEvaluator">
|
||||
<property name="recordsManagementActionService" ref="recordsManagementActionService" />
|
||||
<property name="recordsManagementActionService" ref="RecordsManagementActionService" />
|
||||
<property name="retryingTransactionHelper" ref="retryingTransactionHelper" />
|
||||
<property name="recordsManagementService" ref="RecordsManagementService" />
|
||||
</bean>
|
||||
|
||||
<bean id="hasDispositionAction"
|
||||
parent="action-condition-evaluator"
|
||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.HasDispositionActionEvaluator">
|
||||
<property name="recordsManagementActionService" ref="recordsManagementActionService" />
|
||||
<property name="recordsManagementActionService" ref="RecordsManagementActionService" />
|
||||
<property name="retryingTransactionHelper" ref="retryingTransactionHelper" />
|
||||
<property name="dispositionService" ref="DispositionService" />
|
||||
</bean>
|
||||
|
||||
<bean id="isRecordType"
|
||||
parent="action-condition-evaluator"
|
||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.IsRecordTypeEvaluator">
|
||||
<property name="recordsManagementActionService" ref="recordsManagementActionService" />
|
||||
<property name="recordsManagementActionService" ref="RecordsManagementActionService" />
|
||||
<property name="retryingTransactionHelper" ref="retryingTransactionHelper" />
|
||||
<property name="nodeService" ref="NodeService" />
|
||||
</bean>
|
||||
|
||||
|
@@ -21,6 +21,10 @@ package org.alfresco.module.org_alfresco_module_rm.action;
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
||||
import org.alfresco.service.cmr.action.ActionConditionDefinition;
|
||||
import org.alfresco.service.cmr.action.ParameterDefinition;
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
@@ -44,6 +48,8 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte
|
||||
/** public condition */
|
||||
protected boolean publicCondition = true;
|
||||
|
||||
private RetryingTransactionHelper retryingTransactionHelper;
|
||||
|
||||
/**
|
||||
* @param recordsManagementActionService records management action service
|
||||
*/
|
||||
@@ -51,7 +57,15 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte
|
||||
{
|
||||
this.recordsManagementActionService = recordsManagementActionService;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param retryingTransactionHelper
|
||||
*/
|
||||
public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
|
||||
{
|
||||
this.retryingTransactionHelper = retryingTransactionHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#init()
|
||||
*/
|
||||
@@ -59,7 +73,27 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte
|
||||
public void init()
|
||||
{
|
||||
// override to prevent condition being registered with the core action service
|
||||
recordsManagementActionService.register(this);
|
||||
|
||||
// run the following code as System
|
||||
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||
{
|
||||
public Object doWork()
|
||||
{
|
||||
RetryingTransactionCallback<Void> callback = new RetryingTransactionCallback<Void>()
|
||||
{
|
||||
public Void execute() throws Throwable
|
||||
{
|
||||
recordsManagementActionService.register(RecordsManagementActionConditionEvaluatorAbstractBase.this);
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
retryingTransactionHelper.doInTransaction(callback);
|
||||
return null;
|
||||
}
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -70,49 +70,52 @@ public class HasDispositionActionEvaluator extends RecordsManagementActionCondit
|
||||
String action = ((QName) actionCondition.getParameterValue(PARAM_DISPOSITION_ACTION)).getLocalName();
|
||||
|
||||
|
||||
if (position.equals(DispositionActionRelativePositions.ANY.toString()))
|
||||
if (dispositionService.isDisposableItem(actionedUponNodeRef) == true)
|
||||
{
|
||||
|
||||
DispositionSchedule dispositionSchedule = dispositionService.getDispositionSchedule(actionedUponNodeRef);
|
||||
if (dispositionSchedule != null)
|
||||
if (position.equals(DispositionActionRelativePositions.ANY.toString()))
|
||||
{
|
||||
for (DispositionActionDefinition dispositionActionDefinition : dispositionSchedule.getDispositionActionDefinitions())
|
||||
|
||||
DispositionSchedule dispositionSchedule = dispositionService.getDispositionSchedule(actionedUponNodeRef);
|
||||
if (dispositionSchedule != null)
|
||||
{
|
||||
if (dispositionActionDefinition.getName().equals(action) == true)
|
||||
for (DispositionActionDefinition dispositionActionDefinition : dispositionSchedule.getDispositionActionDefinitions())
|
||||
{
|
||||
if (dispositionActionDefinition.getName().equals(action) == true)
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (position.equals(DispositionActionRelativePositions.NEXT.toString()))
|
||||
{
|
||||
DispositionAction nextDispositionAction = dispositionService.getNextDispositionAction(actionedUponNodeRef);
|
||||
if (nextDispositionAction != null)
|
||||
{
|
||||
// Get the disposition actions name
|
||||
String actionName = nextDispositionAction.getName();
|
||||
if (actionName.equals(action) == true)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (position.equals(DispositionActionRelativePositions.PREVIOUS.toString()))
|
||||
{
|
||||
DispositionAction lastCompletedDispositionAction = dispositionService.getLastCompletedDispostionAction(actionedUponNodeRef);
|
||||
if (lastCompletedDispositionAction != null)
|
||||
{
|
||||
// Get the disposition actions name
|
||||
String actionName = lastCompletedDispositionAction.getName();
|
||||
if (actionName.equals(action) == true)
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (position.equals(DispositionActionRelativePositions.NEXT.toString()))
|
||||
{
|
||||
DispositionAction nextDispositionAction = dispositionService.getNextDispositionAction(actionedUponNodeRef);
|
||||
if (nextDispositionAction != null)
|
||||
{
|
||||
// Get the disposition actions name
|
||||
String actionName = nextDispositionAction.getName();
|
||||
if (actionName.equals(action) == true)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (position.equals(DispositionActionRelativePositions.PREVIOUS.toString()))
|
||||
{
|
||||
DispositionAction lastCompletedDispositionAction = dispositionService.getLastCompletedDispostionAction(actionedUponNodeRef);
|
||||
if (lastCompletedDispositionAction != null)
|
||||
{
|
||||
// Get the disposition actions name
|
||||
String actionName = lastCompletedDispositionAction.getName();
|
||||
if (actionName.equals(action) == true)
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@@ -68,7 +68,7 @@ public class IsKindEvaluator extends RecordsManagementActionConditionEvaluatorAb
|
||||
|
||||
FilePlanComponentKind filePlanComponentKind = rmService.getFilePlanComponentKind(actionedUponNodeRef);
|
||||
|
||||
if (filePlanComponentKind.equals(kind))
|
||||
if (filePlanComponentKind.toString().equals(kind))
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.action.evaluator;
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionConditionEvaluatorAbstractBase;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model;
|
||||
import org.alfresco.repo.action.ParameterDefinitionImpl;
|
||||
import org.alfresco.service.cmr.action.ActionCondition;
|
||||
import org.alfresco.service.cmr.action.ParameterDefinition;
|
||||
@@ -41,7 +41,7 @@ import org.alfresco.service.namespace.QName;
|
||||
/**
|
||||
* @author ctan
|
||||
*/
|
||||
public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvaluatorAbstractBase implements RecordsManagementModel
|
||||
public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvaluatorAbstractBase implements DOD5015Model
|
||||
{
|
||||
/**
|
||||
* Evaluator constants
|
||||
@@ -68,7 +68,7 @@ public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvalu
|
||||
|
||||
if (type != null)
|
||||
{
|
||||
result = nodeService.hasAspect(actionedUponNodeRef, QName.createQName(RM_URI, type));
|
||||
result = nodeService.hasAspect(actionedUponNodeRef, QName.createQName(DOD_URI, type));
|
||||
}
|
||||
|
||||
return result;
|
||||
|
Reference in New Issue
Block a user