Activiti5 添加/查詢審批批注
Activiti 工作流開發,23張表中,act_hi_commit 中,用於保存流程審核的批注信息:
調用:
taskServer.addComment(taskId:任務 id ,processInstanceId: 流程實例 id ,message : 批注信息);
@Test
public void complementTask(){
TaskService taskService=processEngine.getTaskService();
//3. 使用任務服務完成任務(提交任務)
String taskId="37505";
// 使用任務id,獲取任務對象,獲取流程實例id
Task task=taskService.createTaskQuery().taskId(taskId).singleResult();
//利用任務對象,獲取流程實例id
String processInstancesId=task.getProcessInstanceId();
System.out.println(processInstancesId);
Authentication.setAuthenticatedUserId("cmc"); // 添加批注時候的審核人,通常應該從session獲取
taskService.addComment(taskId,processInstancesId,"嘗試添加批注");
taskService.complete(taskId);
}
查詢批注信息: 返回 List
a.
使用任務 id 查找 批注信息
taskService.getTaskComments(taskid); 這個taskid,只是當時審批那人的任務id
注: 通常在審批流程中, 不同人審批的過程 taskid ,是不同的, 要查找 審批信息,就需要當時審批的時候的 taskId ,這個可以在歷史完成任務中查找當時對應的 taskId
@Test
public void findCommentByTaskId() {
String taskId="42503"; // 現在的任務id
HistoryService historyService=processEngine.getHistoryService();
TaskService taskService=processEngine.getTaskService();
List list = new ArrayList();
//使用當前的任務ID,查詢當前流程對應的歷史任務ID
//使用當前任務ID,獲取當前任務對象
Task task = taskService.createTaskQuery()//
.taskId(taskId)//使用任務ID查詢
.singleResult();
//獲取流程實例ID
String processInstanceId = task.getProcessInstanceId();
//使用流程實例ID,查詢歷史任務,獲取歷史任務對應的每個任務ID
List htiList = historyService.createHistoricTaskInstanceQuery()//歷史任務表查詢
.processInstanceId(processInstanceId)//使用流程實例ID查詢
.list();
//遍歷集合,獲取每個任務ID
if(htiList!=null && htiList.size()>0){
for(HistoricTaskInstance hti:htiList){
//任務ID
String htaskId = hti.getId();
//獲取批注信息
List taskList = taskService.getTaskComments(htaskId);//對用歷史完成后的任務ID
list.addAll(taskList);
}
}
list = taskService.getProcessInstanceComments(processInstanceId);
for(Comment com:list){
System.out.println("ID:"+com.getId());
System.out.println("Message:"+com.getFullMessage());
System.out.println("TaskId:"+com.getTaskId());
System.out.println("ProcessInstanceId:"+com.getProcessInstanceId());
System.out.println("UserId:"+com.getUserId());
}
System.out.println(list);
}
