WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Electronic shopping and merchandising system    
United States Patent5897622   
Link to this pagehttp://www.wikipatents.com/5897622.html
Inventor(s)Blinn; Arnold (Bellevue, WA); Cohen; Michael Ari (San Francisco, CA); Lorton; Michael (Redmond, WA); Stein; Gregory J. (Redmond, WA)
AbstractThe present invention provides a merchant system for online shopping and merchandising. The merchant system architecture provides great flexibility for a merchant to adapt the merchant system to their existing business practices, promotions and databases. The merchant system includes a dynamic page generator, a configurable order processing module and a database module capable of retrieving data from the database without regard to its schema. The present invention enables merchants to create electronic orders which are easily adaptable for different sales situations. The order processing module includes multiple configurable stages to process a merchant's electronic orders. The merchant system is capable of generating pages dynamically using templates having embedded directives. The database module and the dynamic page generator allow merchants to modify their databases and page displays without having to reengineer the merchant system.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5897622
Electronic shopping and merchandising system - US Patent 5897622 Drawing
Electronic shopping and merchandising system
Inventor     Blinn; Arnold (Bellevue, WA); Cohen; Michael Ari (San Francisco, CA); Lorton; Michael (Redmond, WA); Stein; Gregory J. (Redmond, WA)
Owner/Assignee     Microsoft Corporation (Redmond, WA)
Patent assignment
All assignments
Publication Date     April 27, 1999
Application Number     08/732,012
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     October 16, 1996
US Classification     705/26 705/27 707/3 707/104.1 715/501.1 715/513
Int'l Classification     G06F 017/60 G06F 013/00 G06F 015/16
Examiner     Tkacs; Stephen R.
Assistant Examiner    
Attorney/Law Firm     Lee & Hayes, PLLC
Address
Parent Case    
Priority Data    
USPTO Field of Search     705/26 705/27 705/30 705/35 705/39 707/1 707/2 707/3 707/4 707/5 707/6 707/10 707/100 707/102 707/103 707/104 707/501 707/509 707/513 395/200.31 395/200.33 395/200.47 395/200.49
Patent Tags     electronic shopping merchandising
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5802518
Karaev

Sep,1998

[0 after 0 votes]
5761656
Ben-Shachar
707/4
Jun,1998

[0 after 0 votes]
5754772
Leaf

May,1998

[0 after 0 votes]
5708825
Sotomayor
715/501.1
Jan,1998

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A merchant system, comprising:

a dynamic page generator to compose a page for display by processing a template having a database request for page data, wherein the database request is a query name; and

a database module, in communication with a database and with the dynamic page generator, to retrieve page data from the database and to communicate the page data to the dynamic page generator, wherein the retrieved page data corresponds to a query stored in the database, wherein said query corresponds to said query name, and wherein the database module retrieves the data in a manner that is independent of any database schema.

2. The merchant system of claim 1, wherein the database is defined by a single schema.

3. The merchant system of claim 1, wherein the database is defined by a plurality of schemas.

4. The merchant system of claim 1, wherein the query is a SQL query.

5. The merchant system of claim 1, wherein the database module returns an access object having the page data to the dynamic page generator.

6. The merchant system of claim 1, wherein the template includes HTML and directives.

7. The merchant system of claim 6, wherein the directive is a keyword specifying how to build the page for display.

8. The merchant system of claim 1, further comprising HTML structures in communication with the dynamic page generator.

9. The merchant system of claim 8, wherein the HTML structures include a plurality of templates.

10. The merchant system of claim 8, wherein the HTML structures include a plurality of HTML pages.

11. The merchant system of claim 8, further comprising a browser in communication with the dynamic page generator.

12. The merchant system of claim 11, wherein the browser sends a URL to the dynamic page generator indicating the template to display.

13. The merchant system of claim 11, wherein the dynamic page generator sends to the browser HTML resulting from the processing of the template.

14. The merchant system of claim 1, further comprising a browser in communication with the dynamic page generator.

