By enabling the boxcarring option, a service will contain The boxcarring functionality is demonstrated here using the RDBMS Sample Service. Boxcarring is enabled for this data service and the following control operations are created: "begin_boxcar", "end_boxcar" and "abort_boxcar" control operations. Boxcarring is roughly analogous to transactions we see in database systems. The usage of boxcarring can be demonstrated by executing the following operations using the TryIt tool.
For this demonstration, we use an employee with employeeNumber=1002, which already exists in the system.
1. Run employeesByNumber operation with the employeeNumber Read about boxcarring and how it is enabled for a data service in Creating Using Various Data Sources.
Follow the steps below to demonstrate this functionality using the TryIt tool:
- Ensure that the
RDBMSSampleService
is deployed as described in Samples Setup. - Log in to the management console of your server and click List under Services in the navigator. See that
RDBMSSampleService
is listed here. - Click Try this service to open the TryIt tool.
- Run employeesByNumber operation with the employeeNumber 1002. Output is as follows:
...
- Run the "begin_boxcar" operation and the service will switch to a boxcarring session.
...
- Run the "incrementEmployeeSalary" operation and give the values "1000" for increment and "1002" for the employeeNumber fields.
...
- Open up a different type of a browser for the service to have a fresh session, so it won't be in the same boxcarring session as earlier. After switching browsers, run the "employeesByNumber" operation with employeeNumber=1002 to check the employee information.
...
- Note that the salary is not incremented. The reason is that the request made earlier in boxcarring mode is not executed immediately. It is executed when the boxcarring session ends.
...
- Go back to the original browser, run the "incrementEmployeeSalary" operation and give the values "500" for increment and "1002" for the employeeNumber fields. Then, run the "end_boxcar" operation.
...
- Next, in any of the two browsers, run the "employeesByNumber" operation with employeeNumber=1002 to check the information. The output will be similar to the following:
As we can see, both "incrementEmployeeSalary" operations are executed at once when the boxcarring session ends with "end_boxcar", resulting in the salary value to 3500. If there's any error in any of the operations inside a boxcarring session, none of the operations will be executed and the service calls will roll-back. A boxcarring session can also be explicitly canceled by calling the "abort_boxcar" operation.