diff --git a/config/alfresco/workflow/workflow-messages.properties b/config/alfresco/workflow/workflow-messages.properties index f73fa27f23..6de7494b68 100644 --- a/config/alfresco/workflow/workflow-messages.properties +++ b/config/alfresco/workflow/workflow-messages.properties @@ -229,3 +229,4 @@ listconstraint.wf_reviewOutcomeOptions.Reject=Reject workflowtask.outcome.Approve=Approved workflowtask.outcome.Reject=Rejected +workflowtask.already.done.error=This task has already been completed and is no longer editable. diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormPersister.java b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormPersister.java index 2e60c509b5..62f27d18d4 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormPersister.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/TaskFormPersister.java @@ -22,6 +22,7 @@ package org.alfresco.repo.forms.processor.workflow; import java.io.Serializable; import java.util.List; +import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.repo.forms.FormData.FieldData; import org.alfresco.repo.forms.processor.node.ContentModelItemData; import org.alfresco.repo.policy.BehaviourFilter; @@ -33,6 +34,7 @@ import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.security.AuthenticationService; import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.cmr.workflow.WorkflowTask; +import org.alfresco.service.cmr.workflow.WorkflowTaskState; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.apache.commons.logging.Log; @@ -58,7 +60,13 @@ public class TaskFormPersister extends ContentModelFormPersister { super(itemData, namespaceService, dictionaryService, logger); WorkflowTask item = itemData.getItem(); - + + // make sure that the task is not already completed + if (item.getState().equals(WorkflowTaskState.COMPLETED)) + { + throw new AlfrescoRuntimeException("workflowtask.already.done.error"); + } + // make sure the current user is able to edit the task if (!workflowService.isTaskEditable(item, authenticationService.getCurrentUserName())) {