# Patent

## Title
System and method for identifying element usage in a deep element structure

## Abstract

A system for identifying usage of a target data element including both direct and indirect usage, within a data element structure where the target data element may have more than one parent data element. The system includes a usage processing engine configure to identify direct and indirect usage data elements for the target data element within the data element structure and a user interface configured to display the direct and indirect usage data elements for the target element in a hierarchical structure.

## Background
BACKGROUND OF THE INVENTION
The present invention relates generally to the field of identifying usage for an element within a deep element structure. More specifically, the present invention relates to a system and method for identifying usage of an element including both direct and indirect usage of the element, the element being associated with a structure where the element may have more than one parent element.
Large numbers 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 to create a deep element structure. Within a deep element structure, 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 plurality of rules to a large number of the data elements despite the different type of data elements and/or data element fields. The rules may result in the generation of new data elements directly using the original data elements. These new data elements may be further used by additional data elements such that these additional elements indirectly use the original data element, etc. Accordingly, modification to any particular element may have a complex effect on any data structure having a deep element structure.
Searches or queries showing usage are used in a variety of applications from Web searches to “where used” searches in development tools. Query results are displayed in a list format which limits the scope of the listing to objects that directly use the object for which the query was performed.
What is needed is a system and method for implementing queries to identify usage of a data element associated with a deep element structure, including both direct and indirect usage. What is further needed is such a system and method including a user interface configured to allow the user to easily identify data elements that may be affected by changes to a data element. What is further needed is such a user interface that is configurable to allow the user to customize their usage search.
SUMMARY OF THE INVENTION
One embodiment of the invention relates to a system for identifying usage of a target data element including both direct and indirect usage, within a data element structure where the target data element may have more than one parent data element. The system includes a usage processing engine configure to identify direct and indirect usage data elements for the target data element within the data element structure and a user interface configured to display the direct and indirect usage data elements for the target element in a hierarchical structure.
Another embodiment of the invention relates to a method for identifying usage of a target data element including both direct and indirect usage, within a data element structure where the target data element may have more than one parent data element. The method includes receiving a target data element identifier, identifying direct usage data elements for the target data element within the data element structure, identifying indirect usage data elements for the target data element within the data element structure, and displaying the direct and indirect usage data elements for the target element in a hierarchical structure.
Yet another embodiment of the invention relates to a system for identifying usage of a target data element including both direct and indirect usage, within a data element structure where the target data element may have more than one parent data element. 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 one or more software elements within a software workbench. The system further includes a usage processing engine configure to identify direct and indirect usage data elements for the target data element within the data element structure and a user interface configured to display the direct and indirect usage data elements for the target element in a hierarchical structure.
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.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a system for allowing a user to identify data elements that use a target data element, either directly or indirectly, according to an exemplary embodiment;
FIG. 2 is a flowchart illustrating a method for determining direct and indirect usage of a data element stored in a deep element structure where data elements may be associated with more than one parent data elements, according to an exemplary embodiment
FIG. 3 is a “where used” query result chart in diagrammatical form, according to an exemplary embodiment; and
FIGS. 4A-4C are screen shots representative of usage results displayed on a user interface, according to an exemplary embodiment.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
Referring to FIG. 1, a system 100 for allowing a user to identify data elements that use a target data element, either directly or indirectly, is shown, according to an exemplary embodiment. An data element may be any of a wide variety of data element types, such as a database entry, a computing process, a part listed in a bill of materials, a product within a store/warehouse, an object within a logistic chain, or any other element within a deep element structure that may belong to more than one parent element, either directly or indirectly.
A data element that accesses or otherwise utilizes a target element may be referred to as a parent element. Utilization may including linking to a data element, utilizing the data element in one or more calculations, utilizing information associated with the data element, etc.
System 100 includes a data repository 110 and a usage processing engine 120. Although a particular configuration of system 100 is shown, system 100 may be implemented using a single processing system and data repositories, 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.
Data repository 110 may be any database or other collection of data configured to store large amounts of data elements in an deep element data structure. Data repository 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. Data repository 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 using any other large data storage system or method.
According to another exemplary embodiment, data repository 110 may be representative of computer code, composed of a plurality of rules and actions, software elements, etc. created and/or implemented using a software workbench system. Software elements can be discrete sections of code for implementing a rule or an action in software. Data repository 110 may be configured to include data fields including parameters affecting the operation of each rule and/or action. Data repository 110 may be configured such that rules and/or actions may utilize other rules and/or actions as input and/or output parameters.
Usage processing engine 120 may be any type of processor configured to implement one or more usage determination rules to determine usage patterns among the data elements stored in data repository 110. Usage processing engine 120 is further configure to display and provide functionality associated with a usage information user interface 125 configured to receive input information and display results of a usage query.
User interface 125 may be any computer-implemented user interface configured to receive one or more user inputs and display usage information generated by usage processing engine 120. User interface 125 may further be configured to receive one or more inputs from a user allowing the user to customize the usage query being processed. The user interface and its configuration is discussed in further detail below with reference to FIGS. 2 and 3.
Referring now to FIG. 2, a flowchart 200 illustrating a method for determining direct and indirect usage of a data element stored in a deep element structure where data elements may be associated with more than one parent data elements is shown, according to an exemplary embodiment. Although specific steps are shown and described as being performed in a specific order, it should be understood that the method may include more, fewer, and/or a different configuration of steps to implement the method described herein.
In a step 205, a user is prompted through user interface 125 to enter a target data element identifier. The identifier may be a unique identification number, a name, a stock keeping unit (SKU) number, etc. The identifier may be manually entered by the user, selected from a listing, automatically selected based on a parameter, etc.
In a step 210, the user may optionally enter one or more query parameters. One exemplary search parameter may include a query depth parameter. If the user does not select any query parameters, the query can be implemented using a set of default parameters.
One exemplary parameter of a query parameter may be a query depth parameter. The query depth parameter may be an indication of the number of data elements that indirectly use the target data element are search and/or shown. For example, referring now to FIG. 3, a “where used” query result chart 300 in diagrammatical form is shown, according to an exemplary embodiment. Chart 300 includes a target data element 310, direct usage data elements 320, and indirect usage data elements 330. All of the data elements 320 and 330 are valid results to a “where used” query. Direct usage data elements 320 are elements that access the target data element 310 directly without having to call or access any other data elements, however, where a user has selected a query depth parameter of one, only direct usage data elements 320 would be displayed in a results screen. Although not shown in FIG. 3, a data element may be both a direct and an indirect usage data element.
Another exemplary parameter may be a data element type. For example, a user may wish to only identify data elements that are static elements that need to be updated and not data elements that are computer programs that would automatically be updated the next time they were executed. Accordingly, user interface 125 may be configured such that a user can restrict the query to only return results of a defined data element type.
Yet another exemplary parameter may be a end user data element identification. The user may wish to identify all intermediate data elements that use the target data element for the end user data element is the final user. For example, a user may wish to identify all data elements used by a program that access a target data element.
Referring again to FIG. 2, following identification of the target data element and selection of parameters by the user, processing engine 120 may be configured to search a data element database to identify direct users of the target data element in a step 220. The identification of direct users may be accomplished through text searching of code, text search of program logs, object types, name pattern, name, description, etc. The direct data elements may be stored in linked list of data elements.
Following identification of the direct data elements 320, processing engine may be configured to identify direct users of the data elements 320, to create a linked list of data elements 330 in a step 230. In generating the listing of indirect users, processing engine 120 may be configured to iteratively implement step 210, treating each data element in the output of step 210 as the target data element and identifying all of each direct target elements direct users. Processing engine 120 may be configured for more or less refinement in identifying indirect users. For example, a less refined identification scheme identifies all direct users of the data elements in the listing formed in step 210 (i.e. the direct users of the direct usage data elements 310), while a more refined identification scheme includes identifying how each of the data elements in the listing formed in step 210 is used and whether this usage involves the target data element 310. For example, a computer program (indirect usage data element) may access a database (direct usage data element) that has a field linked to the target data element. This computer program would always be identified as a indirect usage data element using the less refined approach, but may not be identified as such if the computer program only utilizes a portion of the database that does not include the target data element using the more refined identification scheme. Processing engine 120 may be configured to generate a linked list of the indirect data element.
Step 230 may be iteratively repeated until a stop condition is reached. Stop conditions can include a lack of parent elements, reaching the query depth level entered by the user, detection of an infinite loop, etc. A determination is made in a step 235 whether additional elements exist. If so, step 230 is repeat, if not, the method conclude with a reporting step 240.
In step 240, the results of step 220 and 230 may be displayed to the user using user interface 125. Referring now to FIG. 4A, the results may be displayed in an interactive results display screen 400 in a tree structure 410 that is intuitively understandable to the user. Screen 400 may include a plurality of buttons 420 allowing the user to customize how the results are displayed. Exemplary buttons 420 may include buttons to expand or collapse the tree structure to display more or less detail, a search button allowing a user to search for a particular data element, field, etc., a filter button to allow the user to select a subset of the data elements shown in tree structure 410, etc. The buttons may be configurable by the user depending on desired functionality. The available buttons may also vary based on whether the buttons are applicable to the current display.
The tree structure 410 may display all data element types. Each data element displayed in tree structure 410 may be a link to the actual objects allowing the user to navigate directly to them.
The tree structure shown in results display 400 may be configured to offer a wide range of functionality, for example, clicking on the “Expand All” button on display 400 may cause the display to reconfigure to display an expanded version of display 440, as shown in FIG. 4A. Searching on a search result of “EXPRESSION_A” with search configuration set such that rules are excluded may result in a display screen 450, as shown in FIG. 4B. Searching on a search result of “EXPRESSION_A” with search configuration set such that only rules are included may result in a display screen 460, as shown in FIG. 4C.
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.

