The present invention relates generally to the field of database managing updates of large quantities of data elements. More specifically, the present invention relates to a system and method for applying a rule to a large number of data elements where the data elements satisfy a condition associated with the rule.
Large number of data elements may be created where each data element represents a discrete item, concept, class of items, etc. The data elements may be associated with a plurality of data element fields. The data elements and data element fields may have been created over time, by a different set of users, represent a wide variety of objects, etc. such that a variety of structures may be associated with the data element and/or the data element fields.
It may be necessary to apply a general rule to a large number of the data elements despite the different type of data elements and/or data element fields. A user is often required to define a large number of rules to account for the wide variety of structures. Further, the user must utilize a large amount of processing time implementing the rule for each particular structure.
What is needed is a system and method for implement rule processing for data elements where the data elements satisfy a condition independent of the particular data element structure. What is further needed is such a system and method configured to reduce processing overhead associated with the data element rule processing.
One embodiment of the invention relates to a system for processing rules on data elements. The system includes a memory queue configured to receive and store a listing of data elements and a rule processing engine configured to apply one or more processing rules to one or more data elements. The rules processing engine further includes a rule condition processing engine configured to apply a condition to a data element and store the data element in the memory queue if the condition is satisfied and a rule action processing engine configured to iteratively perform an action on the elements stored in the memory queue.
Another embodiment of the invention relates to a method for processing a rule on one or more data elements. The method includes retrieving one or more data elements, performing condition rule execution processing overhead, storing the retrieved data elements that satisfy a condition in a memory queue, performing rule execution preparation, and processing the rule for each of the data elements in the memory queue.
Yet another embodiment of the invention relates to a system for processing rules on data elements. The system includes a memory queue configured to receive and store a listing of data elements, each data element including a plurality of data element fields and representing a good for sale in a retail environment and a rule processing engine configured to apply one or more processing rules to one or more data elements. The rules processing engine further includes a rule condition processing engine configured to apply a condition to a data element and store the data element in the memory queue if the condition is satisfied and a rule action processing engine configured to iteratively perform an action on the elements stored in the memory queue.
This summary and the following detailed description are directed to certain specific embodiments of the invention. The invention is not limited to the particular embodiments and applications described herein. The invention is defined only by the claims.
Referring to
System 100 includes a data elements database 110 and a rules processing engine 120. Although a particular configuration of system 100 is shown, system 100 may be implemented using a single processing system and database, a plurality of processing systems, a plurality of databases, etc. to perform the functions described herein. System 100 may further be configured to include more, fewer, and/or a different configuration of components to perform the functions described herein.
Database 110 may be any database or other collection of data configured to store a massive number of data elements. Database 110 may be configured to implement standard database functionality, including but not limited to, storage of data elements, retrieval of data elements, data element sorting, etc. Database 110 may be implemented using RAM, ROM, one or more hard drives, or any other type of memory device. An exemplary database may be a database of a data elements where each data elements is representative of an article or type of article for sale in a retail setting. Other data elements may include entries in a table, computer records, products, a product class, etc. Each data element may be configured to include one or more data element fields. Exemplary data element fields may include information associated with the particular element. According to the exemplary embodiment, the data element fields may be information related to the article for sale such as an identification number, a description, a color, pricing information, markdown information, etc. Although a database is described, data elements may alternatively be stored in a table, a linked list, or any other large data storage system or method.
Rules processing engine 120 may be any type of processor configured to implement one or more processing rules to process data elements stored in database 110. Processing rules may be implemented as computer code including a plurality of instructions to be implemented using a computer processor. Rules processing engine 120 may be configured to include a rule condition processing engine 122, a memory queue 124, and a rule action processing engine 126.
Rules processing engine 120 is configured to iteratively process the data elements in database 110 to apply a rule to the data element where the data element satisfies a defined condition. Rules may be programmed by a user of system 100. Each rule may be configured to include a condition and an action to be taken based on satisfaction of the condition. An exemplary rule that may be applied can include applying a condition to determine whether the data element has a material group value and, if so, loading the data related to the material group to assigning the data to the relevant fields of the data element. Another exemplary rule can include applying a condition to determine if a data element or data element field does not have a unit of measure and, if so, publishing an error message. Yet another exemplary rule can include applying a condition to determine if the data element or data element field has a correct material group and all other data is correct and, if so, saving it in database 110. Although some exemplary rules are provided herein, it should be understood that applying a rule, including a condition and an action, can encompass a wider variety of concepts and be either specific or very general.
Processing the data elements in database 110 may be initiated by an action taken by a user, based on satisfaction of a preset condition, such as number of items received, a time of day, a time of year, etc. Processing can include selecting a first element, determining whether the element satisfies the condition, storing the data element in a memory queue if the element satisfies the condition and discarding it otherwise, retrieving a second element, determining whether the second element satisfies the condition, etc. Processing may further include performing rule execution preparation overhead prior to processing the first data element. Exemplary rule execution preparation overhead may include loading all material group identifiers from database 110 prior to applying a condition to determine whether a data element has an incorrect material group and, if so, publishing an error message.
Rule condition processing may be performed by rule condition processing element 122. Rule condition processing engine 122 is configured to receive a data element retrieved from the database 110 and determine whether the rule satisfies a given condition. If the condition is satisfied, the data element is stored in memory queue 124. If the condition is not satisfied, no further action is taken on that data element.
After the condition determination has been performed for all of the data elements to be processes, the action defined by the rule may be iteratively performed on the elements in the memory queue 124 by rule action processing engine 126. Performing the action may include performing action execution overhead prior to performing the action on the first data element in memory queue 124. Exemplary rule execution overhead may include loading data related to all material groups for each data element within memory queue 124 where the action to be taken includes assigning the material groups data to the relevant fields of the data elements queued in the memory queue 124.
Referring now to
In a step 202, rule execution preparation overhead is performed. Rule execution preparation overhead may include any step or process to facilitate the conditional process of data elements. Exemplary overhead may include preparing the memory queue, performing initial calculations to facilitate determination of whether a data element satisfies the condition, loading data that might be required in order to analyze the condition such as a current date, a current user, etc.
In a step 204, a data element is retrieved from database 110. Retrieval of a data element may include creating a copy of the data element, creating a pointer in memory to the location of the data element, loading selected data element field from the data element that are the subject of the condition and/or action to be taken, etc. Loading the particular data element, data element pointer, and/or data element field can reduce the difficulty of dealing with particular structure associated with each unique data element.
In a step 206, a determination is made whether the data element satisfies a condition such that the action defined by the current rule should be performed on the data element. Determining whether the condition is satisfied may be performed by the condition rule processing engine 122.
If the condition is satisfied, the data element may be placed in a memory queue 124 in a step 208. Alternatively, the data element may be otherwise marked or reference as being a data element on which the action defined by the rule should be performed. For example, a pointer to the data element may be placed in a table, a data element field associated with the data element may be stored in the memory, etc.
If the condition is not satisfied, or following placement of the data element in memory queue 124, a determination may be made whether additional data elements are available for processing in a step 210. According to an exemplary embodiment, the additional data elements may include all of the remaining data elements in database 110 or a subset of the data elements. If additional data elements are available, step 204 and the following steps are performed again for the additional elements.
If no additional elements are found, action overhead is performed in a step 212. Action overhead may include any fixed cost processing associated with the action. For example, if the action involves accessing database 110 through pointers stored in memory queue 124, the communication with database 110 has a fixed cost which is the same regardless of the amount of data that is retrieved. Examples of action overhead include fixed cost associated with dynamic method calls, database accesses, workflow events, messages between servers, etc.
Following action overhead, data element action processing is performed in a step 214. The method may be performed such that the action overhead is only performed one time, while the action may be iteratively performed for each of the data elements that have satisfied the rule condition.
Referring now to
A condition checking preparation block 310 represents rule execution preparation overhead as described above with reference to
Because the data element condition checking is iteratively perform on all of the data elements to be processed (N), the rule execution preparation overhead only needs to be performed a single time, resulting in a savings of processing time equal to (N−1)*(CPT).
Similarly, a rule execution preparation block 330 represents action execution overhead as described above with reference to
Because the data element action execution is iteratively perform on all of the data elements that have satisfied the condition (NE), the rule execution preparation overhead only needs to be performed a single time, resulting in a savings of processing time equal to (NE−1)*(APT).
Embodiments within the scope of the present description include program products comprising computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, such computer-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above are also to be included within the scope of computer-readable media. Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
The invention is described in the general context of a process, which may be implemented in one embodiment by a program product including computer-executable instructions, such as program code, executed by computers in networked environments. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
The present invention in some embodiments, may be operated in a networked environment using logical connections to one or more remote computers having processors. Logical connections may include a local area network (LAN) and a wide area network (WAN) that are presented here by way of example and not limitation. Such networking environments are commonplace in office-wide or enterprise-wide computer networks, intranets and the Internet. Those skilled in the art will appreciate that such network computing environments will typically encompass many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination of hardwired or wireless links) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
An exemplary system for implementing the overall system or portions of the invention might include a general purpose computing device in the form of a conventional computer, including a processing unit, a system memory, and a system bus that couples various system components including the system memory to the processing unit. The system memory may include read only memory (ROM) and random access memory (RAM). The computer may also include a magnetic hard disk drive for reading from and writing to a magnetic hard disk, a magnetic disk drive for reading from or writing to a removable magnetic disk, and an optical disk drive for reading from or writing to removable optical disk such as a CD-ROM or other optical media. The drives and their associated computer-readable media provide nonvolatile storage of computer-executable instructions, data structures, program modules and other data for the computer.
Software and web implementations of the present invention could be accomplished with standard programming techniques with rule based logic and other logic to accomplish the various database searching steps, correlation steps, comparison steps and decision steps. It should also be noted that the word “component” as used herein and in the claims is intended to encompass implementations using one or more lines of software code, and/or hardware implementations, and/or equipment for receiving manual inputs.
The foregoing description of embodiments of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. The embodiments were chosen and described in order to explain the principals of the invention and its practical application to enable one skilled in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated.
Number | Name | Date | Kind |
---|---|---|---|
4752877 | Roberts et al. | Jun 1988 | A |
5315508 | Bain et al. | May 1994 | A |
5400253 | O'Connor | Mar 1995 | A |
5444820 | Tzes et al. | Aug 1995 | A |
5546507 | Staub | Aug 1996 | A |
5615109 | Eder | Mar 1997 | A |
5701400 | Amado | Dec 1997 | A |
5758327 | Gardner et al. | May 1998 | A |
5870716 | Sugiyama et al. | Feb 1999 | A |
5930771 | Stapp | Jul 1999 | A |
5999914 | Blinn et al. | Dec 1999 | A |
6029139 | Cunningham et al. | Feb 2000 | A |
6064984 | Ferguson et al. | May 2000 | A |
6260024 | Shkedy | Jul 2001 | B1 |
6341351 | Muralidhran et al. | Jan 2002 | B1 |
6405191 | Bhatt et al. | Jun 2002 | B1 |
6505093 | Thatcher et al. | Jan 2003 | B1 |
6507851 | Fujiwara et al. | Jan 2003 | B1 |
6701299 | Kraisser et al. | Mar 2004 | B2 |
6725204 | Gusley | Apr 2004 | B1 |
6868528 | Roberts | Mar 2005 | B2 |
6910017 | Woo et al. | Jun 2005 | B1 |
6980966 | Sobrado et al. | Dec 2005 | B1 |
7031951 | Mancisidor et al. | Apr 2006 | B2 |
7080030 | Eglen et al. | Jul 2006 | B2 |
7082408 | Baumann et al. | Jul 2006 | B1 |
7092929 | Dvorak et al. | Aug 2006 | B1 |
7100083 | Little et al. | Aug 2006 | B2 |
7117165 | Adam et al. | Oct 2006 | B1 |
7124098 | Hopson et al. | Oct 2006 | B2 |
7124984 | Yokouchi et al. | Oct 2006 | B2 |
7139731 | Alvin | Nov 2006 | B1 |
7275048 | Bigus et al. | Sep 2007 | B2 |
20010019778 | Gardaz et al. | Sep 2001 | A1 |
20010032130 | Gabos et al. | Oct 2001 | A1 |
20010039517 | Kawakatsu | Nov 2001 | A1 |
20010049634 | Stewart | Dec 2001 | A1 |
20020013731 | Bright et al. | Jan 2002 | A1 |
20020023500 | Chikuan et al. | Feb 2002 | A1 |
20020026368 | Carter, III | Feb 2002 | A1 |
20020059108 | Okura et al. | May 2002 | A1 |
20020072986 | Aram | Jun 2002 | A1 |
20020073114 | Nicastro et al. | Jun 2002 | A1 |
20020078159 | Petrogiannis et al. | Jun 2002 | A1 |
20020087389 | Sklarz et al. | Jul 2002 | A1 |
20020107713 | Hawkins | Aug 2002 | A1 |
20020116241 | Sandhu et al. | Aug 2002 | A1 |
20020123930 | Boyd et al. | Sep 2002 | A1 |
20020138290 | Metcalfe et al. | Sep 2002 | A1 |
20020147668 | Smith et al. | Oct 2002 | A1 |
20020152128 | Walch et al. | Oct 2002 | A1 |
20020184116 | Tam et al. | Dec 2002 | A1 |
20030023500 | Boies et al. | Jan 2003 | A1 |
20030028393 | Coulston et al. | Feb 2003 | A1 |
20030028437 | Grant et al. | Feb 2003 | A1 |
20030046120 | Hoffman et al. | Mar 2003 | A1 |
20030046195 | Mao | Mar 2003 | A1 |
20030050852 | Liao et al. | Mar 2003 | A1 |
20030074269 | Viswanath | Apr 2003 | A1 |
20030126024 | Crampton et al. | Jul 2003 | A1 |
20030144916 | Mumm et al. | Jul 2003 | A1 |
20030149631 | Crampton et al. | Aug 2003 | A1 |
20030149674 | Good et al. | Aug 2003 | A1 |
20030158791 | Gilberto et al. | Aug 2003 | A1 |
20030171998 | Pujar et al. | Sep 2003 | A1 |
20030172007 | Helmolt et al. | Sep 2003 | A1 |
20030200150 | Westcott et al. | Oct 2003 | A1 |
20030208365 | Avery et al. | Nov 2003 | A1 |
20030229502 | Woo | Dec 2003 | A1 |
20040010463 | Hahn-Carlson et al. | Jan 2004 | A1 |
20040098358 | Roediger | May 2004 | A1 |
20040122689 | Dailey et al. | Jun 2004 | A1 |
20040162763 | Hoskin et al. | Aug 2004 | A1 |
20040172321 | Vemula et al. | Sep 2004 | A1 |
20040186765 | Kataoka | Sep 2004 | A1 |
20040186783 | Knight et al. | Sep 2004 | A1 |
20040210489 | Jackson et al. | Oct 2004 | A1 |
20040220861 | Morciniec et al. | Nov 2004 | A1 |
20040267674 | Feng et al. | Dec 2004 | A1 |
20050015303 | Dubin et al. | Jan 2005 | A1 |
20050055283 | Zarovinsky | Mar 2005 | A1 |
20050060270 | Ramakrishnan | Mar 2005 | A1 |
20050075915 | Clarkson | Apr 2005 | A1 |
20050075941 | Jetter et al. | Apr 2005 | A1 |
20050086122 | Cirulli et al. | Apr 2005 | A1 |
20050086125 | Cirulli et al. | Apr 2005 | A1 |
20050096122 | Nireki et al. | May 2005 | A1 |
20050096963 | Myr et al. | May 2005 | A1 |
20050102175 | Dudat et al. | May 2005 | A1 |
20050102192 | Gerrits et al. | May 2005 | A1 |
20050102227 | Solonchev | May 2005 | A1 |
20050165659 | Gruber | Jul 2005 | A1 |
20050171825 | Denton et al. | Aug 2005 | A1 |
20060020512 | Lucas et al. | Jan 2006 | A1 |
20060036507 | Pujar et al. | Feb 2006 | A1 |
20060112099 | Musgrove et al. | May 2006 | A1 |
20070050272 | Godlewski et al. | Mar 2007 | A1 |
Number | Date | Country |
---|---|---|
2004-030343 | Jan 2004 | JP |
WO 9945450 | Sep 1999 | WO |
WO 0171635 | Sep 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20080120265 A1 | May 2008 | US |