Using virtual repository items for customized display

In one embodiment, a computer system performs a method for providing repository item information from one or more different perspectives using virtual repository items within a customizable presentation scheme. A computer system accesses a user-defined presentation scheme that describes a manner in which repository items are to be presented. The computer system generates virtual repository items for actual repository items based on the user-defined presentation scheme. The virtual repository items are generated for presentation along with their actual repository items. The computer system maps the virtual repository items to different virtualized sets of repository items according to the user-defined presentation scheme. The virtualized sets comprise at least one of actual repository items and virtual repository items. The computer system presents the virtualized sets of repository items in one or more different perspectives within the user-defined presentation scheme.

BACKGROUND

Computers are used all over the world to perform a wide variety of tasks. Computers perform these tasks by executing software code. Software code is typically written by one or more software developers using some type of integrated development environment (IDE). In many cases, developers are given a set of design instructions, and, using a programming language, draft software code that will implement the functions described in the design specifications. Depending on the nature and scope of the design specifications (or any subsequent modifications thereto), the software program can be both large and complex.

Enterprise software programs, for example, may involve many hundreds or thousands of software files, each file designed to interact with other files within the program and externally with other software programs and/or operating systems. Often, supplemental programs or databases are used to organize, search and maintain the metadata which describes the program and its files. Program metadata consists of information such as the structure of program components, behavior of those components, and other characteristics useful for organization and control. File metadata consists of information such as the date the file was last modified, the size of the file, the file's relation to other files within the software program, and other characteristics useful for organization and control.

Software programs such as repositories typically display and store a software program's files and their corresponding metadata together using an entity-property-value approach (also called the universal schema approach). For example, a repository might list the files alphabetically with the metadata alongside, each portion of metadata corresponding to the appropriate file. In such an example, the repository would list the file (i.e. the entity), each file property's name and a value for the property. Related files would, for example, be shown as a list of related files headed by the kind of relationship (e.g. files related to the file by an automatic generation process). This common entity-property-value approach, however, is cumbersome and ill-suited to providing a customized, user-centric approach. As well as being displayed to the user in this way the metadata is also stored in the repository in an analogous way as a table of entities, a table of property-value pairs and a table of relationship-first entity-second entity triples.

Furthermore, current software repositories typically allow a user (e.g. a developer) to search and/or browse all of the files and their corresponding metadata in the software program. Such search features, however, are only useful to a limited extent and lack many significant features. For example, in practice, repositories contain a wide variety of metadata and, often, the best way to display this metadata will vary between different metadata representations. Current software repositories typically only allow one method of displaying software metadata (i.e. the entity-property-value approach). Furthermore, current software repository search techniques are unacceptably slow and inefficient.

BRIEF SUMMARY

Embodiments of the present invention are directed to providing repository item information from different perspectives using virtual repository items within a customizable presentation scheme. In one embodiment of this invention, a computer system performs a method for providing repository item information from different perspectives using virtual repository items within a customizable presentation scheme. A computer system accesses a user-defined presentation scheme that describes a manner in which repository items are to be presented. The computer system generates virtual repository items for actual repository items based on the user-defined presentation scheme. The virtual repository items are generated for presentation along with their actual repository items. The computer system maps the virtual repository items to different virtualized sets of repository items according to the user-defined presentation scheme. The virtualized sets comprise at least one of actual repository items and virtual repository items. The computer system presents the virtualized sets of repository items in different perspectives within the user-defined presentation scheme.

DETAILED DESCRIPTION

Embodiments are directed to providing repository item information from different perspectives using virtual repository items within a customizable presentation scheme. In one embodiment, a computer system performs a method for providing repository item information from different perspectives using virtual repository items within a customizable presentation scheme. Next, a computer system accesses a user-defined presentation scheme that describes a manner in which repository items are to be presented. The computer system generates virtual repository items for actual repository items based on the user-defined presentation scheme. The virtual repository items are generated for presentation along with their actual repository items. The computer system maps the virtual repository items to different virtualized sets of repository items according to the user-defined presentation scheme. The virtualized sets include actual repository items and virtual repository items. Next, the computer system presents the virtualized sets of repository items in different perspectives within the user-defined presentation scheme. The embodiments of the present invention may comprise a special purpose or general-purpose computer including various types of computer hardware, as discussed in greater detail below.

FIG. 1illustrates a computer architecture100in which the principles of the present invention may be employed. Computer architecture100includes computer system101. In some embodiments, computer system101may be configured to receive user-defined presentation scheme105. User-defined presentation scheme105as may be any type of structure or layout for presenting information. In some embodiments, the structure or layout of scheme105is defined by one or more users. In other embodiments, the structure or layout may be defined by a programmer or manufacturer of a software program that uses such presentation schemes. A “presentation scheme,” as used herein, may describe any aspect of information layout or structure including where to display certain elements, how many to display, the order in which information elements should be displayed, placement of graphics (animated or static), text, headers, borders, embedded or otherwise incorporated media, or any other elements that can be presented to a user.

