Patent Publication Number: US-10761796-B1

Title: Method and system for efficient job scheduling by collecting data from multiple sources

Description:
FIELD OF THE INVENTION 
     The present disclosure relates to a method and system for efficient job scheduling by collecting data from multiple sources, and for visualizing a plurality of jobs on user interface, for example, a job schedule screen for use in a print shop. 
     BACKGROUND OF THE INVENTION 
     Current production printing workflow consists of many applications for each step. Those applications are typically developed by different vendors and having different databases. Therefore, a customer is required to check job status in each application, which makes it difficult for the customer to track the status of each of the print jobs from start to finish (i.e., end to end). 
     Since operators of each step of the print process cannot recognize activity of a previous step and/or a next step in the printing process, there is no chance to efficiently allocate print jobs to appropriate printers. For example, some jobs may require longer wait times even if other printers, which are capable of processing those jobs, are available and idling. In addition, it may be difficult for customer to decide whether a print shop can accept a high priority, for example, urgent jobs without affecting other regular jobs. 
     SUMMARY OF THE INVENTION 
     In consideration of the above issues, it would be desirable to have a method and system for efficient job scheduling by collecting data from multiple sources, which includes estimating job processing time in each step and scheduling jobs to minimize idle or down time of printers or machines, for example, post-processing machines, maximize productivity, and accumulating past experience to improve accuracy of subsequent jobs. 
     In accordance with an exemplary embodiment, a method is disclosed for scheduling print jobs on a plurality of printers, the method comprising: collecting job information on each of a plurality of print jobs; assigning each of the plurality of print jobs to one or more printers of the plurality of printers; receiving a new print job, the new job including job product information; calculating a pre-processing time for the new print job; calculating a processing time for the new print job; determining at least one printer of the plurality of printers to execute the new print job; assigning the new print job to the at least one printer of the plurality of printers; determining if one or more of the plurality of print jobs assigned to the one or more of the plurality of printers can be reassigned to another printer of the plurality of printers to minimize a print schedule for each of the plurality of print jobs; and re-assigning the one or more of the plurality of print jobs to another printer of the plurality of printers when the reassigning of the one or more of the plurality of print jobs minimizes the print schedule of the plurality of print jobs. 
     In accordance with another exemplary embodiment, a non-transitory computer readable medium (CRM) storing computer program code executed by a computer processor is disclosed that performs a process for scheduling print jobs on a plurality of printers, the process comprising: collecting job information on each of a plurality of print jobs; assigning each of the plurality of print jobs to one or more printers of the plurality of printers; receiving a new print job, the new job including job product information; calculating a pre-processing time for the new print job; calculating a processing time for the new print job; determining at least one printer of the plurality of printers to execute the new print job; assigning the new print job to the at least one printer of the plurality of printers; determining if one or more of the plurality of print jobs assigned to the one or more of the plurality of printers can be reassigned to another printer of the plurality of printers to minimize a print schedule for each of the plurality of print jobs; and re-assigning the one or more of the plurality of print jobs to another printer of the plurality of printers when the reassigning of the one or more of the plurality of print jobs minimizes the print schedule of the plurality of print jobs. 
     In accordance with an exemplary embodiment, a system is disclosed for printing a job ticket received from a client computer, the system comprising: one or more client devices configured to generate print jobs; a plurality of printers configured to print the print jobs; a server having a memory and a processor, the processor configured to: collect job information on each of a plurality of print jobs; assign each of the plurality of print jobs to one or more printers of the plurality of printers; receive a new print job, the new job including job product information; calculate a pre-processing time for the new print job; calculate a processing time for the new print job; determine at least one printer of the plurality of printers to execute the new print job; assign the new print job to the at least one printer of the plurality of printers; determine if one or more of the plurality of print jobs assigned to the one or more of the plurality of printers can be reassigned to another printer of the plurality of printers to minimize a print schedule for each of the plurality of print jobs; and re-assign the one or more of the plurality of print jobs to another printer of the plurality of printers when the reassigning of the one or more of the plurality of print jobs minimizes the print schedule of the plurality of print jobs 
     It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings are included to provide a further understanding of the invention, and are incorporated in and constitute a part of this specification. The drawings illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention. 
         FIG. 1  is an illustration of a system for efficient job scheduling by collecting data from multiple sources in accordance with an exemplary embodiment. 
         FIG. 2  is an illustration of a server in accordance with an exemplary embodiment. 
         FIG. 3  is an illustration of a client device or client computer in accordance with an exemplary embodiment. 
         FIG. 4  is an illustration of a printer or printing device in accordance with an exemplary embodiment. 
         FIG. 5  is an illustration of a finisher in accordance with an exemplary embodiment. 
         FIG. 6  is an illustration of an application having a dashboard manager in accordance with an exemplary embodiment. 
         FIG. 7  is an illustration of a dashboard server program in accordance with an exemplary embodiment. 
         FIG. 8  is an illustration of a dashboard server program in accordance with another exemplary embodiment. 
         FIG. 9  is an illustration of a dashboard server program with data collection in accordance with an exemplary embodiment. 
         FIG. 10  is an illustration of a table of incoming print jobs in accordance with an exemplary embodiment. 
         FIG. 11  is an illustration of an exemplary user interface of job scheduling per printer with a conventional application. 
         FIG. 12  is an illustration of another exemplary user interface of job scheduling per job with a conventional application. 
         FIG. 13  is an illustration of a flow chart illustrating job scheduling in accordance with an exemplary embodiment. 
         FIG. 14  is an illustration of a flow chart illustrating job scheduling with a clustering option enabled in accordance with an exemplary embodiment. 
         FIG. 15  is an illustration of an exemplary user interface of job scheduling per printer with a dashboard server in accordance with an exemplary embodiment. 
         FIG. 16  is an illustration of an exemplary user interface of job scheduling per job in accordance with an exemplary embodiment. 
         FIG. 17  is an illustration of a table of an incoming print job with an urgent or priority print job. 
         FIG. 18  is an illustration of a flow chart of an incoming print with an urgent or priority print job in accordance with an exemplary embodiment. 
         FIG. 19  is an illustration of an exemplary user interface of job scheduling per printer with an urgent or priority print job. 
         FIG. 20  is an illustration of an exemplary user interface of job scheduling with an urgent or priority print job. 
         FIG. 21  is an illustration of a flow chart for rescheduling a print job or print jobs with post-processing dependence in accordance with an exemplary embodiment. 
         FIG. 22  is an illustration of a flow chart for printer maintenance in accordance with an exemplary embodiment. 
         FIG. 23  is an illustration of an exemplary user interface of job scheduling per printer with printer maintenance in accordance with an exemplary embodiment. 
         FIG. 24  is an illustration of an exemplary user interface of job scheduling per print job with printer maintenance in accordance with an exemplary embodiment. 
         FIG. 25  is an illustration of an exemplary user interface of job scheduling per printer with manual rescheduling in accordance with an exemplary embodiment. 
         FIG. 26  is an illustration of an exemplary user interface of job scheduling per print job with manual rescheduling in accordance with an exemplary embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     Reference will now be made in detail to the present preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the description to refer to the same or like parts. 
     It would be desirable to have a method and system that collects data from multiple sources (i.e., printers, finishers, etc.) as well as estimates job submission time, job processing time, and predicts abnormal situations, and which can visualize job status and efficiently schedule jobs to maximize performance. In this way, the system is able to compute optimistic job scheduling even if urgent jobs reach to the system, any trouble happened in printers. 
     A method and system for efficient job scheduling by collecting data from multiple sources is disclosed, which includes estimate job processing time in each step and schedule jobs to minimize machine idling time, maximize customer&#39;s productivity, and accumulate past experience to keep improving accuracy of estimation. 
     In accordance with an exemplary embodiment, the method and system is configured to collect information from multiple sources. For example, the information from the multiple sources can include job input, for example, job product information; pre-processing information, which can include processing time per product type, volume, etc.; pressing (i.e., printing time), for one or more printers, which can include printer status, maintenance schedule, printing duration, and printer capabilities, for example, types of printing that can be executed by the printer, color printing and/or monochrome printing, printable paper size, and finishing options, etc.; and post-pressing (i.e., after printing), which can include device status (for example, finishers), maintenance schedule, and print duration. 
     In accordance with an exemplary embodiment, based on the collected data, the method and system can be configured to immediately estimates job processing time once a job is received, and based on product type, print volume, job ticket settings (for example, page insertion requests, page size, etc.), estimate pre-processing time with operator availability and/or assigning the job to an appropriate printer(s) and estimate press time and scheduling of the job to maximize productivity. For example, in accordance with an exemplary embodiment, already scheduled job(s) can be re-arranged or re-assigned to different printers within a plurality or group of printers to improve performance and output within a print shop or the like. 
     In accordance with an exemplary embodiment, the job input application can collect the following information on a print job, which can include job received time, product type, job ticket settings, and/or page count. 
     In accordance with an exemplary embodiment, estimate required time to process the pre-processing operation can be based on product type and page count. For example, product type indicates what kind of document modification is needed and page count indicates work volume. The information on the pre-processing operation can be information, which is saved to a dashboard database (i.e., a data storage module) as disclosed herein and can be will be kept and updated to improve accuracy based on actual results collected from pre-processing application. 
     The method and system can also collect information from a pre-processing application, which can include a number of active operators and the number of jobs that can be processed simultaneously. For example, the pre-processing information can include number of open jobs in a queue. In addition, the following information can be collected from the press application, which can include number of printers, printer information, status and capabilities of each printer, and number of jobs in a queue of each printer. In accordance with an exemplary embodiment, the press application can also include estimates required time to process press operation based on product type, print volume (for example, page count times (x) copy count), job ticket settings (e.g. duplex setting, finishing option, etc.), and printer specification. In addition, accuracy of estimation can be kept to improve actual results based on post-press times. 
     In accordance with an exemplary embodiment, the following information can be collected on the post-press application: number of devices, device information, status and capabilities of each device, and number of jobs in a queue of each device. In accordance with an exemplary embodiment, estimate required time to process post-press operation is based on product type, print volume, job ticket settings, and device specification. In accordance with an exemplary embodiment, as disclosed herein, the calculated times and actual times can be stored and compared to improve the accuracy of future estimation for improving actual results. 
     In accordance with an exemplary embodiment, based on collected information, the system will simulate job assignments and order by finding all applicable printers (i.e., printers capable of executing the job), and temporarily assigning the job to a first available printer. In accordance with an exemplary embodiment, a list of all waiting jobs (i.e., pending print jobs) assigned to the printers is generated, and for each print job in the list of all waiting jobs, the method determines whether the waiting jobs (i.e., pending jobs) can be moved to another printer within the plurality of printers, for example, within a print shop. In accordance with an exemplary embodiment, if job completion time of listing of pending jobs an any new print jobs receive, the method and system will re-scheduling the waiting jobs until the entire schedule is minimized (i.e., print jobs can be completed sooner) to reduce and maximize printer usage. 
       FIG. 1  is an illustration of a system  100  for efficient job scheduling by collecting data from multiple sources in accordance with an exemplary embodiment. As shown in  FIG. 1 , the system  100  includes one or more servers  10   a ,  10   b , one or more client devices  20   a ,  20   b , one or more printers  30   a ,  30   b , one or more finishers  40   a ,  40   b , a communication network  50 , and one or more applications  60   a ,  60   b . In accordance with an exemplary embodiment, the one or more printers  30   a ,  30   b , and the one or more finishers  40   a ,  40   b , can be, for example, in a print shop  70 . The communication network or network  50  can be a public telecommunication line and/or a network (for example, LAN or WAN). Examples of the communication network  50  can include any telecommunication line and/or network consistent with embodiments of the disclosure including, but are not limited to, telecommunication or telephone lines, the Internet, an intranet, a local area network (LAN) as shown, a wide area network (WAN) and/or a wireless connection using radio frequency (RF) and/or infrared (IR) transmission. 
     In accordance with an exemplary embodiment, each of the one or more client devices  20   a ,  20   b , can be, for example, a personal computer (PC), a laptop, a mobile computing device (e.g., tablet PC, smartphone, etc.), a server, a mainframe, or a kiosk. As shown in  FIG. 1 , each of the one or more servers  10   a ,  10   b , the one or more client devices  20   a ,  20   b , the one or more printers  30   a ,  30   b , the one or more finishers  40   a ,  40   b , and the one or more applications  60   a ,  60   b , can be connected to each other by one or more communication networks  50  of any size having wired and/or wireless segments. Each of the one or more client devices  20   a ,  20   b , can be operated by a different user (for example, individual or Customer, company, etc.) and is configured to issue print jobs. 
       FIG. 2  is an illustration of a server  10   a ,  10   b  in accordance with an exemplary embodiment. As shown in  FIG. 2 , each of the one or more servers  10   a ,  10   b  can include a processor or central processing unit (CPU)  210 , and one or more memories  220  for storing software programs and data, which can include a dashboard server program  221 , and a plurality of plugins, for example, Plugin  1   222 , Plugin  2   223 , and Plugin  3   224 . Each of the plurality of plugins  222 ,  223 ,  224 , can be a software component that adds a specific feature to an existing computer program as disclosed herein. The processor or CPU  220  is configured to carry out the instructions of a computer program, which operates and/or controls at least a portion of the functionality of the server  10   a ,  10   b . The server  10   a ,  10   b  can also include an input unit  230 , a display unit or graphical user interface (GUI)  240 , and a network interface (I/F)  250 , which is connected to a communication network (or network)  50 . A bus  260  can connect the various components  210 ,  220 ,  230 ,  240 , and  250  within server  10   a ,  10   b . The server  10   a ,  10   b  includes an operating system (OS), which manages the computer hardware and provides common services for efficient execution of various software programs as disclosed herein. 
       FIG. 3  is an illustration of a client device or client computer  20   a ,  20   b  in accordance with an exemplary embodiment. As shown in  FIG. 3 , the client device or client computer  20   a ,  20   b  the exemplary host computer or client computer  20  can include a processor or central processing unit (CPU)  310 , and one or more memories  320  for storing software programs and data (such as files to be printed), and a web browser  321 , for example, Internet Explorer  322 . The processor or CPU  310  carries out the instructions of a computer program, which operates and/or controls at least a portion of the functionality of the client computer  20   a ,  20   b . The client computer  20   a ,  20   b  can also include an input unit  330 , a display unit or graphical user interface (GUI)  340 , and a network interface (I/F)  350 , which is connected to a communication network (or network)  50 . A bus  360  can connect the various components  310 ,  320 ,  330 ,  340 , and  350  within the client computer  20   a ,  20   b.    
     The client computer  20   a ,  20   b  includes an operating system (OS), which manages the computer hardware and provides common services for efficient execution of various software programs. The software programs can include, for example, application software and printer driver software. In addition, the printer driver software can control transmission of the print job from the client computer  20   a ,  20   b  to the one or more servers  10   a ,  10   b , the one or more printers or printing devices  30   a ,  30   b , and the one or more finishers  40   a ,  40   b.    
       FIG. 4  is an illustration of a printer or printing device  30   a ,  30   b  in accordance with an exemplary embodiment. As shown in  FIG. 4 , the printer or printing device  30   a ,  30   b  can include a network interface (I/F)  490 , which is connected to the communication network (or network)  50 , a processor or central processing unit (CPU)  410 , and one or more memories  420  for storing software programs and data (such as files to be printed)  421 . For example, the software programs  421  can include a printer controller and a tray table. The processor or CPU  410  carries out the instructions of a computer program, which operates and/or controls at least a portion of the functionality of the printer  30   a ,  30   b . The printer  30   a ,  30   b  can also include an input unit  430 , a display unit or graphical user interface (GUI)  440 , a scanner engine (or scanner)  450 , a printer engine  460 , a plurality of paper trays  470 , and a colorimeter  480 . 
     In accordance with an exemplary embodiment, the colorimeter  480  can be an inline colorimeter (ICCU) (or spectrophotometer), which measures printed color patches in order to generate color profiles. In accordance with an exemplary embodiment, for example, the colorimeter (or spectrophotometer)  411  can be one or more color sensors or colorimeters, such as an RGB scanner, a spectral scanner with a photo detector or other such sensing device known in the art, which can be embedded in the printed paper path, and an optional finishing apparatus or device (not shown). A bus  492  can connect the various components  410 ,  420 ,  430 ,  440 ,  450 ,  460 ,  470 ,  480 , and  490  within the printer  30   a ,  30   b . The printer  30   a ,  30   b  also includes an operating system (OS), which manages the computer hardware and provides common services for efficient execution of various software programs. In accordance with an exemplary embodiment, it can be within the scope of the disclosure for the printer  30   a ,  30   b  to be a copier. 
     For example, in accordance with an exemplary embodiment, an image processing section within the printer  30   a ,  30   b  can carry out various image processing under the control of a print controller or CPU  410 , and sends the processed print image data to the print engine  4460 . The image processing section can also include a scanner section (scanner engine  450 ) for optically reading a document, such as an image recognition system. The scanner section receives the image from the scanner engine  450  and converts the image into a digital image. The print engine  460  forms an image on a print media (or recording sheet) based on the image data sent from the image processing section. The central processing unit (CPU) (or processor)  410  and the memory  420  can include a program for RIP processing (Raster Image Processing), which is a process for converting print data included in a print job into Raster Image data to be used in the printer or print engine  460 . The CPU  410  can include a printer controller configured to process the data and job information received from the one or more servers  10   a ,  10   b , or the one or more client computers  20   a ,  20   b , for example, received via the network connection unit and/or input/output section (I/O section)  490 . 
     The CPU  410  can also include an operating system (OS), which acts as an intermediary between the software programs and hardware components within the multi-function peripheral. The operating system (OS) manages the computer hardware and provides common services for efficient execution of various software applications. In accordance with an exemplary embodiment, the printer controller can process the data and job information received from the one or more client computers  20   a ,  20   b  to generate a print image. 
     In accordance with an exemplary embodiment, the network I/F  490  performs data transfer with the one or more servers  10   a ,  10   b , and the one or more client devices  20   a ,  20   b . The printer controller can be programmed to process data and control various other components of the multi-function peripheral to carry out the various methods described herein. In accordance with an exemplary embodiment, the operation of printer section commences when the printer section receives a page description from the one or more servers  10   a ,  10   b , and the one or more client devices  20   a ,  20   b  via the network I/F  490  in the form of a print job data stream and/or fax data stream. The page description may be any kind of page description languages (PDLs), such as PostScript® (PS), Printer Control Language (PCL), Portable Document Format (PDF), and/or XML Paper Specification (XPS). Examples of printers  30   a ,  30   b  consistent with exemplary embodiments of the disclosure include, but are not limited to, a multi-function peripheral (MFP), a laser beam printer (LBP), an LED printer, a multi-function laser beam printer including copy function. 
     In accordance with an exemplary embodiment, the printer  30   a ,  30   b  can also include at least one auto tray or paper tray  470 , and more preferably a plurality of auto trays or paper trays. Each auto tray or paper tray  470  can include a bin or tray, which holds a stack of a print media (not shown), for example, a paper or a paper-like product. The printer engine or print engine  460  has access to a print media of various sizes and workflow for a print job, which can be, for example, stored in the input tray. A “print job” or “document” can be a set of related sheets, usually one or more collated copy sets copied from a set of original print job sheets or electronic document page images, from a particular user, or otherwise related. 
     In accordance with an exemplary embodiment, the print media is preferably a paper or paper-like media having one or more print media attributes. The print media attributes can include, for example, paper color, coating, grain direction, printing technology, brightness, CIE, tint, whiteness, labColor, etc. In order to maximize print quality, the print media attributes of each type of print media should be input into or hosted on the printer  30   a ,  30   b , for example, on printer configuration settings of the printer  30   a ,  30   b  to obtain the highest quality output. Most print media is provided in reams or other known quantities, which are packaged with indicia such as information on the manufacture, size, type and other attributes of the print media. In addition, most bundles or reams of paper include a UPC (Universal Product Code) or bar code, which identifies the type of print media including manufacture of the print media. 
       FIG. 5  is an illustration of a finisher  40   a ,  40   b  in accordance with an exemplary embodiment. As shown in  FIG. 5 , the finisher  40   a ,  40   b  can include a network interface (I/F)  580 , which is connected to the communication network (or network)  50 , a processor or central processing unit (CPU)  510 , and one or more memories  520  for storing software programs and data (such as files to be printed)  521 . The processor or CPU  510  carries out the instructions of a computer program, which operates and/or controls at least a portion of the functionality of the finisher  40   a ,  40   b . The finisher  40   a ,  40   b  can also include a stapler  530 , a collator  540 , a hole puncher  550 , a folding assembly  560 , and a finisher paper conveyor  570 , which includes a plurality of trays  571 . A bus  590  can connect the various components  510 ,  520 ,  530 ,  540 ,  550 ,  560 ,  570 , and  580  within the finisher  40   a ,  40   b . The finisher  40   a ,  40   b  also includes an operating system (OS), which manages the computer hardware and provides common services for efficient execution of various software programs. 
     The CPU  510  can also include an operating system (OS), which acts as an intermediary between the software programs and hardware components within the multi-function peripheral. The operating system (OS) manages the computer hardware and provides common services for efficient execution of various software applications. In accordance with an exemplary embodiment, the network I/F  580  performs data transfer with the one or more servers  10   a ,  10   b , the one or more client devices  20   a ,  20   b , and the one or more printers  30   a ,  30   b.    
       FIG. 6  is an illustration of an application  60   a ,  60   b  having a dashboard manager  610  in accordance with a conventional embodiment. As shown in  FIG. 6 , each application  60   a ,  60   b ,  60   c ,  60   d  includes a dashboard manager  610  having a dashboard visualizer  612 . The dashboard manager  610  receives data from the client  20   a  via a web browser  321  for a job, for example, a print job. The data is received by the dashboard manager  610 , which is input into an analytic processor  620 , which estimates, for example, process time  622  for the job, and the data is stored in the dashboard manager  610 . As shown in  FIG. 6 , each job is received by a separate application  60   b ,  60   c , and/or  60   d  from a web browser of a corresponding client  20   b ,  20   c ,  20   d.    
       FIG. 7  is an illustration of a dashboard server program  221  in accordance with an exemplary embodiment. As shown in  FIG. 7 , the dashboard server program  221  is preferably hosted on one or more servers  10   a ,  10   b , and includes a dashboard manager  710 . The dashboard manager  710  is configured to receive data from one or more client devices  20   a ,  20   b , via a web browser  321  in connection with a plural of jobs, for example, a plurality of print jobs. The dashboard manger  710  communicates with an analytics engine  720 . The analytics engine  720  communicates with a data storage module  730 , which is in communication with a plugin manager  740 . In accordance with an exemplary embodiment, the plugin manager  740  is in communication with a plurality of applications  60   a ,  60   b ,  60   c ,  60   d , one or more printers  30   a , and one or more finishers  40   a . Each of the plurality of applications  60   a ,  60   b ,  60   c ,  60   d , the one or more printers  30   a , and the one or more finishers  40   a  has a corresponding plugin  221 ,  222 ,  223 ,  224 ,  225 ,  226 , which is in direct communication with the plugin manager  740  of the dashboard server program  221 . 
       FIG. 8  is an illustration of a dashboard server program  221  in accordance with another exemplary embodiment. As shown in  FIG. 8 , the dashboard server program  211  includes the dashboard manager  710 , which includes a dashboard visualizer  800  and a job scheduler  810 . The dashboard manager  710  is in communication with the one or more clients  20   a ,  20   b , and the corresponding Web browser  321  and receives data on jobs, for example, print jobs, from the one or more clients  20   a ,  20   b . The analytics engine  720  can include a job analyzer  820 , a device analyzer  830  and a process time estimator  840 . The analytics engine  720  and the dashboard manager  710  being in communication with one another. The analytics engine  720  also being in communication with a data storage module  730 . In accordance with an exemplary embodiment, the data storage module  730  is in communication with the plugin manager  740 . 
     In accordance with an exemplary embodiment, as shown in  FIGS. 7 and 8 , the plugin manager  740  is in communication with a plurality of applications  60   a ,  60   b ,  60   c ,  60   d , one or more printers  30   a , and one or more finishers  40   a . Each of the plurality of applications  60   a ,  60   b ,  60   c ,  60   d , the one or more printers  30   a , and the one or more finishers  40   a  has a corresponding plugin  221 ,  222 ,  223 ,  224 ,  225 ,  226 , which is in direct communication with the plugin manager  740  of the dashboard server program  221 . In accordance with an exemplary embodiment, the plugin for application A  221  can be configured to include a data extractor  850 , a data transformer  851 , a data loader  852 , and a request sender  853 , which can provide data to the plugin manager  740  on one or more jobs, for example, print jobs. 
       FIG. 9  is an illustration of a dashboard server program  221  with data collection in accordance with an exemplary embodiment. As shown in  FIG. 9 , the dashboard server program  211  includes the dashboard manager  710 , which is in communication with the one or more clients  20   a ,  20   b , and the corresponding Web browser  321  and receives data on jobs, for example, print jobs, from the one or more clients  20   a ,  20   b . The analytics engine  720  and the dashboard manager  710  being in communication with one another. The analytics engine  720  also being in communication with a data storage module  730 . The data storage module  730  being in communication with the plugin manager  740 . 
     In accordance with an exemplary embodiment, as shown in  FIG. 9 , the plugin manager  740  is in communication with a plurality of applications, for example, the plurality of applications can include a job input application  900 , a pre-processing application  910 , a press application  920 , a post-press application  930 , one or more printers  30   a , and one or more finishers  40   a . The job input application  910  can be configured to collect job product information. The pre-processing application  910  can be configured to collect processing time per product type, volume, etc. The press application  920  can be configured to collect printer status, maintenance schedule, printing duration, etc. The post-press application  930  can be configured to collect device status, maintenance schedule, printing durations, etc. 
     In accordance with an exemplary embodiment, the job input application  900  can provide data  940 , for example, job received time, product type, job ticket settings, and page count to a plugin for the job input application  950 , which is then provided to the plugin manager  740 . The pre-processing application  910  can provide data  940 , for example, processing time per product type, and number of jobs in a queue to the plugin for the pre-processing application  952 . The press application  920  can provide data  940 , for example, processing time per product type, number of jobs, and number of devices, to the plugin for the press application  954 . The printer  30   a  can provide data  940 , for example, device capability, device status, number of jobs, and processing time, to the plugin for the printer  225 . The finisher  40   a ,  40   b  can provide data  940 , for example, device capability, device status, number of jobs, and processing time to the plugin for the finisher  226 . 
     In accordance with an exemplary embodiment, the storing the calculated pre-processing time and the calculating processing time for the new print job can be stored in the date storage module (i.e., database)  730  as disclosed herein. In addition, an actual pre-processing time and an actual processing time for the new print job can be stored in the data storage module (i.e., database)  730 . In accordance with an exemplary, a subsequent pre-processing time and a processing time for a subsequent print job can be calculated by comparing the calculated pre-processing time and the calculated processing time to the actual pre-processing time and the actual processing time, respectively. 
       FIG. 10  is an illustration of a table  1000  of incoming print jobs in accordance with an exemplary embodiment. As shown in  FIG. 10 , the incoming print jobs and corresponding data (or print parameters) can include, for example, job name, product type, priority, color, page count, copies (for example, number of copies), finishing, cluster, and a job received time. In accordance with an exemplary embodiment, the product type can include, for example, brochure, book, manual, DM (direct mail), business cards (i.e., Biz Card), statement, book, and/or collateral. The priority can be normal or urgent ( FIG. 17 ). The color can be black and white (i.e., B&amp;W) or color. The page count can be for example, between 1 and 1000, for example, as shown 50, 100, 150, 200, 300, and 400 pages. The number of copies can be, for example, between 1 and 1000. The finishing can be stitching, none, punching, and/or folding. The clustering can be No or Yes. The time received can be stored as a time and date. 
       FIG. 11  is an illustration of an exemplary user interface (or job scheduling screen)  1100  of job scheduling per printer with a conventional application. As shown in  FIG. 11 , the user interface  1100  is configured to illustrate each printer, i.e., Printer  1 , Printer  2 , Printer  3 , . . . , the type or capabilities of each printer, for example, Black &amp; White or Color, and finishing options, for example, Stitching, Punching, and/or Folding. Upon receipt of a print job, the print job is placed in a queue for printing and the corresponding time period in which the print job is scheduled to be printed is displayed. The print jobs as shown in  FIG. 11  can include normal print jobs (Jobs  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  8 ,  9 ,  10 , and  12 ), cluster printing jobs (Jobs  7  and  16 ), and inefficiently scheduled print jobs (Jobs  11 ,  14 , and  15 ). 
       FIG. 12  is an illustration of another exemplary user interface (or job scheduling screen)  1200  of job scheduling per job with a conventional application. As shown in  FIG. 12 , the user interface  1200  is configured to illustrate each job and a corresponding time line for each job including job receiving time, a pre-press time, and corresponding assignment of the job to one or more of the plurality of printers (i.e., Printer  1 , Printer  2 , Printer  3 , Printer  4 , Printer  5 , Printer  6 ). 
       FIG. 13  is an illustration of a flow chart  1300  illustrating job scheduling in accordance with an exemplary embodiment. As shown in  FIG. 13 , in step S 102 , the dashboard server program  221  receives a new job. In step S 104 , the dashboard manager  710  estimates Pre-processing processing time based on product type and page count for the new job. In step S 106 , the dashboard manager  710  estimates press processing time based on product type, print settings, and print volume for the new jobs. In step S 108 , the dashboard manager  710  determines (i.e., finds) an appropriate printer  30   a ,  30   b  (i.e., selected printer  30   a ,  30   b ) for the new job and temporarily assigns the new job to the printer  30   a ,  30   b.    
     In step S 110 , the dashboard manager  710  determines if the previous jobs waiting to be processed and assigned to one of the applicable printers (i.e., plurality of printers, for example, in the print shop) can be moved to another available printer  30   a ,  30   b . If one of the previous jobs cannot be moved to another available printer  30   a ,  30   b , the new job is assigned to the selected printer  30   a ,  30   b , for example, in a first in, first out (FIFO) process. In accordance with an exemplary embodiment, upon assigning the new job to a printer  30   a ,  30   b , the new job can be placed in a print queue, and the printer  30   a ,  30   b , prints the jobs in the order received. If another job (i.e., one of the previously assigned jobs being assigned to a specific printer of the plurality of printers) can be assigned to another printer, in step S 114 , another appropriate printer is found for the previous job and the other previous jobs are rescheduled. 
     In step S 116 , a determination is made if the rescheduling and/or reassigning of the previous jobs to another printer can minimize printing schedule of all previous jobs and the new job to maximize printer usage. If the rescheduling and/or reassigning of the previous jobs to the another printer does not minimize the printing schedule of the jobs including the previous jobs and the new job to maximize printer usage, the process returns to step S 114  to determine if another printer is available for the previous job and re-scheduling of the previous jobs can be performed to minimize the printing schedule of all jobs and maximize printer usage. In step S 116 , if the re-scheduling of the previous jobs can minimize the printing schedule of all jobs and maximize printer usage, the previous jobs are assigned and/or reassigned in accordance with the determination in step S 114 . 
     In accordance with an exemplary embodiment, the assigning of the new print job to the at least one printer of the plurality of printers in step S 112  (S 218 , S 318 , S 418 , S 516 ) comprises temporarily assigning the new print job to the at least one printer of the plurality of printers only when none of the previous jobs can be reassigned or moved to another printer of the plurality printers. 
     In accordance with an exemplary embodiment, in steps S 114 , S 116 , (S 220 , S 222 , S 320 , S 322 , S 420 , S 422 , S 512 , S 514 , S 518 ,  520 ) the determination if the one or more of the plurality of print jobs can be reassigned to another printer of the plurality of printers to minimize a print schedule for each of the plurality of print jobs can include attempting to re-assigning each of the one or more of the plurality of print jobs to another printer of the plurality of printers when the reassigning of the one or more of the plurality of print jobs minimizes the print schedule of the plurality of print jobs. In addition, the dashboard manager  710  can be configured to continue to the re-assigning of each of the one or more of the plurality of print jobs to another printer of the plurality of printers when the reassigning of the one or more of the plurality of print jobs minimizes the print schedule of the plurality of print jobs. 
       FIG. 14  is an illustration of a flow chart  1400  illustrating job scheduling with a clustering option enabled in accordance with an exemplary embodiment. As shown in  FIG. 14 , in step S 202 , the dashboard server program  221  receives a new job. In step S 204 , the dashboard manager  710  estimates Pre-processing processing time based on product type and page count for the new job. In step S 206 , the dashboard manager  710  determines if the new job can be split into two or more jobs and assigned to two or more printers (i.e., a cluster print job). For example, if the new job contains images and data, which need to be printed on a color printer, and wherein a portion of the new job can be assigned to color printer, and a portion of the new job can be assigned to a black and white printer. Alternatively, the cluster print job can be a relatively large print job that is split between two or more printers, for example, two (2) printer or four (4) printers. If the new job cannot be split into two or more jobs and assigned to two or more printers, the process continues to step S 208 , wherein the new job can be executed, for example, as disclosed in  FIG. 13 , and wherein the new job is not split into two or more print jobs. 
     In accordance with an exemplary embodiment, if the new job can be split into two or more print jobs, the process continues to step S 210 , where the new job is split into, for example, two or more child jobs (i.e., the new job is split into a first new job, a second new job, etc.). In step S 212 , the dashboard manager estimates press processing time based on product type, print settings, and print volume for each of the child jobs. In step S 214 , the dashboard manager  710  determines (i.e., finds) appropriate printers  30   a ,  30   b  for each of the child jobs. In step S 216 , the dashboard manager  710  determines if another job (i.e., previously assigned job, the previously assigned job being assigned to a specific printer of the plurality of printers) can be assigned to all applicable printers be moved to another available printer  30   a ,  30   b . In step S 216 , the new print job is temporarily assigned to a printer  30   a ,  30   b.    
     In accordance with an exemplary embodiment, if a previously job cannot be moved to another available printer  30   a ,  30   b , each of the child jobs are assigned to the printer  30   a ,  30   b  determined in step S 214 . If a previous job can be assigned to another printer, in step S 220 , another appropriate printer is found for the previous job and the previous jobs are rescheduled. In accordance with an exemplary embodiment in step S 222 , a determination is made if the rescheduling and/or reassigning of the previous job to another printer can minimize printing schedule of all jobs (i.e., all previous jobs and the new job) and maximize printer usage. If the rescheduling and/or reassigning of the previous job to the another printer does not minimize the printing schedule of all jobs and maximize printer usage, the process returns to step S 220  to determine if another printer is available for the previous job and if the re-scheduling of the previous jobs can be performed to minimize the printing schedule of all jobs and maximize printer usage. In step S 222 , if the re-scheduling of the jobs can minimize the printing schedule of all jobs (i.e., all previous jobs and the new job) and maximize printer usage, the previous job (or previous jobs) is assigned and/or reassigned in accordance with the determination in step S 220 . 
       FIG. 15  is an illustration of an exemplary user interface (or job scheduling screen)  1500  of job scheduling per printer with a dashboard server in accordance with an exemplary embodiment. As shown in  FIG. 15 , the user interface  1500  is configured to illustrate each printer, i.e., Printer  1 , Printer  2 , Printer  3 , . . . , the type or capabilities of each printer, for example, Black &amp; White or Color, and finishing options, for example, Stitching, Punching, and/or Folding. Upon receipt of a print job, the print job is place in a queue for printing and the corresponding time period in which the print job is scheduled to be printed is displayed. The print jobs as shown in  FIG. 15  can include normal print jobs (Jobs  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  13 , and  17 ), cluster printing job or cluster print jobs (Jobs  7  and  16 ), inefficiently scheduled print jobs (Jobs  11 ,  14 , and  15 ), and re-scheduled print job (Jobs  8 ,  9 ,  10 , and  12 ). In accordance with an exemplary embodiment, the job schedule screen is a two dimensional chart in which a first axis indicated an execution length of time for each of the print jobs and the new print job, and in which a second axis shows each of the plurality of printers. 
       FIG. 16  is an illustration of an exemplary user interface (or job scheduling screen)  1600  of job scheduling per job in accordance with an exemplary embodiment. As shown in  FIG. 16 , the user interface  1600  is configured to illustrate each job and a corresponding time line for each job including job receiving time, a pre-press time, and corresponding assignment of the job to one or more of the plurality of printers (i.e., Printer  1 , Printer  2 , Printer  3 , Printer  4 , Printer  5 , Printer  6 ). 
       FIG. 17  is an illustration of a table  1700  of an incoming print job with an urgent or priority print job. As shown in  FIG. 17 , the incoming print jobs and corresponding data can include, for example, job name, product type, priority, color, page count, copies (for example, number of copies), finishing, cluster, and a job received time. In accordance with an exemplary embodiment, the product type can include, for example, brochure, book, manual, DM (direct mail), business cards (i.e., Biz Card), statement, book, and/or collateral. The priority can be normal or urgent (Job  18 , for example, brochure, priority: Urgent; color: Color; page count: 30; copies: 100; finishing: Folding; Cluster: No; and Job Received Time: 7:30). The color can be black and white (i.e., B&amp;W) or color. The page count can be for example, 50, 100, 150, 200, 300, 400. The number of copies can be, for example, between 1 and 1000. The finishing can be stitching, none, punching, and/or folding. The clustering can be No or Yes. The time received can be stored as a time and date. 
       FIG. 18  is an illustration of a flow chart  1800  of an incoming print with an urgent or priority print job in accordance with an exemplary embodiment. As shown in  FIG. 18 , in step S 302 , the dashboard server program  221  receives a new job. In step S 304 , the dashboard manager  710  determines if the new job is a high priority job (i.e., Urgent). If the new job is not a high priority job, i.e., the new job is not urgent, the process continues to step S 306 , wherein the new job can be executed, for example, as disclosed in  FIG. 13 . 
     Alternatively, as shown in  FIG. 18 , if in step S 304 , it is determined that the new job is a high priority job, the process continues to step S 308 , where the dashboard manager  710  estimates Pre-processing processing time based on product type and page count. In step S 310 , the dashboard manager  710  reschedules other Pre-processing jobs. In step S 312 , the dashboard manager estimates press processing time based on product type, print settings, and print volume for the new job. In step S 314 , the dashboard manager  710  determines (i.e., finds) an appropriate printer  30   a ,  30   b  for the new job. In step S 316 , the dashboard manager  710  determines if another job (i.e., previously assigned job) assigned to all applicable printers can be moved to another available printer  30   a ,  30   b . If the previous job cannot be moved to another available printer  30   a ,  30   b , in step S 318 , the new job is assigned to the printer  30   a ,  30   b . If the previously assigned job being assigned to a specific printer of the plurality of printers can be assigned to another printer, in step S 320 , another appropriate printer is found for the previous job and the previous jobs are rescheduled. In step S 322 , a determination is made if the rescheduling and/or reassigning of the previous job to another printer can minimize printing schedule of all jobs (i.e., all previous jobs and the new job) and maximize printer usage. If the rescheduling and/or reassigning of the previous job to the another printer does not minimize the printing schedule of all jobs and maximize printer usage, the process returns to step S 320  to determine if another printer is available for the previous job and re-scheduling of the jobs can be performed to minimize the printing schedule of all jobs and maximize printer usage. In step S 322 , if the re-scheduling of the jobs can minimize the printing schedule of all jobs and maximize printer usage, the jobs are assigned and/or reassigned in accordance with the determination in step S 320 . 
       FIG. 19  is an illustration of an exemplary user interface  1900  of job scheduling per printer with an urgent or priority print job. As shown in  FIG. 19 , the user interface  1900  is configured to illustrate each printer, i.e., Printer  1 , Printer  2 , Printer  3 , . . . , the type or capabilities of each printer, for example, Black &amp; White or Color, and finishing options, for example, Stitching, Punching, and/or Folding. Upon receipt of a print job, the print job is place in a queue for printing and the corresponding time period in which the print job is scheduled to be printed is displayed. The print jobs as shown in  FIG. 19  can include normal print jobs (Jobs  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  8 ,  9 ,  10 ,  11 ,  13 ,  14 , and  17 ), cluster printing jobs (Jobs  7  and  16 ), re-scheduled print job (Jobs  12  and  15 ), and urgent print jobs (Job  18 ). 
       FIG. 20  is an illustration of an exemplary user interface (or job scheduling screen)  2000  of job scheduling with an urgent or priority print job. As shown in FIG.  20 , the user interface  2000  is configured to illustrate each job and a corresponding time line for each job including job receiving time, an urgent job received time, a pre-press time, and corresponding assignment of the job to one or more of the plurality of printers (i.e., Printer  1 , Printer  2 , Printer  3 , Printer  4 , Printer  5 , Printer  6 ). 
       FIG. 21  is an illustration of a flow chart  2100  for rescheduling a print job or print jobs with post-processing dependence in accordance with an exemplary embodiment. As shown in  FIG. 21 , in step S 402 , the dashboard server program  221  receives a new job. In step S 404 , the dashboard manager  710  determines if the new job requires an off-line finisher  40   a ,  40   b . In accordance with an exemplary embodiment, an off-line finisher can be any finishing device, for example, a stapler, a collator, a hole puncher, a folding assembly, and a finisher paper conveyor, which is not connected or a part of a printer  30   a ,  30   b . If the new job does not require an off-line finisher, the process continues to step S 406 , wherein the new job can be executed, for example, as disclosed in  FIG. 13 . 
     Alternatively, as shown in  FIG. 21 , if in step S 404 , it is determined that the new job requires an off-line finisher, the process continues to step S 408 , where the dashboard manager  710  estimates Pre-processing processing time based on product type and page count for the new job. In step S 410 , the dashboard manager  710  estimates press processing time based on product type, print settings, and print volume for the new job. In step S 412 , the dashboard manager estimates post-press processing time based on product type, print settings, and print volume for the new job. In step S 414 , the dashboard manager  710  determines (i.e., finds) an appropriate printer  30   a ,  30   b  for the new job. In step S 416 , the dashboard manager  710  determines if another job will finish printing before the appropriate finisher becomes available. If another job will not finish printing before the appropriate finisher becomes available, the new job is assigned to printer  30   a ,  30   b , in step S 418 , the job is assigned to the printer  30   a ,  30   b . If another job (i.e., previously assigned job, the previously assigned job being assigned to a specific printer of the plurality of printers) can finish printing before the appropriate finisher becomes available, in step S 420 , the dashboard manager  710  reschedules jobs to complete (i.e., print) other jobs first. In step S 422 , a determination is made if the rescheduling and/or reassigning of another job to another printer can minimize printing schedule of all jobs and maximize printer usage. If the rescheduling and/or reassigning of the another job to the another printer does not minimize the printing schedule of all jobs and maximize printer usage, the process returns to step S 420  to determine if another printer is available for the previous job and re-scheduling of the jobs can be performed to minimize the printing schedule of all jobs and maximize printer usage. In step S 422 , if the re-scheduling of the jobs can minimize the printing schedule of all jobs and maximize printer usage, the previous jobs are assigned and/or reassigned in accordance with the determination in step S 420 . 
       FIG. 22  is an illustration of a flow chart  2300  for printer maintenance in accordance with an exemplary embodiment. As shown in  FIG. 22 , in step S 502 , the dashboard server program  221  receives a new job. In step S 504 , the dashboard manager  710  estimates Pre-processing processing time based on product type and page count for the new job. In step S 506 , the dashboard manager  710  estimates press processing time based on product type, print settings, and print volume for the new job. In step S 508 , the dashboard manager  710  determines (i.e., finds) an appropriate printer  30   a ,  30   b  for the new job. In step S 510 , the dashboard manager  710  determines if the assigned printer  30   a ,  30   b , will be in maintenance (i.e., is the printer schedule for maintenance during the print time). In accordance with an exemplary embodiment, maintenance can include replacing or cleaning parts, color calibration, adding toner, machine failure, machine error status, for example, out of paper or print media, or loading of paper or print media. If the assigned printer  30   a ,  30   b , will not be in maintenance during the scheduled print time, in step S 516 , the new job is assigned to the printer  30   a ,  30   b , for processing. If the printer  30   a ,  30   b  is scheduled for maintenance during the scheduled print time, the process continues to step S 512 , in which another appropriate printer is found for the new job. In step S 514 , the dashboard manager  710  determines if other jobs can be assigned to the printer be moved to another available printer. In step S 514 , if another job cannot be moved to another available printer  30   a ,  30   b , the new job is assigned to the printer  30   a ,  30   b . If another job (i.e., previously assigned job, the previously assigned job being assigned to a specific printer of the plurality of printers) can be assigned to another printer, in step S 518 , another appropriate printer is found for the another job and the jobs are rescheduled. In step S 520 , a determination is made if the rescheduling and/or reassigning of the another job to the another printer can minimize printing schedule of all jobs and maximize printer usage. If the rescheduling and/or reassigning of the another job to the another printer does not minimize the printing schedule of all jobs and maximize printer usage, the process returns to step S 518  to determine if another printer is available for the previous job and re-scheduling of the jobs can be performed to minimize the printing schedule of all jobs and maximize printer usage. In step S 520 , if the re-scheduling of the jobs can minimize the printing schedule of all jobs and maximize printer usage, the jobs are assigned and/or reassigned in accordance with the determination in step S 518 . 
       FIG. 23  is an illustration of an exemplary user interface (or job scheduling screen)  2300  of job scheduling per printer with printer maintenance in accordance with an exemplary embodiment. As shown in  FIG. 23 , the user interface  2300  is configured to illustrate each printer, i.e., Printer  1 , Printer  2 , Printer  3 , . . . , the type or capabilities of each printer, for example, Black &amp; White or Color, and finishing options, for example, Stitching, Punching, and/or Folding. Upon receipt of a print job, the print job is place in a queue for printing and the corresponding time period in which the print job is scheduled to be printed is displayed. The print jobs as shown in  FIG. 23  can include normal print jobs (Jobs  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  8 ,  10 ,  11 ,  14 , and  17 ), cluster printing jobs (Jobs  7  and  16 ), re-scheduled print job (Jobs  7 ,  9 ,  12 ,  13 , and  15 ), and maintenance (Printer  6 , for example, between 7 am and 8 am). 
       FIG. 24  is an illustration of an exemplary user interface (or job scheduling screen)  2400  of job scheduling per print job with printer maintenance in accordance with an exemplary embodiment. As shown in  FIG. 24 , the user interface  2400  is configured to illustrate each job and a corresponding time line for each job including job receiving time, a pre-press time, and corresponding assignment of the job to one or more of the plurality of printers (i.e., Printer  1 , Printer  2 , Printer  3 , Printer  4 , Printer  5 , Printer  6 ) including maintenance on Printer  6 . 
       FIG. 25  is an illustration of an exemplary user interface (or job scheduling screen)  2500  of job scheduling per printer with manual rescheduling in accordance with an exemplary embodiment. As shown in  FIG. 25 , the user interface  2300  is configured to illustrate each printer, i.e., Printer  1 , Printer  2 , Printer  3 , . . . , the type or capabilities of each printer, for example, Black &amp; White or Color, and finishing options, for example, Stitching, Punching, and/or Folding. Upon receipt of a print job, the print job is place in a queue for printing and the corresponding time period in which the print job is scheduled to be printed is displayed. The print jobs as shown in  FIG. 25  can include normal print jobs (Jobs  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  8 ,  9 ,  10 ,  11 ,  13 ,  14 , and  15 ), cluster printing jobs (Jobs  7  and  16 ), re-scheduled print job (Jobs  10  and  16 ), and manual re-scheduled print job (Job  17 ). 
       FIG. 26  is an illustration of an exemplary user interface (or job scheduling screen)  2600  of job scheduling per print job with manual rescheduling in accordance with an exemplary embodiment. As shown in  FIG. 26 , the user interface  2600  is configured to illustrate each job and a corresponding time line for each job including job receiving time, a pre-press time, and corresponding assignment of the job to one or more of the plurality of printers (i.e., Printer  1 , Printer  2 , Printer  3 , Printer  4 , Printer  5 , Printer  6 ) including a manual re-scheduled print job as shown in  FIG. 25 . 
     In accordance with an exemplary embodiment, the methods and processes as disclosed can be implemented on a non-transitory computer readable medium. The non-transitory computer readable medium may be a magnetic recording medium, a magneto-optic recording medium, or any other recording medium which will be developed in future, all of which can be considered applicable to the present invention in all the same way. Duplicates of such medium including primary and secondary duplicate products and others are considered equivalent to the above medium without doubt. Furthermore, even if an embodiment of the present invention is a combination of software and hardware, it does not deviate from the concept of the invention at all. The present invention may be implemented such that its software part has been written onto a recording medium in advance and will be read as required in operation. 
     It will be apparent to those skilled in the art that various modifications and variation can be made to the structure of the present invention without departing from the scope or spirit of the invention. In view of the foregoing, it is intended that the present invention cover modifications and variations of this invention provided they fall within the scope of the following claims and their equivalents.