Activiti实战

Activiti 优秀的开源流程引擎(BPM平台)

工作流在每一个需要流程处理的系统中不可或缺,符合BPMN2.0规范且开源的流程引擎(或平台)才是每个公司需要的,结合长期以来(从jBPM4停止更新)开源流程引擎的使用上可以分为Activiti和jBPM5,前者是jBPM作者Tom的又一力作,而jBMP5则是基于Drools Flow的产物。从设计思想、源码开放、技术支持以及社区的活跃度几点对比很明显Activiti优于jBPM5,另外本书中强调过很多次的一句话:“Activiti不仅仅是一个引擎,它还是一个流程平台”;Activiti可以轻松驱动你的业务流程、搭建统一的流程平台。

哦,对了,国内还有几千人技术社区作为你的技术后盾。

国内Activiti领域第一人(最权威专家和布道师)撰写,Activiti项目负责人Tijs Rademakers高度认可并推荐;根据Activiti最新版本系统、深度讲解了BPM2.0规范,以及Activiti功能、用法、技巧、最佳实践和源代码分析。



China-Pub | 京东 | 当当网 | 亚马逊 购买

赞誉

Henry Yan has been a longtime valued contributor to the Activiti project, both for his commits and for promoting Activiti in China through his community and blog site (http://www.kafeitu.me/activiti.html). It’s great to see his Activiti book as it brings a lot of value for Activiti users and developers in China. With Henry Yan’s background in the Activiti project I highly recommend this book for new Activiti users as well as developers already using Activiti.

Tijs Rademakers
现任Activiti项目负责人,《Activiti in Action》作者 (Manning)


咖啡兔同学的《Activiti实战》终于出炉,欣喜之情溢于言表。国内的工作流行业虽然产品繁多,但是开源一直为Activiti和jBPM垄断。相对来说Activiti延续了一贯方便灵活的特性,又不会在功能上有半分折损,在国内拥有大量的粉丝。咖啡兔同学此前一直致力于Activiti在国内的推广与传播,先后开辟了专栏博客、Activiti论坛网站、QQ群组,并积极参与Activiti的官方开发,可以说Activiti在国内能达到当前的认知程度,他是功不可没的。可惜,国内尚缺一本可以为Activiti新手答疑解惑,带初阶者更上一层楼的实体书籍。我觉得,这个任务由一直积极活跃于Activiti开源社区,既拥有实际流程项目设计研发经验,又为Activiti官方内核提交过代码的人是再合适不过了。 全书由浅入深地引导读者进入工作流的殿堂,不仅覆盖常见的流程功能与实现方法,还专门提供了作者实践中总结的经验方法,因此本书必将成为学习流程道路上的得力助手。

徐会生(临远)
jBPM、Activiti国内推广者,《深入浅出Ext》(一、二、三版)作者

源码

别问我为什么没有附带光盘,看看现在笔记本还有没有光驱?

勘误

  • 本书推荐:第二行的“前言”改为“前沿”
  • P3:BMP改为“BPM”
  • P6:表1-1的第3行『IdnetifyService』改为『IdentityService』
  • P22:代码清单2-4的#1-S处userTask的“id”属性值改为“deptLeaderAudit”
  • P67第一行:所有的开始事件均改为『结束事件』
  • P82:第4.3.12节地4行改为:添加了3个平行线(顺序执行)和3个垂直线(并行执行)
  • P122最后一行:“cadidate”改为“candidate”;感谢@south
  • P123第一行:“cadidate”改为“candidate”;感谢@south
  • P147表格中第二个readable改为“required”

目录

第一部分 准备篇

第1章 认识Activiti
  • 1.1 什么是Activiti
  • 1.2 工作流基础
  • 1.2.1 什么是BPM
  • 1.2.2 BPM生命周期
  • 1.2.3 什么是BPMN
  • 1.3 Activiti的特点
  • 1.4 Activiti的应用
  • 1. 在系统集成方面应用
  • 2. 在其他产品中应用
  • 1.5 Activiti架构与组件
  • 1.6 Activiti与jBPM5比较
  • 1.7 本章小结
第2章 搭建Activiti开发环境
  • 2.1 下载Activiti
  • 2.1.1 目录结构
  • 2.1.2 Javadoc
  • 2.2 环境配置检查
  • 2.2.1 检查并安装JDK
  • 2.2.2 检查并安装Ant
  • 2.2.3 检查并安装Maven
  • 2.3 配置文件介绍
  • 2.3.1 Activiti配置文件
  • 2.3.2 Maven配置文件
  • 2.4 Hello World
  • 2.4.1 最简单的流程定义
  • 2.4.2 创建单元测试类
  • 2.4.3 运行Hello World
  • 2.4.4 添加业务节点
  • 2.5 Activiti Explorer
  • 2.5.1 配置并运行Activiti Explorer
  • 2.5.2 使用Activiti Explorer
  • 2.6 本章小结

第二部分 基础篇

第3章 流程设计工具
  • 3.1 基于B/S架构的流程设计器Activiti Modeler
  • 3.1.1 Activiti Modeler特点
  • 3.1.2 下载Signavio-core-components
  • 3.1.3 配置打包与运行
  • 3.1.4 打包Windows用户
  • 3.1.5 设计请假流程
  • 3.1.6 导出bpmn2.0.xml
  • 3.2 在Activiti Explorer中使用Activiti Modeler
  • 3.3 基于Eclipse插件的流程设计器Activiti Designer
  • 3.3.1 Acvititi Designer特点
  • 3.3.2 安装Activiti Designer
  • 3.3.3 设计流程
  • 3.3.4 自动化
  • 3.3.5 升级历史遗留的流程设计
  • 3.3.6 导入Activiti Modeler设计
  • 3.3.7 泳池与泳道
  • 3.3.8 在Activiti Designer中使用泳道与泳池
  • 3.4 本章小结
第4章 Activiti与BPMN2.0规范
  • 4.1. 启动事件与结束事件
  • 4.1.1. 启动事件
  • 4.1.2. 结束事件
  • 4.2. 顺序流
  • 4.2.1. 标准顺序流
  • 4.2.2. 条件顺序流
  • 4.3. 任务
  • 4.3.1. 用户任务
  • 4.3.2. 脚本任务
  • 4.3.3. Java Service任务
  • 4.3.4. Web Service任务
  • 4.3.5. 业务规则任务
  • 4.3.6. 邮件任务
  • 4.3.7. Camel任务
  • 4.3.8. Mule任务
  • 4.3.9. 手动任务
  • 4.3.10. 接收任务
  • 4.3.11. Shell任务
  • 4.3.12. 多实例
  • 4.4. 网关
  • 4.4.1. 排他网关
  • 4.4.2. 并行网关
  • 4.4.3. 包容网关
  • 4.4.4. 事件网关
  • 4.5. 子流程与调用活动
  • 4.5.1. 子流程
  • 4.5.2. 调用活动
  • 4.5.3. 事件子流程
  • 4.5.4. 事务子流程
  • 4.6. 边界与中间事件
  • 4.6.1. 边界事件
  • 4.6.2. 中间捕获事件
  • 4.6.3. 中间抛出事件
  • 4.7. 监听器
  • 4.7.1. 执行监听器
  • 4.7.2. 任务监听器
  • 4.8. 本章小结
### 第三部分 实战篇
第5章 用户与组及部署管理
  • 5.1. 用户与组
  • 5.1.1. 用户
  • 5.1.2. 组
  • 5.1.3. 用户与组的关系
  • 5.1.4. 用户任务中的用户与组
  • 5.2. 部署流程资源
  • 5.2.1. classpath方式
  • 5.2.2. InputStream方式
  • 5.2.3. 字符串方式
  • 5.2.4. Zip/Bar格式压缩包方式
  • 5.3. 流程部署及资源读取
  • 5.3.1. 读取已部署流程定义
  • 5.3.2. 从客户端部署流程
  • 5.3.3. 读取流程定义的XML
  • 5.3.4. 读取流程定义的图片及图片中的中文乱码
  • 5.3.5. 删除部署
  • 5.4. 本章小结
第6章 任务表单
  • 6.1. 动态表单
  • 6.1.1. 流程定义
  • 6.1.2. 单元测试
  • 6.1.3. 在Activiti Explorer中运行流程
  • 6.2. 实现自己的Activiti Explorer
  • 6.2.1. 完善身份验证功能
  • 6.2.2. 流程启动表单
  • 6.2.3. 任务签收与办理
  • 6.2.4. 自定义表单的字段类型
  • 6.3. 外置表单
  • 6.3.1. 流程定义
  • 6.3.2. 单元测试
  • 6.3.3. 自定义表单引擎
  • 6.3.4. 读取流程启动表单
  • 6.3.5. 任务签收与办理
  • 6.4. 本章小结
第7章 Activiti与容器集成
  • 7.1. 流程引擎工厂
  • 7.1.1. 创建引擎的方式
  • 7.1.2. 配置 ProcessEngineFactoryBean
  • 7.2. 自动部署流程定义
  • 7.3. 表达式
  • 7.3.1. 表达式基础
  • 7.3.2. 表达式示例
  • 7.3.3. 使用Spring管理变量
  • 7.4. 监听器
  • 7.5. Spring容器集成应用实例
  • 7.5.1. 业务建模
  • 7.5.2. 启动流程
  • 7.5.3. 任务读取
  • 7.5.4. 任务办理
  • 7.6. 使用Spring注解初始化引擎
  • 7.6.1. 使用@EnableActiviti注解
  • 7.6.2. 使用Spring Boot初始化引擎
  • 7.7. CDI模块
  • 7.7.1. 启动示例
  • 7.7.2. 引擎配置与流程定义
  • 7.7.3. 流程定义与启动
  • 7.7.4. 任务办理与完成
  • 7.7.5. 事件监听
  • 7.8. 本章小结
第8章 邮件服务
  • 8.1. 配置与测试
  • 8.1.1. 搭建邮件系统
  • 8.1.2. 通过Activiti的邮件任务发送邮件
  • 8.1.3. 使用Gmail发送邮件
  • 8.2. 与业务集成
  • 8.2.1. 即时发送邮件
  • 8.2.2. 定时发送邮件
  • 8.3. 本章小节
第9章 多实例
  • 9.1. 非用户任务
  • 9.2. 用户任务多实例
  • 9.2.1. 顺序方式办理
  • 9.2.2. 并行方式办理
  • 9.2.3. 设置结束条件
  • 9.3. 应用实例—请假会签
  • 9.3.1. 流程定义
  • 9.3.2. 任务办理
  • 9.4. 审批意见
  • 9.5. 本章小结
第10章 子流程与调用活动
  • 10.1. 子流程
  • 10.1.1. 流程定义
  • 10.1.2. 流程办理
  • 10.1.3. 分析流程数据
  • 10.2. 调用活动
  • 10.2.1. 流程定义
  • 10.2.2. 单元测试
  • 10.2.3. 流程办理
  • 10.2.4. 分析流程数据
  • 10.3. 事件子流程
  • 10.3.1. 流程定义
  • 10.3.2. 单元测试
  • 10.4. 多实例支持
  • 10.5. 本章小结
第11章 事件
  • 11.1 启动事件
  • 11.1.1 定时启动事件
  • 11.1.2 消息启动事件
  • 11.2 结束事件
  • 11.2.1 终止结束事件
  • 11.2.2 消息结束事件
  • 11.3 边界事件
  • 11.3.1 异常边界事件
  • 11.3.2 消息边界事件
  • 11.3.3 信号边界事件
  • 11.4 中间事件
  • 11.5 本章小结
第12章 用户任务与附件
  • 12.1. 用户任务
  • 12.1.1 改进任务列表
  • 12.1.2 改进任务表单
  • 12.1.3 任务相关人员
  • 12.1.4 反签收任务
  • 12.1.5 候选人与候选组
  • 12.1.6 改进任务查询
  • 12.2. 子任务
  • 12.3. 手动任务
  • 12.4. 附件
  • 12.5. 改进意见列表
  • 12.6. 任务委派
  • 12.6.1 单元测试
  • 12.6.2 任务表单中的委派
  • 12.7. 本章小结
第13章 流程数据查询与跟踪
  • 13.1. Query API简介
  • 13.2. 运行时数据查询
  • 13.2.1. 任务查询
  • 13.2.2. 查询参与的流程
  • 13.3. 流程跟踪
  • 13.4. 历史数据查询
  • 13.4.1. 历史活动及表单查询
  • 13.4.2. 已结束流程
  • 13.5. 使用MyBatis查询Map集合
  • 13.6. 本章小结
第14章 管理员特性
  • 14.1. 流程状态
  • 14.1.1 流程定义状态
  • 14.1.2 作业查询
  • 14.1.3 流程实例状态
  • 14.2. 作业管理
  • 14.2.1 作业执行原理
  • 14.2.2 作业执行异常
  • 14.2.3 独占与异步
  • 14.3. 删除流程实例
  • 14.4. 流程定义权限控制
  • 14.4.1 权限拦截
  • 14.4.2 设置候选启动人和候选启动组
  • 14.4.3 读取候选启动数据
  • 14.5. 读取引擎属性
  • 14.6. 数据库查询
  • 14.7. 用户与组
  • 14.8. 本章小结

第四部分 高级篇

第15章 集成WebService
  • 15.1. 发布WebService服务
  • 15.2. 在流程中定义WebService任务
  • 15.3. 在流程中调用WebService
  • 15.4. 本章小结
第16章 集成规则引擎
  • 16.1. 定义流程与规则
  • 16.1.1. 部署规则文件
  • 16.1.2. 单元测试
  • 16.2. 本章小结
第17章 集成JPA
  • 17.1. 配置JPA
  • 17.1.1 Standalone模式
  • 17.1.2 Spring模式
  • 17.2. JPA版本的请假流程
  • 17.2.1 启动流程时持久化JPA实体
  • 17.2.2 更改JPA实体属性
  • 17.2.3 清理历史表单数据
  • 17.3. 本章小结
第18章 整合ESB
  • 18.1 Camel简介
  • 18.2 Camel快速进阶
  • 18.3 Hello World
  • 18.4 添加Camel依赖
  • 18.5 与业务的结合
  • 18.5.1 设计流程定义
  • 18.5.2 定义Camel Flow
  • 18.5.3 启动Camel Flow
  • 18.5.4 单元测试
  • 18.6 ESB简介
  • 18.7 Mule快速进阶
  • 18.8 Hello World
  • 18.9 添加Mule依赖
  • 18.10 与业务的结合
  • 18.10.1 设计流程定义
  • 18.10.2 定义Mule Flow
  • 18.10.3 启动Mule Flow
  • 18.10.4 单元测试
  • 18.11 本章小结
第19章 统一身份管理
  • 19.1. 一套典型的身份系统
  • 19.2. 通过引擎接口同步数据
  • 19.2.1 通过引擎接口同步数据
  • 19.2.2 自定义Session工厂方式
  • 19.3. 用视图代替物理表
  • 19.4. 集成LDAP
  • 19.5. 本章小节
第20章 REST API
  • 20.1. 通信协议简介
  • 20.2. REST API概述
  • 20.2.1. REST API认证机制
  • 20.3. 发布REST API
  • 20.3.1. 通过浏览器访问
  • 20.3.2. 通过Http Client访问
  • 20.3.3. 通过Restlet访问
  • 20.3.4. 通过Apache CXF访问
  • 20.4. 集成REST API
  • 20.4.1. 依赖及配置文件
  • 20.4.2. 通过Ajax访问
  • 20.5. 完整示例
  • 20.5.1. 部署流程
  • 20.5.2. 查询Deployment
  • 20.5.3. 查询流程定义
  • 20.5.4. 启动流程
  • 20.5.5. 读取流程变量
  • 20.5.6. 查询任务
  • 20.5.7. 签收任务
  • 20.5.8. 完成任务
  • 20.5.9. 查询历史数据
  • 20.6. 本章小结
第21章 入侵Activiti
  • 21.1 解析BPMN文件
  • 21.1.1. BpmnModel对象与XML之间的转换
  • 21.1.2. 动态创建流程
  • 21.1.3. BPMN解析处理器
  • 21.2 全局事件处理器
  • 21.2.1. 定义事件处理器
  • 21.2.2. 处理捕获的事件
  • 21.2.3. 事件处理器的异常处理
  • 21.2.4. 动态注册事件处理器
  • 21.2.5. 任务自动转办
  • 21.3 命令与拦截器
  • 21.3.1. 命令与拦截器运行机制
  • 21.3.2. 自定义命令
  • 21.3.3. 命令拦截器
  • 21.4 流程虚拟机—PVM
  • 21.4.1. 简述PVM
  • 21.4.2. Hello PVM
  • 21.4.3. PVM进阶
  • 21.5 本章小结