Flowable-UI

Flowable-UI

安装

手把手教大家画了这样一个流程图,虽然说它不是特别好用,但是也不是不能用,也能用。好了,那么接下来的话,我们这个就先告一个段落,接下来我要跟大家说的第二个东西的话,就是另外一个流程绘制工具 Flowable-UI 这个话算是一个比较重要的一个东西,我觉得就是其实不管你以后开发用不用,但是这个东西你都得知道。这个,那么这个的话是什么呢?这个 Flowable 的官方推荐的一个什么流程引擎绘制工具,官方推荐的一个流程引擎辅助工具,可以这么来说叫做流程引擎辅助工具,就是它可以帮助我们更好的去开发这个流程引擎。

官方提供的是一个 war 包,这个虽然是一个 war 包,但是除了将之扔到 Tomcat 中去运行之外,也可以直接执行 java -jar xxx.war 这个命令去启动这个 war 包。

war 下载地址:https://github.com/flowable/flowable-engine/releases/download/flowable-6.7.2/flowable-6.7.2.zip (下载的比较慢有魔法还好)这个 zip 包下载之后,里边有一个 wars 文件夹,里边包含了 flowable-ui 的 war 包。然后,就像启动 Spring Boot 一样,直接启动这个 war 包即可:

img

启动命令:

java -jar flowable-ui.war

img

启动之后,默认的端口号是 8080。

启动之后,浏览器输入 http://localhost:8080/flowable-ui/idm/#/login 如果看到如下页面,表示启动成功:

img

另外,我们也可以使用 docker 来安装,命令如下:

docker run -p 8086:8080 -d flowable/flowable-ui

img

登录

默认的登录用户名是 admin,默认的登录密码是 test。

看到如下页面,表示登录成功。

img

功能模块

flowable-ui 是完整的 flowable 体验 DEMO,而不仅仅只是一个流程图的绘制工具。所以它里边不仅可以画流程图,还可以运行流程图,既然能够运行流程图,那么就需要身份管理。

  1. 任务应用程序:我们绘制好的流程图,可以直接将之发布到一个应用中,然后在这里进行部署,这个模块其实就是这些部署的应用程序。
  2. 建模器应用程序:这个专门用来画流程图的。
  3. 管理员应用程序:这个主要用来管理应用,一些具有管理员权限的用户,可以通过这个功能模块去查询 BPMN、DMN、FORM 等等信息。
  4. 身份管理应用程序:这个功能模块,为所有的 flowable-ui 应用程序提供一个单点登录功能,并且还可以为这些用户设置用户组、用户权限等。

身份管理应用程序

创建用户流程:

img

填入用户的基本信息,点击保存按钮,就可以完成用户的创建了。

img

新建的用户不属于任何用户组,所以这个新建的用户是没有权限的,我们现在就可以使用这个新建的用户登录,但是登录成功后,看不到任何功能模块。

img

用户创建成功之后,可以点击上面的用户组功能,创建用户组:

img

将来我们在画流程图的时候,可以设置某一个 UserTask 由某一个用户组来处理,这个用户组中的所有用户,将来都可以处理这个 UserTask。

img

组创建成功之后,可以为这个组添加用户:

img

最后,我们可以在权限控制中,为用户或者用户组添加相应的权限。

img

  • 访问 idm 应用:访问功能身份管理应用程序。
  • 访问 admin 应用:访问功能管理员应用程序。
  • 访问 modeler 应用:访问功能建模器应用程序。
  • 访问 workflow 应用:访问功能任务应用程序。
  • 访问 REST API:访问 REST API 接口的。

管理员应用程序

img

建模器应用程序

核心功能,主要就是画流程图。

绘制一个报销流程图,大致流程:

  1. 启动一个流程。
  2. 执行一个用户任务,这个用户任务交给流程的启动人去执行。这个用户任务中,填入报销材料,例如用户名、金额、用途。
  3. 系统自动判断一下/或者人工判断报销金额是否大于 1000。
  4. 如果报销金额小于等于 1000,那么这个报销任务交给 组长审批:
    a. 组长审批通过,则流程结束。
    b. 组长审批不通过,则流程回到第 2 步,用户重新去填写报销资料。
  5. 如果报销金额大于 1000,那么这个报销任务先交给经理审批:
    a. 经理审批通过,则交给 CEO 审批:
    i. CEO 审批通过,则流程结束。
    ii. CEO 审批不通过,则流程回到步骤 2 中。
    b. 经理审批不通过,则流程回到步骤 2 中。

绘制流程

首先创建一个流程:

img

img

!> 注意,模型的 key 在当前应用中必须是唯一的,将来我们通过 Java 代码去操作这个模型的时候,就是通过模型 key 去识别这个模型。

绘制出来的流程图:

img

在上面的流程图绘制中,有几个东西我要说明一下:

  1. 如何添加用户任务:

