Activiti 命令模式详解2017-06-25 20:47:34 请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)Activiti 命令模式详解 作者 | 颜超敏 网站:craft6.cn。公众号:craft6-cn 命令模式和扩展 先贴一个命令模式的简要图,以便重温一下命令模式。
整个模式的关键点在于:
扩展方式: 基于前面的命令模式简图,我们再扩展一下: 图中黄色的两部分是扩展方式:
Activiti的命令模式(简图) Activiti 深入使用了命令模式来实现系统各个功能,比如更改流程状态、创建任务、执行任务、删除任务等等,可以说阅读Activiti源码,首先要理解的就是它无处不在的命令模式。 先上一个简图,了解Activiti命令模式的主要结构:
Activiti 的命令模式(详图) 在我们对第二章内容有基本了解后,我们继续看一个详细图,这个图是基于前面简图深化,增加一个代码的关键点: CommandExecutor和CommandInterceptor是怎样实例化的? 它们怎么和流程定义相关配置关联起来? 先看一下在流程定义的配置文件中,会配置什么内容: 这是很常规的代码,基本上每个和Activiti集成的项目都会用到 这段配置方式。 1)这里定义了流程配置,通过SpringProcessEngineConfiguration子类(它继承了ProcessEngineConfigurationImpl)。 2)然后把该bean注入给processEngine,注意它使用的class是ProcessEngineFactoryBean,它的getObject方法返回的是ProcessEngine的实例。 3)通过ProcessEngineConfigurationImpl的initCommandExecutor实例化CommandExecutor,并且将前面定义的processEngineConfiguration也传给它。 4)通过ProcessEngineConfigurationImpl的initInterceptorChain来构造CommandInterceptor的责任链。 经过这样,当每次使用CommandExecutor执行Command时,便会基于流程的统一定义、所有配置好的CommandInterceptor责任链来拦截处理业务。 至于Activiti的代码我就不重复粘贴上来了,本文主要给Activiti相关开发人员阅读使用,对Activiti不了解的读者作用不太大。 作 者 简 介 唯心,颜超敏。 专注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无处不在的命令模式是怎样设计的,方便我们阅读理解Activiti的源码。 |
粤ICP备14060523号 Copyright @2014 -唯心六艺软件 |