发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

关于并发锁的设计问题

              
2007-08-31 16:27
赞助商链接

大家好,今天刚到Jdon,以后多多关照啊^_^

今天碰上个设计问题,在这请教了。

问题背景:
1 项目是政府办公自动化系统,涉及到工作流。在办公流程中,会出现各种并发的任务。(比如:一份公文的审批,需要多个领导的审批意见,这些领导都对公文修改的权利)
2 需求: 保证公文的数据完整,需要对并发任务涉及的公文进行访问控制,但有A申请办理公文时,如果有人正在办理,则提示“有人正在办理”,阻止A进入办文流程。

3 方案: 用锁机制。

我现在考虑的问题主要有几个:
1 被锁的对象:
粒度问题:现在的需求是对某个办文流程进行加锁, 我希望对被锁对象进行抽象, 使锁与被锁对象解偶。能是锁支持对不同粒度对象的控制(比如:一整个业务流程对象、 流程中的一个步骤对象、 实体对象、 对象的某一个方法等 )

2 加锁、解锁时机设计:
主要考虑问题是:如何在尽量不修改原代码的情况下,在逻辑、流程的某个位置加入锁管理的逻辑。

1
2007-08-31 17:57

如果想不修改原来代码,可以使用AOP拦截器这样方式来实现。

2007-09-17 13:51

to banq:
首先感谢的回复!

"使用AOP拦截器"

这里我有几个疑问:
(1)AOP拦截器,会在一个很大的横向范围上拦截目标代码。用在事件管理、日志操作上确实很方便,但是如果用在并发任务上,而且这个并发任务比例并不大,不管是不是并发都用拦截器拦下来,判断事是否由锁、状态如何,是不是代价大了点。

我所期望的是一个更灵活的拦截,可以动态的设置、撤销拦截点、拦截方法。不知道现在能做到码

2007-09-18 10:49

>动态的设置、撤销拦截点、拦截方法。不知道现在能做到码
spring 2.0就能做到,通过配置设置。

AOP模式      事务架构      同步或锁     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com