Quote Processing Demo Design Guide
Introduction
This document describes the design and implementation of the Quote Processing Demo Application. The Quote Processing demo is based on a fictitious company 'Vintage Old Stock' which does repair work on classic cars.
This document first describes the components of the demo. Next, an overview of the scenario is provided, and finally high level design and implementation details are noted.
Components
ActiveVOS
Designer embeds a full featured version of the
ActiveVOS Enterprise Server which has been configured with Apache
Tomcat and an embedded database. This is the server used to host the
demo environment.
The following default links are used to access the ActiveVOS
Server Console, ActiveVOS Central and the Vintage Old Stock web page:
1) ActiveVOS Server Console:
http://localhost:8080/activevos
2) ActiveVOS Central http://localhost:8080/activevos-central/login.jsp
- You can use the following accounts:
- Chief Investigator’s account / password: chief / chief
- Specialists accounts
- interior / interior
- exterior / exterior
- power / power
- Manager’s account: manager / manager
3) Vintage Old Stock’s web page: http://localhost:8080/AVQuoteCllient/

Scenario
Title:
Quote Estimation Process
Vintage Old Stock is a business that restores classic cars for its customers. The business of restoring a classic car to near mint condition involves many processes.
The Quote Estimation Process demonstration implements only Use Case (UC) 1: Request Quote process.
Actors
Bob: Customer
Roger: Chief Estimator
Stan: Interior Specialist (mechanic)
Chris: Exterior Specialist (mechanic)
Fred: Power Train Specialist (mechanic)
Mike: Manager
Use Cases
There are 4 major use cases relating to the restoration of a car for this demo
UC1: Request Quote
UC2: Accept Order
UC3: Source Parts
UC4: Perform Restoration
Customer Interaction
- Bob logs into the web site, select the 'Submit Car Restoration Quote Request' menu item
- Bob provides information about the vehicle that will allow Vintage Old Stock (VOS) to provide an estimate: make, model year, VIN (optional), and contact information.
- After submitting the request, Bob receives an acknowledgement (returned to the browser, and sent via email). The acknowledgement includes a Quote Request ID that he can use to obtain status on the quote process throughout the course of his interaction with Vintage Old Stock.
- Bob can open the 'Track Quote Request Status' page and enter the quote request ID. Upon submission he receives the status of the quote request ('in-process', 'request for additional info', or 'completed').
- During the course of the quote process, more information may be requested of Bob by Vintage Old Stock to allow it to complete the estimate. Email is sent to Bob with a link to the 'Submit Car Restoration Quote Request' along with the Quote Request-ID.
- Bob receives an email with the final quote.
- Bob reviews the quote and can either abandon it, or proceed to the 'Accept Order' use case (not implemented for this demo).
Business Rules
Restoring cars using Vintage Old Stock's approach is fraught
with risk. For example an estimate may be wildly under estimated based
on imperfect information received from a customer or when the car is
received and upon closer inspection, issues are revealed that may have
been unknown to the customer. Reducing risk of not delighting the
customer throughout the process is of the utmost importance to Vintage
Old Stock.
To help ensure a great customer experience by ensuring that the right
level of information is obtained to provide the best quote possible,
rules based automation is used to accelerate the speed at
which
initial estimates are prepared. A rules engine is used to:
- Validate the request for quote from the customer, and
- Pre-populates input to the human
task identifying what 'additional information' is required. This is used
accelerate Roger's work in providing a quote.
Quote Estimation Sub-process
After the rules engine validates the request, it's presented to Roger who performs an assessment of the work required. If he determines that detailed estimates are required, he delegates the task along to specialists.Roger and other estimators can choose parts from a parts-list which is automatically generated based on the year, make and model of the car as defined in the request from the customer. When the task forms are loaded in the client, a service is called which returns and populates the parts-list on the fly.
When each estimator completes his/her task, Roger is automatically (re)assigned the task to perform the final review of the estimates and approve them. Once he does, the final quote and bill of material is provided to the customer via mail.
Quote time to live
The amount of time a quote remains valid depends on a number of factors; as such this parameter is assigned dynamically. Once a quote expires, an email is sent to a customer informing him/her of this (for the purpose of this demo, there is no further recourse).Business Rule: depending on the complexity of the work and the price of the estimate, a quote will be only be valid for a specific period of time. By default, a quote will be valid for 3 days. The rules engine will return a value based on heuristics provided to it by 'the business'.
Design
Web Site
From the perspective of the customer:- Customer logs onto a website
- Opens the 'Submit Car Restoration Quote Request' page
- Enters information about the vehicle model, make, year, and personal information
- Hits <enter> and the information is submitted
- A response is displayed with a Request-ID and Status. (Below are the server side actions)
- Server submits the request data to the Quote Generation BPEL process
- Server receives a response which contains either a Reference-ID (if the request was successful), or a rejection reason if the request was invalid (e.g. car model is not supported).
- Customer opens the 'Track Quote Request Status' page
- Enters the Quote Request-ID
- Receives the status of the quote request ('in-process', 'completed with summary' or 'faulted'). Below is the server side action
- Server invokes the Quote Generation BPEL process 'status tracking service' interface and sends the Request-ID
- Server receives the quote status
Main Quote Generation BPEL Process
- Receive the request document from the web site
- Invoke the rules engine to validate the request, provide the estimator with standard questions / actions, and provide a 'quote time to live'
- Send a response to web site / customer (synchronous)- if the request is invalid, a reason is sent and the process terminates.
- Send an email to customer to inform that the quote is being worked on, with the quote reference number and a link to check status.
- Set status and start event handler for reporting back on status requests
- Invoke the estimation sub process
- Update the quote status
- Send the customer an email with the result
- Wait until quote expires
Validation process with Business Rules
- Utilize JBoss Drools to generate additional questions / actions required prior to working on the automobile
- Rules will be leveraged to establish the duration for which the generated quote is valid
Estimation Sub-process
- Chief Estimator will initially review all
requests.
- The Chief Estimator may decide that he is
satisfied with the data and can provide a quote himself. The
human task is completed and the output contains the quote summary.
- If the Chief Estimator decides that the request
needs to be reviewed by a specialist, he will
complete the human task by selecting the specialists to forward the
task to.
- One or more specialists may be assigned to provide an
estimate. Once all specialists have completed their work, a
final human task is created so the Chief
Estimator can examine the final estimate and sign off on the
quote.
Implementation Artifacts
Implementation
The implementation of the Classic Cars Renovation is carried out through four BPEL processes.Primary Processes
The primary processes are the QuoteProcess.bpel and the EstimationProcess.bpelRules Process
To implement the 'Validate Request With Rules' activity, the JBoss Rules Engine was used. We leverage ActiveVOS POJO integration to call the 'fireCarRules' method, and then wrapped the invocation using a BPEL process - thus exposing the rules as a service which is invoked as part of the Quote Process.
[condition][]there is a restoration request=info: CarRulesInfo()
[condition][]request does not contain model year=info: CarRulesInfo(quoteRequest.year == null )
[condition][]request contains no VIN and the car was built after year {value}=info: CarRulesInfo(quoteRequest.VIN == null, quoteRequest.modelYear > 1982 )
About Active Endpoints
Active Endpoints (www.activevos.com)
is the leading developer of visual orchestration systems. ActiveVOS
empowers
line of business project teams to create applications using services
and industry standards, making their businesses more agile and
effective. Active Endpoints’ ActiveVOS promotes mass adoption of
SOA-enabled applications by focusing on accelerating project delivery
time with a standards-based, easy to use system. Active Endpoints is
headquartered in Waltham, MA with development facilities in Shelton, CT.To find out how Active Endpoints can help your business, visit www.activevos.com, call +1 781 547 2900, or email us at info@activevos.com.

