工作流中的审批记录

Activiti中有一张表专门来存储记录,也就是act_hi_comment这张表,具体字段如下:
act_hi_comment表中的字段
首先,先创建一个审批记录的类:

import lombok.Data;
/**
 * @author MuYi
 * 流程历史审批记录
 * */
@Data
public class HttpApprovalHistory {

    private String approvalOpinion;//审批意见

    private String approvalUserName;//审批人

    private String approvalTime;//审批时间

    private String agree;//审批状态
}

因为使用了lombok,可以简化代码。
然后进行审批记录的添加:

// 由于流程用户上下文对象是线程独立的,所以要在需要的位置设置,要保证设置和获取操作在同一个线程中
        Authentication.setAuthenticatedUserId(httpApproval.getUserId());// 批注人的名称
                                                                        // 一定要写,不然查看的时候不知道人物信息
        // 添加批注信息
        processEngine.getTaskService().addComment(httpApproval.getTaskId(), processInstanceId,
                approval + ":" + httpApproval.getApprovalOpinion());// comment为批注内容

现在就可以进行流程历史审批记录查看了:

/**
     * 流程审批记录
     */
    public List<HttpApprovalHistory> getApproveHistory1(String taskId) {
        List<HttpApprovalHistory> httpApprovalHistoryList = new ArrayList<HttpApprovalHistory>();
        List<Comment> list = getProcessComments(taskId);
        for (Comment comment : list) {
            HttpApprovalHistory httpApprovalHistory = new HttpApprovalHistory();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            httpApprovalHistory.setApprovalTime(dateFormat.format(comment.getTime()));
            httpApprovalHistory
                    .setApprovalUserName(sysUserMapper.selectByPrimaryKey((comment.getUserId())).getUserName());
            String[] str = comment.getFullMessage().split(":");//我前面添加建立的规则
            String agree = str[0];
            String approvalOpinion = comment.getFullMessage().substring(2);
            httpApprovalHistory.setAgree(agree);
            httpApprovalHistory.setApprovalOpinion(approvalOpinion);
            httpApprovalHistoryList.add(httpApprovalHistory);
        }
        return httpApprovalHistoryList;
    }

    /**
     * 获取历史审批记录comment
     * 
     * @param taskId
     * @return
     */
    public List<Comment> getProcessComments(String taskId) {
        List<Comment> historyCommnets = new ArrayList<>();
        // 1) 获取流程实例的ID
        HistoricTaskInstance task = processEngine.getHistoryService().createHistoricTaskInstanceQuery().taskId(taskId)
                .singleResult();
        String processInstanceId = task.getProcessInstanceId();
        // 2)通过流程实例查询所有的(用户任务类型)历史活动
        List<HistoricActivityInstance> hais = processEngine.getHistoryService().createHistoricActivityInstanceQuery()
                .processInstanceId(processInstanceId).activityType("userTask").list();
        // 3)查询每个历史任务的批注
        for (HistoricActivityInstance hai : hais) {
            String historytaskId = hai.getTaskId();
            List<Comment> comments = processEngine.getTaskService().getTaskComments(historytaskId);
            // 4)如果当前任务有批注信息,添加到集合中
            if (comments != null && comments.size() > 0) {
                historyCommnets.addAll(comments);
            }
        }
        // 排序
        Collections.sort(historyCommnets, new Comparator<Comment>() {
            @Override
            public int compare(Comment o1, Comment o2) {
                return (int) -(o2.getTime().getTime() - o1.getTime().getTime());
            }
        });
        // 5)返回
        return historyCommnets;
    }

这样就可以实现流程审批记录的记录和查看功能。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于简化Java应用程序开发的开源框架,而Flowable是一个用于业务流程管理和工作流引擎的开源框架。 在Spring Boot使用Flowable来处理审批记录非常方便。首先,我们可以使用Flowable提供的模型设计器来创建一个审批流程模型。通过定义流程的各个节点和其间的流转条件,我们可以很容易地设计出一个符合实际审批流程的模型。 一旦模型设计完成,我们可以使用Flowable提供的API来部署和启动流程实例。流程实例代表了一个具体的审批流程,它可以被多次启动和关闭。在启动流程实例时,我们可以指定相关的参数,例如申请人、审批人等。 在流程实例运行过程,我们可以使用Flowable提供的任务查询API来查询当前待处理的任务。根据任务的不同状态,我们可以将任务分配给相应的审批人,并设置相应的审批意见。审批人可以登录到审批系统查看待处理的任务,并对其进行审批操作。 一旦任务被审批完成,我们可以使用Flowable提供的API来完成当前任务,并将流程流转到下一步。在整个流程,我们可以通过Flowable提供的历史数据查询API来查询审批记录审批意见。这些记录可以用于生成审批报表或执行后续的数据分析。 总的来说,Spring Boot和Flowable的结合可以方便地实现审批记录的管理和跟踪。通过使用Flowable提供的流程引擎和相关API,我们可以灵活地设计和管理审批流程,同时也可以方便地查询和分析审批记录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值