在執行
/**
* 獲取待辦列表
*
* @param procDefKey 流程定義標識
* @return
*/
public List<Act> todoList(Act act) {
String userId = UserUtils.getUser().getLoginName();//ObjectUtils.toString(UserUtils.getUser().getId());
List<Act> result = new ArrayList<Act>();
// =============== 已經簽收的任務 ===============
TaskQuery todoTaskQuery = taskService.createTaskQuery().taskAssignee(userId).active()
.includeProcessVariables().orderByTaskCreateTime().desc();
// 設置查詢條件
if (StringUtils.isNotBlank(act.getProcDefKey())) {
todoTaskQuery.processDefinitionKey(act.getProcDefKey());
}
if (act.getBeginDate() != null) {
todoTaskQuery.taskCreatedAfter(act.getBeginDate());
}
if (act.getEndDate() != null) {
todoTaskQuery.taskCreatedBefore(act.getEndDate());
}
// 查詢列表
List<Task> todoList = todoTaskQuery.list();
for (Task task : todoList) {
Act e = new Act();
e.setTask(task);
e.setVars(task.getProcessVariables());
// e.setTaskVars(task.getTaskLocalVariables());
// System.out.println(task.getId()+" = "+task.getProcessVariables() + " ========== " + task.getTaskLocalVariables());
e.setProcDef(ProcessDefCache.get(task.getProcessDefinitionId()));
// e.setProcIns(runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult());
// e.setProcExecUrl(ActUtils.getProcExeUrl(task.getProcessDefinitionId()));
e.setStatus("todo");
result.add(e);
}
// =============== 等待簽收的任務 ===============
TaskQuery toClaimQuery = taskService.createTaskQuery().taskCandidateUser(userId)
.includeProcessVariables().active().orderByTaskCreateTime().desc();
// 設置查詢條件
if (StringUtils.isNotBlank(act.getProcDefKey())) {
toClaimQuery.processDefinitionKey(act.getProcDefKey());
}
if (act.getBeginDate() != null) {
toClaimQuery.taskCreatedAfter(act.getBeginDate());
}
if (act.getEndDate() != null) {
toClaimQuery.taskCreatedBefore(act.getEndDate());
}
// 查詢列表
List<Task> toClaimList = toClaimQuery.list();
for (Task task : toClaimList) {
Act e = new Act();
e.setTask(task);
e.setVars(task.getProcessVariables());
// e.setTaskVars(task.getTaskLocalVariables());
// System.out.println(task.getId()+" = "+task.getProcessVariables() + " ========== " + task.getTaskLocalVariables());
e.setProcDef(ProcessDefCache.get(task.getProcessDefinitionId()));
// e.setProcIns(runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult());
// e.setProcExecUrl(ActUtils.getProcExeUrl(task.getProcessDefinitionId()));
e.setStatus("claim");
result.add(e);
}
return result;
}
在執行
// 查詢列表
List<Task> todoList = todoTaskQuery.list();
這段代碼的時候出現了空指針異常,經過排查,原因是在獲取act_ru_task表中的待辦事項時,找不到業務表中 PROC_INST_ID_ 對應的業務表數據,導致空指針異常