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://samples.activevos.com/activevos
2) ActiveVOS Central http://samples.activevos.com/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://samples.activevos.com/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 Restoratoin
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 recieves 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 to 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 15 days. The rules engine will return a value based on heuristics provided to it by 'the business'.
On-Event Action / Complex Event Processing
An important feature of ActiveVOS is the inclusion of a complex event processing engine. This provides a wide variety of capabilities that would not be possible with an orchestration engine alone.Of course, even without a complex event processing engine, BPEL processes can do a certain amount of event processing. They can have fault handlers that react to exceptional circumstances or event handlers that react to the events that are an expected part of the process flow.
The limitation, however, is that a BPEL process can only be used to react to events that are associated with a single process instance.
The problem is – applications, such as our Classic Car application, will often generate a large number of process instances every day.
The value of complex event processing is that it becomes possible to react, in real time, to _patterns_ that are discovered in the way that all these processes are acting over some period of time.
So we will look at the classic cars scenario, and imagine that the manager would like to know when the business is taking too long to generate estimates for potential customers. To discover this, the manager sets up some threshold for the amount of time that estimates should take. If the average response time over the last few days is over that threshold, the manager would like to get a new task in his inbox to look into what is causing the delays.
In order to measure the average response time, the manager will make sure that an event is generated at the point in the process where an estimation request is first determined to be valid. Similarly, another event will be generated at the point in the process when the task has been successfully completed.
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, year, VIN (optional), 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 BPEL
- 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.bpel
Rules 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 == '' || quoteRequest.year == null )
[condition][]request contains no VIN and the car was built after year {value}=info: CarRulesInfo(quoteRequest.VIN == '' || quoteRequest.VIN == null, quoteRequest.year > '{value}' )
Investigate Estimate Response Time Process - CEP
This process is invoked by the CEP engine when quotes are taking too long to generate on average. To discover this, EventStatements.eps is used to identify the threshold for the amount of time that estimates should take. DetectEstimatesTakingTooLong.epp is used to launch the process which creates a new task in the Manager’s inbox to look into what is causing the delays.
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 2948, or email us at info@activevos.com.
