Flowable(一)初识

Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据等,众所周知,Flowable是Activit的一个分叉,Flowable的第一个版本(5.22.0)是基于Activit(5.21.0),关于为什么Flowable会从Activit分叉,感兴趣可以查看Flowable官方的文章Flowable and Activiti: What the Fork?!,这里不在赘述这些内容

Flowable官方文档介绍,可知Flowable遵循BPMNCMMNDMNFrom设计指导

  • BPMN(Business Process Model and Notation):用于流程管理
  • CMMN(Case Management Model and Notation):用于案例管理
  • DMN(Decision Model and Notation):用于决策规则
  • Form:用于表单和任务表单管理

Flowable 直运行

这里所说的"直运行",是指不需要写任何代码,仅需要改动相关的配置就可以运行起Flowable应用程序

准备工作

  • Flowable v6.4.2
  • MySQL8+
  • JDK & Tomcat 环境

MySQL8+ ,JDK,Tomcat环境代建可参考Linux 之 MySQLLinux 常用应用安装Windows 之 常用应用安装

已下操作均在Windows上,macOS上相差不大,操作流程基本一致

war部署

  1. 解压flowable.zip文件
    flowable-zip
  2. 拷贝需要启动的war到安装的Tomcat的webapps路径下
    flowable-tomact
  3. 命令行中执行startup.bat命令,或执行Tomcat的bin路径下,启动startup.bat文件
    flowable-startup
  4. 第一次启动,Tomcat控制台应该会出错,因为flowable-admin.war数据库配置默认使用H2数据库,我们需要修改数据库配置连接等信息
    flowable-mysql-config
    • 文件地址:<your tomcat path>/webapps/flowable-admin/WEB-INF/classes路径,flowable-default.properties文件及application-dev.properties文件
    • MySQL中需要一个名为 flowable 的数据库,没有请创建一个CREATE DATABASE flowable
    • 由于我使用的是 MySQL8 ,Tomcat 中不包含此驱动 jar 包,因此需要手动下载mysql-connector-java-8.x.x(和你数据库匹配版本).zip文件进行解压,拷贝mysql-connector-java-8.x.x.jar文件到 <your tomcat path>/lib路径下
  5. 重新在命令行中执行startup.bat命令,或执行Tomcat的bin路径下,启动startup.bat文件
  6. 正常情况到此等待服务器启动完成,如果不能正常启动,请查看Tomcat控制台是否有错误,按照提示解决错误,直到Tomcat不再有错误提示即可

使用

  1. 访问http://localhost:8080/flowable-idm,默认账号:admin,默认密码:test
    flowable-admin
  2. 访问http://localhost:8080/flowable-admin,后台管理
  3. 访问http://localhost:8080/flowable-modeler,流程定义管理
  4. 访问http://localhost:8080/flowable-task,用户任务管理
  5. 访问http://localhost:8080/flowable-rest/docs,流程引擎对外提供的API接口

Flowable 集成运行

这里所说的"集成运行",是指通过Flowable官方提供的jar文件,集成到我们的项目中运行的方式

Flowable 使用

其他

如何切换中文

Flowable中已包含中文语言,会根据操作系统语言,自动显示对应语言

startup.bat异常

查看控制它异常,例如当前flowable启动默认端口8080,被占用
flowable-aleady-bind

解决方法:查找占用端口进程netstat -ano|findstr 端口号,并kill它taskkill -PID 进程号 -F
flowable-kill-task