Patent Publication Number: US-9843698-B2

Title: Method and system for performing a print process using a map

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     The present application was filed as PCT application number PCT/EP2015/056801 filed on 27 Mar. 2015 and claims priority from U.S. provisional patent application No. 61/974,295 filed on 2 Apr. 2014, each of which is incorporated by reference. 
    
    
     BACKGROUND OF THE INVENTION 
     Technical Field 
     The present invention relates to a print system, management server, client, method of operating a print system, method of operating a management server and method of operating a client. 
     Description of Related Art 
       FIG. 1  shows a known networked print system for performing a print process, the print system comprising a print server  1 , a client  2  and a print apparatus  3  in the form of a multi-function peripheral (MFP). In an example of a secure print process, a user instructs printing of a document, e.g. from a word-processing application, at the client  2 . The print job is transmitted to the print server  3  where it is stored on a secure print queue. The user authenticates him/herself at the print apparatus  3  e.g. using a card or username and password. The user authentication information is transmitted from the print apparatus  3  to the print server  1 . The print server after processing the authentication information sends, to the print apparatus, print job information about print jobs belonging to the user to whom the card/username and password belongs. The user selects a print job at the print apparatus from the print job information, the print apparatus transmits the print request for the selected print job to the print server. The print server processes the print job in accordance with the identity of the print apparatus, if necessary, and sends the processed print job to the print apparatus for printing. 
     SUMMARY OF THE INVENTION 
     The embodiments of the invention provide a flexible and resilient configuration, for performing services forming at least part of a print process, which can reduce network traffic and server usage. 
     According to an aspect of the present invention, a print system made up of networked devices includes a management server as a networked device, a client as a networked device, and a printer as a networked device, wherein the client is configured to provide attribute information, indicating at least one attribute of the client, and capability information, indicating a capability of the client, to the management server, wherein the management server is configured to use the capability and attribute information provided by the client to generate a map indicating, for each of a plurality of services forming part of a print process, address information of at least one networked device capable of performing the service, wherein the management server is configured to provide the map to the client, and wherein the client is configured to use the address information of the map in the performance of the print process. 
     The present invention provides a print system as set out in claim  1 . Further aspects of the invention are claimed in the independent claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows a known print system arrangement. 
         FIG. 2  shows a print system according to an embodiment of the invention. 
         FIG. 3  shows a schematic representation of some of the components of the client. 
         FIG. 4  shows the process performed by the client. 
         FIG. 5  shows the process performed by the management server. 
         FIG. 6  shows another print system in accordance with the invention. 
     
    
    
     DESCRIPTION OF THE EMBODIMENTS 
     Embodiments of the invention will now be described with reference to the accompanying exemplary figures. 
       FIG. 2  shows a print system according to an embodiment of the invention. The print system comprises a hardware client  20 , a management server  10  and a print apparatus  30 . 
     The print apparatus  30  is an apparatus capable of outputting a print job and is preferably a multi-function peripheral (MFP) capable of printing, scanning and copying. The MFP may be provided with a software platform that enables individual applications to be installed and run on the MFP but this is not essential. An example of such a software platform is MEAP, a java based application software platform provided on some Canon MFPs that allows installation and running of applications on the MFP. 
     The hardware client  20  is a conventional computer e.g. a personal computer in the form of a desktop computer, laptop computer, tablet computer, notebook etc. 
     The client, management server and print apparatus are connected by a network. For example the client and print apparatus may be connected via a WAN or LAN  4  and the client and print apparatus may connect to the management server via the internet. As another example the client, management server and print apparatus may all be connected by a LAN or WAN. The client, management server and print apparatus are preferably HTTPS enabled. The data exchanged may be, for example, XML or JSON format. 
       FIG. 3  schematically shows the layout of some components of the hardware client  20 . The client comprises RAM  31 , ROM  32 , a hard disk  33 , a network communication module  34 , a display  35 , a mouse  36 , a keyboard  37 , and a CPU  38 . The components can communicate with each other over bus  39 . 
     The RAM  31  is provided as a storage area for data being processed by the CPU  38 . The ROM  32  stores programs, such as the BIOS (Basic Input/Output System) of the client. The hard disk  33  provides a storage area for programs and other data on the client. The network communication module  34  represents software and hardware provided on the client to allow the client to communicate over a network such as a LAN or the internet. A plurality of network communication modules may be present, each allowing the client to communicate over a different network. The display  35 , keyboard  37  and mouse  36  are standard components provided to allow a user to interact with and operate software on the client  20 . The CPU  38  is a standard processor, such as those manufactured by Intel® or AMD®. Software that when run causes the client  20  to perform the operations described in connection with  FIG. 4  is stored in the hard disk  33 . The software may be run using the CPU  38  and RAM  31  in a conventional manner. In this way, the stored software may control the client to perform operations described in connection with  FIG. 4 . 
     The management server  30  comprises similar components to those shown in  FIG. 3 , the description thereof will therefore not be repeated. Software that when run causes the management server to carry out the operations described in connection with  FIG. 5  is stored in a hard disk and the software may be run in a conventional manner using the CPU and RAM. In this way, the stored software may control the management server to perform the operations described in connection with  FIG. 5 . 
       FIG. 4  shows the processing performed by the client. Upon running the client software the client  20  performs a server discovery process  40  to connect to the management server using HTTPS. The server discovery process may be achieved by: 
     (i) connecting to the management server using a pre-configured URL for the management server; 
     (ii) executing a DNS (Domain Name System) query for the client&#39;s default domain; 
     (iii) executing a DHCP (Dynamic Host Configuration Protocol) discovery to determine if a DHCP option is present thereby determining determine the URL of the management server via which connection is established; or 
     (iv) issuing an IP V6 Multicast request to a predetermined multi cast address, to which the listening management server will respond such that connection can be established. 
     The above options may be executed in the order given above, thus the option (i) will take precedence over the following option (ii) etc. 
     It is possible that more than one management server is discovered using the above mechanisms. Preferably each management server will carry a “preference” attribute e.g. in the form of an integer. The client will favour ‘higher’ preference numbers to connect to. The preference attribute thus enables fail-over and load balancing in the print system. 
     The client authenticates itself with the management server via e.g. an SAML (Security Assertion Markup Language) token which is signed by a trusted provider or which may be a self-signed token. In another alternative HTTP Basic Authentication via HTTPS may be used. 
     Once connection to the management server has been established, the client is configured to send a registration request comprising attribute information and capability information to the management server  42 . 
     The attribute information from the client comprises one or more types of attribute information from the group consisting of the IP address, hostname, domain name and logged on users name. The IP address, hostname and domain name indicate the location of the client. 
     The management server stores a set of predefined “configuration groups” wherein for each configuration group at least one device is identified, e.g. by a URL, for each of a plurality of print process services. The management server also stores a predefined set of rules, based on at least one type of attribute information mentioned above, used to identify which configuration group the client belongs to. The management server applies the predefined rules to the received attribute information from the client to associate the client to a “configuration group”. The rules may either directly refer to the attribute information received from the client or may refer to attributes that can be derived from the attribute information received. The management server may use a particular aspect of the sent attribute information, e.g. logged on users name, to identify a stored user object corresponding to the logged on users name, wherein the stored user object has an assigned property such as a “Group association” which identifies a configuration group. So the server may have a predefined rule specifying that users with default group xyz belong to that configuration group. This “default group” is something the Management Server knows by loading the user object with the user login name. Besides groups a user (object) entity in the management server may have many more attributes, e.g. cost center(s), addresses etc. any of these can be used in the predefined rules to find the correct “configuration group” association. 
     The capability information of the client indicates which of the services forming part of the secure print process the client can perform. 
     An explanation of exemplary services forming part of the secure print process will now be given. 
     Considering the known secure print process described earlier, this print process involves various services as set out in (a) to (d) below:
         (a) an identification service to identify a user based on, for example, a card number or user name and password combination. The identification may be performed e.g. by a direct link to an Active Directory or by a known custom identification service.   (b) A spool storage service storing spool files for print jobs. Several spooling services may exist which are capable of distributing or mirroring spool jobs. In addition to job data, information indicating the processing state of the job may also be stored.   (c) A job processing service such as a workflow engine for processing a job in accordance with a workflow.   (d) A job information service storing information about jobs that are being processed, including their processing state. When, for example, the job processing service determines that a job is to be queued for releasing, the job information service receives registration of the job from the job processing service together with a URI identifying the spool service where the spool file of the job is stored.       

     In addition one or more of the following services may also form part of the print process:
         (e) A logging service which receives log information from networked devices for e.g. diagnostic purposes.   (f) A statistic service which receives statistical information from networked devices and/or consolidates incoming data.   (g) A notification service that can display notifications e.g. on the client(s).   (h) A device control service for device(s), e.g. a non-MEAP printer, that requires control.       

     The capability information indicates which of the services the client can provide and is transmitted to the management server with, in addition, an indication of the URL of the client. 
     An example of attribute and capability information transmitted by the client to the management server is shown below (where “xyz” is the URL the client provides the declared service by): 
     
       
         
           
               
               
               
             
               
                   
                   
               
             
            
               
                   
                   
                 &lt;peer type=“Windows SmartClient” id=“[GUID]” 
               
               
                   
                   
                 entryurl=“rest/1.0”&gt; 
               
               
                   
                   
                 &lt;parameter name=“user”&gt;auser&lt;/parameter&gt; 
               
               
                   
                   
                 &lt;parameter name=“IP”&gt;1.2.3.4&lt;/parameter&gt; 
               
               
                   
                   
                 &lt;parameter name=“DOMAIN”&gt;local&lt;/parameter&gt; 
               
               
                   
                   
                 &lt;parameter name=“HOST”&gt;computer&lt;/parameter&gt; 
               
               
                   
                   
                 . . . 
               
               
                   
                   
                 &lt;/peer&gt; 
               
               
                   
                   
                 &lt;service type=“JobInformationService”&gt; 
               
               
                   
                   
                 &lt;endpoint url=“xyz”&gt; 
               
               
                   
                   
                 &lt;parameter name=“user”&gt;auser&lt;/parameter&gt; 
               
               
                   
                   
                 &lt;/endpoint&gt; 
               
               
                   
                   
                 &lt;/service&gt; 
               
               
                   
                   
               
            
           
         
       
     
     Here the client is providing four types of attribute information namely IP address (1.2.3.4), hostname (computer), domain name (local) and logged on users name (auser). 
     Here the client is also indicating that it is capable of providing job information for the user (auser), so is capable of performing the job information service for that particular user. Other services, not shown above, the client can perform, e.g. spool storage can also be indicated as a “service type”. 
     The client is also configured to issue a request to the management server to get 43 a map indicating for e.g. each of the services (a) to (d) indicated above, address information of at least one networked device capable of performing the service. 
     The map for the three above-mentioned services thus comprises for each service, an address, preferably a URL, of at least one networked device capable of performing the service, with an attribute indicating whether the service can be performed either partially or completely. So a map may comprise, for example: 
     
       
         
           
               
               
               
             
               
                   
                   
               
             
            
               
                   
                   
                 &lt;service type=“JobInformationService”&gt; 
               
               
                   
                   
                     &lt;endpoint url=“xyz”&gt; 
               
               
                   
                   
                       &lt;parameter name=“type”&gt;partial&lt;/parameter&gt; 
               
               
                   
                   
                       &lt;parameter name=“user”&gt;auser&lt;/parameter&gt; 
               
               
                   
                   
                     &lt;/endpoint&gt; 
               
               
                   
                   
                     &lt;endpoint url=“...”&gt; 
               
               
                   
                   
                       &lt;parameter name=“type”&gt;partial&lt;/parameter&gt; 
               
               
                   
                   
                     &lt;/endpoint&gt; 
               
               
                   
                   
                   &lt;/service&gt; 
               
               
                   
                   
                   &lt;service type=“. . .”&gt; 
               
               
                   
                   
                     . . . 
               
               
                   
                   
                   &lt;/service&gt; 
               
               
                   
                   
                   . . . 
               
               
                   
                   
               
            
           
         
       
     
     The map above, for example, when received by the client  43  in response to its query, indicates to the client that the networked device with address xyz can provide the service of storing the job information on pending jobs, e.g. as a joblist. The client is thus informed it needs to send job information to the device with the URL “xyz”, which stores a list of pending jobs for a user, as part of a secure print process or, if the address “xyz” represents the client itself, as in the present case, then the client will itself store a list of pending jobs for the user logged on to the client. 
     The map also indicates that the networked device xyz has the attribute “partial” for the job information service so that any device requesting job information from the device with address xyz knows that it also has to get job information from the other addressed device indicated as “partial” (so URL “ . . . ” above). If the networked device “xyz” had the attribute “complete” in the map above then a device requesting job information is informed that it would only need to ask device xyz for job information, so would not need to issue any further request for job information after it got back a successful response from the device with address xyz. 
     Similarly for other service types such as the job processing service and the job storage service (not shown explicitly above), the map indicates which networked device(s) can provide the service, by indicating the address of the device, and also whether it can provide the service partially or completely. 
     Taking the example of the Spool Storage Service, the map may indicate two addresses “abc” and “def” as networked devices capable of performing the spool storage service. If both these addresses have the “complete” attribute the spoolfile only needs to be successfully sent to one of the devices. If the attribute was “partial” for both devices the spoolfile would need to be sent to both devices. 
     The complete/partial attribute thus has the advantage of providing failover or distributed services/data capability. 
     The service parameter indicated in addition to the partial/complete indication, so the parameter with the name “user” in the map above has the advantage of avoiding unnecessary lookups. So, for example, a client that stores the job information itself most likely only has job information for the user currently logged on to the client. The additional parameter(s) for each service give an indication, to a requesting device wishing to use such a service, whether a request is worth sending to such an addressed device or not. For example if a UserA is logged on to a printer and the printer needs to query the job information service to display jobs for UserA the user parameter can be used to determine which addressed devices providing job information services should be queried for job information relating to userA. So a job information service that only indicates userB as a user need not be queried because it cannot deliver any information for the current context (userA). 
     The operation of the management server in accordance with the embodiment of the invention will now be described with reference to  FIG. 5 . 
     The management server establishes connection with the client e.g. using HTTPS. The management server authenticates the client  50  using e.g. the SAML token provided by the client. 
     The management server receives  51  the attribute information, so one or more of IP address, hostname, domain name and logged on users name, and capability information  51  from the client. The management server generates  52  an endpoint map, indicating for each of a plurality of services forming part of a print process, address information of at least one networked device capable of performing the service, based on the attribute and capability information from the client. 
     In particular the management server analyses the received attribute information and may, as described above, apply a stored predefined set of rules to the attribute information to determine which of a stored set of predefined “configuration groups”, or templates, the client belongs to. For each stored configuration group the address of at least one device is specified for each of the plurality of services forming part of the print process (e.g. (a) to (d) above). Alternatively, rather than applying a set of predefined rules, the management server may use a particular aspect of the sent attribute information, e.g. logged on users name, to identify a pre-stored user object corresponding to the logged on users name, wherein the stored user object has an assigned a property such as a “Group association” which identifies a configuration group. 
     For each “configuration group” a list of addresses is specified for each of the plurality of services provided. These addresses may either be absolute URLs e.g:
         Identification=https://aserver/rest/1.0/services/identification,https://anotherserver/rest/1.0/services/identification
 