## Claims

1. A system for identifying usage of a target data element within a data element structure, the system comprising:
a usage processing engine configured to identify a first plurality of usage data elements and a second plurality of usage data elements associated with the target data element within the data element structure, wherein identifying the first plurality of usage data elements includes identifying usage data elements that directly use the target data element within the data element structure, and wherein identifying the second plurality of usage data elements includes identifying usage data elements that indirectly use the target data element within the data element structure; and
a user interface configured to display the identified first plurality of usage data elements and the second plurality of usage data elements associated with the target data element in a hierarchical structure.

2. The system of claim 1, wherein the user interface is configured to allow a user to enter at least one query input parameter allowing the user to customize a usage query being processed by the usage processing engine.

3. The system of claim 2, wherein the at least one query input parameter includes a data element type parameter, wherein the data element type parameter is associated with a data element type.

4. The system of claim 1, wherein identifying the second plurality of usage data elements includes identifying all direct usage data elements for direct usage data elements associated with the target data element.

5. The system of claim 1, wherein identifying the second plurality of usage data elements includes identifying direct usage data elements for direct usage data elements associated with the target data element that would be affected by a change in the target data element.

6. The system of claim 1, wherein the first plurality of usage data elements and the second plurality of usage data elements displayed in the user interface include links allowing the user to access and manipulate the usage data elements.

