我開始使用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