MAINTAINING AND UTILIZING A REPORT KNOWLEDGEBASE

A method includes recording a report navigation workflow followed by any of a plurality of users. The recorded report navigation workflow included data identifying an ordered series of reports selected from a plurality of reports. The report navigation workflow is electronically saved. The acts of recording and saving are repeated to maintain a report knowledgebase. The report knowledgebase is utilized to guide a subsequent report navigation for one of the plurality of users.

DETAILED DESCRIPTION

Various embodiments described below were developed in an effort to maintain and utilize a report knowledgebase to guide a user navigating a series of computer generated reports. The report knowledgebase is maintained using report navigation data recorded as users navigate through the reports. The recorded data can be used to define report navigation workflows as well as dimension data. A workflow can identify an ordered series of reports as well as parameters passed for generating each of those reports. Dimension data can be recorded for each instance or use of a report by a given user. In other words, an instance of a report occurs when a user causes the report to be generated. Dimension data can include, for each instance, data identifying the user's role, the user organization, the user's location, and a usage date or timestamp. As the knowledge base grows, it can be utilized to guide the report navigation of the users. Such guidance can include recommending a next report to which a user may navigate as well as the selection and execution of a recorded workflow.

The following description is broken into sections. The first, labeled “Environment,” describes an exemplary environment in which various embodiments may be implemented. The second section, labeled “Components,” describes examples of various physical and logical components for implementing various embodiments. The third section, labeled as “Operation,” describes steps taken to implement various embodiments.

FIG. 1depicts an environment10in which various embodiments may be implemented. Environment10is shown to include application device12, client devices14, knowledgebase device16, and data store18. Application device12represents generally any computing device or collection of computing devices configured to generate and communicate reports to client devices. As used herein, a report is electronic data that can be presented to a user. Presentation can take a number of forms including presenting as part of a graphical user interface and printing. Presentation may also include providing the electronic data in a format that can be later displayed or printed. A report is used to communicate information concerning a topic of interest. For example, in an IT environment a report may communicate information regarding the performance of a server or the utilization of a virtual machine.

Client devices14each represent a computing device capable of being used to request reports from application device12. The requesting of a report, for example, can include passing parameters to application device12that can be used to generate the requested report. Knowledgebase device16represents a computing device or combination of computing devices configured to maintain a knowledgebase in data store18using report navigation data recorded for users of client devices14. Report navigation data is data gleaned as the users request reports. In particular, the report navigation data is data that can be used to define dimensions for each instance of a report and to define report navigation workflows. Thus the knowledgebase includes either or both of the dimension data and the report navigation workflows and is used by knowledgebase device16to guide a subsequent report navigation for a user. Data store18represents generally any device or combination of devices capable of storing electronic data that can be updated and utilized by knowledgebase device in the performance of its functions.

In the example ofFIG. 1, application device12, knowledgebase device16, and data store18are depicted as distinct devices. However, devices12,16, and18may be wholly or partially integrated with one another. For example application device12and knowledgebase device16may be integrated in a single device or distributed together across multiple devices. Likewise, data store18may be integrated wholly or partially with knowledgebase device16or application device12.

Link20represents generally one or more of a cable, wireless, fiber optic, or remote connections via a telecommunication link, an infrared link, a radio frequency link, or any other connectors or systems that provide electronic communication. Link20may include, at least in part, an intranet, the Internet, or a combination of both. Link20may also include intermediate proxies, routers, switches, load balancers, and the like.

FIGS. 2-6depict examples of physical and logical components for implementing various embodiments.FIG. 2depicts system22for maintaining and utilizing a report knowledgebase. In this example, system22is shown to include navigation engine24, knowledgebase engine26, and document engine27.FIG. 2also depicts data store18containing report knowledgebase28.

Navigation engine24represents generally any combination of hardware and programming configured to record report navigation data for a plurality of users. Report navigation data is electronic data corresponding to the users' interactions with various reports. In particular report navigation data can include dimension data for report instances, parameters passed to generate reports, and report sequences followed by users. Thus, the report navigation data can be used to define either or both of report navigation workflows followed by a plurality of users and dimension data for each instance of each report generated by the plurality of users.

