簡體   English   中英

Activiti候選組分配實施

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM