作者:汤圆
个人博客:javalover.cc
前言
Flowable是一个使用Java编写的轻量级业务流程引擎,它属于Activiti的一个分支。
Flowable UI 其实就是 Flowable 的 WEB 应用,用来设计流程、处理流程等等。
本节主要介绍如何创建一个简单的流程
本文需对 Flowable 和 BPMN2.0 相关概念有一个大致的了解,参考Getting Started · Flowable Open Source Documentation
目录
- 下载并启动 Flowable UI 应用
- 创建一个流程模型
- 发布并启动流程
- 踩坑记录(后续计划)
正文
可以直接看图片,看完对流程的创建也会有一个大致的印象
1. 下载并启动 Flowable UI 应用
这里我们直接从官网下载;如下图所示
温馨提示:网页访问可能会比较慢,需耐心等待
下载解压,进入wars目录,在当前目录打开命令行,通过命令行来启动 Flowable UI 应用;
文件管理器的地址栏输入
cmd
即可在当前目录打开命令行;输入powershell
也可以
启动的命令为:java -jar .\flowable-ui.war
启动后,一般是没啥问题的,成功后会显示下图(后面还有很多打印日志,没帖出来)
默认数据库H2,默认端口8080
2. 创建一个流程模型(重要)
访问界面
上面启动成功后,我们就可以访问 http://localhost:8080/flowable-ui ,如下所示,第一次会自动跳转到登录界面:
输入默认的账号/密码:admin/test
登录后,看到仪表盘如下所示:
下面简单介绍下这4个模块:
-
任务应用程序:这个模块主要进行流程相关的操作,比如发起、审核等,发布后的应用程序会显示在这里
-
建模器应用程序:这个模块是核心,主要用来创建流程、发布流程等等
-
管理员应用程序:这个模块就是管理发布的应用程序,可以上传/删除应用程序等等
-
身份管理应用程序:这个模块就是用户管理模块,包括用户的创建、权限分配等等
接下来,让我们来创建一个流程模型;
创建流程
点击建模器应用程序,显示如下所示:
点击创建流程,并按照如下所示,进行填写:
这里需要注意两点:
- 模型key是唯一的,不能跟其他的模型key重复
- 如果用鼠标在输入框从右往左拉,那么这个编辑框就会消失(体验不好,别的倒没啥)
创建成功后,会进入下面的界面:
这里简单介绍下界面的布局:
- 左边是元素面板,包含了设计流程模型的各种元素,比如启动事件、用户任务等
- 上面是工具面板,包括保存、校验、放大、缩小等
- 下面是属性信息,用来设置元素的各种属性
- 中间就是画布,将左边的元素拖拽过来,就可以设计流程了
接下来我们开始设计一个简单的流程,就是
- 一个用户发起请假的请求(请求表单)
- 然后系统进行判断:(脚本判断)
- 如果<10天,就自动通过(排他网关);
- 如果>=10天,就需要另一个用户确认,最后再通过
创建用户任务
我们先将左边的 活动-》用户任务 拖拽到画布中,如下图所示:
创建表单
然后我们需要编写一个请求表单,存放用户的请求信息
先选中画布中的用户任务,然后点击下面属性中的表单引用,如下所示:
会弹出下面的表单列表界面,此时表单列表为空
我们点击新表单,来创建一个表单,并填充表单的名称和key(这里的key同理,也是唯一)
创建成功后,会显示下面的表单编辑界面,类似流程编辑;左边是表单元素,可拖拽到画布中
这里我们拖拽 一个文本、两个日期、一个多行文本,如下所示:
然后编辑标签,我们先编辑第一个文本标签,点击标签右侧的铅笔图标进入编辑界面,如下所示
这里的id是根据标签的名称自动生成的(自动生成的id都是小写)
如果想自定义id,可选中覆盖id,然后手动输入
两个日期标签,我们也来编辑下,如下所示,一个DateBegin,一个DateEnd
编辑完成后,我们点击左上角的保存图标,即可保存表单,如下所示,会让你确认表单信息,这里我们点击保存和关闭编辑器
保存后,会自动跳转到刚才的流程定义界面;
创建脚本任务
接下来,我们定义一个脚本任务,用来计算请假的天数
脚本格式:groovy,脚本:点击后会打开一个对话框,填入下面的脚本代码:
org.joda.time.Days days =
org.joda.time.Days.daysBetween(datebegin, dateend);
execution.setVariable("amountOfVacationDays", days.getDays());
这个脚本的类文件已经包含在war项目中,所以直接引用即可(这里我们只要大概看懂语句的意思就行)
创建决策任务
将左边的决策任务拖拽到画布中,如下所示
接下来我们选中决策任务,找到属性决策表引用,然后点击,如下所示:
点击后,会显示决策表列表,此时为空,我们新建一个,点击新建按钮
然后填入对应的决策表信息,如下所示:(key和前面介绍的请求表单同理,也是唯一)
点击创建决策表,会来到决策表的编辑界面,左边是输入条件,右边是输出条件
这里我们用之前的逻辑来设计,就是以10天为界限,10天以内自动通过,10天以外需经其他用户同意;
先编辑左边的输入条件,如下所示,其中变量名称就是我们之前groovy脚本设置的那个请假天数变量,类型为number
再编辑右边的输出结果,如下所示,这里的变量就是我们自己定义的,后面排他网关会用到
接下来,我们编辑对应的规则,如下所示,意思就是请假天数<10,就不需要经过别人同意;>=10才需要
然后保存,返回到流程定义的界面
创建排他网关
下面我们再拖拽一个排他网关,用来筛选请求任务,这里筛选的条件就是刚才决策任务的输出变量 managerApprovalNeeded
再创建一个用户任务
这里的用户任务用来审批前面用户的请假流程,如下所示:
创建结束事件
创建一个结束事件,如下所示
连线
这里就是最后的步骤了,用序列流 把所有的任务和事件都串起来,
这里的序列流就是箭头连线,如下所示:
先选中用户任务元素,然后将序列流拖拽到下一个元素,即可完成连线
然后我们把其他的也连起来,连完后如下所示:
连完之后,还需要设置排他网关的序列流,如下所示:其中的条件表达式为${managerApprovalNeeded}
另一个序列流则设置为${!managerApprovalNeeded}
分配用户
最后我们需要把上面的两个用户任务指派给指定的用户,这里为了方便我们直接指派给发起人,即admin管理员,如下所示
后面那个用户任务也是同样的设置,这里就不贴图了;
接着我们再把每个节点都起个名字,如下所示,看起来直观点
最后我们保存流程,点击左上角的保存按钮,会弹窗如下所示,点击保存即可
3. 发布并启动一个流程
下一篇Flowable-UI最新版6.7.0入门篇之启动流程 - 掘金 (juejin.cn)
4. 遇到的坑
Flowable-UI最新版6.7.0入门篇之踩坑记录 - 掘金 (juejin.cn)
总结
本节主要介绍了一个简单流程的创建,其中的元素包括用户任务(发起人、审批人)、请求表单、脚本任务(groovy)、决策任务(配合网关);
这里只是涉及到了皮毛,Flowable UI还有很多其他元素,大家有空可以去参考官网