一般我们审批任务时,都会填写审批意见、审批时间、审批人等信息。activiti为什么我们提供了act_hi_comment表和操作comment的API,现在我们就来学习如何使用(仅了解,我更喜欢自己建表,毕竟这是业务数据,和流程关系不大)。

  1.  
    //完成任务添加批注
  2.  
    @Test
  3.  
    public void completeTask(){
  4.  
    String taskId = "12504";
  5.  
    Task task = processEngine.getTaskService().createTaskQuery()
  6.  
    .taskId(taskId) //使用任务ID查询
  7.  
    .singleResult();
  8.  
    String processInstanceId = task.getProcessInstanceId(); //获取流程实例id
  9.  
    String message = "审批通过"; //批注信息
  10.  
    Authentication.setAuthenticatedUserId("张三"); //设置审批人,若不设置则数据表userid字段为null
  11.  
    processEngine.getTaskService().addComment(taskId, processInstanceId, message); //添加批注
  12.  
    processEngine.getTaskService().complete(taskId); //完成任务
  13.  
    }
  1.  
    //查询批注
  2.  
    @Test
  3.  
    public void findComment() {
  4.  
     
  5.  
    //如果流程还在继续执行,可以通过正在执行的任务获取流程实例id
  6.  
    String taskId = "12504";
  7.  
    Task task = processEngine.getTaskService().createTaskQuery()
  8.  
    .taskId(taskId)
  9.  
    .singleResult();
  10.  
    String _processInstanceId = task.getProcessInstanceId();
  11.  
    List<Comment> _list = processEngine.getTaskService().getProcessInstanceComments(_processInstanceId);
  12.  
     
  13.  
    //如果流程已经执行完毕,就要想办法获取到流程实例id
  14.  
    /*HistoricProcessInstance historicProcessInstance = processEngine.getHistoryService()
  15.  
    .createHistoricProcessInstanceQuery()
  16.  
    .processInstanceBusinessKey(businessKey) //关于businessKey请查看前面的教程《与业务关联》
  17.  
    .singleResult();*/
  18.  
    String processInstanceId = "12501"; //这里我们直接指定流程实例id
  19.  
    List<Comment> list = processEngine.getTaskService().getProcessInstanceComments(processInstanceId);
  20.  
    for (Comment comment : list) {
  21.  
    System.out.println("审批人:" + comment.getUserId());
  22.  
    System.out.println("审批时间:" + comment.getTime());
  23.  
    System.out.println("审批信息:" + comment.getFullMessage());
  24.  
    }
  25.  
     
  26.  
    }