Flowable 快速入门教程:通过 Comment 保存审核记录

  • 前言
  • 表结构
  • 接口整理
    • 查询
    • 新增
    • 更新
    • 删除
  • 审核示例
    • 新增信息
    • 审核信息查询
    • 附赠 CommentVo
  • 目前我在 Comment 上的使用
  • 效果图

前言

先说下本人为什么使用 Comment 来保存审核信息

  1. 自然因为简单,不需要自己额外建表保存(本人懒汉)
  2. 由于本人项目这使用的是微服务架构,流程引擎单独一个数据库,其他数据其他库。但不管在哪建表,查询后也需要自己对数据整合,比较麻烦(本人懒汉)
  3. 就目前而言,个人觉得 flowable 提供的 Comment 足够支持这方面的需求

表结构

ACT_HI_COMMENT

PS:只有 TYPE_TIME_ACTION_ 这三个参数会自动生成,也就是说 TASK_ID_PROC_INST_ID_ 这两个参数,如果调用接口时候不设置,就不会有

接口整理

PS:都在 TaskService 接口中

查询

Comment getComment(String commentId)

List<Comment> getTaskComments(String taskId)
PS:默认只会获取类型为 comment 的建议

List<Comment> getTaskComments(String taskId, String type)

List<Comment> getCommentsByType(String type)

List<Comment> getProcessInstanceComments(String processInstanceId)

List<Comment> getProcessInstanceComments(String processInstanceId, String type)

新增

Comment addComment(String taskId, String processInstance, String message)
PS:默认 TYPE_ 为 comment

Comment addComment(String taskId, String processInstance, String type, String message)

更新

void saveComment(Comment comment)
PS:ID 存在则更新,不存在报错

删除

void deleteComment(String commentId)

void deleteComments(String taskId, String processInstanceId)

审核示例

新增信息

审核完成后,添加审核信息
我依据自己的想法,自定义 Comment 类别

  1. taskStatus:审核状态
  2. taskMessage:审核结果
  3. taskComment:审核意见,也就是页面用户输入的意


审核信息查询

PS:查询则是根据流程定义查询,之后在缓存中再根据任务ID进行匹配。不能用任务ID查询,因为限制了类别为 comment。限制 type 查询也不行,随着类别的增加,查询数据库的次数就是几何倍增长,不推荐。

// 审核状态
CommentVo taskStatus = null;
// 审核信息
CommentVo taskMessage = null;
// 审核说明
CommentVo taskComment = null;
// 转办说明
List<CommentVo> transferComment = new ArrayList<>();
// 获取并设置批注,即审核原因,驳回原因之类的
List<Comment> commentList = taskService.getProcessInstanceComments(item.getProcessInstanceId());
// 注意,批注的顺序为时间倒序,因此按倒序取出
for (int i = commentList.size() - 1; i >= 0; i --) {// 先判断任务ID 相等if (item.getTaskId().equals(commentList.get(i).getTaskId())) {if ("taskStatus".equals(commentList.get(i).getType())) {taskStatus = new CommentVo(commentList.get(i));}if ("taskMessage".equals(commentList.get(i).getType())) {taskMessage = new CommentVo(commentList.get(i));}if ("taskComment".equals(commentList.get(i).getType())) {taskComment = new CommentVo(commentList.get(i));}if ("transferComment".equals(commentList.get(i).getType())) {transferComment.add(new CommentVo(commentList.get(i)));}}
}

附赠 CommentVo

PS:由于 fullMessage 字段保存是用 BLOB,获取的时候出现了中文乱码,我就改成直接获取 message 字段了

/*** CommentVo* @author: linjinp* @create: 2020-01-15 16:22**/
@Data
public class CommentVo {private String id;private String processInstanceId;private String taskId;private Date time;private String type;private String userId;private String message;public CommentVo(){}public CommentVo(Comment comment){id = comment.getId();processInstanceId = comment.getProcessInstanceId();taskId = comment.getTaskId();time = comment.getTime();type = comment.getType();userId = comment.getUserId();message = ((CommentEntityImpl) comment).getMessage();}
}

目前我在 Comment 上的使用

流程审核

流程驳回

流程回退

流程转办
PS:主要保存转办历史,因为转办后还能转给别人

效果图