15. The merchant system of claim 14, wherein the browser sends a URL to the dynamic page generator indicating the template to display.

16. The merchant system of claim 15, wherein the dynamic page generator sends to the browser HTML resulting from the processing of the template.

17. A merchant system, comprising:

an order processing module, which makes a request for order data using a query name; and

a database module, in communication with a database and with the order processing module, to retrieve the order data from the database and to communicate the order data to the order processing module, wherein the retrieved order data corresponds to a query stored in the database, wherein said query corresponds to said query name, and wherein the database module retrieves the data in a manner that is independent of any database schema.

18. The merchant system of claim 17, wherein the database is defined by a single schema.

19. The merchant system of claim 17, wherein the database is defined by a plurality of schemas.

20. The merchant system of claim 17, wherein the guery is a SQL query.

21. The merchant system of claim 17, wherein the database module returns an access object having the order data to the order processing module.

22. The merchant system of claim 17, wherein the order processing module comprises,

an order pipeline having multiple stages, wherein each stage includes a plurality of components configured to process the order, and

an order engine to determine which stages of the order pipeline to execute in order to process the order.

23. The merchant system of claim 22, wherein the sequence of execution of the stages in the order pipeline is configurable.

24. The merchant system of claim 22, wherein the components within each stage are configurable.

25. The merchant system of claim 17, wherein the order comprises an order blackboard having key-value pairs.

26. The merchant system of claim 25, wherein the order further comprises an item blackboard having key-value pairs.

27. The merchant system of claim 26, wherein the component posts a portion of the order data retrieved from the database to the item blackboard in a key-value pair.

28. The merchant system of claim 25, wherein the component posts a portion of the order data retrieved from the database to the order blackboard in a key-value pair.

29. A merchant system, comprising:

an order processing module having a plurality of components configured to create and process an order, wherein a component makes a component request for order data;

a dynamic page generator, in communication with the order processing module, to compose a page for display by processing a template having a request for information from the order and a database request for page data, wherein the request for page data is a query name; and

a database module, incommunication with a database and with the order processing module and with the dynamic page generator, to retrieve order data from the database and to communicate the order data to the order processing module and to retrieve page data from the database and to communicate the page data to the dynamic page generator, wherein the retrieved order data corresponds to a query stored in the database, wherein said query corresponds to said query name, and the database module retrieves the order and page data in a manner that is independent of any database schema.

30. The merchant system of claim 29, wherein the template includes HTML and directives.

31. The merchant system of claim 30, wherein the directive is a keyword specifying how to build the page for display.

32. The merchant system of claim 29, further comprising HTML structures in communication with the dynamic page generator.

33. The merchant system of claim 32, wherein the HTML structures include a plurality of templates.

34. The merchant system of claim 32, wherein the HTML structures include a plurality of HTML pages.

35. The merchant system of claim 32, further comprising a browser in communication with the dynamic page generator.

36. The merchant system of claim 35, wherein the browser sends a URL to the dynamic page generator indicating the template to display.

37. The merchant system of claim 35, wherein the dynamic page generator sends to the browser HTML resulting from the processing of the template.

38. The merchant system of claim 29, further comprising a browser in communication with the dynamic page generator.

39. The merchant system of claim 38, wherein the browser sends a URL to the dynamic page generator indicating the template to display.

40. The merchant system of claim 38, wherein the dynamic page generator sends to the browser HTML resulting from the processing of the template.

41. The merchant system of claim 38, further comprising an action manager in communication with the browser, the order processing unit and the database module.

42. The merchant system of claim 41, wherein the browser sends a URL to the action manager indicating an action to perform.

43. The merchant system of claim 41, wherein the action manager redirects the browser to display a selected page.

44. The merchant system of claim 41, wherein the action manager retrieves data from the database.

45. The merchant system of claim 41, wherein the action manager saves data to the database.

46. The merchant system of claim 41, wherein the action manager creates a new order having an order blackboard and posts a key-value pair to the order blackboard.

