Service oriented architecture (SOA) may provide various application logics in services with a uniformly defined interface and making these services publicly available via discovery mechanisms. The architecture may provide access to various services through an interface designed by an application developer. SOA applications may send messages as the basic unit of communication. SOA applications may be a composite of various integrated services, that can be individually modified without affecting the performance of other services. Since SOA may be structured to be platform independent, SOA implemented architecture allows for greater interoperability between different platforms. In SOA applications, as in other architecture, there is often a need to provide value help functionality that provides help to users entering values in a graphical user interface.
A computer-implemented method providing value help user interface for an underlying application where a request for field names associated with at least one value help backend system is sent by a server. The server may receive the field names from the backend system and display the field names in a user interface and provide filter criteria for each field for the user. The user may enter the search and filter criteria and the user interface may be configured to receive the filter criteria from the user. The search request may be sent to a value help service. The value help service may prompt the back end system to run a search and in turn receive results from the back end system that includes data and metadata. The metadata may describe the format of the search results. The data may be passed according to the metadata and a search results may be generated for the user. The user may make a selection from the search results and the selected data my be delivered to an underlying application.
a is a screen display that may be shown to a user when the user requests value help.
b is a screen display that may be shown to the user when the user enters search and filter criteria for at lease one field.
Referring to
The client computer system 110 may include, among other systems, a user interface logic 112, central processing unit (CPU) 114, memory 116, application logic 118, data storage 120 and a network interface logic 122. The client computer system 110 may include a computing system, for example, comprising one or more networked computers that are programmed to perform the various operations described herein. These functions include generating a user interface, and/or sending search criteria to the enterprise computer system 130 by using the network interface logic 122. These operations may further include, processing the response received from the enterprise computer system 130 and displaying the values for the user or updating the data storage 120. The user interface logic 112 (e.g., a web browser, an application program, etc.) may be configured to receive user interface information from the enterprise computer system 130. The user interface logic 112 may be configured to present user interfaces (e.g., screen displays) based on the information received from the enterprise computer system 130 which includes information received from a value help user interface logic 140. The user interface logic 112 may receive input from the user (e.g., in the form of a mouse and/or a keyboard) and send the received information to value help user interface logic 140 as search criteria. In another embodiment, other electronically interactive devices may be utilized. The CPU 114 may be used to process and/or compute instructions and manipulate data. The CPU 114 may be formed using multiple processor or a single processor. The memory 116 and data storage 120 may be used primarily to store data for CPU 114.
Network interface logic 122 may facilitate communication between the enterprise computer system 130, the first network 124a and the back end systems 150a and 150b. The network interface logic 122 permits the client computer system 110 and enterprise computer system 130 to connect to each other and/or other computer systems. Network interface logic 122 may also comprise other logic that may be configured to provide an interface for other types of devices, e.g., if the client computer system is another type of device such as a cell phone, smart phone, mobile e-mail device, other server-based computing device, and so on.
In an example embodiment, the enterprise computer system 130, back end systems 150a and 150b, may be provided by a software company. In another embodiment, the enterprise computer system 130 and the client computer system 110 may be provided by an entity that uses software provided by a software company. Likewise, other combinations are also possible.
In an example embodiment, the enterprise computer system 130 may include a central processing unit (CPU) 132, memory 134, network interface logic 136, data storage 139 and value help user interface logic 140. Such logics may be implemented in a machine (e.g., one or more servers and other computers) comprising machine-readable storage media (i.e. cache, memory, flash drive or internal or external hard drive or in a cloud computing environment) having instructions stored therein which are executed by the machine to perform the operations described herein. The enterprise computing system 130 may be an implementation of a service oriented architecture comprising various interoperable services that each perform distinct functions.
The value help user interface logic 140 may include user interface creation logic 142, generic value help search logic 144, raw data parser 146 and dynamic table generation logic 148. Each of the above systems, may be implemented on the enterprise computer system 130 or one or more of the above systems may be partially or in whole implemented on the client computer system 110 or other computer systems.
The value help user interface logic 140 provides an output to the user to provide access to the value help source searches 152a, 160a, and 160b. Value help may aid the user in selecting appropriate values when completing the fields or objects provided by application logic 118. For example, if the user does not know what the appropriate value for a particular field may be, the user may click on a value help button in the application. In response, the value help user interface logic 140 may display various user interfaces in order to help the user select the appropriate value. For example, the user interfaces may provide a search filter and receive user selected search and filter criteria. The value help user interface logic 140 may also communicate with remote backend systems 150a and 150b and receive structured data from the remote backend system 150a and 150b in order to allow the user of the application logic 118 to select the appropriate value.
The value help user interface logic 140 may allow a user to access pre-existing (e.g. legacy) search tools of the back end systems 150a and 150b via the user interface created by the user interface creation logic 142. For example, an application developer may wish to provide a value help search for a user relating to various fields in a form or program code. The value help user interface logic 140 may allow the developer to utilize search tools that preexist in the back end systems 150a and 150b. The value help user interface logic 140 may be one of the services in the service oriented architecture implemented by the enterprise computing system 130. Multiple instances of the value help user interface logic 140 may be initialized in the enterprise computer system 130 using the application logic 118 from the client computer system 110, as needed.
In order to use a pre-existing searches in the back end systems 150a and 150b, the developer of the application logic 118 may know the name of the pre-existing value help search and/or the specific search help logic 152a, 160a and 160b implemented in the back end systems 150a and 150b, respectively. In one example, a first application may use all value help from backend system 150a and a second application may use all value help from backend system 150b. In this example, the registration table may include a column that identifies the back end system by a backend identification number. In yet anther example embodiment, a first application may use some value helps from backend system 150a (e.g. business partner names) and some value help from backend system 150b (e.g. geographical data). The backend identification column in the registration table would help implement this functionality as well. In a third example, a first application may use the values from one value help (e.g. business partner) from backend system 150a and from backend system 150b and then a merged value help is shown by the value help application. In this third example, the data from back end system 150a and 150b may be shown as a single value help user interface. Such information may be stored in a registration table contained in the application logic 118. The registration table may be responsible for the communication between the application logic 118 and the user interface creation logic 142 of the value help user interface logic 140. The registration table may be used to store all relevant information about the registered application data and the assigned value help information. An example of such a registration table is shown below:
In other embodiments, in order to populate the registration table, the developer of the generic help search interface 118 may request the enterprise computer system 130 to perform a search in various backend systems and determine the name of the pre-existing value help search from the back end systems 150a and 150b.
The user interface creation logic 142 may generate a request for a particular field associated with a specific value help logic. For example, as shown above for the application field “EmployeeName” the value help name is “PREMK” and the particular field associated with the value help “PREMK” is “ENAME.” As another example, the user interface creation logic 142 may produce a pull down or complex popup menu for the user of the application logic 118. In case of the pull down menu, the user may be provided with all of the available choices. In yet another example, the user interface creation logic 142 may generate a complex popup window with filter criteria or search options. The interface creation logic 142 may also generate customized options for showing key-value pairs in a dropdown menu instead just providing the values to choose. The interface creation logic 142 may be configured by the developer of the application logic 118 to use one value help search for one user interface field.
The interface creation logic 142 may provide a customized input according to the system being configured to have users with more privileges and other users with less privileges. In another embodiment, the user interface creation logic 142 may be configured to cause multiple user interface fields to receive input from one value help when each user interface field uses the same value help search. Essentially, this allows the user to make one selection and populate the other related fields. The user interface creation logic 142 may also provide hierarchical or multi-level value helps. The user interface creation logic 142 may also provide a pre-filtering option in the application logic 118. Pre-filtering option may show the user a filtered selection of values for one value help (e.g., when a country is selected, only regions inside that country are shown in the regions field). The user interface creation logic 142 may also assign one user interface field to multiple value help, such that the user interface logic 142 allows the user to select one of the value helps when the user requests the value help. Thus, there may be more than one value help for one field.
After receiving the name of the search to run, and the search criteria, the generic value help search logic 144 may process the search and the search criteria provided by the user and send it to the appropriate back end system. The search help logic 152a, 160a, 160b (e.g., legacy search tools) of the back end systems need not be configured as services in the service oriented architecture implemented by the enterprise computing system 130. The generic value help search logic 144 provides a SOA interface to the search help logic 152a, 160a, 160b for other services and components of the enterprise computing system 130. The search help logic 152a, 160a, 160b may perform the search, generate metadata and data which may be sent to the enterprise computer system 130 for further processing, if necessary, or the results may be displayed on the user's screen.
The raw data parser 146 may receive search results data and metadata. The metadata is data that describes the structure of the search results data. The raw data parser 146 may correlate the columns of the metadata that are informative regarding position of a particular field, the number of characters in the field, the offset of the field to form a results output (i.e., results table). Portions of data receive may be a string of binary, hexadecimal, or alpha numeric characters. The data may be parsed and placed in a displayable format (i.e., results table) by the raw data parser 146 to assemble a table as shown in
Once the data has been parsed by the raw data parser 146 the data may be forwarded to the dynamic table generation logic 148, which creates the results table using the data format received from the parser. The dynamic table generation logic 148 may create a results table that may be filtered further according to the user input. For example, any field that is displayed in the results table may be sorted alphabetically or numerically upon receiving appropriate user input. The dynamic results table may be generated from the parsed results table provided by the data parser 146.
Also shown in
The back end systems 150a and 150b include a CPU 154a and 154b. These CPUs may be a single or plurality of networked processors. Similarly, the back end systems 150a and 150b include memory 156a and 156b, respectively. As described above, the structured data 158a and 158b can be queried by the enterprise computer system 130. Upon receiving a query or search request, the back end systems 150a and 150b may return among other things, a table with the metadata for the selection screen to permit further search criteria to be specified (see
The generic value help search logic 148 provides a generic interface that need not be modified for each value help button even though each button may trigger accessing of different specific backend search tools 152a, 160a, 160b. Moreover, the generic value help search logic 148 uses the pre-existing back end system and searches, which allows the generic value help search to leverage previous back end system solutions. In the architecture shown in
The user interface creation logic 142 provides a generic tool for dynamically creating value help user interfaces. The developer of the underlying application may, for example, write a single line of code that provides the search help name and the field being searched in the value help. The multi-level hierarchical user interface is provided by the value help user interface logic 140. Also provided is the raw data parser 146 and the dynamic table generation logic 148, thus the developer of the front end user interface does not have to create a new user interface for each value help call.
Referring to
Referring now to
As shown in
Referring to
Referring to
Referring to
The embodiments of the present invention have been described with reference to drawings. The drawings illustrate certain details of specific embodiments that implement the systems and methods and programs of the present invention. However, describing the invention with drawings should not be construed as imposing on the invention any limitations that may be present in the drawings. The present invention contemplates methods, systems and program products on any machine-readable media for accomplishing its operations. The embodiments of the present invention may be implemented using an existing computer processor, or by a special purpose computer processor incorporated for this or another purpose or by a hardwired system.
As noted above, embodiments within the scope of the present invention include program products or logics comprising machine-readable media for carrying or having machine-executable instructions or data structures stored thereon. Such machine-readable media may be any available media that may be accessed by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media may 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 may be used to carry or store desired program code in the form of machine-executable instructions or data structures and which may be accessed by a general purpose or special purpose computer or other machine with a processor. Thus, any such a connection is properly termed a machine-readable medium. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machines to perform a certain function or group of functions.
Embodiments of the present invention have been described in the general context of method steps which may be implemented in one embodiment by a program product including machine-executable instructions, such as program code, for example in the form of program modules executed by machines in networked environments. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Machine-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 represent examples of corresponding acts for implementing the functions described in such steps.
As previously indicated, embodiments of the present invention may be practiced in a networked environment using logical connections to one or more remote computers having processors. Those skilled in the art will appreciate that such network computing environments may encompass many types of computers, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and so on. Embodiments of 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 computers in the form of computers, including a processing unit, a system memory or database, and a system bus that couples various system components including the system memory to the processing unit. The database or system memory may include read only memory (ROM) and random access memory (RAM). The database 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 a removable optical disk such as a CD ROM or other optical media. The drives and their associated machine-readable media provide nonvolatile storage of machine-executable instructions, data structures, program modules and other data for the computer. It should also be noted that the word “terminal” as used herein is intended to encompass computer input and output devices. User interfaces, as described herein may include a computer with monitor, keyboard, a keypad, a mouse, joystick or other input devices performing a similar function.
It should be noted that although the diagrams herein may show a specific order and composition of method steps, it is understood that the order of these steps may differ from what is depicted. For example, two or more steps may be performed concurrently or with partial concurrence. Also, some method steps that are performed as discrete steps may be combined, steps being performed as a combined step may be separated into discrete steps, the sequence of certain processes may be reversed or otherwise varied, and the nature or number of discrete processes may be altered or varied. The order or sequence of any element or apparatus may be varied or substituted according to alternative embodiments. Accordingly, all such modifications are intended to be included within the scope of the present invention. Such variations will depend on the software and hardware systems chosen and on designer choice. It is understood that all such variations are within the scope of the invention. Likewise, 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.
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. Other substitutions, modifications, changes and omissions may be made in the design, operating conditions and arrangement of the embodiments without departing from the scope of the present invention.
Throughout the specification, numerous advantages of the exemplary embodiments have been identified. It will be understood of course that it is possible to employ the teachings herein without necessarily achieving the same advantages. Additionally, although many features have been described in the context of a particular data processing unit, it will be appreciated that such features could also be implemented in the context of other hardware configurations.
While the exemplary embodiments illustrated in the figures and described above are presently preferred, it should be understood that these embodiments are offered by way of example only. Other embodiments may include, for example, structures with different data mapping or different data. The invention is not limited to a particular embodiment, but extends to various modifications, combinations, and permutations that nevertheless fall within the scope and spirit of the appended claims.