2009-10-13 72 views
6

我正在考虑使用Quartz框架来安排几百个作业的运行。Java - 在Quartz中创建工作流程

根据他们的API,作业可以安排在某些时刻运行,但不能一个接一个地运行(并且如果一个失败则停止一系列作业)。 唯一推荐方法我能找到的是:

  • 使用的通知的作业的完成和下一个触发调度火的监听器(如何协调呢?)
  • 每个作业将获得包含要运行的下一个作业的参数,并在完成实际工作后安排其运行。 (合作)

你知道一个更好的方法来创建Quartz中的作业工作流吗?

你能推荐其他的方法/框架来实现Java中的工作流吗?

编辑:在此期间我发现约OSWorkflow这似乎是我需要的一个很好的匹配。看来,我需要实施的是“Sequence Pattern”。

回答

1

这听起来像你希望Quartz安排第一个工作,并将所有东西都链接起来。

你看过封装每个任务使用Command Pattern,并将它们链接在一起吗?

2

当Quartz文档谈到“Job”时,它指的是一个实现“Job”接口的类,它实际上只是带有一个接受Quartz Context对象的“execute”方法的任何类。在创建这个实现时,你可以真正做你想做的任何事情。

您可以创建Quartz Job Interface的实现,它只是简单地调用工作流中的所有作业,并在失败时引发JobExecutionException异常。

0

我在一个叫动态任务调度使用Quartz来执行工作链实施的容错方式简单工作流(XML格式definied)项目的工作。

看看http://sourceforge.net/projects/dynatasksched/
该项目是测试版,但是我认为它可以给你一些想法,开始..

希望它是非常有用的!

0

对于Quartz的作业链支持,您可能需要检查我参与过的QuartzDesk项目。在2.0版本中。我们添加了一个功能强大的job chaining engine,使您无需修改​​应用程序代码即可编排您的Quartz作业。

引擎负责将作业执行结果和其他参数从源作业传播到链接的目标作业。

QuartzDesk附带一个GUI,允许您在不中断应用程序的情况下动态更新作业链。

enter image description here