Java 如何存储、编程和执行内部作业?
我正在寻找一种存储系统进程/任务的方法,然后应用程序将根据指定的系统范围条件执行这些进程/任务。关键是系统应该检查输入变量,并根据流程规则触发系统中的特定操作 我可能正在寻找某种形式的元语言,我可以编写规则/动作,并且可以根据输入系统参数编程启动和停止Java 如何存储、编程和执行内部作业?,java,spring,Java,Spring,我正在寻找一种存储系统进程/任务的方法,然后应用程序将根据指定的系统范围条件执行这些进程/任务。关键是系统应该检查输入变量,并根据流程规则触发系统中的特定操作 我可能正在寻找某种形式的元语言,我可以编写规则/动作,并且可以根据输入系统参数编程启动和停止 以什么格式记录这些过程 如何解析这些作业 什么设计模式适用于此 在这个用例上有任何现有的解决方案吗 用于此目的的Java库 如果有什么不清楚的地方,我将很乐意完成这个问题。 谢谢。您可以试试Spring Batch。它为作业引入了自己的域语言
- 以什么格式记录这些过程
- 如何解析这些作业
- 什么设计模式适用于此
- 在这个用例上有任何现有的解决方案吗
- 用于此目的的Java库
谢谢。您可以试试Spring Batch。它为作业引入了自己的域语言,并允许使用XML或java配置它们 这里有几个例子来自他们的研究 XML配置:
<job id="footballJob">
<step id="playerload" next="gameLoad"/>
<step id="gameLoad" next="playerSummarization"/>
<step id="playerSummarization"/>
</job>
SpringBatch提供了重复或重试失败的作业步骤以及并行步骤执行的功能
对于某些任务,也可以使用apachecamel。尽管如此,它还是提供了自己的DSL以及XML和Java配置选项
这两个框架都提供了动作序列的抽象描述,这些动作应该在工作期间完成。ApacheCamel对于需要一些集成任务(在JMS队列中发送消息、调用REST或Web服务、发送电子邮件等)的作业更为方便。SpringBatch的优点是能够在服务出现错误或暂时无法访问时配置应用程序行为,应该调用这些行为(重复/重试机制)。这两个框架可以相互集成:您可以从ApacheCamel路由调用Spring批处理作业,也可以从Spring批处理作业启动ApacheCamel路由
最复杂的解决方案是使用一些BPMN引擎(例如Camunda、ApacheActiviti、jBPMN),但这可能是一种过度使用
@Bean
public Job footballJob() {
return this.jobBuilderFactory.get("footballJob")
.start(playerLoad())
.next(gameLoad())
.next(playerSummarization())
.end()
.build();
}