47. The merchant system of claim 41, wherein the action manager retrieves the order having an order blackboard from the database module and posts a key-value pair to the order blackboard.

48. The merchant system of claim 41, wherein the action manager retrieves the order having an item blackboard from the database module and posts a key-value pair to the item blackboard.

49. The merchant system of claim 29, wherein the order processing module comprises,

an order pipeline having multiple stages, wherein each stage includes a plurality of components configured to process the order, and

an order engine to determine which stages of the order pipeline to execute in order to process the order.

50. The merchant system of claim 49, wherein the sequence of execution of the stages in the order pipeline is configurable.

51. The merchant system of claim 49, wherein the components within each stage are configurable.

52. The merchant system of claim 29, wherein the order comprises an order blackboard having key-value pairs.

53. The merchant system of claim 52, wherein the order further comprises an item blackboard having key-value pairs.

54. The merchant system of claim 53, wherein the component posts a portion of the data retrieved from the database to the item blackboard in a key-value pair.

55. The merchant system of claim 52, wherein the dynamic page generator extracts the information from the order using a key from a key-value pair.

56. The merchant system of claim 52, wherein the component posts a portion of the data retrieved from the database to the order blackboard in a key-value pair.

57. The merchant system of claim 29, wherein the database is defined by a single schema.

58. The merchant system of claim 29, wherein the database is defined by a plurality of schemas.

59. The merchant system of claim 29, wherein the query is a SQL query.

60. The merchant system of claim 29, wherein the component request is a component query name.

61. The merchant system of claim 60, wherein the database module uses the component query name to retrieve a corresponding SQL query.

62. The merchant system of claim 29, wherein the component request is stored in the database.

63. The merchant system of claim 29, wherein the database module returns an access object having the page data to the dynamic page generator.

64. The merchant system of claim 29, wherein the database module returns an access object having the order data to the dynamic page generator.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a shopping and merchandising system and, more specifically, to a shopping and merchandising system for online networks, such as the World Wide Web portion of the Internet.

2. Description of the Related Technology

The World Wide Web (Web) is part of a global computer network known as the Internet. Scientists and academicians initially developed and used the Internet to share information and collaborate. The Web functions as an object based multimedia system. It allows for the creation, storage and delivery of multimedia objects. Recently, on-line service providers, such as Microsoft Network, CompuServe, Prodigy and America Online, have linked to the Web. This enables their customers to access a variety of products and services available from independent content providers and other Web users. For example, a typical customer can access electronic mail, news services, travel services and online stores and malls on the Web.

The global penetration of the Internet provides merchants with the capability to merchandise their products to substantial shopping audiences using an online merchant system. Online merchant systems enable merchants to creatively display and describe their products to shoppers using Web pages. Merchants can layout and display Web pages having content, such as text, pictures, sound and video, using HyperText Markup Language (HTML). Web shoppers, in turn, access a merchant's Web page using a browser, such as Microsoft Explorer or Netscape Navigator, installed on a client connected to the Web through an online service provider, such as the Microsoft Network or America OnLine. The browser interprets the HTML to format and display the merchant's page for the shopper. The online merchant system likewise enables shoppers to browse through a merchant's store to identify products of interest, to obtain specific product information and to electronically purchase products after reviewing product information.

To promote their products, merchants often discount their products or have sales. Merchants can use a wide variety of discounting schemes to promote their products. For example, a merchant may offer volume discounts, such as buy two and get one free, or membership discounts where, for example frequent shoppers and AAA members get 10% off, or cross-sell incentives offering, for example, 50% off socks with a shoe purchase. Existing online merchant systems, such as Netscape Merchant System, support only date-based sale pricing, such as 20% off all shirts during the month of May. To enter the online shopping market, merchants desire an online merchant system that allows for a significantly wider variety of product discounting and sales schemes.

