第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结构 4
1.3 Activiti介绍 4
1.3.1 Activiti的出现 5
1.3.2 Activiti的发展 5
1.3.3 选择Activiti还是jBPM 5
1.4 本章小结 5
第2章 安装与运行Activiti 6
2.1 下载与运行Activiti 7
2.1.1 下载和安装Ant 7
2.1.2 下载和安装Maven 8
2.1.3 下载和安装Activiti 9
2.1.4 运行第一个Activiti应用 9
2.2 安装开发环境 11
2.2.1 下载Eclipse 11
2.2.2 安装Activiti插件 11
2.2.3 获取Activiti源代码 13
2.3 编写第一个Activiti程序 15
2.3.1 如何运行本书案例 15
2.3.2 建立工程环境 15
2.3.3 创建配置文件 16
2.3.4 创建流程文件 16
2.3.5 加载流程文件与启动流程 17
2.4 本章小结 18
第3章 Activiti数据库设计 19
3.1 通用数据表 20
3.1.1 资源表 20
3.1.2 属性表 20
3.2 流程存储表 21
3.2.1 部署数据表 21
3.2.2 流程定义表 21
3.3 身份数据表 21
3.3.1 用户表 21
3.3.2 用户账号(信息)表 22
3.3.3 用户组表 22
3.3.4 关系表 22
3.4 运行时数据表 23
3.4.1 流程实例(执行流)表 23
3.4.2 流程任务表 23
3.4.3 流程参数表 24
3.4.4 流程与身份关系表 24
3.4.5 工作数据表 24
3.4.6 事件描述表 25
3.5 历史数据表 25
3.5.1 流程实例表 25
3.5.2 流程明细表 26
3.5.3 历史任务表和历史行为表 26
3.5.4 附件表和评论表 26
3.6 本章小结 27
第4章 Activiti流程引擎配置 28
4.1 ProcessEngineConfiguration 29
4.1.1 createProcessEngineConfigurationFromResourceDefault方法 29
4.1.2 createProcessEngineConfigurationFromResource方法 30
4.1.3 createProcessEngineConfigurationFromInputStream方法 30
4.1.4 createStandaloneInMemProcessEngineConfiguration方法 30
4.1.5 createStandaloneProcessEngineConfiguration方法 31
4.2 数据源配置 31
4.2.1 Activiti支持的数据库 32
4.2.2 Activiti与Spring 32
4.2.3 JDBC配置 32
4.2.4 DBCP数据源配置 33
4.2.5 C3P0数据源配置 34
4.2.6 Activiti其他数据源配置 35
4.2.7 databaseSchemaUpdate配置 35
4.2.8 databaseType配置 36
4.3 其他属性配置 37
4.3.1 history配置 37
4.3.2 jobExecutorActivate配置 38
4.3.3 邮件服务器配置 38
4.4 ProcessEngineConfiguration bean 38
4.4.1 ProcessEngineConfiguration及其子类 38
4.4.2 自定义ProcessEngineConfiguration 39
4.5 Activiti的命令拦截器 41
4.5.1 命令模式 41
4.5.2 责任链模式 43
4.5.3 编写自定义拦截器 45
4.6 本章小结 47
第5章 流程引擎的创建 48
5.1 ProcessEngineConfiguration的buildProcessEngine方法 49
5.2 ProcessEngines 49
5.2.1 init与getDefaultProcessEngine方法 49
5.2.2 registerProcessEngine和unregister方法 50
5.2.3 retry方法 50
5.2.4 destroy方法 51
5.3 ProcessEngine对象 51
5.3.1 服务组件 52
5.3.2 close方法 52
5.3.3 流程引擎名称 53
5.4 本章小结 54
第6章 用户组与用户 55
6.1 用户组管理 56
6.1.1 Group对象 56
6.1.2 创建用户组 56
6.1.3 修改用户组 57
6.1.4 删除用户组 58
6.2 Activiti数据查询 58
6.2.1 查询对象 59
6.2.2 list方法 59
6.2.3 listPage方法 60
6.2.4 count方法 60
6.2.5 排序方法 61
6.2.6 ID排序问题 62
6.2.7 多字段排序 63
6.2.8 singleResult方法 65
6.2.9 用户组数据查询 65
6.3 用户管理 67
6.3.1 User对象 67
6.3.2 添加用户 67
6.3.3 修改用户 68
6.3.4 删除用户 68
6.3.5 验证用户密码 69
6.3.6 用户数据查询 70
6.3.7 设置用户权限 71
6.4 用户信息管理 72
6.4.1 添加和删除用户信息 72
6.4.2 查询用户信息 73
6.4.3 添加与删除用户账号 74
6.4.4 查询用户信息 75
6.4.5 设置用户图片 76
6.5 用户组与用户关系 77
6.5.1 绑定关系 77
6.5.2 解除绑定 78
6.5.3 查询用户组下的用户 78
6.5.4 查询用户所属的用户组 79
6.6 本章小结 80
第7章 流程存储 81
7.1 流程文件部署 82
7.1.1 Deployment对象 82
7.1.2 DeploymentBuilder对象 82
7.1.3 添加输入流资源 83
7.1.4 添加classpath资源 84
7.1.5 添加字符串资源 85
7.1.6 添加压缩包资源 85
7.1.7 修改部署名称 86
7.1.8 过滤重复部署 86
7.1.9 资源部署 87
7.2 流程定义的管理 87
7.2.1 ProcessDefinition对象 87
7.2.2 流程部署 88
7.2.3 流程图部署 89
7.2.4 中止与激活流程定义 90
7.3 流程定义权限 91
7.3.1 设置流程定义的用户权限 91
7.3.2 设置流程定义的用户组权限 93
7.3.3 IdentityLink对象 93
7.3.4 查询权限数据 93
7.4 RepositoryService数据查询与删除 95
7.4.1 查询部署资源 96
7.4.2 查询流程文件 96
7.4.3 查询流程图 97
7.4.4 查询部署资源名称 98
7.4.5 删除部署资源 98
7.4.6 DeploymentQuery对象 99
7.4.7 ProcessDefinitionQuery对象 100
7.5 本章小结 100
第8章 流程任务管理 101
8.1 任务的创建与删除 102
8.1.1 Task对象 102
8.1.2 创建与保存Task实例 103
8.1.3 删除任务 103
8.2 任务权限 104
8.2.1 设置候选用户组 105
8.2.2 设置候选用户 106
8.2.3 权限数据查询 106
8.2.4 设置任务持有人 108
8.2.5 设置任务受理人 109
8.2.6 添加任务权限数据 110
8.2.7 删除用户组权限 112
8.2.8 删除用户权限 113
8.3 任务参数 115
8.3.1 基本类型参数设置 115
8.3.2 序列化参数 116
8.3.3 获取参数 117
8.3.4 参数作用域 118
8.3.5 设置多个参数 119
8.4 任务附件管理 120
8.4.1 AttachmentEntity对象 120
8.4.2 创建任务附件 120
8.4.3 附件查询 122
8.4.4 删除附件 123
8.5 任务评论与事件记录 123
8.5.1 CommentEntity对象 123
8.5.2 新增任务评论 124
8.5.3 事件的记录 124
8.5.4 数据查询 126
8.6 任务声明与完成 126
8.6.1 任务声明 126
8.6.2 任务完成 127
8.7 本章小结 128
第9章 流程控制 129
9.1 流程实例与执行流 130
9.1.1 流程实例与执行流概念 130
9.1.2 流程实例和执行流对象(ProcessInstance与Execution) 130
9.2 启动流程 131
9.2.1 startProcessInstanceById方法 131
9.2.2 startProcessInstanceByKey方法 133
9.2.3 startProcessInstanceByMessage 134
9.3 流程参数 135
9.3.1 设置与查询流程参数 136
9.3.2 流程参数的作用域 136
9.3.3 其他设置参数方法 138
9.4 流程操作 138
9.4.1 发送信号 138
9.4.2 触发信号事件 140
9.4.3 触发消息事件 143
9.4.4 中断与激活流程 145
9.4.5 删除流程 145
9.5 流程数据查询 146
9.5.1 执行流查询 146
9.5.2 流程实例查询 149
9.6 本章小结 150
第10章 历史数据管理和流程引擎管理 151
10.1 历史数据管理 152
10.1.1 历史流程实例查询 152
10.1.2 历史任务查询 154
10.1.3 历史行为查询 157
10.1.4 历史流程明细查询 159
10.1.5 删除历史流程实例和历史任务 161
10.2 工作的产生 162
10.2.1 异步任务产生的工作 162
10.2.2 定时中间事件产生的工作 164
10.2.3 定时边界事件产生的工作 165
10.2.4 定时开始事件产生的工作 166
10.2.5 流程抛出事件产生的工作 167
10.2.6 工作的执行 169
10.3 工作管理 170
10.3.1 JobQuery对象 170
10.3.2 获取工作异常信息 173
10.3.3 设置工作执行次数 173
10.4 数据库管理 174
10.4.1 查询引擎属性 175
10.4.2 数据表信息查询 175
10.4.3 数据库操作 176
10.4.4 数据表查询 177
10.5 本章小结 178
第11章 流程事件 179
11.1 事件分类 180
11.1.1 按照事件的位置分类 180
11.1.2 按照事件的特性分类 180
11.2 事件定义 180
11.2.1 定时器事件定义 181
11.2.2 cron表达式 181
11.2.3 错误事件定义 183
11.2.4 信号事件定义 183
11.2.5 消息事件定义 184
11.2.6 取消事件定义 184
11.2.7 补偿事件定义 185
11.2.8 其他事件定义 185
11.3 开始事件 185
11.3.1 无指定开始事件 185
11.3.2 定时器开始事件 186
11.3.3 消息开始事件 187
11.3.4 错误开始事件 189
11.4 结束事件 191
11.4.1 无指定结束事件 191
11.4.2 错误结束事件 191
11.4.3 取消结束事件和取消边界事件 193
11.5 边界事件 196
11.5.1 定时器边界事件 196
11.5.2 错误边界事件 198
11.5.3 信号边界事件 200
11.5.4 补偿边界事件 202
11.6 中间事件 205
11.6.1 中间事件分类 205
11.6.2 定时器中间事件 206
11.6.3 信号中间Catching事件 207
11.6.4 信号中间Throwing事件 209
11.6.5 消息中间事件 211
11.6.6 无指定中间事件 211
11.7 补偿中间事件 211
11.7.1 补偿执行次数 211
11.7.2 补偿执行范围 213
11.7.3 补偿的执行顺序 217
11.7.4 补偿的参数设置 219
11.8 本章小结 220
第12章 流程任务 221
12.1 BPMN 2.0中的任务 222
12.1.1 任务的继承 222
12.1.2 XML约束 222
12.1.3 任务的类型 224
12.2 用户任务 225
12.2.1 分配任务候选人 225
12.2.2 分配任务受理人 226
12.2.3 权限分配扩展 227
12.2.4 使用任务监听器进行权限分配 228
12.2.5 使用JUEL分配权限 229
12.3 脚本任务 231
12.3.1 脚本任务 231
12.3.2 JavaScript脚本 232
12.3.3 Groovy脚本 233
12.3.4 设置返回值 233
12.3.5 JUEL脚本 234
12.4 服务任务 235
12.4.1 Java服务任务 235
12.4.2 实现JavaDelegate 236
12.4.3 使用普通Java Bean 237
12.4.4 在Activiti中调用WebService 238
12.4.5 import元素 238
12.4.6 itemDefinition元素和message元素 239
12.4.7 interface元素与operation元素 239
12.4.8 设置Web Service参数与返回值 239
12.4.9 发布Web Service 240
12.4.10 使用Web Service Task 241
12.4.11 JavaDelegate属性注入 244
12.4.12 在JavaDelegate中调用Web Service 246
12.4.13 Shell任务 247
12.5 其他任务 249
12.5.1 手工任务和接收任务 249
12.5.2 邮件任务 250
12.5.3 Mule任务和业务规则任务 252
12.6 任务监听器 252
12.6.1 使用class指定监听器 252
12.6.2 使用expression指定监听器 253
12.6.3 使用delegateExpression指定监听器 254
12.6.4 监听器的触发 254
12.6.5 属性注入 255
12.7 流程监听器 256
12.7.1 配置流程监听器 256
12.7.2 触发流程监听器的事件 257
12.8 本章小结 259
第13章 其他流程元素 260
13.1 子流程 261
13.1.1 嵌入式子流程 261
13.1.2 调用式子流程 263
13.1.3 调用式子流程的参数传递 265
13.1.4 事件子流程 267
13.1.5 事务子流程 269
13.2 顺序流 271
13.2.1 条件顺序流 272
13.2.2 默认顺序流 273
13.3 流程关口 275
13.3.1 单向关口 275
13.3.2 并行关口 277
13.3.3 兼容关口 279
13.3.4 事件关口 281
13.4 流程活动特性 283
13.4.1 多实例活动 283
13.4.2 设置循环数据 285
13.4.3 获取循环元素 286
13.4.4 循环的内置参数 288
13.4.5 循环结束条件 290
13.4.6 补偿处理者 291
13.5 本章小结 292
第14章 Activiti与规则引擎 293
14.1 概述 294
14.1.1 规则引擎Drools 294
14.1.2 Drools下载与安装 294
14.2 开发第一个Drools应用 295
14.2.1 建立Drools环境 295
14.2.2 编写规则 296
14.2.3 加载与运行 296
14.3 Drools规则语法概述 297
14.3.1 规则文件结构 297
14.3.2 关键字 298
14.3.3 规则编译 299
14.4 类型声明 299
14.4.1 声明新类型 300
14.4.2 使用ASM操作字节码 301
14.4.3 类型声明的使用 302
14.4.4 类型的继承 303
14.4.5 声明元数据 304
14.5 函数和查询 305
14.5.1 函数定义和使用 305
14.5.2 查询的定义和使用 307
14.6 规则语法 308
14.6.1 全局变量 308
14.6.2 规则属性 310
14.6.3 条件语法 313
14.6.4 行为语法 316
14.7 Activiti调用规则 317
14.7.1 业务规则任务 317
14.7.2 制定销售单优惠规则 318
14.7.3 实现销售流程 321
14.8 本章小结 323
第15章 整合第三方框架 324
15.1 Spring框架 325
15.1.1 Spring的IoC 325
15.1.2 Spring的AOP 326
15.1.3 使用IoC 326
15.1.4 使用AOP 327
15.2 Activiti整合Spring 328
15.2.1 SpringProcessEngineConfiguration 328
15.2.2 ProcessEngineFactoryBean 330
15.2.3 在bean中注入Activiti服务 331
15.2.4 在Activiti中使用Spring的bean 331
15.3 Activiti整合Web项目 333
15.3.1 安装Tomcat插件 334
15.3.2 加入Spring 336
15.3.3 整合Hibernate 337
15.3.4 配置声明式事务 339
15.3.5 添加Struts配置 340
15.3.6 实现一个最简单的逻辑 340
15.3.7 测试事务 342
15.3.8 加入Activiti 343
15.4 Mule ESB 344
15.4.1 Mule简介 344
15.4.2 开发第一个Mule应用 344
15.4.3 请求Mule服务 345
15.4.4 代理HTTP服务 346
15.4.5 Mule与Spring整合 347
15.4.6 在Activiti中向Mule发送请求 348
15.5 本章小结 351
第16章 Activiti开放的Web Service 352
16.1 Web Service简介 353
16.1.1 Web Service 353
16.1.2 SOAP协议 353
16.1.3 REST架构 353
16.1.4 REST的设计准则 354
16.1.5 REST的主要特性 354
16.1.6 SOAPRPC与REST的区别 355
16.2 Restlet简介 355
16.2.1 在Web工程中使用Restlet 356
16.2.2 发布REST的Web Service 357
16.2.3 编写客户端 358
16.2.4 访问控制 358
16.2.5 部署Activiti的Web Service 361
16.2.6 准备测试数据 361
16.2.7 查询流程引擎信息 362
16.2.8 使用HttpClient编写客户端 362
16.2.9 使用CXF编写客户端 363
16.3 流程存储服务 364
16.3.1 上传部署文件 364
16.3.2 部署数据查询 366
16.3.3 部署资源查询 367
16.3.4 查询单个部署资源 368
16.3.5 删除部署资源 369
16.3.6 删除多个部署资源 370
16.4 流程服务 371
16.4.1 查询流程定义集合 371
16.4.2 流程定义表单属性 372
16.4.3 查询流程定义表单 373
16.4.4 查询流程图 373
16.4.5 启动流程 373
16.4.6 查询流程实例集合 374
16.4.7 查询单个流程实例 374
16.4.8 查询流程图片 375
16.4.9 查询流程实例任务 376
16.4.10 发送信号 376
16.5 流程任务服务 377
16.5.1 查询任务摘要 377
16.5.2 获取任务集合 378
16.5.3 查询单个任务 379
16.5.4 查询任务表单 379
16.5.5 任务操作 379
16.6 身份服务 380
16.6.1 身份验证 380
16.6.2 查询用户 380
16.6.3 查询用户所属的用户组 381
16.6.4 查询用户组 381
16.6.5 查询用户组下的用户 381
16.7 管理服务 382
16.7.1 工作管理 382
16.7.2 数据库管理 382
16.8 本章小结 382
第17章 Activiti功能进阶 384
17.1 流程虚拟机 385
17.1.1 概述 385
17.1.2 初试PVM 385
17.1.3 自定义流程语言 386
17.1.4 执行流程语言 389
17.2 Activiti的表单 391
17.2.1 概述 392
17.2.2 表单属性 392
17.2.3 外部表单 393
17.2.4 关于动态工作流和动态表单 394
17.3 流程图XML 394
17.3.1 节点元素 395
17.3.2 衔接元素 395
17.3.3 流程图与流程文件的转换 395
17.4 流程操作 397
17.4.1 流程回退 397
17.4.2 会签 398
17.5 本章小结 400
第18章 办公自动化系统 401
18.1 使用技术 402
18.1.1 表现层技术 402
18.1.2 MVC框架 402
18.1.3 Spring和Hibernate 402
18.2 功能简述 403
18.2.1 系统的角色管理 403
18.2.2 薪资计算流程 403
18.2.3 请假流程 403
18.2.4 薪资调整流程 403
18.2.5 报销流程 404
18.3 框架整合 404
18.3.1 创建Web工程 404
18.3.2 加入Spring 406
18.3.3 加入Hibernate 407
18.3.4 整合Struts2 408
18.3.5 整合Activiti 409
18.4 数据库设计 410
18.4.1 薪资表 410
18.4.2 请假记录表 411
18.4.3 薪资调整记录表 412
18.4.4 报销记录表 412
18.5 初始化数据 413
18.5.1 初始化角色数据 413
18.5.2 薪资计算流程 414
18.5.3 请假流程 415
18.5.4 报销流程 415
18.5.5 薪资调整流程 416
18.6 角色管理 418
18.6.1 用户组管理 418
18.6.2 用户列表 420
18.6.3 新建用户 421
18.6.4 用户登录 422
18.7 流程启动 423
18.7.1 启动请假流程 423
18.7.2 启动报销流程 426
18.7.3 启动薪资调整流程 428
18.8 申请列表 429
18.8.1 申请列表 429
18.8.2 请假申请列表 430
18.8.3 报销申请列表 431
18.8.4 薪资调整列表 431
18.8.5 查看流程图 432
18.9 流程任务 434
18.9.1 待办任务列表 434
18.9.2 领取任务与受理任务列表 436
18.9.3 查询任务信息 437
18.9.4 任务审批 439
18.9.5 运行OA的流程 439
18.10 本章小结 440