Activiti权威指南
上QQ阅读APP看书,第一时间看更新

前言

创作背景

对于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群475458061,一起探讨学习。我期待与大家一起交流学习、共同进步。同时也希望大家可以关注我的博客:http://www.shareniu.com/

真诚致谢

创作的过程是痛苦的,持续的时间也远远超乎我的预期,本以为自己对Activiti已经了如指掌,但在写作的过程中还是会遇到各种各样的问题,幸运的是自己咬牙坚持下来了。

首先要感谢清华大学出版社的员工,本书的策划编辑,他们是我见过的最好的出版人,对本书从选题到出版的各个环节,都给予大量的指导和帮助,这对我的一生都有帮助。

其次要感谢我的妻子,一个产品经理,从产品的角度来让本书内容的层次感更加的清晰和人性化。她始终不辞辛劳,毫无怨言地对我照顾有加,才能我有更多的时间用来创作。

然后要感谢郑州轻工业学院张志锋教授、靳喜军、曾维林、李志、寇成星、张霞等在整个编写过程中给予的支持和帮助。

接下来,感谢家人、感谢朋友、感谢北京的明媚阳光和漫天风沙以及熙熙攘攘的回龙观,总之感谢一切。

最后,提前感谢购买本书的朋友们,您的支持信任是我们继续前进的动力。

冀正

2017年5月