In some embodiments, user-defined presentation scheme105may be only partially customizable. For example, some elements of the presentation scheme105may be locked so as to be unavailable for changing. This may be beneficial for computer administrators who might want to ensure uniformity in the way certain information is presented to the users. In other embodiments, one or more of the layout or structural elements can be user-defined, up to and including all aspects of the presentation scheme.

Computers system101includes presentation scheme access module110. In some embodiments, presentation scheme access module110may be used to access user-defined presentation scheme105. For example, if a user defines and enters a user-defined presentation scheme105into computer system101, presentation scheme access module110may be configured to receive and access the scheme105. Furthermore, presentation scheme access module110may be configured to pass user-defined presentation scheme115to virtual repository item generation module120. In some embodiments, user-defined presentation scheme115may be the same as user-defined presentation scheme105, in which case scheme105is accessed by access module110and passed directly on to generation module120. In other embodiments, presentation scheme access module110may access other user-defined presentation schemes that may have been stored on a hard drive or other storage medium and pass those accessed schemes on, represented in this example as user-defined presentation scheme115.

Computer system101also includes virtual repository item generation module120. In some embodiments, generation module120may be configured to receive user-defined presentation scheme115as well as actual repository items125. A “repository,” as used herein, may be any type of information store such as a database, directory, system registry, or other means of storing various types of information. Actual repository items125may include, but are not limited to metadata for program files, file references, namespaces, base classes, interfaces, program settings, registry settings, or any other information item that may be stored in a repository. Virtual repository item generation model120may be configured to generate a virtual repository item based on the received user-defined presentation scheme115and actual repository items125, as will be discussed in greater detail below. Generated virtual repository items130may be sent to repository item mapping module135.

In some embodiments, repository item mapping module135may be configured to receive virtual repository items130and map virtual repository items to different virtualized sets of repository items, as will be described in greater detail below. Mapping module135may send virtualized sets140to display device145. In some embodiments, virtualized sets140may be sets of any types of information, paired or mapped by mapping module135. For example, a virtualized set140may include an actual repository item and a virtual repository item. As one would appreciate, virtualized set140may include any combination of actual repository items and virtual repository items. Furthermore, virtualized sets may be customized according to user-defined presentation scheme115. Display device145may be any type of device capable of displaying information. For example, devices capable of displaying text, graphics, motion pictures, or other types of information, including computer monitors, televisions, laptops, touch-screens or any other type of display come within the scope of display device145.

FIG. 2illustrates a flowchart of a method200for providing repository item information from one or more different perspectives using virtual repository items within a customizable presentation scheme. The method200will now be described with frequent reference to the components and data of environment100as well as exemplary presentation300ofFIG. 3.

Method200includes an act of accessing a user-defined presentation scheme that describes a manner in which repository items are to be presented (act210). For example, presentation scheme access module110may access user-defined presentation scheme105that describes a manner in which repository items are to be presented. In some embodiments, the user-defined presentation scheme uses monikers to refer to repository items and virtual repository items. As used herein, a “moniker” or “moniker family” can refer to any type of naming system or to a specific name. For example, a moniker that refers to a type of naming system may be a globally unique identifier (GUID). A moniker that refers to a specific name might be “Conic.Circle”, as listed under “Types”310inFIG. 3.

Method200includes an act of generating virtual repository items for actual repository items based on the user-defined presentation scheme, wherein virtual repository items are generated for presentation along with their actual repository items (act220). For example, virtual repository item generation module120may generate virtual repository items130for actual repository items125based on user-defined presentation scheme105. Virtual repository items130may be generated for presentation along with actual repository items125. In some embodiments, generating the virtual repository items130includes accessing an actual repository item125for use in generating the virtual repository item. For example, generation module120may access actual repository items125and determine which actual repository items are going to be displayed multiple times. For those actual repository items that are to be presented multiple times in the same presentation, generation module120may generate one or more virtual repository items corresponding to each actual repository item. This allows for the simultaneous display of actual repository items that otherwise would not be able to be displayed at the same time.

Method200includes an act of mapping the virtual repository items to different virtualized sets of repository items according to the user-defined presentation scheme, wherein the virtualized sets comprise at least one of actual repository items or virtual repository items (act230). For example, repository item mapping module135may map virtual repository items130to different virtualized sets of repository items140according to user-defined presentation scheme115. Virtualized sets140may include at least one of actual repository items125or virtual repository items130.

