Activiti添加批注(comment)信息

在每次提交任务的时候需要描述一些批注信息,例如:请假流程提交的时候要描述信息为什么请假,如果领导驳回可以批注驳回原因等

  1、添加批注    

    // 由于流程用户上下文对象是线程独立的,所以要在需要的位置设置,要保证设置和获取操作在同一个线程中

        Authentication.setAuthenticatedUserId(UserContext.get().getName());//批注人的名称  一定要写,不然查看的时候不知道人物信息

        // 添加批注信息

        taskService.addComment(taskId, null, comment);//comment为批注内容

        // 完成任务

        taskService.complete(taskId,vars);//vars是一些变量

  2、获取批注内容

    public List<Comment> getProcessComments(String taskId) {

        List<Comment> historyCommnets = new ArrayList<>();

//         1) 获取流程实例的ID

        Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult();

        ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();

//       2)通过流程实例查询所有的(用户任务类型)历史活动   

        List<HistoricActivityInstance> hais = historyService.createHistoricActivityInstanceQuery().processInstanceId(pi.getId()).activityType("userTask").list();

//       3)查询每个历史任务的批注

        for (HistoricActivityInstance hai : hais) {

            String historytaskId = hai.getTaskId();

            List<Comment> comments = taskService.getTaskComments(historytaskId);

            // 4)如果当前任务有批注信息,添加到集合中

            if(comments!=null && comments.size()>0){

                historyCommnets.addAll(comments);

            }

        }

//       5)返回

         return historyCommnets;

    }    

  3、在准备任务表单页面时显示批注(将上面的list放入值栈中,用struts2标签遍历)    

     <!-- 

               显示所有批注信息 

        例如:   

           1999-01-01  

                        张三 : 你好       

                        

           1999-01-02  

                        李四 : 你也好          

      -->

     <s:iterator value="#comments">

         <s:date name="time" format="yyyy-MM-dd hh:mm"/><br/>

         <s:property value="userId"/><s:property value="fullMessage"/><br/><br/>

     </s:iterator>

 

 

  

你可能感兴趣的:(Activiti)