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:
Craig Tan
2013-07-02 00:35:23 +00:00
parent 1e4c4b1c90
commit 4500028a1c
5 changed files with 84 additions and 44 deletions

View File

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

View File

@@ -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
*/
@@ -52,6 +58,14 @@ 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

View File

@@ -70,6 +70,9 @@ public class HasDispositionActionEvaluator extends RecordsManagementActionCondit
String action = ((QName) actionCondition.getParameterValue(PARAM_DISPOSITION_ACTION)).getLocalName();
if (dispositionService.isDisposableItem(actionedUponNodeRef) == true)
{
if (position.equals(DispositionActionRelativePositions.ANY.toString()))
{
@@ -112,7 +115,7 @@ public class HasDispositionActionEvaluator extends RecordsManagementActionCondit
}
}
}
}
return result;
}

View File

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

View File

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