In some embodiments, virtualized set140includes at least one of a plurality of actual repository items125, a plurality of virtual repository items130or a combination of actual repository items125and virtual repository items130. For example, virtualized set140may include three actual repository items125and five virtual repository items130(note that these numbers were chosen arbitrarily and that any combination of numbers could be used). In this example, the five virtual as repository items130may represent two virtual repository items for two of the actual repository items, and one virtual repository item for the remaining actual repository item. Thus, in such an example, one, two or all three actual repository items may be presented as well as any one or more of the five virtual repository items. Furthermore, any combination of actual and virtual repository items may be presented. Note also that virtual repository items may be presented without presenting the corresponding actual repository item.

In some embodiments, a browser may be used to view virtualized sets. A browser may be any type of metadata viewer such as a hierarchical tree based browser, or other means of browsing information. As explained above, a virtualized set may include any combination of virtual and actual repository items. Such browsers may be capable of presenting any number of actual repository items, virtual repository items, or virtualized sets. In some embodiments, user-defined presentation scheme115may be scalable to include any number of virtualized sets. These sets and repository items may be browseable and/or searchable, as will be explained in greater detail below.

Method200includes an act of presenting the virtualized sets of repository items in one or more different perspectives within the user-defined presentation scheme (act240). For example, computer system101may present virtualized sets of repository items140in one or more different perspectives within user-defined presentation scheme115. In some embodiments, a computer system user may be able to dynamically restructure the presentation of the virtualized sets based on a modification of user-defined presentation scheme105.

For example, a user may wish to display repository items in column305including the types310and namespaces315of “Shapes.dll.” If computer system101was previously configured to display the types310and namespaces315as a diagram, and the user wishes to display them as a categorized list, each item followed by its moniker320, the user could specify such a display by modifying user-defined presentation scheme105and inputting the scheme105into computer system101. Other presentation schemes may include formatted reports or formatted documents. Additionally or alternatively, as mentioned above, other presentation schemes may be stored on a hard drive or other storage medium accessible by computer system101and may similarly be modified to alter the presentation of virtualized sets140.

In some embodiments, a user may desire to present virtualized sets140according to the namespace to which the actual repository item belongs. For example, if “Pentagon” and “Rectangle” belong to the namespace “Polygon” inFIG. 3, “Pentagon” and “Rectangle” can be presented as indented entries categorized under the namespace name “Polygon.” In other embodiments, the virtualized set entries may be presented paired with the namespace. For example, “Polygon.Pentagon,” “Polygon.Rectangle” and “Polygon.Triangle” may be presented as namespace-class name pairs under “Types”310.

Computer system101may be used to efficiently search virtualized sets140by deferring the loading of providers and the execution of provider instructions until appropriate. “Providers,” as used herein, include any type of application programming interface or other means whereby information is accessed, searched, loaded, saved or otherwise manipulated. In some cases, users may desire to browse and/or search repository information. Such browsing and searching may be efficiently performed by deferring the loading of providers until deemed appropriate by computer system101.

By not loading at least some of the providers, less information will be as accessed at browser startup time, thus ensuring a quicker startup time. Similarly, once the provider has searched and located one or more repository items, computer system101may defer the execution of provider instructions until appropriate. For example, a browser's interface may have various buttons that allow access to different operations that may be performed using the retrieved repository information. Although the provider has retrieved information regarding the repository items and provided instructions on how the information is to be used, the execution of the instructions may be deferred until actuated by a user and/or until deemed appropriate by computer system101.

In some embodiments, a repository information browser may include custom search panels. Such search panels may allow a user to specify various types of information that the browser and/or provider may use in searching repository information. For example, a search panel may allow searching based on accessibility, base classes, interface, namespace, size, modification date or other characteristics. Computer system101may also allow users to add various other characteristics to search by. In some embodiments, a user search queries actual repository item providers to determine which is able to display a selected moniker. For example, if a user had chosen a moniker of [271f64d9-7bde-4091-990b-53f85934e820, 13], Provider X may respond that it is capable of displaying all monikers that start with “271f64d9-7bde-4091-990b-53f85934e820.” Thus, in this case, Provider X would be able to display all of the virtualized sets under “Types”310as each starts with “271f64d9-7bde-4091-990b-53f85934e820” and ends with a different number (e.g. “Polygon.Pentagon” ends with 13, “Polygon.Rectangle” ends with 12, and so on).

In such embodiments, multiple versions the same actual repository item may be simultaneously presented. For example, under item's moniker320, notice that “Polygon.Rectangle” has the same GUID, followed by the same number (13) when listed under “Types”310as when listed under “Namespaces”315. Thus, the “Rectangle” repository item may be presented in multiple ways at the same time as an actual repository item, a virtual repository item, or a combination of actual and virtual repository items mapped into virtualized sets and displayed on display145.