The present invention relates generally to print job management systems, and more particularly, to print job management systems for shared printers on a computer network.
Computer communication networks enable multiple computers to communicate with one another to facilitate the exchange of information and to increase productivity. These networks are also used to couple resources to the computers so that the resources are shared and thus, more efficiently used. For example, a printer is a commonly shared resource on a computer network. By communicating print jobs from multiple computers to a commonly shared printer for output, a number of advantages are gained. For one, each computer no longer requires its own dedicated printer for the output of documents. This reduction in the number of printers required to support multiple computers may represent a significant financial savings for an organization. Additionally, the expense of maintaining and providing supplies for printers is reduced because the sharing of printer resources reduces the number of printers that need to be maintained by the organization.
Another benefit of sharing a printer on a computer network is that the printer is used more efficiently. When a printer is not printing a document, it is drawing power for no apparent purpose other than to be ready for printing a document. By coupling multiple computers to a printer, the printer is likely to process more jobs than if it was only coupled to a single computer. Consequently, the printer produces more documents over its life than if it was coupled to one computer only.
A typical network printing system comprises a plurality of different printers, client computers, and other network components coupled together on a network. On a client/server network, a client computer generates a print job that is sent to a printer controller server. The printer controller server determines whether a compatible logical printer is available for processing a print job. A logical printer receiving a print job processes the print job to generate a bit-mapped image file, sometimes called a raster file, which is placed in a queue for printing by a physical printer. In a peer-to-peer network, one or more printers have an associated printer controller that accepts print jobs from clients, processes them to produce a bit-mapped image file, and then directs the file to a compatible printer for printing.
Printers that are shared over a network typically differ in their state capabilities and characteristics. Some printers may be high speed so that large volume jobs may be processed and printed by the printer with nominal time spent waiting for a document to be printed. Other printers may provide color capabilities or be stocked with a variety of unusual stock sizes. Varying the types of printers coupled to a network makes a wide range of printing options available to the network users.
Although there are significant benefits to the coupling of multiple computers to a variety of shared printers having different capabilities, there are some drawbacks as well. To address these drawbacks, a printer controller server in a client/server network may include a print job manager that balances the processing loads for different printers coupled to the printer controller server in an effort to prevent over-utilization of one or more printers. Typically, a print job manager on a printer controller server includes a plurality of virtual or logical printers instantiated on the printer controller server. These logical printers are comprised of data objects with which a user may interact over the network to ascertain printer capabilities or to identify job attributes for a print job. The virtual printers of a print job manager receive print job tickets that are generated by the clients on the computer network. A job ticket is a data structure that identifies the user requesting the printer, the digital document to be printed, and the attributes of the print job to be performed, such as the paper size, font requirements, and other printing parameters. The print job manager directs print jobs to different queues to more evenly distribute the load among the printers coupled to the printer controller server that are capable of printing the requested jobs. The management of printer queues may be based on a number of factors including user priorities, the size of the job, the capabilities of the printers, and the order in which the print jobs are received. In this type of client/server network, multiple users may send documents to the same logical printer, which may cause it to become over-utilized and delay generation of the document. The print job manager addresses this problem by determining whether another printer coupled to the printer controller server can perform the print job and directing the job to that printer.
In a peer-to-peer network, however, a user of a client computer selects a logical printer of a printer controller to process a print job based on a match of the print job attributes to the printer capabilities. Because the print controller only controls the printers coupled to it, a job may be processed and placed in queue for a physical printer that is over-utilized. Meanwhile, another controller on the network may be coupled to a printer that is capable of processing and printing the job that is currently under-utilized. Unless the user of the client computer queries the logical printers of each printer controller, under-utilized printers may not be detected. If a user is required to query each controller, then the user's time to select a logical printer for each print job is increased. Thus, either user time or printer resources on the peer-to-peer network are not being efficiently used.
Another problem arising from different types of printers being shared on a network is the incompatibility of some printers with some print jobs. As long as at least one printer that possesses the necessary capabilities and characteristics for processing and printing a submitted print job is coupled to the network, this incompatibility does not adversely impact the performance of the network. However, if a particular characteristic is required by a number of documents being printed at the same time, that printer's queue may fill and delay document processing on the network. Thus, other printers may be available on the network, but the lack of the required characteristic precludes these otherwise available printers from being used.
The present invention addresses the need for managing printer resources on a peer-to-peer network, as well as other needs, by providing a method and system for exchanging print jobs between printer controllers to better balance the print job load across multiple printer controllers without requiring a central controller. In a system and method implemented in accordance with the principles of the present invention, the printer controllers communicate with one another to perform distributed load balancing. In one embodiment of the present invention, a printer controller has a data structure that identifies a list of alternative printer controllers. In response to a printer controller detecting a condition for forwarding a print job, the printer controller queries each alternative printer controller for logical printers capable of processing and printing the print job. The printer controller includes in this query, a file containing the print job attributes for the requested print job so that each alternative printer controller is able to determine whether at least one printer having the capability to print the print job is available at the alternative printer controller. Each controller returns a message identifying the characteristics of the printer at the controller, if any, that is capable of processing the print job and the current load of each capable printer. The querying print controller then selects the printer controller having a printer capable of processing the print job that is the least utilized. The printer controller then forwards the print job to the selected printer controller and informs the requesting client computer that the job has been forwarded. Status information regarding the processing of the print job is relayed by the querying controller from the processing printer controller to the client computer.
In one embodiment of the present invention, a system administrator of the network defines the list of alternative printer controllers that a printer controller may query to locate alternative printers for processing a print job. The list of alternative printer controllers may be defined in accordance to their physical locations. In this manner, the printers that may be used to process and print a user's print jobs may be located within the same building or facility. However, other factors may be used by the system administrator for defining the list of alternative printer controllers.
In one embodiment of the present invention, the load for a logical printer may be quantified by the number of jobs already in a queue associated with a printer or by the size of the jobs in the queue. Other measurements may be used to evaluate printer load, such as the time to print the jobs pending in a queue, stock sheets available in a supply tray, or toner level. The load measurement is a parameter or set of parameters that the querying printer controller may use to determine which printer capable of successfully completing the requested print job is least utilized.
Another aspect of the present invention is the processing of the characteristics returned to the querying printer controller. The printer controller may determine that no capable logical printer has every characteristic required for processing a print job. However, a comparison of the returned printer characteristics with the list of characteristics required for processing and printing the print job may indicate that the only characteristics that are missing from a capable logical printer are characteristics that can be downloaded from the querying printer controller. For example, the comparison may indicate that the logical printer corresponding to the returned printer characteristics does not have a font or a procedure set that is required for the print job. The querying printer controller, in response, downloads the font or procedure set to the alternative printer controller and forwards the job to the alternative printer controller upon confirmation that the characteristic has been successfully downloaded and installed in the logical printer. In this manner, the characteristics of logical printers on the network may be enhanced to handle more print jobs and increase the bandwidth for processing print jobs on the network. A log of the transfer of the font or procedure set may obtained by the system administrator to update records regarding the characteristics of the logical printers coupled to the network.
In another aspect of the current invention, the querying printer controller merges the logical printer attributes of the querying controller with the job attributes for the print job. The querying controller also modifies the print job to override the logical printer attributes of the logical printer at an alternative printer controller so the logical printer does not change the programming of the print job. This aspect enables the print job to be processed and printed by the logical printer at the alternative printer controller with printer attributes that match those of the printer at the printer controller to which the print job was originally directed. This reduces the likelihood of inadvertent change in the output because of differences in the logical printers of the two printer controllers. When this aspect of the present invention is combined with the feature for downloading a missing logical printer characteristic, it helps ensure that the logical printer coupled to the alternative printer controller produces printed output that matches the printed output that would have been generated by the logical printer to which the print job was originally directed.
The system and method of the present invention enable the printer controllers of a peer-to-peer network to balance the load on printers in the network even though the printers are coupled to the network through different printer controllers. Additionally, more printers are made available for processing print jobs because the print controllers are able to download characteristics, such as fonts and/or procedure sets, to enlarge the set of printers for processing print jobs. To ensure that the output images remain the same as those that would be produced at the querying controller, the querying controller merges the logical printer attributes of the logical printer at the querying controller with the attributes of the print job and then modifies the print job to override the logical printer attributes of the logical printer to which the print job is being forwarded.
The above described features and advantages, as well as others, will become more readily apparent to those of ordinary skill in the art by reference to the following detailed description and accompanying drawings.
In previously known systems, the client computers send print jobs to a logical printer on one of the printer controllers. The logical printer processes the print job to generate a bit-mapped image file that is placed in a queue managed by the printer controller for one of the printers coupled to the printer controller. When the print image file is released from the queue, it is directed to the printer to which the queue is associated and printed. Thus, the printer controller may only use the printers coupled to the printer controller.
In a system and method implemented in accordance with the principles of the present invention, the printer controllers on a peer-to-peer network communicate with one another to perform distributed load balancing. A printer controller that implements the principles of the present invention is shown in
The job forwarding module 40 is shown in more detail in
Each alternative printer controller returns a message to the job forwarding query manager 50 identifying the characteristics of the logical printers at the alternative printer controller that are capable of processing the print job, if any, and the current load of the capable printer(s). The job forwarding query manager 50 provides the returned data to the printer controller selector 58 and the selector 58 selects the alternative printer controller with a printer that is the least utilized that also has the capability of printing the job. In one aspect of the present invention, the printer controller selector 58 provides the print job to the job forwarding query manager 50 for sending to the selected printer controller. The job forwarding query manager 50 also informs the requesting client computer that the job has been forwarded. Thereafter, the printer controller to which the job is forwarded provides status information regarding the processing of the print job to the job forwarding query manager 50 so it may be relayed to the client computer.
In one embodiment of the present invention, a system administrator of the network defines the list of alternative printer controllers that a printer controller may query to locate alternative printers for processing a print job. The list of alternative printer controllers may be defined in accordance to their locations. In this manner, the printers that may be used to process and print a user's print jobs may be constrained to those located within the same building or facility. However, other factors may be used by the system administrator for defining the list of alternative printer controllers. In another embodiment of the present invention, each printer controller broadcasts its identifier and location or other associated data at the time that the network or printer controller is initialized. Using this data, each printer controller may build its own data structure to store data regarding the printer controllers on the peer-to-peer network. Any constraints imposed by a user at a client computer for selecting alternative controllers may also be transferred to the printer controller via the network and incorporated within the controller list.
In one embodiment of the present invention, the load for a logical printer may be quantified by the number of jobs already in a queue associated with a printer or by the size of the jobs in the queue. Other load measurements may be used, such as the time to print the jobs pending in a queue, stock sheets available in a supply tray, or toner level. The load measurement is a parameter or set of parameters that the querying printer controller may use to determine which capable printer is least utilized.
The printer controller selector 58 may also process the print job so that the logical printer attributes of the logical printer to which the job is forwarded do not override the attributes of the job. For this aspect of the present invention, the printer controller selector 58 retrieves the logical printer attributes of the logical printer 38 and merges them with the job attributes for the print job. The printer controller selector then modifies the print job file so that the print job attributes override the logical printer attributes to be used by the logical printer at the selected printer controller. This aspect ensures that the forwarding of the print job to another controller having a logical printer with the same characteristics for processing the job as the logical printer at the querying controller produces the same output. This reduces the likelihood of inadvertent change in the output because of differences between the logical printers of the two printer controllers.
The printer controller selector 58 may also process the responses of the queried printer controllers and then enhance the characteristics of the logical printer at a selected printer controller. The printer controller selector compares the logical printer characteristics returned from a queried controller with the list of characteristics required for the performing the print job. If a logical printer lacks only characteristics that can be downloaded from the printer controller, the printer controller selector 58 retrieves files for those characteristics from the characteristics data repository 60 and sends them to the job forwarding query manager 50. These characteristics are then communicated to the corresponding printer controller for installation in the logical printer.
Upon confirmation of successful installation of the logical printer characteristic(s), the querying printer controller forwards the job to the selected logical printer on the alternative printer controller. For example, the comparison may indicate that the logical printer corresponding to the returned printer characteristics does not have a font or a procedure set that is required for the print job. The printer controller selector 58, in response, obtains the font or procedure set from the characteristics data repository and provides it to the job forwarding query manager. The job forwarding query manager downloads the font or procedure set to the alternative printer controller and selects a logical printer on the alternative printer controller for the job upon confirmation that the font has successfully downloaded. In this manner, the characteristics of printers on the network may be enhanced to handle more print jobs and increase the bandwidth for processing print jobs on the network. A log of the transfer of the font or procedure set may obtained by the system administrator to update records regarding the characteristics of the printers coupled to the network.
Thus, the job forwarding module of the present invention enables the print controllers of a peer-to-peer network to balance the load on printers in the network even though they are coupled to the network through different printer controllers. Additionally, more printers are made available for processing print jobs because the print controllers are able to download fonts and/or procedure sets to enhance the set of characteristics for available logical printers. To ensure that the output images remain the same as those that would be produced at the querying controller, the printer controller selector 58 merges the logical printer attributes of the logical printer at the querying controller with the attributes of the print job and then modifies the print job file to override the logical printer attributes of the selected logical printer. When the techniques for preserving the logical printer attributes of a logical printer are combined with the feature for downloading a missing printer characteristic, safeguards are provided for ensuring that the logical printer receiving the forwarded print job prints it in the same way that the logical printer to which the job was originally directed would have printed the job.
A method of the present invention may be performed, for example, as shown in
A modification to the process of
Another process for performing the principles of the present invention, for example, is shown in
Once all the blocks are parsed, the process determines whether a logical printer was selected (block 120). If one was not, then the print job processing continues locally with the logical printer to which the print job was originally sent (block 126). However, if a logical printer was selected, the process determines whether the selected logical printer requires one or more printer characteristics to be downloaded (block 150). If the logical printer has the necessary characteristics, the print job is forwarded to the selected logical printer coupled to an alternative printer controller for processing (block 124). The client that submitted the print job is informed that the print job has been forwarded for processing (block 128). If a printer characteristic needs to be downloaded, the characteristic is retrieved from the characteristic data repository (block 154) and downloaded to the alternative printer controller to which the selected logical printer is coupled (block 158). If the alternative printer controller indicates that the one or more logical printer characteristics were successfully installed in the selected logical printer (block 160), the job is forwarded to the logical printer for processing (block 124) and the client is informed of the forwarding (block 128). Otherwise, the job is processed locally (block 126). Of course, the process of
While the present invention has been illustrated by the description of exemplary processes and system components, and while the various processes and components have been described in considerable detail, applicant does not intend to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will also readily appear to those skilled in the art. The invention in its broadest aspects is therefore not limited to the specific details, implementations, or illustrative examples shown and described. Accordingly, departures may be made from such details without departing from the spirit or scope of applicant's general inventive concept.