Similarly, existing online merchant systems, such as eShop 1.0, implement a generic purchase transaction model to capture the most common variations of a purchasing transaction. To complete a purchase transaction, a merchant sums up the prices of items, deducts applicable discounts, adds sales tax, receives payment and delivers the purchased items to the shopper. Although these basic steps are the same for many merchants, electronic commerce in a global environment imposes many variations to this basic model. For example, merchants generally have to include a shipping and handling fee for their online shoppers. Merchants may likewise have to include special taxes or fees, such as value added taxes or use fees, applicable only in certain countries or economic unions. In addition, merchants may issue their online customers private label credit or charge cards. Customer payment using these private label cards requires authorization through private networks, instead of commercial banking networks. Thus, it becomes apparent that to enter the online shopping market, merchants require an online merchant system that provides for substantial variations in the purchase transaction model.

Lastly, merchants typically store product data, such as product descriptions, prices and pictures, in relational databases. Online merchant systems, therefore, have to interface with merchant databases to access and display product information. Databases require a consistent structure, termed a schema, to organize and manage the information. In a relational database, the schema is a collection of tables. For each table, there is generally one schema to which it belongs. In an implementation of a relational database, a relation corresponds to a table having rows, where each row corresponds to a tuple, and columns, where each column corresponds to an attribute. From a practical standpoint, rows represent records of related data and columns identify individual data elements. A table defining a retailer's product line may, for example, have product names, product numbers (e.g., SKUs) and prices. Each row of this table holds data for a single product and each column holds a single attribute, such as a product name. The order in which the rows and columns appear in a table has no significance. In a relational database, one can add a new column to a table without having to modify older applications that access other columns in the table. Relational databases thus provide flexibility to accommodate changing needs. Once the schema is designed, a tool, known as a database management system (DBMS), is used to build the database and to operate on data within the database. The DBMS stores, retrieves and modifies data associated with the database and, to the extent possible, protects data from corruption and unauthorized access. Because each merchant organizes its product information differently, there is a large installed base of databases having a wide variety of database schemas for product information.

Available online merchant systems, such as eShop 1.0 and Netscape Merchant System, require merchants to organize their product information according to a predefined database schema. Hence, to use such systems, a merchant must either convert its existing databases to this predefined schema or the merchant must create a new database having the predefined schema. For many merchants, conversion of their existing databases is not feasible. For example, the merchant may have several hundred thousand product entries located in different remote databases accessed by legacy applications, such as a point of sale system or an inventory control system, specifically designed to interact with these different databases. If the merchant converted these databases to the predefined schemas, their legacy applications would no longer function properly. To protect their investment in legacy applications, merchants may have to copy their product data into a redundant database having the predefined schema. Otherwise, merchants may have to incur substantial costs to rewrite their legacy applications to support the predefined schema of the online merchant system. For these reasons, it is not cost-effective for a merchant to use applications requiring a predefined schema for existing relational databases. To enter the online shopping market, merchants require an online merchant system that will cooperatively function with existing database systems having a wide variety of schemas.

SUMMARY OF THE INVENTION

The present invention enables merchants to enter the online shopping market by providing a system and architecture to obtain and perform a large set of processing operations and computations on a rich set of dynamically generated information from a wide variety of data sources. In contrast to the rigid display formats and fixed database schemas of existing merchant systems, the present invention provides a dynamic page generator that permits the display of dynamically generated data in any format or presentation desired by the merchant. The present invention provides this flexibility through the use of display templates and a database schema independent query mechanism. In this manner, a merchant changes the display formats by modifying a template instead of revising the system modules producing the display formats. Similarly, a merchant handles database modifications by modifying the queries stored in the database instead of modifying the system modules performing the database queries.

In addition, the present invention enables a merchant to effectively promote their products. In contrast to existing merchant systems that separate display operations from processing operations, the present invention provides the capability to generate product information pages dynamically during order processing. Thus, a shopper using the present invention can view special promotion information during order processing operations. Similarly, the present invention uses the same calculations to display product information and to process an order, so a shopper is guaranteed consistency and reliability in the information used to make purchasing decisions. Moreover, the present invention provides a configurable order processing module that enables merchants to add components to the merchant system they need to address the particular requirements of their purchase transactions, such as special value added taxes or use fees.

Lastly, the present invention enables merchants to protect their investments in existing databases by providing a database schema independent query mechanism. The present invention provides for the storage of database queries in the database to isolate applications that access the database from differences in schemas and data sublanguages. Similarly, because of the database schema independence, the order processing module of the present invention does not require modification for each change to the database.

One aspect of the present invention includes a merchant system comprising a dynamic page generator to compose a page for display by processing a template having a database request for page data, and a database module, in communication with a database and with the dynamic page generator, to retrieve page data from the database and to communicate the page data to the dynamic page generator, wherein the retrieved page data corresponds to the database request and wherein the database module retrieves the data in a manner that is independent of any database schema.

Another aspect of the present invention includes a merchant system comprising an order processing module, a plurality of components associated with the order processing module so as to create and process an order, wherein a component makes a request for order data, and a database module, in communication with a database and with the order processing module, to retrieve order data from the database and to communicate the order data to the order processing module, wherein the retrieved order data corresponds to the request and wherein the database module retrieves the data in a manner that is independent of any database schema.

Yet another aspect of the present invention includes a merchant system comprising an order processing module having a plurality of components configured to create and process an order, and a dynamic page generator, in communication with the order processing module, to compose a page for display by processing a template having a request for information from the order.

Lastly, another aspect of the present invention includes a merchant system comprising an order processing module having a plurality of components configured to create and process an order, wherein a component makes a request for order data, a dynamic page generator, in communication with the order processing module, to compose a page for display by processing a template having a request for information from the order and a database request for page data, and a database module, in communication with a database and with the order processing module and with the dynamic page generator, to retrieve order data from the database and to communicate the order data to the order processing module and to retrieve page data from the database and to communicate the page data to the dynamic page generator, wherein the retrieved order data corresponds to the component request, the retrieved page data corresponds to the database request and the database module retrieves the order and page data in a manner that is independent of any database schema.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an example of an online network for practicing the present invention.

FIG. 2 is a block diagram illustrating the merchant system of the present invention.

FIG. 3a is a block diagram illustrating the structure of a preferred embodiment of the dynamic page generator of FIG. 2.

FIG. 3b is a block diagram illustrating the structure of another preferred embodiment of the dynamic page generator of FIG. 2.

FIG. 4 illustrates the correspondence between -a syntax tree and a template used by the dynamic page generator of FIG. 3.

FIG. 5 illustrates the data flow for the database module and the dynamic page generator shown in FIG. 2.

FIG. 6 shows a portion of a template, a product table and an access object which illustrate an example of the data flow of FIG. 5 used to produce a HTML table for display.

FIG. 7 shows a revised portion of a template, a revised product table and an access object which illustrate an example of the data flow of FIG. 5 used to produce a HTML table for display.

FIG. 8 illustrates the data flow for the database module and the order processing module shown in FIG. 2.

FIG. 9 shows an order, an access object and an annotated order which illustrate an example of the data flow of FIG. 8.

FIG. 10 illustrates the data flow for the dynamic page generator and the order processing module of FIG. 2.

FIG. 11 shows a template portion, an order, a first annotated order, a second annotated order and a page portion displayed on a consumer browser which illustrate an example of the data flow of FIG. 10.

FIG. 12 illustrates the data flow for the dynamic page generator, the order processing module and the database module of FIG. 2.

FIG. 13a shows a template portion, an order and an access object which illustrate an example of the data flow of FIG. 12.

FIG. 13b shows a cross sell table, an access object having no data, an access object having one data row and a page portion which illustrate the data flow of FIG. 12.

FIG. 14 illustrates the architecture of the merchant system of FIG. 2.

FIG. 15a shows pseudo code for an action, an order and an annotated order which illustrate the data flow of FIG. 14.

FIG. 15b shows a template portion, an order, an access object and a page portion which illustrate the data flow of FIG. 14.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

