mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
TaskFormProcessor now displays package items correctly.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21379 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -26,13 +26,15 @@
|
|||||||
package org.alfresco.repo.forms.processor.workflow;
|
package org.alfresco.repo.forms.processor.workflow;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Collections;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.repo.forms.processor.FieldProcessorRegistry;
|
import org.alfresco.repo.forms.processor.FieldProcessorRegistry;
|
||||||
import org.alfresco.repo.forms.processor.node.ItemData;
|
import org.alfresco.repo.forms.processor.node.ItemData;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowTask;
|
import org.alfresco.service.cmr.workflow.WorkflowTask;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowTransition;
|
import org.alfresco.service.cmr.workflow.WorkflowTransition;
|
||||||
@@ -40,6 +42,7 @@ import org.alfresco.service.namespace.NamespaceService;
|
|||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Nick Smith
|
* @author Nick Smith
|
||||||
@@ -133,11 +136,29 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessor<WorkflowTas
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Map<String, Object> getTransientValues(WorkflowTask item)
|
protected Map<String, Object> getTransientValues(WorkflowTask item)
|
||||||
|
{
|
||||||
|
Map<String, Object> values = new HashMap<String, Object>(2);
|
||||||
|
values.put(TransitionFieldProcessor.KEY, getTransitionValues(item));
|
||||||
|
values.put(PackageItemsFieldProcessor.KEY, getPackageItemValues(item));
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param item
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Object getPackageItemValues(WorkflowTask item)
|
||||||
|
{
|
||||||
|
List<NodeRef> items = workflowService.getPackageContents(item.getId());
|
||||||
|
return StringUtils.collectionToCommaDelimitedString(items);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getTransitionValues(WorkflowTask item)
|
||||||
{
|
{
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
WorkflowTransition[] transitions = item.definition.node.transitions;
|
WorkflowTransition[] transitions = item.definition.node.transitions;
|
||||||
if(transitions == null)
|
if(transitions == null)
|
||||||
return Collections.<String, Object>singletonMap(TransitionFieldProcessor.KEY, "");
|
return "";
|
||||||
for (WorkflowTransition transition : transitions)
|
for (WorkflowTransition transition : transitions)
|
||||||
{
|
{
|
||||||
builder.append(transition.getId());
|
builder.append(transition.getId());
|
||||||
@@ -146,8 +167,7 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessor<WorkflowTas
|
|||||||
builder.append(",");
|
builder.append(",");
|
||||||
}
|
}
|
||||||
builder.deleteCharAt(builder.length()-1);
|
builder.deleteCharAt(builder.length()-1);
|
||||||
String values = builder.toString();
|
return builder.toString();
|
||||||
return Collections.<String, Object>singletonMap(TransitionFieldProcessor.KEY, values);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@@ -87,6 +87,8 @@ public class TaskFormProcessorTest extends TestCase
|
|||||||
private static final QName ASSIGNEE_NAME = WorkflowModel.ASSOC_ASSIGNEE;
|
private static final QName ASSIGNEE_NAME = WorkflowModel.ASSOC_ASSIGNEE;
|
||||||
private static final QName ASSOC_WITH_ = QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "some_assoc");
|
private static final QName ASSOC_WITH_ = QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "some_assoc");
|
||||||
private static final NodeRef FAKE_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode");
|
private static final NodeRef FAKE_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode");
|
||||||
|
private static final NodeRef FAKE_NODE2 = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode2");
|
||||||
|
private static final NodeRef FAKE_NODE3 = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakeNode3");
|
||||||
private static final NodeRef PCKG_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakePackage");
|
private static final NodeRef PCKG_NODE = new NodeRef(NamespaceService.BPM_MODEL_1_0_URI + "/FakePackage");
|
||||||
|
|
||||||
private WorkflowService workflowService;
|
private WorkflowService workflowService;
|
||||||
@@ -194,15 +196,15 @@ public class TaskFormProcessorTest extends TestCase
|
|||||||
{
|
{
|
||||||
Form form = processForm();
|
Form form = processForm();
|
||||||
List<String> fieldDefs = form.getFieldDefinitionNames();
|
List<String> fieldDefs = form.getFieldDefinitionNames();
|
||||||
assertEquals(9, fieldDefs.size());
|
|
||||||
assertTrue(fieldDefs.contains(ASSIGNEE_NAME.toPrefixString(namespaceService)));
|
assertTrue(fieldDefs.contains(ASSIGNEE_NAME.toPrefixString(namespaceService)));
|
||||||
assertTrue(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService)));
|
assertTrue(fieldDefs.contains(ACTORS_NAME.toPrefixString(namespaceService)));
|
||||||
assertTrue(fieldDefs.contains(DESC_NAME.toPrefixString(namespaceService)));
|
assertTrue(fieldDefs.contains(DESC_NAME.toPrefixString(namespaceService)));
|
||||||
assertTrue(fieldDefs.contains(STATUS_NAME.toPrefixString(namespaceService)));
|
assertTrue(fieldDefs.contains(STATUS_NAME.toPrefixString(namespaceService)));
|
||||||
|
assertTrue(fieldDefs.contains(PackageItemsFieldProcessor.KEY));
|
||||||
|
assertTrue(fieldDefs.contains(TransitionFieldProcessor.KEY));
|
||||||
|
|
||||||
Serializable fieldData = (Serializable) Arrays.asList(FAKE_NODE.toString());
|
Serializable fieldData = (Serializable) Arrays.asList(FAKE_NODE.toString());
|
||||||
FormData formData = form.getFormData();
|
FormData formData = form.getFormData();
|
||||||
assertEquals(7, formData.getNumberOfFields());
|
|
||||||
assertEquals(fieldData, formData.getFieldData("assoc_bpm_assignee").getValue());
|
assertEquals(fieldData, formData.getFieldData("assoc_bpm_assignee").getValue());
|
||||||
checkPackageActionGroups(formData);
|
checkPackageActionGroups(formData);
|
||||||
assertEquals(WorkflowTaskState.IN_PROGRESS, formData.getFieldData("prop_bpm_status").getValue());
|
assertEquals(WorkflowTaskState.IN_PROGRESS, formData.getFieldData("prop_bpm_status").getValue());
|
||||||
@@ -229,6 +231,25 @@ public class TaskFormProcessorTest extends TestCase
|
|||||||
checkSingleProperty(form, fieldName, transitionValues);
|
checkSingleProperty(form, fieldName, transitionValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testGeneratePackageItems() throws Exception
|
||||||
|
{
|
||||||
|
// Check empty package
|
||||||
|
String fieldName = PackageItemsFieldProcessor.KEY;
|
||||||
|
Form form = processForm(fieldName);
|
||||||
|
String packageItems = "";
|
||||||
|
checkSingleAssociation(form, fieldName, packageItems);
|
||||||
|
|
||||||
|
// Effectively add 3 items to package.
|
||||||
|
List<NodeRef> value = Arrays.asList(FAKE_NODE, FAKE_NODE2, FAKE_NODE3);
|
||||||
|
when(workflowService.getPackageContents(TASK_ID))
|
||||||
|
.thenReturn(value);
|
||||||
|
|
||||||
|
form = processForm(fieldName);
|
||||||
|
packageItems = FAKE_NODE+","+FAKE_NODE2+","+FAKE_NODE3;
|
||||||
|
checkSingleAssociation(form, fieldName, packageItems);
|
||||||
|
}
|
||||||
|
|
||||||
private WorkflowTransition makeTransition(String id, String title)
|
private WorkflowTransition makeTransition(String id, String title)
|
||||||
{
|
{
|
||||||
WorkflowTransition transition = new WorkflowTransition();
|
WorkflowTransition transition = new WorkflowTransition();
|
||||||
@@ -312,11 +333,6 @@ public class TaskFormProcessorTest extends TestCase
|
|||||||
assertTrue(nodeRefs.contains(new NodeRef(nodeRef2)));
|
assertTrue(nodeRefs.contains(new NodeRef(nodeRef2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testPackageItems() throws Exception
|
|
||||||
{
|
|
||||||
//TODO Implement test.
|
|
||||||
}
|
|
||||||
|
|
||||||
private void processPersist(String dataKey, String value)
|
private void processPersist(String dataKey, String value)
|
||||||
{
|
{
|
||||||
FormData data = new FormData();
|
FormData data = new FormData();
|
||||||
|
Reference in New Issue
Block a user