第1章 环境搭建 1
1.1环境搭建 1
1.1.1安装GitHub 1
1.1.2安装Maven 1
1.2编译源码 2
1.3源码目录说明 3
1.4安装流程设计器 4
1.5工程搭建 5
第2章 探险流程引擎 7
2.1流程配置文件 7
2.1.1 Activiti配置风格 7
2.1.2 Spring配置风格 8
2.2流程引擎架构 10
2.3构造流程引擎实例对象 12
2.3.1初始化流程引擎之Activiti配置风格 14
2.3.2.构造流程引擎实例对象 15
2.3.3创建流程引擎配置类实例 16
2.3.4初始化流程引擎 18
2.3.5初始化流程引擎之Spring配置风格 19
2.4初始化流程引擎配置类 22
2.5配置器 23
2.5.1初始化配置器 23
2.5.2配置器实战 25
2.6初始化流程引擎 26
2.6.1操作引擎表 28
2.7管理流程引擎 29
2.7.1注册流程引擎 29
2.7.2关闭流程引擎 30
2.8流程引擎生命周期监听器 30
2.9其他方式构造引擎实例 31
2.9.1 ProcessEngineConfiguration类创建引擎 31
2.9.2编程方式创建引擎 33
第3章 初识流程资源部署 34
3.1流程资源概述 34
3.1.1流程文档部署生命周期 34
3.1.2 DeploymentBuilder核心类 35
3.2流程文档部署 36
3.2.1定义流程文档 36
3.2.2文本方式部署 37
3.2.3 classpath资源部署 38
3.2.4流式部署 39
3.3 BpmnModel方式部署 40
3.4校验BpmnModel实例对象 42
3.5 BpmnModel转换流程文档 42
3.6流程文档转换BpmnModel 43
3.7使用建议 43
第4章 流程文档解析原理 45
4.1文档解析基础 45
4.1.1文档解析模型 45
4.1.2 Activiti文档解析技术选型演变 46
4.1.3文档解析实战 46
4.2元素解析功能架构设计 48
4.2.1 BPMN2.0元素概述 48
4.2.2元素解析功能架构设计 49
4.2.3开闭原则 50
4.2.4元素与元素属性承载类以及元素解析器的对应关系 51
4.2.5元素属性承载类架构 52
4.3元素解析环境准备 53
4.3.1文档转换器 53
4.3.2封装流程文档数据流 55
4.3.3初始化元素解析器 56
4.3.4文档转换器功能 57
4.3.5元素解析环境准备 58
4.3.6验证流程文档格式 60
4.4元素解析 61
4.4.1元素解析入口 61
4.4.2解析根元素 64
4.4.3流程内元素解析入口 66
4.4.4解析连线 68
4.4.5获取元素坐标 69
4.5子元素解析 69
4.5.1初始化子元素解析器 69
4.5.2解析子元素 70
4.5.3解析扩展元素 72
4.6节点与连线关联 77
第5章 自定义元素解析 79
5.1自定义元素解析原理 79
5.2存储自定义元素属性值 80
5.3自定义元素实战 81
5.4扩展黑名单元素 83
5.4.1扩展元素属性原理 84
5.4.2任务节点扩展属性实战 84
5.5扩展非黑名单元素 86
5.5.1自定义元素解析器 86
5.5.2替换引擎元素解析器 88
第6章 事件转发器 90
6.1初始化事件转发器 90
6.2事件转发器架构 91
6.3注册事件监听器 93
6.4事件转发功能之新老版本兼容 95
6.5事件转发原理以及缺陷 96
6.6添加事件监听器 98
6.6.1使用配置方式添加 98
6.6.2动态添加 99
6.7日志监听器 100
6.7.1初始化日志监听器 100
6.7.2初始化日志处理器 101
6.7.3日志处理器架构 102
6.7.4收集日志数据入口 103
6.8日志清洗器架构 106
6.8.1数据库日志清洗器 106
6.8.2生成日志数据 107
6.8.3日志存储 108
6.9自定义日志清洗器 108
第7章 流程文档部署原理 111
7.1初始化部署器 111
7.1.1初始化内置部署器 113
7.1.2部署器依赖关系 115
7.2部署命令 116
7.2.1过滤重复文档 119
7.2.2设置标识位 120
7.2.3添加会话缓存 121
7.2.4部署管理器 121
7.3 Bpmn部署器 122
7.3.1获取资源信息 126
7.3.2封装资源信息 126
7.3.3校验资源名称 127
7.3.4计算流程定义版本值 128
7.3.5生成流程定义id值 128
7.3.6移除过期作业 129
7.3.7添加作业 130
7.3.8处理消息 130
7.3.9处理信号 131
7.3.10设置流程启动人 132
7.4自定义部署器实战 133
第8章 缓存 134
8.1背景 134
8.2初始化缓存策略 135
8.3部署管理器 136
8.4缓存处理类架构 137
8.5默认缓存处理类及Bug 138
8.6流程定义缓存 139
8.6.1自定义缓存处理类 139
8.6.2验证自定义缓存处理类 141
8.7 Activiti新特性之节点缓存 142
8.8节点缓存实战 142
8.9节点缓存原理 144
8.9.1初始化节点缓存数据 145
8.9.2更新节点缓存 146
8.9.3节点缓存架构 148
8.9.4节点缓存使用误区 149
8.10自定义节点缓存实战 150
8.10.1自定义节点缓存类 150
8.10.2修复Activiti节点缓存不更新Bug 152
8.10.3扩展引擎配置类功能 153
8.10.4配置器高级用法 153
8.10.5使用自定义节点缓存类 154
8.11任务节点缓存数据获取原理 155
8.11.1获取任务节点缓存数据 156
8.11.2解析任务节点缓存数据 157
8.11.3运用任务节点缓存数据 157
8.12动态修改任务节点缓存数据 158
8.13节点缓存使用技巧 159
第9章 定时作业 160
9.1初始化作业执行器 160
9.2初始化作业处理器 161
9.2.1任务超时作业 163
9.2.2定时任务作业 164
9.2.3定时启动流程实例作业 165
9.2.4其他作业 165
9.3作业执行器原理 166
9.3.1初始化作业执行器 166
9.3.2启动作业执行器 167
9.4添加定时作业 168
9.5执行定时作业 170
9.6处理作业 173
9.6.1批量处理作业 174
9.6.2执行作业之异常处理 177
9.7关闭作业执行器 177
9.8自定义作业处理器 178
第10章 流程虚拟机 181
10.1流程虚拟机原理 181
10.2虚拟机入口 183
10.3流程定义转换准备 184
10.3.1初始化对象解析器集合 185
10.3.2初始化内置对象解析器 186
10.3.3解析调度类BpmnParseHandlers 188
10.3.4 BpmnParseHandler架构 188
10.3.5对象解析器架构 190
10.4流程对象解析入口 191
10.5流程子元素对象解析入口 194
10.5.1任务节点对象解析器 195
10.5.2创建ActivityImpl实例对象 196
10.5.3多实例对象解析 199
10.5.4连线对象解析 200
10.6 PvmProcessElement类架构 201
10.7自定义对象解析器 203
10.7.1任务节点扩展属性 203
10.7.2自定义任务节点对象解析器 204
10.7.3获取自定义属性 206
10.7.4运用自定义对象解析器 207
10.8流程虚拟机实战 208
10.8.1获取流程虚拟机对象 208
10.8.2入侵流程虚拟机 209
10.9操作连线表达式 210
10.9.1自动计算连线表达式 210
10.9.2获取连线表达式 211
第11章 监听器原理 212
11.1监听器生命周期 213
11.2内置记录监听器 214
11.2.1内置任务记录监听器 214
11.2.2内置执行记录监听器 215
11.3历史解析器架构 215
11.3.1添加内置记录监听器 216
11.3.2初始化历史解析器 218
11.3.3历史节点结束通知 219
11.3.4控制归档历史数据级别 220
11.3.5更新历史数据 221
11.3.6历史节点开始通知 222
11.4注入执行监听器 223
11.5注入任务监听器 226
11.6触发执行监听器 227
11.6.1 class方式调度 227
11.6.2 delegateExpression方式调度 230
11.6.3 expression方式调度 231
11.6.4执行监听器触发入口 232
11.7触发任务监听器 233
11.8监听器代理 234
11.8.1默认代理类 234
11.8.2自定义代理类 235
11.9自定义全局任务监听器 236
11.10 Activiti新特性之字段注射模式 238
第12章Activiti之设计模式 239
12.1命令模式说明 239
12.1.1命令模式的结构说明 239
12.1.2命令模式实战 240
12.2 Activiti命令模式 241
12.2.1初始化命令配置类 242
12.2.2 Activiti事务传播行为 243
12.2.3 Spring事务拦截器 244
12.2.4初始化命令调度者 245
12.2.5初始化命令上下文工厂 245
12.2.6初始化命令拦截器 246
12.3 Activiti职责链模式 247
12.4命令相关类职责 249
12.5命令拦截器 250
12.5.1日志拦截器 250
12.5.2命令上下文拦截器 251
12.5.3上下文类 252
12.5.4创建命令上下文实例对象 253
12.5.5命令调度者拦截器 254
12.6自定义命令拦截器 255
12.7命令类调度入口 256
12.8 Activiti事务 257
12.8.1 MyBatis事务管理 257
12.8.2事务上下文架构 258
12.8.3事务上下文工厂类 259
12.8.4事务监听器 260
12.8.5注册同步事务 261
第13章 流程虚拟机运转 262
13.1流程实例运转入口 262
13.2启动流程实例命令类 263
13.2.1获取ProcessDefinitionEntity实例对象 265
13.2.2重新生成流程定义缓存数据 265
13.3创建流程实例 266
13.3.1创建ExecutionEntity实例对象 269
13.3.2获取dataObject 272
13.3.3区别流程实例与执行实例 272
13.3.4添加历史流程实例数据 273
13.4虚拟机运转原理 273
13.5 AtomicOperation架构 274
13.6流程实例启动 276
13.6.1非异步节点处理 277
13.6.2异步节点处理 278
13.7原子类流转 281
13.7.1流程启动原子类 281
13.7.2流程启动准备原子类 282
13.7.3活动节点执行原子类 283
13.7.4开始节点行为类 283
13.7.5途经连线 286
13.7.6通知连线完成原子类 287
13.7.7连线销毁原子类 287
13.7.8其他原子类 289
13.8 Activiti新特性之忽略节点 289
第14章 行为篇 291
14.1活动行为工厂类 291
14.1.1初始化活动行为工厂类 291
14.1.2活动行为类架构 292
14.2排他网关行为类原理 293
14.3扩展排他网关实战 296
14.3.1自定义排他网关行为类 296
14.3.2自定义活动行为工厂类 297
14.3.3替换默认活动行为工厂类 297
14.4任务节点处理人多元化配置 298
14.4.1任务处理人扩展 299
14.4.2自定义任务解析器 299
14.4.3自定义任务行为类 300
14.4.4自定义活动行为工厂类 301
14.5忽略节点使用误区 302
14.6修复Activiti忽略节点Bug 303
14.7修复Activiti子流程业务键Bug 303
第15章Activiti存储之MyBatis 306
15.1初始化dataSource 306
15.2 Activiti数据访问层关系分析 308
15.2.1实体类与数据库表的映射 309
15.2.2实例化SqlSessionFactory 310
15.3自定义Mapper实战 313
15.3.1自定义Mapper 313
15.3.2自定义SQL执行原理 314
15.4 SessionFactory 316
15.4.1初始化SessionFactory 316
15.4.2 SessionFactory架构 318
15.5 Session 319
15.5.1 Session架构 319
15.5.2实例化方式创建Session实例 320
15.5.3反射方式创建Session实例 320
15.5.4实例化DbSqlSession 321
15.6 SQL语句 321
15.6.1 SQL语句适配器 321
15.6.2 SQL执行id值生成规则 323
15.7数据层和数据的关系 325
15.7.1 PersistentObject业务对象 325
15.7.2实体管理类 325
15.8添加会话缓存 326
15.9更新操作 329
15.9.1会话缓存方式更新 329
15.9.2 SqlSession方式更新 329
15.10删除操作 330
15.10.1 DeleteOperation接口 330
15.10.2 BulkDeleteOperation删除数据 331
15.10.3 CheckedDeleteOperation删除数据 332
15.10.4乐观锁 334
15.11刷新会话缓存入口 334
15.12会话缓存数据持久化 336
15.12.1移除不必要的数据 336
15.12.2刷新序列化变量 338
15.12.3获取更新对象 340
15.12.4刷新数据 342
15.12.5解决依赖数据插入先后顺序 343
15.12.6性能优化 344
第16章 实战 345
16.1高并发id生成器 345
16.1.1 id生成器初始化 345
16.1.2自增id生成器 346
16.1.3自定义主键生成器 347
16.2变量类型 348
16.2.1初始化变量管理类 348
16.2.2变量管理类架构 350
16.2.3变量处理类 350
16.2.4自定义变量处理类 351
16.3 ServiceLoader方式注入配置器 353
16.4节点跳转 354
16.4.1常规节点跳转 355
16.4.2分支节点跳转 357
16.4.3多实例节点跳转 359
16.5会签 362
16.5.1串行多实例 362
16.5.2认领和归还任务 364
16.5.3代理任务 364
16.5.4并行多实例 365
16.5.5加签 366
16.5.6减签和退签 368
16.6会签节点自定义权重实现 370
16.6.1定义处理人权重 370
16.6.2获取权重信息并自动计算 371
16.6.3优化建议 373
16.7接管A ctiviti 374
16.7.1接管Activiti映射文件 374
16.7.2禁用用户表和组表 375
16.7.3自定义用户角色和部门表 375
16.7.4扩展任务节点参与者表 376
16.7.5自定义任务节点参与者命令类 377
16.7.6流程文档支持设置部门属性 378
16.7.7解析及运用流程文档部门属性 379
16.7.8自定义代办SQL 380
16.8接管Activiti实体管理类 381