mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-10279 The default transition label is now localisabel. Labels can be set globally, at the workflow level or at the node level.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31995 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -195,6 +195,15 @@ public class WorkflowObjectFactory
|
||||
isTaskNode, transitions);
|
||||
}
|
||||
|
||||
public WorkflowTransition createTransition(String id,
|
||||
String defaultTitle, String defaultDescription,
|
||||
boolean isDefault, String... baseLabelKeys)
|
||||
{
|
||||
String title = getLabel(baseLabelKeys, TITLE_LABEL, defaultTitle);
|
||||
String description = getLabel(baseLabelKeys, TITLE_LABEL, defaultDescription);
|
||||
return new WorkflowTransition(id, title, description, isDefault);
|
||||
}
|
||||
|
||||
public WorkflowTaskDefinition createTaskDefinition(String id, WorkflowNode node, String typeName, boolean isStart)
|
||||
{
|
||||
TypeDefinition metaData = getTaskTypeDefinition(typeName, isStart);
|
||||
@@ -276,6 +285,28 @@ public class WorkflowObjectFactory
|
||||
String keyBase = displayId.replace(":", "_");
|
||||
String key = keyBase+ "." + labelKey;
|
||||
String label = messageService.getMessage(key);
|
||||
return getDefaultLabel(label, defaults);
|
||||
}
|
||||
|
||||
private String getLabel(String[] locations, String labelKey, String... defaults)
|
||||
{
|
||||
String label = null;
|
||||
int i = 0;
|
||||
while(label == null && i<locations.length)
|
||||
{
|
||||
label = getLabel(locations[i], labelKey);
|
||||
i++;
|
||||
}
|
||||
return getDefaultLabel(label, defaults);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param label
|
||||
* @param defaults
|
||||
* @return
|
||||
*/
|
||||
private String getDefaultLabel(String label, String... defaults)
|
||||
{
|
||||
int i = 0;
|
||||
while(label==null && i<defaults.length)
|
||||
{
|
||||
|
@@ -34,6 +34,7 @@ public interface ActivitiConstants
|
||||
public static final String START_TASK_PREFIX = "start";
|
||||
|
||||
public static final String DEFAULT_TRANSITION_NAME = "Next";
|
||||
public static final String DEFAULT_TRANSITION_DESCRIPTION = "Default Transition";
|
||||
public static final String START_TASK_PROPERTY_PREFIX = "_start_";
|
||||
|
||||
public static final String USER_TASK_NODE_TYPE = "userTask";
|
||||
|
@@ -26,6 +26,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.alfresco.repo.workflow.activiti.ActivitiConstants.DEFAULT_TRANSITION_NAME;
|
||||
import static org.alfresco.repo.workflow.activiti.ActivitiConstants.DEFAULT_TRANSITION_DESCRIPTION;
|
||||
import org.activiti.engine.FormService;
|
||||
import org.activiti.engine.HistoryService;
|
||||
import org.activiti.engine.ProcessEngine;
|
||||
@@ -65,11 +67,9 @@ import org.alfresco.util.collections.Function;
|
||||
*/
|
||||
public class ActivitiTypeConverter
|
||||
{
|
||||
/**
|
||||
* Default transition provided for all Nodes when using Activiti engine.
|
||||
*/
|
||||
private static final WorkflowTransition NEXT_TRANSITION = new WorkflowTransition(ActivitiConstants.DEFAULT_TRANSITION_NAME,
|
||||
ActivitiConstants.DEFAULT_TRANSITION_NAME, "Default Transition", true);
|
||||
private static final String TRANSITION_SUFFIX= ".transition";
|
||||
private static final String DEFAULT_TRANSITION_KEY= "bpm_businessprocessmodel.transition";
|
||||
|
||||
|
||||
private final RepositoryService repoService;
|
||||
private final RuntimeService runtimeService;
|
||||
@@ -141,26 +141,28 @@ public class ActivitiTypeConverter
|
||||
|
||||
ReadOnlyProcessDefinition def = activitiUtil.getDeployedProcessDefinition(defId);
|
||||
PvmActivity startEvent = def.getInitial();
|
||||
WorkflowTaskDefinition startTask = getTaskDefinition(startEvent, startTaskName, definition.getKey());
|
||||
WorkflowTaskDefinition startTask = getTaskDefinition(startEvent, startTaskName, definition.getKey(), true);
|
||||
|
||||
return factory.createDefinition(defId,
|
||||
defName, version, defaultTitle,
|
||||
null, startTask);
|
||||
}
|
||||
|
||||
public WorkflowTaskDefinition getTaskDefinition(PvmActivity activity, String taskFormKey, String processDefinitionName)
|
||||
public WorkflowTaskDefinition getTaskDefinition(PvmActivity activity, String taskFormKey, String processKey, boolean isStart)
|
||||
{
|
||||
String startId = activity.getId();
|
||||
String startTitle = (String) activity.getProperty(ActivitiConstants.NODE_NAME);
|
||||
String startDescription= (String) activity.getProperty(ActivitiConstants.NODE_DESCRIPTION);
|
||||
String startType = (String) activity.getProperty(ActivitiConstants.NODE_TYPE);
|
||||
if(taskFormKey == null)
|
||||
{
|
||||
taskFormKey = startId;
|
||||
}
|
||||
WorkflowNode node = factory.createNode(startId, processDefinitionName, startTitle, startDescription, startType, true, NEXT_TRANSITION);
|
||||
WorkflowTaskDefinition startTask = factory.createTaskDefinition(taskFormKey, node, taskFormKey, true);
|
||||
return startTask;
|
||||
WorkflowNode node = getNode(activity, processKey, true);
|
||||
String taskDefId = taskFormKey == null ? node.getName() : taskFormKey;
|
||||
return factory.createTaskDefinition(taskDefId, node, taskFormKey, isStart);
|
||||
}
|
||||
|
||||
private WorkflowTransition getDefaultTransition(String processDefKey, String nodeId)
|
||||
{
|
||||
String processKey = processDefKey + TRANSITION_SUFFIX;
|
||||
String nodeKey = processDefKey + ".node." + nodeId + TRANSITION_SUFFIX;
|
||||
String transitionId = DEFAULT_TRANSITION_NAME;
|
||||
String title = DEFAULT_TRANSITION_NAME;
|
||||
String description =DEFAULT_TRANSITION_DESCRIPTION;
|
||||
return factory.createTransition(transitionId, title, description, true, nodeKey, processKey, DEFAULT_TRANSITION_KEY);
|
||||
}
|
||||
|
||||
public WorkflowInstance convert(ProcessInstance instance)
|
||||
@@ -230,7 +232,18 @@ public class ActivitiTypeConverter
|
||||
{
|
||||
String procDefId = activity.getProcessDefinition().getId();
|
||||
String key = activitiUtil.getProcessDefinition(procDefId).getKey();
|
||||
String name = activity.getId();
|
||||
return getNode(activity, key, forceIsTaskNode);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param activity
|
||||
* @param key
|
||||
* @param forceIsTaskNode
|
||||
* @return
|
||||
*/
|
||||
private WorkflowNode getNode(PvmActivity activity, String key, boolean forceIsTaskNode)
|
||||
{
|
||||
String name = activity.getId();
|
||||
String defaultTitle = (String) activity.getProperty(ActivitiConstants.NODE_NAME);
|
||||
String defaultDescription = (String) activity.getProperty(ActivitiConstants.NODE_DESCRIPTION);
|
||||
String type = (String) activity.getProperty(ActivitiConstants.NODE_TYPE);
|
||||
@@ -244,8 +257,8 @@ public class ActivitiTypeConverter
|
||||
{
|
||||
defaultDescription = name;
|
||||
}
|
||||
|
||||
return factory.createNode(name, key, defaultTitle, defaultDescription, type, isTaskNode, NEXT_TRANSITION);
|
||||
WorkflowTransition transition = getDefaultTransition(key, name);
|
||||
return factory.createNode(name, key, defaultTitle, defaultDescription, type, isTaskNode, transition);
|
||||
}
|
||||
|
||||
public WorkflowNode convert(PvmActivity activity)
|
||||
|
@@ -587,14 +587,14 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
||||
}
|
||||
|
||||
// Add start task definition
|
||||
defs.add(typeConverter.getTaskDefinition(startEvent, startTaskName, processDefinition.getId()));
|
||||
defs.add(typeConverter.getTaskDefinition(startEvent, startTaskName, processDefinition.getId(), true));
|
||||
|
||||
// Now, continue through process, finding all user-tasks
|
||||
Collection<PvmActivity> taskActivities = findUserTasks(startEvent);
|
||||
for(PvmActivity act : taskActivities)
|
||||
{
|
||||
String formKey = getFormKey(act);
|
||||
defs.add(typeConverter.getTaskDefinition(act, formKey, processDefinition.getId()));
|
||||
defs.add(typeConverter.getTaskDefinition(act, formKey, processDefinition.getId(), false));
|
||||
}
|
||||
|
||||
return defs;
|
||||
|
Reference in New Issue
Block a user