基本的に、バッチのすべてのステップで除外されたアイテムを含むレポートを作成したいと思います。現在、spring-batch-adminでフィルタリング(およびスキップ)された数を確認できますが、手動で処理できるようにアイテムのリストが必要です。
私のステップでは、クライアントのリストを調べて、サードパーティのソースからクライアントに関するデータを取得します。データの取得に使用するすべてのアカウントにユーザー名とパスワードがあります。クライアントが資格情報を持っていない可能性があります。プロセッサを実行する前に、それらをフィルタリングします。しかし、クライアントが間違ったクレデンシャルを持っている可能性があり(彼はそれらを間違って入力しました)、それから私もそれをフィルタリングしたいのですが、「異なって」。制限を設定したくないので、これらの項目をスキップしたくありません。制限を設定すると、ジョブが失敗します。いずれもヌルや不正解であったとしても、次の段階に進みたいと思います。
私のチャンクは現在、DBリーダー、DBライター、および次の機能で構成されCompositeItemProcessor
ています。
- クライアントが資格情報を持っていることを検証し、持っていない人を除外します。
- データを取得するデータエンハンサー(別の
ItemProcessor
)を実行します。これが不正なクレデンシャルでエラーを受け取った場合、アイテムもフィルタリングします(nullを返します)。
私がやりたいことは:
- (同じステップで)発生したフィルタリングの2つの「タイプ」を区別します。
filterCount
現在、spring-batch-adminのフィールドでそれらすべてが合計されているのがわかります。 - 後で手動で処理するために、ケースごとにフィルタリングされたクライアントとともにレポートを送信します。また、いくつかの手順でフィルタリングされたアイテムを集約し、最後に一緒に送信したいと思います。
最善のアプローチは何でしょうか?ItemProcessor
アイテムがフィルタリングされた原因を知ることができますか?ItemListeners
アイテムが処理された後に通知されるものがあることを知っていますが、これらを何らかの方法で使用する必要がありますか?ジョブが終了するまで結果(フィルタリングされたアイテム)を保存するにはどうすればよいですか?
彼の仕事が実行された後にレポートを作成しようとしているのは私だけではないと思うので、私はこれに関するベストプラクティスを探しましたが、有用なものは何も見つかりませんでした。
ありがとう!