Activiti流程定义缓存源码分析2

    1. 缓存架构

根据Activiti流程定义缓存源码分析1代码分析,我们看到了大部分缓存处理类的类型为DeploymentCache,该接口的类图如图x-所示。

 

图x-部署缓存DeploymentCache

在上图中,我们很清晰的看到了DeploymentCache接口的定义以及具体实现类,通过后续的学习,你会逐渐掌握每个类的作用。那么,让我们先了解一下上图中各个类的作用。

  1. DefaultDeploymentCache:该类对接口DeploymentCache中的方法进行实现,其内部使用Map数据结构维护所有的缓存数据,包括使用HashMap以及LinkedHashMap(LRU算法实现的基石)。
  1. DeploymentCache:定义了对缓存数据的添加、获取、移除以及清除所有缓存数据的函数。

在这里可能读者有个小小的疑问,为什么没有定义对缓存的更新以及删除函数呢?其实道理也很简单,因为该接口中的默认实现类内部均使用Map数据结构来维护缓存中的数据,基于Map数据结构的特性,如果用户期望更新或者删除操作,只需要根据key调用add函数即可完成对原有值的更新覆盖操作,因此没有必要在该接口中单独定义更新和删除两个函数。这样设计的话,可能用户自定义的缓存处理类中的添加函数功能需要丰富一点,最起码要包括添加、更新和删除三个逻辑的判断和实现。需要注意一点:比如随后章节中我们在讲解重新部署流程文档的案例中,需要更新缓存中的数据,可能有些读者在平时的开发中喜欢使用clear函数进行缓存数据的清除操作,使用clear函数清除缓存数据,归根结底是对Actviti中的缓存处理机制不了解所导致的误操作。因为该操作会清除缓存中所有的数据,如果项目中流程定义文档比较多,缓存对象势必会非常的多,如果贸然调用clear函数清除所有的缓存,极易导致缓存雪崩,程序性能急剧下降,因此笔者强烈不推荐使用clear函数清除缓存数据,最好使用add函数进行缓存的添加、更新以及删除操作,当然了如果读者觉得有必要,也可以通过扩展接口的方式对更新或者删除的方法进行重新实现。

  1. MultiSchemaMultiTenantProcessDefinitionCache:该类主要负责对“多数据库多租户路由”创建的流程引擎配置类中的部署对象进行缓存。
  2. 技术团队支持:盘古BPM工作流平台

    具体效果参考盘古BPM

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti流程定义通常包含以下几个方面: 1. 流程图:流程图是流程定义的核心组成部分,用于描述流程中各个任务节点之间的执行顺序和执行条件。流程图通常采用BPMN 2.0规范进行设计,并以XML格式进行存储。 2. 任务节点:任务节点是流程定义中的核心组成部分,表示流程中的各个任务。任务节点通常包括任务名称、任务类型、任务处理人等属性。 3. 事件:事件是流程定义中的一个重要组成部分,表示流程中的各种事件,例如任务完成事件、流程启动事件等。事件通常包括事件名称、事件类型、事件触发条件等属性。 4. 流程变量:流程变量是流程定义中的一个重要组成部分,表示流程中的各种数据。流程变量可以在流程中进行传递和操作,例如传递处理结果、传递数据等。 5. 流程条件:流程条件是流程定义中的一个重要组成部分,表示流程中各个任务之间的执行条件。流程条件可以根据流程变量等条件进行判断,决定任务的执行顺序和执行结果。 6. 任务分配:任务分配是流程定义中的一个重要组成部分,表示任务应分配给哪些人员或角色进行处理。任务分配可以根据任务类型、任务属性、人员或角色等条件进行指定。 通过定义这些组成部分,企业可以更好地管理和优化业务流程,从而提高企业的工作效率和业务质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值