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">
|
<bean id="rm-ac-is-kind-kinds" class="org.alfresco.module.org_alfresco_module_rm.action.constraint.CustomParameterConstraint" parent="action-constraint">
|
||||||
<property name="parameterValues">
|
<property name="parameterValues">
|
||||||
<list>
|
<list>
|
||||||
<value>FILE_PLAN</value>
|
|
||||||
<value>RECORD_CATEGORY</value>
|
<value>RECORD_CATEGORY</value>
|
||||||
<value>RECORD_FOLDER</value>
|
<value>RECORD_FOLDER</value>
|
||||||
<value>RECORD</value>
|
<value>RECORD</value>
|
||||||
@@ -61,27 +60,31 @@
|
|||||||
parent="action-condition-evaluator"
|
parent="action-condition-evaluator"
|
||||||
abstract="true"
|
abstract="true"
|
||||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.CapabilityConditionEvaluator">
|
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>
|
||||||
|
|
||||||
<bean id="isKind"
|
<bean id="isKind"
|
||||||
parent="action-condition-evaluator"
|
parent="action-condition-evaluator"
|
||||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.IsKindEvaluator">
|
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" />
|
<property name="recordsManagementService" ref="RecordsManagementService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="hasDispositionAction"
|
<bean id="hasDispositionAction"
|
||||||
parent="action-condition-evaluator"
|
parent="action-condition-evaluator"
|
||||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.HasDispositionActionEvaluator">
|
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" />
|
<property name="dispositionService" ref="DispositionService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="isRecordType"
|
<bean id="isRecordType"
|
||||||
parent="action-condition-evaluator"
|
parent="action-condition-evaluator"
|
||||||
class="org.alfresco.module.org_alfresco_module_rm.action.evaluator.IsRecordTypeEvaluator">
|
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" />
|
<property name="nodeService" ref="NodeService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
@@ -21,6 +21,10 @@ package org.alfresco.module.org_alfresco_module_rm.action;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase;
|
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.ActionConditionDefinition;
|
||||||
import org.alfresco.service.cmr.action.ParameterDefinition;
|
import org.alfresco.service.cmr.action.ParameterDefinition;
|
||||||
import org.springframework.beans.factory.BeanNameAware;
|
import org.springframework.beans.factory.BeanNameAware;
|
||||||
@@ -44,6 +48,8 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte
|
|||||||
/** public condition */
|
/** public condition */
|
||||||
protected boolean publicCondition = true;
|
protected boolean publicCondition = true;
|
||||||
|
|
||||||
|
private RetryingTransactionHelper retryingTransactionHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param recordsManagementActionService records management action service
|
* @param recordsManagementActionService records management action service
|
||||||
*/
|
*/
|
||||||
@@ -51,7 +57,15 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte
|
|||||||
{
|
{
|
||||||
this.recordsManagementActionService = recordsManagementActionService;
|
this.recordsManagementActionService = recordsManagementActionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param retryingTransactionHelper
|
||||||
|
*/
|
||||||
|
public void setRetryingTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
|
||||||
|
{
|
||||||
|
this.retryingTransactionHelper = retryingTransactionHelper;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#init()
|
* @see org.alfresco.repo.action.evaluator.ActionConditionEvaluatorAbstractBase#init()
|
||||||
*/
|
*/
|
||||||
@@ -59,7 +73,27 @@ public abstract class RecordsManagementActionConditionEvaluatorAbstractBase exte
|
|||||||
public void init()
|
public void init()
|
||||||
{
|
{
|
||||||
// override to prevent condition being registered with the core action service
|
// 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
|
@Override
|
||||||
|
@@ -70,49 +70,52 @@ public class HasDispositionActionEvaluator extends RecordsManagementActionCondit
|
|||||||
String action = ((QName) actionCondition.getParameterValue(PARAM_DISPOSITION_ACTION)).getLocalName();
|
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 (position.equals(DispositionActionRelativePositions.ANY.toString()))
|
||||||
if (dispositionSchedule != null)
|
|
||||||
{
|
{
|
||||||
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;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -68,7 +68,7 @@ public class IsKindEvaluator extends RecordsManagementActionConditionEvaluatorAb
|
|||||||
|
|
||||||
FilePlanComponentKind filePlanComponentKind = rmService.getFilePlanComponentKind(actionedUponNodeRef);
|
FilePlanComponentKind filePlanComponentKind = rmService.getFilePlanComponentKind(actionedUponNodeRef);
|
||||||
|
|
||||||
if (filePlanComponentKind.equals(kind))
|
if (filePlanComponentKind.toString().equals(kind))
|
||||||
{
|
{
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
@@ -21,7 +21,7 @@ package org.alfresco.module.org_alfresco_module_rm.action.evaluator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionConditionEvaluatorAbstractBase;
|
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.repo.action.ParameterDefinitionImpl;
|
||||||
import org.alfresco.service.cmr.action.ActionCondition;
|
import org.alfresco.service.cmr.action.ActionCondition;
|
||||||
import org.alfresco.service.cmr.action.ParameterDefinition;
|
import org.alfresco.service.cmr.action.ParameterDefinition;
|
||||||
@@ -41,7 +41,7 @@ import org.alfresco.service.namespace.QName;
|
|||||||
/**
|
/**
|
||||||
* @author ctan
|
* @author ctan
|
||||||
*/
|
*/
|
||||||
public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvaluatorAbstractBase implements RecordsManagementModel
|
public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvaluatorAbstractBase implements DOD5015Model
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Evaluator constants
|
* Evaluator constants
|
||||||
@@ -68,7 +68,7 @@ public class IsRecordTypeEvaluator extends RecordsManagementActionConditionEvalu
|
|||||||
|
|
||||||
if (type != null)
|
if (type != null)
|
||||||
{
|
{
|
||||||
result = nodeService.hasAspect(actionedUponNodeRef, QName.createQName(RM_URI, type));
|
result = nodeService.hasAspect(actionedUponNodeRef, QName.createQName(DOD_URI, type));
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Reference in New Issue
Block a user