In this simple scenario we augment the functionality with the following –
Create a subprocess to contain the input validation
o Validate Customer
o Check Inventory
Add error handling to cope with „invalid“ orders
o Invalid Customer
o Insufficient Stock
Both of these are business exceptions, which we will catch (Catch error event). The „errored“ order will be passed on to a HumanWorkflow component through which a SalesRep can fix that order.
To begin with, we will add these business errors to the Java class and redeploy it as a web service to WLS.
--------------------- Revised version of Java class(es) ---
package com.niall;
import javax.jws.WebService;
@WebService(serviceName = "OrderService")
public class OrderService {
public OrderService() {
super();
}
public String validateCustomer(String custName, String email) throws InvalidCustomerException{
String rtc = "Valid";
if (custName.startsWith("Niall")){
throw new InvalidCustomerException("Invalid");
}
return rtc;
}
public String checkInventory(String product, int quantity)throws InsufficientStockException{
String rtc = "SufficientStock";
if (quantity > 100){
throw new InsufficientStockException("Insufficient Stock");
}
return rtc;
}
}
package com.niall;
public class InsufficientStockException extends Exception {
public InsufficientStockException() {
super();
}
public InsufficientStockException(String message) {
super(message);
}
}
package com.niall;
public class InvalidCustomerException extends Exception {
public InvalidCustomerException() {
super();
}
public InvalidCustomerException(String message) {
super(message);
}
}
---------------------- End -----------------------------------
Once re-deployed the WSDL is as follows –
Create the subprocess – ValidateOrder
Create the following artifacts in the sub-process
Deploy & Test
- View trace
Handling business errors
- Once the web service has been redeployed we see the errors in the Errors section of the Business Catalog.
These business errors will be handled by a sub-process that contains a User Task so that the salesRep can go in and amend „errored“ orders.
- Create a new subprocess – ProcessInvalidOrders
- Add a UserTask – ProcessErrors
Drop an Error Catch Event on the sub-process ValidateOrder
- Add a sequence flow from ProcessInvalidOrders back to ValidateOrder
Define the UserTask ProcessErrors
- Set Role to SalesRep and add user weblogic to that role
- Auto-generate Task Form
Deploy & Test
First the Happy path -
- Now the „unhappy“
- Revisit instance trace in em