Update disposition schedule action for a record when linking or unlinking it.

This commit is contained in:
roxana
2016-10-31 12:18:34 +02:00
parent 8d4a2178de
commit adc144e971
4 changed files with 38 additions and 3 deletions

View File

@@ -142,6 +142,7 @@
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.updateDispositionActionDefinition=RM_ALLOW org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.updateDispositionActionDefinition=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.isNextDispositionActionEligible=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.isNextDispositionActionEligible=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.getNextDispositionAction=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.getNextDispositionAction=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.updateDispositionWhenLinkingOrUnlinking=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.getCompletedDispositionActions=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.getCompletedDispositionActions=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.getLastCompletedDispostionAction=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.getLastCompletedDispostionAction=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.isDisposableItemCutoff=RM.Read.0 org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService.isDisposableItemCutoff=RM.Read.0

View File

@@ -264,4 +264,12 @@ public interface DispositionService
* @return the initial disposition * @return the initial disposition
*/ */
DispositionSchedule getOriginDispositionSchedule(NodeRef nodeRef); DispositionSchedule getOriginDispositionSchedule(NodeRef nodeRef);
/**
* Updates disposition action step when linking or unlinking
* the given record to/from a record folder
*
* @param record
*/
void updateDispositionWhenLinkingOrUnlinking(NodeRef record);
} }

View File

@@ -1094,6 +1094,26 @@ public class DispositionServiceImpl extends ServiceBaseImpl
} }
return null; return null;
} }
public void updateDispositionWhenLinkingOrUnlinking(NodeRef record)
{
List<NodeRef> recordFolders = recordFolderService.getRecordFolders(record);
DispositionAction nextDispositionAction = getNextDispositionAction(record);
NextActionFromDisposition dsNextAction = getNextDispositionAction(record, recordFolders, nextDispositionAction);
final NodeRef action = dsNextAction.getNextActionNodeRef();
final Date dispositionActionDate = dsNextAction.getNextActionDateAsOf();
AuthenticationUtil.runAsSystem(new RunAsWork<Void>()
{
@Override
public Void doWork()
{
nodeService.setProperty(action, PROP_DISPOSITION_AS_OF, dispositionActionDate);
return null;
}
});
}
/** /**
* Helper method to determine if a node is frozen or has frozen children * Helper method to determine if a node is frozen or has frozen children

View File

@@ -34,14 +34,12 @@ import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeFileRecord; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeFileRecord;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnFileRecord; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnFileRecord;
import org.alfresco.module.org_alfresco_module_rm.capability.Capability; import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService; import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionScheduleImpl;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model;
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
@@ -547,6 +545,8 @@ public class RecordServiceImpl extends BaseBehaviourBean
// create and file the content as a record // create and file the content as a record
file(nodeRef); file(nodeRef);
// recalculate disposition schedule for the record when linking it
dispositionService.updateDispositionWhenLinkingOrUnlinking(nodeRef);
} }
} }
} }
@@ -1695,7 +1695,7 @@ public class RecordServiceImpl extends BaseBehaviourBean
// ensure we are linking a record to a record folder // ensure we are linking a record to a record folder
if(isRecord(record) && isRecordFolder(recordFolder)) if(isRecord(record) && isRecordFolder(recordFolder))
{ {
// ensure that we are not linking a record to an exisiting location // ensure that we are not linking a record to an existing location
List<ChildAssociationRef> parents = nodeService.getParentAssocs(record); List<ChildAssociationRef> parents = nodeService.getParentAssocs(record);
for (ChildAssociationRef parent : parents) for (ChildAssociationRef parent : parents)
{ {
@@ -1718,6 +1718,9 @@ public class RecordServiceImpl extends BaseBehaviourBean
record, record,
ContentModel.ASSOC_CONTAINS, ContentModel.ASSOC_CONTAINS,
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, name)); QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, name));
// recalculate disposition schedule for the record when linking it
dispositionService.updateDispositionWhenLinkingOrUnlinking(record);
} }
else else
{ {
@@ -1774,6 +1777,9 @@ public class RecordServiceImpl extends BaseBehaviourBean
// remove the link // remove the link
nodeService.removeChild(recordFolder, record); nodeService.removeChild(recordFolder, record);
// recalculate disposition schedule for record after unlinking it
dispositionService.updateDispositionWhenLinkingOrUnlinking(record);
} }
else else
{ {