or may be a mixture of sub-templates, like &lt;SMARTCLIENT&gt;, and absolute URLs as shown below:
   JobInformation=&lt;SMARTCLIENT&gt;,https://aserver/rest/1.0/services/jobinformation.       

     Upon client registration, so upon receipt of the attribute and capability information from the client, the management server will check which configuration group the client belongs to as described above. Everywhere where the sub-template &lt;SMARTCLIENT&gt; is given at configuration time, the client&#39;s endpoint URL for that service will be inserted at runtime providing the capability information of the client indicates it can perform the service), thereby dynamically generating the endpoint map. The capability information is preferably cached on the management server such that it does not forget about a registered client directly after it has been registered. 
     The complete and partial attributes are set for services at configuration time depending on whether a distribution of services or a failover is required. 
     The management server then transmits the map to the client  53  and preferably also to the printer. 
     The print apparatus also comprises similar components to those shown in  FIG. 3 , in addition to conventional image forming components. Software that when run causes the print apparatus to register itself with the management server, and where relevant to transmit capability information, so information indicating which of the services forming part of the print process the print apparatus can provide, to the management server may be stored in a hard disk. The software may be run in a conventional manner using the CPU and RAM. In this manner the print apparatus may also transmit its capability information, e.g. if it is configured to provide a spool storage service, to the management server and the management server is configured to include this capability information in the map provided to the printer and client. In the configuration group there may be a &lt;MEAP&gt; sub-template into which the registered printer&#39;s endpoint URL will be inserted at runtime as the Printer can also offer services, e.g. Spool Storage (similarly to the &lt;SMARTCLIENT&gt; sub-template as explained above). 
     The printer is also configured to use the map in the performance of the print process. 
     A specific example of the print process will now be described. In this case the generated map indicates that the client is capable of performing the job processing service, spool storage service and job information service whilst the management server is capable of performing the identification service. With reference to  FIG. 2 , the printer  30  and client  20  are connected via a LAN but require an internet connection to connect to the management server  10 . If a user prints a job on the client  20  the client controls the performance of the print job such that it is performed in accordance with a workflow (job processing service), stores the spool file (spool storage service) and the job information (job information service) in accordance with the map. When the user logs on at the printer  30 , the printer contacts the management server to perform the identification check (identification service) as indicated in the map. Upon identification of the user, the printer gets the list of pending jobs from the client  20  and upon selection of the required print job(s) by the user at the printer  30 , the spool file is obtained directly from the client  20 . The print process can thus be performed without requiring transmission of the spool file to and from the management server  10  thereby reducing network traffic and increasing reliability. 
     Another example will now be explained with reference to  FIG. 6  in which the reference numbers correspond to those of  FIG. 2  and with the addition of another print apparatus  40 . The map has already been provided by the management server  10  to the devices  20 ,  30  and  40 . The map indicates that the client is capable of performing the job processing service and job information service whilst the print apparatus  30  is capable of performing the identification service and the print apparatus  40  is capable of performing the spool storage service. 
     If a user prints a job on the client  20  the client controls the performance of the print job such that it is performed in accordance with a workflow (job processing service) and stores the job information (job information service) in accordance with the map. The spool file is sent to the print apparatus  40  in accordance with the map (spool storage service). When the user logs on at the printer  30 , the printer performs the identification check (identification service) as indicated in the map. Upon identification of the user, the printer  30  gets the list of pending jobs from the client  20  and upon selection of the required print job(s) by the user at the printer  30 , the spool file is obtained from the print apparatus  40  via the client  20 . 
     The present invention also provides:
         a computer program which on execution by a print system, the print system being made up of networked devices, the networked devices comprising a management server, a client and a printer, causes the print system to execute the method of claim  14 ;   a computer program which on execution by a management server, for use in a print system made up of networked devices, the networked devices including a client and a printer, causes the management server to execute the method of claim  15 ;   a computer program which on execution by a client, the client being for use in a print system made up of networked devices, the networked devices including a management server and a printer, causes the client to execute the method of claim  16 .       

     The invention also provides a computer-readable storage medium storing one or more of the computer programs listed above.