Many custom software applications developed for clients have a version of interface where users interact with a website, a desktop, or mobile GUI. There are other instances when clients request software where no front end is required. These are typically applications which perform a specific function on a schedule or process transactional batches.
For example: Supporting several client systems who use batch processing to perform time-consuming tasks such as aggregating monthly sales or payment data, performing calculations on it, and displaying those results on reports. The process of aggregating large amounts of data and preparing summary results to be displayed on a report can be disk and/or processor intensive and very time consuming. If the task can be handled by an automated process which runs at a scheduled time without requiring any input or direction from a user, the report can be prepared ahead of time. The process saves the user from having to wait for the time-consuming functions to be performed when the report is needed.
Another function is automated batch processing to assist clients in the financial sector with generation and distribution of items such as invoices, payments, or financial statements on a recurring basis. This type lends itself to batch processing since it typically covers a specified date range and the business logic can be defined ahead of time and captured in the automated process to run on a regular daily, monthly, or annual basis.
Other solutions using an automated service involve processing incoming files on a more frequent hourly or minute basis. Clients rely on an automated service to monitor an email inbox or an FTP location to watch for incoming files such as purchase orders or inventory updates coming from other internal processes, third-party organizations, or the web. This type of solution is implemented on a more frequent schedule to keep processing close to real-time throughout the day. When the service executes the process, it may look for any new items that have been received since the last execution, open each item, and perform the function needed to occur according to the specific file.
An important aspect of developing an automated software process is feedback from the application. Feedback from the automated process is often essential for the client to rely on. The automated process should report back with key information- when the process ran (if at all), the status, and may include essential details about the specific tasks performed. This information is necessary for determining whether the automated process is complete, and if not, what went wrong. If something did go wrong to a potential business-critical process, the application needs to notify someone or a group of people proactively of the failure, perhaps via email or by updating a monitored dashboard. Feedback from a service after a successful execution can usually be logged to a database or log file for future reference since immediate attention is not required.
From a software development standpoint, writing the type of applications can come with unique challenges. Often because of the nature of the function, the application is performing for the customer it can be difficult to duplicate the customers’ production environment in our development environment. There may be dependencies on other software which we may not have access to, or which is not maintained with current or valid test data. Sometimes the process is dependent on sensitive customer data which is not able to be moved or copied from the customer’s domain for security and/or compliance reasons. Debugging an automated process is often challenging for multiple reasons. Since the process is not accompanied by an interface, the information being used by the process is not presented in as clean of a package, and it’s up to the developer completing the debugging to track down and identify the relevant information being used within the particular process execution. Also, batch processes tend to execute larger amounts of code with more complicated or unique business logic than a function or application that includes a user interface. Dependencies on third-party software can also increase debugging complexity.
Regardless of the additional challenges that batch processes bring for both the client (what do we do when something goes wrong?) and as the team responsible for developing and supporting the software, batch processing and automated service applications are often used to perform essential functions for our customers, and alleviate the need for user interaction in order to perform the function, freeing up valuable human resources for other tasks.
Contact us today to learn more about how batch processing can help your business.