具体实施方式
虽然将结合其中示出本发明优选实施例的附图对本发明在下文进行更充分地说明,但从说明书的开头可知,本领域的技术人员可对在此描述的本发明进行修改而还达到本发明的良好效果。因此,说明书应被理解为更宽泛指向本领域的技术人员的教导揭示、而不是对本发明的限制。
下面说明柔性和可扩展的作业处理系统。根据本发明的各种实施例,作业发信方将作业发送到代替实际打印机的作业处理系统。从作业发信方看,作业处理系统与实际打印机难以区别。根据本发明的另一方面,作业发信方可意识到作业处理系统并利用其知识将附加控制信息嵌入作业数据流。每个作业发信方可被多个装置驱动,其中一些可以是实际输出装置、而其它可能的接收机属于多个作业处理系统。
利用打印机模拟器处理每个打印作业。打印机模拟器限定为任何软件程序或硬件装置或它们的组合,用以产生电子形式的输出以代替硬拷贝。根据本发明的一个方面,多个打印模拟器也可并联使用。打印模拟器的输出由包含已处理打印数据、可选择状态、错误和控制信息的多种数据格式。非已处理的数据输出信息,此后将被称作控制信息。将使用的术语“虚拟打印机”在下文中表示接收机/打印机模拟器组合,可以理解,打印机模拟器可间歇地出现或每个虚拟打印机在任何特定时刻可包含多个现存打印机模拟器。
根据本发明的一个方面,每个打印机模拟器的输出(如果可能,包括控制信息)被储存以便观看。根据本发明的另一方面,打印机模拟器的输出被提供给动作集,例如提供给后处理装置。该动作既可与输出产生同步出现,也可与诸如纸页或作业边界变化频率异步出现。
根据本发明的另一方面,客户机程序用于与作业处理系统通信。根据本发明一个方面的客户机包含图形用户界面(GUI),允许用户观看和尽可能操作该作业输出,定义所进行的动作,在总体上配置整个系统的行为、并具体配置每个打印机模拟器。
在下文中,为了说明本发明,对许多具体细节进行陈述以提供对本发明的全面理解。但是,对于本领域的技术人员而言,显然不采用这些具体细节也可实现本发明。在其它实例中,熟知的结构和装置在方框图中示出。
下面将说明本发明包括的各种步骤。本发明的步骤可由硬件部件执行或可被嵌入机器可执行指令中,这些指令可用于使一般目的或特定目的处理器用该指令进行编程以执行该步骤。另外,该步骤可由硬件和软件的组合来执行。
本发明可形成为计算机程序产品,它包括其上存储指令的机器可读介质,该指令可用于计算机(或其它电子装置)编程,以进行根据本发明的处理。机器可读介质可包括但不限于软磁盘、光盘、CD-ROM、磁光盘、ROM、RAM、EPROM、EEPROM、磁或光卡、或其它种类的适于存储电子指令的媒体/机器可读介质。另外,本发明还可下载为计算机程序产品,其中,借助经通信链(例如,调制解调器或网络连接)而嵌入载波或其它传播介质中的数据信号该程序可从远端计算机传送到要求的计算机。
为方便起见,将结合特定数据流、即智能打印机数据流(IPDS)说明本发明的实施例。在另外的实施例中,其它的数据流、例如页面描述语言、惠普打印机控制语言(PCL)、打印机作业语言(PJL)、或Apple Talk打印机文件协议(PAP)均可被使用。但是,所使用的数据流最好是体系结构设计的和双向的。所谓“体系结构设计的”含意是控制的标准化集与原始数据一起传送,它规定数据如何被表示。所谓“双向的”含意是同步机构设置在主机(例如,打印服务器或其它数据流产生器)与接收机(例如,打印机或其它输出装置)之间并允许它们在数据流的各个点上同步。例如,主机和接收机能够使在基于为主机启动查询和接收机答复信息的交换提供的确认协议的命令或页面层次同步。此外,另一方面将结合特定的传输层次协议(也称作运载协议或通信协议)即传输控制协议(TCP),在两个端点例如在静电复印网络系统(XNS)S/370并行通道主机设备等之间提供无差错、双向字节流的其它协议描述本发明的实施例。
图1表示根据本发明一个实施例的示例性软件结构。根据所示实施例,作业处理系统包括:一个或多个作业发信方100、150;一个或多个接收机110、115、120;一个或多个打印机模拟器125、130、135;控制服务器140(下面称作“服务器”);一个或多个后处理器150和一个或多个客户机160、165。在不同的实施例中,可通过组合或去除一个或多个上述部件或添加附加部件而应用或多或少的部件。重要的是,所述部件可保存在例如相同计算机系统或被配置在局域网络的几个不同的计算机系统中。图1示出一个可能的部件配置,其中,虚线表示部件之间的物理分隔。当部件被物理分隔时,双向通信链路可被建立、并经例如TCP/IP、基于插座的接口而在部件中保持。
在一个实施例中,作业发信方100、150可包括InfoprintManager的当前或将来的释放装置、或其它IPDS启动打印服务器。不同作业发信方可存在于同一系统中。根据图1所示的实施例,服务器用具体例子说明并控制接收机110、115和120。接收机以同样的方式将来自作业发信方100和105的连接接收为实际输出装置。
根据所示的实施例,每个接收机使用打印机模拟器125、130、135以处理作业。本领域的技术人员可知,每个接收机可使用多个并联的打印机模拟器。打印机模拟器125、130、135既可以是对每个作业的具体说明、也可以是不变的。在本发明的优选实施例中,打印机模拟器被服务器启动、也可被接收机启动。如果打印机模拟器在多重作业中保持不变,则每个打印机模拟器可与多个接收机连通。
根据所示的实施例,打印机模拟器130将其输出传送到后处理器150、该输出也可与服务器140连通。
另外,服务器140与多个用于接收用户命令并提出作业输出的客户机160、165连通。
重要地,各种系统部件之间的所有连接被示为双向的。虽然这允许最大的功能性,但本领域的技术人员清楚,图1的各种连接均是单向的。
在优选实施例中,在作业发信方100、105与接收机110、115、120之间交换的显示装置协议是智能打印机数据流(IPDS)。IPDS是体系结构设计的、双向打印机数据流,该数据流包含数据并控制两者定义如何被提出的数据。另外,IPDS结构提供数据流层上的扩展确认协议,该协议提供查询答复信息的交换并允许详细异常信息返回。IPDS数据流与传送连通协议无关。这允许同一数据流传送到附加在通道上的显示装置、控制器、局域网和任何其它种类的支持数据透明传送的网络链路。通过描述数据显示的命令IPDS传送数据并进行控制,提供常驻字体和诸如覆盖、页面段、装入字体的下载资源的动态管理。此外,IPDS命令允许控制诸如双面、介质储存器选择、输出完成等装置功能。有关IPDS结构进一步的背景和信息可参看出版物标题“智能打印机数据流标准”(书号S544-3417,1996年3月出版,IBM Printing Systems Division ofBoulder,Colorsdo)。
重要地,虽然结合将打印机数据流诸如IPDS提供到接收机110、115、120的作业发信方描述了这个实施例,但本发明并不限于从任何特种装置接收打印机数据流。在其它实施例中,数据流例如可直接或间接地从工作站或其它数据流产生器接收、或可从脚本文件阅读。
在图1所示的优选实施例中,打印机模拟器130将其输出(包括输出数据和/或控制信息)连接到输出后处理器150。输出后处理器可根据装置、作业或数据流基准任何一个进行配置。根据本发明的一个实施例,打印机模拟器可以产生适于高速打印的光栅图像、诸如嵌入在“混合目标文件内容结构(MO:DCA)”中的“图像目标内容结构(IOCA)”,后处理器可对打印服务器的打印输出作业重新排队,打印服务器可与作业发信方100相同或不同。
如图1所示,打印机模拟器125和135储存输出在诸如磁盘170、175存储装置上,以便今后使用。
根据本发明的一个实施例,用户可利用客户机160、165指示服务器140给使用任意处理器的后处理提交储存在盘170、175上的作业输出。这种后处理动作例如可由用户通过指定一任意命令线定义,被服务器调用的处理可接收为基于命令线的文件名、或经标准输入的数据、或它们的组合、或某些其它形式的输入。
值得注意的是,对于用户选择,单个虚拟打印机的行为可在打印机模拟器输出的配置中变化。这样每个虚拟打印机可在某些点储存输出,而在其它时间可将输出提交到不同的后处理器。重要地,虚拟打印机可将每个输出同步提交到多个输出处理器。
每个打印机模拟器125、130、135的数据输出可以是适于应用的不同种类。打印机既可以产生在本打印机输出空间中的诸如每通道CMYK8字节每英寸600点的光栅图像、也可以产生在不同输出空间中的诸如被调整为特定显示或更复杂的数据格式的RGB光栅数据的光栅图像。根据本发明的一个实施例,数据可被压缩在诸如MO:DCA、PostScript,Portable Data Format(PDF)或Tagged Image FlieFormat(TIFF)的标准数据流格式。根据另一个实施例,数据格式可根据特定目的而调整为任意的。
在图1所示的本发明的优选实施例中,每个打印机模拟器可产生被压缩在不同格式中可动态变换的多个数据种类。
已经简述了根据本发明实施例的系统结构的主要部件,下面结合图2、3和4说明本发明优选实施例中的服务器的控制流。图2是表示服务器主线程控制流的高层流框图。
在步骤200,通过初始化、阅读建立的参量和下载不变的信息、诸如虚拟打印机和系统所知的作业服务器启动。在步骤210,服务器启动用于所有虚拟打印机的接收机。接收机控制流在图5中表示并直接从步骤210启动。
在所有接收机被启动后,服务器在步骤220等待连接请求。该等待可以不同方式进行,诸如插座锁定或信号机。在本发明的优选实施例中,服务器对接收机连接监听两个插座,其它用于客户机连接。在另一个实施例中,只可使用一个插座,连接种类可根据服务器接收的连接消息中提供的连接标记确定。
在步骤230中,连接请求被接收。在步骤240中,不同的控制路径根据连接是客户机连接还是接收机连接而进入。如果连接是客户机连接,则服务器在步骤250中启动处理该连接的客户机线程。客户机控制流示于图3,其中的步骤310被图2中的步骤250立即启动。在客户机线程被启动后,控制返回到步骤220以等待下一个连接。
如果该连接在步骤240中被确定是接收机连接,则在步骤260中服务器启动接收机处理线程。该连接线程控制流示于图4中,图4中的步骤400被图2中的步骤260立即启动。在步骤260之后,控制流返回到步骤220以等待另一个连接请求。
本领域的技术人员可知,上述的主控制环必需快速运行,由于只有一个连接请求可在该时间被处理。最新的操作系统诸如Uinx如处理繁忙时将对连接请求排队,但太多请求将溢出排队而导致拒绝连接。为缩短处理每个事件所需的时间,本发明的另一个实施例将根据步骤230中接收的连接请求立即产生连接处理线程、并返回到步骤220。而后,步骤240-260将利用新线程进行处理,新线程既可以是终结或继续为客户机、也可以是接收机处理线程。
重要地,必需注意,根据本发明优选实施例图3和4所示的控制流虽然看起来具有相对的线性、是利用多个线程完成的,而这一课目在它们的事件处理环中不出现。
下面转入图3所示的根据本发明优选实施例的服务器客户机处理线程的高层控制流。控制流由图2中的步骤250启动并进入到步骤310。在步骤310中,包括任何信号交换和存取授权的连接被建立。在下一个步骤320中,对客户机预约一组事件。如果客户机预约到事件,则该事件(诸如打印作业中的页面完成)被连接到该客户机。在最简单的情况下,所有客户机预约到所有事件,但是该预约可基于用户权限和用户输入所限制。
在下一步骤330中,与预约事件对应的当前服务器状态被发送到客户机。例如,如果客户机预约到与某些打印机相关的事件,则服务器连接到客户机和对该打印机目前可利用的处理作业的表。
接着,控制流进入步骤340以等待事件发生。该事件既可以是已预约客户机的服务器事件、也可以是来自客户机的消息。当事件在步骤350中被接收时,控制流在步骤360中根据该事件是服务器事件还是客户机消息而分流。如果事件是服务器事件,则在步骤370中将状态更新发送到客户机,之后,控制返回到步骤340以等待另一事件。
如果事件是客户机消息,则服务器在步骤380中接收并分析该消息。如果在步骤385中,发现该消息包含退出命令,则该连接在步骤390中终止,包括全部必要的清除和线程终止。另外,该命令在步骤395中由服务器执行,之后,控制流返回到步骤340以等待下一事件。
图4表示根据本发明优选实施例的接收机处理器的高端控制流。在被图2中的步骤260启动之后,步骤400初始化该连接。
控制流现在进入步骤410以等待事件发生。该事件既可以是服务器所需动作的服务器事件,也可以是接收机报告作业启动的作业事件。一旦事件在步骤415中被接收,即在步骤420中分成服务器或作业事件。
如果事件是服务器事件,则控制流在步骤425中继续,其中,该命令被分类成终止命令或非终止命令。如果命令是终止命令,则接收机处理结束。另外,该命令在步骤428中执行,之后,控制流返回到步骤410以等待下一事件。
如果在步骤420中事件被确定为作业事件,则在步骤430中执行作业建立动作。在步骤435中,流程被分成两个平行的并行通道,其中,作业处理器线程被启动。在步骤470中,作业处理器线程结束建立之后(建立可包括阅读缺省打印机模拟器结构),即阻塞直到在步骤440中主接收机线程接收来自接收机的作业和装置结构数据。同步化可用本领域已知的诸如信号标等多种方式进行,并在图中用虚线示出。
在步骤440中接收(也许是存储)配置数据之后,作业处理器线程接通并分析与在步骤440中得到的配置参量相关的任何作业,用它们修改缺省打印机模拟器建立、并在步骤475中启动打印机模拟器。主线程阻塞直到作业线程接收来自打印机模拟器的确认,步骤480中启动完成并且模拟器准备接收数据。之后,主线程接通并在步骤445中给接收机发送必需建立直接连接到打印机模拟器的信息。
虽然为了更加有效,我们的优选实施例使用直接连接,但本领域的技术人员可知,这种连接不是必需的,接收机与打印机模拟器之间的连接也可通过服务器实现。
下面,主线程进入监视来自接收机的连接的步骤450,同时,作业线程在步骤485中监视来自打印机模拟器的连接。在两种情况中,线程在步骤495中产生服务器事件。例如,打印机模拟器可通知服务器另一页面已经输出,在这种情况下,所有事件将通知所有预约的客户机另一页面可被看到。在主线程接收到作业已结束的通知后退出步骤450、并在步骤455中等待作业处理线程结束。
在打印机模拟器通知作业处理线程作业处理已经结束之后,在步骤490执行关闭动作并终止。主线程接通、在步骤460中执行附加关闭和清除动作(例如,产生告诉客户机作业已经完成的事件)、在步骤465中通知没有接收下一个作业的接收机,而后将控制返回到步骤410以等待下一个事件。
图5描述在根据本发明一个实施例的接收机处理中的高层控制流。接收机在步骤500中启动,包括准备从作业发信方的输入数据连接。根据本发明的一个实施例,这必需打开插座并向该处进行监听。在步骤510中,接收机打开对服务器的连接,它在图2所示服务器控制流的步骤240中被处理。
而后,接收机进入步骤512并等待事件。在步骤514中被接收的事件既可以是服务器事件(从服务器接收的)、也可以是作业事件。在步骤516中确定事件类型。如果事件是服务器事件,则它包含在步骤518中被分析的命令。如果该命令是终止命令,则接收机在步骤520中执行清除并结束。否则,在步骤522中执行该命令,控制返回到步骤512以等待下一个事件。
如果在步骤516中确定该事件是作业事件,则接收机将数据高速缓冲存储器初始化为空、并在步骤524中设置高速缓存标志到On。在步骤526中,接收机从作业发信方得到某些数据。在优选实施例中,接收的数据将包括一个IPDS命令。本领域的技术人员可以方便地修改用于所接收数据其它粒度的处理逻辑,诸如多个命令、或单个命令、或两者兼有。该数据可包含被接收机识别的特种目标容器。如果在步骤528中被检测,则结构数据在步骤530中被储存。重要地,根据本发明的一个方面,多个具有配置数据的目标容器可被接收并累加地储存。其中的配置数据可包含作业发信方中装置的有效结构、作业信息、以及在系统中处理作业的指令和它们经后处理装置的最终目标。
如果在步骤528中命令不被确定为某一配置数据,则步骤532检查是否高速缓存标志是on。如果没有,则数据在步骤534中被发送到打印机模拟器、控制返回到步骤526以接收更多的数据。
如果在步骤532中高速缓存标志是on,则接收的数据被检查看它是否包含阻止再高速缓存该数据的任何命令、诸如有效页面的开始。如果该数据被确定在步骤535中不强制高速缓存结束,则该数据在步骤538中被写入高速缓存器,控制返回到步骤526以接收更多的数据。
如果该数据在步骤535中包含高速缓存结束,则在步骤540中高速缓存标志被设定为错误。在步骤542中,接收机检查它是否存储了从数据流得到的所希望的配置数据。如果没有,接收机在步骤544中选择性地查询所需信息的作业产生器、或对丢失数据下载缺省。在所有情况下,该控制随后进至步骤546,在该步骤,配置数据被发送到服务器。在步骤548中,服务器返回到接收机,在步骤550中,信息结束而建立与打印机模拟器的直接连接、接收机建立该连接。而后,在步骤552中,接收机将高速缓存的所有内容发送到打印机模拟器。之后,控制返回到步骤534,在步骤534,现有的命令被发送到打印机模拟器。
在IPDS数据系统中,具有结构的容器可嵌入在数据流中的任何位置。只要可能,上述处理逻辑将延迟请求打印机模拟器,于是可得到以正确参量启动打印机模拟器所需的所有相关配置信息。本领域的技术人员可知,这个逻辑可用许多不同的方式编制。
图6表示根据本发明一个实施例的客户机处理中的高层控制流。客户机在步骤600中被阅读的配置数据启动。在步骤610中,阅读连续对话信息,该信息在上一次终止时刻获取客户机状态的适当的部分,诸如服务器连接信息。在步骤620中,根据本发明的一个实施例,对所有服务器的连接被启动,它们的状态在图3中的步骤330中被服务器接收和发送。接着图形用户界面(GUI)在步骤625中被说明,数据在已有技术所知的多种方式中的一个方式显示给用户。
而后,控制进行步骤630以等待事件。事件在步骤635中被接收后,在步骤640中确定是用户命令还是服务器事件。如果事件是用户命令,则在步骤650中通知相关服务器。如果在步骤656中确定该命令是结束命令,则客户机在步骤660中执行结束动作并终止。否则,控制返回到步骤630以等待下一个事件。应当注意,服务器被通知与命令性质无关。
如果在步骤640中确定事件为服务器事件,则客户机状态在步骤666中被修改,而后,连续信息被修改(如果可能)并在步骤670被储存。最后,GUI在步骤680中被更新,之后,控制返回到步骤630以等待下一个事件。
本领域的技术人员可知,以上具体说明了与一个服务器或多个服务器连接的客户机部分的一个实施例。GUI实际上接收用户命令以及将数据显示给用户的相互作用在本领域中是已知的、并且对它们不进行说明。