本书旨在深入学习Activiti的内部处理机制。由浅入深、由易到难地对Activiti源码展开了系统的讲解和扩展,并对框架中的部分缺陷进行修正,从而使读者可以更加灵活的运用和改造Activiti。 本书内容包括流程引擎配置类以及流程引擎类的内部实现机制、配置器的使用、流程引擎的管理、流程资源的部署以及内部实现机制、元素解析底层实现、自定义元素解析实战、为任意节点无限扩展属性、流程虚拟机的创建以及运行原理、原子类职责、事件转发器、日志监听器以及日志清洗器使用、修复Activiti部分Bug、自定义部署器实战、对象解析器原理、监听器的原理、事务、活动行为类以及活动行为工厂类、会话缓存的构造过程以及缺陷、自定义高并发id生成器、自定义变量类型、节点跳转、会签、加签、退签、会签节点自定义权重实现、接管Activiti映射文件、扩展任务节点处理人多维度配置、自定义代办SQL、接管Activiti实体管理类等。 本书难度为初级到高级、适用于所有开发人员、设计人员、Activiti爱好者、即将成为架构师或者已经是架构师的朋友、也可以作为高校学生深入学习Activiti的参考读物。
本书采用由浅入深、以点带面,采用从整体到局部,再从局部放眼全局的视角,力求展示Activiti框架的全貌。这不仅是一本讲解如何使用Activiti的书,还讲解了Activiti框架的技术选型和架构思想的书,一本物有所值、货真价实的书。本书中的示例程序均是从实际项目提取简化而来,相信这是你不可错过的一本好书。
目录
第1章环境搭建
1.1环境搭建
1.1.1安装GitHub
1.1.2安装Maven
1.2编译源码
1.3源码目录说明
1.4安装流程设计器
1.5工程搭建
第2章探险流程引擎
2.1流程配置文件
2.1.1Activiti配置风格
2.1.2Spring配置风格
2.2流程引擎架构
2.3构造流程引擎实例对象
2.3.1初始化流程引擎之Activiti配置风格
2.3.2构造流程引擎实例对象
2.3.3创建流程引擎配置类实例
2.3.4初始化流程引擎
2.3.5初始化流程引擎之Spring配置风格
2.4初始化流程引擎配置类
2.5配置器
2.5.1初始化配置器
2.5.2配置器实战
2.6初始化流程引擎
2.6.1操作引擎表
2.7管理流程引擎
2.7.1注册流程引擎
2.7.2关闭流程引擎
2.8流程引擎生命周期监听器
2.9其他方式构造引擎实例
2.9.1ProcessEngineConfiguration类创建引擎
2.9.2编程方式创建引擎
第3章初识流程资源部署
3.1流程资源概述
3.1.1流程文档部署生命周期
3.1.2DeploymentBuilder核心类
3.2流程文档部署
3.2.1定义流程文档
3.2.2文本方式部署
3.2.3classpath资源部署
3.2.4流式部署
3.3BpmnModel方式部署
3.4校验BpmnModel实例对象
3.5BpmnModel转换流程文档
3.6流程文档转换BpmnModel
3.7使用建议
第4章流程文档解析原理
4.1文档解析基
4.1.1文档解析模型
4.1.2Activiti文档解析技术选型演变
4.1.3文档解析实战
4.2元素解析功能架构设计
4.2.1BPMN2.0元素概述
4.2.2元素解析功能架构设计
4.2.3开闭原则
4.2.4元素与元素属性承载类以及元素解析器的对应关系
4.2.5元素属性承载类架构
4.3元素解析环境准备
4.3.1文档转换器
4.3.2封装流程文档数据流
4.3.3初始化元素解析器
4.3.4文档转换器功能
4.3.5元素解析环境准备
4.3.6验证流程文档格式
4.4元素解析
4.4.1元素解析入口
4.4.2解析根元素
4.4.3流程内元素解析入口
4.4.4解析连线
4.4.5获取元素坐标
4.5子元素解析
4.5.1初始化子元素解析器
4.5.2解析子元素
4.5.3解析扩展元素
4.6节点与连线关联
第5章自定义元素解析
5.1自定义元素解析原理
5.2存储自定义元素属性值
5.3自定义元素实战
5.4扩展黑名单元素
5.4.1扩展元素属性原理
5.4.2任务节点扩展属性实战
5.5扩展非黑名单元素
5.5.1自定义元素解析器
5.5.2替换引擎元素解析器
第6章事件转发器
6.1初始化事件转发器
6.2事件转发器架构
6.3注册事件监听器
6.4事件转发功能之新老版本兼容
6.5事件转发原理以及缺陷
6.6添加事件监听器
6.6.1使用配置方式添加
6.6.2动态添加
6.7日志监听器
6.7.1初始化日志监听器
6.7.2初始化日志处理器
6.7.3日志处理器架构
6.7.4收集日志数据入口
6.8日志清洗器架构
6.8.1数据库日志清洗器
6.8.2生成日志数据
6.8.3日志存储
6.9自定义日志清洗器
第7章流程文档部署原理
7.1初始化部署器
7.1.1初始化内置部署器
7.1.2部署器依赖关系
7.2部署命令
7.2.1过滤重复文档
7.2.2设置标识位
7.2.3添加会话缓存
7.2.4部署管理器
7.3Bpmn部署器
7.3.1获取资源信息
7.3.2封装资源信息
7.3.3校验资源名称
7.3.4计算流程定义版本值
7.3.5生成流程定义id值
7.3.6移除过期作业
7.3.7添加作业
7.3.8处理消息
7.3.9处理信号
7.3.10设置流程启动人
7.4自定义部署器实战
第8章缓存
8.1背景
8.2初始化缓存策略
8.3部署管理器
8.4缓存处理类架构
8.5默认缓存处理类及Bug
8.6流程定义缓存
8.6.1自定义缓存处理类
8.6.2验证自定义缓存处理类
8.7Activiti新特性之节点缓存
8.8节点缓存实战
8.9节点缓存原理
8.9.1初始化节点缓存数据
8.9.2更新节点缓存
8.9.3节点缓存架构
8.9.4节点缓存使用误区
8.10自定义节点缓存实战
8.10.1自定义节点缓存类
8.10.2修复Activiti节点缓存不更新Bug
8.10.3扩展引擎配置类功能
8.10.4配置器高级用法
8.10.5使用自定义节点缓存类
8.11任务节点缓存数据获取原理
8.11.1获取任务节点缓存数据
8.11.2解析任务节点缓存数据
8.11.3运用任务节点缓存数据
8.12动态修改任务节点缓存数据
8.13节点缓存使用技巧
第9章定时作业
9.1初始化作业执行器
9.2初始化作业处理器
9.2.1任务超时作业
9.2.2定时任务作业
9.2.3定时启动流程实例作业
9.2.4其他作业
9.3作业执行器原理
9.3.1初始化作业执行器
9.3.2启动作业执行器
9.4添加定时作业
9.5执行定时作业
9.6处理作业
9.6.1批量处理作业
9.6.2执行作业之异常处理
9.7关闭作业执行器
9.8自定义作业处理器
第10章流程虚拟机
10.1流程虚拟机原理
10.2虚拟机入口
10.3流程定义转换准备
10.3.1初始化对象解析器集合
10.3.2初始化内置对象解析器
10.3.3解析调度类BpmnParseHandlers
10.3.4BpmnParseHandler架构
10.3.5对象解析器架构
10.4流程对象解析入口
10.5流程子元素对象解析入口
10.5.1任务节点对象解析器
10.5.2创建ActivityImpl实例对象
10.5.3多实例对象解析
10.5.4连线对象解析
10.6PvmProcessElement类架构
10.7自定义对象解析器
10.7.1任务节点扩展属性
10.7.2自定义任务节点对象解析器
10.7.3获取自定义属性
10.7.4运用自定义对象解析器
10.8流程虚拟机实战
10.8.1获取流程虚拟机对象
10.8.2入侵流程虚拟机
10.9操作连线表达式
10.9.1自动计算连线表达式
10.9.2获取连线表达式
第11章监听器原理
11.1监听器生命周期
11.2内置记录监听器
11.2.1内置任务记录监听器
11.2.2内置执行记录监听器
11.3历史解析器架构
11.3.1添加内置记录监听器
11.3.2初始化历史解析器
11.3.3历史节点结束通知
11.3.4控制归档历史数据级别
11.3.5更新历史数据
11.3.6历史节点开始通知
11.4注入执行监听器
11.5注入任务监听器
11.6触发执行监听器
11.6.1class方式调度
11.6.2delegateExpression方式调度
11.6.3expression方式调度
11.6.4执行监听器触发入口
11.7触发任务监听器
11.8监听器
11.8.1默认类
11.8.2自定义类
11.9自定义全局任务监听器
11.10Activiti新特性之字段注射模式
第12章Activiti之设计模式
12.1命令模式说明
12.1.1命令模式的结构说明
12.1.2命令模式实战
12.2Activiti命令模式
12.2.1初始化命令配置类
12.2.2Activiti事务传播行为
12.2.3Spring事务拦截器
12.2.4初始化命令调度者
12.2.5初始化命令上下文工厂
12.2.6初始化命令拦截器
12.3Activiti职责链模式
12.4命令相关类职责
12.5命令拦截器
12.5.1日志拦截器
12.5.2命令上下文拦截器
12.5.3上下文类
12.5.4创建命令上下文实例对象
12.5.5命令调度者拦截器
12.6自定义命令拦截器
12.7命令类调度入口
12.8Activiti事务
12.8.1MyBatis事务管理
12.8.2事务上下文架构
12.8.3事务上下文工厂类
12.8.4事务监听器
12.8.5注册同步事务
第13章流程虚拟机运转
13.1流程实例运转入口
13.2启动流程实例命令类
13.2.1获取ProcessDefinitionEntity实例对象
13.2.2重新生成流程定义缓存数据
13.3创建流程实例
13.3.1创建ExecutionEntity实例对象
13.3.2获取dataObject
13.3.3区别流程实例与执行实例
13.3.4添加历史流程实例数据
13.4虚拟机运转原理
13.5AtomicOperation架构
13.6流程实例启动
13.6.1非异步节点处理
13.6.2异步节点处理
13.7原子类流转
13.7.1流程启动原子类
13.7.2流程启动准备原子类
13.7.3活动节点执行原子类
13.7.4开始节点行为类
13.7.5途经连线
13.7.6通知连线完成原子类
13.7.7连线销毁原子类
13.7.8其他原子类
13.8Activiti新特性之忽略节点
第14章行为篇
14.1活动行为工厂类
14.1.1初始化活动行为工厂类
14.1.2活动行为类架构
14.2排他网关行为类原理
14.3扩展排他网关实战
14.3.1自定义排他网关行为类
14.3.2自定义活动行为工厂类
14.3.3替换默认活动行为工厂类
14.4任务节点处理人多元化配置
14.4.1任务处理人扩展
14.4.2自定义任务解析器
14.4.3自定义任务行为类
14.4.4自定义活动行为工厂类
14.5忽略节点使用误区
14.6修复Activiti忽略节点Bug
结构清晰。本书采用由浅入深、以点带面,采用从整体到局部,再从局部放眼全局的视角,力求展示Activiti框架的全貌。1. 原理结合实战。本书不甘心仅仅追求原理的讲解,更希望通过原理延伸到实际项目开发中具体问题的解决,从而达到学以致用的目的。2. 通俗易懂。本书依然服务于广大的Activiti初学者以及爱好者,尽量避免过于理论的描述方式,尽量做到少盲点、无盲点,从而更加“享受式”的学习,语言浅显易懂却不失专业。3. 技术。本书的讲解涉及到了80%以上的源码分析、并对框架级别的Bug和缺陷大胆假设,小心取证,从而对Activiti框架有一个、全新的认识。4. 代码移植性高。本书的案例来自真实的企业级应用、代码经过工业环境的验证和实践、可移植性强、可塑性高、力争追求“小”而精悍。
即使是冲着内容而买,也会被这糟糕的纸质浇灭几分热情。纸张很薄泛黄通透,经不起折腾,没有精装书本的那种书墨香气,气味略微刺鼻。 如果这是正版的品质,那作者得多生气。
刚出的新书,值得一看
很不错,配套工作流的买更好
在工作中使用过Activiti,想完全了解其底层的运行原理
太需要一本研究activiti实现原理的书籍了。纸张差一点。