文章

【若依】23、流程图绘制

经典工具:Flowable Eclipse Designer;但是,这是一个 Eclipse 插件。 IDEA:

  • IDEA 默认就有一个流程图绘制工具(不推荐)。
  • IDEA 流程绘制插件 flowable-bpmn-visualizer,勉强能用。

其他的绘制工具:

  1. flowable-ui 这是官方提供的一个 flowable 的工具,里边有很多功能,包括画流程图。
  2. bpmn.js 这个工具是 Camunda 提供的,可以嵌入到项目中,利用 bpmn.js 可以开发一个流程绘制工具。原生的 bpmn.js 画出来的流程图只能在 Camunda 中使用,但经过改造,就可以在 flowable 中使用了。

    flowable-bpmn-visualizer

    插件安装: image.png 安装完,重启 IDEA 即可。 在 IDEA 中,当我们安装了这个插件之后,新建文件的时候,就有相应的选项: image.png 选择这个就可以新建一个流程图了。 image.png 绘制关键节点: image.png 注意:这里如果是传递变量需要用 ${} 表达式,如果是字符串,直接写即可; 例如,这个节点由一个名为 yueyazhui 的用户来处理,那么写法如下: image.png 例如,这个节点由一个名为变量 user 的值的用户来处理,那么写法如下: image.png 例如,这个节点由一个角色名为 managers 的用户来处理,那么写法如下: image.png 注意:从互斥网关(排他性网关)出来的线条中,有一个 Condition expression,表示这个线条执行的条件。 当用户在审批的时候,本质上其实就是传递一个变量,变量值为 true 或者 false。 ${approve}表示这个变量的名字为 approve。 image.png 批准发邮件的服务: 齿轮表示这是一个服务任务,也就是系统自动完成的,系统自动完成的方式有很多种,其中一种是提前将自己的业务逻辑在 Java 类中写好,然后这里配置一下类的完整路径即可。 image.png 从互斥网关出来后,approve 变量如果为 false,那么就进入到拒绝发送邮件的服务中。 image.png

flowable-ui

Flowable 官方推荐的一个流程引擎辅助工具。

1. 安装

有两种方式: 官方提供的 war 包 下载地址:https://github.com/flowable/flowable-engine/releases/download/flowable-6.7.2/flowable-6.7.2.zip;这个 zip 包中有一个 wars 文件夹,里边包含了 flowable-ui 的 war 包,直接启动这个 war 包即可; 注意:解压路径不要有中文。 默认的端口号是 8080。 启动命令:

1
java -jar flowable-ui.war --server.port=8060

image.png 页面浏览地址:http://localhost:8060/flowable-uiimage.png docker 安装

1
docker run -d -p 8060:8080 flowable/flowable-ui

2. 登录

默认登录用户名是 admin,默认登录密码是 test。 image.png

3. 功能模块

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

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

    4. 身份管理应用程序

    创建用户 image.png 新建的用户是没有权限的;所以新建的用户登录成功后,看不到任何功能模块。 创建用户组,添加用户 image.png 将来在画流程图的时候,可以设置某一个 UserTask 由某一个用户组来处理,这个用户组中的所有用户,都可以处理这个 UserTask。 为用户或用户组添加相应的权限 image.png

  • 访问 idm 应用:访问功能4.
  • 访问 admin 应用:访问功能3。
  • 访问 modeler 应用:访问功能2.
  • 访问 workflow 应用:访问功能1.
  • 访问 REST API:访问 REST API 接口的。

    5. 管理员应用程序

    image.png

    6. 建模器应用程序

    核心功能:画流程图。 绘制报销流程:

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

      创建业务流程模型 image.png 注意,模型key 在当前应用中必须是唯一的,将来通过 Java 代码去操作这个模型的时候,就是通过 模型key 去识别这个模型。 绘制出来的流程图: image.png 注意,在一个流程图中,开始节点有且只有一个,结束节点可以有多个。

表单问题

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

  • 流程变量
  • 表单

这两种方式都可以通过 $ 表达式去访问,例如${money <= 1000}${ceo_approve_or_reject_radio == "批准"};区别在于,流程变量是零散的,而表单是整的。

任务处理人

对于一个 UserTask 而言,任务处理人有四种: image.png

  • 流程发起人,由流程的启动人/发起人来处理这个任务。
  • 单个用户,直接指定某一个具体的用户来处理这个任务,注意这里只能指定一个用户,并且这个用户将来在处理任务的时候,不需要认领,直接就可以处理。
  • 候选用户:可以同时指定多个用户来处理这个任务,将来用户在处理的时候,需要先认领(Claim)任务,然后才能处理。
  • 候选组:可以同时指定多个用户组来处理这个任务,这个处理的时候,也需要先认领,再处理。
    基本概念
  • 流程定义(ProcessDefinition):绘制的流程图、流程的 XML 文件。
  • 流程(ProcessInstance):一个启动了的流程实例就是一个流程,流程可以是已经执行完毕的,也可以是正在执行中的。流程的定义相当于是一个类,而流程则相当于是一个对象。
  • 任务(Task):一个 ProcessInstance 中,需要具体处理的节点。

    7. 任务应用程序

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

本文由作者按照 CC BY 4.0 进行授权