The invention relates to computer user interfaces. More specifically, the invention relates to database-centric methods for creating and operating customized user interfaces.
Commercially-available databases are often designed to store arbitrary types and quantities of data, so that a single, flexible database engine can be used in many different applications. However, even within a relatively narrow field of endeavor (e.g. supply chain management or medical practice accounting), two different database users may have different requirements for effective integration of the database into their business operations. Such requirements are traditionally satisfied through database customization, where an engineer configures database operational parameters and writes software to adapt the database's capabilities to the business's needs.
Database customization can be expensive and time-consuming, and sometimes requires special training and experience to perform correctly. Therefore, some businesses must make do with a generic configuration and functionality, or with a system that has become outdated with respect to the business's present needs. Database systems and methods that can be configured and customized more flexibly (and by users with less special training) may be valuable to the businesses that use them.
Embodiments of the invention are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and such references mean “at least one.”
Embodiments of the invention store information to describe a user interface for a database within the database itself. Some embodiments are “recursive” in the sense that a user interface for manipulating the user-interface information in the database can itself be described by information in the database. In some embodiments, a first user interface incorporating several elements (as described below) can be incorporated as an element within a portion of a second user interface. Thus, complex interfaces can be built up of a hierarchy of interface modules.
A user interface may display relevant information and/or provide controls to help a user do his job. In this respect, it is like the instruments and controls in the cockpit of an airplane. The term “cockpit” will be used herein to denote a grouping of information displays and controls that are useful to accomplish or monitor a task. Some cockpits may display information only, while others may offer controls only (without displaying feedback information).
The sample user interface shown here is presented on a display screen 100, which may be connected directly or via a distributed data network to a computing system (not shown). The screen is divided into several areas 110, 120, 130 called “panels” or “panes.” Panes may be tiled (non-overlapping), as shown by panes 110, 120 and 130; or may occlude one another in a simulated stacking arrangement. Embodiments of the invention permit a user to configure pane number, size, and layout flexibly. Panes can be subdivided into two or more horizontal or vertical sub-panes, and sub-panes can similarly be subdivided. “Pop-up” window 140 is an example of a stacked window: it obscures some of the material displayed in tiled panes 120 and 130. Pop-up windows are often used to present information that the user must examine and acknowledge before the system can continue its operations. A “modal” window may prevent the user from continuing until he provides required information or approves an action. Non-modal windows may also be supported, and may useful to provide notes, reminders, or other auxiliary information without interrupting system operations.
A user can interact with the cockpit elements using some or all of a keyboard, mouse, pressure-sensitive tablet, voice recognition system, or other input devices.
Next a second parameter (or set of parameters) is retrieved from the database (240). The second parameter(s) describe a data source, cockpit control, or other element to be displayed within an area of the screen. A data source may be, for example, a value or table in the database, an external source such as a web service, or a static image or text block. Appropriate information is retrieved from the data source and the area of the screen is populated with this information (250).
If the screen configuration contains multiple areas to be populated with information or controls, the previous operations are repeated as necessary (260). Finally, the configured, populated screen is displayed to the user (270).
It is appreciated that, in the foregoing method, the data source for a portion of the screen could refer to the parameter(s) that describe a screen configuration. Thus, as mentioned above, an embodiment of the invention can be used to produce a cockpit for examining and controlling another cockpit. In other words, an embodiment can implement a first cockpit to be used to create or modify a second cockpit. This mode of operation is outlined in the flow chart of
It is also appreciated that the data source, cockpit control, or other element to be displayed within an area of the screen could itself be a cockpit, with its own screen configuration to divide the screen area allocated to it, and its own set of data sources, cockpit controls or other elements to be displayed. There is no theoretical limit to the level of such nesting, although the repeated subdivision of a finite screen area might quickly render a cockpit displayed in a subscreen unusably small. Some embodiments may address this issue by implementing a “zoom” function to permit the user to expand a subscreen to fill the entire screen. A complementary function would permit the expanded subscreen to be returned to its previous size, restoring any other previously-displayed subscreens. Note that XML is a hierarchical markup language, so it may be well-suited to representing nested cockpit hierarchies.
Some embodiments of the invention implement the screen configuration and data source population directly, while others may build on legacy database customization infrastructure as indicated in
Element 530 is a button that can be added to a cockpit to accept input from a user. Other common computer user-interface elements such as scroll bar 540 and menu 550 can also be used.
Element 560 is a simple database table browser that can produce a tabular display of data stored in the database (and, in some embodiments, accept changes to the data or new records).
Although most of the elements described above are relatively simple, cockpits may also contain large, sophisticated objects. Element 570 is a Hypertext Markup Language (“HTML”) browser that can retrieve text and graphics from a network data source and render them within a display area 572. An HTML browser component may have its own user interface controls such as buttons 575 and Uniform Resource Locator (“URL”) entry field 578. Some embodiments of the invention permit the cockpit designer to adjust parameters controlling the display of an HTML browser component 570, so that buttons 575 and/or URL entry field 578 are not displayed.
In addition, as mentioned several times, a cockpit can contain other cockpits. Some embodiments may provide features to facilitate this. For example, a generic “analog control” cockpit containing a meter icon 520 and a numeric entry field (not shown) could be added to a cockpit and configured to monitor and control a particular numeric database field. The same generic analog control cockpit could be part of several different cockpits, or multiple copies of the analog control could be included in the various subscreens of a single cockpit.
An embodiment of the invention may be a machine-readable medium having stored thereon instructions which cause a programmable processor to perform operations as described above. In other embodiments, the operations might be performed by specific hardware components that contain hardwired logic. Those operations might alternatively be performed by any combination of programmed computer components and custom hardware components.
A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), including but not limited to Compact Disc Read-Only Memory (CD-ROM), Read-Only Memory (ROM), Random Access Memory (RAM), and Erasable Programmable Read-Only Memory (EPROM).
The applications of the present invention have been described largely by reference to specific examples and in terms of particular allocations of functionality to certain hardware and/or software components. However, those of skill in the art will recognize that database cockpit design and operation can also be achieved by software and hardware that distribute the functions of embodiments of this invention differently than herein described. Such variations and implementations are understood to be captured according to the following claims.