我尝试在下一个场景之后将任务分配给Activiti中的候选组: 用户关闭自己的任务,任务必须前进到候选组。
在Activiti属性中,此任务没有受理人/候选人组。我在java代码中将候选组添加到此任务中:
public void assignTaskToCandidateGroup(Long entityId) {
ProcessInstance processInstance = super.findProcessInstance(entity);
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
if (task != null) {
taskService.complete(task.getId());
}
// Get next task after previos closed and add Candidate group
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
taskService.addCandidateGroup(task.getId(), "candidateGroup");
}
public List<Task> getTaskForCandidateGroup() {
return taskService.createTaskQuery().taskCandidateGroup("candidateGroup").list();
}
public void claimTaskCandidate(String taskId, User user) {
Task task = super.findTaskById(taskId);
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("candidateGroup").list();
if (!tasks.contains(task))
throw new UnsupportedOperationException(String.format("Task with id [%s] is not intended for [%s]",
task.getId(), "candidateGroup"));
// ... check services and exception handing omitted
taskService.claim(task.getId(), user.getUsername());
}
调用getTaskForCandidateGroup():
&#34; org.springframework.http.converter.HttpMessageNotWritableException&#34;,
&#34; message&#34;:&#34;无法写内容:延迟加载命令外 上下文(通过参考链: 的java.util.ArrayList [0] - &GT; org.activiti.engine.impl.persistence.entity.TaskEntity [\&#34; variableInstances \&#34;]); 嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:延迟加载 外部命令上下文(通过参考链: 的java.util.ArrayList [0] - &GT; org.activiti.engine.impl.persistence.entity.TaskEntity [\&#34; variableInstances \&#34;])&#34 ;, &#34;路径&#34;:&#34; / teuis-api / workflow-bps06 / getTasksDirectorDeputyGroup&#34;
有人可以提出另一种解决方案来实施此任务吗?
答案 0 :(得分:2)
问题解决了。
我试图直接调用该服务并返回List,但这是导致错误的原因。
@RequestMapping(value = "/getTaskForCandidateGroup")
public List<Task> getTaskForCandidateGroup() {
return getTaskForCandidateGroup();
}
新方法:
@RequestMapping(value = "/getTaskForCandidateGroup")
public List<Map<String, Object>> getTaskForCandidateGroup() {
List<Tasks> taskList = getTaskForCandidateGroup();
List<Map<String, Object>> customTaskList = new ArrayList<>();
for (Task task : taskList) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("taskId", task.getId());
map.put("taskDefinitionKey", task.getTaskDefinitionKey());
map.put("taskName", task.getName());
customTaskList.add(map);
}
return customTaskList;
答案 1 :(得分:0)
使用与assign事件关联的侦听器。 在专门创建处理此方案之前执行分配。