Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何存储、编程和执行内部作业?_Java_Spring - Fatal编程技术网

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();
}