第1章Activiti介绍 1
1.1工作流介绍 2
1.2 BPMN 2.0规范简述 2
1.2.1 BPMN 2.0概述 3
1.2.2 BPMN 2.0元素 3
1.2.3 BPMN 2.0的XML结构 5
1.3 Activiti介绍 5
1.3.1 Activiti的出现 5
1.3.2 Activiti的发展 5
1.3.3选择Activiti还是jBPM 5
1.4本章小结 6
第2章 安装与运行Activiti 7
2.1下载与运行Activiti 8
2.1.1下载和安装JDK 8
2.1.2下载和安装MySQL 9
2.1.3下载和安装Activiti 10
2.2运行官方的Activiti示例 11
2.2.1请假流程概述 11
2.2.2新建用户 11
2.2.3定义流程 12
2.2.4发布流程 14
2.2.5启动与完成流程 15
2.2.6流程引擎管理 16
2.3安装开发环境 17
2.3.1下载Eclipse 17
2.3.2安装Activiti插件 18
2.4编写第一个Activiti程序 19
2.4.1如何运行本书示例 19
2.4.2建立工程环境 19
2.4.3创建配置文件 20
2.4.4创建流程文件 20
2.4.5加载流程文件与启动流程 21
2.5本章小结 22
第3章Activiti数据库设计 23
3.1通用数据表 24
3.1.1资源表 24
3.1.2属性表 24
3.2流程存储表 25
3.2.1部署数据表 25
3.2.2流程定义表 25
3.3身份数据表 25
3.3.1用户表 25
3.3.2用户账号(信息)表 26
3.3.3用户组表 26
3.3.4关系表 26
3.4运行时数据表 26
3.4.1流程实例(执行流)表 26
3.4.2流程任务表 27
3.4.3流程参数表 27
3.4.4流程与身份关系表 27
3.4.5工作数据表 28
3.4.6 事件描述表 28
3.5历史数据表 28
3.5.1流程实例表 28
3.5.2流程明细表 29
3.5.3历史任务表和历史行为表 29
3.5.4附件表和评论表 29
3.6 DMN规则引擎表 30
3.6.1决策部署表 30
3.6.2决策表 30
3.6.3部署资源表 30
3.7本章小结 30
第4章Activiti流程引擎配置 31
4.1流程引擎配置对象 32
4.1.1读取默认的配置文件 32
4.1.2读取自定义的配置文件 33
4.1.3读取输入流的配置 33
4.1.4使用createStandaloneInMemProcess-EngineConfiguration方法 34
4.1.5使用createStandaloneProcessEngine-Configuration方法 34
4.2数据源配置 35
4.2.1 Activiti支持的数据库 35
4.2.2 Activiti与Spring 35
4.2.3 JDBC配置 35
4.2.4 DBCP数据源配置 36
4.2.5 C3P0数据源配置 37
4.2.6 Activiti其他数据源配置 38
4.2.7数据库策略配置 38
4.2.8 databaseType配置 39
4.3其他属性配置 40
4.3.1 history配置 40
4.3.2 asyncExecutorActivate配置 41
4.3.3邮件服务器配置 41
4.4 ProcessEngineConfiguration bean 41
4.4.1 ProcessEngineConfiguration及其子类 41
4.4.2自定义ProcessEngineConfiguration 42
4.5 Activiti的命令拦截器 43
4.5.1命令模式 44
4.5.2责任链模式 45
4.5.3编写自定义拦截器 47
4.6本章小结 49
第5章 流程引擎的创建 50
5.1 ProcessEngineConfiguration的buildProcessEngine方法 51
5.2 ProcessEngines对象 51
5.2.1 init方法与getDefaultProcessEngine方法 51
5.2.2 registerProcessEngine方法和unregister方法 52
5.2.3 retry方法 53
5.2.4 destroy方法 53
5.3 ProcessEngine对象 54
5.3.1服务组件 54
5.3.2关闭流程引擎 55
5.3.3流程引擎名称 56
5.4本章小结 56
第6章 用户组与用户 57
6.1用户组管理 58
6.1.1 Group对象 58
6.1.2创建用户组 58
6.1.3修改用户组 59
6.1.4删除用户组 60
6.2 Activiti数据查询 61
6.2.1查询对象 61
6.2.2 list方法 61
6.2.3 listPage方法 62
6.2.4 count方法 63
6.2.5排序方法 63
6.2.6 ID排序问题 64
6.2.7 多字段排序 66
6.2.8 singleResult方法 67
6.2.9 用户组数据查询 68
6.2.10原生SQL查询 69
6.3用户管理 71
6.3.1 User对象 71
6.3.2添加用户 71
6.3.3修改用户 72
6.3.4删除用户 72
6.3.5验证用户密码 73
6.3.6用户数据查询 74
6.3.7设置认证用户 75
6.4用户信息管理 77
6.4.1添加和删除用户信息 77
6.4.2查询用户信息 78
6.4.3设置用户图片 78
6.5用户组与用户的关系 80
6.5.1绑定关系 80
6.5.2解除绑定 81
6.5.3查询用户组下的用户 81
6.5.4查询用户所属的用户组 82
6.6本章小结 83
第7章 流程存储 84
7.1流程文件部署 85
7.1.1 Deployment对象 85
7.1.2 DeploymentBuilder对象 85
7.1.3添加输入流资源 86
7.1.4添加classpath资源 87
7.1.5添加字符串资源 88
7.1.6添加压缩包资源 88
7.1.7添加BPMN模型资源 89
7.1.8修改部署信息 90
7.1.9过滤重复部署 90
7.1.10取消部署时的验证 92
7.2流程定义的管理 93
7.2.1 ProcessDefinition对象 93
7.2.2流程部署 93
7.2.3流程图部署 95
7.2.4流程图自动生成 95
7.2.5中止与激活流程定义 96
7.2.6流程定义缓存配置 97
7.2.7自定义缓存 98
7.3流程定义权限 100
7.3.1设置流程定义的用户权限 100
7.3.2设置流程定义的用户组权限 101
7.3.3 IdentityLink对象 102
7.3.4查询权限数据 102
7.4 RepositoryService数据查询与删除 104
7.4.1查询部署资源 104
7.4.2查询流程文件 105
7.4.3查询流程图 106
7.4.4查询部署资源名称 107
7.4.5删除部署资源 107
7.4.6 DeploymentQuery对象 108
7.4.7 ProcessDefinitionQuery对象 109
7.5本章小结 109
第8章 流程任务管理 110
8.1任务的创建与删除 111
8.1.1 Task接口 111
8.1.2创建与保存Task实例 112
8.1.3删除任务 112
8.2任务权限 113
8.2.1设置候选用户组 114
8.2.2设置候选用户 115
8.2.3权限数据查询 116
8.2.4设置任务持有人 118
8.2.5设置任务代理人 119
8.2.6添加任务权限数据 119
8.2.7删除用户组权限 121
8.2.8删除用户权限 122
8.3任务参数 123
8.3.1基本类型参数设置 124
8.3.2序列化参数 125
8.3.3获取参数 126
8.3.4参数作用域 127
8.3.5设置多个参数 128
8.3.6数据对象 129
8.4任务附件管理 130
8.4.1 Attachment对象 130
8.4.2创建任务附件 130
8.4.3附件查询 132
8.4.4删除附件 133
8.5任务评论与事件记录 133
8.5.1 Comment对象 133
8.5.2新增任务评论 134
8.5.3事件的记录 135
8.5.4数据查询 136
8.6 任务声明与完成 137
8.6.1任务声明 137
8.6.2任务完成 138
8.7本章小结 139
第9章 流程控制 140
9.1流程实例与执行流 141
9.1.1流程实例与执行流概念 141
9.1.2流程实例和执行流对象(ProcessInstance与Execution) 141
9.2启动流程 142
9.2.1 startProcessInstanceById方法 142
9.2.2 startProcessInstanceByKey方法 144
9.2.3 startProcessInstanceByMessage方法 145
9.3流程参数 146
9.3.1设置与查询流程参数 147
9.3.2流程参数的作用域 147
9.3.3其他设置参数的方法 149
9.4流程操作 149
9.4.1流程触发 149
9.4.2触发信号事件 150
9.4.3触发消息事件 152
9.4.4中断与激活流程 153
9.4.5删除流程 154
9.5流程数据查询 155
9.5.1执行流查询 155
9.5.2流程实例查询 157
9.6 本章小结 158
第10章 历史数据管理和流程引擎管理 159
10.1历史数据管理 160
10.1.1历史流程实例查询 160
10.1.2历史任务查询 161
10.1.3历史行为查询 163
10.1.4历史流程明细查询 165
10.1.5删除历史流程实例和历史任务 166
10.2 工作的产生 167
10.2.1异步任务产生的工作 168
10.2.2定时中间事件产生的工作 169
10.2.3定时边界事件产生的工作 170
10.2.4定时开始事件产生的工作 171
10.2.5流程抛出事件产生的工作 172
10.2.6 暂停工作的产生 174
10.2.7 无法执行的工作 175
10.3工作管理 176
10.3.1工作查询对象 176
10.3.2获取工作异常信息 176
10.3.3转移与删除工作 177
10.4数据库管理 178
10.4.1查询引擎属性 178
10.4.2数据表信息查询 179
10.4.3数据库操作 180
10.4.4数据表查询 180
10.5本章小结 181
第11章 流程事件 182
11.1事件分类 183
11.1.1按照事件的位置分类 183
11.1.2按照事件的特性分类 183
11.2事件定义 183
11.2.1定时器事件定义 184
11.2.2 cron表达式 184
11.2.3错误事件定义 186
11.2.4信号事件定义 186
11.2.5消息事件定义 187
11.2.6取消事件定义 187
11.2.7 补偿事件定义 188
11.2.8 其他事件定义 188
11.3开始事件 188
11.3.1无指定开始事件 188
11.3.2定时器开始事件 189
11.3.3消息开始事件 190
11.3.4错误开始事件 191
11.4结束事件 193
11.4.1无指定结束事件 193
11.4.2错误结束事件 194
11.4.3取消结束事件和取消边界事件 196
11.4.4终止结束事件 199
11.5边界事件 200
11.5.1定时器边界事件 201
11.5.2错误边界事件 203
11.5.3信号边界事件 204
11.5.4补偿边界事件 206
11.6中间事件 209
11.6.1中间事件分类 209
11.6.2定时器中间事件 210
11.6.3信号中间Catching事件 211
11.6.4信号中间Throwing事件 213
11.6.5消息中间事件 215
11.6.6 无指定中间事件 215
11.7补偿中间事件 215
11.7.1补偿执行次数 215
11.7.2补偿的执行顺序 217
11.7.3补偿的参数设置 220
11.8本章小结 221
第12章 流程任务 222
12.1 BPMN 2.0任务 223
12.1.1任务的继承 223
12.1.2 XML约束 223
12.1.3任务的类型 225
12.2用户任务 226
12.2.1分配任务候选人 226
12.2.2分配任务代理人 228
12.2.3权限分配扩展 228
12.2.4使用任务监听器进行权限分配 229
12.2.5 使用JUEL分配权限 230
12.3脚本任务 232
12.3.1脚本任务 232
12.3.2 JavaScript脚本 233
12.3.3 Groovy脚本 234
12.3.4设置返回值 235
12.3.5 JUEL脚本 236
12.4服务任务 237
12.4.1 Java服务任务 238
12.4.2实现JavaDelegate 238
12.4.3使用普通Java Bean 240
12.4.4在Activiti中调用Web Service 241
12.4.5 import元素 242
12.4.6 itemDefinition和message元素 242
12.4.7 interface与operation元素 243
12.4.8设置Web Service参数与返回值 243
12.4.9发布Web Service 243
12.4.10使用Web Service Task 245
12.4.11 JavaDelegate属性注入 248
12.4.12在JavaDelegate中调用Web Service 251
12.4.13 Shell任务 253
12.5其他任务 255
12.5.1手动任务和接收任务 255
12.5.2邮件任务 257
12.5.3 Mule任务和业务规则任务 258
12.6任务监听器 259
12.6.1使用class指定监听器 259
12.6.2使用expression指定监听器 260
12.6.3使用delegateExpression指定监听器 261
12.6.4监听器的触发 262
12.6.5属性注入 263
12.7流程监听器 263
12.7.1配置流程监听器 263
12.7.2触发流程监听器的事件 264
12.8本章小结 267
第13章 其他流程元素 268
13.1子流程 269
13.1.1嵌入式子流程 269
13.1.2调用式子流程 271
13.1.3调用式子流程的参数传递 273
13.1.4事件子流程 275
13.1.5事务子流程 277
13.1.6特别子流程 280
13.2 顺序流 282
13.2.1条件顺序流 282
13.2.2默认顺序流 284
13.3流程网关 286
13.3.1单向网关 286
13.3.2并行网关 288
13.3.3兼容网关 291
13.3.4事件网关 293
13.4流程活动特性 295
13.4.1多实例活动 295
13.4.2设置循环数据 297
13.4.3获取循环元素 298
13.4.4循环的内置参数 300
13.4.5循环结束条件 302
13.4.6补偿处理者 304
13.5本章小结 304
第14章Activiti与规则引擎 305
14.1概述 306
14.1.1规则引擎Drools 306
14.1.2 Drools下载与安装 306
14.2开发第一个Drools应用 307
14.2.1建立Drools环境 307
14.2.2编写规则 308
14.2.3加载与运行 308
14.3 Drools规则语法概述 309
14.3.1规则文件结构 309
14.3.2关键字 310
14.3.3规则编译 310
14.4类型声明 311
14.4.1声明新类型 312
14.4.2使用ASM操作字节码 313
14.4.3类型声明的使用 314
14.4.4类型的继承 316
14.4.5声明元数据 317
14.5函数和查询 317
14.5.1函数定义和使用 318
14.5.2查询的定义和使用 320
14.6规则语法 321
14.6.1全局变量 322
14.6.2规则属性 323
14.6.3条件语法 327
14.6.4行为语法 330
14.7 Activiti调用规则 331
14.7.1业务规则任务 332
14.7.2制定销售单优惠规则 333
14.7.3实现销售流程 336
14.8本章小结 339
第15章 基于DMN的Activiti规则引擎 340
15.1 DMN规范概述 341
15.1.1 DMN的出现背景 341
15.1.2 Activiti与Drools 341
15.1.3 DMN的XML样例 341
15.2 DMN的XML规范 342
15.2.1决策 342
15.2.2决策表 343
15.2.3输入参数 343
15.2.4输出结果 344
15.2.5规则 344
15.3运行第一个应用 345
15.3.1建立项目 345
15.3.2规则引擎配置文件 346
15.3.3编写DMN文件 346
15.3.4加载与运行DMN文件 347
15.4规则引擎API简述 348
15.4.1创建规则引擎 348
15.4.2配置规则引擎 349
15.4.3数据查询 350
15.4.4执行DMN文件 350
15.5规则匹配 351
15.5.1 MVEL表达式简介 351
15.5.2执行第一个表达式 351
15.5.3使用对象执行表达式 352
15.5.4规则引擎规则匹配逻辑 353
15.5.5自定义表达式函数 354
15.5.6 Activiti中的自定义表达式函数 355
15.5.7销售打折案例 357
15.6 本章小结 360
第16章 整合第三方框架 361
16.1 Spring Framework 362
16.1.1 Spring的IoC 362
16.1.2 Spring的AOP 362
16.1.3使用IoC 363
16.1.4使用AOP 364
16.2 Activiti整合Spring 365
16.2.1 SpringProcessEngineConfiguration 365
16.2.2资源的部署模式 367
16.2.3 ProcessEngineFactoryBean 367
16.2.4在bean中注入Activiti服务 368
16.2.5在Activiti中使用Spring的bean 369
16.3 Activiti整合Web项目 371
16.3.1安装Tomcat插件 371
16.3.2加入Spring 373
16.3.3整合Hibemate 375
16.3.4配置声明式事务 377
16.3.5添加Struts配置 378
16.3.6实现一个最简单的逻辑 378
16.3.7测试事务 380
16.3.8添加Activiti 380
16.4 Activiti与Spring Boot 381
16.4.1 Spring Boot项目简介 381
16.4.2下载与安装Maven 382
16.4.3开发第一个Web应用 383
16.4.4 Activiti与Spring Boot的整合 386
16.5 Activiti与JPA 388
16.5.1建立与运行JPA项目 388
16.5.2在Activiti中使用JPA 390
16.5.3 Activiti、Spring与JPA的整合 391
16.5.4基于JPA的例子 393
16.6 本章小结 395
第17章Activiti开放的Web Service 396
17.1 Web Service简介 397
17.1.1 Web Service 397
17.1.2 SOAP协议 397
17.1.3 REST架构 397
17.1.4 REST的设计准则 398
17.1.5 REST的主要特性 398
17.1.6 SOAP RPC与REST的区别 399
17.2使用Sping MVC发布REST 399
17.2.1在Web项目中加入Spring MVC 400
17.2.2发布REST的Web Service 401
17.2.3使用Restlet编写客户端 402
17.2.4使用CXF编写客户端 402
17.2.5使用HttpClient编写客户端 403
17.2.6 准备测试数据 403
17.2.7部署Activiti的Web Service 403
17.2.8 接口访问权限 404
17.2.9访问Activiti接口 404
17.3流程存储服务 405
17.3.1上传部署文件 405
17.3.2部署数据查询 406
17.3.3部署资源查询 406
17.3.4查询单个部署资源 407
17.3.5删除部署 408
17.4本章小结 409
第18章Activiti功能进阶 410
18.1流程控制逻辑 411
18.1.1概述 411
18.1.2设计流程对象 411
18.1.3创建流程节点行为类 413
18.1.4编写业务处理类 414
18.1.5将流程XML转换为Java对象 414
18.1.6编写客户端代码 416
18.2 Activiti的表单 416
18.2.1概述 416
18.2.2表单属性 417
18.2.3外部表单 418
18.2.4关于动态工作流和动态表单 419
18.3流程图XML 419
18.3.1节点元素 419
18.3.2衔接元素 420
18.3.3流程图与流程文件的转换 420
18.4流程操作 421
18.4.1流程回退 421
18.4.2会签 422
18.5本章小结 424
第19章 办公自动化系统 425
19.1使用技术 426
19.1.1表现层技术 426
19.1.2 MVC框架 426
19.1.3 Spring和Hibemate 426
19.2功能简述 427
19.2.1系统的角色管理 427
19.2.2薪资计算流程 427
19.2.3请假流程 427
19.2.4薪资调整流程 427
19.2.5报销流程 428
19.3框架整合 428
19.3.1创建Web项目 428
19.3.2.整合Spring 429
19.3.3整合Hibemate 430
19.3.4整合Struts2 432
19.3.5整合Activiti 433
19.4数据库设计 434
19.4.1薪资表 434
19.4.2请假记录表 434
19.4.3薪资调整记录表 435
19.4.4报销记录表 436
19.5 初始化数据 437
19.5.1初始化角色数据 437
19.5.2薪资计算流程 438
19.5.3请假流程 439
19.5.4报销流程 439
19.5.5薪资调整流程 440
19.6 角色管理 441
19.6.1用户组管理 442
19.6.2用户列表 443
19.6.3新建用户 445
19.6.4用户登录 446
19.7流程启动 447
19.7.1启动请假流程 447
19.7.2启动报销流程 450
19.7.3启动薪资调整流程 452
19.8申请列表 453
19.8.1申请列表的实现 453
19.8.2请假申请列表 454
19.8.3报销申请列表 455
19.8.4薪资调整列表 455
19.8.5查看流程图 456
19.9流程任务 457
19.9.1待办任务列表 457
19.9.2领取任务与受理任务列表 459
19.9.3查询任务信息 460
19.9.4任务审批 462
19.9.5运行OA的流程 463
19.10本章小结 463