This disclosure relates generally to data processing and, more particularly, to methods, systems, and software utilizing multiple values for one or more search criteria to search one or more data repositories, separately or simultaneously, and identify any data corresponding to the defined search.
Utilizing a single search criteria value or term to identify related data contained in a data repository, such as a database, is known. However, such methods are ineffective and/or inefficient to search and identify a plurality of data corresponding to different search criteria values or a range of search criteria values in a single search operation. Consequently, a new, different search must be run for each search criteria value of a collection of search criteria values. Performing a search for each search criteria value is time consuming, costly due to the time required to input and process each search separately, and requires additional work once all of the individual searches have been conducted, such as to consolidate the results of the individual search criteria.
A method and system to utilize one or more search terms corresponding to a search criteria is operable to search one or more data repositories of one or more modules or applications that may be unrelated. According to one example implementation, one or more search strings may be input in a search screen or interface by a user. Each search string may correspond to a separate search criteria and may include one or more search terms. Software may define a search table with the search terms. A multiple value screen may be selectable from the search screen. Software may populate the one or more fields provided on the multiple search screen with the search terms of the search string. A user may modify the search terms, such as by adding to, deleting, or otherwise changing the search terms in the multiple value screen. The search screen may be selectable from the multiple value screen, and the software updates the search table and the search string with any modification, deletion, or addition made to the search terms.
The method and system of the present disclosure may be generic and, therefore, applicable to search data repositories of different modules simultaneously or at different times. According to one or more implementations, the multiple value search techniques of the present disclosure can be generic such that it is operable with multiple, potentially disparate, modules. Thus, the multiple value search method and system is operable to search data of multiple modules simultaneously or at different times with a defined search having one or more multiple value search criteria. For example, the present system is able to search one or more data repositories of separate modules with all of the defined search strings of a defined search or utilize only a portion of the search strings to search one module and only a portion of the search strings to search a separate module. Alternately, all of the search strings may be utilized in searching the data of one or more modules while only a portion of the search strings may be utilized in searching the data of a separate module or modules. The output of such a search may be consolidated into a single search report or may be classified by the data type or module from which the data was retrieved. However, the search report may be organized in any fashion.
The system and method of the present disclosure may also include an analysis functionality to aid the user in identifying an unrecognized or rejected search term. When an unrecognized term is encountered, the analysis functionality may determine a reason for an error or null set and present a message to the user identifying the problem. Such a message aids the user in quickly determining the reasons for the error. Therefore, according to one implementation, the analysis functionality is operable to analyze an input search term, compare the input search term with an expected search term type, and provide information to the user as to why the inputted term and the expected term type do not correspond. Moreover, the analysis functionality may be dynamic. That is, the analysis functionality may analyze the search terms of a particular criteria field as the terms are being inputted by a user to determine whether the one or more search terms are compatible with the data type corresponding to the search criteria. The analysis functionality may also be customizable or otherwise capable of automatically determining the type of expected input for a particular search criteria. Further, the analysis functionality may also inform a user of which search criteria is utilized to search the data of a particular module. As a result, the analysis functionality may display or otherwise identify to the user which search criteria was used to search the data repositories of a particular module.
The details of these and other aspects and embodiments of the disclosure are set forth in the accompanying drawings and the description below. For example, each of the foregoing example methods and techniques, as well as others disclosed, may be computer implementable. Moreover, some or all of these aspects may be further included in respective systems and software for utilizing one or more search terms corresponding to search criteria to search one or more data repositories, either separately or simultaneously. Certain features, objects, and advantages of the various embodiments will be apparent from the description, drawings, and the claims.
The disclosure provides systems and methods for utilizing multiple values for one or more search criteria to search one or more data repositories and identify any data corresponding to the defined search.
System 100 may be a distributed client/server system that spans one or more networks, such as network 112. In such implementations, data may be communicated or stored in an encrypted format using any standard or proprietary encryption algorithm. But system 100 may be in a dedicated enterprise environment—across a local area network or subnet—or any other suitable environment without departing from the scope of this disclosure. The system 100 may include or be communicably coupled with a server 102, one or more clients 104, and network 112.
Server 102 comprises an electronic computing device operable to receive, transmit, process, and store data associated with system 100. Generally,
As illustrated (but not required), server 102 is communicably coupled with a relatively remote repository 135 over a portion of network 112. Repository 135 is any intra-enterprise, inter-enterprise, regional, nationwide, or substantially national electronic storage facility, data processing center, or archive that allows for one or a plurality of registration processors to dynamically store data 116, which may include any data related to, used, created, stored by, or otherwise associated with an application. Repository 135 may be searchable utilizing the systems and methods of the present disclosure. Repository 135 may be a central database communicably coupled with one or more servers 102 and clients 104 via a virtual private network (VPN), SSH (Secure Shell) tunnel, or other secure network connection. Repository 135 may be physically or logically located at any appropriate location so long as the repository 135 remains operable to store information and/or data associated with system 100 and communicate such information and/or data to server 102 or at least a subset of plurality of clients 104.
As a possible supplement to or replacement of repository 135, illustrated server 102 may include local memory 120. Memory 120 may include any memory or database module and may take the form of volatile or non-volatile memory including, without limitation, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, or any other suitable local or remote memory component. Illustrated memory 120 may include application data 140 for one or more applications, as well as data involving VPN applications or services, firewall policies, a security or access log, print or other reporting files, HTML files or templates, related or unrelated software applications or sub-systems, and others. Consequently, memory 120 may also be considered a repository of data, such as a local data repository from one or more applications.
Application data 140 may include data associated with one or more business applications or modules. This application data 140 may be organized into business objects or include global data types that span applications. For example, the application data 140 may include purchase order numbers, invoice numbers or identifiers, invoice names, order status identifiers, product descriptions, product names or identifiers, vendor product numbers or identifiers, product categories, vendor names or identifiers, requesting party names or identifiers, product recipient names or identifiers, delivery locations, account numbers, account assignment categories, account assignment values, invoice recipient names or identifiers, invoicing parties, gross invoice values, gross invoice amounts, and invoice dates. In some embodiments, the application data 140 (or pointers thereto) may be stored in one or more tables in a relational database described in terms of SQL statements or scripts. In another embodiment, the application data 140 may be formatted, stored, or defined as various data structures in text files, extensible Markup Language (XML) documents, Virtual Storage Access Method (VSAM) files, flat files, Btrieve files, comma-separated-value (CSV) files, internal variables, or one or more libraries. In short, the application data 140 may comprise one table or file or a plurality of tables or files stored on one computer or across a plurality of computers in any appropriate format. Indeed, some or all of the application data 140 may be local or remote without departing from the scope of this disclosure and store any type of appropriate data. Moreover, the application data 140 may be bundled and/or transmitted in a different format, than it was stored in. In short, the application data 140 may be provided or otherwise stored in one or more repositories, such as the repository 135 or the memory 120. These repositories may be centrally located and may be associated with one or more business modules that may be unrelated.
Server 102 may also include processor 125. Processor 125 executes instructions and manipulates data to perform the operations of the server 102 and may be, for example, a central processing unit (CPU), a blade, an application specific integrated circuit (ASIC), or a field-programmable gate array (FPGA). Although
At a high, application 130 is any application, program, module, process, or other software that may utilize, change, delete, generate, or is otherwise associated with the data and/or information 140 and/or 116 that may be searchable according to the present disclosure. In certain cases, system 100 may implement a composite application 130, as described below in
More specifically, as illustrated in
Referring again to
Network 112 facilitates wireless or wireline communication between computer server 102 and any other local or remote computer, such as clients 104. Network 112 may be all or a portion of an enterprise or secured network. In another example, network 112 may be a VPN merely between server 102 and client 104 across wireline or wireless link. Such an example wireless link may be via 802.11a, 802.11b, 802.11g, 802.20, WiMax, and many others. While illustrated as a single or continuous network, network 112 may be logically divided into various sub-nets or virtual networks without departing from the scope of this disclosure, so long as at least a portion of network 112 may facilitate communications between server 102 and at least one client 104. For example, server 102 may be communicably coupled to repository 135 through one sub-net while communicably coupled to a particular client 104 through another. In other words, network 112 encompasses any internal or external network, networks, sub-network, or combination thereof operable to facilitate communications between various computing components in system 100. Network 112 may communicate, for example, Internet Protocol (IP) packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses. Network 112 may include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), all or a portion of the global computer network known as the Internet, and/or any other communication system or systems at one or more locations. In certain embodiments, network 112 may be a secure network accessible to users via certain local or remote clients 104.
Client 104 may be any computing device operable to connect or communicate with server 102 or network 112 using any communication link. At a high level, each client 104 includes or executes at least GUI 136 and comprises an electronic computing device operable to receive, transmit, process and store any appropriate data associated with system 100. It will be understood that there may be any number of clients 104 communicably coupled to server 102. Further, “client 104” and “user” may be used interchangeably as appropriate without departing from the scope of this disclosure. Moreover, for ease of illustration, each client 104 is described in terms of being used by one user. But this disclosure contemplates that many users may use one computer or that one user may use multiple computers. As used in this disclosure, client 104 is intended to encompass a personal computer, touch screen terminal, workstation, network computer, kiosk, wireless data port, smart phone, personal data assistant (PDA), one or more processors within these or other devices, or any other suitable processing device. For example, client 104 may be a PDA operable to wirelessly connect with an external or unsecured network. In another example, client 104 may comprise a laptop computer that includes an input device, such as a keypad, touch screen, mouse, or other device that can accept information, and an output device that conveys information associated with the operation of server 102 or clients 104, including digital data, visual information, or GUI 136. Both the input device and output device may include fixed or removable storage media such as a magnetic computer disk, CD-ROM, or other suitable media to both receive input from and provide output to users of clients 104 through the display, namely the client portion of GUIs or application interface 136.
GUI 136 comprises a graphical user interface operable to allow the user of client 104 to interface with at least a portion of system 100 for any suitable purpose, such as viewing application or other transaction data. Generally, GUI 136 provides the particular user with an efficient and user-friendly presentation of data provided by or communicated within system 100. GUI 136 may comprise a plurality of customizable frames or views having interactive fields, pull-down lists, and buttons operated by the user. GUI 136 may also present a plurality of portals or dashboards. For example, GUI 136 may display a secure webpage that allows users to input and define search parameters for one or more modules. It should be understood that the term graphical user interface may be used in the singular or in the plural to describe one or more graphical user interfaces and each of the displays of a particular graphical user interface. Indeed, reference to GUI 136 may indicate a reference to the front-end or a component of application 130, as well as the particular interface accessible via client 104, as appropriate, without departing from the scope of this disclosure. Therefore, GUI 136 contemplates any graphical user interface, such as a generic web browser or touch screen, that processes information in system 100 and efficiently presents the results to the user. Server 102 can accept data from client 104 via the web browser (e.g., Microsoft Internet Explorer or Netscape Navigator) and return the appropriate HTML or XML responses to the browser using network 112.
The GUI 136a (hereinafter referred to as “search screen”) may include a plurality of search criteria fields. A search string may be inputted into one or more of the search criteria fields to define a search to be conducted. A search string inputted for a particular search criteria field may include one or more search terms.
As illustrated, the search screen includes two types of search fields. Search strings entered into the first type of search field may be user-defined search strings, such as a series of alphanumeric characters, and may be entered using an input device, such as a keyboard. Examples of this type of search field include, among others, a Purchase Order Number field 20, an Invoice Number (Internal) field 30, Status field 40, Invoice Name field 50, Item Description field 60, Product field 70, Invoice Number (External) 80, Invoice Recipient field 90, and Gross Invoice Amount field 105. Examples of the second type of search field include, among others, a System Search field 110, a Timeframe field 120, and a Product Category field 130. Search strings for the second type of search field may be entered by selecting one or more values from a pull-down menu.
An arrow icon button 145 is provided adjacent to several of the search criteria fields. For example, Invoice Number (Internal) field 30, Product field 70, Invoice Number (External) 80, Invoice Recipient field 90, and Gross Invoice Amount field 105 include an arrow icon button 145 disposed adjacent thereto. The arrow icon button 145 designates search criteria fields for which multiple search values may be inputted. Although the search screen illustrates only some of the search criteria fields having the arrow icon button 145 and, therefore, capable of having multiple search values inputted therein, other implementations may include more or fewer search criteria fields capable of accepting search strings comprising multiple search values. The search string may include a single search value, a plurality of search values, and/or one or more ranges of search values. For example, the Invoice Number (Internal) field 30 includes a search string 150 including multiple search values. As shown, the search string 150 includes three parts-two search values and a ranges of values. The individual portions of the search string are separated by a designated or predetermined character. For example,
As shown in the illustrated example, the search string 150 is defined to return any and all entries contained in data repository, corresponding to the Invoice Number (Internal) field 30 represented by the number, “123,” a range of entries corresponding to 45 and 67, inclusive, and any entry beginning with the number “33.” The arrow icon button 145 may be selected with or without a search string being entered in the corresponding search criteria field.
Upon the arrow icon button 145 being selected or otherwise activated, a GUI 136b appears, as illustrated in
In the multiple values screen, the search string is divided up into its individual search terms, and the search terms are placed in separate fields provided on separate rows of the multiple values screen, for example. The multiple values screen allows a user to, among other things, clearly identify the different search terms included in a search string and input, modify, or delete one or more search values separately rather than within a single search string.
If a search string has previously been inputted into the corresponding search criteria field of the search screen, the multiple values screen is populated with the different search values or range of values. As shown in
An example search table 500 corresponding to the Invoice Number (Internal) search criteria shown in
For example, the search range of 45 to 67 may be changed to a range of 45 to 88. Also, the search term “33*” may be amended to be “55*,” and an additional search range may be defined, such as 22 to 30. Once these or any other changes are made, the user may select the Transfer button 240. The Transfer button 240 switches back to the search screen (GUI 136c), as shown in
Once the Transfer button 240 is selected, as explained above, any changes or additions made in the multiple values screen may be automatically reflected in the search screen. Therefore, as shown in
A search string may or may not be entered into a search criteria field of the search screen prior to selecting the arrow icon button 145 corresponding to the search criteria field. If a search string has not previously been inputted into a search criteria field of the search screen and the user selects the arrow icon button 145 corresponding to the particular search criteria field, the fields in the resulting multiple values screen will be empty. The user may then input one or more search values into corresponding fields. Referring to
Once the user has completely defined a search by inputting a search string into the desired search criteria field(s), the user may select the Start button 250 to begin the search and to retrieve the data satisfying the defined search criteria. During the search, the method and system may identify any and all data satisfying the defined search criteria for each value or values defined in the criteria search string(s). Although the search screen in
According to one or more implementations, the multiple value search method and system of the present disclosure is operable with multiple modules. Thus, the multiple value search method and system is able to search data of multiple modules simultaneously, for example, with a defined search having one or more multiple value search criteria. For example, the present system is able to search one or more data repositories of separate modules with all of the defined search strings of a defined search or utilize only a portion of the search strings to search one or more modules and only a portion of the search strings to search a separate module or modules. Alternately, all of the search strings may be utilized in searching the data of one or more modules while only a portion of the search strings may be utilized in searching the data of a separate module or modules. The output of such a search may be consolidated into a single search report or may be classified by the data type or module from which the data was retrieved. However, the multiple value search method and system of the present disclosure is not so limited, and the search report may be organized in any fashion.
In one implementation, the multiple value search method and system described above may be generic and operable with any number of different applications. Other implementations may include an analysis functionality to aid a user in identifying an unrecognized or rejected search value. For example, a business application, utilizing the method and system for searching described above, may include a data repository of invoice numbers of a predetermined length, such as eight characters in length, for example. However, a user may input a search value having more or less than eight characters, which may otherwise result in an error or the return of a null set, i.e., no corresponding data. In such a situation, the analysis functionality may determine a reason for the error or null set, for example, in the present scenario, by determining that the search string was of a length that did not correspond to the data to be searched. Consequently, the analysis functionality may inform the user of the problem, such as with a message indicating the length, in number of characters, of the data corresponding to the search criteria. Such a message may aid the user in quickly determining the reasons for an error. Therefore, the analysis functionality is operable to analyze an inputted search value, compare the inputted search value with an expected search value type, and provide information to the user as to why the inputted value and the expected value type do not correspond. Moreover, the analysis functionality may be dynamic. That is, the analysis functionality may analyze the search terms of a particular criteria field as the terms are being inputted by a user to determine whether the search terms(s) is/are compatible with the data corresponding to the search criteria.
In another example, an expected search value may be all letter characters, whereas the inputted search value may contain one or more numerical characters. Consequently, the analysis functionality may inform the user that the inputted search value is invalid because the value contains unexpected characters, i.e., the one or more numerical characters.
Because the method and system of searching utilizing multiple values for one or more search criteria may be applied to or incorporated with any number of applications, the analysis functionality may be customizable or may be automatically capable of determining the type of expected input for a given search criteria. Consequently, the method and system for searching described may be easily incorporated into numerous applications.
The analysis functionality may also inform a user of which search criteria is utilized to search the data of a particular module. For example, the method and system for searching, described herein, may be utilized to search different modules having different data types. Consequently, some search criteria of a defined search may only be applicable to the data of one or more modules while other search criteria may only be applicable to one or more other modules. As a result, the analysis functionality may display or otherwise identify to the user which search criteria was used with which modules.
The preceding flowcharts and accompanying description illustrate exemplary methods 700 and 800. System 100 contemplates using or implementing any suitable technique for performing these and other tasks. It will be understood that these methods are for illustration purposes only and that the described or similar techniques may be performed at any appropriate time, including concurrently, individually, or in combination. In addition, many of the steps in these flowcharts may take place simultaneously and/or in different orders than as shown. Moreover, system 100 may use methods with additional steps, fewer steps, and/or different steps, so long as the methods remain appropriate.
A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims.