Activiti 核心对象按时期源码结构分析2017-06-25 20:50:19 请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)Activiti 核心对象按时期源码结构分析 作者 | 颜超敏 网站:craft6.cn。公众号:craft6-cn ACTIVITI的对象时期划分 ACTIVITI 对象很多,有些对象命名很相近 ,对于理解其源码和具体实现逻辑会造成困扰。比如:
等等。 命名类似,加上Activiti使用了大量的设计模式,代码引用层次非常深,让人阅读代码时容易混乱。 所以将ACTIVITI的对象按生命时期划分则容易区分,逐个时期理解,降低阅读难度。 我将ACTIVITI分为 3 个周期来划分:
模型期对象:Activity和Task
Activity是对应流程XML定义的所有元素的抽象父类,即Bpmn.xml中的各种元素(包括任务、网关、子流程等),流程定义基于Actitity的子类来完成整个流程定义的构造。
Acitity对应的流程元素的定义,是定义期对象。 ActitityImpl是流程实例运行期间具体活动的实例对象,是运行期对象。 ======================= Actitity的类结构图:
学习Activity对象,主要了解它的上面和下面的层次结构。 ======================= Task的类结构图: Task是一个Actitity的空的抽象子类,但是Activiti支持的所有任务类型均是它的子类或孙子类。 注意,在Activiti中有两个Task类,一个是model包下的抽象类,是模型期的;一个是task包下的Task接口,是运行期的。 部署期对象:ProcessDefinitionEntity ProcessDefinitionEntity的类结构图: 图比较大,主要是要把关键的对象都纳入进来。
运行期对象:TaskEntity、ActivityImpl、ExecutionEntity和ExecutionImpl
======================= TaskEntity类结构图: ======================= ActivityImpl类结构图: ActivityImpl在整个Activiti对象中最为复杂,也最为核心,我们对Activiti进行的本土化扩展都是围绕该对象进行操作的,比如驳回、任意驳回、分发、汇总等复杂的业务处理,均是通过对它进行编程实现的。 ======================= ExecutionEntity和ExecutionImpl类结构图: 两者并没有关联关系,可以认为ExecutionEntity是实体类,ExecutionImpl是业务实现类。 查看其关系可以通过阅读代码: RuntimeServiceImpl.startProcessInstanceByKey StartProcessInstanceCmd.execute ProcessDefinitionEntity.createProcessInstance ProcessDefinitionImpl.createProcessInstanceForInitial ProcessDefinitionImpl.newProcessInstance 最后到达的代码: protected InterpretableExecution newProcessInstance(ActivityImpl startActivity) { return new ExecutionImpl(startActivity); } 历史期对象:HistoricActivityInstanceEntity 历史期对象相比前面几个时期对象简单得多了,我们主要搞清楚三个方面即可:
作 者 简 介 唯心,颜超敏。 专注Java开源技术和电商、CRM、工作流系统分析、业务建模。 个人网站:www.craft6.cn 本文原创,转载请注明出处。 ![]() 1 ACTIVITI 研究系列 —— 数据库设计(基于5.16.4) 2 ACTIVITI 研究系列 —— 流程设计 、BPMN文件 和 一些扩展思路 3 ACTIVITI 研究系列 —— Spring配置和核心API 4 ACTIVITI 研究系列 —— 核心对象接口、业务和数据表 5 ACTIVITI 研究系列 —— 源码研究之命令、责任链和模板模式 6 Activiti 命令模式详解 7 Activiti 核心对象按时期源码结构分析 分享到: 为您推荐这些文章,如果感兴趣,请继续阅读吧:Activiti 核心对象按时期源码结构分析activiti,核心对象,时期,模型期、部署期、运行期和历史期本文将Activiti的核心对象按4个周期:模型期、部署期、运行期和历史期 进行划分,并逐一分析说明,方便阅读ACT源码深入理解。 |
粤ICP备14060523号 Copyright @2014 -唯心六艺软件 |