Can OutSystems handle heavy batch processing?
Table of contents
OutSystems supports the execution of batch jobs. The OutSystems Server includes an asynchronous engine, the Scheduler Service, that manages the execution of logic that doesn’t need to be attached to manual operations. Batch jobs can be triggered based on events, either internal to the OutSystem server or external, or based on scheduled times that can be configured or calculated. Jobs are distributed across all front-end servers and the load distribution is controlled by the Scheduler Service.
Developing batch jobs
Batch jobs are developed in the OutSystems development environment. There are 3 types of design patterns that can be used. Depending on the logic that needs to be implemented, one of the following approaches should be followed.
A timer enables a developer to define business logic that normally executes at a specific time. Or it can be triggered based on a business need (e.g., sending marketing campaigns asynchronously after an approval task is completed by a manager). Think of it as a collection of code patterns that are processed in sequence and do not need user input or intervention (e.g., fetching data from external data sources, like flat files or REST APIs, and performing some data mashup).
What are timers best suited for?
- Execution of background and routine tasks at a specific time
- Execution of business processes that require long processing times
- Processes where no user interaction is required
- Offloading heavy processing
- Processing large chunks of information
- Executing bootstrap logic after publishing an application.
Business Process Technology (BPT)
OutSystems can be used to model long-running processes or events. For example, running invoices for all customers for a specific period could take several minutes. A process can be seen as a flow of activities that need to be accomplished over time. Each activity, for each process instance, is tracked in the database.
Among other code patterns associated with BPT, an automatic activity allows business logic to run asynchronously with traceability built-in: examples include start date, end date, duration, number of retries, and so on. The activity inherits all of the context of the process flow it is running in, and it can also be extended in scope by using other sources of data.
What are OutSystems processes best suited for?
- Defining and executing business processes in OutSystems applications
- Performing system-to-system and human-to-system interactions and workflows
- Defining operational workflow for the actors (users or systems)
- Processing work in the background (through automatic activities)
- Performing multiple activities per process
OutSystems also enables simpler process execution where database tracking is not a requirement. This lighter execution mode is useful for large-scale, event-driven processes that can handle millions of events per day. An example, based on an external API call, is validating the incoming data and storing it without keeping the API call open.
What are light processes best suited for?
- Large-scale process flows handling thousands of events per day
- Event-driven tasks that don't require tracking
- Tracking events that are fast to process
- Parallel processing
Managing batch jobs
The OutSystems management console allows users to manage batch jobs in the following ways:
- Monitor batch job execution
- Adjust settings such as the schedule and priority.
- Deactivate or activate a batch job or force the job to execute;
- Browse the logs of previous jobs
Monitoring the execution of Timers:
Editing the Timer settings: