mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Added ability to hide transitions on TaskFormProcessor.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21412 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -32,8 +32,10 @@ import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.forms.AssociationFieldDefinition.Direction;
|
||||
import org.alfresco.repo.forms.FormData.FieldData;
|
||||
import org.alfresco.repo.forms.PropertyFieldDefinition.FieldConstraint;
|
||||
import org.alfresco.repo.forms.processor.node.FormFieldConstants;
|
||||
import org.alfresco.repo.forms.processor.node.TypeFormProcessor;
|
||||
import org.alfresco.repo.jscript.ClasspathScriptLocation;
|
||||
import org.alfresco.repo.workflow.WorkflowModel;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.repository.ContentData;
|
||||
import org.alfresco.service.cmr.repository.ContentReader;
|
||||
@@ -44,7 +46,9 @@ import org.alfresco.service.cmr.repository.ScriptLocation;
|
||||
import org.alfresco.service.cmr.repository.ScriptService;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
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;
|
||||
@@ -1241,6 +1245,62 @@ public class FormServiceImplTest extends BaseAlfrescoSpringTest
|
||||
assertEquals(1, assocs.size());
|
||||
}
|
||||
|
||||
public void testGetFormForTask() throws Exception
|
||||
{
|
||||
WorkflowTask task = getWorkflowTask();
|
||||
Item item = new Item("task", task.id);
|
||||
|
||||
Form form = formService.getForm(item);
|
||||
assertNotNull(form);
|
||||
assertEquals(item.getKind(), form.getItem().getKind());
|
||||
assertEquals(item.getId(), form.getItem().getId());
|
||||
List<String> fieldDefNames = form.getFieldDefinitionNames();
|
||||
assertTrue(fieldDefNames.size() > 0);
|
||||
|
||||
List<String> expFields = getExpectedTaskFields();
|
||||
assertTrue(fieldDefNames.containsAll(expFields));
|
||||
}
|
||||
|
||||
public void testSaveTask() throws Exception
|
||||
{
|
||||
WorkflowTask task = getWorkflowTask();
|
||||
QName descName = WorkflowModel.PROP_DESCRIPTION;
|
||||
Serializable initialDesc = task.properties.get(descName);
|
||||
String testDesc = "Foo-Bar-Test-String";
|
||||
assertFalse(testDesc.equals(initialDesc));
|
||||
|
||||
Item item = new Item("task", task.id);
|
||||
FormData data = new FormData();
|
||||
String descFieldName = FormFieldConstants.PROP_DATA_PREFIX
|
||||
+ descName.toPrefixString(namespaceService).replace(":", "_");
|
||||
data.addFieldData(descFieldName, testDesc, true);
|
||||
formService.saveForm(item, data);
|
||||
|
||||
WorkflowTask newTask = workflowService.getTaskById(task.id);
|
||||
assertEquals(testDesc, newTask.properties.get(descName));
|
||||
}
|
||||
|
||||
private WorkflowTask getWorkflowTask()
|
||||
{
|
||||
WorkflowDefinition reviewDef = workflowService.getDefinitionByName("jbpm$wf:review");
|
||||
WorkflowPath path = workflowService.startWorkflow(reviewDef.id, null);
|
||||
List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.id);
|
||||
assertNotNull(tasks);
|
||||
assertTrue(tasks.size() > 0);
|
||||
WorkflowTask task = tasks.get(0);
|
||||
return task;
|
||||
}
|
||||
|
||||
private List<String> getExpectedTaskFields()
|
||||
{
|
||||
ArrayList<String> fields = new ArrayList<String>(4);
|
||||
fields.add(WorkflowModel.PROP_DESCRIPTION.toPrefixString(namespaceService));
|
||||
fields.add(WorkflowModel.PROP_STATUS.toPrefixString(namespaceService));
|
||||
fields.add(WorkflowModel.PROP_PACKAGE_ACTION_GROUP.toPrefixString(namespaceService));
|
||||
fields.add(ContentModel.PROP_OWNER.toPrefixString(namespaceService));
|
||||
return fields;
|
||||
}
|
||||
|
||||
public void testWorkflowForm() throws Exception
|
||||
{
|
||||
// generate a form for a well known workflow-definition supplying
|
||||
|
@@ -161,7 +161,10 @@ public class PackageManager
|
||||
*/
|
||||
public void update(final NodeRef packageRef)
|
||||
{
|
||||
AuthenticationUtil.runAs(new RunAsWork<Void>()
|
||||
if(addItems.isEmpty() && removeItems.isEmpty())
|
||||
return;
|
||||
|
||||
AuthenticationUtil.runAs(new RunAsWork<Void>()
|
||||
{
|
||||
public Void doWork() throws Exception
|
||||
{
|
||||
@@ -180,9 +183,12 @@ public class PackageManager
|
||||
|
||||
private void checkPackage(NodeRef packageRef)
|
||||
{
|
||||
boolean isPackage = nodeService.hasAspect(packageRef, PCKG_ASPECT);
|
||||
if(isPackage == false)
|
||||
throw new WorkflowException("The package NodeRef must implement the aspect: " + PCKG_ASPECT);
|
||||
if(packageRef == null
|
||||
|| nodeService.hasAspect(packageRef, PCKG_ASPECT)==false )
|
||||
{
|
||||
String msg = "The package NodeRef must implement the aspect: " + PCKG_ASPECT;
|
||||
throw new WorkflowException(msg);
|
||||
}
|
||||
}
|
||||
|
||||
private void removePackageItems(NodeRef packageRef)
|
||||
|
@@ -26,12 +26,14 @@
|
||||
package org.alfresco.repo.forms.processor.workflow;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.repo.forms.processor.FieldProcessorRegistry;
|
||||
import org.alfresco.repo.forms.processor.node.ItemData;
|
||||
import org.alfresco.repo.workflow.WorkflowModel;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
@@ -155,21 +157,42 @@ public class TaskFormProcessor extends AbstractWorkflowFormProcessor<WorkflowTas
|
||||
|
||||
private String getTransitionValues(WorkflowTask item)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
WorkflowTransition[] transitions = item.definition.node.transitions;
|
||||
if(transitions == null)
|
||||
if(transitions == null || transitions.length == 0)
|
||||
return "";
|
||||
return buildTransitionString(item, transitions);
|
||||
}
|
||||
|
||||
private String buildTransitionString(WorkflowTask item, WorkflowTransition[] transitions)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
List<?> hiddenStr = getHiddenTransitions(item);
|
||||
for (WorkflowTransition transition : transitions)
|
||||
{
|
||||
builder.append(transition.getId());
|
||||
builder.append("|");
|
||||
builder.append(transition.getTitle());
|
||||
builder.append(",");
|
||||
String transId = transition.getId();
|
||||
if(hiddenStr.contains(transId) == false)
|
||||
{
|
||||
builder.append(transId);
|
||||
builder.append("|");
|
||||
builder.append(transition.getTitle());
|
||||
builder.append(",");
|
||||
}
|
||||
}
|
||||
builder.deleteCharAt(builder.length()-1);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<String> getHiddenTransitions(WorkflowTask task)
|
||||
{
|
||||
Serializable hiddenValues = task.getProperties().get(WorkflowModel.PROP_HIDDEN_TRANSITIONS);
|
||||
if(hiddenValues!=null && hiddenValues instanceof List<?>)
|
||||
{
|
||||
return (List<String>) hiddenValues;
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.forms.processor.workflow.AbstractWorkflowFormProcessor#makeFormPersister(java.lang.Object)
|
||||
*/
|
||||
|
@@ -38,6 +38,7 @@ import static org.mockito.Mockito.when;
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -230,8 +231,12 @@ public class TaskFormProcessorTest extends TestCase
|
||||
task.definition.node = new WorkflowNode();
|
||||
task.definition.node.transitions = transitions;
|
||||
|
||||
// Hide transition with id3.
|
||||
Serializable hiddenValue = (Serializable) Collections.singletonList("id3");
|
||||
task.properties.put(WorkflowModel.PROP_HIDDEN_TRANSITIONS, hiddenValue );
|
||||
|
||||
form = processForm(fieldName);
|
||||
transitionValues = "id1|title1,id2|title2,id3|title3";
|
||||
transitionValues = "id1|title1,id2|title2";
|
||||
checkSingleProperty(form, fieldName, transitionValues);
|
||||
}
|
||||
|
||||
|
@@ -116,6 +116,7 @@ public class PermissionServiceNOOPImpl
|
||||
*/
|
||||
public void deletePermissions(NodeRef nodeRef)
|
||||
{
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -123,6 +124,7 @@ public class PermissionServiceNOOPImpl
|
||||
*/
|
||||
public void deletePermission(NodeRef nodeRef, String authority, String perm)
|
||||
{
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -130,6 +132,7 @@ public class PermissionServiceNOOPImpl
|
||||
*/
|
||||
public void setPermission(NodeRef nodeRef, String authority, String perm, boolean allow)
|
||||
{
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -137,6 +140,7 @@ public class PermissionServiceNOOPImpl
|
||||
*/
|
||||
public void setInheritParentPermissions(NodeRef nodeRef, boolean inheritParentPermissions)
|
||||
{
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -150,24 +154,24 @@ public class PermissionServiceNOOPImpl
|
||||
|
||||
public void clearPermission(NodeRef nodeRef, String authority)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
// SPI
|
||||
|
||||
public void deletePermission(PermissionEntry permissionEntry)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public void deletePermissions(NodePermissionEntry nodePermissionEntry)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public void deletePermissions(String recipient)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public NodePermissionEntry explainPermission(NodeRef nodeRef, PermissionReference perm)
|
||||
@@ -226,12 +230,12 @@ public class PermissionServiceNOOPImpl
|
||||
|
||||
public void setPermission(NodePermissionEntry nodePermissionEntry)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public void setPermission(PermissionEntry permissionEntry)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public Map<NodeRef, Set<AccessPermission>> getAllSetPermissionsForCurrentUser()
|
||||
@@ -256,22 +260,22 @@ public class PermissionServiceNOOPImpl
|
||||
|
||||
public void clearPermission(StoreRef storeRef, String authority)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public void deletePermission(StoreRef storeRef, String authority, String permission)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public void deletePermissions(StoreRef storeRef)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public void setPermission(StoreRef storeRef, String authority, String permission, boolean allow)
|
||||
{
|
||||
|
||||
// Do Nothing.
|
||||
}
|
||||
|
||||
public Set<AccessPermission> getAllSetPermissions(StoreRef storeRef)
|
||||
@@ -292,7 +296,6 @@ public class PermissionServiceNOOPImpl
|
||||
return AccessStatus.ALLOWED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getAuthorisations() {
|
||||
// TODO Auto-generated method stub
|
||||
return new HashSet<String>();
|
||||
|
Reference in New Issue
Block a user