目 录
第1章 走近工作流 1
1.1 工作流基础 1
1.1.1 工作流 1
1.1.2 业务流程管理 1
1.1.3 业务流程建模标注 2
1.2 Flowable体系概述 2
1.2.1 工具组件 2
1.2.2 核心实现 3
1.2.3 引擎服务 4
1.2.4 数据库表 5
1.3 Flowable与Activiti、低代码的区别与联系 6
1.3.1 Flowable与Activiti 6
1.3.2 Flowable与低代码 6
本章小结 7
第2章 启动Flowable流程引擎 8
2.1 开发环境 8
2.1.1 JDK安装 8
2.1.2 MySQL安装 9
2.1.3 Maven安装 9
2.1.4 IDE安装 9
2.2 流程设计器 9
2.2.1 Flowable Designer 10
2.2.2 Flowable Modeler 10
2.2.3 外部设计器 12
2.3 启动第一个完整流程 13
2.3.1 创建项目 14
2.3.2 创建流程引擎 15
2.3.3 创建流程定义文件 17
2.3.4 部署流程定义文件 19
2.3.5 启动流程实例 20
2.3.6 查询与完成任务 21
2.3.7 实现JavaDelegate 22
2.3.8 使用历史数据 23
本章小结 24
第3章 集成Spring Boot 25
3.1 搭建项目 25
3.1.1 创建Spring Boot项目 25
3.1.2 加入Flowable依赖包 28
3.1.3 添加数据源 29
3.2 REST支持 30
3.2.1 添加REST依赖 30
3.2.2 添加流程文件 30
3.2.3 Service层代码示例 31
3.2.4 Controller层代码示例 31
3.3 Spring及Flowable原理 33
3.3.1 Spring构建过程 33
3.3.2 Flowable流程引擎构建过程 34
3.3.3 Flowable引擎配置 36
本章小结 37
第4章 流程部署 38
4.1 流程部署方式 38
4.1.1 classpath部署 39
4.1.2 Spring Boot自动部署 39
4.1.3 字符串部署 40
4.1.4 流式部署 40
4.1.5 ZIP压缩包部署 41
4.1.6 BpmnModel部署 41
4.2 流程部署管理 42
4.2.1 获取已部署的流程列表 42
4.2.2 读取流程图片 43
4.2.3 读取流程定义的XML内容 43
4.2.4 删除部署 43
4.3 部署原理 44
4.3.1 初始化部署器 44
4.3.2 部署过程 45
4.3.3 实际部署 46
本章小结 47
第5章 流程变量和表单 48
5.1 流程变量 48
5.1.1 运行时变量 48
5.1.2 历史变量 49
5.2 表单 49
5.2.1 内置表单 49
5.2.2 外部表单 50
5.2.3 表单字段类型 53
5.2.4 自定义表单字段类型 53
5.2.5 自定义表单引擎 55
本章小结 56
第6章 集成JPA 57
6.1 JPA支持 57
6.2 JPA版本的请假流程 58
6.2.1 简单的请假流程 58
6.2.2 在启动流程时持久化JPA实体 60
6.2.3 更改JPA实体的属性 63
6.2.4 清理历史变量表的数据 64
本章小结 65
第7章 用户和组 66
7.1 指派用户和组 66
7.1.1 指派用户 66
7.1.2 指派潜在的用户 67
7.1.3 指派潜在的组 67
7.1.4 指派潜在的用户和组 68
7.1.5 自定义指派 68
7.2 身份管理 69
7.3 流程启动认证 70
7.4 集成LDAP 71
本章小结 72
第8章 事件 73
8.1 启动事件 73
8.1.1 空启动事件 73
8.1.2 定时器启动事件 74
8.1.3 消息启动事件 75
8.1.4 信号启动事件 76
8.1.5 异常启动事件 76
8.2 结束事件 77
8.2.1 空结束事件 77
8.2.2 异常结束事件 77
8.2.3 终止结束事件 78
8.2.4 取消结束事件 78
8.3 事件定义 79
8.3.1 定时器事件定义 79
8.3.2 错误事件定义 81
8.3.3 信号事件定义 81
8.3.4 消息事件定义 84
本章小结 86
第9章 事件进阶 87
9.1 边界事件 87
9.1.1 定时器边界事件 87
9.1.2 错误边界事件 89
9.1.3 信号边界事件 91
9.1.4 消息边界事件 91
9.1.5 取消边界事件 91
9.1.6 补偿边界事件 92
9.2 捕获中间事件 93
9.2.1 定时器捕获中间事件 93
9.2.2 信号捕获中间事件 93
9.2.3 消息捕获中间事件 94
9.3 抛出中间事件 94
9.3.1 空抛出中间事件 94
9.3.2 信号抛出中间事件 95
9.3.3 补偿抛出中间事件 95
9.4 事件调度实现原理 97
本章小结 100
第10章 任务 101
10.1 常用的任务类型 101
10.1.1 用户任务 101
10.1.2 JavaService任务 102
10.1.3 业务规则任务 106
10.2 任务管理 107
10.2.1 任务完成 107
10.2.2 任务相关人员 107
10.2.3 查询任务列表 109
10.2.4 任务签收与反签收 109
10.2.5 任务委派 109
10.3 子任务 110
10.3.1 创建子任务 110
10.3.2 查询子任务 110
10.3.3 子任务的意见列表 111
本章小结 111
第11章 任务进阶 112
11.1 HTTP任务 112
11.1.1 配置客户端 112
11.1.2 配置HTTP任务 113
11.1.3 结果变量 115
11.1.4 错误处理 115
11.2 Web服务任务 117
11.2.1 I/O规范 118
11.2.2 数据输入关联 119
11.2.3 数据输出关联 120
11.3 脚本任务 120
11.3.1 脚本中的变量 121
11.3.2 脚本任务的返回值 122
11.4 接收任务和Shell任务 122
11.4.1 接收任务 122
11.4.2 Shell任务 124
11.5 执行监听器 125
11.6 任务监听器 127
11.7 监听器原理 129
11.7.1 创建及触发监听器 129
11.7.2 自定义监听器拦截 132
本章小结 133
第12章 顺序流和网关 134
12.1 顺序流 134
12.1.1 条件顺序流 134
12.1.2 默认顺序流 135
12.2 网关 135
12.2.1 排他网关 136
12.2.2 并行网关 137
12.2.3 包容网关 138
12.2.4 事件网关 140
本章小结 142
第13章 多实例活动 143
13.1 多实例配置 143
13.1.1 多实例数量 144
13.1.2 多实例结束 145
13.2 应用实例——用户任务 145
13.2.1 顺序方式 146
13.2.2 并行方式 147
13.2.3 设置结束条件 148
13.3 应用实例——请假会签 149
13.3.1 任务事件节点定义 149
13.3.2 连接节点定义 151
13.3.3 执行流程 152
13.4 审批意见 153
13.5 附件 154
本章小结 156
第14章 流程数据查询 157
14.1 标准查询 157
14.1.1 运行时查询 158
14.1.2 历史查询 158
14.2 Native查询 159
14.2.1 运行时查询 161
14.2.2 历史查询 162
14.3 自定义SQL查询 163
14.3.1 基于注解的映射语句 163
14.3.2 基于XML的映射语句 164
本章小结 168
第15章 子流程、调用活动与事务 169
15.1 子流程 169
15.1.2 事件子流程 171
15.1.3 事务子流程 173
15.2 调用活动 176
15.2.1 传递变量 177
15.2.2 引用同一个部署单元中的流程 178
15.2.3 示例 178
15.3 事务与并发 179
15.3.1 异步延续 179
15.3.2 失败重试 181
15.3.3 排他作业 181
本章小结 184
第16章 进阶用法 185
16.1 高并发ID生成器 185
16.2 多租户 188
16.2.1 租户ID传递 189
16.2.2 空租户 190
16.3 异步执行器 191
16.3.1 异步执行器的设计 191
16.3.2 配置异步执行器 193
16.3.3 集成消息队列 194
16.4 事件日志 199
16.5 安全脚本 202
本章小结 204
第17章 元素行为 205
17.1 行为类的架构 205
17.2 事件行为类的原理 207
17.2.1 空启动事件行为 207
17.2.2 消息启动事件行为 209
17.3 任务行为类的原理 211
17.3.1 用户任务行为 211
17.3.2 服务任务行为 215
17.4 网关行为类原理 218
本章小结 222
第18章 设计模式 223
18.1 策略模式 223
18.1.1 策略模式的应用实例 223
18.1.2 策略模式在引擎中的应用 225
18.2 状态模式 227
18.2.1 状态模式的应用实例 227
18.2.2 状态模式与策略模式的区别 230
18.3 命令模式 231
18.3.1 命令模式的应用实例 231
18.3.2 命令模式在引擎部署中的应用 234
18.4 观察者模式 237
18.4.1 观察者模式的应用实例 237
18.4.2 观察者模式在引擎中的应用 239
本章小结 241
第19章 案例管理模型 242
19.1 基础概念 242
19.2 一个简单的CMMN案例模型 243
19.2.1 创建新工程 244
19.2.2 案例定义 245
19.2.3 部署与执行 247
19.3 CMMN结构 251
19.3.1 基本结构 251
19.3.2 CMMN任务 253
19.3.3 脚本任务 256
19.3.4 事件监听器 258
19.4 哨兵计算 262
19.4.1 默认行为 263
19.4.2 事件触发模式 264
19.5 计划项控制 266
19.5.1 重复规则 266
19.5.2 手动激活规则 266
19.5.3 必需规则 268
19.5.4 中立完成规则 270
19.6 CMMN配置与部署 271
19.6.1 数据库表名称 271
19.6.2 部署缓存配置 271
19.6.3 日志 271
19.6.4 CMMN部署 272
19.7 CMMN API 272
19.7.1 CMMN引擎与服务 273
19.7.2 查询数据 273
19.7.3 变量 274
本章小结 274
第20章 决策模型标记 275
20.1 DMN结构 275
20.1.1 决策定义 275
20.1.2 决策表 275
20.1.3 命中策略 277
20.1.4 输入表达式和输出表达式 277
20.1.5 匹配规则 279
20.1.6 BPMN 2.0流程中的应用 280
20.2 Flowable DMN引擎配置 282
20.2.1 引擎配置 282
20.2.2 数据库表名称 283
20.2.3 部署缓存配置 283
20.2.4 日志 284
20.3 DMN部署 284
20.3.1 部