In performing its function, navigation engine24, for example, may intercept communication between a client and an application responsible for generating and returning the reports to glean the report navigation data. Navigation engine24may receive the report navigation data directly from that application or from a third party. For example, the application may actively communicate the report navigation data to navigation engine24or it may record the report navigation data locally or in a third party repository such that it may be accessed by navigation engine24.

Knowledgebase engine26represents generally any combination of hardware and programming configured to maintain report knowledgebase28using the recorded report navigation data. Knowledgebase engine26is also responsible for utilizing the report knowledgebase to guide a subsequent report navigation for one of the plurality of users. In guiding the subsequent report navigation, knowledgebase engine26may recommend a next report to which a user might navigate. In doing so, knowledgebase engine26may cause a control to be displayed on the user interface of a client that identifies the next report and perhaps provides a link for accessing that next report. Such may be accomplished by intercepting and modifying a current report being prior to it being delivered from an application to the client. Such may also include providing the application with the data needed to generate the report so it includes the recommendation.

Knowledgebase engine26may maintain report knowledgebase28such that it includes either or both of report navigation work flows and dimension data. Note that each report navigation workflow can include data identifying a series of reports navigated by a user as well as parameters passed to generate each of those reports. The dimension data tied to each report instance may identify any of a user identity that requested the report, the user's role or persona, the user's organization, the user's location, and a timestamp.

Knowledgebase engine26may then utilize report knowledgebase28by utilizing either or both of the dimension data and the report navigation workflows to recommend a next report to which a user may navigate. For example, a user may be viewing one report that provides access to a number of other reports. Examining the dimension data, knowledgebase engine26can identify which of the other reports may be relevant to the user and then recommend one or more of those reports. Again the recommendation may be made by causing a user interface that displays a current report to include a control or other image that communicates the recommendation to the user.

Examining the report navigation workflows, knowledgebase engine26can identify a report that other user's commonly navigate to from a current report being viewed. For example, engine26may identify report navigation workflows that identify the current report and then identify a subsequent report that is more commonly navigated to from that current report. To further refine the recommendation, knowledgebase engine26may examine both the dimension data and the report navigation workflows to identify a subsequent report that is more relevant to the user presently viewing the current report. Rather than looking simply at the report navigation workflows, the dimension data can be used to identify a next report that is more commonly navigated to by similar users during a recent time period—that is—a report navigated to by user having, for example the same role or working in the same organization.

Knowledgebase engine26may also utilize report knowledgebase28to guide a subsequent navigation by executing a report navigation workflow selected from report knowledgebase28. As noted, a report navigation workflow can identify a series of reports as well as parameters passed to generate each report in that series. Executing the workflow can include stepping the user through the series of reports. It can also include using some or all of the parameters from the report navigation workflow when generating each corresponding report in the workflow. Stepping the user the through the workflow, for example, can include from a current report being presented to the user, recommending or guiding the user to request or otherwise access the subsequent report identified in that report navigation workflow.

In maintaining report knowledgebase28, knowledgebase engine26may associate each report navigation workflow with a tag corresponding to a problem or a solution identified by a user that navigated the reports identified by the workflow. The problem may be a problem the user was attempting to alleviate when navigating the reports. The solution may be a solution the user sought to achieve. In selecting a report navigation workflow from report knowledgebase, knowledgebase engine26may examine the tags to identify the particular report navigation workflow to be selected. That is, a current user may identify a problem, solution, or other data related to the tags allowing knowledgebase engine26to examine the tags in report knowledgebase28to identify a relevant report navigation workflow based on the user supplied data. Alternatively, the problem or desired solution may be determined automatically to cause knowledgebase engine26to select a relevant report navigation workflow.

Document engine27represents generally any combination of hardware and software configured to generate consolidated documents for report navigation workflows followed by the users. Each such document includes data identifying a sequence of reports of a given report navigation workflow and data identifying parameters passed to generate each report in the report navigation workflow. The consolidated document is an electronic document that can be stored and shared with others. Such consolidated document may be stored with corresponding tags as part of report knowledgebase28. Thus in guiding a subsequent navigation, knowledgebase engine26may present a user with a consolidated document for a selected report navigation workflow.