img

  1. 用户任务与其它任务之间如何连线(就是拒绝流程的线条如何绘制):

img

  1. 线条添加弯曲点

image-20230726224344040

!> 注意,在一个流程图中,开始节点必须有且只有一个,结束节点可以有多个。

!> 画完流程图之后官方提供了一个验证模型功能,可以验证一下我们画的流程图是否符合规范。

img

img

表单问题

在流程中,传递流程参数有两种方式:

  • 流程变量
  • 表单

这两种方式都可以传递参数,区别在于,流程变量是零散的,而表单是整体的。

介绍了流程中传递参数的方式之后,我们继续将我们上方的流程中进行完善下,我们点击校验流程图是否完整很显然是提示我们流程图不完整,因为我们的流程图中没有设置表单,所以我们需要设置表单。

首先是填写报销信息的表单,我们可以在用户任务中设置表单,也可以在用户任务的右侧设置表单,这里我们选择在右侧设置表单。

img

img

img

img

到了这里我们的表单就设置好了,我们可以点击右上角的保存按钮,保存我们的流程图。

网关条件设置:

img

img

我们先看组长审批这一条线的流程,目前所有的节点是哪些人我还没有一一的分配的,我先将节点对应的表单等信息完善,然后再去分配节点所对应的人。组长审批,组长需要操作的就是同意与拒绝。

新建表单,表单的key一定要牢牢的记住,后面会用到,我这里叫做 group_leader_approval

img

我们这里使用结果,之前使用的是设计,设计也可以办到,但是结果更加的方便,我们这里使用结果,然后我们将结果设置为同意与拒绝。

img

拒绝的话,我们需要设置一个原因,这个原因是必填的,所以我们需要设置一个必填的表单,这个表单的key叫做 group_leader_approval_reason。在 Flowable 中,想要获取表单的结果信息,需要使用一个固定的写法 form_key_outcome,这个 form_key_outcome 就是我们在上面设置的结果的 key,这里就是 group_leader_approval

img

同意同理可证,我们这里就不再赘述了。

大于 1000 的情况,我们需要设置两个节点,一个是经理审批,一个是 CEO 审批,我们先来设置经理审批。

新建表单,表单的key一定要牢牢的记住,后面会用到,我这里叫做 manager_approval

img

采用结果:

img

同意与拒绝两条线自己设置即可。

CEO 审批,我这里要介绍一个新的知识点就是用表单中的引用来完成同意与拒绝的操作。

新建表单, 表单 Key 名为 CEO_approval:

img

表单新建完毕之后我们用单选按钮与下拉框都可以,我这里采用单选按钮的形式去演示这个知识点。

给单选按钮取一个 id,我这里命名为 CEO_approval_radio_button。

img

img

这里不用记着表单的 Key 了,我们直接使用表单的引用,表单的引用就是我们在上面设置的表单的 id,这里就是 CEO_approval_radio_button。所以我们设置流条件就是和之前设置金额大于等于或者小于等于设置方式是一样的。

img

最终再点击验证流程图是否完整,我们可以看到流程图已经完整了。

img

对于通过表单传递的参数,我们也可以按照流程变量的方式去访问单个的表单参数,例如在上面的流程图中,我们有 ${money <= 1000} ,这里的 money 实际上是表单中的参数,但是我们可以直接通过 $ 表达式去访问。还有比如 ${managers_approve_or_reject_radio_button == "拒绝"},也是直接访问表单中的变量。

任务处理人

我们这样子去划分

  • zhangsan:是一个普通员工,他可以发起报销流程。
  • lisi:是一个组长,他可以审批报销金额小于等于 1000 的报销流程。
  • wangwu:是一个经理,他可以审批报销金额大于 1000 的报销流程。
  • zhaoliu:是一个 CEO,他可以审批报销金额大于 1000 的报销流程。

虽然我这里只是创建了这些用户,有些概念的东西我还是要这里说明:

  • 候选组:这个用户组中的所有用户都可以处理这个任务,但是只有一个用户可以处理这个任务(可以同时指定多个用户组来处理这个 UserTask,这个处理的时候,也需要先认领,再处理)。
  • 候选用户:这个用户可以处理这个任务,但是如果这个用户不处理这个任务,那么这个任务就会被挂起,直到这个用户处理这个任务(可以同时指定多个用户来处理这个 UserTask,将来用户在处理的时候,需要先认领(Claim)任务,然后才能处理)。
  • 分配给单个用户:这个任务只能由这个用户来处理,如果这个用户不处理这个任务,那么这个任务就会被挂起,直到这个用户处理这个任务(直接指定某一个具体的用户来处理这个流程,注意这里只能指定一个用户,并且这个用户将来在处理任务的时候,不需要认领,直接就可以处理)。
  • 分配给流程的发起人:这个任务只能由流程的发起人来处理,如果这个用户不处理这个任务,那么这个任务就会被挂起,直到这个用户处理这个任务(流程发起人,由流程的启动人/发起人来处理这个流程)。

