CCM NG/ccm-cms Tab Workflows

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4629 8810af33-2d31-482b-a856-94f89814c4df
jensp 2017-03-14 18:56:16 +00:00
parent c5a1508e2d
commit c438e8fc5c
11 changed files with 289 additions and 102 deletions

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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());
}

View File

@ -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

View File

@ -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);
}
}

View File

@ -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:

View File

@ -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);
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}