Abstract:
A method generally for output handling a new imaging job, and specifically for handling such a job by delivering it to one of several currently job-engaged imaging output devices (illustrated as printers) including the steps of (a) examining the current job-processing statuses of such devices, and (b) from the result of that examining, determining the respective remainders in the amounts of current-job work still to be performed by those devices. The method thus features the acquisition and use of output device busyness information as an important part of the approach toward promoting efficient output handling of new imaging jobs.

Description:
BACKGROUND AND SUMMARY OF THE INVENTION  
       [0001]     This invention relates to the handling of imaging jobs in an imaging-job system, and in particular to the function of deciding issues relating to the handling of a new imaging job based upon acquired knowledge regarding the current statuses of busyness of plural, currently engaged imaging output devices of any category. A preferred and best-mode embodiment of, and manner of practicing, the invention are described and illustrated herein, for representational purposes, in the context of handling print (imaging) jobs, and more specifically to the maximizing of print-job handling through the delivery of new print jobs to different ones of plural, currently engaged printers based upon knowledge of those printers&#39; respective current statuses of busyness.  
         [0002]     Notwithstanding the specific use of a printing environment, and the distribution to printers of new print jobs, to illustrate the invention throughout this disclosure, it should be understood that other imaging environments and devices may utilize the invention. Included among, but not limiting, other such environments are those involving faxing, scanning, copying, document archiving and retrieving, document converting and manipulation, and document transferring.  
         [0003]     As will be seen, the present invention, to accomplish the above-mentioned behavior, features the practice of determining the respective remainders in the amounts of current-job work still to be performed by the several imaging output devices before they will become available to take on a new job. This determination may be expressed, for example, as (a) assessing completion job sizes relating to the current jobs, and/or as (b) assessing the times-to-availability of the respective, associated output devices.  
         [0004]     In a printing environment where one desires to complete the outputting of a print job as soon as possible, the user sends the print job to a compatible printer (or device) believed to be the one which will complete the job the soonest. Several methods exist to automate this process. One such method is pool printing. In a pool printing system, a system component analyzes the requirements of the imaging job and the status and performance capabilities of a pool of compatible imaging devices, and determines which device will complete the job the soonest.  
         [0005]     Another method involves job splitting. In job splitting, a component in a system performs an analysis of the job and of a group of compatible imaging devices to determine a proportional distribution of subparts of the imaging job, such that each device completes at approximately the same time. Another objective in a job-splitting practice is that the selection of devices and distribution results in the soonest completion of any combination within the group.  
         [0006]     When all of the devices in the pool or group are idle and in a warmed-up state, the selection and distribution of jobs tends to be very reliable, where generally only the performance capabilities of devices are required. However, when at least one of the candidate devices is busy, and the distribution is likely to include at least one of the busy devices, the determination of availability is much more complicated. In the case of pool printing, if all of the potential devices are busy, not only is it important to know how fast a device can print a print job (i.e., performance capabilities), but also to know when a device will be available in relation to the other devices. In the case of job splitting, if at least one of the devices is busy, again it is important, in order to calculate the appropriate distribution, to know when each of the busy devices will be available.  
         [0007]     Thus, simply determining device status (i.e., idle vs. busy) is not sufficient. Several methods exist to quantify how busy a device is. One of these methods involves counting the number of jobs currently assigned (e.g., processing, pending and spooling) to a device. The device with the smallest number of assigned jobs (e.g., print queue) is assumed to be the first available. This approach, however, is only reliable if the jobs on the devices are approximately the same size. Otherwise, the method can be substantially inaccurate, especially where the device with the smaller/smallest number of jobs has jobs substantially greater in size than the other ‘more busy’ devices.  
         [0008]     An improved prior art approach involves estimating the total workload of the assigned jobs. One practice involves counting the number of sheets that will be output by the assigned jobs. This method is only reliable if the jobs are in the same state of processing (e.g., pending), and the amount of rendering/RIP per sheet is approximately the same. Otherwise, the method can be significantly incorrect. For example, a sheet with only plain text will render in little to no time, while a sheet with complex graphics may take a substantial amount of time. The state of the job is also important. For example, if a job is pending, none of the sheets have been rendered/RIP or output. But if a job is processing, some subset of the job is rendered/RIP and/or output.  
         [0009]     Still another prior art approach involves counting the number of bytes in the current jobs. A job with a smaller byte size is assumed to render/RIP faster than a job of greater size. For example, a one page job with only text will be substantially smaller than a one page job with complex graphics. This method is only reliable if the jobs are in the same state of processing (e.g., pending), and the number of sheets in each job is approximately the same. For example, a 1000-page job of only plain text may still produce a spool file smaller or equal to a one-page complex graphic job. While the latter job will take longer to render a single sheet, the outputting of a 1000-sheets will dominate the elapsed time to complete the jobs.  
         [0010]     While these and other prior art efforts take aim at addressing the issue focused upon generally by the present invention, none offers the efficiency and accuracy attained by the method of the present invention. This invention, as was briefly mentioned earlier herein is based upon taking an actual look at the exact states of current busyness (i.e., how busy?) of prospectively available but currently engaged printers (imaging output devices), and upon offering quite precise information regarding answers to this question. Engaged printers&#39; statuses are, with particularity, assessed with respect to their respective states of current job processing, and information for each printer is generated with accuracy regarding how much of a currently-being-handled job still needs to be done. Several implementations are described herein.  
         [0011]     Thus, the invention proposes an effective method of determining when a busy printing device will be available by weighting each sheet in the job according to its byte size and state of processing.  
         [0012]     An imaging job is decomposed into the number of sheets. The total outputting time for the job can then be calculated from the number of sheets and the performance capabilities of the marking engine (e.g., ppm). Each sheet is further decomposed into the number of bytes of data associated with the sheet (e.g., spool data size), such that each sheet can be weighted to calculate the amount of time to render/rasterize each sheet. Each sheet in the job is then classified as to where in the processing state it is (e.g., unprocessed, RIP&#39;d, output).  
         [0013]     The total elapse time to process a job can then be calculated as the total time for rendering/rasterizing the unprocessed sheets plus the total time to output the unprocessed and render/rasterized sheets.  
         [0014]     Further, practice of the invention may include retaining spool data size and render/rasterize time of render/rasterized sheets to derive a weighting method to associate the spool data size with the time to render/rasterize.  
         [0015]     The various features and advantages offered by the present invention will become more fully apparent as the description which now follows is read in accordance with the accompanying drawings. 
     
    
     DESCRIPTION OF THE DRAWINGS  
       [0016]      FIG. 1  is a simplified, high-level, block, schematic diagram which illustrates generally the preferred and best-mode implementation of the present invention in the environment of a network-connected printing system.  
         [0017]      FIG. 2  is as a simplified diagram showing certain imaging (print) job decompositions which take place during an early stage in the practice of the invention.  
         [0018]      FIG. 3  is a simplified, schematic diagram of one preferred practice of the invention wherein unfinished current print job size is used to help determine the anticipated readiness of an associated printer to take on a new print job.  
         [0019]      FIG. 4  is a simplified, schematic diagram of another preferred invention practice which involves assessment of the time-to-availability for a currently busy printer.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0020]     Turning now to the drawings, and referring first of all to  FIG. 1 , indicated generally and fragmentarily at  10  in this figure is a network-connected printing, or imaging, environment (or system). Environment  10  includes a host computer, or host  12 , and three printers, or output imaging devices,  14 ,  16 ,  18 . Host  12  and printers  14 ,  16 ,  18  are represented by blocks. Printers  14 ,  16 ,  18  are also labeled P 1 , P 2 , P n , respectively. An appropriate network communication medium  20  interconnects host  12  and these three illustrated printers, and this medium, which is shown in  FIG. 1  in the form of a wired medium, may be either wired or non-wired.  
         [0021]     Printers  14 ,  16 ,  18 , are currently busy and engaged in handling three current print jobs represented by rectangles  22 ,  24 ,  26 , respectively, and each of these rectangles is divided into lower shaded, and upper unshaded, portions, such as portions  22   a ,  22   b  respectively, shown for job  22 . Shaded portions of rectangles  22 ,  24 ,  26  represent, essentially, the percentages of these jobs which have been processed (and perhaps also output, or printed), and the unshaded portions represent remainder amounts or percentages of the jobs still waiting to be processed and output. Job  22  is the one which is the least completed. Job  24  is the one which is the next most completed. Job  26  is the one which is the most completed.  
         [0022]     Two additional blocks  28 ,  30  are presented in  FIG. 1 . Block  28  represents a new print job which is awaiting delivery by host  12  to a selected one of printers  14 ,  16 ,  18 . Block  30  represents appropriate practice of the present invention to determine which one of printers  14 ,  16 ,  18  should receive this new job—a practice which involves the making of such a determination based upon a status examination of each of currently engaged printers  14 ,  16 ,  18  to learn effectively the amount of associated current-job work which still needs to be performed by the printer to complete the job.  
         [0023]     These determinations will be employed in the making of a choice regarding the delivery of new job  28  to one of printers  14 ,  16 ,  18 , so as to attain the most efficient “system printing throughout” for that job. An arrow  32  in  FIG. 1 , also labeled NJ is provided to indicate the ultimate, and representative, choosing of printer  26  to receive job  28 .  
         [0024]     Turning attention now to  FIGS. 2-4 , inclusive, along with  FIG. 1 , and generally describing practice of the invention in the context of what is shown in  FIG. 1 , on the occasion of new print job, such as new print job  28 , being readied by a host computer, such as by host computer  12 , for delivery to a prospectively available one of currently busy printers, such as printers  14 ,  16 ,  18 . Each active job which is currently assigned to a printer (device), typically via a print queue, is decomposed into its current processing status. Such a status may include the following processing states: 
        1. Processing˜Some portion of the imaging job is in some stage of processing.     2. Pending˜The imaging job is fully de-spooled to the device, but none of the job has started processing.     3. Spooling˜The imaging job is not fully de-spooled to the device, and none of the imaging job has started processing.        
 
         [0028]     Imaging jobs that are in a “processing state” in a printer are further decomposed into: 
        1. Output˜Processing has completed and the image (e.g., sheet) has been fully output (e.g., sheet ejected).     2. Processed˜The data has been fully processed for outputting, but the image has not been output (e.g., rendered/rasterized).     3. Unprocessed˜No processing has occurred on the data, where the unprocessed data is the initial data sent to the printer.        
 
         [0032]      FIG. 2  illustrates these decomposition practices with reference to jobs  22 ,  24 ,  26 .  
         [0033]     This decomposition practice is preferably performed whenever a new job is “readied” for handling. It constitutes an important and useful predecessor activity with respect to two different, subsequently implemented preferred manners of practicing the invention now to be described. Both of these “manners”, following decomposition, leads to the end-result, desired “How busy?” determinations regarding the currently engaged printers. More specifically, each “manner” leads to a determination about how much current-job work still lies ahead for the respective associated printers.  
         [0034]     Workload Estimate by Remaining Job Size—Illustrated in  FIG. 3   
         [0035]     The first practice “manner” now to be described presents two variations for assessing the size of remaining current-still-to-be-completed, job work. The second practice “manner” involves assessing the respective times-to-availability of the relevant, currently occupies printers.  
         [0036]     After job decomposition, as just described above, has taken place for each of the current printer-occupying jobs, such as jobs  22 ,  24 ,  26 , a remaining, probable workload size assessment for each job and associated printer may be calculated by determining, for each, an estimate of the probable processed size (e.g., after rendering and raster image processing (RIP)) of the remaining portion of a print job that has not yet been output. This estimate should take into account the combination of (a) the size of the current processed job data that has not yet been output, and (b) the likely processed size of the unprocessed data.  
         [0037]     One way of accomplishing this estimate involves the step of decomposing all completely processed job data, including fully output data, into sheets that will be, or have been, output by the associated printer. As an illustration, this may be done by examining the RIP queue for the printer, which queue may retain information relating to (a) the size of the predecessor unprocessed data for each already processed sheets, and (b) the size of the processed data for the already output sheets. 
 
 P % (Percent Processed)= R   size  (Retained Unprocessed Data Size for Processed Sheets)/ J   size (Total Unprocessed Job Size) 
 
 U % (Percent Unprocessed)=100 −P % 
 
         [0038]     Next, an estimate is made of the probable processed (i.e., RIP) size of the remaining unprocessed job as follows: 
 
 U   est  (Processed Size Estimate for Remaining Unprocessed Data)=( U %/ P %)*  P   size (Retained Processed Data Size for Processed Sheets) 
 
         [0039]     Finally, an estimate is made of the desired probable total processed size of the non-output portion of the job data as follows: 
 
 P   est   =U   est   +P   size   −O   size  (Retained Processed Data Size for Output Sheets) 
 
         [0040]     Thus, this estimate is calculated as the estimated processed data size of the unprocessed data, plus the actual size of the processed data, minus the actual size of the subset of processed data that has already been output. No consideration is made as to the time to render/rasterize the unprocessed data into processed data.  
         [0041]     In a variation on the above methodology, a remaining workload estimate is based on an estimated number of remaining non-output sheets. Specifically, an estimate is made of the probable total number of sheets of the remaining portion of a print job that has not been output. This estimate includes a combination of the number of sheets of the current processed data that has not yet been output, plus an estimate of the likely number of sheets of the unprocessed data.  
         [0042]     First the processed (including output) imaging data is decomposed into sheets. Next, an average unprocessed data size per processed sheet is calculated as follows: 
 
 U   ave (Average Unprocessed Data Size per Processed Sheet)= R   size (Retained Unprocessed Data Size for Processed Sheets)/ P   Sheets (Number of Processed Sheets) 
 
 Following this step, an estimate is made of the probable number of processed sheets that will be processed from the unprocessed data as follows: 
 
 U   sheets (Processed Sheet Estimate for Remaining Unprocessed Data)= U   size  (Remaining Unprocessed Data Size)/ U   ave  
 
         [0043]     Finally, the desired workload estimate is made of the probable number of sheets in the non-output portion of the job as follows: 
 
 T   est (Estimated Number of Total Sheets)= U   sheets   +P   sheets   −O   sheets (Number of Output Sheets) 
 
         [0044]     From a review of the two specific practices just set forth above, one will see that this “job-size” approach to implementing the present invention can be expressed as follows: 
 