?> 密码分别为:123

根据划分结果将对应的用户在身份管理应用程序中一一创建好。

img

然后在返回到建模器应用程序中,我们可以在用户任务中设置用户, 首先是填写报销信息的用户任务,我们将这个用户任务分配给 zhangsan。然后我想了想,还是按照流程的发起人来进行填报,也就是说,这个流程是谁发起的那么这个填报就有他来写ok说明白了,开始设置。

img

然后是组长审批,我们将这个用户任务分配给 lisi。

img

然后是经理审批,我们将这个用户任务分配给 wangwu。

img

最后是 CEO 审批,我们将这个用户任务分配给 zhaoliu。

img

基本概念

  • 流程定义(ProcessDefinition):我们绘制的流程图、流程的 XML 文件,就是我们的流程定义。
  • 流程(ProcessInstance):一个启动了流程实例就是一个流程,流程可以是已经执行完毕的,也可以是正在执行中的。流程的定义相当于是一个类,而流程则相当于是一个对象。
  • 任务(Task):一个 ProcessInstance 中,需要具体处理的节点就是一个任务。

任务应用程序

在 flowable-ui 中,绘制好的流程图,可以直接部署称为一个 App。

在上方,我们已经为每一个节点设置了用户,那么我们就可以直接部署成为一个 App。来进行走一遍流程,这个走流程的过程我就不演示出来了自行去体验。

posted @   BNTang  阅读(737)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
  1. 1 总会有人离开 王巨星
  2. 2 月亮 孟凡明
  3. 3 迟里乌布
  4. 4 我只能离开 颜人中
  5. 5 达尔文 蔡健雅
  6. 6 夜色滚烫 叶明净
  7. 7 你的星环 路飞文
  8. 8 不再说话 三块木头
  9. 9 黄昏 粥粥和小伙/粥粥
  10. 10 爱不单行 刘大拿
  11. 11 心动贩卖机 PIggy
  12. 12 别来无恙 苏星婕
  13. 13 我们的歌 刘大拿
  14. 14 一直很安静 王贰浪
  15. 15 去有风的地方 清音
  16. 16 雪 Distance Capper/罗言
  17. 17 坏女孩 徐良/小凌
  18. 18 乐园 沧桑Cang333/虎皮蛋/曲甲
  19. 19 Ayo(Explicit) Chris Brown/Tyga
  20. 20 我的美丽feat.海洋Bo 海洋Bo/高睿
  21. 21 世事可爱 粥粥和小伙/粥粥
  22. 22 我记得 赵雷
  23. 23 我想牵着你的手 许嵩
  24. 24 人们都不懂 刘诺然
  25. 25 寻一个你(电视剧《苍兰诀》温情主题曲) TTTTTeehom
  26. 26 子莫格尼 杉和
  27. 27 Cat Cafe Shoffy
  28. 28 风停了雨停了我们还拥抱着 Superluckyqi
  29. 29 寂寞沙洲冷 于潼
  30. 30 三国恋 王巨星
  31. 31 达尔文 林俊杰
  32. 32 有些 颜人中
  33. 33 小模样 张小只ya
  34. 34 是否 程响
  35. 35 楼顶上的小斑鸠 队长
  36. 36 笑场 薛之谦
  37. 37 还是分开 张叶蕾
  38. 38 修炼爱情 林俊杰
  39. 39 二零三 毛不易
  40. 40 雅俗共赏 许嵩
  41. 41 Serendipity 古瑞斯Graps/Zakiya晴子
  42. 42 就让这大雨全都落下·2023 刘大拿
  43. 43 老男孩 筷子兄弟
  44. 44 有何不可 许嵩
  45. 45 缓缓 杜宣达
  46. 46 好久不见 陈奕迅
  47. 47 爱的魔法(Cover 金莎) 封茗囧菌
  48. 48 在你的身边 盛哲
  49. 49 带我去找夜生活 告五人
  50. 50 假面舞会 很美味
  51. 51 STAY The Kid LAROI/Justin Bieber
  52. 52 我好想睡觉的 无敌西红柿
  53. 53 日不落(温柔版)
  54. 54 恋爱画板 锦零
  55. 55 7710 好乐无荒/尹露浠
  56. 56 给你呀(又名:for ya) 蒋小呢
  57. 57 Love Story Taylor Swift
  58. 58 Plain Jane(Remix 13z) 鱼幼微
  59. 59 晚风 7opy/BT07
  60. 60 拜托 孙晨
  61. 61 乌梅子酱 李荣浩
  62. 62 南半球与北海道 范倪Liu
  63. 63 星河万里 Rom邢锐
Cat Cafe - Shoffy
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Loading

点击右上角即可分享
微信分享提示