wudi7965 2009-12-01 14:24
浏览 385
已采纳

我的这个需求——“任务调度”是否适用工作流引擎来做?

在项目中需要这样的一个“任务调度”功能,JAVA、Spring环境:
1、通过API下达“任务”,这个任务将异步执行,可以立即执行也可以设定延迟时间
2、任务在新的线程池中异步执行,可以限制最大并行任务数(线程数)
3、任务的下达执行要与数据库事务相协调,不能出现任务开始执行了,但下达任务的线程数据库事务还没有提交的情况
4、任务执行失败,应可以重新执行,并可以指定延迟时间
5、可以配置任务间的依赖关系,例如:
a执行成功后执行b,
b执行完毕后不管成不成功均执行c,
c执行成功后执行d,执行失败则执行e,
g、h、i都执行成功后执行j,
k、l、m有一个执行成功执行n………等等
6、可以设置具体任务的失败最大重试次数
7、系统应是可靠的,系统因为任何原因崩溃后,重新启动系统,原有任务应能继续流转
8、最好有限制某种任务最大并发数的功能,例如某个任务是向B系统发送数据,可以限定这种任务的并发数
9、最好有现成的手段查看当前任务的情况,例如已经下达了什么任务、那些正在执行、执行时间,必要时可以干预任务,例如强制终止、重新执行等

我们现在使用数据库、JMS/ActiveMQ、Java线程池等实现了一个用着,但不够完善。
我感觉这个需求应该可以叫“工作流”,但是我在网上查询工作流,发现大多都是站在例如创建公文、审批等等类似公文流转的场景的,或者是一上来就讲一堆理论,或是更多讨论如何便于最终用户来画图、控制流程,我没有这个需求,流程基本由开发人员指定,且多为程序模块间的关系。

我想知道:
这是否是工作流范畴,如果是,请介绍在Java下的开源引擎中的实现思路;如果不是,是否有其它有关“任务调度”的框架?

  • 写回答

2条回答 默认 最新

  • wocsok 2009-12-01 21:06
    关注

    1.是工作流范畴 感觉你的需求来说 应该是比较简易的工作流程 不用参与者

    2.给你个大师的BLOG地址 看看这位大师的工作流引擎介绍 以及各个工作流内核实现 你就什么都不用问了http://blog.csdn.net/james999/archive/2009/05/10/4166404.aspx
    看看他里面的工作流文章
    3.quartz不错 Spring已经集成进来了 http://fly-net-cn.iteye.com/blog/77581
    http://seyo.iteye.com/blog/269598

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作