mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-1540: Event is displayed for record moved to category with no disposition
RM-1345: Edit Disposition Date is not working for moved items git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@74311 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -472,28 +472,33 @@ public class DispositionActionImpl implements DispositionAction,
|
||||
|
||||
if (!events.isEmpty())
|
||||
{
|
||||
if (!getDispositionActionDefinition().eligibleOnFirstCompleteEvent())
|
||||
{
|
||||
// if one event is complete then the disposition action is eligible
|
||||
eligible = true;
|
||||
for (EventCompletionDetails event : events)
|
||||
// get the disposition action definition
|
||||
DispositionActionDefinition dispositionActionDefinition = getDispositionActionDefinition();
|
||||
if (dispositionActionDefinition != null)
|
||||
{
|
||||
if (!dispositionActionDefinition.eligibleOnFirstCompleteEvent())
|
||||
{
|
||||
if (!event.isEventComplete())
|
||||
// if one event is complete then the disposition action is eligible
|
||||
eligible = true;
|
||||
for (EventCompletionDetails event : events)
|
||||
{
|
||||
eligible = false;
|
||||
break;
|
||||
if (!event.isEventComplete())
|
||||
{
|
||||
eligible = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// all events must be complete for the disposition action to be eligible
|
||||
for (EventCompletionDetails event : events)
|
||||
else
|
||||
{
|
||||
if (event.isEventComplete())
|
||||
// all events must be complete for the disposition action to be eligible
|
||||
for (EventCompletionDetails event : events)
|
||||
{
|
||||
eligible = true;
|
||||
break;
|
||||
if (event.isEventComplete())
|
||||
{
|
||||
eligible = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.model.behaviour;
|
||||
|
||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
|
||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* Abstract disposable item, containing commonality between record and record folder.
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
* @since 2.2
|
||||
*/
|
||||
public abstract class AbstractDisposableItem extends BaseBehaviourBean
|
||||
{
|
||||
/** unwanted aspects */
|
||||
protected QName[] unwantedAspects =
|
||||
{
|
||||
ASPECT_VITAL_RECORD,
|
||||
ASPECT_DISPOSITION_LIFECYCLE,
|
||||
RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH
|
||||
};
|
||||
|
||||
/** disposition service */
|
||||
protected DispositionService dispositionService;
|
||||
|
||||
/**
|
||||
* @param dispositionService disposition service
|
||||
*/
|
||||
public void setDispositionService(DispositionService dispositionService)
|
||||
{
|
||||
this.dispositionService = dispositionService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes unwanted aspects
|
||||
*
|
||||
* @param nodeService
|
||||
* @param nodeRef
|
||||
*/
|
||||
protected void cleanDisposableItem(NodeService nodeService, NodeRef nodeRef)
|
||||
{
|
||||
// Remove unwanted aspects
|
||||
for (QName aspect : unwantedAspects)
|
||||
{
|
||||
if (nodeService.hasAspect(nodeRef, aspect))
|
||||
{
|
||||
nodeService.removeAspect(nodeRef, aspect);
|
||||
}
|
||||
}
|
||||
|
||||
// remove the current disposition action (if there is one)
|
||||
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(nodeRef);
|
||||
if (dispositionAction != null)
|
||||
{
|
||||
nodeService.deleteNode(dispositionAction.getNodeRef());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -25,9 +25,9 @@ import java.util.Set;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementCustomModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.RecordsManagementSearchBehaviour;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.AbstractDisposableItem;
|
||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService;
|
||||
import org.alfresco.repo.copy.CopyBehaviourCallback;
|
||||
import org.alfresco.repo.copy.CopyDetails;
|
||||
@@ -54,7 +54,7 @@ import org.alfresco.service.namespace.QName;
|
||||
(
|
||||
defaultType = "rma:record"
|
||||
)
|
||||
public class RecordAspect extends BaseBehaviourBean
|
||||
public class RecordAspect extends AbstractDisposableItem
|
||||
implements NodeServicePolicies.OnCreateChildAssociationPolicy,
|
||||
RecordsManagementPolicies.OnCreateReference,
|
||||
RecordsManagementPolicies.OnRemoveReference,
|
||||
@@ -69,6 +69,9 @@ public class RecordAspect extends BaseBehaviourBean
|
||||
|
||||
/** script service */
|
||||
protected ScriptService scriptService;
|
||||
|
||||
/** record service */
|
||||
protected RecordService recordService;
|
||||
|
||||
/**
|
||||
* @param extendedSecurityService extended security service
|
||||
@@ -85,6 +88,14 @@ public class RecordAspect extends BaseBehaviourBean
|
||||
{
|
||||
this.scriptService = scriptService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param recordService record service
|
||||
*/
|
||||
public void setRecordService(RecordService recordService)
|
||||
{
|
||||
this.recordService = recordService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Behaviour to ensure renditions have the appropriate extended security.
|
||||
@@ -219,15 +230,18 @@ public class RecordAspect extends BaseBehaviourBean
|
||||
// check the records parent has actually changed
|
||||
if (!oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef()))
|
||||
{
|
||||
final NodeRef newNodeRef = newChildAssocRef.getChildRef();
|
||||
final NodeRef record = newChildAssocRef.getChildRef();
|
||||
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>()
|
||||
{
|
||||
public Object doWork()
|
||||
{
|
||||
if (nodeService.exists(newNodeRef))
|
||||
if (nodeService.exists(record))
|
||||
{
|
||||
// only remove the search details .. the rest will be resolved automatically
|
||||
nodeService.removeAspect(newNodeRef, RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH);
|
||||
// clean record
|
||||
cleanDisposableItem(nodeService, record);
|
||||
|
||||
// re-file in the new folder
|
||||
recordService.file(record);
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -239,10 +253,10 @@ public class RecordAspect extends BaseBehaviourBean
|
||||
/**
|
||||
* Executes a reference script if present
|
||||
*
|
||||
* @param policy
|
||||
* @param reference
|
||||
* @param from
|
||||
* @param to
|
||||
* @param policy policy
|
||||
* @param reference reference
|
||||
* @param from reference from
|
||||
* @param to reference to
|
||||
*/
|
||||
private void executeReferenceScript(String policy, QName reference, NodeRef from, NodeRef to)
|
||||
{
|
||||
|
@@ -22,10 +22,7 @@ import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionAction;
|
||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.RecordsManagementSearchBehaviour;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.behaviour.AbstractDisposableItem;
|
||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService;
|
||||
@@ -41,7 +38,6 @@ import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
|
||||
@@ -55,27 +51,16 @@ import org.apache.commons.lang.ArrayUtils;
|
||||
(
|
||||
defaultType = "rma:recordFolder"
|
||||
)
|
||||
public class RecordFolderType extends BaseBehaviourBean
|
||||
public class RecordFolderType extends AbstractDisposableItem
|
||||
implements NodeServicePolicies.OnMoveNodePolicy,
|
||||
NodeServicePolicies.OnCreateChildAssociationPolicy
|
||||
{
|
||||
/** unwanted aspects */
|
||||
private QName[] unwantedAspects =
|
||||
{
|
||||
ASPECT_VITAL_RECORD,
|
||||
ASPECT_DISPOSITION_LIFECYCLE,
|
||||
RecordsManagementSearchBehaviour.ASPECT_RM_SEARCH
|
||||
};
|
||||
|
||||
/** record service */
|
||||
private RecordService recordService;
|
||||
|
||||
/** record folder service */
|
||||
private RecordFolderService recordFolderService;
|
||||
|
||||
/** disposition service */
|
||||
private DispositionService dispositionService;
|
||||
|
||||
/** vital record service */
|
||||
protected VitalRecordService vitalRecordService;
|
||||
|
||||
@@ -95,14 +80,6 @@ public class RecordFolderType extends BaseBehaviourBean
|
||||
this.recordFolderService = recordFolderService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param dispositionService disposition service
|
||||
*/
|
||||
public void setDispositionService(DispositionService dispositionService)
|
||||
{
|
||||
this.dispositionService = dispositionService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param vitalRecordService vital record service
|
||||
*/
|
||||
@@ -273,29 +250,4 @@ public class RecordFolderType extends BaseBehaviourBean
|
||||
behaviourFilter.enableBehaviour();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes unwanted aspects
|
||||
*
|
||||
* @param nodeService
|
||||
* @param nodeRef
|
||||
*/
|
||||
private void cleanDisposableItem(NodeService nodeService, NodeRef nodeRef)
|
||||
{
|
||||
// Remove unwanted aspects
|
||||
for (QName aspect : unwantedAspects)
|
||||
{
|
||||
if (nodeService.hasAspect(nodeRef, aspect))
|
||||
{
|
||||
nodeService.removeAspect(nodeRef, aspect);
|
||||
}
|
||||
}
|
||||
|
||||
// remove the current disposition action (if there is one)
|
||||
DispositionAction dispositionAction = dispositionService.getNextDispositionAction(nodeRef);
|
||||
if (dispositionAction != null)
|
||||
{
|
||||
nodeService.deleteNode(dispositionAction.getNodeRef());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user