flowable流程设计器_没想到Springboot+Flowable做⼯作流这
么简单
程序员是块砖,哪⾥需要哪⾥搬
公司内部的OA系统最近要升级改造,由于⼈⼿不够就把我借调过去了,但说真的我还没做过这⽅⾯的功能,第⼀次接触⼯作流的开发,还
是有点好奇是个怎样的流程。
项⽬主要⽤ Springboot + Flowable 重构原有的⼯作流程,Flowable 是个⽤ Java语⾔写的轻量级⼯作流引擎,上⼿⽐较简单开发效率也
挺⾼的,⼀起学习下这个框架。
Flowable 核⼼依赖
org.flowable flowable-spring-boot-starter 6.3.0 org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web org.m 流程设计
⼯作流开发的核⼼是任务流程的设计,Flowable 官⽅建议采⽤业界标准BPMN2.0的 XML来描述需要定义的⼯作流。
我们需要在 resource ⽬录下创建 processes路径,存放相关的 XML流程配置⽂件。Flowable 框架会默认加载此⽬录下的⼯作流⽂件并
解析 XML,并将解析后的流程配置信息持久化到数据库。
Flowable 是依赖于数据库的,但它并不需要我们⼿动的创建表,⽽是在程序第⼀次启动时,⾃动的向MySQL 中创建它所需要的⼀系列
表。
spring:  datasource:    url: jdbc:mysql://47.93.6.5:3306/order?serverTimezone=UTC    username: root    password: 123455
看到项⽬启动成功⼀共⽣成了60个表,数量还是⽐较多的,建议使⽤专门的数据库存在这些⼯作流表。
举个栗⼦:假如⼀个请假流程,需要经理审核通过,请假才能⽣效,如果他驳回流程结束。
接下来我们⽤ XML 翻译下上边的请假流程图,整体⾮常简单只要够细⼼就⾏了,⼀起看看每个标签都是什么含义。
<?xml  version="1.0" encoding="UTF-8"?>                                                                                                                                                                                其实就是把流程图的各种线条逻辑,⽤不同的XML标签描绘出来了。
: 表⽰⼀个完整的⼯作流
: 对⼯作流的描述
: ⼯作流中起点位置(开始)
: ⼯作流中结束位置(结束)
: 代表⼀个任务审核节点(组长、经理等⾓⾊)
: 逻辑判断节点,相当于流程图中的菱形框
:链接各个节点的线条,sourceRef 属性表⽰线的起始节点,targetRef 属性表⽰线指向的节点。
上边这⼀⼤坨XML是不是看着超级⿇烦,要是有⾃动⽣成⼯具就好了,我发现IDEA⾃带设计⼯具,但实在是太难⽤了。
spring到底是干啥的
流程审批
流程设计完后剩下的就是对⼯作流的审批和⽣成流程图。
⾸先启动⼀个请假的流程,以员⼯ID staffId 作为唯⼀标识,XML⽂件中会接收变量 leaveTask,Flowable内部会进⾏数据库持久化,并
返回⼀个流程Id processId ,⽤它可以查询⼯作流的整体情况,任务Id task为员⼯具体的请假任务。
注意:⼀个请假流程 processId中可以包含多个请假任务 taskId。
/**    * @author xiaofu    * @description 启动流程    * @date 2020/8/26 17:36    */    @RequestMapping(value = "startLeaveProcess")    @ResponseBody    publi ⽤启动流程时返回的 processId 看⼀下⼀下当前的流程图
localhost:4000/leave/createProcessDiagramPic?processId=37513
接下来将请假申请进⾏驳回 ,传⼊相应的 taskId 后执⾏驳回,再看看整个⼯作流的效果。
localhost:4000/leave/rejectTask?taskId=10086
/**    * @param taskId    * @author xinzhifu    * @description 驳回    * @date 2020/8/27 14:30    */    @ResponseBody    @RequestMapping(value = "rejectTask 看到整个请假流程在经理审核这成功阻断了。
localhost:4000/leave/createProcessDiagramPic?processId=37513
总结
开发⼯作流⼀般多⽤在OA系统等传统项⽬中,我也是第⼀次尝试做此类功能,收获还是蛮多的,技术栈⼜压进了⼀个知识点。今天分享的是个超级简单的demo,因为也是刚开始接触,等我⽤的贼溜的时候,再给⼩伙伴们做更成熟更深⼊的分享。
原创不易,燃烧秀发输出内容,如果有⼀丢丢收获,点个赞⿎励⼀下吧!
整理了⼏百本各类技术电⼦书相送 ,嘘~,「免费」 送给⼩伙伴们,私信或者评论【666】⾃⾏领取。和⼀些⼩伙伴们建了⼀个技术交流,⼀起探讨技术、分享技术资料,旨在共同学习进步。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。