The present invention relates to network-based user interfaces, and more particularly, to deployment of user interfaces within web pages over a network.
Generally, the phrase “user interface” (UI) refers to all elements provided in an information device with which a human being may interact. For example, a user interface may include physical elements such as a display screen, a keyboard, a mouse, a pen device, and the like. A user interface may also include, for example, graphical or textual objects displayed on the display screen, such as icons, buttons, menus, characters, the “desktop” of the operating system on a computer, and the like. Finally, the user interface may include, for example, the look and feel of how an application program or a Web site invites interaction from a user and how the application program or Web site responds to such user interaction. One of the primary goals of user interface design is to provide a host of functions to a user in a simple, intuitive form.
One way that such interfaces have been implemented is by using Standard Generalized Markup Language (SGML) or Hypertext Markup Language (HTML) in conjunction with available Internet web browsers. The user interface itself can be defined in extensible Markup Language (XML), which can be displayed by a web browser. However, maintaining a consistent web page interface across an entire enterprise has traditionally been difficult, particularly with respect to navigational elements, such as navigational links, buttons, menu bars, and the like.
For example, as a user advances through various layers of a web page or site, the navigational elements, in addition to the content of the page, are expected to change accordingly. Traditionally, such contextual navigational elements had to be coded into the HTML code of each page, a process that tended to be time consuming, error prone, and expensive in terms of employee time.
There is an on-going need for improvements in the delivery of contextual navigational elements within Internet and Intranet web sites. Moreover, there is a need for improvements in the consistency of that delivery across multiple services and servers within an enterprise. Embodiments of the present invention provide solutions to these and other problems, and offer other advantages over the prior art.
A system for generating a user interface for display over a network on a user device includes a skeleton file and one or more web servers. The skeleton file contains embedded tags and placeholders. The embedded tags define types of information and control elements. The placeholders define a layout of the user interface. The one or more web servers are adapted to populate the embedded tags with information and control elements based on interactions of a user.
Prior to describing the present invention in detail, one embodiment of an environment in which it can be used is described.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, telephony systems, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 110 through input devices such as a keyboard 162, a microphone 163, and a pointing device 161, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 190.
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110. The logical connections depicted in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
The network 206 can be a local area network, a wide area network, a public switched network (such as a telephone network), the Internet, or any other network type. In general, the network 206 is simply the communication medium by which the computer 202 and the one or more servers 204 interact.
In this embodiment, the web browser application 208 has been instantiated by a user, and the browser application 208 is accessing information from a number of data sources, including one or more web servers 210 (which in one illustrative embodiment can be implemented using Microsoft Exchange available from Microsoft Corporation of Redmond, Wash.), and a data warehouse 212 (which can illustratively be implemented using Structured Query Language (SQL)) with back end data 214 and document data 216. Data sources may include the Internet, a network-based e-mail server (such as a web-mail server), relational data in a server table of a relational database, and the like. Each application or service within an enterprise, for example, may have its own set of web servers 210, and preferably there is a centralized server 218 that provides (“serves”) the header and footer. Generally, any type of information that can be presented in the form of a browser or web page may be provided in a web-part such as the header or footer. A uniform resource locator (URL) is well-known type of basic information that can be considered a web-part.
Generally, information provided by the centralized server 218 is displayed by the browser application 208 in a browser window 220 on a display of the client device or computer 202. In this embodiment, the browser window 220 includes a title pane 222 and one or more tool bars 224. Generally, the title pane 222 provides three buttons 226 in its upper right-hand corner, which allow a user the option of minimizing (shrinking), maximizing (enlarging) or closing the browser window 220. The title pane 222, tool bar 224, including clickable buttons, and URL line 230 are conventional browser control features offered within an Internet browser application, though other control elements could be provided in the browser window 220 to offer browser specific functionality to the user.
The browser window 220 displays a web page having several navigational elements: a header 230, a footer 232, an application pane 234, a navigation (task) pane 236, and an optional navigation pane 238. Typically, the header 230 contains product branding, global user interface navigational elements that are required by the sales brand, and some local user interface branding and navigational elements that apply to the service in use. The footer 232 typically includes global navigational elements, which commonly include links such as “privacy statements”, “terms of use”, and links to various help topics. The application pane 234 refers to the main body of the page. Finally, the navigation (task) pane 236 contains context-based navigational features, which may change according to user interactions. Additionally, the optional navigation pane 238 could be provided below the header 230 to provide additional navigational elements.
Generally, the navigation pane 236, the header 230, the footer 232, and the second navigation pane 238 can be rendered, for example, by the centralized server 218 from a centrally stored document. Thus, the user interface can be defined and rendered from a single file, such that changes to the user interface need only be made in one place, to a single file, in order to effect a change immediately across all services and for all users. By rendering the navigational elements from a single file, the present invention provides a means for instantly updating the user interface for an entire enterprise with a consistent look and feel, while minimizing the number of pages requiring re-coding in order to effect the change.
Alternatively, each of the one or more web servers 210 renders web pages associated with a particular service. The web servers 210 can access the centralized server 218 to assemble navigational elements for the header 230, the footer 232, the application pane 234, and the navigation pane 236, as well as the optional navigation bar 238. In this manner, enterprise specific navigation elements can be derived from information on the centralized server 218, while service specific navigational elements can be derived from the one or more web servers 210 as needed.
Referring now to
The elements contained within the browser window 310 are rendered by a web (service) server 302 and served to the Internet browser, for example, of a client device over network 324. The network 324 can be any type of network, including but not limited to wireless (cellular, satellite, digital, and the like) or wired (local area, wide area, and the like). In one embodiment, the network 324 is the Internet.
A layout structure of a typical server page is stored in one or more (typically one) “skeleton” HTML or SGML documents 326 on, for example, the centralized server 306. Centralized server 306 may be a single server or one or more servers that, for example, mirror one another. For example, the one or more centralized servers 306 may be load balanced behind, for example, a domain name server (not shown). The skeleton file 326 is preferably stored on the one or more centralized servers 306 and downloaded to the web servers 302 (as needed or periodically) to be used as a user interface template for requested web services. When updating or downloading the skeleton file 326, web servers or application servers 302A-302N can refresh or download an updated skeleton file from any one of the one or more centralized servers 306.
Each of the one or more HTML/SGML documents (files) 326 contain one or more embedded tags 328 and other placeholders 330, which a rendering feature 332 of each web server 302 can populate with context-based navigational elements, depending on the service server 302 being accessed by the user. Embedded tags 328 refer to labels for use in markup language for identifying types of information, including information content, navigational elements (such as buttons, menu bars, clickable links, and the like), multimedia elements (such as pictures, sounds, video, and the like) and so on.
When a user accesses a service server (such as service server 302A) via the browser application, the browser application requests a URL (web page) associated with services supported by the particular service server 302A. The rendering feature 332 of the service server 302A captures the web page content coded in the requested URL that is required to populate the layout structure (e.g. embedded tags 328 and placeholders 330) of the skeleton HTML/SGML file 326. The rendering feature 332 then renders (populates) the embedded tags 328 and placeholders 330 of the file 326 and serves the populated document to the user's browser window 310.
The process of “populating” or “rendering” can involve assembling information from one or more locations. In one embodiment, the navigational elements, for example, of the service server 302A accessed by the user are rendered from a file 304A associated with the service server 302A. Navigational elements associated with the overall enterprise are rendered from files 308 accessible from the centralized server 306. Consequently, when a user accesses a web page associated with web server 302A, the server 302A calls rendering feature 332, which interprets the embedded tags 328 and placeholders 330 of the accessed page, and populates them with locally stored navigation code from data 304A and enterprise navigation code from data 308, as needed.
In one embodiment, server code 340 stored on each of the one or more web (service) servers 302A-302N calls the centralized server 306 periodically (such as once per day) to download the skeleton document(s) or file(s) 326, if there are any changes. In another embodiment, an administrative feature 338 is provided on one or more of the centralized servers 306 for triggering the server code 340 on each of the one or more web servers 302 to download (update) their local version of the skeleton file 326. This administrative feature 338 can be a simple administrative program which an administrator of the site can use to perform update functions. Alternatively, the centralized server 306 prompts subscriber servers (such as web server 302A) to perform the download whenever the skeleton file 326 is updated. The server code 340 stored on the web server 302A can then call the centralized web server 306, and update the skeleton file 326. In another embodiment, the skeleton file 326 can be accessed via the network 324, as needed. Since the skeleton file 326 contains layout information for the page, including embedded tags 328, placeholders 330, and navigational code, an entire enterprise can share a consistent look and feel, both in terms of layout and in terms of navigational elements, without having to update web pages on each web server 302. In this manner, changes to web site can be pushed to all associated services and to all of the enterprises web pages simply by altering the code of the skeleton file 326 and uploading the altered skeleton file 326 to the centralized server 306.
The XML file and the server code allow the web server to be updated readily, across an entire enterprise, with minimal re-coding. Additionally, the change can be implemented enterprise wide instantaneously (as soon as the server has downloaded the updated files), particularly if the web servers are configured to access the skeleton file each time a web service or web page is requested (or if the skeleton file can be pushed onto each of the web servers via an administrative feature). Since enterprise navigational elements can be coded once in the skeleton file and served by the centralized server, overall navigational elements are consistent for all web services offered by the enterprise. By utilizing embedded tags and placeholders in the skeleton file, the individual web servers are allowed to populate the tags and placeholders with context-specific information, including information about the user's preferences, access permission, and the like, which can be used to exercise control over the navigational offerings that are provided to the user.
For example, the navigation pane 406 includes a number of navigation elements in a hierarchical arrangement. At the highest level, the navigation pane 406 offers navigation categories 408 (such as, for example, “console”, “web site reports”, “Reports for Web”, and the like). Of course, these are exemplary only, and other categories could just as easily be used. The category “web site reports” is currently selected. Each navigation category 408 may have one or more subcategories 410, which can be expanded by clicking on the subcategory 410 or its associated expansion icon 414 to reveal submenu items 412. Any number of categories and subcategories can be allowed. In this particular embodiment, selecting a different category causes the currently selected to collapse and causes the newly selected category to expand.
This tree-node arrangement can be served, as previously discussed, by populating embedded tags and placeholders of the skeleton file with context-specific data. A user that is authenticated to access only certain types of data can be provided with a tree-node list that includes only those pages to which he or she is permitted access. Such access controls can then be managed by the web server (service server) being accessed by that user.
As shown, a client device 800 attempts to access a web page on a remote system 802 via a network 804. The remote system 802 includes a firewall 806, which filters or restricts communication between the network 804 and other elements of the remote system 802. Generally, the firewall 806 is intended to prevent unauthorized access.
User's desiring access to the remote system 802 must provide login information of some sort, either via a digital signature, username and password, secure ID or any other access related login technique. Such information is directed to an authentication server 808, which tests the user information against a user database 810, which contains both the user information and any roles associated with that user. A role is a group or status assigned to a user. For example, one user type that is common on networks is “guest”, which typically allows limited access, if any. Other roles may include, for example, “Administrator”, “Supervisor”, “Legal Counsel”, “Accountant”, and so on. Each of these users may be permitted access to some, but not all, files. Roles may overlap in terms of the access permissions associated with the particular roles; however, in general, a “role” is merely an abstracted grouping of access permissions to files (or in this case navigational elements).
Once a user is authenticated, the authentication server 808 sets a role-based cookie 811 in the client device 800. The role-based cookie can be set to expire within a fixed period of time (such as 12 hours, 1 hour, and the like), or can be set to last only as long as the session.
The firewall 806 generally allows access to authenticated users based on the valid role-based cookie. Requests for web-pages from authenticated users cause the rendering engine 812 (such as a web server) to access the local XML file 814. The local XML file, in this instance, may contain attribute or parameter information associated with the navigational element definitions in the XML file, which the rendering agent 812 utilizes to determine which navigational elements are valid based on the role of each particular user. Thus, a user with a “support staff” role definition would have no navigational element offering access to “Accounting Information”, whereas an Accountant role would cause the rendering engine 812 to draw an “Accounting Information” tab.
While the specific roles described above are roles that might be expected for a corporate intranet, other roles are contemplated, such as “guest”, “registered user”, “silver member”, “platinum member”, “site administrator”, “inventory specialist”, and so on. In an e-commerce setting, “guest”, “registered user”, “silver member” and “platinum member” may refer to a customer's status, such as with a credit card company having different credit cards. The “site administrator” and the “inventory specialist” may have different levels of administrative access to web site elements from the perspective of the corporation that owns the e-commerce site. The options available to each user through the navigation pane would depend on that particular user's authenticated role.
Once the server code is implemented on the web server and the XML navigation code file is added to the central server, the web site administrator or service team can update the navigational options across the entire enterprise simply by updating the XML file on the central server. Changes to the XML file will be effected according to the predetermined time schedule adopted when the server code was installed on the server. If the service team wishes to change the look and feel of the site, without altering the navigation options, the service team simply updates the skeleton file or SML file 818 on the centralized server. In one embodiment, the web servers or service servers updated automatically on a periodic basis (such as every night). Alternatively, the service team can trigger an update event via server code 816 stored on each web server or application server. In this manner, global changes to an Internet web site, for example, can be effected by coding one or two skeleton files, on the centralized server 820, instead of by coding every web page on each web server and application server of an entire enterprise.
Although the present invention has been described with reference to particular embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.
This application claims priority from provisional patent application No. ______, filed on Nov. 21, 2003 and entitled “WEB-=BASED DEPLOYMENT OF CONTEXT SENSITIVE NAVIGATIONAL ELEMENTS WITHIN A USER INTERFACE”.
Number | Date | Country | |
---|---|---|---|
60524289 | Nov 2003 | US |