FIG. 3depicts a visual example of a report navigation workflow30. In the example ofFIG. 3, workflow30identifies a series of reports32as well as parameters and other data34corresponding to each report. Workflow30starts at (a) with parameters passed to generate report A. The instance of report A is tied to dimension data. The workflow passes through (b), (c), (d), and concludes with (e) and report Z. It is noted that workflow includes two instances of report B. A consolidated document discussed above may include information such as that shown inFIG. 3.

Moving toFIG. 4, a block diagram of the logical components of report knowledgebase28is depicted. In the example ofFIG. 4, report knowledgebase28includes report data36and workflow data38. Report data36includes a record40for each report of a plurality of reports that a user might utilize. Each report record includes dimension data42for each instance of that report over a period of time. In this example, dimension data includes data identifying the role44of the user the requested the given report instance, the user's location46, the user's organization48, and a timestamp50corresponding to that instance.

Workflow data38includes report navigation workflows52. Each report navigation workflow52in this example includes a workflow identifier and tags56. The workflow identifier54distinguishes a given report navigation workflow from others. The tags, as discussed above, may correspond to a problem or a solution for which report navigation workflow52was followed. Each workflow52also includes data60,64, and68that identifies parameters passed to generate reports identified by report identifiers62,66, and70. Thus, each workflow52includes the data used by document engine27to generate a consolidated document as discussed above. Further, report data36and workflow data38contain the information used by workflow engine26to guide a report navigation for a user as explained above.

In foregoing discussion, various components were described as combinations of hardware and programming. Such components may be implemented in a number of fashions. Looking atFIG. 5, the programming may be processor executable instructions stored on tangible memory media72and the hardware may include a processor or processors74for executing those instructions. Memory72can be said to store program instructions that when executed by processor74implement system22ofFIG. 2. Memory72may be integrated in the same device as processor74or it may be separate but accessible to that device and processor74.

In one example, the program instructions can be part of an installation package that when installed can be executed by processor74to implement system22. In this case, memory72may be a portable medium such as a CD, DVD, or flash drive or a memory maintained by a server from which the installation package can be downloaded and installed. In another example, the program instructions may be part of an application or applications already installed. Here, memory72can include integrated memory such as a hard drive.

InFIG. 5, the executable program instructions stored in memory72are depicted as navigation module76, knowledgebase module78, and document module79. Navigation module50represents program instructions that when executed cause the implementation of navigation engine24ofFIG. 2. Likewise, knowledgebase module78and document module79represent program instructions that when executed cause the implementation of knowledgebase engine26and document engine27respectively.

As a further example,FIG. 6depicts a block diagram of system22implemented by knowledgebase device16. In the example ofFIG. 6, application device12is shown to include memory80, processor82, and interface84. Processor82represents generally any processor configured to execute program instructions stored in memory80to perform various specified functions. Interface58represents generally any interface enabling application device12to communicate with client devices14and knowledgebase device16via link20.

Memory80is shown to include operating system86and applications88. Operating system86represents a collection of programs that when executed by processor82serve as a platform on which applications88can run. Examples of operating systems include, but are not limited, to various versions of Microsoft's Windows® and Linux®. Applications88represent program instructions that when execute by processor82function as an application that returns requested reports to client devices14.

Knowledgebase device16is shown to include memory90, processor92, and interface94. Processor92represents generally any processor configured to execute program instructions stored in memory90to perform various specified functions. Interface94represents generally any interface enabling knowledgebase device16to communicate via link20.

Memory90is shown to include operating system96and applications98. Operating system96represents a collection of programs that when executed by processor92serve as a platform on which applications98can run. Examples of operating systems include, but are not limited, to various versions of Microsoft's Windows® and Linux®. Applications98represent program instructions that when execute by processor92implement system22for maintaining and utilizing a report knowledgebase as discussed above with respect toFIG. 2.

Looking atFIG. 2, navigation24, knowledgebase engine26, and document engine27are described a combinations of hardware and programming. The hardware portions may, depending on the embodiment, be implemented as processor92. The programming portions, depending on the embodiment, can be implemented by operating system96, applications98, or combinations thereof. It is also noted that while knowledgebase device16and application device12are illustrated as distinct devices, they may be wholly or partially integrated with one another. Further, while each device12and16is shown as an individual device, the functions and components of each may be distributed across multiple devices.

