Skip to main content
Version: 10.1

Calling a REST service without committing

It is interesting to be able to run input data against the Rules Engine without committing. This allows you to see what WOULD happen to the data IF they were committed.

In a predefined REST service built with the USoft Table Resource functional type, you can add the USoft-specific X-US-Transaction custom HTTP header to let clients send data without committing.

If you have written a custom REST service, you can manually implement this custom HTTP header in a similar way.

The "X-US-Transaction" HTTP header

When calling the service, clients can set the USoft-specific custom HTTP header

X-US-Transaction

to indicate the commit behaviour they want. Possible values that clients may pass in this HTTP header are:

ValueCommit behaviour
RollbackRules Service will check constraints that are evaluated at Record Store time.Data will NOT be committed.
PreCommitRules Service will check all constraints.Data will NOT be committed.
CommitRules Service will check all constraints and then commit.

(The commit behaviour with Commit is the default behaviour.)

For more information about constraint evaluation times, please go to USoft Definer Help, Rules Engine Guide.

Implementing X-US-Transaction in custom REST services

In a custom REST service, you can implement the X-US-Transaction custom HTTP header by adding a Parameter:

1. Go to the method for which you want to add the specify-commit-behaviour facility.

2. In the Parameters tab, add a Parameter:

Nametransaction
TypeString
Annotation@HeaderParam("X-US-Transaction")

3. Check the method's Implementation. As an example, here is the Implementation of a method with 2 input parameters ("destination" and "tour_type") and a third Parameter "transaction" that allows the client to specify the commit behaviour:

USoftService usoft = new USoftService("*", this.getClass());
usoft.open(therequest);
Integer count = (Integer) usoft.sql(Integer.class, "DROP_TOUR" , new Object[]{ destination, tour_type }, transaction );
usoft.close();

/* return http error 404 if no records deleted */
if(count.intValue() == 0)
throw new javax.ws.rs.WebApplicationException(404);

Calling the service without committing

Exactly how you call a USoft REST service without committing depends on the calling application. If you use POSTMAN for testing:

1. Before pressing the Send button, first press the Headers button.

A list with 0 or more preset headers appears. There is a column Header on the left and a column Value on the right.

2. On a new line, type:

HeaderX-US-Transaction
ValuePreCommit*
  • or Rollback or Commit, depending on which commit behaviour you want.

3. Press Send.