Computer users often spend a relatively large amount of time researching different software applications, before purchasing and deploying one. This can be particularly true where the user is associated with a business, and where the application is a business application, such as an accounting application, a sales or inventory application, or another application involved in providing a software solution to the needs of a business.
However, once users have purchased and deployed an application, many users do not take the time to review any related information. For instance, after an application is deployed, the software developer that developed the application may have important enhancements or other follow-up information which would be very useful to the user. However, in current systems, in order to obtain that information, the user must conduct a separate internet search, using the user's own search terms, in order to locate desired, relevant information.
Similarly, a user can attempt to obtain this type of information by performing other types of research into documentation provided by the software developer. However, this can be time consuming and difficult, and users simply tend not to do it. Therefore, many users of applications do not use those applications to their fullest extent.
It is also common for users to contact customer support services at the software vendor that developed the application, to have questions answered. Many times, there are certain questions related to a given application that are asked most frequently. Sometimes, the software vendor will thus develop written documentation answering these most frequently asked questions.
Currently, however, in order for a user to access this type of documentation, the user must conduct a separate search to locate that documentation. Again, users often simply do not do this because it can be time consuming and cumbersome.
The present invention addresses one, some or all of these problems or different ones. The background is provided by way of example only and is not to limit the scope of the present invention in anyway.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
An engine automatically generates links to relevant information, and displays those links on a display of an application. The content represented by the links can be filtered based on user-scoped filters, and the particular links displayed can be displayed based on a context within which the user is currently working.
The present invention relates to displaying relevant information to a user of an application. However, before describing the present invention in more detail, one illustrative environment in which the present invention can be employed will be discussed.
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 is designed to 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 are 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 195.
The computer 110 is operated 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,
Application 202 is illustratively a business application, such as an accounting application or another financial application, or any other type of business application used in providing a software solution to a business. A user 220 illustratively interacts with application 202 through a user interface illustratively provided on user interface display 206. In doing so, user 220 can interact with application 202 in any of a wide variety of customary ways, such as by using a keyboard, a mouse, a speech recognition system, etc.
In operation, user 220 interacts with application 202 through user interface display 206 to perform any of a number of different tasks facilitated by application 202. Link engine 204 uses web server 210 to search content of content providers 212-214 to find information which may be useful to user 220 in using application 202.
Link engine 204 provides selectable links to that content on user interface display 206, such that the user can simply select one of those links and view the content. In one embodiment, the links are provided as a user control 222. An exemplary control is a Windows Forms user control. Thus, the user simply needs to actuate one of the links on user control 222 to view the relevant information provided by link engine 204.
Link engine 204 receives registration information and invokes web server 210 to locate relevant information through network 216 from content providers 212-214. In one embodiment, application 202 can be divided into business entities or business tasks or other groups under which the links generated by link engine 204 can be grouped. This is indicated in more detail below with respect to
Link engine 204 thus invokes web service 210. Invoking the web service is indicated by block 252 in
Web service 210, in turn, searches for relevant content from content providers 212-214, over network 216. In one embodiment, at least one of the content providers 212-214 is the vendor or developer that developed application 202. When launching a search for content, link engine 204 may thus illustratively provide web service 210 with the version number of application 202. This will illustratively help web service 210 find information relative to the particular version of application 202 being used by user 220. In that instance, relevant information may include updates to application 202, help information to address outstanding issues or bugs in application 202, articles relevant to the application or the business using the application, news about web services, critical fixes, service packs, etc., all of which may be of interest to user 220. Of course, content providers 212-214 need not be the developer of software application 202, but may be content providers that simply provide content that may be of interest to user 220.
In any case, web service 210 searches for and receives content and provides the content 226 to link engine 204 in application 202. Receiving the content from the search engine is indicated by block 254 in
Link engine 204 parses content 226 into a predefined schema 228. In one embodiment, the predefined schema 228 is an XML schema that includes various content fields into which the content items (or links to the content) are parsed, as well as a time stamp field and a frequency field. As discussed below, the time stamp and frequency are used to determine whether that information needs to be updated. One illustrative embodiment of a schema is set out in Table 1 below. Parsing the content into a predefined schema 228 is indicated by block 256 in
The links and the parsed data are then stored in database 208 for later retrieval by link engine 204. In one embodiment, when retrieved, the links are provided to the user on user interface display 206 as a user control 222. The links can be grouped into groups (such as groups 1-N shown in
Link engine 204 periodically examines the content stored in database 208 to determine whether the data needs to be updated. In one illustrative embodiment, link engine 204 simply examines the time stamp and frequency fields in the stored schemas 228 to determine whether the associated content must be updated. The time stamp may illustratively indicate the data and time at which the content in the associated content field was received from search engine 210. The frequency field will illustratively indicate how often that content field is to be updated. Link engine 204 can then simply determine, based on the time stamp and frequency information, whether that content needs to be updated. Determining whether the content needs to be updated is indicated by block 260 in
If, at block 260, it is not time to update any of the content, then link engine 204 simply waits for a desired time period before checking the time stamp and frequency fields again, this is indicated by block 262 in
Before describing exemplary groups and links used in accordance with one embodiment of the present system, the runtime operation of system 200 will be described.
User 220 first selects a context in application 202. This is indicated by block 300 in
In response to the user selecting a context, link engine 204 accesses database 208, filters the links based on context and retrieves the links corresponding to the selected context. Those links are displayed, illustratively in the form of user control 222, on user interface display 206. Retrieving and displaying the links associated with the user-selected context is indicated by block 302 in
Link engine 204 then simply waits for user 220 to invoke, or actuate, any of the links on user control 222. If the user does actuate such a link, link engine 204 either retrieves the content or data associated with that link from database 208 or navigates the user to a URL specified by the link, either by opening a separate window or by replacing a current window. Handling user-actuated links is indicated by block 304 in
Link engine 204 is always made aware if the user 220 changes the context of application 202. If the user does change the context by selecting another group of data for display, processing reverts to block 302 where link engine 204 retrieves the links associated with the new context, and handles any links actuated by the user, as indicated by block 304. Determining whether the context has changed is indicated by block 306 in
It can be seen in
Display 206 also has a portion 380 labeled “Spotlight”. Portion 380 shows that, for the context of Company selected by the user, there are three groups of links. Those groups are represented by Update group 382, Learn group 384 and Buy group 386. Each of the groups 382-386 has one or more actuable links beneath it in section 380 of display 206. The Update group may illustratively include links about updates to the application 202. The links under the Learn group may illustratively identify the most commonly raised issues with user support and present to the user, when the link is actuated, articles (or other documentation) that address those issues. Also, in one embodiment, for the Buy group, the links may identify a variety of different web services that will complement, and integrate with, the information currently displayed in the selected context.
For instance, in the example shown in
It will be appreciated, of course, that the text associated with any group or link can be dynamically modified, as can the number of groups, based on the content displayed. Similarly, the number of links within each group can vary based upon the results of the search conducted to obtain content for that group.
In one illustrative embodiment, XML format is used and the groups are predefined within the XML format, but the number and text associated with the links can be changed dynamically.
Also, in accordance with one embodiment, where no relevant information has been found for a given group, a default text will be placed in the group. The default text illustratively indicates that no information is available, or inquires whether the user wishes to conduct a search, or the default text may simply be one or more desired default links to default content.
In one embodiment, display 206 also allows a user to add or remove portion 380 from display 206. By actuating the Add/Remove content button 207, the user can toggle between having portion 380 shown or not shown on display 206.
Portion 380 in
It can thus be seen that one embodiment of the present system can be used to push content of interest to the user, without the need for the user to conduct a separate search, or do any other research. The content of interest can be specific to the context within which the user is working. The content can be pushed to the user on substantially any display generated by the application. In one embodiment, the content is pushed on a main display screen associated with a given group of information displayed by the application. Of course, it will also be noted that the groups can be defined in any desired way, and those shown and described herein are illustratively only.
In addition, the content provided to the user through the generated links can be any desired content. It can be content which is believed to be of interest to the user, it can be content which is related to the application used by the user, it can be content which the manufacturer of the application or other content provider desires to have before the user in the selected context, or it can be any other desired information. The content can be located over a wide area network (such as the internet) or a local area network or simply by accessing a local database, otherwise. This makes it very easy for the user to view and take advantage of this information, without extra work on the part of the user.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.