From 395aa2a32a5d99fb3169bcccdeadc54bfede96c0 Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Fri, 9 Jul 2010 12:12:01 +0000 Subject: [PATCH] Integrated WorkflowFormProcessor into new Start Workflow page. WorkflowFormProcessor now also accepts 'package items' and starts the workflow with them, still limited in functionality (only description is read) as this implementation will be replaced shortly with an implementation based on the new re-factored form processors. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21031 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/form-services-context.xml | 1 + .../repo/forms/FormServiceImplTest.java | 16 ++--- .../workflow/WorkflowFormProcessor.java | 58 ++++++++++++++++++- 3 files changed, 65 insertions(+), 10 deletions(-) diff --git a/config/alfresco/form-services-context.xml b/config/alfresco/form-services-context.xml index b73c228415..ec7677b313 100644 --- a/config/alfresco/form-services-context.xml +++ b/config/alfresco/form-services-context.xml @@ -104,6 +104,7 @@ parent="filteredFormProcessor"> + diff --git a/source/java/org/alfresco/repo/forms/FormServiceImplTest.java b/source/java/org/alfresco/repo/forms/FormServiceImplTest.java index 10f94b2aea..9a11ea101e 100644 --- a/source/java/org/alfresco/repo/forms/FormServiceImplTest.java +++ b/source/java/org/alfresco/repo/forms/FormServiceImplTest.java @@ -1234,9 +1234,9 @@ public class FormServiceImplTest extends BaseAlfrescoSpringTest // a legitimate set of fields for the workflow List fields = new ArrayList(8); fields.add("bpm:taskId"); - fields.add("bpm:description"); + fields.add("bpm:workflowDescription"); fields.add("bpm:workflowDueDate"); - //fields.add("packageItems"); + fields.add("packageItems"); String workflowDefName = "jbpm$wf:adhoc"; Form form = this.formService.getForm(new Item(WORKFLOW_FORM_ITEM_KIND, workflowDefName), fields); @@ -1262,15 +1262,15 @@ public class FormServiceImplTest extends BaseAlfrescoSpringTest // find the fields PropertyFieldDefinition idField = (PropertyFieldDefinition)fieldDefMap.get("bpm:taskId"); - PropertyFieldDefinition descriptionField = (PropertyFieldDefinition)fieldDefMap.get("bpm:description"); + PropertyFieldDefinition descriptionField = (PropertyFieldDefinition)fieldDefMap.get("bpm:workflowDescription"); PropertyFieldDefinition dueDateField = (PropertyFieldDefinition)fieldDefMap.get("bpm:workflowDueDate"); - //AssociationFieldDefinition packageItemsField = (AssociationFieldDefinition)fieldDefMap.get("packageItems"); + AssociationFieldDefinition packageItemsField = (AssociationFieldDefinition)fieldDefMap.get("packageItems"); // check fields are present assertNotNull("Expecting to find the bpm:taskId field", idField); - assertNotNull("Expecting to find the bpm:description field", descriptionField); + assertNotNull("Expecting to find the bpm:workflowDescription field", descriptionField); assertNotNull("Expecting to find the bpm:workflowDueDate field", dueDateField); - //assertNotNull("Expecting to find the packageItems field", packageItemsField); + assertNotNull("Expecting to find the packageItems field", packageItemsField); // get the number of tasks now List tasks = this.workflowService.getAssignedTasks(USER_ONE, @@ -1279,10 +1279,10 @@ public class FormServiceImplTest extends BaseAlfrescoSpringTest // persist the form FormData data = new FormData(); - data.addFieldData("prop_bpm_description", "This is a new adhoc task"); + data.addFieldData("prop_bpm_workflowDescription", "This is a new adhoc task"); data.addFieldData("assoc_bpm_assignee_added", this.personService.getPerson(USER_ONE).toString()); - //data.addFieldData("packageItems_added", this.document.toString()); + data.addFieldData("assoc_packageItems_added", this.document.toString()); // persist the data WorkflowInstance workflow = (WorkflowInstance)this.formService.saveForm( diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessor.java b/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessor.java index 00da13452f..fdde815119 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessor.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormProcessor.java @@ -24,10 +24,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.alfresco.model.ContentModel; +import org.alfresco.repo.forms.AssociationFieldDefinition; import org.alfresco.repo.forms.Form; import org.alfresco.repo.forms.FormData; import org.alfresco.repo.forms.FormNotFoundException; import org.alfresco.repo.forms.Item; +import org.alfresco.repo.forms.AssociationFieldDefinition.Direction; import org.alfresco.repo.forms.processor.node.ContentModelFormProcessor; import org.alfresco.repo.workflow.WorkflowModel; import org.alfresco.service.cmr.dictionary.AspectDefinition; @@ -35,6 +38,7 @@ import org.alfresco.service.cmr.dictionary.AssociationDefinition; import org.alfresco.service.cmr.dictionary.PropertyDefinition; import org.alfresco.service.cmr.dictionary.TypeDefinition; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.workflow.WorkflowDefinition; import org.alfresco.service.cmr.workflow.WorkflowException; import org.alfresco.service.cmr.workflow.WorkflowInstance; @@ -42,9 +46,11 @@ import org.alfresco.service.cmr.workflow.WorkflowPath; 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; import org.apache.commons.logging.LogFactory; +import org.springframework.util.StringUtils; /** * Temporary FormProcessor implementation that can generate and persist @@ -57,9 +63,13 @@ public class WorkflowFormProcessor extends ContentModelFormProcessor assigneeList = new ArrayList(1); assigneeList.add(assignee); params.put(WorkflowModel.ASSOC_ASSIGNEE, assigneeList); - // TODO: add any package items + // add any package items + Object items = data.getFieldData("assoc_packageItems_added").getValue(); + if (items != null) + { + String[] nodeRefs = StringUtils.tokenizeToStringArray(items.toString(), ","); + for (int x = 0; x < nodeRefs.length; x++) + { + NodeRef item = new NodeRef(nodeRefs[x]); + this.unprotectedNodeService.addChild(workflowPackage, item, + WorkflowModel.ASSOC_PACKAGE_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, + QName.createValidLocalName((String)this.nodeService.getProperty( + item, ContentModel.PROP_NAME)))); + } + } // TODO: add any context (this could re-use alf_destination)