Print workflow visualization and comparison

Methods and systems disclosed provide for visually displaying a graphical representation of two or more print workflows to a user with a Graphical User Interface (GUI), analyzing the two or more print workflows to determine the differences between them, and visually displays the differences to the user with the GUI.

FIELD

This disclosure relates to the field of printing systems and, in particular, to comparing print workflows.

BACKGROUND

Print shops are typically medium or large-scale facilities capable of supplying printing services to meet a variety of customer demands. For example, print shops are often used to print documents for mass-mailing (e.g., customer bills, advertisements, etcetera). Because print shops engage in printing on a scale that is hard to match, their customer base is usually varied. Print shop clients may therefore include both large institutional clients (e.g., credit card companies and banks), and small clients (e.g., small businesses and churches).

Print shops are generally arranged to print incoming print jobs from clients in a way that is economical, yet fast. Thus, print shops often include a number of high-volume printers capable of printing incoming print jobs quickly and at high quality. These printers may be managed by operators who can remove paper jams and reload the printers with media. Print shops also typically include post-print devices that are used to process the printed documents of each print job (e.g., stackers, staplers, cutters, binders, etc.). Because print shops serve a variety of clients, they are often tasked with handling print jobs that have varying printing formats, delivery dates, and print media requirements. Print shops therefore often use a centralized print server that coordinates the activity between printers of the print shop and the clients. The print server schedules incoming print jobs and forwards them to the printers of the print shop.

