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条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站