Various embodiments of the present invention are hereinafter described in conjunction with the appended drawings:
It is to be noted, however, that the appended drawings illustrate only example embodiments of the invention, and are therefore not considered limiting of its scope, for the invention may admit to other equally effective embodiments.
In an embodiment, a server sets dependency indications for documents. A dependency indication indicates a relationship of the respective document to products and to types of clients at which the products may be installed. In an embodiment, the dependency indication indicates the document is dependent on an identified product. Being dependent on an identified product means that in order for a page with a link to the document to be sent to the client, the identified product must be installed at the client. In another embodiment, the dependency indication indicates that the document is dependent on a product collection to which multiple products belong. Being dependent on the product collection means that in order for a page with a link (including an identifier and address) to the document to be sent to the client, at least one of the products that belongs to the product collection must be installed at the client. In another embodiment, the dependency indication indicates the document is dependent on an identified type of the client, but is independent of whatever products may be installed at the client having that type. Being dependent on a client type means that in order for a page with link to the document to be sent to a client, the client must have the identified type, regardless of what products are installed at the client (if any).
The server receives inventories from clients, and the inventories identify the products that are installed at the respective clients. In response to a request from a client, documents are selected based on the document's dependency indication, the client's type, and/or the products that are installed at the client. In an embodiment, the document is selected if its dependency indication indicates the document is dependent on a product and the product is installed at the client. In another embodiment, the document is selected if its dependency indication indicates the document is dependent on a product collection and at least one of the products in the collection is installed at the client. In another embodiment, the document is selected if its dependency indication indicates the document is dependent on the type of the client and the client has that type installed at the client. The identifier and address of the selected documents are added to a page, and the page is sent to the client.
Referring to the Drawings, wherein like numbers denote like parts throughout the several views,
The major components of the server computer system 100 include one or more processors 101, a main memory 102, a terminal interface 111, a storage interface 112, an I/O (Input/Output) device interface 113, and communications/network interfaces 114, all of which are coupled for inter-component communication via a memory bus 103, an I/O bus 104, and an I/O bus interface unit 105.
The server computer system 100 contains one or more general-purpose programmable central processing units (CPUs) 101A, 101B, 101C, and 101D, herein generically referred to as the processor 101. In an embodiment, the server computer system 100 contains multiple processors typical of a relatively large system; however, in another embodiment the server computer system 100 may alternatively be a single CPU system. Each processor 101 executes instructions stored in the main memory 102 and may include one or more levels of on-board cache.
The main memory 102 is a random-access semiconductor memory for storing or encoding data and programs. In another embodiment, the main memory 102 represents the entire virtual memory of the server computer system 100, and may also include the virtual memory of other computer systems coupled to the server computer system 100 or connected via the network 130. The main memory 102 is conceptually a single monolithic entity, but in other embodiments the main memory 102 is a more complex arrangement, such as a hierarchy of caches and other memory devices. For example, memory may exist in multiple levels of caches, and these caches may be further divided by function, so that one cache holds instructions while another holds non-instruction data, which is used by the processor or processors. Memory may be further distributed and associated with different CPUs or sets of CPUs, as is known in any of various so-called non-uniform memory access (NUMA) computer architectures.
The main memory 102 stores or encodes link data 150, inventory dependency token data 152, validated dependency data 154, inventory data 156, a navigation page 158, and a controller 160. Although the link data 150, the inventory dependency token data 152, the validated dependency data 154, the inventory data 156, the navigation page 158, and the controller 160 are illustrated as being contained within the memory 102 in the server computer system 100, in other embodiments some or all of them may be on different computer systems and may be accessed remotely, e.g., via the network 130. The server computer system 100 may use virtual addressing mechanisms that allow the programs of the server computer system 100 to behave as if they only have access to a large, single storage entity instead of access to multiple, smaller storage entities. Thus, while the link data 150, the inventory dependency token data 152, the validated dependency data 154, the inventory data 156, the navigation page 158, and the controller 160 are illustrated as being contained within the main memory 102, these elements are not necessarily all completely contained in the same storage device at the same time. Further, although the link data 150, the inventory dependency token data 152, the validated dependency data 154, the inventory data 156, the navigation page 158, and the controller 160 are illustrated as being separate entities, in other embodiments some of them, portions of some of them, or all of them may be packaged together.
The link data 150 describes the dependencies of the documents to products that may be installed at the clients. The link data 150 is further described below with reference to
In an embodiment, the controller 160 includes instructions capable of executing on the processor 101 or statements capable of being interpreted by instructions executing on the processor 101 to perform the functions as further described below with reference to
The memory bus 103 provides a data communication path for transferring data among the processor 101, the main memory 102, and the I/O bus interface unit 105. The I/O bus interface unit 105 is further coupled to the system I/O bus 104 for transferring data to and from the various I/O units. The I/O bus interface unit 105 communicates with multiple I/O interface units 111, 112, 113, and 114, which are also known as I/O processors (IOPs) or I/O adapters (IOAs), through the system I/O bus 104. The system I/O bus 104 may be, e.g., an industry standard PCI (Peripheral Component Interface) bus, or any other appropriate bus technology.
The I/O interface units support communication with a variety of storage and I/O devices. For example, the terminal interface unit 111 supports the attachment of one or more user terminals 121, 122, 123, and 124. The storage interface unit 112 supports the attachment of one or more direct access storage devices (DASD) 125, 126, and 127 (which are typically rotating magnetic disk drive storage devices, although they could alternatively be other devices, including arrays of disk drives configured to appear as a single large storage device to a host). The contents of the main memory 102 may be stored to and retrieved from the direct access storage devices 125, 126, and 127, as needed.
The I/O device interface 113 provides an interface to any of various other input/output devices or devices of other types. Two such devices, the printer 128 and the fax machine 129, are shown in the exemplary embodiment of
Although the memory bus 103 is shown in
The server computer system 100 depicted in
The network 130 may be any suitable network or combination of networks and may support any appropriate protocol suitable for communication of data and/or code to/from the server computer system 100, the client computer systems 132, and the server computer systems 135. In various embodiments, the network 130 may represent a storage device or a combination of storage devices, either connected directly or indirectly to the server computer system 100. In an embodiment, the network 130 may support the Infiniband architecture. In another embodiment, the network 130 may support wireless communications. In another embodiment, the network 130 may support hard-wired communications, such as a telephone line or cable. In another embodiment, the network 130 may support the Ethernet IEEE (Institute of Electrical and Electronics Engineers) 802.3x specification. In another embodiment, the network 130 may be the Internet and may support IP (Internet Protocol).
In another embodiment, the network 130 may be a local area network (LAN) or a wide area network (WAN). In another embodiment, the network 130 may be a hotspot service provider network. In another embodiment, the network 130 may be an intranet. In another embodiment, the network 130 may be a GPRS (General Packet Radio Service) network. In another embodiment, the network 130 may be a FRS (Family Radio Service) network. In another embodiment, the network 130 may be any appropriate cellular data network or cell-based radio network technology. In another embodiment, the network 130 may be an IEEE 802.11B wireless network. In still another embodiment, the network 130 may be any suitable network or combination of networks. Although one network 130 is shown, in other embodiments any number of networks (of the same or different types) may be present.
The client computer systems 132 may include some or all of the hardware components previously described above as being included in the server computer system 100. The client computer systems 132 include an application 136 and products 138. The application 136 sends inventory data 156 to the server computer system 100 and receives and displays or presents the navigation page 158. The application 136 may be implemented via a browser, an operating system, a user application, a third-party application, or any appropriate program encoded with executable instructions or interpretable statements for execution on a processor with a description similar to the processor 101. In another embodiment, the application 136 may implemented in hardware. The products 138 may be any hardware and/or software encoded in memory analogous to the memory 102. The products 138 are installed at the client computer systems 132, which means that they are connected electrically and/or mechanically to the client computer systems 132. The products 138 may be, but are not necessarily, operational.
The server computer systems 135 may include some or all of the hardware components previously described above as being included in the server computer system 100. The servers 135 include documents 170 stored in memory with a similar description as the main memory 102. The documents 170 may include any appropriate content, such as tutorials, help information, tips, techniques, installation information, problem diagnosis and resolution information, service information, or any other appropriate information. In various embodiments, the documents 170 may be implemented via documents, files, objects, tables, databases, directories, subdirectories, or any portion or combination thereof and in some embodiments may include embedded control tags, statements, or logic instructions or statements in addition to, or in lieu of data. The documents 170 are further described below with reference to
It should be understood that
The various software components illustrated in
Moreover, while embodiments of the invention have and hereinafter will be described in the context of fully-functioning computer systems, the various embodiments of the invention are capable of being distributed as a program product in a variety of forms, and the invention applies equally regardless of the particular type of signal-bearing medium used to actually carry out the distribution. The programs defining the functions of this embodiment may be delivered to the server computer system 100 and/or the client computer system 132 via a variety of tangible signal-bearing media that may be operatively or communicatively connected (directly or indirectly) to the processor or processors, such as the processor 101. The signal-bearing media may include, but are not limited to:
(1) information permanently stored on a non-rewriteable storage medium, e.g., a read-only memory device attached to or within a computer system, such as a CD-ROM readable by a CD-ROM drive;
(2) alterable information stored on a rewriteable storage medium, e.g., a hard disk drive (e.g., DASD 125, 126, or 127), the main memory 102, CD-RW, or diskette; or
(3) information conveyed to the server computer system 100 and/or the client computer system 132 by a communications medium, such as through a computer or a telephone network, e.g., the network 130.
Such tangible signal-bearing media, when encoded with or carrying computer-readable and executable instructions that direct the functions of the present invention, represent embodiments of the present invention.
Embodiments of the present invention may also be delivered as part of a service engagement with a client corporation, nonprofit organization, government entity, internal organizational structure, or the like. Aspects of these embodiments may include configuring a computer system to perform, and deploying computing services (e.g., computer-readable code, hardware, and web services) that implement, some or all of the methods described herein. Aspects of these embodiments may also include analyzing the client company, creating recommendations responsive to the analysis, generating computer-readable code to implement portions of the recommendations, integrating the computer-readable code into existing processes, computer systems, and computing infrastructure, metering use of the methods and systems described herein, allocating expenses to users, and billing users for their use of these methods and systems.
In addition, various programs described hereinafter may be identified based upon the application for which they are implemented in a specific embodiment of the invention. But, any particular program nomenclature that follows is used merely for convenience, and thus embodiments of the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature.
The exemplary environments illustrated in
The document identifier field 350 uniquely identifies a document 170; in various embodiments, the document identifier 350 may be a name, a title, an abstract, a numerical identifier, an alphanumeric identifier, or any other appropriate technique for identifying the document 170. The document address field 355 indicates the address or location of the document 350 from which the document 350 may be retrieved. In an embodiment, the document address 355 may be a URL (Uniform Resource Locator) or other address of the document at the server computer system 135.
The inventory dependency indication field 360 indicates a relationship of the document to the products 138 and to types of the client computer systems 132. In an embodiment, the inventory dependency indication field 360 indicates the document 170 (with the document identifier 350 and the document address 355) is dependent on the product 138 that is identified in the inventory dependency field 360. Examples of a document 170 being dependent on a product 138 are illustrated in records 305, 320, 325, and 330. Being dependent on the identified product means that in order for a link (including the document identifier 350 and the document address 355) of the document 170 to be sent to a client computer system 132 of the client type 340, the product 138 identified by the inventory dependency indication 360 must be installed at that client computer system 132.
In another embodiment, the inventory dependency indication 360 indicates the document 170 is dependent on a product collection that identifies multiple products, and the product collection is a subset of all of the possible products 138. An example of a document 170 being dependent on a product collection is illustrated in record 310. The inventory dependency indication 360 of the record 310 uses the convention that any product whose token falls within “303001” to “30399” belongs to the product collection whose token is “30300,” but in other embodiments any appropriate convention may be used for identifying a product collection and products that belong to the product collection. For example, in other embodiments, the controller 160 may use the token of the product collection as an index to find a row or record of products that belong to the product collection, or the token of the product collection may point to or identify the tokens that identify the products that belong to the product collection. Being dependent on the product collection that is identified in the inventory dependency indication field 360 means that in order for a link to the document 170 to be sent to the client computer system 132, at least one of the products 138 that belongs to the product collection must be installed at the client computer system 132.
In another embodiment, the inventory dependency indication field 360 indicates that the document 170 is dependent on the type 340 of the client computer system 132, but is independent of whatever products 138 may be installed at the client computer system 132. An example of a document 170 being dependent on a client type 340 is illustrated by record 315, which has no product identified in the inventory dependency indication 360. Being dependent on a client type 340 means that in order for a link to the document 170 to be sent to the client computer system 132, the client computer system 132 must have the client type 340, regardless of what products 138 are installed at the client computer system 132 (if any).
Control then continues to block 1010 where the controller 160 sets the inventory present field 560 in the validated dependency data 154 for the client computer system 132 that send its inventory to indicate that the product is installed for those products 138 that are in the received inventory data 156. In various embodiments, the controller 160 may perform the processing of block 1010 in response to receipt of the inventory from the application 136, may store the inventory for later processing, and/or may accumulate inventories from multiple clients before processing the validated dependency data. Control then continues to block 1015 where the controller 160 waits for another inventory, which may be for the same or a different client computer system 132. Control then returns to block 1005, as previously described above.
Control then determines to block 1115 where the controller 160 enters a loop that is executed once for each document 170 in the subset of the link data 150. The current document, as used herein, is the document 170 associated with the current record in the subset of the link data 150 that the controller 160 is processing during the current iteration of the loop. The controller 160 determines whether the current document 170 of the current record in the subset of the link data 150 is dependent on the client type 340 of the client computer system 132 that sent the request. In an embodiment, the controller 160 makes the determination of block 1115 by determining whether the inventory dependency indication 360 for the current record in the subset of the link data 150 associated with the current document 170 is lacking a group token.
If the inventory dependency indication 360 for the current record in the subset of the link data 150 associated with the current document 170 is dependent on the client type 340, then the current document 170 is independent of any products 138, regardless of whether the products 138 are installed at the client computer system 132, so the current document 170 is applicable to, and is dependent on, a client computer system 132 that has the client type 340 of the record. An example of a record in the data that represents a document 170 that is dependent on a client type 340 is the record 315. If the determination at block 1115 is true, then the current document 170 is dependent on the type 340 of the client computer system 132, so control continues to block 1120 where the controller 160 adds the current document identifier 350 and the current document address 355 to the navigation page 158.
Control then continues to block 1125 where the controller 160 determines whether a next document 170 exists with a record in the subset of the link data 150 that has not yet been processed by the loop that starts at block 1115. If the determination at block 1125 is true, then a next document 170 exists that has not yet been processed, so the controller 160 sets the current document 170 to be the next document 170 and returns to block 1115, as previously described above.
If the determination at block 1125 is false, then all of the documents 170 represented in the subset of the link data 150 have been processed by the loop that starts at block 1115, so control continues from block 1125 to block 1130 where the controller 160 sends the navigation page 158 to the application 136 at the client computer system 132 that sent the request. The application 136 receives the navigation page 158, renders the information, displays the information, and retrieves any document or documents 170 selected via the links 705, 710, or 715. Control then continues to block 1199 where the logic of
If the determination at block 1115 is false, then the current document is not dependent on the client type 340 of the client computer system 132, so control continues to block 1135 where the controller 160 determines whether the current document 170 is dependent on a product collection and at least one product that belongs to the collection is installed at the client computer system 132 that sent the request. The controller 160 makes the determination of block 1135 by determining if the inventory dependency indication 360 in the current record of the subset of the link data 150 associated with the current document 170 indicates a group token that identifies a collection of the products 138 and at least one of the products 138 that belongs to the product collection has an associated group token that exists in a record of the validated dependency data 154-1 for the client computer system 132 that has the inventory present field 560 set to indicate that the at least one product that belongs to the collection is installed at the client computer system 132. An example of a document 170 that is dependent on a product collection is the document 170 represented by the record 310, which is dependent on the group token “30300,” which represents a product collection to which the products 138 represented by the tokens “30301,” “30302,” and “30303” belong. One of the products 138 that belongs to the product collection is installed at the client computer system 132, as indicated by the record 520 in the validated group dependency data 154-1, which shows the group 555 having a token of “30302” with the inventory present 560 set to indicate that the product represented by “30302” is installed at the client computer system 132.
If the determination at block 1135 is true, then the current document 170 is dependent on a product collection with at least one product that belongs to the product collection installed at the client computer system 132, so control continues to block 1120 where the controller 160 adds the document identifier 350 and document address 355 of the current document to the navigation page 158. Control then continues to block 1125, as previously described above.
If the determination at block 1135 is false, then the current document 170 is not dependent on a product collection that has a product installed at the client computer system 132, so control continues to block 1140 where the controller 160 determines whether the current document 170 is dependent on a product 138 that is installed at the client computer system 132. The controller 160 makes the determination of block 1140 by determining if the inventory dependency indication 360 in the current record of the subset of the link data 150 associated with the current document 170 indicates a group token and that group token exists in a record of the validated dependency data 154-1 for the client computer system 132 that has the inventory present field 560 set to indicate that the product 138 identified by the group token is installed at the client computer system 132. If the determination at block 1140 is true, then the current document 170 is dependent on a product that is installed at the client computer system 132 that sent the request, so control continues to block 1120, as previously described above.
If the determination at block 1140 is false, then the current document 170 is not dependent on a product that is installed at the client computer system 132, so control continues to block 1125, as previously described above.
In the previous detailed description of exemplary embodiments of the invention, reference was made to the accompanying drawings (where like numbers represent like elements), which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments were described in sufficient detail to enable those skilled in the art to practice the invention, but other embodiments may be utilized and logical, mechanical, electrical, and other changes may be made without departing from the scope of the present invention. In the previous description, numerous specific details were set forth to provide a thorough understanding of embodiments of the invention. But, the invention may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail in order not to obscure the invention.
Different instances of the word “embodiment” as used within this specification do not necessarily refer to the same embodiment, but they may. Any data and data structures illustrated or described herein are examples only, and in other embodiments, different amounts of data, types of data, fields, numbers and types of fields, field names, numbers and types of rows, records, entries, or organizations of data may be used. In addition, any data may be combined with logic, so that a separate data structure is not necessary. The previous detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.