CCM NG/ccm-cms Tab Workflows
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4629 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
e1d7afe473
commit
7df8f22248
|
|
@ -53,37 +53,38 @@ import java.util.stream.Collectors;
|
|||
*/
|
||||
class BaseTaskForm extends BaseForm {
|
||||
|
||||
final WorkflowRequestLocal m_workflow;
|
||||
private final WorkflowRequestLocal workflowRequestLocal;
|
||||
|
||||
final TextField m_name;
|
||||
final TextArea m_description;
|
||||
final OptionGroup m_type;
|
||||
final OptionGroup m_deps;
|
||||
private final TextField nameTextField;
|
||||
private final TextArea descriptionTextArea;
|
||||
private final OptionGroup typeOptionGroup;
|
||||
private final OptionGroup dependenciesOptionGroup;
|
||||
|
||||
BaseTaskForm(final String key,
|
||||
final GlobalizedMessage message,
|
||||
final WorkflowRequestLocal workflow) {
|
||||
final WorkflowRequestLocal workflowRequestLocal) {
|
||||
super(key, message);
|
||||
|
||||
m_workflow = workflow;
|
||||
this.workflowRequestLocal = workflowRequestLocal;
|
||||
|
||||
m_name = new Name("name", 200, true);
|
||||
addField(gz("cms.ui.workflow.task.name"), m_name);
|
||||
nameTextField = new Name("name", 200, true);
|
||||
addField(gz("cms.ui.workflow.task.name"), nameTextField);
|
||||
|
||||
m_type = new SingleSelect(new StringParameter("task_type"));
|
||||
addField(gz("cms.ui.workflow.task.type"), m_type);
|
||||
typeOptionGroup = new SingleSelect(new StringParameter("task_type"));
|
||||
addField(gz("cms.ui.workflow.task.type"), typeOptionGroup);
|
||||
|
||||
try {
|
||||
m_type.addPrintListener(new TaskTypePrintListener());
|
||||
typeOptionGroup.addPrintListener(new TaskTypePrintListener());
|
||||
} catch (TooManyListenersException ex) {
|
||||
throw new UncheckedWrapperException(ex);
|
||||
}
|
||||
|
||||
m_description = new Description("desc", 4000, true);
|
||||
addField(gz("cms.ui.workflow.task.description"), m_description);
|
||||
descriptionTextArea = new Description("desc", 4000, true);
|
||||
addField(gz("cms.ui.workflow.task.description"), descriptionTextArea);
|
||||
|
||||
m_deps = new CheckboxGroup("dep");
|
||||
addField(gz("cms.ui.workflow.task.dependencies"), m_deps);
|
||||
dependenciesOptionGroup = new CheckboxGroup("dep");
|
||||
addField(gz("cms.ui.workflow.task.dependencies"),
|
||||
dependenciesOptionGroup);
|
||||
|
||||
addAction(new Finish());
|
||||
addAction(new Cancel());
|
||||
|
|
@ -95,15 +96,38 @@ class BaseTaskForm extends BaseForm {
|
|||
private class ValidationListener implements FormValidationListener {
|
||||
|
||||
@Override
|
||||
public final void validate(final FormSectionEvent e)
|
||||
public final void validate(final FormSectionEvent event)
|
||||
throws FormProcessException {
|
||||
final String name = (String) m_name.getValue(e.getPageState());
|
||||
final String name = (String) nameTextField.getValue(event
|
||||
.getPageState());
|
||||
|
||||
// XXX do a dupe check here ala commented out code below
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected WorkflowRequestLocal getWorkflowRequestLocal() {
|
||||
return workflowRequestLocal;
|
||||
}
|
||||
|
||||
protected TextField getNameTextField() {
|
||||
return nameTextField;
|
||||
}
|
||||
|
||||
protected TextArea getDescriptionTextArea() {
|
||||
return descriptionTextArea;
|
||||
}
|
||||
|
||||
protected OptionGroup getTypeOptionGroup() {
|
||||
return typeOptionGroup;
|
||||
}
|
||||
|
||||
protected OptionGroup getDependenciesOptionGroup() {
|
||||
return dependenciesOptionGroup;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
protected void addValidationListener() {
|
||||
addValidationListener(new DataQueryExistsListener(ERROR_MSG) {
|
||||
|
|
@ -192,8 +216,8 @@ class BaseTaskForm extends BaseForm {
|
|||
|
||||
for (final Task taskToAdd : toAdd.values()) {
|
||||
try {
|
||||
taskManager.addDependentTask(task, taskToAdd);
|
||||
} catch(CircularTaskDependencyException ex) {
|
||||
taskManager.addDependentTask(task, taskToAdd);
|
||||
} catch (CircularTaskDependencyException ex) {
|
||||
throw new UncheckedWrapperException(ex);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ import org.libreccm.workflow.TaskManager;
|
|||
import org.libreccm.workflow.TaskRepository;
|
||||
import org.libreccm.workflow.Workflow;
|
||||
import org.librecms.contentsection.privileges.AdminPrivileges;
|
||||
import org.librecms.workflow.CmsTaskType;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ class TaskAddForm extends BaseTaskForm {
|
|||
m_model = model;
|
||||
|
||||
try {
|
||||
m_deps.addPrintListener(new DependencyPrinter());
|
||||
getDependenciesOptionGroup()
|
||||
.addPrintListener(new DependencyPrinter());
|
||||
} catch (TooManyListenersException tmle) {
|
||||
throw new UncheckedWrapperException(tmle);
|
||||
}
|
||||
|
|
@ -77,12 +78,14 @@ class TaskAddForm extends BaseTaskForm {
|
|||
final WorkflowAdminPaneController controller = cdiUtil
|
||||
.findBean(WorkflowAdminPaneController.class);
|
||||
final List<Task> tasks = controller
|
||||
.getTasksForWorkflow(m_workflow.getWorkflow(state));
|
||||
.getTasksForWorkflow(getWorkflowRequestLocal()
|
||||
.getWorkflow(state));
|
||||
|
||||
final OptionGroup options = (OptionGroup) event.getTarget();
|
||||
final KernelConfig kernelConfig = KernelConfig.getConfig();
|
||||
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
||||
|
||||
options.clearOptions();
|
||||
tasks.forEach(task -> options.addOption(new Option(
|
||||
Long.toString(task.getTaskId()),
|
||||
task.getLabel().getValue(defaultLocale))));
|
||||
|
|
@ -103,11 +106,12 @@ class TaskAddForm extends BaseTaskForm {
|
|||
.findBean(WorkflowAdminPaneController.class);
|
||||
|
||||
final CmsTask task = controller.addTask(
|
||||
m_workflow.getWorkflow(state),
|
||||
(String) m_name.getValue(state),
|
||||
(String) m_description.getValue(state),
|
||||
CmsTaskType.valueOf((String) m_type.getValue(state)),
|
||||
(String[]) m_deps.getValue(state));
|
||||
getWorkflowRequestLocal().getWorkflow(state),
|
||||
(String) getNameTextField().getValue(state),
|
||||
(String) getDescriptionTextArea().getValue(state),
|
||||
CmsTaskType.valueOf((String) getTypeOptionGroup()
|
||||
.getValue(state)),
|
||||
(String[]) getDependenciesOptionGroup().getValue(state));
|
||||
|
||||
m_model.setSelectedKey(state, task.getTaskId());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,10 +105,11 @@ class TaskAddRole extends CMSForm {
|
|||
final PageState state = event.getPageState();
|
||||
final CmsTask task = m_task.getTask(state);
|
||||
|
||||
final List<TaskAssignment> assignments = task.getAssignments();
|
||||
final List<Role> roles = assignments.stream()
|
||||
.map(TaskAssignment::getRole)
|
||||
.collect(Collectors.toList());
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final WorkflowAdminPaneController controller = cdiUtil
|
||||
.findBean(WorkflowAdminPaneController.class);
|
||||
|
||||
final List<Role> roles = controller.findAssignees(task);
|
||||
|
||||
m_roles.setValue(state, roles);
|
||||
}
|
||||
|
|
@ -125,24 +126,28 @@ class TaskAddRole extends CMSForm {
|
|||
final CmsTask task = m_task.getTask(state);
|
||||
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final AssignableTaskManager taskManager = cdiUtil.findBean(
|
||||
AssignableTaskManager.class);
|
||||
final RoleRepository roleRepository = cdiUtil.findBean(
|
||||
RoleRepository.class);
|
||||
|
||||
task.getAssignments().forEach(assignment -> {
|
||||
taskManager.retractTask(task, assignment.getRole());
|
||||
});
|
||||
final WorkflowAdminPaneController controller = cdiUtil
|
||||
.findBean(WorkflowAdminPaneController.class);
|
||||
// final AssignableTaskManager taskManager = cdiUtil.findBean(
|
||||
// AssignableTaskManager.class);
|
||||
// final RoleRepository roleRepository = cdiUtil.findBean(
|
||||
// RoleRepository.class);
|
||||
//
|
||||
// task.getAssignments().forEach(assignment -> {
|
||||
// taskManager.retractTask(task, assignment.getRole());
|
||||
// });
|
||||
|
||||
final String[] roleIds = (String[]) m_roles.getValue(state);
|
||||
|
||||
if (roleIds != null) {
|
||||
for (final String roleId : roleIds) {
|
||||
final Role role = roleRepository.findById(Long
|
||||
.parseLong(roleId)).get();
|
||||
taskManager.assignTask(task, role);
|
||||
}
|
||||
}
|
||||
// if (roleIds != null) {
|
||||
// for (final String roleId : roleIds) {
|
||||
// final Role role = roleRepository.findById(Long
|
||||
// .parseLong(roleId)).get();
|
||||
// taskManager.assignTask(task, role);
|
||||
// }
|
||||
// }
|
||||
|
||||
controller.assignTask(task, roleIds);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -182,8 +187,11 @@ class TaskAddRole extends CMSForm {
|
|||
@Override
|
||||
protected List<Role> getDataQuery(final PageState state) {
|
||||
final ContentSection section = CMS.getContext().getContentSection();
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final WorkflowAdminPaneController controller = cdiUtil
|
||||
.findBean(WorkflowAdminPaneController.class);
|
||||
|
||||
return section.getRoles();
|
||||
return controller.findRoles(section);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import org.libreccm.cdi.utils.CdiUtil;
|
|||
import org.libreccm.configuration.ConfigurationManager;
|
||||
import org.libreccm.workflow.Task;
|
||||
import org.libreccm.workflow.TaskRepository;
|
||||
import org.libreccm.workflow.Workflow;
|
||||
import org.librecms.workflow.CmsTaskType;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -59,7 +60,8 @@ class TaskEditForm extends BaseTaskForm {
|
|||
this.selectedTask = selectedTask;
|
||||
|
||||
try {
|
||||
m_deps.addPrintListener(new DependencyPrinter());
|
||||
getDependenciesOptionGroup()
|
||||
.addPrintListener(new DependencyPrinter());
|
||||
} catch (TooManyListenersException tmle) {
|
||||
throw new UncheckedWrapperException(tmle);
|
||||
}
|
||||
|
|
@ -73,9 +75,15 @@ class TaskEditForm extends BaseTaskForm {
|
|||
@Override
|
||||
public final void prepare(final PrintEvent event) {
|
||||
final PageState state = event.getPageState();
|
||||
final List<Task> tasks = m_workflow.getWorkflow(state).getTasks();
|
||||
final Workflow workflow = getWorkflowRequestLocal()
|
||||
.getWorkflow(state);
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final WorkflowAdminPaneController controller = cdiUtil
|
||||
.findBean(WorkflowAdminPaneController.class);
|
||||
final List<Task> tasks = controller.getTasksForWorkflow(workflow);
|
||||
|
||||
final OptionGroup options = (OptionGroup) event.getTarget();
|
||||
options.clearOptions();
|
||||
|
||||
tasks.forEach(task -> addOption(task, state, options));
|
||||
}
|
||||
|
|
@ -102,16 +110,27 @@ class TaskEditForm extends BaseTaskForm {
|
|||
final PageState state = event.getPageState();
|
||||
final CmsTask task = selectedTask.getTask(state);
|
||||
|
||||
m_name.setValue(state, task.getLabel());
|
||||
m_description.setValue(state, task.getDescription());
|
||||
m_type.setValue(state, task.getTaskType().toString());
|
||||
final Locale defaultLocale = KernelConfig
|
||||
.getConfig()
|
||||
.getDefaultLocale();
|
||||
|
||||
final List<Task> dependencies = task.getDependsOn();
|
||||
final List<String> depIdList = dependencies.stream()
|
||||
getNameTextField().setValue(state,
|
||||
task.getLabel().getValue(defaultLocale));
|
||||
getDescriptionTextArea().setValue(
|
||||
state,
|
||||
task.getDescription().getValue(defaultLocale));
|
||||
getTypeOptionGroup().setValue(state, task.getTaskType().toString());
|
||||
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final WorkflowAdminPaneController controller = cdiUtil.findBean(
|
||||
WorkflowAdminPaneController.class);
|
||||
|
||||
final List<Task> dependencies = controller.getDependencies(task);
|
||||
final List<String> depIdList = dependencies.stream()
|
||||
.map(dependency -> Long.toString(dependency.getTaskId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
m_deps.setValue(state, depIdList.toArray());
|
||||
getDependenciesOptionGroup().setValue(state, depIdList.toArray());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -124,26 +143,19 @@ class TaskEditForm extends BaseTaskForm {
|
|||
final PageState state = event.getPageState();
|
||||
final CmsTask task = selectedTask.getTask(state);
|
||||
|
||||
final String name = (String) getNameTextField().getValue(state);
|
||||
final String desc = (String) getDescriptionTextArea()
|
||||
.getValue(state);
|
||||
final CmsTaskType taskType = CmsTaskType
|
||||
.valueOf((String) getTypeOptionGroup().getValue(state));
|
||||
final String[] deps = (String[]) getDependenciesOptionGroup()
|
||||
.getValue(state);
|
||||
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final TaskRepository taskRepo = cdiUtil.findBean(
|
||||
TaskRepository.class);
|
||||
final ConfigurationManager confManager = cdiUtil.findBean(
|
||||
ConfigurationManager.class);
|
||||
final KernelConfig kernelConfig = confManager.findConfiguration(
|
||||
KernelConfig.class);
|
||||
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
||||
final WorkflowAdminPaneController controller = cdiUtil
|
||||
.findBean(WorkflowAdminPaneController.class);
|
||||
|
||||
task.getLabel().addValue(defaultLocale,
|
||||
(String) m_name.getValue(state));
|
||||
task.getDescription().addValue(
|
||||
defaultLocale,
|
||||
(String) m_description.getValue(state));
|
||||
|
||||
task.setTaskType(CmsTaskType.valueOf((String)m_type.getValue(state)));
|
||||
|
||||
taskRepo.save(task);
|
||||
|
||||
processDependencies(task, (String[]) m_deps.getValue(state));
|
||||
controller.updateTask(task, name, desc, taskType, deps);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -310,9 +310,9 @@ final class TaskItemPane extends BaseItemPane {
|
|||
final KernelConfig kernelConfig = KernelConfig.getConfig();
|
||||
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
||||
|
||||
props.add(new Property(gz("cms.ui.name"),
|
||||
props.add(new Property(gz("cms.ui.workflow.task.name"),
|
||||
task.getLabel().getValue(defaultLocale)));
|
||||
props.add(new Property(gz("cms.ui.description"),
|
||||
props.add(new Property(gz("cms.ui.workflow.task.description"),
|
||||
task.getDescription().getValue(
|
||||
defaultLocale)));
|
||||
props.add(new Property(gz("cms.ui.workflow.task.dependencies"),
|
||||
|
|
@ -373,7 +373,7 @@ final class TaskItemPane extends BaseItemPane {
|
|||
public RoleTable() {
|
||||
super(new RoleTableModelBuilder(m_task),
|
||||
new String[]{
|
||||
lz("cms.ui.name"), // XXX globz
|
||||
lz("cms.ui.workflow.task.role.name"),
|
||||
lz("cms.ui.workflow.task.role.delete")
|
||||
});
|
||||
|
||||
|
|
@ -391,17 +391,12 @@ final class TaskItemPane extends BaseItemPane {
|
|||
if (column == 1) {
|
||||
if (hasAdmin(state)) {
|
||||
final CmsTask task = m_task.getTask(state);
|
||||
final Long roleId = Long.parseLong((String) event
|
||||
.getRowKey());
|
||||
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final AssignableTaskManager taskManager = cdiUtil
|
||||
.findBean(AssignableTaskManager.class);
|
||||
final RoleRepository roleRepo = cdiUtil.findBean(
|
||||
RoleRepository.class);
|
||||
final WorkflowAdminPaneController controller =
|
||||
cdiUtil.findBean(WorkflowAdminPaneController.class);
|
||||
controller.removeAssignment(task,
|
||||
(String) event.getRowKey());
|
||||
|
||||
final Role role = roleRepo.findById(roleId).get();
|
||||
taskManager.retractTask(task, role);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -436,7 +431,6 @@ final class TaskItemPane extends BaseItemPane {
|
|||
private class Model implements TableModel {
|
||||
|
||||
private final List<Role> roles;
|
||||
private Role role;
|
||||
private int index = -1;
|
||||
|
||||
private Model(final CmsTask task) {
|
||||
|
|
@ -460,14 +454,14 @@ final class TaskItemPane extends BaseItemPane {
|
|||
|
||||
@Override
|
||||
public final Object getKeyAt(final int column) {
|
||||
return Long.toString(role.getRoleId());
|
||||
return Long.toString(roles.get(index).getRoleId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Object getElementAt(final int column) {
|
||||
switch (column) {
|
||||
case 0:
|
||||
return role.getName();
|
||||
return roles.get(index).getName();
|
||||
case 1:
|
||||
return lz("cms.ui.workflow.task.role.delete");
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -25,9 +25,10 @@ import com.arsdigita.util.UncheckedWrapperException;
|
|||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.libreccm.cdi.utils.CdiUtil;
|
||||
import org.libreccm.configuration.ConfigurationManager;
|
||||
import org.libreccm.security.Role;
|
||||
import org.libreccm.security.RoleRepository;
|
||||
import org.libreccm.workflow.AssignableTaskManager;
|
||||
import org.libreccm.workflow.CircularTaskDependencyException;
|
||||
import org.libreccm.workflow.Task;
|
||||
import org.libreccm.workflow.TaskManager;
|
||||
|
|
@ -35,7 +36,6 @@ import org.libreccm.workflow.TaskRepository;
|
|||
import org.libreccm.workflow.Workflow;
|
||||
import org.libreccm.workflow.WorkflowRepository;
|
||||
import org.libreccm.workflow.WorkflowTemplate;
|
||||
import org.libreccm.workflow.WorkflowTemplateMarshaller;
|
||||
import org.libreccm.workflow.WorkflowTemplateRepository;
|
||||
import org.librecms.contentsection.ContentSection;
|
||||
import org.librecms.contentsection.ContentSectionManager;
|
||||
|
|
@ -44,6 +44,7 @@ import org.librecms.workflow.CmsTask;
|
|||
import org.librecms.workflow.CmsTaskType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
|
@ -53,6 +54,7 @@ import java.util.stream.Collectors;
|
|||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
import javax.management.relation.RoleInfo;
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
/**
|
||||
|
|
@ -86,6 +88,12 @@ public class WorkflowAdminPaneController {
|
|||
@Inject
|
||||
private TaskManager taskManager;
|
||||
|
||||
@Inject
|
||||
private AssignableTaskManager assignableTaskManager;
|
||||
|
||||
@Inject
|
||||
private RoleRepository roleRepo;
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public List<WorkflowTemplate> retrieveWorkflows(final ContentSection section) {
|
||||
|
||||
|
|
@ -160,7 +168,7 @@ public class WorkflowAdminPaneController {
|
|||
task.getLabel().addValue(defaultLocale, name);
|
||||
task.getDescription().addValue(defaultLocale, desc);
|
||||
task.setTaskType(type);
|
||||
task.setActive(true);
|
||||
// task.setActive(true);
|
||||
|
||||
taskRepo.save(task);
|
||||
|
||||
|
|
@ -171,6 +179,31 @@ public class WorkflowAdminPaneController {
|
|||
return task;
|
||||
}
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public void updateTask(final Task task,
|
||||
final String name,
|
||||
final String desc,
|
||||
final CmsTaskType type,
|
||||
final String[] deps) {
|
||||
|
||||
final KernelConfig kernelConfig = confManager.findConfiguration(
|
||||
KernelConfig.class);
|
||||
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
||||
|
||||
final CmsTask theTask = (CmsTask) taskRepo
|
||||
.findById(task.getTaskId())
|
||||
.orElseThrow(() -> new IllegalArgumentException(String.format(
|
||||
"No Task with ID %d in the database. Where did that ID come from?",
|
||||
task.getTaskId())));
|
||||
theTask.getLabel().addValue(defaultLocale, name);
|
||||
theTask.getDescription().addValue(defaultLocale, desc);
|
||||
theTask.setTaskType(type);
|
||||
|
||||
taskRepo.save(theTask);
|
||||
|
||||
processDependencies(theTask, deps);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method decides which dependencies have to be removed and which ones
|
||||
* newly added. Unfortunately we cannot just do "remove all", and add the
|
||||
|
|
@ -226,6 +259,10 @@ public class WorkflowAdminPaneController {
|
|||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
TaskTableModelData getTaskTableModelData(final Workflow workflow) {
|
||||
final KernelConfig kernelConfig = confManager
|
||||
.findConfiguration(KernelConfig.class);
|
||||
final Locale defaultLocale = kernelConfig.getDefaultLocale();
|
||||
|
||||
final Map<Task, String> dependencies = new HashMap<>();
|
||||
|
||||
final Iterator<Task> tasksIter = getTasksForWorkflow(workflow)
|
||||
|
|
@ -240,7 +277,7 @@ public class WorkflowAdminPaneController {
|
|||
Task dep = deps.next();
|
||||
graphSet.addEdge(task, dep, null);
|
||||
buffer
|
||||
.append(dep.getLabel())
|
||||
.append(dep.getLabel().getValue(defaultLocale))
|
||||
.append(", ");
|
||||
}
|
||||
|
||||
|
|
@ -269,7 +306,9 @@ public class WorkflowAdminPaneController {
|
|||
break;
|
||||
}
|
||||
|
||||
final Iterator<Task> taskIterator = tasks.iterator();
|
||||
//final Iterator<Task> taskIterator = tasks.iterator();
|
||||
final Iterator<Task> taskIterator = getTasksForWorkflow(workflow)
|
||||
.iterator();
|
||||
|
||||
return new TaskTableModelData(taskIterator, dependencies);
|
||||
}
|
||||
|
|
@ -289,4 +328,65 @@ public class WorkflowAdminPaneController {
|
|||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public List<Role> findRoles(final ContentSection section) {
|
||||
|
||||
final ContentSection contentSection = sectionRepo
|
||||
.findById(section.getObjectId())
|
||||
.orElseThrow(() -> new IllegalArgumentException(String.format(
|
||||
"No ContentSection with ID %d in the database. "
|
||||
+ "Where did that ID come from?",
|
||||
section.getObjectId())));
|
||||
|
||||
return new ArrayList<>(contentSection.getRoles());
|
||||
}
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public void assignTask(final Task task, final String[] roleIds) {
|
||||
|
||||
final CmsTask theTask = (CmsTask) taskRepo
|
||||
.findById(task.getTaskId())
|
||||
.orElseThrow(() -> new IllegalArgumentException(String.format(
|
||||
"No Task with ID %d in the database. Where did that ID come from?",
|
||||
task.getTaskId())));
|
||||
|
||||
theTask.getAssignments()
|
||||
.forEach(assignment -> assignableTaskManager
|
||||
.retractTask(theTask, assignment.getRole()));
|
||||
|
||||
if (roleIds != null) {
|
||||
final List<Role> roles = Arrays
|
||||
.stream(roleIds)
|
||||
.map(roleId -> Long.parseLong(roleId))
|
||||
.map(roleId -> roleRepo.findById(roleId).orElseThrow(
|
||||
() -> new IllegalArgumentException(String.format(
|
||||
"No role with ID %d in the database. "
|
||||
+ "Where did that ID come from?", roleId))))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
roles.forEach(role -> assignableTaskManager
|
||||
.assignTask(theTask, role));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public void removeAssignment(final Task task, final String roleId ) {
|
||||
|
||||
final Role role = roleRepo
|
||||
.findById(Long.parseLong(roleId))
|
||||
.orElseThrow(() -> new IllegalArgumentException(String.format(
|
||||
"No Role with ID %d in the database. Where did that ID come from?",
|
||||
roleId)));
|
||||
|
||||
final CmsTask theTask = (CmsTask) taskRepo
|
||||
.findById(task.getTaskId())
|
||||
.orElseThrow(() -> new IllegalArgumentException(String.format(
|
||||
"No Task with ID %d in the database. Where did that ID come from?",
|
||||
task.getTaskId())));
|
||||
|
||||
assignableTaskManager.retractTask(theTask, role);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -166,3 +166,18 @@ cms.workflow.task_type.AUTHOR=Author
|
|||
cms.workflow.task_type.EDIT=Edit
|
||||
cms.workflow.task_type.DEPLOY=Deploy
|
||||
cms.ui.workflow.task.state=Status
|
||||
cms.ui.workflow.task.return=Return to workflow
|
||||
cms.ui.workflow.task.details=Task details
|
||||
cms.ui.workflow.task.state.none=None
|
||||
cms.ui.workflow.task.locked=Locked?
|
||||
cms.ui.no=No
|
||||
cms.ui.yes=Yes
|
||||
cms.ui.workflow.task.lock=Lock task
|
||||
cms.ui.workflow.task.edit=Edit task
|
||||
cms.ui.workflow.task.delete=Delete task
|
||||
cms.ui.workflow.task.delete_prompt=Are you sure you want to delete this task?
|
||||
cms.ui.workflow.task.roles=Roles to which this task is assigned:
|
||||
cms.ui.workflow.task.role.none=This task has not been assigned to any roles
|
||||
cms.ui.workflow.task.role.add=Assign this task to a role
|
||||
cms.ui.workflow.task.role.delete=Remove
|
||||
cms.ui.workflow.task.role.name=Role
|
||||
|
|
|
|||
|
|
@ -165,3 +165,18 @@ cms.workflow.task_type.AUTHOR=Verfassen
|
|||
cms.workflow.task_type.EDIT=Bearbeiten
|
||||
cms.workflow.task_type.DEPLOY=Ver\u00f6ffentlichen
|
||||
cms.ui.workflow.task.state=Status
|
||||
cms.ui.workflow.task.return=Zur\u00fcck zum Arbeitsablauf
|
||||
cms.ui.workflow.task.details=Aufgabe Details
|
||||
cms.ui.workflow.task.state.none=Kein Status
|
||||
cms.ui.workflow.task.locked=Reserviert?
|
||||
cms.ui.no=Nein
|
||||
cms.ui.yes=Ja
|
||||
cms.ui.workflow.task.lock=Aufgabe reservieren
|
||||
cms.ui.workflow.task.edit=Aufgabe bearbeiten
|
||||
cms.ui.workflow.task.delete=Aufgabe l\u00f6schen
|
||||
cms.ui.workflow.task.delete_prompt=Sind Sie sicher, dass Sie diese Aufgabe l\u00f6schen wollen?
|
||||
cms.ui.workflow.task.roles=Diese Aufgabe wurde folgenden Rollen zugeordnet:
|
||||
cms.ui.workflow.task.role.none=Diese Aufgabe ist keiner Rolle zugeordnet
|
||||
cms.ui.workflow.task.role.add=Diese Aufgabe einer Rolle zuordnen
|
||||
cms.ui.workflow.task.role.delete=Entfernen
|
||||
cms.ui.workflow.task.role.name=Rolle
|
||||
|
|
|
|||
|
|
@ -134,3 +134,18 @@ cms.workflow.task_type.AUTHOR=Author
|
|||
cms.workflow.task_type.EDIT=Edit
|
||||
cms.workflow.task_type.DEPLOY=Deploy
|
||||
cms.ui.workflow.task.state=Status
|
||||
cms.ui.workflow.task.return=Return to workflow
|
||||
cms.ui.workflow.task.details=Task details
|
||||
cms.ui.workflow.task.state.none=None
|
||||
cms.ui.workflow.task.locked=Locked?
|
||||
cms.ui.no=No
|
||||
cms.ui.yes=Yes
|
||||
cms.ui.workflow.task.lock=Lock task
|
||||
cms.ui.workflow.task.edit=Edit task
|
||||
cms.ui.workflow.task.delete=Delete task
|
||||
cms.ui.workflow.task.delete_prompt=Are you sure you want to delete this task?
|
||||
cms.ui.workflow.task.roles=Roles to which this task is assigned:
|
||||
cms.ui.workflow.task.role.none=This task has not been assigned to any roles
|
||||
cms.ui.workflow.task.role.add=Assign this task to a role
|
||||
cms.ui.workflow.task.role.delete=Remove
|
||||
cms.ui.workflow.task.role.name=Role
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ public class Task implements Identifiable, Serializable {
|
|||
dependentTasks = new ArrayList<>();
|
||||
dependsOn = new ArrayList<>();
|
||||
comments = new ArrayList<>();
|
||||
active = false;
|
||||
}
|
||||
|
||||
public long getTaskId() {
|
||||
|
|
@ -387,9 +388,9 @@ public class Task implements Identifiable, Serializable {
|
|||
+ "label = %s, "
|
||||
+ "active = %b, "
|
||||
+ "taskState = \"%s\", "
|
||||
+ "workflow = %s, "
|
||||
+ "dependentTasks = %s, "
|
||||
+ "dependsOn = %s%s"
|
||||
// + "workflow = %s, "
|
||||
// + "dependentTasks = %s, "
|
||||
// + "dependsOn = %s%s"
|
||||
+ " }",
|
||||
super.toString(),
|
||||
taskId,
|
||||
|
|
@ -397,9 +398,9 @@ public class Task implements Identifiable, Serializable {
|
|||
Objects.toString(label),
|
||||
active,
|
||||
taskState,
|
||||
Objects.toString(workflow),
|
||||
Objects.toString(dependentTasks),
|
||||
Objects.toString(dependsOn),
|
||||
// Objects.toString(workflow),
|
||||
// Objects.toString(dependentTasks),
|
||||
// Objects.toString(dependsOn),
|
||||
data);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue