Abstract:
A method disclosed. The method includes downloading a first print job data stream from a cloud computing network, transmitting the first print job data stream to a printer, monitoring a printing status of the printer to determine when the printer is ready to receive a second print job and downloading a second print job data stream from the cloud computing network upon determining that the printer is ready to receive the second print job.

Description:
FIELD OF THE INVENTION 
     The invention relates to the field of computer systems, and in particular, to processing print jobs received from a public network. 
     BACKGROUND 
     Printers are common peripheral devices attached to computers. A printer allows a computer user to make a hard copy of documents that are created in a variety of applications and programs on a computer. To function properly, a channel of communication is established (e.g., via a network connection) between the printer and the computer to enable the printer to receive commands and information from the host computer. 
     Once a connection is established between a workstation and the printer, printing software is implemented at a print server to manage a print job from order entry and management through the complete printing process. However, it may be desirable in future applications to implement a printing system in which the printing software is operated within a computing network cloud. In such an application, the print server would not have a dedicated connection to the printer. Since the printer is to receive print jobs via a cloud connection, there is an unpredictable flow of received print job data, which results in pauses at the printer. Pauses at high speed printers are undesirable due to inefficiencies of use. 
     Accordingly, a mechanism to maximize the efficiency of a printer coupled to a cloud computing network is desired. 
     SUMMARY 
     In one embodiment, a method includes downloading a first print job data stream from a cloud computing network, transmitting the first print job data stream to a printer, monitoring a printing status of the printer to determine when the printer is ready to receive a second print job and downloading a second print job data stream from the cloud computing network upon determining that the printer is ready to receive the second print job. 
     Another embodiment discloses a printing system including a printer to apply data to a print medium and a server. The server downloads a first print job data stream from a cloud computing network, transmits the first print job data stream to the printer, monitors a printing status of the printer and downloads a second print job data stream from the cloud computing network upon determining that the printer is ready to receive a second print job. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which: 
         FIG. 1  illustrates one embodiment of a data processing system network; 
         FIG. 2  is a flow diagram illustrating one embodiment of processing print jobs using a cloud computing network; and 
         FIG. 3  illustrates one embodiment of a computer system. 
     
    
    
     DETAILED DESCRIPTION 
     A mechanism for processing print jobs received via a cloud computing network is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the present invention. 
     Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
       FIG. 1  illustrates one embodiment of a data processing system network  100 . Network  100  includes a data processing system  102 , which may be either a desktop or a mobile data processing system, coupled via communications link  104  to network  106 . In one embodiment, data processing system  102  is a conventional data processing system including a processor, local memory, nonvolatile storage, and input/output devices such as a keyboard, mouse, trackball, and the like, all in accordance with the known art. In one embodiment, data processing system  102  includes and employs the Windows operating system or a similar operating system and/or network drivers permitting data processing system  102  to communicate with network  106  for the purposes of employing resources within network  106 . 
     According to one embodiment, network  106  is a public network, such as a Wide Area Network (WAN) or cloud computing network. In such an embodiment, network  106  includes a primary print server  107  that serves print requests via network  106  to printers  109 . Primary print server  107  may include a print queue for print jobs requested by remote data processing systems. 
     According to one embodiment, primary server  107  is a cloud server that implements a printing software product to manage the printing of documents received from one or more data processing systems  102  at one or more of printers  109 . In one embodiment, the printing software product may be implemented using either InfoPrint Manager (IPM) or InfoPrint ProcessDirector (IPPD), although other types of printing software may be used instead. In a further embodiment, an operator at data processing system  102  may interact with the printing software product at primary server  107  via a graphical user interface (GUI)  120  in order to provide for efficient transmission of print jobs. 
     Particularly, GUI  120  allows a user to select a desired printer  109  and submit requests for the printing of a document to a printer  109  via primary server  107 . In one embodiment, the request is presented using the Advanced Function Presentation (AFP™) system developed by International Business Machines Corporation. 
     According to the AFP system, documents may include combinations of text, image, graphics, and/or bar code objects in device and resolution independent formats. Documents may also include and/or reference fonts, overlays, and other resource objects, which are required at presentation time to present the data properly. In AFP a Mixed Object Document Content Architecture (MO:DCA) data stream is provided to primary server  107 . 
     According to one embodiment, the AFP MO:DCA data streams are object-oriented streams including, among other things, data objects, page objects, and resource objects. Primary server  107  processes pages of output that mix all of the elements normally found in presentation documents (e.g., text in typographic fonts, electronic forms, graphics, image, lines, boxes, and bar codes). The AFP MO:DCA data stream includes architected, structured fields that describe each of these elements. 
     In one embodiment, a secondary print server  108  downloads the processed pages of print job data from primary server  107  for printing at one of printers  109 . In such an embodiment, secondary print server  108  receives the print job data from network  106  via a Virtual Private Network (VPN). Secondary print server  108  subsequently converts the downloaded data to an Intelligent Printer Data Stream (IPDS) for communication with printers  109 . 
     The IPDS data stream is similar to the AFP data steam, but is built specific to the destination printer  109  in order to integrate with each printer&#39;s specific capabilities and command set, and to facilitate the interactive dialog between the secondary print server  108  and the printer  109 . The IPDS data stream may be built dynamically at presentation time (e.g., on-the-fly in real time). Thus, the IPDS data stream is provided according to a device-dependent bi-directional command/data stream. 
     Although described as separate entities, other embodiments may include secondary server  108  being incorporated in one or more of the printers  109 . Therefore, the data processing system network depicted in  FIG. 1  is selected for the purposes of explaining and illustrating the present invention and is not intended to imply architectural limitations. Those skilled in the art will recognize that various additional components may be utilized in conjunction with the present invention. 
       FIG. 2  is a flow diagram illustrating one embodiment of processing print jobs using a cloud computing network. At processing block  210 , print jobs are received at primary print server  107  from a data processing system  102 . As discussed above, primary server  107  includes a printing software product that processes received print job data. At processing block  220 , secondary print server  108  downloads the processed data from primary server  107 . In one embodiment, secondary server  108  performs a secure copy from a Network File System (NFS) directory to a local directory. 
     At processing block  230 , secondary server  108  immediately begins to segment and forward the print the job to a selected printer  109  upon completing the download. At processing block  240 , secondary server  108  monitors the status of the print job. In one embodiment, secondary server  108  monitors all print jobs being processed at each printer  109  by monitoring buffers of the printers. While monitoring printer  109 , secondary server  108  calculates the time remaining to complete current print job(s) printing at the printer  109 . 
     At decision block  250 , it is determined whether another print job is ready to be received. According to one embodiment, secondary server  108  determines that another print job is ready to be received by calculating a time to download (e.g., based on size of job and network  106  data transfer speed) and begin printing the next print job and comparing that time to the time remaining to complete current print job(s) at the printer  109 . Once the time to download and begin printing the next print job is approximately equivalent to the time to complete printing at printer  109 , printer  109  is ready to receive another job. 
     In a further embodiment, secondary server  108  takes into consideration the number of printers  109  it is driving when requesting additional print jobs. For instance, secondary server  108  recognizes that the more printers  109 , the longer to copy jobs from server  107  because of simultaneous downloads. Thus, secondary server  108  avoids flooding network  106  with large print jobs that are not yet needed by keeping data on the secure cloud server as much as possible. 
     If secondary server  108  determines that printer  109  is ready to receive another job, control is returned to processing block  220  where secondary server  108  begins to download the next print job from primary server  107 . Otherwise control is returned to processing block  240  where secondary server  108  continues to monitor the status of the print job. 
     The above-described process prevents pausing or clutching at printers  109  attributed to receiving print jobs from a cloud computing network, while enabling print job data to remain on a secure cloud server for as long as possible. 
       FIG. 3  illustrates a computer system  300  on which data processing system  102  and/or servers  107  and  108  may be implemented. Computer system  300  includes a system bus  320  for communicating information, and a processor  310  coupled to bus  320  for processing information. 
     Computer system  300  further comprises a random access memory (RAM) or other dynamic storage device  325  (referred to herein as main memory), coupled to bus  320  for storing information and instructions to be executed by processor  310 . Main memory  325  also may be used for storing temporary variables or other intermediate information during execution of instructions by processor  310 . Computer system  300  also may include a read only memory (ROM) and or other static storage device  326  coupled to bus  320  for storing static information and instructions used by processor  310 . 
     A data storage device  325  such as a magnetic disk or optical disc and its corresponding drive may also be coupled to computer system  300  for storing information and instructions. Computer system  300  can also be coupled to a second I/O bus  350  via an I/O interface  330 . A plurality of I/O devices may be coupled to I/O bus  350 , including a display device  324 , an input device (e.g., an alphanumeric input device  423  and or a cursor control device  422 ). The communication device  321  is for accessing other computers (servers or clients). The communication device  321  may comprise a modem, a network interface card, or other well-known interface device, such as those used for coupling to Ethernet, token ring, or other types of networks. 
     Embodiments of the invention may include various steps as set forth above. The steps may be embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor to perform certain steps. Alternatively, these steps may be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components. 
     Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection). 
     Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various embodiments are not intended to limit the scope of the claims, which in themselves recite only those features regarded as essential to the invention.