Batch Processing Sample
Batch processing is used when a specific in-only operation must be executed sequencially with different parameter sets. Here we demonstre a data service where batch processing is enabled, and the necessory batch operations are automatically created.
The sample data service BatchRequestSample should be deployed using the instructions in Deploying Data Services section.
Running the Sample
The sample service can be run using the TryIt tool, which is bundled with the WSO2 Data Services Server, or a code-generated java client sample as discussed in the Data Services Clients section.
Sample Run
The command line application is used here to present the functionality of batch processing. As shown in the Data Services Clients section, run the command "ant batch_request", to run the sample. The output will resemble the following:
The sample tests batch processing by executing a batch operation with three parameter tests, which means, it's effectively executing three consecutive operations. The operation is to add a new employee to the database. Here we execute the batch operation and check for the existence of the three newly added entries. A requirement of batch operations is, if one invocation fails, then all the other operations in the batch should fail. This can be seen here, where the sets of three employee entries are either inserted together, or neither of them is inserted. In this sample, a validator is used for checking if a valid email address is given when adding a new employee entry to the database. If the email is invalid, that operation invocation fails.
There are such four batch requests done here as explained below.
- All the parameters are added properly and all operations executed successfully. Therefore, when checking for entries with ids "180000", "180001", "180002", all returns true.
- The request with id "180003" is executed successfully. But when it reaches "180004", a validation error occurs since the email address is invalid. All service invocations in that batch request are rolled back. So in the next section when checking for the employee ids belonging to this batch request, no one would have been added to the database. This is expected since all the operations in a batch operation are executed in a single transaction.
- In this instance, the 3'rd operation in the batch request is not given an email address. It causes a validation error. The transaction is rolled back and all ids "180006", "180007" and "180008" are not executed.
- The requests here are all given valid parameters; same as in the 1'st request. So all the records "180009", "180010" and "180011" are added successfully.
This demonstrates how the batch operations behave in a transactional manner.