Batch Volumes

Typically the decisive reason to stream a batch program is because the anticipated volume of records cannot be processed inside the available time using a single thread of execution. However, it's very hard to accurately predict the actual volumes that may be encountered in a production system, so the best option (where possible) is to use streaming for all batch programs - even if the "default" run configuration just uses the chunker with an in-process stream.

Some styles of processing can never be streamed and must be run as a serial process inside a single transaction. However, even where this is seemingly the case it is worth closely examining the options to see if the use of parameters to batch programs or developing multiple batch programs will allow the required elements to be run serially while still running in parallel within those serial elements. For example a batch program is required to reassess every active case in the system. All cases of type A should be reassessed before cases of type B. Case type is used as a parameter which allows the batch program to be streamed. This is achieved by running the batch program with case type A as a parameter and then again with case type B as a parameter.