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)