For convenience, the description comprises the following sections:

I. Merchant System Overview

II. Templates, Directives and Actions

III. The Dynamic Page Generator

IV. The Order Processing Module

V. The Database Module

VI. Merchant System Data Flows and Architecture

The following detailed description of the preferred embodiments presents a description of certain specific embodiments to assist in understanding the claims. However, one may practice the present invention in a multitude of different embodiments as defined and covered by the claims.

I. Merchant System Overview

FIG. 1 is an example of an online network for practicing the present invention. In particular, a client 100 communicates with a server 102 by means of a network 104, such as the World Wide Web portion of the Internet. The server 102 may include a gateway to a Wide Area Network (WAN) 106 having a plurality of Local Area Networks (LANs) 108. A browser 101, residing on the client 100, displays a store home page 103 retrieved from the World Wide Web on a viewing device 105. A user can view this page by entering, or selecting a link to, a Universal Resource Locator (URL), such as "www.store.com", in a browser program, such as Microsoft Explorer or Netscape Navigator, executing on the user's computer. Note that an online merchant system may reside in a server or in a combination of servers comprising the WAN 106. Similarly, the client 100 may access the network 104 through a wireless connection, such as the infrared link 107 or the satellite dish 109.

Focusing now on the network 104, the presently preferred network is the Internet. The structure of the Internet is well known to those of ordinary skill in the art and includes a network backbone with networks branching from the backbone. These branches, in turn, have networks branching from them, and so on. For a more detailed description of the structure and operation of the Internet, please refer to "The Internet Complete Reference," by Harley Hahn and Rick Stout, published by McGraw-Hill, 1994. However, one may practice the present invention on a wide variety of communication networks. For example, the network 104 can include interactive television networks, telephone networks, wireless data transmission systems, two-way cable systems, customized computer networks, interactive kiosk networks and automatic teller machine networks.

In addition, the network 104 includes online service providers, such as Microsoft Network, America OnLine, Prodigy and CompuServe. In a preferred embodiment, the online service provider is a computer system which provides Internet access to a client 100. Customers pay monthly access fees to the online service providers for help services and access to the Internet through local telephone connections. Of course, the online service providers are optional, and in some cases, the clients 100 may have direct access to the Internet 104. For example, the client 100 may be connected to a local area network 108 which in turn is directly connected to the Internet 104.

Focusing now on the client 100, the client is a general purpose computer. In a preferred embodiment, the client 100 is a conventional personal computer equipped with an operating system supporting Internet communication protocols, such as Microsoft Windows 95 and Microsoft Windows NT, a browser, such as Microsoft Explorer or Netscape Navigator, to access the Merchant System and a conventional modem for access to the Internet 104. In other embodiments, the client 100 could, for example, be a computer workstation, a local area network of computers, an interactive television, an interactive kiosk, a personal digital assistant, an interactive wireless communications device or the like which can interact with the network. While the operating systems may differ in such systems, they will continue to provide the appropriate communications protocols needed to establish communication links with the network 104.

Referring now to FIG. 2, a merchant system 120 communicates with a database 121, a consumer browser 122, a merchant browser 123, and a network 124. In a preferred embodiment, the database 121 comprises data stored locally in one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another preferred embodiment, the database 121 comprises data distributed across a LAN 108 (FIG. 1) or a WAN 106 (FIG. 1). The database 121 may include query data, product information, order information, shopper information, store information, receipts and customer feedback data. A shopper uses a consumer browser 122, such as Microsoft Explorer or Netscape Navigator, communicating with a network 124, such as the World Wide Web portion of the Internet, to access a merchant's online store using the merchant system 120. Similarly, a merchant uses a merchant browser 123, such as Microsoft Explorer or Netscape Navigator, communicating with the merchant system 120 directly or through a network 124 to manage its online store. There are, of course, typically, a multiplicity of the browsers 122, 123 operating on the network 124 at any time.

The merchant system 120 includes a dynamic page generator 125, HTML structures 126, a database module 127, an action manager 128, and an order processing module 129 having an order engine 130, an order pipeline 131, and components 132 for various purposes, such as calculating sales tax and shipping/handling fees. The dynamic page generator 125 uses HTML structures 126 and communicates with the database module 127 to access data from the database 121 to format and display on the consumer browser 122 and the merchant browser 123. The order processing module 129 communicates with the dynamic page generator 125 and the database module 127 to create Web pages having product information for display on a consumer browser 122. Similarly, the order processing module 129 communicates with the action manager 128 and the database module 127 as needed to execute purchasing transactions for the merchant's online store. Lastly, the order processing module 129 includes components 132, that is, a plurality of application programs to enhance and administer the merchant system 120. For example, the components 132 can include applications to interface with commercial banking systems, to calculate shipping/handling, to determine applicable taxes and to post payments to various bank accounts. The data communication internal to the merchant system 120 is shown in FIG. 14.

II. Templates, Directives and Actions

The following section discusses how the merchant system 120 uses templates, directives and actions to dynamically respond to customer requests. Templates, which include directives and actions, are located in the HTML structures 126. In response to browser requests, the dynamic page generator 125 composes HTML pages dynamically from templates stored in the HTML structures 126. In a preferred embodiment, the shopper invokes the dynamic page generator 125 by selecting a URL having the form:

"http://server.sub.-- name/environment.security/pgen/store.sub.-- name/shopper.sub.-- id/template.htm1;arg1=value 1;arg2=value2 . . .".

The merchant system 120 interprets the URL by analyzing its constituents to identify a template and its arguments. Thus, the "http://" portion of the URL specifies use of the HyperText Transfer Protocol (HTTP) for communication across the Internet. The "server.sub.-- name" portion of the URL specifies the name of the server having the router to the merchant's store. The "environment" portion of the URL describes the version of the merchant system used. For example, "prd" denotes a production version and "dev" denotes a development version of the merchant system 120. The "security" portion of the URL indicates whether the connection to the server is secure or insecure. Secure connections are specified with "s" and insecure with "i". The "pgen" portion invokes the dynamic page generator 125. The "store.sub.-- name" portion indicates the name of the store, in addition to the directories where the template files reside. The "shopper.sub.-- id" portion specifies the unique shopper identifier. Lastly, the "template.htm1" portion is the name of the HTML template to use to generate a page in response to the shopper's request and the "arg1=value1; arg2=value2 . . ." portion provides arguments for use by the dynamic page generator 125. Note that the specific URL format described above is for explanatory purposes only. Thus, other URL formats and locator techniques are included in the present invention.

A template defines the appearance of a page, such as the store home page 103 (FIG. 1), a product page or a customer information page. A portion of an example template is shown as 200 in FIG. 6. Templates include HTML and directives, which are keywords to the dynamic page generator 125 specifying how to build a page for display, such as what data to insert into the page and what queries to run against the database to obtain data for display on the page. A template may also include a wide variety of content, such as ActiveX controls, Visual Basic Scripts, forms, images, video and sound.

In a preferred embodiment, the merchant system 120 includes several predefined templates in the HTML structures 126. For example, a welcome.html page serves as a logon page for consumers. Similarly, a register.html page provides a form for a new consumer to enter registration information. An update.html page likewise provides a form for consumers to update their registration information. In addition, a mailn.html page presents an entrance to the store similar to a store lobby. The main.html page may include an index to store departments as well as links to important store information. Moreover, a dept.html page presents a list of store departments and a product.html page presents product information, such as an image and textual description. Lastly, a find.htrnl page, typically accessible from a navigation bar, provides a product search capability.

To support consumer purchases, the merchant system 120 includes a basket.html page having an interface that allows shoppers to manipulate items in their shopping baskets, the online equivalent of a shopping cart or handheld basket. Similarly, an orderfrm.html page provides an order form display for shoppers to select shipping methods and to provide delivery instructions for the order. A purchase.html page presents the order total and provides a form for entry of credit card payment information. To confirm purchases, a confirmed.html page presents a message confirming completion of the purchase transaction. Similarly, a receipt.html page presents a summary of the order in the form of an online checkout receipt. In addition, a detail.html page presents a detailed line item receipt for items ordered. Lastly, a receipts.html page presents receipts from all orders placed by a particular shopper.

Directives may include value references for evaluation during page generation. A value reference provides for evaluation of an expression, such as a string or function name, to a value prior to use in a page. For example, if the value reference is a number, say the cost of a product, it evaluates to the numerical value of the number. If the value reference is quoted text, such as "Glove", it likewise evaluates to the text within the quotes, or Glove. Similarly, if the value reference is a known function, say a function to calculate sales tax, the function evaluates to the value resulting from execution of the function. Note that arguments to functions are themselves value references and may be a constant, a parameter, a variable or even another function. Thus, value references are useful for performing mathematical calculations, retrieving data from database query results, storing and retrieving temporary variables, retrieving arguments and variables passed to a template and accessing shopper or order information.

Directives in a HTML template are set off by square brackets and may include value references as arguments. Thus, directives take the form ›directive args!, where directive is the name of the directive and args are arguments for the directive. For examples of directives, see the fetchrows 202, eachrow 206, value 210 and money 212 directives of FIG. 6. Using value references, the dynamic page generator 125 evaluates arguments of a directive before running the directive. Thus, value references may be used as variables for a directive. Directives affect the dynamic page generator 125 in three ways. First, a directive may generate text, such as HTML, formatted text and the contents of another file, for inclusion into the page. Second, the directive may perform a conditional test, similar to the standard if-then-else statement in many computer programming languages, for the inclusion or exclusion of text. Lastly, the directive may produce new value references for later use in page generation.

The merchant system 120 includes several types of directives. For example, value display directives generate text for inclusion on a HTML page. Typically, value display directives serve to format and display values, such as currency, dates, time and text. See directives 210, 212 in FIG. 6, for instance. Similarly, as noted above, conditional directives may include or exclude text in a page depending on the truth of a conditional statement. In addition, navigational directives result in selectable links or regions in a Web page that can take a shopper to another generated page or template. The merchant system 120 also includes database access directives. A database access directive typically selects and executes a database query to obtain query results having desired information. The dynamic page generator 125 then manipulates the query results to format and display the desired information. See directive 202 in FIG. 6, for instance. Similarly, order, product and receipt directives retrieve orders, receipts, product or shopper data for use in displaying order information. Lastly, convenience directives produce new value references for later use and generally facilitate page design and development. For example, convenience directives can include files in real-time, set variables, affect the status of a checkbox and provide comments to a template that are removed during page generation. Detailed information on the syntax of all directives supported by the merchant system 120 is found in the Microsoft Merchant Server Documentation, hereby incorporated by reference.

To perform various system operations, the merchant system 120 uses actions. For example, actions can add an item to an order form, clear an order from, initiate a purchase or insert and delete data from the database. An action is a routine to perform specific functions. Actions have return values that control the display of results to a shopper. Similarly, actions take arguments that control their behavior. Some actions generate errors when they receive incorrect arguments while other actions process and validate the arguments they receive. Many action arguments have default values to use when no values are specified. After execution of an action and its resulting system operation, the action may cause display of a HTML page having information, such as confirmation information or error information resulting from execution of the action, or the action may redirect the shopper to a new HTML page. Actions are called when a shopper clicks on a URL, generated by a directive, having the form:

"http://server.sub.-- name/environment.security/xt/store.sub.-- name/shopper.sub.-- id/module.action; arg1=value1; arg2=value2 . . .".

The action manager 128 interprets the URL by analyzing its constituents to extract the action and its arguments for execution. Thus, the "http://" portion of the URL specifies use of HTTP for communication across the Internet. The "server.sub.-- name" portion of the URL specifies the name of the server having the router to the merchant's electronic store. The "environment" portion of the URL describes the version of the merchant system used. For exam