Flowable 快速入门教程:通过 Comment 保存审核信息相关推荐

  1. Flowable 快速入门教程:Flowable 入门开发案例,结合流程设计器详细讲解

    Flowable 快速入门教程:Flowable 入门开发案例,结合流程设计器详细讲解 前言 流程设计器集成 整体流程图 流程节点说明 第一审核人节点:实际设置审核人 配置信息 说明 第二审核人:参数 ...

  2. Flowable 快速入门教程:前端展示流程图

    Flowable 快速入门教程:流程图展示 后端 前端 效果图 后端 这里流程图就不做高亮处理了 获取流程图 InputStream 将 InputStream 转为 byte[] 字节数组 对数组进 ...

  3. Flowable 快速入门教程:任务驳回与回退

    Flowable 快速入门教程:任务驳回与回退 前言 BUG 修复记录 支持场景 功能描述 驳回 退回 脏数据 什么是脏数据 串行样例 并行样例 会签样例 脏数据清洗效果图 完整代码 效果图 前言 本 ...

  4. netbeans linux 教程,NetBeans IDE Ruby 快速入门教程

    NetBeans IDE Ruby 快速入门教程 本教程提供了在 NetBeans IDE 中开发 Ruby 应用程序的快速入门指南.本教程介绍如何使用 IDE 的 Ruby 支持来执行一些典型的应用 ...

  5. 【tools】Latex菜鸟快速入门教程(基于overleaf平台:Learn LaTeX in 30 minutes)

    [tools]Latex菜鸟快速入门教程(基于overleaf平台) 注册登录overleaf LaTeX入门教程 1.First start 2.序言Preamble 3.添加标题.作者和日期 4. ...

  6. MySQL 快速入门教程

    转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...

  7. sklearn快速入门教程:补充内容 -- sklearn模型评价指标汇总(聚类、分类、回归)

    sklearn集成了大多数模型评价指标,这可以很大程度上方便我们的使用,尤其在对进行进行自动调参时可以方便我们进行选择. 做下这个笔记主要是为了补充之前的内容:sklearn快速入门教程:(四)模型自 ...

  8. .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧

    .NET Core 快速入门教程 .NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基 ...

  9. python notebook软件_Jupyter notebook快速入门教程(推荐)

    本文主要介绍了Jupyter notebook快速入门教程,分享给大家,具体如下: 本篇将给大家介绍一款超级好用的工具:Jupyter notebook. 为什么要介绍这款工具呢? 如果你想使用Pyt ...

  10. webpack快速入门教程

    webpack快速入门教程 1.webpack 介绍 什么是webpackhttps://www.webpackjs.com/ Webpack是一个模块打包器(bundler) 在Webpack看来, ...

最新文章

  1. c语言如何持续输入字符直到指定字符结束_《小白学C》第三章 常用输入输出函数...
  2. java mysql死锁_记一次线上mysql死锁分析(一)
  3. 【错误记录】Groovy 函数参数动态类型报错 ( Caught: groovy.lang.MissingMethodException: No signature of method )
  4. Java定位CPU使用高问题--转载
  5. 基于栅格地图的粒子群算法_基于GMapping的栅格地图的构建
  6. ABAP方法的exporting类型参数,需要在方法实现最开始显式初始化么
  7. 隐私与机器学习,二者可以兼得吗?
  8. oracle嵌套三层循环语句,在存储过程中执行3种oracle循环语句
  9. beamer插入图片_利用Pandoc将Markdown转化为beamer(七)Pandoc的命令行参数
  10. Linux制作简版的镜像,手把手教你制作一个精简版Windows10镜像
  11. filezilla里怎么解决中文乱码问题
  12. Cinema 4d 软件介绍
  13. gps l1带宽_请问GPS带宽是多少?
  14. 实体连锁电商会员运营方案
  15. php编写出一个时钟,用HTML5实现一个时钟
  16. 1. 数理统计---数理统计基本概念
  17. 团队环境搭建:MTK平台,PTK5.1、Supernova编译环境配置
  18. Web验证的过去现在与未来
  19. 前端静态网页实战项目京东首页
  20. 干货 | 三维点云配准:ICP 算法原理及推导

热门文章

  1. npm init 自动创建 package.json 文件
  2. 菜鸟学算法--二分查找
  3. 二十一世纪大学英语读写教程(第四册)学习笔记(原文)——2 - The Gratitude We Need(我们所需要的感激)
  4. 举个栗子~ Minitab 技巧(1):快速安装和激活 Minitab 统计软件
  5. C++ 04 翁恺>声明(Declarations) VS. 定义(Definitions)
  6. 上线啦,PP.io!
  7. 如何爬取豆瓣电影?python十分钟搞定
  8. JAVA 实现 名单按姓氏笔画为序排列
  9. aid learning如何换源
  10. 汽车java歌曲_开车必备100首歌曲 50首适合开车听的歌曲 2019车载歌曲 DJ流行