FIG. 7is a flow diagram of steps taken to implement embodiment of a method for mainlining and utilizing a report knowledgebase. In discussingFIG. 7, reference is made to the diagrams ofFIGS. 1-6to provide contextual examples. Implementation, however, is not limited to those examples.

Report navigation data is recorded for a plurality of users (step100). The report navigation data being useable to defining either or both of (a) report navigation workflows followed by the plurality of users and (b) dimension data for each instance of each report generated by the plurality of users. Referring toFIG. 2, navigation engine24may be responsible for implementing step100. Step100may involve intercepting communications between a clients and an application responsible for returning requested reports in order to lean the report navigation data. Step100may include receiving the report navigation data from that application or a third party.

A report knowledgebase is maintained using the recorded report navigation data (step102). In the example ofFIG. 4, step102can include maintaining a knowledgebase28that includes either or both of dimension data36and workflow data40. The report knowledgebase is utilized to guide subsequent report navigation for one of the plurality of users (step104). Referring toFIG. 2, knowledgebase engine26may be responsible for implementing steps102and104.

Step104may include utilizing the report knowledgebase to guide the one of the plurality of users through a subsequent report navigation by recommending to that user a next report to which the user may navigate. Such may be accomplished, for example, by causing a current report being presented to the user to include information indicative of that recommendation.

Step102may include maintaining a report knowledgebase that includes either or both of (a) report navigation workflows that each include data identifying an ordered series of reports navigated by a user and (b) dimension data that, for each instance of a report, identifies one of a user role, a user organization, a user location, and a time stamp. Step104, then, can include utilizing either or both the report navigation workflows and the dimension data to recommend to the one of the plurality of users a next report to which the user may navigate.

Step102can include maintaining a report knowledgebase that includes navigation workflows that each include data identifying an ordered series of reports selected from a plurality of reports. Step104, then, can include executing a selected report navigation workflow from the report knowledgebase. Where the selected report navigation workflow includes data identifying parameters passed to generate each report in that report navigation workflow, step104can include analyzing the data identifying the parameters and executing the report navigation workflow using one or more of those parameters.

Step102can include associating each report navigation workflow with a tag identifying one of a problem and a resolution. Step104, then, can include examining the associated tags and selecting the report navigation workflow to be executed from the knowledge based on the examination of the associated tags.

Step102can include maintaining a report knowledgebase that includes a report navigation workflow followed by the one of the plurality of users being guided in step104. In a step not depicted inFIG. 7, a consolidated document for that report navigation workflow can then be generated. The consolidated document includes data identifying a sequence of reports of the report navigation workflow and data identifying parameters passed to generate each report in the report navigation workflow. Step102then can include maintaining a report knowledgebase that includes such consolidated documents and guiding in step104can include causing a consolidated document for a selected report navigation workflow to be made available to the user.

FIGS. 1-6aid in depicting the architecture, functionality, and operation of various embodiments. In particular,FIGS. 1-6depict various physical and logical components. Various components are defined at least in part as programs or programming. Each such component, portion thereof, or various combinations thereof may represent in whole or in part a module, segment, or portion of code that comprises one or more executable instructions to implement any specified logical function(s). Each component or various combinations thereof may represent a circuit or a number of interconnected circuits to implement the specified logical function(s).

Embodiments can be realized in any computer-readable media for use by or in connection with an instruction execution system such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit) or other system that can fetch or obtain the logic from computer-readable media and execute the instructions contained therein. “Computer-readable media” can be any media that can contain, store, or maintain programs and data for use by or in connection with the instruction execution system. Computer readable media can comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, or semiconductor media. More specific examples of suitable computer-readable media include, but are not limited to, a portable magnetic computer diskette such as floppy diskettes or hard drives, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory, or a portable compact disc.

Although the flow diagram ofFIG. 7shows a specific order of execution, the order of execution may differ from that which is depicted. For example, the order of execution of two or more blocks may be scrambled relative to the order shown. Also, two or more blocks shown in succession may be executed concurrently or with partial concurrence. All such variations are within the scope of the present invention.

The present invention has been shown and described with reference to the foregoing exemplary embodiments. It is to be understood, however, that other forms, details and embodiments may be made without departing from the spirit and scope of the invention that is defined in the following claims.