Estimated, Still-to-be-Processed Data Size=ƒ(unprocessed data)+ g (processed data)− g (output data). 
 
         [0045]     Thus, any approach which implements this formula is useable in accordance with the present invention.  
         [0046]     Workload Estimate by Time to Availability—Illustrated in  FIG. 4   
         [0047]     In this other preferred manner of practicing the invention, the uncompleted workload is estimated by deriving an estimated time to printer availability as a combination of (a) the time to output the unprocessed, and (b) yet not output processed data. Plural jobs are compared according to these estimated times to availability.  
         [0048]     In this approach, in addition to determining appropriately the previously unprocessed data size of the processed data, so also determined are the estimated, elapsed times for processing the unprocessed data into processed data, and for outputting processed data.  
         [0049]     To do this, and as is illustrated mathematically below, an estimate is made of the probable time to output the remaining portion of a print job that has not been output. This estimate includes (a) a combination of the estimated time to process the unprocessed data into processed data, and (b) the estimated time to output both the unprocessed data and the data that is already processed but not yet output.  
         [0050]     The quantities calculated in this manner of practicing the invention, and the specific related calculations performed, are as follows:  
         [0051]     The percentage of the total unprocessed job data that has been processed: 
 
 P % (Percentage Processed)= R   size (Retained Unprocessed Data Size for Processed Sheets)/ J   size (Total Unprocessed Job Size) 
 
 U % (Percentage Unprocessed)=100− P % 
 
         [0052]     An estimate of the probable processing time (e.g., RIP) of the remaining unprocessed job data: 
 
 U   time (Processed Time Estimate for Remaining Unprocessed Data)=( U %/ P %)*  P   time (Retained Processed Time for Processed Data)
 
         [0053]     The percentage of the processed data that has been output: 
 
 O % (Percentage Output)= O   size (Retained Processed Data Size for Output Data)/ P   size (Processed Data Size) 
 
 N % (Percentage Non-Output)=100− O % 
 
         [0054]     An estimate of the probable time to output the non-output processed data: 
 
 P   out (Estimated Time to Output Non-Output Processed Data)=( N %/ O %)* O   out  (Retained Time to Output Processed Data) 
 
         [0055]     An estimate of the probable time to output the unprocessed data: 
 
 U   out (Estimated Time to Output the Unprocessed Data)=( U %/ P %)*( P   out   +O   out ) 
 
         [0056]     And finally, an estimate of the total time to output the remaining non-output unprocessed and processed data: 
 
 T   out =(Estimated Time to Output Remaining Non-Output Data)= U   time   +U   out   +P   out  
 
         [0057]     In a modification of this approach, an estimate is made of the time to availability that includes an estimate for the number of output sheets.  
         [0058]     In another modification, an estimate is made of the probable time to output the remaining portion of a print job that has not been output. This estimate is a combination of the estimated time to process the unprocessed data into processed data, plus an estimate of the time to output the unprocessed data and already processed data, based on deriving an estimate of the probable number of remaining sheets and the performance capabilities of the device (e.g., pages output per minute).  
         [0059]     First, the non-output processed data is decomposed into sheets (N sheets ).  
         [0060]     Next, an estimate is made of the probable number of processed sheets that will be processed from the unprocessed data, as described earlier: 
 
 U   sheets (Processed Sheet Estimate for Remaining Unprocessed Data)= U   size  (Remaining Unprocessed Data Size)/ U   ave  
 
         [0061]     Finally, an estimate is made of the total time to output the remaining non-output unprocessed and processed data, as: 
 
 T   out   =U   time +( ( U   sheets   +N   sheets )* PPM ) 
 
         [0062]     In the above, the estimate is calculated as the estimated time to process the unprocessed data into processed data, plus the combined number of estimated unprocessed and processed non-output sheets times the performance capabilities, per unit of time, for outputting the sheets.  
         [0063]     In another variation of the above, the unprocessed data is analyzed according to the imaging data format (e.g., PDL) and job assembly instructions (e.g., PJL) to determine the exact number of sheets for the unprocessed data (U sheets ).  
         [0064]     The above methods are just a few examples of combining the unprocessed data and processed data into an estimated amount of total time to process and output the remaining non-output data. Any method could be used, which can be represented by the general formula, where p( ) and o( ) are functions representing the time to process and output respectively: 
 
Estimated Time to Availability= p (unprocessed data)+ o (unprocessed data)+ o (processed data)− o (outputted data). 
 
         [0065]     Thus, implementation of the present invention, in any one of the several specific practice variations associated with the two different preferred and described approaches (i.e., determining incomplete job size currently being handled by busy printers; and determining busy-printers&#39; respective times-to-availability), very accurately addresses and describes a basis for efficient-throughput allocation of a new job to a printer in a situation wherein all prospectively available printers are currently working on previously allocated “current” jobs. This “How busy?” determination methodology offers a significantly improved way of distributing new imaging jobs (illustrated herein by print jobs) to prospectively available, but currently busy, imaging output devices.  
         [0066]     Practice of the present invention, as can be seen by those skilled in the art from the descriptions and illustrations presented herein, is easily enableable both in new and in existing imaging systems, and, as stated clearly earlier, is invokeable in basically all imaging processing-and-outputting environments. Accordingly, while preferred and best-mode manners of practicing the invention have been discussed and shown herein, it is understood that yet other variations and modifications which come within the scope of the invention, and which will come to the minds of those skilled in the art, are possible.