<job id="firstJob" restartable="true"
xmlns="http://www.springframework.org/schema/batch">
<step id="FirstStep">
<tasklet>
<chunk reader="read" writer="write"
commit-interval="1" />
</tasklet>
</step>
</job>
<job id="second_job" restartable="false"
xmlns="http://www.springframework.org/schema/batch">
<step id="second_step" ">
<tasklet>
<chunk reader="reader_again" writer="writera_gain"
commit-interval="500" />
</tasklet>
</job>
我这里有两份工作(实际代码中有3份)。我想运行第一个作业来检查数据库中的某些值,并且只有在找到该值时才执行。为此,我希望它继续循环,直到它可以找到数据,然后继续。我怎么能通过Spring Batch xml来做到这一点?有更好的方法吗?
此外,由于代码库的大小,我无法更改结构,即将两个作业分为两个步骤。
答案 0 :(得分:2)
是可以使用“外化流程定义”将一个作业的控制流程定向到另一个作业。您可以在第一个作业中使用While(条件),然后指定流程以达到第二个作业
一种方法是简单地将流声明为对其他人的引用:
defp deps do
[
{:phoenix, "~> 1.3.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.10"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:comeonin, "~> 4.0"},
{:elixir_make, "~> 0.4.1"},
{:bcrypt_elixir, "~> 1.0"}
]
end
有关https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#external-flows
的详情