[英]Activiti > bpmn : not able to assign candidate group dynamically using variables
[英]Activiti candidate group assignment implementation
我嘗試在下一種情況下將任務分配給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():
時出現以下異常getTaskForCandidateGroup():
“ org.springframework.http.converter.HttpMessageNotWritableException”,
“ message”:“無法編寫內容:在命令上下文之外進行延遲加載(通過參考鏈:java.util.ArrayList [0]-> org.activiti.engine.impl.persistence.entity.TaskEntity [\\” variableInstances \\“] );嵌套異常是com.fasterxml.jackson.databind.JsonMappingException:延遲加載到命令上下文外部(通過參考鏈:java.util.ArrayList [0]-> org.activiti.engine.impl.persistence.entity.TaskEntity [\\ “ variableInstances \\”])“,”路徑“:” / teuis-api / workflow-bps06 / getTasksDirectorDeputyGroup“
有人可以建議其他解決方案來實現此任務嗎?
問題已經解決了。
我試圖調用該服務並直接返回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;
使用與分配事件關聯的偵聽器。 在創建之前專門執行分配以處理這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.