CCM NG/ccm-core: WorkflowManager added multiple TaskAssignments for same task and assignee
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4799 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
bb703b3ab6
commit
7db179f090
|
|
@ -49,7 +49,9 @@ import javax.inject.Inject;
|
|||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.TypedQuery;
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.apache.shiro.subject.Subject;
|
||||
import org.libreccm.security.Role;
|
||||
|
||||
/**
|
||||
* Manager for {@link Workflow}s. The logic of some of these classes has been
|
||||
|
|
@ -82,6 +84,9 @@ public class WorkflowManager {
|
|||
@Inject
|
||||
private TaskManager taskManager;
|
||||
|
||||
@Inject
|
||||
private AssignableTaskManager assignableTaskManager;
|
||||
|
||||
@Inject
|
||||
private Shiro shiro;
|
||||
|
||||
|
|
@ -138,6 +143,8 @@ public class WorkflowManager {
|
|||
.forEach((locale, str) -> description.addValue(locale, str));
|
||||
workflow.setDescription(description);
|
||||
|
||||
workflowRepo.save(workflow);
|
||||
|
||||
final Map<Long, Task> tasks = new HashMap<>();
|
||||
|
||||
template
|
||||
|
|
@ -224,10 +231,24 @@ public class WorkflowManager {
|
|||
| InvocationTargetException ex) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
|
||||
workflow.addTask(task);
|
||||
task.setWorkflow(workflow);
|
||||
tasks.put(template.getTaskId(), task);
|
||||
workflow.addTask(task);
|
||||
task.setWorkflow(workflow);
|
||||
tasks.put(template.getTaskId(), task);
|
||||
|
||||
if (template instanceof AssignableTask) {
|
||||
final AssignableTask assignableTemplate
|
||||
= (AssignableTask) template;
|
||||
final AssignableTask assignableTask = (AssignableTask) task;
|
||||
|
||||
assignableTemplate
|
||||
.getAssignments()
|
||||
.stream()
|
||||
.map(TaskAssignment::getRole)
|
||||
.forEach(role -> {
|
||||
assignableTaskManager.assignTask(assignableTask, role);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue