...
Info | ||
---|---|---|
| ||
Before executing this sample, it is recommended that you refer to section Exposing Rules as Services which explains in detail the process of writing and deploying a business rule. |
The 'GetQuote' Service Definition
Rules
Rule 1: If the customer has bronze status, then the item costs five dollars.
Rule 2 : If the customer has silver status, then the item costs four dollars.
Rule 3 : If the customer has gold status, then the item costs three dollars.
...
Rule Service Configuration (service.rsl)
Code Block | ||
---|---|---|
| ||
<ruleService name="GetQuoteService" xmlns="http://wso2.org/carbon/rules" targetNamespace="http://com.test/quotation"> <ruleSet> <rule resourceType="regular" sourceType="inline"> <![CDATA[ package quotation import samples.quotation.Customer; import samples.quotation.Quotation; rule "Gold Customer" when Customer( status == "gold" ) then Quotation q = new Quotation(); q.setPrice(3); insertLogical(q); end rule "Silver Customer" when Customer( status == "silver" ) then Quotation q = new Quotation(); q.setPrice(4); insertLogical(q); end rule "Bronze Customer" when Customer( status == "bronze" ) then Quotation q = new Quotation(); q.setPrice(5); insertLogical(q); end ]]> </rule> </ruleSet> <operation name="getQuote"> <input wrapperElementName="placeCustomerDetail" namespace="http://com.test/placeCustomerDetail"> <fact elementName="customerDetail" namespace="http://com.test/placeCustomerDetail" type="samples.quotation.Customer"></fact> </input> <output wrapperElementName="placeCustomerDetailRespone" namespace="http://com.test/placeCustomerDetail"> <fact elementName="getQuotation" namespace="http://com.test/placeCustomerDetail" type="samples.quotation.Quotation"></fact> </output> </operation> </ruleService> |
Deploying and Testing the Rule Service
A 1. Deploy the rule service can be created either by creating through the BRS management console. You can follow either of the two methods:
- Bundle all artifacts in an .aar file
- and upload it (Rule Service -> Upload menu).
- Create using the Rule Service wizard UI (Rule Service -> Create menu).
The above steps are discussed in detail in section Exposing Rules as Services.
Testing the Sample
...
2. After deployment, the service will appear in the "Deployed Services" window of the BRS management console. Access the service's dashboard by clicking on it.
3. In the "Client Operations" widget of the dashboard, invoke the Try-it tool
...
to test the service.
4. In the service's TryIt window, issue a request similar to the following.
Code Block | ||
---|---|---|
| ||
<status>bronze</status> |
Code Block | ||
---|---|---|
| ||
package org.wso2.carbon.samples; import org.apache.axis2.AxisFault; import org.wso2.carbon.samples.quoteService.customerDetail.Customer; import org.wso2.carbon.samples.quoteService.customerDetail.PlaceCustomerDetail; import org.wso2.carbon.samples.quoteService.customerDetail.Quotation; import org.wso2.carbon.samples.quoteService.stub.GetQuoteServiceStub; import java.rmi.RemoteException; public class GetQuoteServiceTestCase { public static void main(String[] args) { try { GetQuoteServiceStub getQuoteServiceStub = new GetQuoteServiceStub("http://localhost:9763/services/GetQuoteService"); PlaceCustomerDetail placeCustomerDetail = new PlaceCustomerDetail(); Customer customer = new Customer(); customer.setStatus("gold"); Customer[] customers = new Customer[1]; customers[0] = customer; placeCustomerDetail.setCustomerDetail(customers); Quotation[] quotations = getQuoteServiceStub.getQuote(customers); int result = quotations[0].getPrice(); System.out.println(result); } catch (AxisFault axisFault) { axisFault.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } } |
Excerpt | ||
---|---|---|
| ||
GetQuote service sample of the WSO2 Business Rules Server samples guide. |