新書推薦:
《
先进电磁屏蔽材料——基础、性能与应用
》
售價:HK$
221.8
《
可转债投资实战
》
售價:HK$
99.7
《
王氏之死(新版,史景迁成名作)
》
售價:HK$
54.9
《
敢为天下先:三年建成港科大
》
售價:HK$
77.3
《
长高食谱 让孩子长高个的饮食方案 0-15周岁儿童调理脾胃食谱书籍宝宝辅食书 让孩子爱吃饭 6-9-12岁儿童营养健康食谱书大全 助力孩子身体棒胃口好长得高
》
售價:HK$
47.0
《
身体自愈力:解决内在病因的身体智慧指南
》
售價:HK$
98.6
《
非言语沟通经典入门:影响人际交往的重要力量(第7版)
》
售價:HK$
123.1
《
山西寺观艺术壁画精编卷
》
售價:HK$
1680.0
|
編輯推薦: |
本书采用由浅入深、以点带面,采用从整体到局部,再从局部放眼全局的视角,力求展示Activiti框架的全貌。这不仅是一本讲解如何使用Activiti的书,还讲解了Activiti框架的技术选型和架构思想的书,一本物有所值、货真价实的书。本书中的示例程序均是从实际项目提取简化而来,相信这是你不可错过的一本好书。
|
內容簡介: |
本书旨在深入学习Activiti的内部处理机制。由浅入深、由易到难地对Activiti源码展开了系统的讲解和扩展,并对框架中的部分缺陷进行修正,从而使读者可以更加灵活的运用和改造Activiti。 本书内容包括流程引擎配置类以及流程引擎类的内部实现机制、配置器的使用、流程引擎的管理、流程资源的部署以及内部实现机制、元素解析底层实现、自定义元素解析实战、为任意节点无限扩展属性、流程虚拟机的创建以及运行原理、原子类职责、事件转发器、日志监听器以及日志清洗器使用、修复Activiti部分Bug、自定义部署器实战、对象解析器原理、监听器的原理、事务、活动行为类以及活动行为工厂类、会话缓存的构造过程以及缺陷、自定义高并发id生成器、自定义变量类型、节点跳转、会签、加签、退签、会签节点自定义权重实现、接管Activiti映射文件、扩展任务节点处理人多维度配置、自定义代办SQL、接管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
14.7修复Activiti子流程业务键Bug
第15章Activiti存储之MyBatis
15.1初始化dataSource
15.2Activiti数据访问层关系分析
15.2.1实体类与数据库表的映射
15.2.2实例化SqlSessionFactory
15.3自定义Mapper实战
15.3.1自定义Mapper
15.3.2自定义SQL执行原理
15.4SessionFactory
15.4.1初始化SessionFactory
15.4.2SessionFactory架构
15.5Session
15.5.1Session架构
15.5.2实例化方式创建Session实例
15.5.3反射方式创建Session实例
15.5.4实例化DbSqlSession
15.6SQL语句
15.6.1SQL语句适配器
15.6.2SQL执行id值生成规则
15.7数据层和数据的关系
15.7.1PersistentObject业务对象
15.7.2实体管理类
15.8添加会话缓存
15.9更新操作
15.9.1会话缓存方式更新
15.9.2SqlSession方式更新
15.10删除操作
15.10.1DeleteOperation接口
15.10.2BulkDeleteOperation删除数据
15.10.3CheckedDeleteOperation删除数据
15.10.4乐观锁
15.11刷新会话缓存入口
15.12会话缓存数据持久化
15.12.1移除不必要的数据
15.12.2刷新序列化变量
15.12.3获取更新对象
15.12.4刷新数据
15.12.5解决依赖数据插入先后顺序
15.12.6性能优化
第16章实战
16.1高并发id生成器
16.1.1id生成器初始化
16.1.2自增id生成器
16.1.3自定义主键生成器
16.2变量类型
16.2.1初始化变量管理类
16.2.2变量管理类架构
16.2.3变量处理类
16.2.4自定义变量处理类
16.3ServiceLoader方式注入配置器
16.4节点跳转
16.4.1常规节点跳转
16.4.2分支节点跳转
16.4.3多实例节点跳转
16.5会签
16.5.1串行多实例
16.5.2认领和归还任务
16.5.3代理任务
16.5.4并行多实例
16.5.5加签
16.5.6减签和退签
16.6会签节点自定义权重实现
16.6.1定义处理人权重
16.6.2获取权重信息并自动计算
16.6.3优化建议
16.7接管Activiti
16.7.1接管Activiti映射文件
16.7.2禁用用户表和组表
16.7.3自定义用户角色和部门表
16.7.4扩展任务节点参与者表
16.7.5自定义任务节点参与者命令类
16.7.6流程文档支持设置部门属性
16.7.7解析及运用流程文档部门属性
16.7.8自定义代办SQL
16.8接管Activiti实体管理类
|
內容試閱:
|
前言
创作背景对于OA内部办公系统、ERP系统、审批系统等经常需要大量的使用工作流,而Activiti框架可以更好地辅助开发人员解决实际工作中遇到的流程问题,因此Activiti的重要性不言而喻。很多朋友在实际项目开发中意识到了Activiti的重要性,也看了相关的书籍和资料,但是常听到这样的抱怨Activiti的书我看了不少,觉得看懂了,但就是不知道如何更好地扩展以及改造Activiti,更不知道如何对其进行性能优化,达不到技术解决实际需求。其实不难看出,造成这样的情况归根结底在于:这些朋友对于Activiti缺少架构方面的了解,缺少底层实现细节的认识,认为只使用Activiti提供的API就足够项目开发了,其实还差得很远,并没有从更高层次来理解和认识Activiti,没有真正让Activiti框架开足马力来为项目服务。正所谓了解其本质,掌握其原理才能更好地让Activiti框架为自身项目服务,而不是成为项目中的黑匣子、绊脚石。市面上及网络上有不少Activiti方面的书籍,但对于一般的开发朋友而言,要么太深,不能拨云见日,要么太浅,看了跟没看没有什么区别,再次遇到类似的问题还是无从下手,其根本原因还是讲得太浅、不成系统,与企业开发脱轨。对于所有想要深入学习Activiti框架的朋友,其实需要类似这样的书籍。■讲解深入浅出、浅显易懂。■实例来自实际的企业级项目开发,而不是来自虚拟的场景。■对于Activiti框架提供的功能,在开发过程中觉得部分功能不太好,可以灵活地扩展框架。■深入讲解Activiti的内部实现机制以及运行原理。■一本干货书。这也是本书创建的目的,授人于鱼不如授之于渔,希望能够帮助更多的朋友更好地合理运用、扩展以及优化Activiti,而不是仅仅局限于使用框架提供的API。因为会用仅仅是入门而已,精通则是另一个层面的问题。有过多年的开发经验以及一年的沉淀和准备最终成书,我们可以这样说:这是一本深入讲解Activiti的书,这是一本干货书,不仅有源码的讲解,还有基于源码讲解基础之上的实战讲解,这是一本诚意十足的书,这是一本深入讲解Activiti内核的书,这是一本真正的企业级实战书,敬请您研磨、品评鉴定。本书的试读人员包括:在校大学生,1~10年的工作人员,职位覆盖中高级程序员、项目经理、系统架构师、总监、技术部经理和总经理等。试读结果反馈:工作2年以下的开发人员,基本上都可以看明白,还需要认真研磨和消化吸收; 工作2~5年的朋友,原来Activiti还可以这样用,真是满满的干货,达到了本书写作的目的和意图; 工作5~8年的朋友,可以借鉴Activiti中的设计思想并运用到实际项目开发中; 工作8~10年的朋友,这不仅是一本讲解如何使用Activiti的书,还讲解了Activiti框架的技术选型和架构思想的书,一本物有所值、货真价实的书。本书体系结构本书旨在深入学习Activiti的内部处理机制。由浅入深、由易到难地对Activiti源码展开系统地讲解和扩展,并对框架中的部分缺陷进行修正,从而可以使读者更加灵活地运用和改造Activiti。第1章介绍Activiti环境搭建、设计器的安装、源码的获取和编译。第2章详细讲解流程配置文件的创建方式,流程引擎的架构、流程引擎配置类和流程引擎的创建内部实现机制,配置器的使用以及注意事项,流程引擎的管理以及流程引擎生命周期监听器的使用。第3章讲解流程资源的部署、各种部署方式以及BpmnModel与流程文档之间的转换和格式校验。第4章浓墨重彩地讲解流程文档解析原理和架构思想,包括文档转换器、流程元素解析、外围元素解析、根元素解析、流程元素解析、扩展元素解析、子元素解析、连线元素、黑名单机制以及元素解析器的架构设计。第5章详细讲解自定义元素的解析,包括自定义元素的解析原理、自定义元素的存储、黑名单元素以及非黑名单元素解析实战。第6章介绍事件转发器的内部实现机制,包括事件转发器的初始化、架构、注册方式,日志监听器的使用和扩展,日志清洗器的架构和自定义日志清洗器的使用。第7章深入剖析流程文档部署的内部实现机制,包括内置部署器的使用、部署命令以及自定义部署器实战。第8章讲解流程定义缓存的使用,包括自定义缓存处理类、节点缓存新特性的使用和Bug修复,以及配置器的高级使用技巧从而可以使流程信息彻底动态化。第9章讲解定时器的使用、运行原理以及自定义作业处理器实战。第10章讲解流程虚拟机的内部处理机制,包括对象解析器架构、自定义对象解析器、无缝入侵虚拟机以及操作表达式。第11章讲解监听器原理,包括监听器的生命周期,内置记录监听器,历史解析器的架构设计,监听器的触发时机和监听器代理类、自定义全局监听器的实现和字段注射模式新特性。第12章讲解Activiti中使用的命令模式,包括职责链模式,事务处理、事务上下文、事务监听器以及同步事务。第13章讲解流程虚拟机运转的整个过程以及各种原子类的功能边界和职责,包括异步与非异步节点处理和忽略节点功能。第14章讲解各种活动行为类的原理,包括排他网关行为类、自定义行为类,任务节点处理人多元化、多维度的处理,忽略节点使用误区以及Bug修复、子流程业务键Bug修复。第15章讲解MyBatis框架在Activiti中的使用,包括初始化数据源、数据访问层关系分析,自定义Mapper实战,Session架构、SessionFactory架构,SQL语句适配器、SQL执行id值生成规则,实体管理类,乐观锁,会话缓存的构建以及刷新过程。第16章实现高并发id生成器,讲解了变量类型的原理以及自定义变量处理类、ServiceLoader方式注入配置器,任务的认领、归还、代理任务、会签的实现加签、退签和减签,节点跳转常规节点、分支节点和会签节点,会签自定义权重实战,接管Activiti映射文件、自定义部门实现、扩展任务节点参与者表和自定义代办SQL,接管实体管理类。本书约定本书在讲述过程中,有如下约定: 引擎与流程引擎是等价的。 如无特殊说明,文档均指流程文档。 虚拟机默认指的是流程虚拟机 本书的程序、实例均在JDK1.6中运行,使用的数据库为MySQL。联系作者本书的创作过程中可谓异常艰辛,由于Activiti内容涵盖面比较广泛,涉及的知识点非常之多,再加上Activiti框架中自身的一些缺陷和Bug,因此为了能够让全书更加清楚、更加准确地阐述,笔者经历了许多不眠之夜。由于写作水平有限,本书不足之处在所难免,望读者谅解。更期待各界高手、专家就不足之处赐教。为此,如果读者有任何的疑问或者建议,非常欢迎大家加入QQ群129123599,一起探讨学习。我期待与大家一起交流学习、共同进步。同时也希望大家可以关注我的博客:http:www.shareniu.com。真诚致谢创作的过程是痛苦的,持续的时间也远远超乎我的预期,本以为自己对Activiti已经了如指掌,但在写作的过程中还是会遇到各种各样的问题,幸运的是自己咬牙坚持下来了。首先要感谢清华大学出版社的员工,本书的策划编辑,他们是我见过的最好的出版人,对本书从选题到出版的各个环节,都给予大量的指导和帮助,这对我的一生都有帮助。其次要感谢我的妻子,一个产品经理,从产品的角度来让本书内容的层次感更加的清晰和人性化。她始终不辞辛劳,毫无怨言地对我照顾有加,才能我有更多的时间用来创作。然后要感谢郑州轻工业学院张志锋教授、靳喜军、曾维林、李志、寇成星、张霞等在整个编写过程中给予的支持和帮助。接下来,感谢家人、感谢朋友、感谢北京的明媚阳光和漫天风沙以及熙熙攘攘的回龙观,总之感谢一切。最后,提前感谢购买本书的朋友们,您的支持信任是我们继续前进的动力。冀正2017年5月
|
|