activiti乐观锁实现

本文介绍了乐观锁的概念和与悲观锁的区别,指出乐观锁适用于并发访问较低且冲突较少的场景。文章提供了数据版本记录机制作为乐观锁的实现方式,并展示了在activiti中使用SQL和Java代码实现乐观锁的例子,当更新记录时检测版本号是否一致,以防止并发冲突。
摘要由CSDN通过智能技术生成

理论部分参考:http://chenzhou123520.iteye.com/blog/1863407

谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有了乐观锁,具体参见下面介绍:

 

实现并签功能需要使用到Activiti中的多实例任务和JavaDelegate,具体步骤如下: 1. 在BPMN流程图中添加一个多实例任务节点,设置节点的参与者为“并签人”,设置实例完成条件为“所有实例完成”。 2. 在节点的扩展属性中添加“collection”和“elementVariable”属性,分别指定并签任务的参与者列表和每个实例的变量名。 3. 在节点的扩展属性中添加“completionCondition”属性,设置并签任务的完成条件为“nrOfCompletedInstances == nrOfInstances”。 4. 在JavaDelegate中实现并签任务的处理逻辑,在处理过程中可以通过流程变量获取并签任务的实例列表和每个实例的处理结果。 5. 在节点的扩展属性中添加“delegateExpression”属性,指定JavaDelegate的实现类。 6. 将JavaDelegate的实现类注册到Activiti的Spring容器中,使其能够被流程引擎调用。 7. 启动流程实例,流程引擎会自动创建并签任务的实例,并将其分配给指定的参与者,等待处理。 8. 参与者处理任务时,可以通过流程表单提交处理结果,流程引擎会将结果存储到流程变量中。 9. 当所有实例都完成时,JavaDelegate会被调用,处理并签任务的结果,并将结果存储到流程变量中,后续流程节点可以根据该结果进行处理。 需要注意的是,并签任务的参与者数量建议不要过多,否则会影响流程性能。同时,在JavaDelegate中处理并签任务的逻辑需要考虑到并发处理的情况,建议使用线程安全的方式处理任务结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值