zoukankan      html  css  js  c++  java
  • Activiti5 添加/查询审批批注(审批意见)

    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);
    }
  • 相关阅读:
    OpenCV运动检测跟踪(blob track)框架组成模块详解
    C# 控制台应用程序中输出彩色字体
    C#获取隐藏的文件
    用c#怎么比较两张图片的不同
    清除浏览器缓存
    C#判断系统是否已经连接上网络
    如何删除VS2005中显示的最近项目
    设计模式:模板方法模式(Template Method)
    【SQL】数据库对象中查找某一关键字
    【问答】.NET面试题
  • 原文地址:https://www.cnblogs.com/zmc/p/7338594.html
Copyright © 2011-2022 走看看