Customers with printing needs generate print jobs for the print shop using a variety of tools, such as web interfaces to the print shop, client-side tools operated by the customer, etc. When a customer generates a print job for the print shop, options for the job are selected by the customer and integrated into the print job (e.g., a job ticket for the customer's print data indicates duplexing, print media types, etc.) based on the capabilities and activities that the print shop offers to customers. A print shop administrator then generates a print workflow for the print job. The print workflow includes sequences of steps that identify the print shop activities to perform for the print job. Such steps may include a variety of actions such as printing, stapling, generating billing for the customer, shipping, an email verification process for proof sheets, transforming data from one datastream to another, identifying document boundaries in a continuous print stream, adding barcodes, etc.

In some cases, a print shop administrator may have a desire to determine how two print workflows are different from each other. For instance, a print shop administrator may use a print workflow for an old print job as a template, and make changes to the print workflow for a new print job. In some cases, it may be difficult to determine the differences, in cases where the changes are subtle. For instance, the steps in the two print workflows may be identical, but the properties in the steps are not. Or, the two print workflows may have different steps, which can be difficult to determine when the print workflows are complicated. Thus, it is desirable to ensure that differences between print workflows can be represented to the print shop administrator with clarity and precision.

SUMMARY

Embodiments described herein provide for visually displaying a graphical representation of two or more print workflows to a user with a Graphical User Interface (GUI), analyzing the two or more print workflows to determine the differences between them, and visually displays the differences to the user with the GUI.

One embodiment comprises an apparatus that includes a controller coupled to a display device. The display device presents a GUI to a user. The controller receives a first print workflow and at least one second print workflow, generates a first signal indicative of a first graphical representation of sequences of linked steps of the first print workflow and the at least one second print workflow, and transmits the first signal to the display device. The display device receives the first signal from the controller, and displays the first graphical representation to the user with the GUI as a function of the first signal. The controller determines differences between the first print workflow and the at least one second print workflow, generates a second signal indicative of a second graphical representation of the differences, and transmits the second signal to the display device. The display device receives the second signal from the controller, and displays the second graphical representation to the user with the GUI as a function of the second signal.

Another embodiment comprises a method operable by an apparatus that includes a controller coupled to a display device, where the display device is configured to display a Graphical User Interface (GUI) to a user. The method comprises receiving, by the controller, a first print workflow and at least one second print workflow, generating, by the controller, a first signal indicative of a first graphical representation of sequences of linked steps of the first print workflow and the at least one second print workflow, and transmitting, by the controller, the first signal to the display device. The method further comprises receiving, by the display device, the first signal from the controller, and displaying, by the display device, the first graphical representation to the user with the GUI as a function of the first signal. The method further comprises determining, by the controller, differences between the first print workflow and the at least one second print workflow, generating, by the controller, a second signal indicative of a second graphical representation of the differences, and transmitting, by the controller, the second signal to the display device. The method further comprises receiving, by the display device, the second signal from the controller, and displaying, by the display device, the second graphical representation to the user with the GUI as a function of the second signal.

Another embodiment comprises a tangible computer-readable medium includes programmed instructions which, when executed by one or more processors of an apparatus that includes a controller coupled to a display device, the display device configured to display a Graphical User Interface (GUI) to a user, direct the one or more processors to receive, by the controller, a first print workflow and at least one second print workflow, to generate, by the controller, a first signal indicative of a first graphical representation of sequences of linked steps of the first print workflow and the at least one second print workflow, and transmit, by the controller, the first signal to the display device. The instructions direct the one or more processors to receive, by the display device, the first signal, and to display, by the display device, the first graphical representation to the user with the GUI as a function of the first signal. The instructions further direct the one or more processors to determine, by the controller, differences between the first print workflow and the at least one second print workflow, to generate, by the controller a second signal indicative of the differences, and to transmit, by the controller, the second signal to the display device. The instructions further direct the one or more processors to receive, by the display device, the second signal from the controller, and to display, by the display device, the second graphical representation to the user with the GUI as a function of the second signal.

DESCRIPTION OF THE EMBODIMENTS

FIG. 1is a block diagram illustrating a print shop architecture102in an illustrative embodiment. Print shop architecture102includes a print server120, which functionally connects one or more clients110-112to print shop resources130. Clients110-112may be servers or software applications used by print shop customers. Clients110-112submit print data and job tickets that describe how the print data will be processed to interface121. A print shop administrator utilizes print server120to perform an analysis on print workflows to identify differences, and manage print shop resources130in accordance with these print workflows. The print workflows are analyzed based on print workflow properties that define the relationships, ranges of values, instances, etc., of steps used to implement the activities that are provided by print shop resources130.

Clients110-112may serve banks, credit card companies, or other customers that have printing and document delivery needs (e.g., monthly bank statements, monthly credit card bills, etc.). Clients110-112may also serve customers with digital printing and publishing needs (e.g., needs for e-mail services, web publishing services, and others). Information describing the activities requested by the customer may be included in job tickets sent by clients110-112.

Print shop resources130include the devices and components of the print shop that are used to perform print shop activities. For example, print shop resources130may include personnel, printers, post-printing machinery, e-mail or web publishing servers, media, ink, firmware versions for print shop devices, etc. Print shop resources130may exist within the confines of the print shop itself, or may comprise off-site devices and functional components managed by print server120. The print shop resources131-134illustrated inFIG. 1are merely meant to provide an example of the variety of print shop resources130that may be provided. For instance, print shop resources130may include printing system131for transforming print data onto a suitable printable medium, such as paper. Other resources may include e-mail server132for generating e-mails, web host133for generating and hosting web pages or other internet content, and distribution system134for packaging and shipping printed documents.

While in operation, print server120identifies the available activities that may be performed by print shop resources130. Print server120may determine the available print shop activities based upon the nature of print shop resources130. For example, when print shop resources130include e-mail server132, then the available activities may include generating e-mails, scheduling times to send e-mails, and selecting e-mail recipients. The activities may be associated with a category or type of resource (e.g., personnel, printers, servers) and may also be associated with specific named print shop resources (e.g., Susan, printing system131, e-mail server132).

Innumerable print shop activities may be available, and certain print shop activities may be logically related with each other so that they have order and dependency relationships (e.g., a post-printing activity such as hole punching depends upon the print data being successfully printed). A print shop administrator may prioritize activities (e.g., to ensure that billing is the last activity performed), and may make certain activities required (e.g., billing may be required for every print job that enters the print shop). Furthermore, certain activities may be required, altered, or made optional based upon specific clients, customers, or information in a job ticket of the print job (e.g., customer service requests, multimedia parameters, size of the print data, format of the print data, print media selected by the customer for the print job, etc.). For example, thank you letters may be sent to high value or long-term customers, while credit checks may be performed upon new customers. In order to aid an operator of the print shop in creating a print workflow for a print job, a Graphical User Interface (GUI)124is provided for manipulation of print workflows.

Once the activities that are available at print shop architecture102have been determined, an operator utilizes GUI124in conjunction with workflow generator122to generate a print workflow for a print job. As discussed previously, a print shop administrator may utilize an older print workflow for a previous print job as a template for a new print job. In some cases, the steps, the order of the steps, and many of the properties of the print workflow may be the same for different print jobs. However, typically at least some of the properties of a print workflow will change for different print jobs. For instance, the print media may be different, an email address used to email customers proofs for the print job may be different, a transformation of print data may be needed, a different control file may be needed, and/or a different barcode content or barcode positions may be needed, etc. These differences may be minor enough to escape easy detection by the print shop administrator when the print shop administrator attempts to determine the differences between the different print workflows. For instance, the email address property for a step in the print workflow that utilizes e-mail server132may not be visible when the step is graphically illustrated to the print shop administrator. In another example, the print workflow may include a large number of steps, branches, and conditions associated with the branches that is not easily discernable from casually inspecting the graphical representation of the print workflows at GUI124. In this embodiment, print server120provides two or more print workflows to a workflow analyzer123, which performs an analysis to determine the differences between the print workflows. These differences are then visually presented to the print shop administrator using GUI124. The print shop administrator is able to quickly and easily identify the difference between the print workflows, making changes to the print workflow that will be used by the new print job. Once the print shop administrator is satisfied with the print workflow, the print workflow is assigned to the new print job and submitted to a resource manager125.

Resource manager125of print server120analyzes the print workflow assigned to the print job by the print shop administrator, and directs print shop resources130to perform the activities defined by the print workflow for the print job. Resource manager125identifies activities that relate to specific print shop resources131-134(e.g., the activity “e-mail the client a printing status report” may relate to e-mail server132), and instructs the specific resources to perform the identified activities. Resource manager125may also receive feedback from print shop resources130(e.g., information indicating that an activity has successfully completed).

FIG. 2is a block diagram illustrating additional details for workflow analyzer123ofFIG. 1in an illustrative embodiment. In this embodiment, workflow analyzer123includes a controller202and a display device204that displays GUI124. Controller202and display device204includes any physical components, and/or physical systems, and/or physical devices that are capable of implementing the functionality described herein for workflow analyzer123. While the specific physical implementation of controller202is subject to design choices, one particular embodiment may include one or more processors206coupled with a memory208. Processor206includes any electronic circuits and/or optical circuits that are able to perform functions. The term “circuits” used herein refers to a physical implementation of hardware that is capable of performing the described functionality. Processor206may include one or more Central Processing Units (CPU), microprocessors, Digital Signal Processors (DSPs), Application-specific Integrated Circuits (ASICs), Programmable Logic Devices (PLDs), Field-Programmable Gate Arrays (FPGA), etc. Some examples of processors include INTEL® CORE™ processors, Advanced Risk Machines (ARM®) processors, etc.

Memory208includes any electronic circuits and/or optical circuits and/or magnetic circuits that are able to store data. For instance, memory208may store information regarding the print workflows under comparison, which may then be used by processor206to determine the differences between the print workflows. Memory208may include one or more volatile or non-volatile Dynamic Random-Access Memory (DRAM) devices, FLASH devices, volatile or non-volatile Static RAM devices, hard drives, Solid State Disks (SSDs), shift registers, etc. Some examples of non-volatile DRAM and SRAM include battery-backed DRAM and battery-backed SRAM.

In this embodiment, consider that client110generates a print job for print shop architecture102, and transmits the print job to interface121of print server120. Utilizing GUI124, a print shop administrator interacts with workflow generator122to generate a new print workflow for the customer's job. The print workflow includes steps that identify the print shop activities to perform for the print job. For example, the steps may indicate a preflight activity for the print job, customer credit verification, printing, post-print activity for the print job (e.g., stapling, binding, mailing, shipping, etc.). Upon generating the new print workflow, the print shop administrator may wish to compare the new print workflow with a different print workflow to determine the differences between them.

FIG. 3is a flow chart illustrating a method300of comparing print workflows in an illustrative embodiment. The steps of method300will be described with respect to controller202and display device204ofFIG. 2, although one skilled in the art will understand that method300may be performed by other systems not shown. The steps of the method described herein are not all inclusive and may include other steps not shown. The steps may also be performed in an alternative order.

To begin a process of comparing different print workflows (e.g., comparing a first print workflow with a second print workflow), controller202receives two or more print workflows (see step302). Controller202generates a first signal210indicative of a first graphical representation of sequences of linked steps of the print workflows (seeFIG. 2and step304ofFIG. 3). The first graphical representation comprises any visual indications that allow a user to identify the steps in different print workflows. For instance, steps in the print workflows may be represented by boxes, with links between steps in the print workflows represented by arrows between the boxes. Controller202transmits first signal210to display device204(see step306). Display device204receives first signal210(see step308), which displays the first graphical representation of the print workflows to the user with GUI124as a function of first signal210(see step310).

FIGS. 4-5illustrate two print workflows420-421displayed by GUI124in an illustrative embodiment. Although only two print workflows420-421are described for comparison, a print workflow may be compared with any number of print workflows. Generally,FIG. 4may be considered as representative of one particular implementation of the first graphical representation of print workflows420-421, whileFIG. 5may be considered as representative of one particular implementation of the second graphical representation of print workflows420-421.

InFIG. 4, print workflows420-421are similar to each other, but not identical. In particular, while both print workflows420-421include steps401-410, a property of step408between print workflows420-421is different. For instance, step408may comprise a process to send an email to the customer with proofs of the print job. However, the email address between different customers is typically not the same. When comparing different print workflows, it is not easy to determine this difference without some visual clue. Controller202analyzes print workflows420-421, and determines the differences between print workflows420-421(see step312). For instance, print workflows420-421may be represented in a database by Extensible Markup Language (XML) data. The XML data may include various fields that define the properties and steps for print workflows420-421. To determine the differences between print workflows420-421, controller202may identify an XML entry in a database (not shown) associated with the email address property value for step408of print workflow420, and compare it with the corresponding XML entry in the database associated with the email property value for step408of print workflow421. In response to determining a difference between the property values in step408for print workflows420-421, controller202generates a second signal211indicative of a second graphical representation of the differences (seeFIG. 2and step314ofFIG. 3), and transmits second signal211to display device204(see step316). Display device204receives second signal211(see step318), and displays the second graphical representation to the user with GUI124as a function of second signal211(see step320).

FIG. 5illustrates one possible implementation of visually displaying the differences between print workflows420-421in an illustrative embodiment. In particular, an alert box502displays the different property values for the email address field of step408for print workflows420-421.

FIGS. 6-7illustrate two print workflows425-426displayed by GUI124in another illustrative embodiment. InFIG. 6, print workflows425-426are similar to each other, but not identical. In particular, while both print workflows425-426include steps401-410, a property value of a branching condition602between steps401-402is different in this embodiment. For instance, branching condition602in print workflow425may be set to execute step404when the print job is formatted as an Advanced Function Presentation (AFP) print job. However, determining if the branching condition602for print workflow426is the same may be difficult to determine without manually investigating various property field windows for print workflow426. To determine the differences between print workflows425-426, controller202may identify an XML entry associated with branching condition602of print workflow425, and compare it with the corresponding XML entry associated with branching condition602of print workflow426. In response to controller202determining a difference between the property values for branching condition602, display device204visually displays the differences to the user with GUI124.FIG. 7illustrates one possible implementation of visually displaying the differences between print workflows425-426in an illustrative embodiment. In particular, an alert box702displays the different property values for branching condition602for print workflows425-426. Generally,FIG. 6may be considered as representative of one particular implementation of the first graphical representation of print workflows425-426, whileFIG. 7may be considered as representative of one particular implementation of the second graphical representation of print workflows425-426.

FIGS. 8-9illustrate two print workflows430-431displayed by GUI124in another illustrative embodiment. InFIG. 8, print workflows430-431are similar to each other, but not identical. In particular, while print workflow430include steps401-410, step406is missing from print workflow431. To determine the differences between print workflows430-431, controller202may identify XML entries that identify the steps in print workflow430, and compare the entries with the corresponding XML entries that identify the steps in print workflow431. In response to controller202determining a difference between the steps in print workflows430-431, display204visually displays the differences to the user with GUI124.FIG. 9illustrates one possible implementation of visually displaying the differences between print workflows430-431in an illustrative embodiment. In particular, step406in print workflow430is highlighted to indicate that step406is missing from print workflow431. Generally,FIG. 8may be considered as representative of one particular implementation of the first graphical representation of print workflows430-431, whileFIG. 9may be considered as representative of one particular implementation of the second graphical representation of print workflows430-431.

FIGS. 10-11illustrate two print workflows435-436displayed by GUI124in another illustrative embodiment. InFIG. 10, print workflows435-436are similar to each other, but not identical. In particular, while print workflow435includes a branch1002that is not present in print workflow436. To determine the differences between print workflows430-431, controller202may identify XML entries that identify the branches in print workflow435, and compare the entries with the corresponding XML entries that identify the branches in print workflow436. In response to controller202determining a difference between the steps in print workflows435-436, display204visually displays the differences to the user with GUI124.FIG. 11illustrates one possible implementation of visually displaying the differences between print workflows435-436in an illustrative embodiment. In particular, branch1002in print workflow435is highlighted to indicate that branch1002is missing from print workflow436. Generally,FIG. 10may be considered as representative of one particular implementation of the first graphical representation of print workflows435-436, whileFIG. 11may be considered as representative of one particular implementation of the second graphical representation of print workflows435-436.

FIGS. 12-13illustrate two print workflows440-441displayed by GUI124in another illustrative embodiment. InFIG. 12, print workflows440-441are similar to each other, but not identical. In particular, steps402and405in print workflow440are linked in a different order as compared to print workflow441. To determine the differences between print workflows440-441, controller202may identify XML entries that identify how the steps are linked in print workflow440, and compare the entries with the corresponding XML, entries that identify how the steps are linked in print workflow441. In response to controller202determining a difference between the steps in print workflows440-441, display device204visually displays the differences to the user with GUI124.FIG. 13illustrates one possible implementation of visually displaying the differences between print workflows440-441in an illustrative embodiment. In particular, steps402and405in print workflow440are highlighted to indicate that steps402and405are linked in a different order as compared to print workflow441. Generally,FIG. 12may be considered as representative of one particular implementation of the first graphical representation of print workflows440-441, whileFIG. 13may be considered as representative of one particular implementation of the second graphical representation of print workflows440-441.

The embodiments described herein allow for a print shop administrator to compare different print workflows and quickly identify the differences between the print workflow using visual clues. The use of visual clues reduces the amount of effort that it may take to manually identify the differences, which improves the efficiency of the print shop.

The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In one embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.FIG. 14illustrates a computing system1400in which a computer-readable medium1406may provide instructions for performing method300in an exemplary embodiment.

The computer-readable medium1406can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium1406include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random-access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.

A data processing system suitable for storing and/or executing program code includes at least one processor1402coupled directly or indirectly to memory1408through a system bus1410. The memory1408can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code is retrieved from bulk storage during execution.

Input/output or I/O devices1404(including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems, such a through host systems interfaces1412, or remote printers or storage devices through intervening private or public networks, such as through print engine interfaces1414. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.