2
我使用Spring Batch的,我有以下結構(層)設計一個批處理應用程序:批和業務層通信
- 頂模塊,我把所有的Spring Batch的代碼(閱讀文件,處理和寫作)。此頂層模塊特定於文件的特定格式。所以,我可能在未來會有一個新的並行模塊,能夠讀取/處理/寫入新的格式。獨立於格式,文件的每一行對應於要執行的特定操作。例如,每行可以表示操作「將訂單項X添加到訂單Y」。所以,對於每一行,在完成讀取和處理之後,我使用一個自定義的ItemWriter來調用緊接着的下一層所需的操作。
- 將實現不同批處理操作的業務邏輯層。這些操作中的每一個都是使用域圖層對象實現的。例如,通過使用OrderRepository檢索訂單,然後調用訂單的addLineItem方法,可以實現「Add line ite; X to order Y」操作。
- 我擁有所有域對象的域圖層。在前面的例子之後,我有Order和LineItem實體。
我的問題是:
- 是否有一個最好的做法(也許一個具體的設計模式),以用於頂部模塊和業務邏輯層之間的界面?
- 我們假設每個文件只包含一行訂單。編寫每行的天真方法是每行調用一個批處理操作。在這種情況下,對於每一行,都會調用OrderRepository來檢索訂單,然後保存訂單。我正在考慮另一種方法,其中的行是用塊寫的(就像我們用Spring批處理一樣)。寫操作所採用的參數具有List類型。按照第二種方法,我需要向業務操作傳遞它需要將數據塊添加到相關訂單中的數據。在頂層模塊和業務邏輯層之間使用哪種形式傳遞信息?
感謝