This patent relates generally to computer software and more particularly to business application software using the Internet.
Modern day businesses cannot function efficiently without use of state of the art technology. Specifically, computers and software are an almost essential part of most of the businesses in developed economies. Typically, businesses use a number of off the shelf business applications, such as Excel® as well as a number of custom applications specifically designed for a particular aspect of the business. There are a number of industry specific software applications that are developed by software companies to be used in a particular type of businesses, such as financial services, medical services, etc.
While such industry specific software applications are generally designed with specific characteristics of particular type of business in mind, they still need to be modified to be more suitable for use by the end user. For example, customer relationship management (CRM) software is one such example of a business application that is often modified by either the end user or by an independent software vendor specializing in this particular type of software.
Typically, when software developers ship a software application to an end user, they also provide help information about using, maintaining and debugging the software. In its earliest form, help information was generally provided by user manuals, user guides, etc., in a paper format. Increasingly, help information for software is provided in the electronic format in the form of a text file, as an interactive GUI resource, etc. With the development of the Internet, businesses typically use web based applications to provide distributed business solution on the Internet. Various software developers also provide help information for software using the Internet via, for example, the world-wide web.
Most business applications are generally highly customizable applications that can be customized by each customer with their unique needs. Typical customizations include addition of attributes to an existing entity, adding new entities, renaming or re-labeling one or more entities, etc. When applications are customized, the list of entities, their properties and their relationships may change from their original properties and relationships. If an application for which a central server is used to provide help information over the Internet, when there are changes made to the application locally, it is a challenge to keep the central help server up-to-date with the changes made locally. Moreover, when one central server is used to provide help information to a number of users and when each of the number of users makes different modifications to their own local applications, it becomes extremely difficult to incorporate these changes into the help information resources located at the central location.
Moreover, this problem with the lack of consistency between online resource and a local resource is not only limited to online help and a user interface. Even for two or more applications that are located on a same machine, if there is a change made to one of such applications, it is difficult to communicate such changes to the other local applications. Therefore, there is a need to provide a consistent means for exchanging information regarding customization or other changes made to an application.
A metadata driven system for allowing various applications to extract metadata information about an application provides a method of storing metadata about the application, an apparatus for extracting metadata information about the application and an apparatus for converting the metadata information about the application into a form usable by the various applications. The metadata driven system allows updates made to the application to be conveyed to one or more of the other applications using metadata. Any of the various applications extracting the metadata information of the application may be connected to the application via a communication network, such as the Internet.
An implementation of the metadata driven system allows an online help system to extract metadata information about an application and to use the metadata information to provide online help related to the application. The metadata driven online help system is able to provide help information to users of a number of different versions of an application, thus allowing each user to make updates to the application as needed for particular needs. This is extremely useful for business applications that frequently need to be updated according to end user's particular business needs.
An alternate implementation of the metadata driven system allows a user interface system to extract metadata information about an application and to use the metadata information to provide user interface that is automatically updated to reflect any changes in the application. The metadata driven user interface system automatically incorporates any changes or updates made to various properties of entities used in the application into the user interfaces provided presented to the users. Therefore, there is no need for a user to update the user interface code every time the underlying application is modified. An alternate implementation of the metadata driven system may be used for any one application to extract metadata related to another application and use the extracted metadata to provide one or more services.
Although the following text sets forth a detailed description of numerous different embodiments, it should be understood that the legal scope of the description is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment since describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims defining the invention.
It should also be understood that, unless a term is expressly defined in this patent using the sentence “As used herein, the term ‘______’ is hereby defined to mean . . . ” or a similar sentence, there is no intent to limit the meaning of that term, either expressly or by implication, beyond its plain or ordinary meaning, and such term should not be interpreted to be limited in scope based on any statement made in any section of this patent (other than the language of the claims). To the extent that any term recited in the claims at the end of this patent is referred to in this patent in a manner consistent with a single meaning, that is done for sake of clarity only so as to not confuse the reader, and it is not intended that such claim term by limited, by implication or otherwise, to that single meaning. Finally, unless a claim element is defined by reciting the word “means” and a function without the recital of any structure, it is not intended that the scope of any claim element be interpreted based on the application of 35 U.S.C. § 112, sixth paragraph.
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 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 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, radio frequency, infrared and other wireless media. Combinations of the 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
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 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, although only a memory storage device 181 has been illustrated 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 application 202 may be a customer relation management (CRM) application, a human resource (HR) application, etc.
A user may interact with one or more of the plurality of objects 218 using the GUI window 216. For example, a user may display a particular table related to one of the objects 218 in the GUI window 216 and input values to that particular table. The GUI window 216 may also include a help button 220 that can be selected by a user to get help information on one of the plurality of objects 218 and display the help information in the GUI window 216. The application 202 may be designed in a manner such that upon selection of the help button 220, the user is connected to the help information module 206. This may be accomplished, for example, by generating a request directed to the universal resource locator (URL) of the server hosting the help information module 206.
Furthermore, the application 202 may be designed in a manner such that the help information request sent to the help information module 206 also specifies the topic for which help information is requested. For example, if a user is currently working with a payment window, help information related to the payment information may be requested from the help information module 206. Alternatively, the application 202 may be designed so that upon selection of the help button 220, a menu may be presented to the user to allow the user to select the topic for which the help information needs to be requested from the help information module 206.
A flowchart illustrating the functioning of the online help system 200 is illustrated in
At a block 252, a user selects to receive online help by selecting the help button 220 or by any other means. For example, in an alternate implementation online help may be accessed automatically upon occurrence of a predetermined event, such as an error committed by the user, etc. In response to the request for help, a block 254 connects the user to the online help.
Subsequently, at a block 256, the help information module 206 refers to the metadata access module 212 to get metadata information regarding the object for which help information is requested. For example, if help is requested for a form object, the program 250 may refer to the metadata access module 212 to get further information regarding the form object. The metadata access module 212 may keep up-to-date metadata information about various objects of the application 202. Thus, if the application 202 is updated by the user, the metadata stored in the metadata access module 212 may also be updated to reflect the updates made to the application 202. As a result, the help information module 206 is always able to access up-to-date information about the application 202.
After getting metadata information from the metadata access module 212, a block 258 incorporates the metadata information about the application 202 into text resources necessary to provide the help information. The text resources can be accessed from the text resource module 210. The conversion module 214 may be used to convert the metadata information about the application 202 in a manner so that resulting information can be incorporated into the text resources obtained from the text resources module 210. Subsequently, a block 260 sends the necessary text resource, along with the. information pointed to by the metadata, which together provide the help information to the user, to the application 202. The application 202 may display such help information to the user on the graphical user interface 216.
An example of the functioning of the online help program 250 is illustrated in
A section of text, addressing use of the menu item CustTrans, as stored in the text resources module 210 is shown in a block 272. Specifically, the block 272 illustrates that instead of referring directly to the text of the menu item CustTrans, as displayed on the GUI 216, the text resource module 210 refers to the metadata of the menu item CustTrans. Thus, when help related to the menu item CustTrans is rendered, the metadata access module 212 accesses the metadata related to the menu item CustTrans and the conversion module 214 converts the metadata into appropriate text information. This is illustrated in
The block 274 illustrates a metadata table for the menu item CustTrans. As illustrated in the block 274, the label for the menu item CustTrans is stored as a memory address of @SYS1084. The block 276 illustrates that the value stored in the memory as the address @SYS1084 is “Transactions.” Thus, when the conversion module 214 converts the section of text from the block 272 according to the current metadata related to the menu item CustTrans, as shown in the Block 278, it substitutes the text “Transactions” into the help text rendered on the GUI 216.
While the online help menu system 200 illustrates one application of a method of extracting metadata information from an application, an alternate application is illustrated by a metadata driven user interface system 300 of
Specifically, the user interface system 300 may include a metadata storage module 306, a metadata access module 308, a metadata conversion module 310, a text resources module 312 and a communication module 314. The metadata storage module 306 may store up-to-date metadata related to the various entities of various applications, such as the entities 316 of the application 302. Thus, anytime a change is made to an entity structure within the application 302, it may notify the metadata storage module 306 of such changes. The metadata access module 308 may allow various applications to access the metadata information stored in the metadata storage module 306, while the metadata conversion module 310 may convert such metadata into text information. The metadata conversion module 310 may use text information stored in the text resources module 312. Finally, the communication module 314 allows the user interface system 300 to communicate with the application 302 and the user interface 304.
An example of the functioning of the user interface system 300 is illustrated in
An example Customers form is illustrated in block 334. Before displaying the Customers form, the metadata access module 308 accesses the metadata for the Customers form. An example of metadata for the Customers form is illustrated in block 336, which illustrates that the caption for the label of Customers form is stored at location @SYS19920. Subsequent block 338 illustrates that the location @SYS19920 provides the caption of the Customers form as “Customers.”
However, in an alternate scenario, a user may want to change the caption of the Customers form to “Clients” and refer to the corresponding menu item in the accounts receivable user interface 330 by “Clients.” In this case, the menu item metadata (illustrated in the block 332) and the form metadata (illustrates in the block 336) may be changed to reference a new location @SYS69369, where the location @SYS69369 may provide a text caption of “Clients.” In this case, the resulting accounts receivable user interface will have a menu item “Clients,” as illustrated in a block 340, while the Customers form user interface will have a caption of “Clients,” as illustrated in the block 342.
A person of ordinary skill in the art would appreciate the advantages of using the metadata driven online help system 200 or the metadata driven user interface system 300 described above, for a business application that may need frequent updating and custom development capabilities. Making a business application to work with metadata driven systems provides tremendous value in terms of allowing customization and support for customization, without having to redevelop the help system or the user interface system for such a business application.
Although the forgoing text sets forth a detailed description of numerous different embodiments of the invention, it should be understood that the scope of the invention is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment of the invention because describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims defining the invention.
Thus, many modifications and variations may be made in the techniques and structures described and illustrated herein without departing from the spirit and scope of the present invention. Accordingly, it should be understood that the methods and apparatus described herein are illustrative only and are not limiting upon the scope of the invention.