The following description relates to information structures used in computer systems, for example, entry points for navigation of hierarchical information structures.
Computer systems may organize data in object hierarchies. An object hierarchy may have a tree structure. The tree may include a number of interdependent nodes. The nodes may represent objects such as files, documents, folders, applications, etc. A folder may contain other objects. The folder containing the objects is referred to a parent node and the objects it contains are called child nodes.
Object hierarchies can become extremely complex, especially as software complexity and the memory capacity of computer systems increase. Navigation of a hierarchy may become more difficult for a user as the hierarchy becomes more complex.
The present application teaches generating a virtual hierarchy from one or more object hierarchies by flagging nodes in the hierarchies as “entry points.” The present inventors recognized that conventional navigation structures do not enable users to combine distinct object hierarchies in a flexible manner. Accordingly, the inventors recognized the potential advantages of providing entry points into the distinct hierarchies and generating a virtual hierarchy utilizing these entry points.
In one aspect, nodes in two object hierarchies are flagged as entry points to those hierarchies. A virtual hierarchy is then built under a virtual root. The entry points depend directly from the virtual root in the virtual hierarchy. The structure above the entry points in the object hierarchies are not in the virtual hierarchy, but the structure below the entry points in the virtual hierarchy is identical to those of the object hierarchies.
The virtual node and entry point flags may be stored in a persistent manner, but the virtual hierarchy may be generated at run-time. An entry point module may first identify the nodes identified as entry points, e.g., by searching the object hierarchies. A navigation module may then generate a virtual tree including the virtual root, with the entry points depending directly from the virtual hierarchy.
In an embodiment, the entry point flags may include attributes, such as a precedence attribute. The navigation module may organize the nodes flagged as entry points in the virtual hierarchy according to their precedence values. The attributes may also include a merge indicator. Entry points with the same merge indicator are merged in the virtual hierarchy, i.e., a new node including the children of the merged entry points replaces the merged entry points.
Details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages may be apparent from the description and drawings, and from the claims.
These and other aspects will now be described in detail with reference to the following drawings.
Like reference symbols in the various drawings indicate like elements.
The systems and techniques described here relate to navigation of object hierarchies in computer systems.
A node 105 in the hierarchy may have depending nodes 110, which are lower in the hierarchy. The node 105 is referred to as a parent node, and the nodes 110 depending from the parent node are referred to as child nodes, or that parent's children. The parent node 105 may be a child node of another node 115 higher in the hierarchy. In many systems, parent nodes are folders (also called directories).
The top node in the object hierarchy is referred to as the root. A node in the hierarchy may be designated by its root and all intervening parent nodes, i.e., the node N1 in
A user of the computer system may access a node using the node's particular designation. However, if the user does not know the node's designation, the user may need to navigate through the hierarchy to locate the node. The user may also navigate the hierarchy when searching or browsing objects in the hierarchy. Navigation may be difficult in large and complex object hierarchies. Furthermore, it may be desirable to combine two or more object hierarchies. However, the combined hierarchy will be a larger structure which is more difficult to navigate than the component hierarchies.
In an embodiment, a virtual hierarchy may be created from one or more hierarchies. The virtual hierarchy may provide a flexible way to define a navigation structure suitable for a particular purpose or user. The virtual hierarchy may also provide a flexible way to combine distinct object hierarchies.
The virtual root 405 may be defined for the virtual hierarchy during development (block 205). Nodes in the two hierarchies are flagged as entry points 410 (block 210). The flags may define attributes, such as a precedence attribute, e.g., an order number. The virtual root and entry point flags may be stored in a persistent manner, e.g., in a database 505 (shown in
The virtual hierarchy may be generated at run-time as the user attempts to navigate the structures (block 215). An entry point module 510 at the client 515 searches the hierarchies for the entry points (block 220). The entry point module 510 may pass the entry points to a navigation module 520 (block 225). The navigation module may use the entry points to generate the virtual tree 400 under the virtual root 405 (block 230). The immediate descendants of the virtual root are those nodes from the different hierarchies marked as entry points. The order of the entry points in the combined tree, i.e., the virtual hierarchy, may be defined by the precedence attribute. Below each entry point the structure in the combined tree follows the structure of the persistent hierarchies 305 and 310, as shown in
In an embodiment, the entry point flag may include a merge ID. Two or more nodes 605 may be flagged with an entry point flag that contains the same merge ID, as shown in
In an embodiment, an entry point may be a child of another entry point in the virtual hierarchy. For example, a node in an object hierarchy 805 may be marked as a subordinate entry point 810 to a node marked as an entry point 815 in another object hierarchy 820, as shown in
In an embodiment, a virtual hierarchy may be used to define a navigation structure for a user of a portal.
The user navigates on entries in the title area 1030 (e.g., “top-level” navigation) and content area 1032 (e.g., “detailed” navigation) of the portal page 1012. The entries used for navigation may come from the roles assigned to the user.
A role is an object hierarchy that corresponds to a role which may be assigned to a user, e.g., “manager”, “engineer”, or “human resources administrator.”
Role hierarchies may be pre-defined in the persistent layer. The user's actual role may not correspond directly to any of the pre-defined roles. Accordingly, the user may be assigned more than one role. However, the user may not need access to all of the objects in the various role hierarchies. Entry points 1305 may be used to create a combined tree 1400 with a navigation structure that more closely matches the user's needs, as shown in
These computer programs (also known as programs, software, software applications or code) may include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
The systems and techniques described here can be implemented in a computing system that includes a back-end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front-end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Although only a few embodiments have been described in detail above, other modifications are possible. Portions of this disclosure discuss defining entry points in distinct object hierarchies and creating a navigation structure comprising a virtual hierarchy. The logic flow depicted in
Other embodiments may be within the scope of the following claims.
This application claims the benefit of priority from the U.S. Provisional Application entitled “PORTAL CONTENT DELIVERY”, filed Dec. 28, 2001, Provisional Application Ser. No. 60/346,407, the disclosure of which is incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5001628 | Johnson et al. | Mar 1991 | A |
6128655 | Fields et al. | Oct 2000 | A |
6470344 | Kothuri et al. | Oct 2002 | B1 |
6578078 | Smith et al. | Jun 2003 | B1 |
Number | Date | Country |
---|---|---|
0994425 | Apr 2000 | EP |
WO 0133435 | May 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20030225781 A1 | Dec 2003 | US |
Number | Date | Country | |
---|---|---|---|
60346407 | Dec 2001 | US |