[size=large]现在有一个类似工作流的系统,但是没有使用jbpm框架,SSH2开发环境。
问题是这样的:
有一个请求request(id,status),某角色的用户将次数据库中存放的某一id的request的status修改为某一个值时,比如open,则从修改时开始计时,若没有其他用户将它的状态改为其他值,那么24小时后,要让此request的status字段自动变为另一个值,并不让任何用户再修改。
请问如何实现?
我的一个思路是在status被修改成open时,启动一个线程开始计时,若有人修改了它,则取消计时,若没有人修改,那么24小时后修改它。
有没有哪位高人有更好的实现方法。先谢过了![/size]
具体的业务逻辑还是你自己比较清楚!
一般的做法可能大概分两种方式吧:
1.0 Spring定时任务(Quartz,timer) ,或者 thread 一类定时去扫描那个字段的值!最好有一个【最后的修改时间字段】!然后做不同的修改!
至于具体的怎么去修改,触发 应该不难吧! 或者直接用thread 也比较好控制!具体的代码只能结合你自己的代码写咯!
2.0 触发式刷新!就是每次读那个字段的时候 判断下 【前提是有个最后的刷新时间】
然后做一些处理!
大同小异吧! 个人感觉上面那些提议都是可以的!只要你理解了就好办!
我推荐用 Spring定时任务。。。。
那建议你用 任务调度框架Quartz,可定制性强多了
任务调度框架Quartz文档
http://blog.csdn.net/alex197963/archive/2009/08/06/4417995.aspx
1、可以通过程序中的任务调度(如Quartz),进行定时去扫描符合条件的进行修改
2、可以使用数据库的任务调度(如oracle的job),进行定时去扫描符合条件的进行修改
mysql 几乎没用过,不熟悉这个不能发表意见。
你可以使用Spring定时任务进行处理,定时任务其实就是规定什么时间去执行什么代码,你可以在代码进行处理,定时执行的代码需要怎么处理业务逻辑这个由你自己设计了。
对于Spring定时任务的配置其实很简单,具体配置网上搜索一下就一堆了。
个人觉得你还线程好些,如果时间要求很准的话要任务调度要执行的频率太高,不高的话时间不好把握,不划算!
ok 你得到了! :idea: