Methods and apparatus for maintaining business rules in a configuration system

- BIGMACHINES, INC.

Methods and apparatus for maintaining businesses rules in a configuration system are disclosed. The presently disclosed system allows systems to be configured using a plurality of rules that are syndicated by a plurality of different manufacturers. Each manufacturer syndicates a portion of the overall system attributes and/or configuration rule set for use by others. Configuration users, such as the sales channel, may then create additional rules and/or configure products with the most recent version of the component attributes and configuration rules, and no single entity is burdened with maintaining the entire attribute and/or rule set.

Skip to: Description  ·  Claims  ·  References Cited  · Patent History  ·  Patent History
Description
TECHNICAL FIELD

The present disclosure relates in general to system configuration, and, in particular, to methods and apparatus for maintaining businesses rules in a configuration system.

BACKGROUND

Often, systems have multiple options. However, those options may not all be compatible with each other. For example, a person may be selecting components for a new personal computer. If the person (e.g., end-user) chooses a certain peripheral (e.g., graphics card) for the computer, that peripheral may require a certain minimum amount of memory and/or CPU speed. Configuration software may be used to assist the end-user and enforce these rules. However, present configuration systems have certain drawbacks.

The configuration of complex systems typically requires a large number of rules. Maintaining these rules is burdensome. When new configuration options are added to the system, existing rules may need to be modified, and new rules may need to be added. This problem is compounded when different components in the system come from different manufactures, because the information needed to generate the rules may not be available.

SUMMARY

The presently disclosed system solves this problem by allowing systems to be configured using a plurality of rules that are syndicated by a plurality of different manufacturers. Each manufacturer syndicates a portion of the overall system attributes and/or configuration rule set for use by others. For example, a sales channel (e.g., of computers) may receive (push or pull) system configuration rules from multiple component manufacturers (e.g., manufacturers of CPUs, memory cards, graphic cards, etc.). The sales channel may then create additional rules and/or configure the system with the most up to date version of the component attributes and configuration rules, and no single entity is burdened with maintaining the entire attribute and/or rule set.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a high level block diagram of an example communications system.

FIG. 2 is a more detailed block diagram showing one example of a computing device.

FIG. 3 is a flowchart of an example process to maintain businesses rules in a configuration system.

FIG. 4 is an example run-time display of a system configurator applying the syndicated businesses rules.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

The present system is most readily realized in a network communications system. A high level block diagram of an exemplary network communications system 100 is illustrated in FIG. 1. The illustrated system 100 includes one or more client devices 102, one or more web servers 106, and one or more databases 108. Each of these devices may communicate with each other via a connection to one or more communications channels 110 such as the Internet or some other wired and/or wireless data network, including, but not limited to, any suitable wide area network or local area network. It will be appreciated that any of the devices described herein may be directly connected to each other instead of over a network.

The web server 106 stores a plurality of files, programs, and/or web pages in one or more databases 108 for use by the client devices 102 as described in detail below. The database 108 may be connected directly to the web server 106 and/or via one or more network connections. The database 108 stores data as described in detail below.

One web server 106 may interact with a large number of client devices 102. Accordingly, each server 106 is typically a high end computer with a large storage capacity, one or more fast microprocessors, and one or more high speed network connections. Conversely, relative to a typical server 106, each client device 102 typically includes less storage capacity, a single microprocessor, and a single network connection.

A more detailed block diagram of the electrical systems of a computing device (e.g., client device 102 and/or server 106) is illustrated in FIG. 2. Although the electrical systems of a client device 102 and a typical server 106 may be similar, the structural differences between the two types of devices are well known.

The client device 102 may include a personal computer (PC), a personal digital assistant (PDA), an Internet appliance, a cellular telephone, or any other suitable communication device. The client device 102 includes a main unit 202 which preferably includes one or more processors 204 electrically coupled by an address/data bus 206 to one or more memory devices 208, other computer circuitry 210, and one or more interface circuits 212. The processor 204 may be any suitable processor. The memory 208 preferably includes volatile memory and non-volatile memory. Preferably, the memory 208 stores a software program that interacts with the other devices in the system 100 as described below. This program may be executed by the processor 204 in any suitable manner. The memory 208 may also store digital data indicative of documents, files, programs, web pages, etc. retrieved from a server 106 and/or loaded via an input device 214.

The interface circuit 212 may be implemented using any suitable interface standard, such as an Ethernet interface and/or a Universal Serial Bus (USB) interface. One or more input devices 214 may be connected to the interface circuit 212 for entering data and commands into the main unit 202. For example, the input device 214 may be a keyboard, mouse, touch screen, track pad, track ball, isopoint, and/or a voice recognition system.

One or more displays, printers, speakers, and/or other output devices 216 may also be connected to the main unit 202 via the interface circuit 212. The display 216 may be a cathode ray tube (CRTs), liquid crystal displays (LCDs), or any other type of display. The display 216 generates visual displays of data generated during operation of the client device 102. For example, the display 216 may be used to display web pages and/or desktop pop-up data received from the server 106. The visual displays may include prompts for human input, run time statistics, calculated values, data, etc.

One or more storage devices 218 may also be connected to the main unit 202 via the interface circuit 212. For example, a hard drive, CD drive, DVD drive, and/or other storage devices may be connected to the main unit 202. The storage devices 218 may store any type of data used by the client device 102.

The client device 102 may also exchange data with other network devices 220 via a connection to the network 110. The network connection may be any type of network connection, such as an Ethernet connection, digital subscriber line (DSL), telephone line, coaxial cable, etc. Users 114 (e.g., end-users and/or configuration users) of the system 100 may be required to register with the server 106. In such an instance, each user 114 may choose a user identifier (e.g., e-mail address) and a password which may be required for the activation of services. The user identifier and password may be passed across the network 110 using encryption built into the user's browser. Alternatively, the user identifier and/or password may be assigned by the server 106.

A flowchart of an example process 300 for maintaining businesses rules in a configuration system is illustrated in FIG. 3. Preferably, the process 300 is embodied in one or more software programs which is stored in one or more memories and executed by one or more processors. Although the process 300 is described with reference to the flowchart illustrated in FIG. 3, it will be appreciated that many other methods of performing the acts associated with process 300 may be used. For example, the order of many of the steps may be changed, and many of the steps described are optional.

In general, the process 300 allows systems to be configured using a plurality of attributes and rules that are syndicated by a plurality of different manufactures. The process 300 preferably begins with a plurality of manufacturers syndicating their respective attributes and/or configuration rules (block 302), which are then received by one or more sales channels (e.g., CDW) (block 304). For example, HP may publish one rule that says their model HP-1 computer must be configured with at least 2 GB of RAM if you want to use the NVIDIA G1 graphics card and another rule that says their model HP-2 computer must be configured with at least 4 GB of RAM if you want to use the NVIDIA G1 graphics card. Similarly, Dell may publish one rule that says their model D-1 computer must be configured with at least 4 GB of RAM if you want to use the NVIDIA G1 graphics card and another rule that says their model D-2 computer is never compatible with the NVIDIA G1 graphics card no matter how much RAM is installed. In addition, CDW may write certain rules regarding the compatibility of certain system attributes from various manufactures such as HP and Dell.

These attributes and business rules may be any type of business rule and may apply to things that are not systems or products. For example, the business rules may be bill of materials (BOM) rules, pricing rules, hiding rules, recommendation rules, constraint rules, recommended items rules, etc.

For each configuration, the end-user can create a bill of materials. When a BOM rule triggers, it appears to the end-user (e.g., buyer) on a commerce document line item pages.

Pricing rules may be used to calculate a price based on how a product is configured. The designer can create a smart pricing system by generating business rules for configurable attributes that add pricing to products. Pricing rules can be based on a combination of one or more configured values.

Hidden attribute rules tell the system to hide certain attributes when a pre-defined condition is met. Using hidden attribute rules, the designer can reduce the number of rules needed for a configuration process because the designer can include disparate attribute types in a single flow rule and how one set of attributes or another based on some condition.

Recommendation rules can be used to help end-users configure products by offering suggested attributes values. For each configuration, where a model or part would likely have a certain attribute value, the designer can create a recommendation. When recommendations trigger, they preferably appear to end-users. For example, the recommendation may display as text next to a configurable attribute that has a recommended value. For attributes with a set or forced option enabled, recommendation values automatically auto-populate the configurable attribute fields.

Constraint rules are set-up to warn an end-user when a certain attribute value will not work in a configuration. These rules may be used to reduce errors in the configuration process. For example, if the end-user is configuring an automobile and the end-user selects a blue exterior color, a constraint may run that only allows the end-user to select tan as an interior color. While a constraint is active, the system typically does not allow the end-user to advance to commerce (e.g., a purchase screen).

Recommended item rules enable a designer to associate extra sets of parts and models with products based on user-configured values. If the recommended item is mandatory, then the end-user must select (e.g. purchase) the configured model with the recommended item. Preferably, there is no way to delete the item association in the commerce process. If the item is not mandatory, then the end-user can opt to not buy the recommended item.

Preferably, the business rules (e.g., system configuration rules) are stored as a plurality of if-then statements relating certain attributes to other attributes. For example, “If Brand=‘Dell’ and Model=‘D-2’ Then NvidiaBrand=‘No’. These if-then statements are then used when the configuration software is executed (block 306). For example, an end-user may go to a web site 400 to configure a computer (see FIG. 4). During the configuration the end-user enters a plurality of configuration attributes (block 308). For example, the end-user may select a Dell brand computer (via drop-down box 402), model D-1 (via drop-down box 404), with a 4 GB of RAM (via drop-down box 406). It will be appreciated that any suitable input mechanism may be used such as check boxes, radio buttons, etc.

The product is interactively configured based on the selected configuration attributes and configuration rules (block 310). For example, if the end-user selected a Dell model D-1 with 4 GB of RAM, one of the available graphics cards may be the NVIDIA G1. Accordingly, the NVIDIA G1 is one of the choices available for selection in the graphics card drop-down box 408. Non-selectable choices may be excluded (e.g., not included in the drop-down box) or included (e.g., dimmed and not selectable).

If the end-user changes a choice in one drop-down box, the other drop-down boxes may also change based on a business rules table and the corresponding if-then statements relating certain attributes to other attributes. For example, if the end-user changes from a 4 GB of RAM to 8 GB of RAM, additional video cards may become available. In another example, one attribute selection may require another attribute selection. For example, one computer part may require another computer part for installation. In such an instance, the configuration software preferably enforces this relationship for the end-user. These attributes and or rules may be provided by each manufacturer and/or a configuration user such as the sales channel. For example, a retail channel may provide a rule relating the compatibility of one manufacturer's product to another manufacturer's product.

Once the end-user's selections are complete and the configuration rules are satisfied, a proposal, quote, contract, and/or specification associated with the system may be automatically generated, and/or the system may be built in accordance with the selected configuration parameters (block 312). For example, the computer may be assembled (or selected from inventory) and delivered to the customer.

In summary, persons of ordinary skill in the art will readily appreciate that methods and apparatus for maintaining businesses rules in a configuration system have been provided. The foregoing description has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the exemplary embodiments disclosed. Many modifications and variations are possible in light of the above teachings. It is intended that the scope of the invention be limited not by this detailed description of examples, but rather by the claims appended hereto.

Claims

1. A method of configuring a system, the method comprising:

providing a configuration system for receiving and consolidating one or more configuration rules pertaining to configuration attributes of products from a plurality of manufacturers, the configuration attributes being selectable component configuration parameters, and the configuration rules comprising logic that analyzes whether a first configuration attribute is compatible with a second configuration attribute, wherein the configuration rules associated with the plurality of manufacturers are not maintained at the configuration system but rather are maintained by the plurality of manufacturers, and wherein the configuration system maintains non-manufacturer rules in addition to the one or more configuration rules received from the plurality of manufacturers, the non-manufacturer configuration rules pertaining to the configuration attributes from the one or more configuration rules received from the plurality of manufacturers;
receiving, at the configuration system, a first configuration rule from a first manufacturer, the first configuration rule pertaining to a first product associated with the first manufacturer;
receiving, at the configuration system, a second different configuration rule from a second manufacturer, the second configuration rule pertaining to a second product associated with the second manufacturer, wherein the first product and the second product are of the same type, and wherein the first configuration rule is of a different type than the second configuration rule;
storing the first configuration rule and the second configuration rule in the configuration system; and
configuring one or more products by executing the configuration rules to determine compatibility of the configuration attributes selected by an end-user using the configuration system, wherein the configuration system causes a first configuration control and a second different configuration control to be displayed to the end-user, the first configuration control being associated with the first configuration attribute, and the second configuration control being associated with the second configuration attribute, and wherein the configuration system modifies a value associated with the first configuration control based on the end-user's selection in the second configuration control.

2. The method of claim 1, wherein the first configuration rule is associated with a first component of the one or more products, the first component being provided by the first manufacturer.

3. The method of claim 2, wherein the second configuration rule is associated with a second component of the one or more products, the second component being provided by the second manufacturer.

4. The method of claim 3, further comprising determining a compatibility status associated with (i) the first component and the second component and (ii) a third component with the second component.

5. The method of claim 4, wherein a configuration user provides a third configuration rule associated with the compatibility status.

6. The method of claim 1, wherein a configuration user provides a configuration rule associated with a compatibility status between the first configuration attribute and the second configuration attribute.

7. An apparatus for configuring a system, the apparatus comprising:

a processor;
an input device operatively coupled to the processor and a network;
an output device operatively coupled to the processor and the network; and
a memory device operatively coupled to the processor, the memory device storing a software application, the software application enabling: the output device to provide a configuration system for receiving and consolidating one or more configuration rules pertaining to configuration attributes of products from a plurality of manufacturers, the configuration attributes being selectable component configuration parameters, and the configuration rules comprising logic that analyzes whether a first configuration attribute is compatible with a second configuration attribute, wherein the configuration rules associated with the plurality of manufacturers are not maintained at the configuration system but rather are maintained by the plurality of manufacturers, and wherein the configuration system maintains non-manufacturer rules in addition to the one or more configuration rules received from the plurality of manufacturers, the non-manufacturer configuration rules pertaining to the configuration attributes from the one or more configuration rules received from the plurality of manufacturers; the input device to receive, at the configuration system, a first configuration rule from a first manufacturer, the first configuration rule pertaining to a first product associated with the first manufacturer; the input device to receive, at the configuration system, a second different configuration rule from a second manufacturer, the second configuration rule pertaining to a second product associated with the second manufacturer, wherein the first product and the second product are of the same type, and wherein the first configuration rule is of a different type than the second configuration rule; the memory device to store the first configuration rule and the second configuration rule in the configuration system, the first configuration rule and the second configuration rule being stored in a predetermined format; and the software application to configure one or more products by executing the configuration rules to determine compatibility of the configuration attributes selected by an end-user using the configuration system, wherein the software application causes a first configuration control and a second different configuration control to be displayed to the end-user, the first configuration control being associated with the first configuration attribute, and the second configuration control being associated with the second configuration attribute, and wherein the software application modifies a value associated with the first configuration control based on the end-user's selection in the second configuration control.

8. The apparatus of claim 7, wherein the first configuration rule is associated with a first component of the one or more products, the first component being provided by the first manufacturer.

9. The apparatus of claim 8, wherein the second configuration rule is associated a second component of the one or more products, the second component being provided by the second manufacturer.

10. The apparatus of claim 9, wherein the software application determines a compatibility status associated with (i) the first component and the second component and (ii) a third component with the second component.

11. The apparatus of claim 10, wherein a configuration user provides a third configuration rule associated with the compatibility status.

12. The apparatus of claim 7, wherein a configuration user provides a configuration rule associated with a compatibility status between the first configuration attribute and the second configuration attribute.

13. A non-transitory computer readable memory storing a software application, the software application enabling:

an output device to provide a configuration system for receiving and consolidating one or more configuration rules pertaining to configuration attributes of products from a plurality of manufacturers, the configuration attributes being selectable component configuration parameters, and the configuration rules comprising logic that analyzes whether a first configuration attribute is compatible with a second configuration attribute, wherein the configuration rules associated with the plurality of manufacturers are not maintained at the configuration system but rather are maintained by the plurality of manufacturers, and wherein the configuration system maintains non-manufacturer rules in addition to the one or more configuration rules received from the plurality of manufacturers, the non-manufacturer configuration rules pertaining to the configuration attributes from the one or more configuration rules received from the plurality of manufacturers;
an input device to receive, at the configuration system, a first configuration rule from a first manufacturer, the first configuration rule pertaining to a first product associated with the first manufacturer;
the input device to receive, at the configuration system, a second different configuration rule from a second manufacturer, the second configuration rule pertaining to a second product associated with the second manufacturer, wherein the first product and the second product are of the same type, and wherein the first configuration rule is of a different type than the second configuration rule;
a storage of the first configuration rule and the second configuration rule in the configuration system, the first configuration rule and the second configuration rule being stored in a predetermined format; and
the software application to configure one or more products by executing the configuration rules to determine compatibility of the configuration attributes selected by an end-user using the configuration system, wherein the software application causes a first configuration control and a second different configuration control to be displayed to the end-user, the first configuration control being associated with the first configuration attribute, and the second configuration control being associated with the second configuration attribute, and wherein the software application modifies a value associated with the first configuration control based on the end-user's selection in the second configuration control.

14. The computer readable memory of claim 13, wherein the first configuration rule is associated with a first component of the one or more products, the first component being provided by the first manufacturer.

15. The computer readable memory of claim 14, wherein the second configuration rule is associated a second component of the one or more products, the second component being provided by the second manufacturer.

16. The computer readable memory of claim 15, wherein the software application determines a compatibility status associated with (i) the first component and the second component and (ii) a third component with the second component.

17. The computer readable memory of claim 16, wherein a configuration user provides a third configuration rule associated with the compatibility status.

18. The computer readable memory of claim 13, wherein a configuration user provides a configuration rule associated with a compatibility status between the first configuration attribute and the second configuration attribute.

Referenced Cited
U.S. Patent Documents
4853850 August 1, 1989 Krass, Jr. et al.
4942356 July 17, 1990 Ellingen et al.
5060401 October 29, 1991 Whatley
5111927 May 12, 1992 Schulze, Jr.
5129656 July 14, 1992 Marte et al.
5225987 July 6, 1993 Thompson
5279051 January 18, 1994 Whatley
5283865 February 1, 1994 Johnson
5307261 April 26, 1994 Maki et al.
5311424 May 10, 1994 Mukherjee et al.
5367627 November 22, 1994 Johnson
5412730 May 2, 1995 Jones
5483049 January 9, 1996 Schulze, Jr.
5493490 February 20, 1996 Johnson
5500802 March 19, 1996 Morris et al.
5500934 March 19, 1996 Austin et al.
5615342 March 25, 1997 Johnson
5617514 April 1, 1997 Dolby et al.
5623637 April 22, 1997 Jones et al.
5625776 April 29, 1997 Johnson
5630025 May 13, 1997 Dolby et al.
5745765 April 28, 1998 Paseman
5758331 May 26, 1998 Johnson
5819302 October 6, 1998 Nielsen
5825651 October 20, 1998 Gupta et al.
5844554 December 1, 1998 Geller et al.
5877966 March 2, 1999 Morris et al.
5909533 June 1, 1999 Kitabayashi et al.
5963953 October 5, 1999 Cram et al.
5987480 November 16, 1999 Donohue et al.
D421694 March 21, 2000 Kitabayashi et al.
6035305 March 7, 2000 Strevey et al.
6049822 April 11, 2000 Mittal
6061697 May 9, 2000 Nakao
6067087 May 23, 2000 Krauss
6067525 May 23, 2000 Johnson et al.
D431156 September 26, 2000 Lewis et al.
6119102 September 12, 2000 Rush et al.
6141658 October 31, 2000 Mehr et al.
D434601 December 5, 2000 Lewis et al.
6167383 December 26, 2000 Henson
6169979 January 2, 2001 Johnson
6177932 January 23, 2001 Galdes et al.
6178362 January 23, 2001 Woolard et al.
6182059 January 30, 2001 Angotti et al.
D438061 February 27, 2001 Lewis et al.
D438062 February 27, 2001 Lewis et al.
6199067 March 6, 2001 Geller
6205446 March 20, 2001 Mittal et al.
6233564 May 15, 2001 Schulze, Jr.
6233609 May 15, 2001 Mittal
6278996 August 21, 2001 Richardson et al.
6289340 September 11, 2001 Puram et al.
6311149 October 30, 2001 Ryan et al.
6370882 April 16, 2002 Adamski et al.
6397219 May 28, 2002 Mills
6411947 June 25, 2002 Rice et al.
6430609 August 6, 2002 Dewhurst et al.
6438547 August 20, 2002 Mehr et al.
6453255 September 17, 2002 Smorodinsky et al.
6453302 September 17, 2002 Johnson et al.
6460077 October 1, 2002 Mittal
6480859 November 12, 2002 Mittal et al.
6497360 December 24, 2002 Schulze, Jr.
6510352 January 21, 2003 Badavas et al.
6512361 January 28, 2003 Becker
6535896 March 18, 2003 Britton et al.
6535913 March 18, 2003 Mittal et al.
6567729 May 20, 2003 Betters et al.
6577962 June 10, 2003 Afshari
6598052 July 22, 2003 Saulpaugh et al.
6611844 August 26, 2003 Saulpaugh et al.
6633863 October 14, 2003 Sorensen Moller et al.
6636893 October 21, 2003 Fong
6668354 December 23, 2003 Chen et al.
D487825 March 23, 2004 Kim et al.
6732027 May 4, 2004 Betters et al.
6776151 August 17, 2004 Wiersma et al.
6789252 September 7, 2004 Burke et al.
6799299 September 28, 2004 Li et al.
6813531 November 2, 2004 Coale et al.
6826572 November 30, 2004 Colace
6836766 December 28, 2004 Gilpin et al.
6859699 February 22, 2005 Carroll et al.
6901595 May 31, 2005 Mukundan et al.
6915253 July 5, 2005 Chapman
6917304 July 12, 2005 Jones et al.
6941305 September 6, 2005 Magouirk et al.
6959236 October 25, 2005 Betters et al.
6981212 December 27, 2005 Claussen et al.
6981222 December 27, 2005 Rush et al.
6983187 January 3, 2006 Kern
6996776 February 7, 2006 Makely et al.
6996781 February 7, 2006 Myers et al.
7003360 February 21, 2006 Dillon
7003548 February 21, 2006 Barck et al.
7039602 May 2, 2006 Kapadia et al.
7039859 May 2, 2006 Sundaresan
7043320 May 9, 2006 Roumeliotis et al.
7062478 June 13, 2006 Huelsman et al.
7080083 July 18, 2006 Kim et al.
7084735 August 1, 2006 Kapolka
7086002 August 1, 2006 Elo et al.
7089127 August 8, 2006 Thibedeau et al.
7117436 October 3, 2006 O'Rourke et al.
7127313 October 24, 2006 Neri
7127705 October 24, 2006 Christfort et al.
7143344 November 28, 2006 Parker et al.
7155667 December 26, 2006 Kotler et al.
7165041 January 16, 2007 Guheen et al.
7167876 January 23, 2007 Cookson et al.
7188075 March 6, 2007 Smirnov
7188335 March 6, 2007 Darr et al.
7188527 March 13, 2007 Jones et al.
7191394 March 13, 2007 Ardeleanu et al.
7219081 May 15, 2007 Davis et al.
7225038 May 29, 2007 Kind
7225818 June 5, 2007 Kim et al.
7257579 August 14, 2007 Wachholz-Prill
7277925 October 2, 2007 Warnock
7293237 November 6, 2007 Knight et al.
7308646 December 11, 2007 Cohen et al.
7343584 March 11, 2008 Plain et al.
7353192 April 1, 2008 Ellis et al.
7359777 April 15, 2008 Betters et al.
7360071 April 15, 2008 Ewing et al.
7380204 May 27, 2008 Lomelin-Stoupignan et al.
7386832 June 10, 2008 Brunner et al.
7389471 June 17, 2008 Croney et al.
7398233 July 8, 2008 Bayer et al.
7406359 July 29, 2008 Roumeliotis et al.
7415010 August 19, 2008 Croak et al.
7415482 August 19, 2008 Blake et al.
7437432 October 14, 2008 Bodin et al.
7457789 November 25, 2008 Axling
7467122 December 16, 2008 Morita et al.
7505921 March 17, 2009 Lukas et al.
7516088 April 7, 2009 Johnson et al.
7519549 April 14, 2009 Johnson et al.
7580871 August 25, 2009 Brunner et al.
7584079 September 1, 2009 Lichtenberg et al.
7590944 September 15, 2009 Weber et al.
7606739 October 20, 2009 Johnson
7620711 November 17, 2009 Boese
7627745 December 1, 2009 Martinez et al.
7631299 December 8, 2009 Kannenberg
7650296 January 19, 2010 Brunner et al.
7657386 February 2, 2010 Thibedeau et al.
7685507 March 23, 2010 Workman et al.
7689904 March 30, 2010 Ritter
7703092 April 20, 2010 Glaser et al.
7788591 August 31, 2010 Brunner et al.
7818082 October 19, 2010 Roumeliotis et al.
7822632 October 26, 2010 Bayer et al.
7844495 November 30, 2010 Verchere
7941341 May 10, 2011 Johnson et al.
7949578 May 24, 2011 Johnson et al.
8078489 December 13, 2011 Marsten
8112377 February 7, 2012 Schmidt
8121904 February 21, 2012 Johnson
8122432 February 21, 2012 Brunn et al.
8131487 March 6, 2012 Thibedeau et al.
8166385 April 24, 2012 Garcia-Molina et al.
8245020 August 14, 2012 Gupta
8266015 September 11, 2012 Johnson et al.
8271355 September 18, 2012 Johnson et al.
8290822 October 16, 2012 Gade et al.
8341011 December 25, 2012 Veit
8538786 September 17, 2013 Linehan
8548867 October 1, 2013 Gade et al.
9213965 December 15, 2015 Brooks
20010056460 December 27, 2001 Sahota et al.
20020010598 January 24, 2002 Johnson et al.
20020026447 February 28, 2002 Matsutsuka et al.
20020035463 March 21, 2002 Lynch et al.
20020042749 April 11, 2002 Yugami et al.
20020073001 June 13, 2002 Palmer et al.
20020078435 June 20, 2002 Liu et al.
20020087432 July 4, 2002 Muniz
20020121095 September 5, 2002 Adamski et al.
20020123878 September 5, 2002 Menke
20020133433 September 19, 2002 Hall
20020165701 November 7, 2002 Lichtenberg
20030028449 February 6, 2003 Heinen et al.
20030033377 February 13, 2003 Chatterjee et al.
20030172343 September 11, 2003 Leymaster et al.
20040010496 January 15, 2004 Behrendt et al.
20040249664 December 9, 2004 Broverman et al.
20040255233 December 16, 2004 Croney et al.
20050055633 March 10, 2005 Ali et al.
20050102612 May 12, 2005 Allan et al.
20050108633 May 19, 2005 Sahota et al.
20050138078 June 23, 2005 Christenson et al.
20050144087 June 30, 2005 Huang et al.
20050160359 July 21, 2005 Falk et al.
20050204281 September 15, 2005 Choate
20050240451 October 27, 2005 Johnson et al.
20060077992 April 13, 2006 Gale
20060129929 June 15, 2006 Weber et al.
20060155654 July 13, 2006 Plessis et al.
20060166642 July 27, 2006 Puthenpura et al.
20060168540 July 27, 2006 Cejka et al.
20060178973 August 10, 2006 Chiovari et al.
20060294459 December 28, 2006 David et al.
20070074106 March 29, 2007 Ardeleanu et al.
20070074127 March 29, 2007 Acker et al.
20070083533 April 12, 2007 Mirkazemi et al.
20070203771 August 30, 2007 Caballero et al.
20070226066 September 27, 2007 Brunner et al.
20070294100 December 20, 2007 Chen et al.
20080005287 January 3, 2008 Harvey et al.
20080066052 March 13, 2008 Wolfram
20080086682 April 10, 2008 Derricott et al.
20080126221 May 29, 2008 Swanson
20080208606 August 28, 2008 Allsop et al.
20080320114 December 25, 2008 Bodin
20090012854 January 8, 2009 Altice et al.
20090019422 January 15, 2009 Loughlin et al.
20090050186 February 26, 2009 Kim et al.
20090089174 April 2, 2009 Brunner et al.
20100010917 January 14, 2010 Bagwell et al.
20100036747 February 11, 2010 Bagley et al.
20100037142 February 11, 2010 Bagley et al.
20100037159 February 11, 2010 Bagley et al.
20100037162 February 11, 2010 Bagley et al.
20100088590 April 8, 2010 Bajohr et al.
20100131872 May 27, 2010 Bagley et al.
20100161385 June 24, 2010 Karypis et al.
20100223215 September 2, 2010 Karypis
20100281429 November 4, 2010 Kheiri et al.
20100293042 November 18, 2010 McManus et al.
20100318412 December 16, 2010 Karypis et al.
20110098835 April 28, 2011 Yucel et al.
20110208618 August 25, 2011 Christenson et al.
20110246322 October 6, 2011 Wulteputte et al.
20110264486 October 27, 2011 Johnson et al.
20110301984 December 8, 2011 Johnson et al.
20110307294 December 15, 2011 Barkai et al.
20120030069 February 2, 2012 Garg
20120042242 February 16, 2012 Garland et al.
20120047045 February 23, 2012 Gopikrishna
20120102421 April 26, 2012 Handorf et al.
20120123898 May 17, 2012 Kirkeby et al.
20120143721 June 7, 2012 Hutchinson et al.
20120215636 August 23, 2012 Ross
20120221429 August 30, 2012 Verchere
20120232979 September 13, 2012 Bous
20120271730 October 25, 2012 McNall et al.
Foreign Patent Documents
2359157 August 2001 GB
2004259070 September 2004 JP
WO0150349 July 2001 WO
WO0190873 November 2001 WO
WO2004075466 September 2004 WO
WO2007127857 November 2007 WO
Other references
  • PRNewswire 2004 “Price History”, http://www.prnewswire.com/news-releases/model-n-announces-breakthrough-revenue-management-suite-for-pharmaceutical-companies-72702922.html.
  • Krell 2005, “Price Change”, krell-software.com/omniaudit/dataauditingforsarbanesoxleyprintable.asp.
  • International Search Report and Written Opinion of the International Searching Authority for International Application No. PCT/US10/33217 dated Jan. 27, 2011.
Patent History
Patent number: 9524506
Type: Grant
Filed: Oct 21, 2011
Date of Patent: Dec 20, 2016
Patent Publication Number: 20130103806
Assignee: BIGMACHINES, INC. (Deerfield, IL)
Inventors: Timothy William Handorf (Trevor, WI), Christopher Haussler (Arlington Heights, IL), Martin Daniel Duffy (Elk Grove Village, IL)
Primary Examiner: Farid Homayounmehr
Assistant Examiner: Maung Lwin
Application Number: 13/279,015
Classifications
Current U.S. Class: Item Configuration Or Customization (705/26.5)
International Classification: G06F 15/177 (20060101); G06Q 30/02 (20120101);