我开始使用Spring Batch,并且对使用步骤,决策者和区块时有疑问。Spring批处理时使用步骤决策者和块
鉴于以下输入:
<UserAuthorizationEvent>
<UserAuthorization>
<Action>ADD</Action>
<UserName>Name1</UserName>
<!-- more properties here -->
</UserAuthorization>
<UserAuthorization>
<Action>UPDATE</Action>
<UserId>456</UserId>
<UserName>NewName2</UserName>
<!-- more properties here -->
</UserAuthorization>
<UserAuthorization>
<UserId>789</UserId>
<Action>DELETE</Action>
</UserAuthorization>
<!-- 1000 or more UserAuthorization here -->
</UserAuthorizationEvent>
对于每一个文件中的<UserAuthorization>
的,我都会有不同的业务规则取决于<Action>
对数据库执行查询前验证。 (例如:对于ADD,验证用户名在数据库中是唯一的,并且它仅由字母组成,或者对于DELETE,验证该表是否存在于表中)
然后,<Action>
值将确定是否我需要在数据库中插入,更新或删除一个值。 (Action可能有其他值,如UPDATE_RIGHTS或RESET_PASSWORD)
最好做什么?
做我定义了一个工作等:
<job id="myJob" xmlns="http://www.springframework.org/schema/batch">
<step id="step1">
<tasklet>
<chunk reader="itemReader" processor="itemProcessor" writer="itemWriter" commit-interval="2" />
</tasklet>
</step>
</job>
- 的itemReader将读取XML文件,并在同一时间返回
<UserAuthorization>
之一。 - 的ItemProcessor中将以饱满的
if
s到核实其取决于价值<Action>
- 的当前项目的业务规则itemWriter将在数据库中持久的项目。如果我想在执行查询之前执行更多的事情,是否也需要在这里添加逻辑?
通过这样做,我担心我没有正确使用Spring批处理。
这是正确的做法吗?
我可以使用几个步骤和决策者来实现批处理的所有逻辑吗? 你有一些例子吗?
对于添加操作的id完全正确,我编辑问题。我在这里试图简化输入文件和业务逻辑:将会有一个或多个具有1000或更多UserAuthorization的输入文件(比这更复杂) – fluminis