Contents
Introduction
Components
Scenario
Design
Implementation Artifacts
About Active Endpoints

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


3) Vintage Old Stock’s web page: http://localhost:8080/AVQuoteCllient/


The Vintage Old Stock’s web site is deployed at
[ActiveVOSDesignerDirectory]\Designer\designer\plugins\org.activebpel.enginep_[version]\server\webapps

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

  1. Bob logs into the web site, select the 'Submit Car Restoration Quote Request' menu item
  1. 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.
  1. 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.  
  1. Bob receives an email with the final quote. 
  1. 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:

  1. Validate the request for quote from the customer, and
  2. 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


Validation process with Business Rules


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.



The rules (car_rules.dsl) used for the purpose of the demo are:

[condition][]there is a restoration request=info: CarRulesInfo()
[consequence][]set quote process time to live to: {value}=info.setTimeToLive({value});

[condition][]request does not contain model year=info: CarRulesInfo(quoteRequest.year == null  )
[consequence][]reject request=info.setValid( false );

[condition][]request contains no VIN and the car was built after year {value}=info: CarRulesInfo(quoteRequest.VIN == null, quoteRequest.modelYear > 1982  )
[consequence][]ask the customer to provide VIN=info.setAdditionalActions('Ask customer to provide VIN number');

[consequence][]set reason of rejection to '{value}'=info.setReasonOfRejection('{value}');

[consequence][]add additional action '{value}'=info.setAdditionalActions('{value}');


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.