7. The system of claim 1, wherein identifying the first plurality of usage data elements and the second plurality of usage data elements associated with the target data element includes identifying only those elements associated with a single particular indirect usage data element.

8. A method for identifying usage of a target data element within a data element structure, the method comprising:
receiving, from a user interface, a target data element identifier;
identifying a first plurality of usage data elements associated with the target data element within the data element structure, wherein identifying the first plurality of usage data elements includes identifying usage data elements that directly use the target data element within the data element structure;
identifying, using a usage processing engine, a second plurality of usage data elements associated with the target data element within the data element structures, wherein identifying the second plurality of usage data elements includes identifying usage data elements that indirectly use the target data element within the data element structure; and
displaying in the user interface the identified first plurality of usage data elements and the second plurality of usage data elements associated with the target element in a hierarchical structure.

9. The method of claim 8, wherein the user interface is configured to allow a user to enter at least one query input parameter allowing the user to customize a usage query being processed by the usage processing engine.

10. The method of claim 9, wherein the at least one query input parameter includes a data element type parameter, wherein the data element type parameter is associated with a data element type.

11. The method of claim 8, wherein identifying the second plurality of usage data elements includes identifying all direct usage data elements for direct usage data elements associated with the target data element.

12. The method of claim 8, wherein identifying the second plurality of usage data elements includes identifying direct usage data elements for direct usage data elements associated with the target data element that would be affect by to a change in the target data element.

13. The method of claim 8, wherein displaying the first plurality of usage data elements and the second plurality of usage data elements includes providing links allowing the user to access and manipulate the usage data elements.

14. The method of claim 8, wherein identifying the first plurality of usage data elements and the second plurality of usage data elements associated with the target data element includes identifying only those elements associated with a single particular indirect usage data element.

15. A system for identifying usage of a target data element, within a data element structure, comprising:
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 one or more software elements within a software workbench;
a usage processing engine configured to identify a first plurality of usage data elements and a second plurality of usage data elements associated with the target data element within the data element structure, wherein identifying the first plurality of usage data elements includes identifying usage data elements that directly use the target data element within the data element structure, and wherein identifying the second plurality of usage data elements includes identifying usage data elements that indirectly use the target data element within the data element structure; and
a user interface configured to display the identified first plurality of usage data elements and the second plurality of usage data elements associated with the target element in a hierarchical structure.

16. The system of claim 15, wherein the user interface is configured to allow a user to enter at least one query input parameter allowing the user to customize a usage query being processed by the usage processing engine.

17. The system of claim 16, wherein the at least one query input parameter includes a data element type parameter, wherein the data element type parameter is associated with a data element type.

18. The system of claim 15, wherein identifying the first plurality of usage data elements and the second plurality of usage data elements includes identifying all direct usage data elements for direct usage data elements associated with the target data element.

19. The system of claim 15, wherein identifying the first plurality of usage data elements and the second plurality of usage data elements includes identifying direct usage data elements for direct usage data elements associated with the target data element that would be affected by a change in the target data element.

20. The system of claim 15, wherein the first plurality of usage data elements and the second plurality of usage data elements displayed in the user interface include links allowing the user to access and manipulate the usage data elements.

21. The system of claim 15, wherein identifying the first plurality of usage data elements and the second plurality of usage data elements associated with the target data element includes identifying only those elements associated with a single particular indirect usage data element.

22. The system of claim 1, wherein each data element in the data element structure represents an article for sale in a retail environment.

23. The system of claim 8, wherein each data element in the data element structure represents an article for sale in a retail environment.

24. The system of claim 2, wherein at least one query input parameter includes a query depth parameter, wherein the query depth parameter represents an indication of a number of data elements that indirectly use the target data element.

25. The system of claim 9, wherein at least one query input parameter includes a query depth parameter, wherein the query depth parameter represents an indication of a number of data elements that indirectly use the target data element.

26. The system of claim 16, wherein at least one query input parameter includes a query depth parameter, wherein the query depth parameter represents an indication of a number of data elements that indirectly use the target data element.