図1は、本発明の実施形態に係るネットワークプリントシステムのソフトウエアブロック図である。ここでは、サーバ、クライアントともに1台ずつ示している。
<ネットワークシステムの構成例>
図1において、クライアント101は、パーソナルコンピュータ等の情報処理装置である。クライアント101には、データ入出力部102、プリント出力部103、Webブラウザ114、画像表示部115、プリントデータ解析部116等が含まれる。
データ入出力部102は、電話回線やLAN等のネットワーク105を介してサーバ106とデータを交換するもので、HTTPより低いプロトコルレイヤの処理を行う。プリント出力部103は、所定の形式で記述されたプリントデータをプリンタ104の出力形式に従ったデータ形式に変換してプリンタ104から出力するほか、サーバ等から受信したプリンタの出力形式のデータをスプールしてプリンタ104により印刷させる。
Webブラウザ114は、データ入出力部102を介してサーバから受信したHTML文書を、画像表示部115を介してディスプレイ117で表示したり、あるいは、図示しないキーボードなどの入力デバイスを介した操作に応じてプリント出力部103を介して印刷する。さらに、表示しているHTML文書データに、画面上で何らかのデータを入力する旨の記述が含まれれば、ユーザにその記述に相当する欄への入力を行わせる。また、それを入力されたデータをサーバに送信する旨の記述があり、その記述に従ってユーザが操作を行えば、入力されたデータをサーバに送信する。なおこれらの記述は、一般に入手可能な代表的なWebブラウザによりサポートされている。プリントデータ解析部116は、サーバ等から受信したプリントデータを解析し、クライアント101に接続されているプリンタ104で対応可能な形式のデータであるかの判定を行なうことができる。
クライアント101とサーバ106とを接続するネットワーク105の形態としては、LAN、インターネットあるいは無線等、Web環境の通信手順に対応するものであれば、その種類は問わない。
サーバ106は、少なくともHTTP及びFTPをサポートするWebサーバであり、クライアントと同様、パーソナルコンピュータ等の情報処理装置である。サーバ106は、サーバ106がWebサーバとして機能するためのネットワーク通信制御部107を含み、これを介してクライアント101にデータを送信し、あるいはクライアント101からデータを受信する。
帳票テンプレート格納部108は、帳票プリントを行う為の帳票テンプレート等を格納する。なお、テンプレートデータは、クライアントがサーバから読み出したHTML文書に対応して予め設定され、格納されているものとする。従って、サーバが帳票テンプレートに対応づけられるHTML文書をクライアントに送信した場合、その文書に対応する識別子をサーバは記憶しておく。また、帳票テンプレート格納部に格納されるテンプレートも、テンプレート毎にHTML文書と対応する識別子を付して格納する。
データ格納部109はデータベース等であり、各業務用データが格納されている。このデータは予め格納されたものであっても良いし、ブラウザを介してクライアントから入力されたものであってもよい。データ処理部110には、各業務に従ったアプリケーションプログラムが格納されている。画像生成部111は、帳票のイメージデータを、フォーム及びそこにオーバーレイされるデータを組み合わせ、プリント出力部112で解釈可能な所定の形式で作成する。プリント出力部112は、画像生成部で作成されたデータをプリンタ113が出力できる形式に変換し、プリンタから出力させたり、あるいは生成されたデータをデータファイルとして出力することができる。プリント出力部112は一般にはプリンタドライバと呼ばれている。
図8はクライアント及びサーバとして使用可能な情報処理装置の構成を示すハードウエア構成図である。図1のクライアント101及びサーバ106の構成は、図8の構成において、メモリ101bに格納されたプログラムを、CPU101aにより実行することで実現される。また、図1の構成を実現するためのプログラムは、ハードディスク等の外部メモリ101cに格納される。外部メモリ101cは、フロッピディスクやCDROM等の取り外し可能な記憶媒体を用いるものであっても良い。また、データ格納部109あるいは帳票テンプレート格納部108は、外部メモリ101cの一部領域として実現することができる。
ディスプレイ117(クライアント101の場合)には、画像が表示され、I/Oインターフェース101dを介してネットワーク105やプリンタ104(113)に接続される。また、キーボードやポインティングデバイス101eにより、オペレータは必要な入力を行う。
<帳票の印刷処理>
次に、本発明の特徴である、ブラウザからのプリント指示及びそれに対するサーバの処理について述べる。
通常クライアント101のブラウザ114とサーバ106のデータ処理部110の間では、ブラウザからのデータの受付、解析、また場合によっては、受付データに応じてデータ格納部109からのデータ検索、結果のブラウザへの返信などの処理が行われる。この時、HTML文書に、ブラウザからボタンによる入力を行わせてその結果をサーバに送信するよう記述しておけば、ブラウザ114はボタンを表示し、ブラウザのユーザがボタンを押す等の操作をした時に、サーバへのデータの送信を行う。サーバでは、クライアントに送信したHTML文書に基づいて受信データを解析し、必要があればブラウザへ応答する。
図2は、ブラウザにより表示された業務処理に係るHTML文書の一例である。図2において、ウインドウ201は、ディスプレイ117に表示されるブラウザ114のウインドウである。タイトルエリア202には表示される文書に付されたタイトルが表示される。エリア203および204にはブラウザ114のコマンドがツールバーやボタン等の形式で表示されている。ブラウザに表示されている内容を印刷する為のコマンドも通常これらエリアに表示される。エリア205は、接続するWebサーバのアドレスや文書のURL等を入出力するURLフィールドである。HTML文書はここで入力されるURLにより指定される。
選択欄206および207は、クライアントユーザが選択する為のフィールドである。ボタン208は表示ボタンである。帳票イメージ209は、エリア205に入力された文書アドレスに応じたHTML文書がサーバから読み出されて表示されたものである。また、このHTML文書には、帳票イメージ209の他、印刷ボタン210とサーバ印刷ボタン211が含まれている。
クライアント101からサーバ106の文書を読み出す場合、まずクライアントでブラウザプログラム114を起動する。このブラウザ自体は市販品でよい。ブラウザ114が起動されると、タイトルエリア202〜URLフィールド205迄が表示され、その他の欄は空白あるいは予め設定されたURLで指定される文書が表示される。ここで、図2のように"http://202.228.102"が指定されると、欄206〜211を含むHTML文書がサーバから読み出されて表示される。
この画面上でユーザがポインティングデバイスやキーボードによって選択欄206,207から所望の値を選択し、表示ボタン208を押すと、読み出したいデータが確定し、選択された個人及び表種別がサーバに送信される。サーバ106では、指定されたURLにおいて、選択された個人名及び表種類をキーとしてデータ格納部109を検索し、データを獲得する。データには、そのデータを表示すべき形式を指定するための形式識別子が含まれている。
サーバではこの識別子に対応する形式で検索したデータを表示するためのHTML文書を作成し、クライアントに送信する。ここで、形式識別子に応じたHTML文書は、予め可変データを除いて残りの部分を記述しておき、可変データの部分に後述するデータのインデックスを、インデックスとして認識できるように挿入しておく。サーバからクライアントに送信する文書は、この形式の文書のインデックスの部分に、検索されたデータをインデックス毎に対応づけて挿入して作成される。なお、この表示の手順は、第6の実施形態において図面を参照して詳しく説明する。
クライアントでは、受信したデータを図2のように表示する。クライアントのユーザがこれらを表示した状態でサーバ印刷ボタン211あるいは印刷ボタン210を押すと、次のような手順で文書がサーバあるいはクライアントから印刷される。
<サーバにより印刷を行う際の手順>
次に、図2の状態でサーバ印刷ボタン211が押された場合の動作を説明する。印刷も、HTML文書と同様に、形式識別子に対応したテンプレートにデータを挿入して印刷すべき文書を作成する。サーバ印刷ボタン211が押されると、サーバ印刷ボタンが押されたことを示す情報がサーバ106に送信される。サーバでは、印刷を要求してきたクライアント101に送信してあるデータに付された形式識別子を基に、帳票テンプレート格納部108に格納されている図形データを各帳票のテンプレートとして検索する。各帳票テンプレートは、形式識別子から検索できるように格納されている。
図3は、印刷される帳票テンプレートの一例である。図3において、帳票テンプレートである図形データを説明する。図形データは固定データと可変データに分類される。帳票タイトルの文字列301、枠および日にち等を示す数字、文字列302及び、文字列、枠303は固定データである。また、nxx及びsxx(xxは整数)で示される文字列304及び305には、データベース等より検索された値がはめ込まれる可変データである。
一方、図4は、図3の図形データにはめ込まれるべき可変データのテーブルである。図4において、列401は、図3の可変データs1,n1,n2…n51を示すインデックスである。列402は、表示する文字のサイズを示している。列403は、実際の数あるいは文字列である。図3の帳票イメージと図4のデータを、インデックスを対応づけてマージすることにより、帳票の図形データが作成される。また、形式識別子404はこのテーブルに含まれるデータを表示すべき帳票テンプレートを示すデータであり、このテーブルの場合には図3の帳票テンプレートを示すデータが格納されている。
次に、図3の帳票テンプレートと図4のデータのマージ処理を、図5のフローチャートを用いて説明する。
なお、本説明において、印刷ボタンがブラウザにより表示されている状況では、ブラウザのウィンドウにおいても、印刷される帳票を形どったイメージは表示されており、ブラウザに帳票イメージを表示するためのデータは、サーバのデータ格納部109から検索され、サーバのメモリ内に存在しているものとする。
図5は、ブラウザウィンドウ201(図2)においてサーバ印刷ボタン211が押されたことを示す情報をサーバが受信したことにより、サーバにおいて実行される処理を示すフローチャートである。図5に示された処理のうち、ステップS501〜504はデータ処理部110により、ステップS505〜506は画像処理部111により、ステップS507はプリント出力部112により実行される。
まず、ステップS501でボタンが押されたことがサーバに通知されると、ステップS502においてサーバ内では印刷に使用する帳票を検索する。サーバには、使用する帳票テンプレートに対応する形式識別子がクライアントに送信済みのHTML文書データに対応づけて記憶されているため、この形式識別子を用いて直ちに検索可能である。
ステップS503では、帳票テンプレート格納部108から検索された帳票テンプレートとマージすべき可変データ欄の位置を検知する。例えば、可変データの位置を、固定データを記述した部分とは別個に、データごとにインデックスに対応つけて記述してあれば、可変データ部分に含まれるインデックスによって簡単に各可変データの位置を認識できる。そして、図4に示した可変データテーブルから、インデックス及びサイズの部分の抽出をする。帳票に対応した可変データテーブルはクライアントから表示要求が出された時点で読み出され、サーバに保存されている。
次に、ステップS504でインデックスデータを作成する。すなわち、すでに保存されている可変データテーブル中の値(列403に含まれる値)を、そのインデックスに応じて、ステップS503で抽出した可変データの位置に合わせて記述する。こうして、可変データ部分を記述したインデックスデータができる。
次に、ステップS505において、画像生成部111により、ステップS502で得られた帳票テンプレートの固定データ部分と、ステップS504で作成したインデックスデータとをマージさせる。ステップS506では、画像生成部111により、ステップS505でマージされたデータから、実際の画像形式、すなわちプリント出力部112にて解釈可能な形式で記述されたデータを作成する。ステップS507では、ステップS506で作成したデータを、プリンタ113で出力可能な例えばページ記述言語のプリントイメージに変換し、外部メモリ101c等に設けられたプリントスプールに出力する。こうして、帳票テンプレートとデータとが合成されてサーバ106のプリンタ113から出力される。
<クライアントにより印刷を行う際の手順>
図6は、図2の印刷ボタン210が押された場合のサーバ106の処理手順を示すフローチャートである。
まず、ステップS701でボタンが押されたことがサーバに通知されると、ステップS702においてサーバ内では使用される帳票を検索する。サーバには、使用する帳票テンプレートに対応する形式識別子がクライアントに送信済みのHTML文書データに対応づけて記憶されているため、この形式識別子を用いて直ちに検索可能である。
ステップS703では、帳票テンプレート格納部108から検索された帳票テンプレートとマージすべき可変データ欄の位置を検知する。例えば、可変データの位置を、固定データを記述した部分とは別個に、データごとにインデックスに対応つけて記述してあれば、可変データ部分に含まれるインデックスによって簡単に各可変データの位置を認識できる。そして、図4に示した可変データテーブルから、インデックス及びサイズの部分の抽出をする。帳票に対応した可変データテーブルはクライアントから表示要求が出された時点で読み出され、サーバに保存されている。
次に、ステップS704でインデックスデータを作成する。すなわち、すでに保存されている可変データテーブル中の値(列403に含まれる値)を、そのインデックスに応じて、ステップS703で抽出した可変データの位置に合わせるようにして記述する。こうして、可変データ部分を記述したインデックスデータができる。
次に、ステップS705において、画像生成部111により、ステップS702で得られた帳票テンプレートの固定データ部分と、ステップS704で作成したインデックスデータとをマージさせる。ステップS706では、画像生成部111により、ステップS705でマージされたデータから、実際の画像形式、すなわちプリント出力部103にて解釈可能な形式で記述されたデータを作成させる。ステップS707では、ステップS706で作成したデータを、クライアントに対して送信する。
なお、このステップでは、説明を簡単にするためにデータをクライアントに送信するとしているが、実際には作成されたデータそのものをクライアントに送信せず、作成されたデータファイルのURLをクライアント(Webブラウザ114)に送る。クライアントでは、Webブラウザが受信したURLを用いて、HTTPでなくFTPを利用してデータファイルの送信を要求し、サーバからクライアントに印刷データファイルが渡される。
図7は、図6のステップS707でサーバにより送信されたデータを受信したクライアントによる処理手順を示すフローチャートである。
まず、ステップS801において、受信したデータをプリントデータ解析部116により解析し、受信したデータに適したプリンタを見つけてそこから印刷させる。本実施形態の構成では、図1に示すようにプリンタは1台しかないため、そのプリンタ104から印刷される。ステップS802では、プリント出力部103によりプリンタ104で出力可能なプリントイメージを生成する。それをステップS803で例えば外部メモリ101cに設けられたプリントスプールに格納し、順次出力させる。そして、受信したデータが終了するまでステップS801からS803の処理を繰り返し行う。
以上の手順により、クライアントからWebブラウザ114を用いて出力データを指定し、適当な形式で印刷を行わせることができる。
また、印刷用に作成された帳票テンプレートを用いて帳票を印刷することにより、表示された帳票を印刷する場合と異なり、Webブラウザを用いて作成した画像を、高品質の印刷物として出力可能である。
また、サーバでもクライアントでも、いずれのプリンタからでも高品質の帳票を利用者の都合に応じて印刷させることができる。
また、帳票テンプレートを保持するのはサーバのみであり、データとの合成もサーバで行っているため、クライアントは、市販のWebブラウザを用意しておきさえすれば、サーバから高品質の帳票を印刷できる。
またこのためにクライアントの負荷が軽く、処理能力の低い安価なパーソナルコンピュータをクライアントとして利用できる。
なお、本実施形態では、帳票テンプレートはデータに応じて決まるものとしたが、テンプレートをデータとは独立して選ぶようにすること可能である。
また、出力されるデータはデータベースから検索されるものとしたが、Webブラウザを用いてクライアントの利よす脂入力させることもできる。この場合には入力されたデータを帳票テンプレートと合成して印刷させることもできる。
なお、クライアントにおけるプリント出力部103は、プリンタ104が解釈可能な形式のデータを生成する機能を有すると説明したが、本実施形態のように、サーバにおいてクライアントのプリンタ104が解釈可能な形式で記述されたデータを生成する場合には、この機能を有している必要はなく、単に受信したデータをプリンタスプールに格納する機能のみを有していればよい。
また、クライアントがデータを選択すると、それに対応してその表示フォーマットも決まるものとして説明したが、表示フォーマットをデータとは独立して指定できるようにすることもできる。この場合には、図2に示したブラウザウィンドウにフォーマット指定用のスイッチを設け、そのスイッチでフォーマットを指定させる。サーバではこの指定に応じたテンプレートを検索して印刷のために使用する。また、ブラウザからフォーマットを指定する場合には、可変データテーブル(図4)の形式識別子404は不要となる。
[第2の実施形態]
本実施形態は、第1の実施形態に係るネットワークプリントシステムシステムにおけるサーバを3階層構成とし、負荷分散を行ったことを特徴とする。
図9は、本実施形態に係るネットワークプリントシステムのソフトウェアブロック図である。
図9において、クライアント101は図1に示したものと同じ構成を有するため、説明は省略する。また、図9においては、図1のサーバ106との対比を容易にするため、サーバ106が有するソフトウェアブロックと同一機能を有するソフトウェアブロックは同一の参照数字を付した。
Webサーバ901は情報処理装置であり、そのネットワーク通信制御部107は図1におけるサーバ106のそれと同じ機能を果たす。負荷分散制御部902は、後述する画像生成サーバ908,909に、第1の実施形態における画像生成部等の処理を分散して行わせるための制御を行なう。ネットワーク907はウェブサーバ901、画像生成サーバ908、909を相互に接続する。
画像生成サーバ908と909とは同じ構成を有しており、やはり図8のような構成を有するコンピュータで構成される。そして、図1のWebサーバ106から、HTTPレイヤの処理を行うネットワーク通信制御部107を除いた構成を有する。ネットワーク907には通信インターフェース910を介して接続されており、Webサーバ901とのデータの交換が可能となっている。画像生成サーバ908,909は、データ及び帳票テンプレートの検索やデータと帳票テンプレートの合成、及びそのデータをプリントイメージに変換すること、及びそれを印刷出力する処理を行う。すなわち、Webサーバ901はクライアント101の要求を画像生成サーバ908、909に振り分ける、あるいは、画像生成サーバからの応答をクライアントに渡す処理を行う。
次に、図10に示すフローチャートを用いて、画像生成部111を持つ画像生成サーバ908、909をWebサーバ901によって制御する手順について説明する。一般にWebシステムでは、サーバとクライアント間の1回の要求、応答で1つのセッションは終了してしまう。この様なシステムの中で、セッションを保つ為の方法として、サーバの位置情報を示すURLの中にセッションIDを導入しておく方法がある。このセッション番号をクライアント及びサーバ双方で保持することにより、何往復にもわたる要求/応答があってもそれをひとつのセッションとして認識できる。
図10は、このセッションIDを用いて、画像生成サーバに処理を振り分ける処理手順の例である。
ステップS1001で、あるクライアントからのリクエストを受け付けると、指定されたURLにセッションIDが付加されているか否かを判定する(ステップS1002)。もしURL中にセッションIDが付加されていない場合は、このクライアントからのセッション開始とみなし、ステップS1003でこの要求に対してセッションIDを付与する。このセッションID付のURLは、以後の処理が終了した後クライアント側に返される。また後述するが、セッションごとにそのセッションを行なう画像生成サーバを割り振り、Webサーバ901はセッションと対応する画像生成サーバを記憶している。
クライアントは開始されているセッションについての要求を行なう場合には、ステップS1003で付与されたセッションIDをURLに付加するように構成されている。従って、ステップS1002で、URL中にセッションIDが付加されていると判定された場合、すなわち、クライアントからの要求がセッション開始ではなく、すでに開始されているセッションであると判定された場合には、ステップS1007に移行し、セッションIDに対応する画像生成サーバへ再アクセスを行う事になる。
次に、ステップS1004では、Webサーバ901内で保持している分散設定テーブル903を参照し、使用する画像生成サーバを決定する。分散設定テーブル903の例を図11に示す。図11の欄1102には、分散を行うコンピュータ(本実施形態においては画像生成サーバ)のアドレスが記述され、1101にアドレスとペアーのインデックスが記述される。ここではアドレスとしてIPアドレスが記述されている。
この分散設定テーブル903は、Webサーバ901の起動時に負荷分散制御部902の管理するメモリ内に読み込まれる。また、分散設定テーブル903の欄1103及び1104には、最も最近使用された画像生成部を持つコンピュータ、すなわち画像生成サーバのインデックス(”99”)及び、本テーブル上でのオフセットアドレスを保持しておく。
したがって、図11の例では、Webサーバ901はインデックスが1〜4の4台の画像生成用サーバを配下におさめており、最近処理依頼を行ったのはインデックス2の画像生成サーバである状態を示している。
もし新たなクライアントからのリクエストを受け付けた際には、最後に使用された画像生成サーバの次のサーバ、すなわちインデックス3の画像生成サーバを使用する。このようにして、ステップS1004において、次に使用する画像生成サーバが決定され、ステップS1005では、最後に使用された画像生成サーバの欄1104が更新される。
ステップS1006では、クライアントにより指定されたURLに対し、ステップS1003で付加したセッションIDの他、ステップS1004で決定された処理依頼先の画像生成サーバのアドレスをも付加して記憶する。これにより、以後のクライアントからサーバへのアクセスに際し、URL及びセッションIDを受けとったなら、その処理を行う画像生成サーバも特定出来る様になる。
ステップS1007では、ステップS1004で決定された画像生成サーバに対してクライアントの指定した処理を依頼する。
ステップS1008のサーバ内処理待ちでは、画像生成サーバに依頼した処理が終了し、その旨応答が返されるまで待つ。画像生成サーバで行われる処理は、第1の実施形態において、Webサーバ106が行っている帳票データの作成や出力と同様である。
すなわち、クライアントからのプリント処理である場合もあり、プリントを行わない表示処理(後述)の場合もある。サーバプリント要求であれば、画像生成サーバ内処理において、データと帳票テンプレートとを合成した画像データのプリント出力まで行われる。クライアントにおけるプリント要求であれば、クライアントのプリンタ104で実行可能な形式のプリントイメージの生成までを行なう(あるいは、プリント出力部103がプリントイメージを作成できる形式のデータの生成までを行なう)。表示要求であれば表示内容に即したHTML文書が作成される。
図12は、図11のステップS1008において、Webサーバ901から処理依頼された画像生成サーバにより遂行される処理手順を示すフローチャートである。
Webサーバ901から処理依頼を受信すると、ステップS1201でそれがサーバにおけるプリント要求か判定する。そうであれば、ステップS1206において、図5のステップS502以降と同様の処理を行い、帳票を印刷出力する。
一方、サーバにおけるプリント要求でなければ、ステップS1202においてクライアントにおけるプリント要求、すなわちプリントデータ作成依頼であるか判定する。そうであれば、図6のステップS702からの処理を行う。ただし、ステップS707におけるデータ転送は、クライアントに対してではなくWebサーバ901に対して行われる。
サーバにおけるプリント要求でも、クライアントにおけるプリント要求でもなければ、依頼は表示要求であるものとして、ステップS1203でデータを検索してステップS1204でHTML文書として編集し、ステップS1205でそのHTML文書をWebサーバ901に送信する。なお、ここではWeb901から依頼される処理はこの3種類に限ったが、その他の要求があるならば、画像生成サーバにそれに対応した機能を付加すれば、簡単に要求に対応できる。
画像生成サーバでの処理が終了した旨の通知を受けるか、処理結果を受信すると、Webサーバ901はステップS1009において、プリントが完了した旨の応答や、あるいは作成されたデータを、クライアント101に返送する。
以上のように、クライアントからの一連の要求にはセッションIDが与えられ、その要求を処理する画像生成サーバが決定される。また、新たなセッションの発生毎に、最後に使用した画像生成サーバの次に負荷分散テーブルに配置された(最後に使用した画像生成サーバがテーブルの最後に位置する場合には最初のサーバに戻って)画像生成サーバを使用するよう決定されるため、クライアントからの一連の要求を、ひとつの画像生成サーバにより処理でき、処理の継続性を保持できると共に、各画像生成サーバの負荷が軽減される。
[第2の実施形態の変形例1]
第2の実施形態におけるシステムを基に、さらにきめ細かい負荷の分散を行うこともできる。すなわち、本変形例においては、複数の画像生成サーバ間における負荷分散を行なうことを特徴とする。
この変形例におけるシステム構成は、第2の実施形態と同じく、図9のブロック図によって示される。
次に、図13、図14を用いて、画像生成サーバの処理を分散する仕組みについて説明する。
図13は、本変形例における負荷分散を制御するために用いられる分散設定テーブル903’を示している。このテーブルが第2の実施形態における分散設定テーブル903に替えて用いられる。テーブル分散設定テーブル903’においては、画像生成サーバの数(或いは、画像生成部の数)に相当する個数のインデックスがあり、各インデックス毎に画像生成サーバを識別するための識別アドレスを保有する。識別アドレスとしては、例えばネットワーク接続のためのIPアドレスやホスト名、HTTP接続のためのURL等が用いられる。分散設定テーブル903’が、Webサーバ901内に格納され、サーバの起動時に、図9の負荷分散制御部905の管理するメモリ内に読み込まれる。
分散設定テーブル903’では、分散設定テーブル903と比較して、各インデックスに対して、識別アドレスと共に負荷係数1403を持ち、最後に使用されたサーバの識別子を持たない点で異なる。本変形例では、この負荷係数1403はクライアントからの要求が割り当てられ、かつ処理が終了していない要求の数である。
Webサーバ901は、あるクライアントから要求があった時、分散設定テーブル903’を参照して、最も負荷が軽いとみなされる画像生成サーバを選択して処理を依頼する。図14に示すフローチャートを用いて、Webサーバ901が分散設定テーブル903’における負荷係数を用いてクライアントから要求された処理を行なう処理手順を説明する。なお、以下の説明においては、クライアントからの要求は新しいセッションによって処理されるものとする。
ステップS1501で、あるクライアントからのリクエストを受け付ける。ステップS1502では、分散設定テーブル903’を参照し、負荷係数が一番小さい画像生成部を検索する。図13の例では、符号1404で示されるインデックス4の画像生成サーバがそれに相当する。ステップS1503で、その画像生成サーバに処理を依頼することを決定する。
なお、負荷係数が最小の画像生成部が複数ある場合には、任意の条件でその中の1つを選択するように構成することができる。
ステップS1504では、分散設定テーブル903’の、選択された画像生成サーバに対応する負荷係数を1加算する。ステップS1505で選択された画像生成サーバに処理を依頼し、ステップS1506でサーバ内の処理が終了するのを待つ。ステップS1506において画像生成サーバが行なう処理手順は、第2の実施形態と同様である。
画像生成サーバから処理終了の通知を受けるか、処理結果のデータを受信すると、その画像生成サーバに対応する分散設定テーブル903’の負荷係数を1減ずる(ステップS1507)。なお、図14の手順はクライアントからの要求を受け付けるたびに起動されるため、処理が終了していない画像生成サーバに対しても、次の処理依頼を発行することがあり得る。これは、第2の実施形態においても同様である。
そして、ステップS1508で、クライアントに処理が終了したことを通知する(要求がプリントデータ作成、表示データ生成であれば、処理結果のデータを送信する)。
(分散設定テーブルへの登録処理)
図15は、分散設定テーブルに画像生成サーバの識別アドレスの新規登録を行うための処理手順を示すフローチャートである。この手順は、画像生成サーバが備えたキーボードなどからの入力により実行されても良いし、Webサーバからの新規登録メッセージにより実行されても良い。
ステップS1601では、画像生成部の登録の要求を受け付ける。この要求メッセージには要求元の画像生成サーバの識別アドレスが含まれている。
ステップS1602では分散設定テーブルを参照する。識別アドレスが登録されていなければステップS1603で新規の登録と判断して、ステップS1604で分散設定テーブルに新規インデックスとともに識別アドレスを登録して処理を終了する。なお、新規登録時の負荷係数は0とする。
一方、ステップS1602におけるテーブル参照の結果、既登録であれば何もせずに処理を終了する。このようにして、新規の画像生成サーバがネットワーク907に接続された場合、それをWebサーバの分散設定テーブルに登録できる。
以上の説明したように、本変形例によれば、処理中の要求が他のサーバに比べて少ない画像生成サーバに新たな処理依頼が発行されるため、各画像生成サーバの負荷は均一化される。このため、負荷の分散が効果的になされ、システム全体の処理効率が向上する。
[第3の実施形態]
次に、本発明の第3の実施形態にかかるネットワークプリントシステムについて説明する。本実施形態のシステムは、第2の実施形態と同じく画像生成サーバを複数用いたネットワークシステムであって、画像生成サーバに障害が発生した場合に他のサーバで代替処理を行うことを特徴とする。
図16は、本実施形態に係るシステムの構成を示すソフトウェアブロック図である。図16において、クライアント101は第1又は第2の実施形態のそれと同じものである。Webサーバ4101は、第2の実施形態のWebサーバ901とほぼ同様の構成を有するが、分散設定テーブル4111を管理するための監視部4104を有する点で異なる。ネットワーク通信制御部107及び負荷分散制御部902に関しては、第2実施形態のそれらと同様の機能を果たす。
画像生成サーバ4105及び4108は、画像生成サーバの状態を監視部4104に通知する通知部4107を有すこと以外は、画像生成部111をはじめとして、図9に示した第2の実施形態における画像生成サーバ908、909と同様の構成を有している。
図17は、本実施形態において画像生成サーバの分散を制御するために用いられる分散設定テーブル4111を示している。分散設定テーブル4111においては、画像生成サーバに相当する個数のインデックスがあり、各インデックス毎に画像生成サーバ部を識別するための識別アドレスとステータス情報を持つ。
識別アドレスとしては、例えばネットワーク接続のためのIPアドレスやホスト名、HTTP接続のためのURL等が用いられる。また、ステータス情報は画像生成サーバがWebサーバからの画像生成要求を受け取れる状態にあるかどうかを示すフラグであり、受け取れる状態にある画像生成サーバに対しては欄4004、4005、4006で示されるように“OK”が入り、受け取れない状態にある画像生成サーバに対しては欄4007で示されるように“NG”が入る。
このような分散設定テーブル4111がWebサーバ4101内に格納され、サーバの起動時に、負荷分散制御部902の管理するメモリ内に読み込まれる。なお、第2の実施形態における分散設定テーブル903あるいはその変形例1の分散設定テーブル903のように、最後に使用されたサーバを示す欄や、負荷係数欄をさらに設けてもよい。この場合には、サーバの代替処理とは別に、サーバの負荷分散が第2実施形態及びその変形例で説明したように行われる。
(代替処理)
次に、図18に示すフローチャートを用いて、画像生成サーバに障害等が発生して利用できない場合の代替処理について説明する。この処理はWebサーバの負荷分散制御部902及び監視部4104により行われるため、図では処理の流れが理解しやすいように、左側に負荷分散制御部902による処理を、右側に監視部4104による処理を示す。
図18のフローチャートは、あるクライアントからの要求を受け付けてから、適当な画像生成サーバを選択し、その画像生成サーバに処理を依頼し、依頼先の画像生成サーバに障害が発生もしくは検出された場合に、代替の画像生成サーバを選択して要求のあった処理を完了させるまでの手順を示す。
ステップS4202であるクライアントからのリクエストを受け付けると、ステップS4203において、負荷分散制御部902は、監視部4104にどの画像生成サーバに処理依頼可能であるか(ステータスが“OK”で画像生成サーバがあるか)の問い合わせを行なう。
ステップS4204で、監視部4104は分散設定テーブル4111を参照し、ステータスがOKである画像生成サーバを検索し、その情報を負荷分散制御部に返す。図17に示した分散設定テーブルの例では、インデックス1〜3までの画像生成サーバのステータスが”OK”であるが、本実施形態においては先頭の欄4004で示されるインデックス1の画像生成サーバの情報を負荷分散制御部に応答するものとする。分散設定テーブルに負荷係数の項目がある場合には、ステータスが”OK”で、かつもっとも負荷係数が小さい画像生成サーバの情報が返送される。
ステップS4205で、ステップS4204で選択された画像生成サーバに処理を依頼することを決定し、ステップS4206でその画像生成サーバに処理を依頼して、画像生成サーバでの処理終了を待つ。
画像生成サーバによる処理が終了すると、ステップS4207で処理の結果を判断する。ステップS4206で依頼した処理が画像生成サーバで正常終了していなければ、画像生成サーバの通知部4107によって負荷分散制御部902に異常終了した旨が通知される。異常終了であれば、負荷分散制御部902は監視部4104に異常終了した画像生成サーバのアドレスあるいはインデックスを知らせる。ステップS4208では、監視部4104は、分散設定テーブル4111の、該当画像生成サーバのステータス欄に使用不可であることを示す”NG”を記入する。
そして、再度ステップS4203に戻って、監視部4104に処理依頼可能な画像生成サーバの問い合わせを行なう。この場合、異常終了した画像生成サーバはステップS4208でステータスが”NG”に変更されているので、別の画像生成サーバが選択される。以後、正常終了結果が得られるまで、同様の処理を繰り返す。
ステップS4206で依頼した処理が正常終了すれば、画像生成処理の結果(又はプリント終了の通知)を画像生成サーバから受信して処理はそのまま終了する。しかし、負荷分散制御部902が監視部4104に対して処理が正常終了したことを通知するようにしてもよい。また、ステップS4206で依頼された処理の結果は、通知部4107が直接監視部4104に通知しても構わない。
このようにして処理を終えると、Webサーバは画像生成サーバから受けた処理結果あるいは処理終了通知を、その処理を要求したクライアントに対して送信する。その際、代替処理を行なった場合にはその旨をクライアントに通知するようにしても良い。
以上説明したように、処理が異常終了した場合には他の画像生成サーバで処理を行なうことにより、より安定したシステムの構築が可能になる。
さらに、異常終了した画像生成サーバに対応する分散設定テーブルのステータスは”NG”となるため、以後の処理で使用されることがなく、処理に支障をきたすことがなくなる。
(復帰処理)
次に、図19に示すフローチャートを用いて、障害等により分散設定テーブルのステータスが”NG”とされた画像生成サーバが再度利用可能になった場合の処理手順を説明する。
図19においても、その処理を実行する場所が理解しやすいように、左には画像生成サーバで行なわれる処理を、右にWebサーバで行なわれる処理を示している。
以下の処理は、障害が発生して使用できなくなっていた画像処理サーバが利用可能になったとき、例えば、障害状態から復帰して再起動されたときに実行され、Webサーバがその画像生成サーバを再度利用可能な状態にすることを目的とする。
ステップS4301で、使用できなかった、あるいは使用されていなかったある画像処理サーバが使用可能になったとする。使用可能になる要因としては、障害後の再起動や、新規に起動された場合、再起動なしに障害から復帰した場合など任意である。
利用可能になった画像処理サーバは、ステップS4302で監視部4104へ利用可能になったことを通知する。
ステップS4303において、監視部4104は分散設定テーブル4111を参照して、ステップS4102で受信した通知の送信元である画像処理サーバを検索する。
ステップS4304で、検索の結果、既に該当する画像処理サーバが登録されているかどうかを判断する。登録されていない場合は、新規登録と判断してステップS4305で分散設定テーブル4111に該当画像処理サーバを登録する。 一方、既に登録されていた場合は、ステップS4305の登録処理をスキップする。
ステップS4306では、分散設定テーブルにおける該当画像処理サーバのステータスを”OK”にする。新規登録がなされた画像生成サーバについては単に”OK”が書き込まれるが、例えば、図17に示す分散設定テーブル4111のインデックス4に対応する画像生成サーバが利用可能になった場合には、ステータス欄4007で示されるステータスを”NG”が”OK”に変更される。
以上説明したように、本実施形態によれば、処理中に異常を来した画像生成サーバは、分散設定テーブルのステータスが”NG”に書き換えられて使用可能な画像生成サーバからはずされる。そして、再起動した時点で分散設定テーブルにおけるそのサーバのステータスが”NG”から”OK”に書き換えられ、今後の処理で利用されるようになる。
このため、オペレータがネットワークプリントシステムから使用できない画像生成サーバの切り離しや、復旧した画像生成サーバの再接続を行わなくとも、自動的に画像生成サーバの使用停止/使用再開が可能となる。このため、画像生成サーバを効率よく使用でき、分散処理の効率が向上する。
また、ある画像生成サーバが異常終了した場合でも、他の画像生成サーバで代替処理することにより、より安定度の高いシステムを提供することができる。
[第4の実施形態]
次に本発明の第4の実施形態に係るネットワークプリントシステムを説明する。本実施形態に係るシステムは、クライアントに複数のプリンタが接続され、Webブラウザの利用者がクライアントで帳票の印刷を指定した際に、クライアントで適切なプリンタを選択するシステムである。
図20は、本実施形態に係るネットワークプリントシステムの構成を示すブロック図である。本システムは、ブラウザが動作しているクライアントの配下にプリンタが複数台存在する構成を有する。
図20において、クライアント1201は、上述の実施形態におけるクライアントと同様、Webブラウザが動作しているコンピュータである。データ入出力部1202はサーバ1213とのデータ通信を行う。Webブラウザ1215は、第1の実施形態のWebブラウザ114と同じでよい。プリントデータ解析部1203は、クライアントに送付されたプリント用データを解析する。第1〜第3のプリント出力部1204、1205、1206は、プリント用データを実際のプリントイメージに変換し、プリンタにデータを送信する。プリンタ1207〜1210は、クライアント1201に直接又はネットワーク1211を介して接続されたプリンタを示す。ネットワーク1211は、クライアントとプリンタとを接続している。
ネットワーク1212は、図1のネットワーク105と同様、クライアント1201とサーバ106とを接続する。サーバ106は、図1に示す第1の実施形態のものと同一の構成を有するWebサーバであるため、同じ構成要素には同じ参照数字を付して重複する説明は省く。すなわち、本実施形態のシステム構成は、図1に示した第1の実施形態のシステム構成と、クライアントに複数のプリンタが接続されている点を除いて同一である。このため、クライアントはプリンタ毎に対応する複数のプリント出力部1204〜1206を有している。
通常は、Webブラウザから、帳票データのクライアントによる印刷が指示された場合、第1の実施形態において説明したように、画像生成部111において帳票テンプレートとそれと組み合わされるデータとが合成され、プリント出力部112において、その合成データに基づきページ記述言語(PDL(Page Discription Language))の様式に従ったプリントデータファイルが生成され、このプリントデータファイル(又はそのURL)がクライアントに送信される。
この送信されたPDLファイルは、クライアント1201のプリント出力部1204〜1206のいずれかによりプリンタに出力される。この時、望まれることは、サーバのプリント出力部112で作成したPDLの形式と、クライアントに接続されたプリンタが解釈できるPDLの形式が同一であることである。ただし、PDLには、多くの種類があり、また時とともに変更、更新されているのが現実であり、画像生成部112が生成できる形式と、クライアントに接続されたプリンタの解釈できる形式とが一致しないケースも多い。そこで、本実施形態では、クライアントのプリントデータ解析部1203にプリント出力部を選択する機構、すなわちプリンタを選択する機構を設け、できる限り正しくPDLを解釈できるプリンタを選択できるようにしたことを特徴とする。
以下、図21に示すフローチャートを用いて、本実施形態におけるプリントデータ解析部1203の動作を説明する。
まずステップS1301において、サーバ106より転送されてきたプリントデータファイルを受け取る。プリントデータファイルのヘッダ部分には、PDLの名称及びそのバージョンが書き込まれている為、ステップS1302ではそのヘッダ情報を解析し、ステップS1303にてそのPDLの名称及びバージョンを保持しておく。
ステップS1304では、プリントデータ解析部1203におけるクライアント、すなわち自己の配下に複数存在するであろうプリンタの情報を解析する。すなわち、プリンタドライバであるプリント出力部1204〜1206の解析を行う。ステップS1305では、ステップS1304で解析したプリント出力部が、受信したプリントデータに対応しているか、厳密には、一致しているかをチェックする。もし一致している場合は、プリントデータをそのプリント出力部に送信する(ステップS1307)。この場合には、選択されたプリント出力部に対応したプリンタから、厳密な出力結果が得られる(ステップS1308)。
また、ステップS1305にて、プリントデータとプリント出力部とが一致しなかった場合は、存在する他のプリント出力部の解析を行う。ステップS1306にて、すべてのプリント出力部の解析が終了したと判断された場合には、予め設定されているデフォルトのプリント出力部へデータを転送し(ステップS1309)、デフォルトプリンタからプリント出力を行なう(ステップS1310)。この場合には、プリント出力部のPDLがプリントデータファイルを記述したPDLと一致していないため、望まれる出力が、正確に出力される保証はない。場合によってはPDLの不一致により、プリント出力不可能の場合もある。
以上説明したように、本実施形態においては、クライアントに複数のプリンタが備えられている場合、サーバから受信したプリントデータを正しく解釈できるプリンタを自動的に選択し、正確な出力結果を得ることができる。
[第5の実施形態]
次に図22を参照して、本発明の第5の実施形態に係るネットワークプリントシステムについて説明する。本実施形態は、ネットワーク上に複数のWebサーバを有することを特徴とする。
図22は本実施形態に係るネットワークプリントシステムの構成を示す図である。システムの各構成要素については第1又は第2の実施形態において説明したものと同様である。すなわち、クライアント1701,1711は、図1及び図9のクライアント101と同じ構成であり、Webサーバ1703,1713は、図9のWebサーバ901と同様である。また、画像生成サーバ1708,1718は、図9の画像生成サーバ908,909と同じものである。
また、図22のシステムにおいても、第1の実施形態と同様に、クライアントで表示された帳票データの印刷を指示すると、そのデータとそれに組み合わされる帳票テンプレートとが画像生成サーバで合成され、サーバあるいはクライアントから印刷することができる。したがって、クライアント及びWebサーバが複数存在する点においてのみ、図22の構成と図9の構成は異なっている。
図22において、クライアント1701はネットワーク1702を通じてWebサーバ1703に接続する。Webサーバ1703は画像生成サーバ1708,1718に接続している。各画像生成サーバは、Webサーバから受信した依頼に従ってプリントデータや表示用のHTML文書データを生成して(プリント依頼の場合はプリント出力を行ない、終了通知を)依頼元のWebサーバに返送する。そのデータは、再度ネットワーク1702を通じて要求元のクライアント1701に返される。
同様に、クライアント1711はネットワーク1712を通じてWebサーバ1703に接続し、処理要求を行なうことができる。この場合、Webサーバ1703は、クライアント1701からの処理要求を受信した場合と同様な処理を行う。
このように、Webサーバは複数のクライアントから処理要求を受け取り、処理を行うことが可能であるが、接続クライアント数が増え、並行して処理を行わなければならなくなると処理速度が低下する。
そこでクライアント1711がネットワーク1714を通じてWebサーバ1713にも接続し、Webサーバ1713の資源を利用することによりWebサーバ1703にかかる負荷を下げることが可能になる。ネットワーク1702,1712,1714を電話網等を介したネットワークにしておけば、ネットワークの切換えは、単に接続先のWebサーバを切り替えるだけでよい。すなわち、クライアントのWebブラウザから、接続したいWebサーバのURLを切り替えて指定すればよい。
このように、本実施形態のシステムにおいては、複数の画像生成サーバ1708,1718を複数のWebサーバ1703とWebサーバ1713から共通して使用することが可能である。
画像生成サーバが1台しかなければ、Webサーバ1703,1713ともその画像生成サーバに対して画像生成の依頼を発行する。このため、特にスケジュール管理等は不要である。しかしながら、図22のように複数の画像生成サーバが複数のWebサーバと接続されている場合、各Webサーバがどの画像生成サーバを使用するか決定する手順が必要となる。その手順としては、次のような例が考えられる。
(1)予めWebサーバと画像生成サーバとを対応づけておく。この場合、ひとつのWebサーバに対して複数の画像生成サーバが割り当てられれば、第2の実施形態あるいはその変形例の要領で、使用する画像生成サーバを決定する。
(2)図11あるいは図13に示した分散設定テーブルを各Webサーバで共有し、画像生成サーバを管理する。このためには、図10のステップS1005、
あるいは、図14のステップS1504,S1506及び図15のステップS1604で分散設定テーブルを更新する都度、各Webサーバは、更新したテーブルを他のWebサーバに送信しなければならない。
以上説明したように、本実施形態によれば、Webサーバを複数用意することで、各Webサーバの負荷を軽減し、システムとしての処理効率が向上したネットワークプリントシステムを実現することができる。
[第6の実施形態]
次に、本発明の第6の実施形態について説明する。図23は、本実施形態に係るネットワークプリントシステムのソフトウエアブロック図であり、ここでは、サーバ、クライアントともに1台ずつ示している。第1の実施形態において説明した図1と図23とを比較すると明らかなように、Webサーバ120が画像格納部118及び119を有すること以外、本実施形態に係るシステムと第1の実施形態に係るシステムとの構成は同一である。そのため、既に説明した構成についての説明はここでは省略する。
サーバ120が有する画像格納部118,119はハードディスク装置等、画像データを格納するための装置によって実現され、画像格納部118はクライアント101に公開されておらず、またクライアントからアクセスできない領域である。これに対して画像格納部119はクライアントに対して公開されており、クライアントが画像格納部119に含まれるファイルのURLを指定することで、そのファイルにアクセスできる。
<表示要求の処理>
本実施形態の処理を説明する前に、第1の実施形態において説明した、Webブラウザ114のウィンドウ(図2)画面上で表示ボタン208が押された場合の従来の処理を説明する。
図24は、従来の手法による、表示時のサーバ及びクライアントによる処理手順のフローチャートである。以下に説明するように、この従来の処理では、クライアントに返されるべき生成された画像ファイルは、クライアントから参照可能な画像格納部119に置かれる。
図24において、まず、クライアント101から、表示したい画像に関する情報を含んだ画像リクエスト(ステップS7210)が、ネットワーク通信制御部107を通じてWebサーバ120に送られる。
Webサーバではリクエストの内容が解析され、処理の実行が開始される(ステップS7202)。Webサーバ120は、必要な画像生成処理を、画像生成部111に依頼する(ステップS7203)。画像生成部111は依頼に基づく画像生成処理を行ない(ステップS7290)、その結果である生成画像は、Webサーバに送られ、Webサーバ中のクライアントから参照可能な画像格納部119に格納される(ステップS7204)。
なお、画像生成部111は他の実施形態において説明されているように、サーバ本体と通信可能に接続され、画像生成部の機能を有する独立したコンピュータ(画像生成サーバ)により実現されても良い。この場合には、ステップS7290はその画像生成サーバで実行される。
Webサーバ120はここで、図25で表される構造を持ったデータブロック(HTML文書)7219をネットワーク通信制御部107を通じてクライアント101に返す(ステップS7205)。このデータブロックは、ヘッダ部7220と内容部7230からなり、ヘッダ部7220には、内容部7230にはHTML文書が格納されていることが内容種別として記述されている。また、内容部のHTML文書中には、クライアント101の要求に対して生成された画像ファイルへの参照パス(/InetPub/wwwroot/img_dir/tem03.pdf)が埋め込まれている。
クライアント101では、データブロック7219を受け取ると、画像ファイルへの参照が埋め込まれていることを検出し、Webサーバ120に対してその参照パスに対応する画像ファイル転送要求を送信する(ステップS7211)。この画像ファイル転送要求を受けて、Webサーバは画像格納部119から画像ファイルを読み出し(ステップS7206)、図26で示されるようなデータブロック7239として、クライアント101に転送する(ステップS7207)。
データブロック7239は、ヘッダ部7240と内容部7250からなり、ヘッダ部7240には、内容部7250に画像データが格納されていることが内容種別として記述されている。また、内容部7250には、生成された画像ファイルの内容が格納されている。クライアント101はデータブロック7239を受け取り(ステップS7212)、Webブラウザ114の画面内に受信した画像を表示する(ステップS7213)。
これに対して、本実施形態に係るシステムでは、Webサーバは、生成された画像をクライアントからは参照不可能な画像格納部118に置くようにすることにより、生成結果の画像ファイルに対する安全性を確保したものである。以下本実施形態における表示処理について、図27のフローチャートを用いて説明する。
まず、クライアント101から、表示したい画像に関する情報を含んだ画像リクエスト(ステップS7310)が、ネットワーク通信制御部107を通じてWebサーバ120に送られる。
Webサーバではリクエストの内容が解析され、処理の実行が開始される(ステップS7302)。Webサーバ120は、必要な画像生成処理を画像生成部111に依頼する(ステップS7303)。画像生成部111は依頼に基づく画像生成処理を行ない(ステップS7290)、その結果である生成画像は、Webサーバ120に送られ、Webサーバ中のクライアントから参照不可能な画像格納部118に格納される(ステップS7304)。
ここで、いったん画像格納部118に画像ファイルを置くのは、要求を行なったクライアント101以外から生成結果の画像ファイルへのアクセスを行えないようにするためだけではなく、クライアント101から同一のユーザが同一の画像リクエストを発生した場合に、再度、画像生成部111に同じ画像の生成処理を要求することなく、画像格納部118にすでに格納されている画像ファイルをクライアント101に転送することで処理を高速化することを可能とするためでもある。
すなわち、従来の処理方法で安全性を確保するためには、例えば、あるユーザが偶然にも他のユーザの画像を読み出すのを防ぐために、画像の転送要求を行なったユーザが、画像格納部119に生成されたその画像を読み出した後に、すぐにその画像が削除される必要がある。そのため、同一ユーザが再度同一画像の生成を依頼した場合であっても再度処理を行なわねばならなかった。
しかし、本実施形態の構成では画像格納部118に生成画像を格納するため、生成した画像を削除する必要がなく、同一ユーザからの同一画像の転送依頼が発生した場合には、記憶された画像をそのまま転送すればよい。
さらにWebサーバ120は、図26で表される構造を持ったデータブロック7239をネットワーク通信制御部107を通じてクライアント101に返す(ステップS7305)。前述の通り、データブロック7239は、ヘッダ部7240と内容部7250からなり、ヘッダ部7240には、内容部7250に画像データが格納されていることが内容種別として記述されている。また、内容部7250には、生成された画像ファイルの内容が格納されている。
本実施形態においては、生成結果の画像ファイルがクライアントからアクセス不可能な画像格納部118に格納されるため、前述の従来例のようにクライアントにファイルパスを送信することができない。従って、ファイルの生成が終了するとクライアントに直接画像ファイルを送信している。
クライアント101は、このデータブロック7239を受け取ると(ステップS7312)、ブラウザの画面内に、データブロックに埋め込まれた画像ファイルを基にして画像を表示する(ステップS7313)。
以上説明したように、本実施形態においては、クライアントからの要求に応じて生成した画像ファイルをクライアントからアクセス不可能な領域に格納し、その画像を生成する要求を発行したクライアントに対してのみ、当該画像を送信する。これにより、画像を格納したディレクトリを不特定のクライアントに公開しなくとも、画像生成を要求するクライアントに対しては確実に画像ファイルを送信できる。
また、クライアントのWebブラウザは、URLを参照しないため受信した画像データをキャッシュせず、常にサーバから受信した画像を表示できる。
[第7の実施形態]
次に、本発明の第7の実施形態に係るネットワークプリントシステムにおける表示処理を、図28のフローチャートを用いて説明する。
図28において、図27と同じ処理については同じステップ番号を付与し、その説明は省略する。第7の実施形態では、第6の実施形態と比較して以下の部分の動作を変更している。
リクエスト解析ステップ(ステップS7602)において、まず、クライアントからの画像リクエストから、ユーザーセッションを識別する。さらに、要求された画像生成がおなじユーザーセッションですでに実行されているものかどうかを、セッション・画像生成ジョブ対応表記憶部に記憶されたエントリを調べることにより決定する。セッション・画像生成ジョブ対応表記憶部は、処理中及び/又は処理済みのセッションと、そのセッションで要求のあった処理内容、処理結果、すなわち生成された画像ファイル等の格納位置を対応付けして記憶するものである。セッション・画像生成ジョブ対応表記憶部は図23には示されていないが、後述する図30のように、図23に示すWebサーバ120にも含まれているものとする。
条件判断ステップ(ステップS7650)により、以前に実行されていた画像生成ジョブと同じ画像を要求していると判定された場合、すでに画像格納部118に格納されている生成画像ファイルを読み出す(ステップS7305)。なお、ステップS7650における判定は、セッションIDとクライアントからの要求の内容、例えば画像を生成させる指示や、そのパラメータが以前受信したものと一致していれば、以前に要求されていると判定できる。
Webサーバは、画像格納部118から読み出した画像ファイルを、第6の実施形態における処理と同様に、図26で表される構造を持ったデータブロックに格納してクライアントに送信する(ステップS7305)。
一方、条件判断ステップ(ステップS7650)により、新しい画像生成ジョブであると判断された場合には、ステップS7304以降、第6の実施形態と同一の処理を行なう。
以上説明したように、本実施形態によれば、要求元のクライアントにのみ処理結果を送信するため、他のクライアントに処理結果をアクセスされるおそれがない上、クライアントから処理済みの要求と同じ要求を受信した場合には、以前の処理で生成した結果を返送することにより、サーバは同じ処理を繰り返し行う必要がないため、処理のための資源を節約できる他、処理の高速化が実現できる。
[第8の実施形態]
次に、本発明の第8の実施形態に係るネットワークプリントシステムにおける表示処理を、図29のフローチャートを用いて説明する。
上述の第6及び第7の実施形態においては、処理結果の画像ファイルを強制的にクライアントから参照不可能な画像格納部118に格納していた。本実施形態においては、従来の方法と本発明による方法とのいずれを用いるかをクライアントから選択できるようにしたことを特徴とする。すなわち、画像生成処理が終了した時点で、画像ファイルをすぐに返送する(以下「内容渡し」という)か、画像ファイルへのパスを返送するかをクライアントから選択できる。
図29において、Webサーバの処理で図27と同じ処理については同じステップ番号を付与し、その説明は省略する。また、クライアントの処理は図24における従来方法と同一であるため、やはりその説明は省略する。第8の実施形態では、第6の実施形態と比較して以下の部分の動作を変更している。
リクエスト解析ステップ(ステップS7702)において、まず、クライアント101からの画像生成リクエストから、内容渡しによる方法と、画像ファイルへの参照パスを渡す方法のどちらが要求されているのかを決定する。画像生成処理(ステップS7703、ステップS7390)を行った後、ステップS7702においてどのような応答方法が決定されたのかを調べる(ステップS7750)。
内容渡しによる方法が選択されていれば、ステップS7705に進んで、クライアント101から参照不可能な画像格納部118に生成された画像ファイルを格納した後、Webサーバ120は、この画像ファイルを、図26で表される構造を持ったデータブロック7239の内容部に格納してクライアントに返す(ステップS7706,S7707)。
一方、ステップS7750において、画像ファイルへの参照パス渡しによる方法が選択されている場合は、ステップS7704に進んで、クライアント101から参照可能な画像格納部119に生成された画像ファイルを格納した後、Webサーバ120は、この画像データへの参照パスを含んだHTML文書を内容部に有する、図25に示したデータブロック7219をクライアント101に返す(ステップS7705)。
データブロック7219を受信したクライアントは、図24を用いて説明したように、内容部に含まれる参照パスを用いてWebサーバ120にファイル転送を要求し(ステップS7211)、Webサーバ120が画像格納部119から対応するファイルを読み出して転送する(ステップS7706、S7707)。そして、クライアントは受信した画像ファイルをブラウザ114の画面に表示する(ステップS7213)。
このように、本実施形態によれば、クライアントからの要求で応答方法を指定することによって、クライアント側から、画像ファイルの渡し方を指定でき、不特定のクライアントから画像ファイルにアクセス可能とすることもできるし、不可とすることもできる。
[第9の実施形態]
図30は、第6乃至第8の実施形態に係るネットワークプリントシステムにおいて、図9に示した第2の実施形態のように、画像生成処理をWebサーバとは異なるコンピュータ上に配置して処理を分散させる場合の構成を示すブロック図である。
図30において、クライアント7090は、図23のクライアント101と同様の構成を有する。Webサーバ7000は、負荷分散制御部7005を有している点と、画像生成部を有していない点とを除いて、図23のWebサーバ120と同様の構成である。
画像生成サーバ7006及び7009とは同じ構成を有しており、Webサーバ7000やクライアント7090と同様のコンピュータ装置である。そして、Webサーバ120が有していた画像生成部111と同等の機能を有する画像生成部7007及び7010が各画像生成サーバ7006及び7010に設けられている。画像生成サーバ7006及び7009と、Webサーバ7000は、ネットワーク7080を介して互いに通信可能に接続される。
画像生成部等の負荷分散を行う負荷分散制御部7005は、ラウンドロビン方式や、各画像生成部の負荷を示す係数をカウントするなどの方法により、画像生成処理の負荷を、画像生成部7007,7010を有する画像生成サーバ7006及び7009に振り分けて分散する。
図30の構成においては、単に画像生成部を画像生成サーバとして独立させたものであり、画像生成部を使用するにあたって、画像生成処理の依頼の送信や生成された画像データの受信を、ネットワーク7080を介して行わねばならない点が第6乃至第8の実施形態と異なる点であり、Webサーバ及びクライアントによる制御手順そのものは、図27,図28,図29で説明した手順と同様でよい。
[第9の実施形態の変形例1]
図31は、図30の構成において、画像生成部のみならず、生成された画像データを格納するための画像格納部(クライアントから参照できない)を画像生成サーバに持たせた構成のシステムを示す。
このシステムでは、Webサーバ120内に画像ファイルを格納する代わりに、画像生成サーバ7104または7108の画像格納部7107,7111に保存する。本変形例においてこれらの画像格納部は、クライアント7090からの参照は不可能な領域としているため、この構成により、第6又は第7の実施形態(図27あるいは図28の処理手順)で説明したような表示処理を実行することが可能である。
この場合、画像生成部での処理が終了したら、画像生成部が同じ画像生成サーバに含まれる画像格納部にファイルを格納してから、Webサーバに処理終了通知及び処理結果の画像ファイルの格納位置通知を行なうようにすればよい。
[第10の実施形態]
次に、本発明の第10の実施形態に係るネットワークプリントシステムについて説明する。本実施形態は、Webサーバからクライアントに送信される画像ファイルやプリントデータファイルを暗号化する手段をWebサーバに、暗号化ファイルを復号化する手段をクライアントに設けることにより、通信の秘匿性を高めたシステムに関する。
本実施形態において、Webサーバは例えば図1に示す構成を有しており、データ処理部110にファイル暗号化の機能を付加することによって、画像生成部111で生成された画像データやプリントデータを所定の方法で暗号化してクライアントに送信することが可能である。
暗号化方法及びその実現方法は任意であり、通常通信分野で用いられている方法を適用することができる。
図32は、本実施形態におけるクライアントの構成を示すブロック図である。図において、5501はCPUであり、後述する暗号化ファイルの復号化処理もCPUによりプログラムを実行することで実現される。
5502は通信モジュールであり、図1におけるデータ入出力部102と同等の機能を有する。Webサーバと通信を行い表示データや印刷データを得る。
5503は受信データブロックであり、通信モジュール5502を介して受信したデータを格納するメモリブロックである。これはメモリブロックは所謂外部メモリで構成することもでき、その場合受信データブロックはデータファイルとなる。
復号データブロック5504は受信データブロックに記憶された暗号化ファイルの復号結果を格納するメモリブロックである。受信データブロック5503と同様、データファイルで構成しても構わない。
5505は印刷モジュールであり、復号したプリントデータをプリンタ5506に送る機能を持つモジュールであり、例えば印刷スプールやパラレルケーブル装置である。
5506はプリンタである。
5507は暗号を復号するための情報(復号キー)を保持する復号キーブロックである。復号キーブロック5507も他のデータブロック5503、5504と同様、メモリ領域やデータファイルで構成することができる。復号キーは、クライアントで動作するプログラムに予め埋め込んでおいたり、クライアントにプログラムをインストールするときにユーザが入力する方法等、任意の方法を選択できる。
次に、図33に示すフローチャートを用いて、図32に示したクライアントにおける復号化処理動作について説明する。以下の説明では、クライアントからクライアントのプリンタ5506での印刷要求をWebサーバに送信し、その結果としてWebサーバから暗号化されたプリントデータファイルを受信したものとする。
まず、ステップS5601で通信モジュール5502を通じてプリントデータファイルを受信し、受信データブロック5503にデータを格納する。前述の実施形態で説明したように、データファイルは、Webサーバから送られる場合や、クライアント側で動作するプログラムがWebサーバからダウンロードする場合があるが、本実施形態においてはいずれの場合でも構わない。
受信したデータの構成例を図34に示す。
受信データはデータの内部構造を表すヘッダ部5710とプリントイメージそのものであるイメージ部5711から構成される。
さらに、ヘッダ部5710にはイメージ部5711の内容が暗号化されているか否かを表すフラグ領域5701を有し、暗号化されている場合にはONが記述され、暗号化の種別を表す情報も記述される。
次に、ステップS5602で、受信したデータのヘッダ部5710のフラグ領域5701を参照し、イメージ部が暗号化されているか、どのような暗号化方法が用いられているかの情報を得る。
本実施形態においては受信したファイルが暗号化されているため、ステップS5603では、ステップS5602で得た情報を元に、復号キーを復号キーブロック5507から得る(ステップS5603)。
次いで、ステップS5603で得た復号キーを用いて、受信データブロック5503に格納された暗号化ファイルを復号化し、復号結果を復号データブロック5504に格納する(ステップS5604)。
そして、復号データブロックから順次復号化したデータを読み出し、印刷モジュール5505を介してプリンタ5506に出力する。
[第11の実施形態]
次に、本発明の第11の実施形態に係るネットワークプリントシステムについて説明する。本実施形態は、第10の実施形態において、Webサーバから受信したデータが複数のデータブロックから構成される場合に特に有効に適用される。
例えば、複数のテキストデータや画像データからプリントデータが構成され、それらが個別にWebサーバからクライアントに送信される場合、テキストやイメージといったデータの種類の違いに応じて暗号化するかどうかを選択したり、暗号化の方法を切り替えることが考えられる。
なぜなら、暗号化自体長い処理時間を必要とする上、暗号化方法によっては復号するためにさらに多大な計算時間を要するものがあり、システムにとって無視できない負荷となりうるからである。また、処理時間が係ることによってクライアントのユーザも処理を待たされることになり、使い勝手が悪くなるという問題もある。
以下、図35に示すフローチャートを用いて、本実施形態における復号化処理動作を説明する。復号化を行なうクライアントの構成は第10の実施形態のものと同一でよい。図35に示す処理も、図33の処理と同様、クライアントのCPU5501が図示しない外部メモリやROM等に記憶されたプログラムを実行することによって実現される。
また、以下の説明では、クライアントからクライアントのプリンタ5506での印刷要求をWebサーバに送信し、その結果としてWebサーバから個別に暗号化された複数のデータブロックから構成されるプリントデータファイルを受信するものとする。
ステップS5801は複数のプリントデータから構成されるある1つのプリントジョブの開始を意味する。例えば、複数ページからなるイメージを含むドキュメントの印刷である。
ステップS5802では、プリントジョブを構成する受信データが残っているかを判断する。
受信データがある場合は、ステップS5803でデータを受信し、受信データブロック5503にデータを格納する。
ステップS5804では、受信したデータブロックのヘッダ部のフラグ領域5701を参照し、そのデータブロックが暗号化されているか否か、そのデータブロックのデータ種別は何かについて情報を取得する。データ種別は図25及び図26で示したように、データブロックのヘッダ部を参照することによって判別できる。
ここで、復号キーの選択について図36に示す復号キーブロック5507の構成例を用いて説明する。
復号キーブロック5507に含まれる復号キーの総数は任意であるが、本実施形態においては、復号キーブロック5507には、4つの複合キー(復号キー1、復号キー2、復号キー3、その他の復号キー)が格納されている。
図35のステップS5804では、受信したデータの種類に応じて、図32の復号キーブロックのどの復号キーを用いるかを決定する。例えば、テキストデータであれば復号キー1、イメージデータであれば復号キー2、というように予めシステム内で定義しておき、それに従う。
ステップS5806ではステップS5804で決定された復号キーを用いて受信データブロック5503に格納された暗号化データブロックを復号化し、復号化結果を復号データブロック5504に格納する。
ここで、本実施形態では、1つのジョブが複数のデータブロックで形成されるため、復号データファイルも複数存在する。従って、復号データブロック5504はデータが順次追加できるように構成される。
例えば、データを追加するたびに次回どのアドレスに書き込めば良いかというデータも同時に保持しておくという方法でデータを追加していくことが可能となる。
以後、ステップS5802からステップS5806までの処理を受信データが無くなるまで繰り返し、ステップS5802において受信データが無くなったことを検出したら、ステップS5807で復号データブロック5504から復号データを読み出して、ステップS5808で印刷モジュール5505を介してプリンタ5506に出力する。
[第12の実施形態]
次に、本発明の第12の実施形態に係るネットワークプリントシステムについて説明する。前述の第10及び第11の本実施形態に係るシステムでは、受信したデータブロックのヘッダ部から得た情報又はデータブロックのデータ種別によって復号化キーを決定していたが、本実施形態のシステムでは、復号化する際にWebブラウザとWebサーバの間で保持されるセッション情報に基づいた復号キーを用いることによって、更に秘匿性の高い通信が可能なネットワークプリントシステムを提供することを特徴とする。
図37は本実施形態におけるWebサーバのシステムブロック図で、6601はCPUを示し、以下で説明する処理のプログラムを実行する。6602は通信モジュールであり、図示しないクライアントとの間の通信を行う。6603はセッションIDブロック、6604は新規セッションIDブロックである。また、6605はセッションIDと復号化キーとを対応付けして記憶するメモリブロックである。
第2の実施形態において説明したように、一般にWebシステムは、サーバとクライアント間の1回の要求、応答でセッションは終了してしまい、クライアントを区別する仕組みはない。そのため、本実施形態においても、サーバの位置情報を示すURLの中にセッションIDを導入する方法を採用する。
図38に示すフローチャートを用いて、セッションIDの導入処理について更に説明する。まず、ステップS6701で、あるクライアントから要求がを受け付けた時、そのURLにセッション番号が付加されているか否か、ステップS6702で判定する。もしURL中にセッションIDが付加されていない場合は、このクライアントからの、新たなセッション開始とみなし、ステップS6703で新規セッションIDを生成し、ステップS6704でこの要求に対しそのセッションIDを付与する。このセッションID付のURLは、要求に対応した処理が終了した後、クライアント側に返され、同じクライアントが同セッション内でWebサーバに次の要求を行う場合は、セッションID付きのURLを持ってサーバへの再アクセスを行う事になる。
ステップS6703における新規セッションIDの生成は例えば次の手順で行われる。サーバは使用中セッションIDブロック6603に使用中のセッションIDを保持しておく。
ステップS6702において、セッションIDを含まないURLであると判定された場合、乱数を用いて新規セッションIDを生成し新規セッションIDブロック6604に保持する。
この値が使用中セッションID保持ブロック6603中になければ新規セッションIDとして認め、その値をブロック6603に格納し、かつその値をステップS6703においてURLに付加する。
乱数ではなく、単純にカウントアップで他のセッションIDと重複しない値を得ても構わないが、本実施形態ではセッションIDを暗号化処理に用いるため、乱数のほうがよりセキュリティを守る効果が期待できる。
次に、図39に示すフローチャートを用いて、セッションIDを暗号化に用いる手順について説明する。
図40はサーバ上で保持されるメモリブロック6605の構成を示す図である。図からわかるように、メモリブロック6605はテーブル構造を持つ。テーブルのキーは上述のセッションIDである。値は暗号を復号するときに必要な復号キーが格納される。
まず、ステップS6801において、Webサーバがクライアントからの要求に応答してプリント画像を生成したものとする。
次いでステップS6802で、Webサーバはこのセッションに付与されたセッションIDを用いて、後に暗号化されるプリント画像ファイルをクライアントで復号化するための復号キーを発生させる。ここで、復号キーは上述の通り乱数を用いるとより高い秘匿性が得られるため好ましい。
ステップS6803で、メモリブロック6605に、セッションIDをキーとし、復号キーを値としてテーブルにキーと値の組を格納する。
例えば、図40に示す例では、キー1121に対して復号キーとしての値187737216が、キー4827に対し値98673628が格納されている。セッションIDから復号キーを生成する方法は、予め定めた任意の方法を用いることができる。
ステップS6804で、復号キーで復号可能な暗号化によって、プリント画像データが暗号化され、クライアントに送信される。
ステップS6805で、クライアントが暗号化された画像データを受信する。
クライアントは、セッションIDを既に知っているため、ステップS6806で、そのセッションIDを用いてサーバに復号キーを問い合わせる。この際、セッションIDは特定のユーザからの持続した接続しか許さないので、他のユーザからの要求は拒絶される。
ステップS6807で、クライアントに対して復号キーが返されるので、クライアントは復号キーを用いて暗号化された画像データを復号することができ、直接或いはネットワークを介して接続されたプリンタから出力することが可能となる。
なお、本実施形態におけるクライアントの構成については特に述べなかったが、図39のステップS6805〜S6808で説明した処理が可能であれば任意の構成のクライアントを用いることができる。例えば図32に示す構成のクライアントを用い、図39のステップS6805〜S6808で説明した処理をCPU5501で実行可能なプログラムを図示しない外部メモリ等に記憶しておけばよい。
[第13の実施形態]
次に、本発明の第13の実施形態に係るネットワークプリントシステムについて説明する。第11及び第12の実施形態においては、クライアント−Webサーバ間のセキュリティを高めたシステムについて説明したが、本実施形態はクライアントのユーザ間のセキュリティを高めたことを特徴とする。
すなわち、会社などの組織において、職制に応じて印刷、表示が可能な内容が異なることは珍しくない。以下、本実施形態に係るシステムにおいて、Webブラウザユーザの権限により、出力できる内容を制限する場合の処理について説明する。なお、本実施形態に係るシステムは、図1に示す構成において、Webサーバ106のデータ格納部109に後述する権限テーブルを有している構成により実現でき、以下の処理はサーバ106のCPU101a(図8)が外部メモリ101cに記憶されたプログラムを実行することで実施することができる。
まず、印刷処理全体を制限する場合の処理について、図41に示すフローチャートを用いて説明する。
ステップS3701では、ユーザがWebブラウザ114(図1)を介してWebサーバ106にアクセス(ログイン要求)する。これに応答して、ステップS3702でサーバからユーザ認証を求める画面がブラウザに表示される為、ユーザは例えばユーザID、パスワード等を入力する。Webサーバのデータ処理部110では、入力されたユーザID及びパスワードをデータ格納部109に含まれる、ユーザ情報を格納するデータベースと照合する。
図42に示すように、データ格納部109には、ユーザIDとその印刷権限が予め登録されており、このテーブルを参照することにより、ログインユーザの印刷権限を知ることができる。そして、以後このユーザから処理を要求されると、権限に基づく処理を行なう。
ステップS3703で、ユーザからWebサーバに対して新たなページの表示要求が行われたとする。Webサーバ106は、ここで、次に表示するページが印刷対象のページであるか否か、すなわちそのページに印刷ボタンが含まれるか否かを判定する。もし、印刷ボタンが含まれない通常のページであれば、ステップS3707に移行する。
一方、ステップS3704において印刷対象のページであると判断されたならば、ステップS3702で得て保持されているユーザ権限を参照し、印刷権限があると認められた場合は、印刷ボタンを含んだページ表示用データを送信する(ステップS3706)。権限がない場合は、ステップS3707であらかじめ用意してある印刷ボタン無しのページ表示用データを送信する。従って、印刷権限がないユーザから表示要求されたページには印刷ボタンがなく、帳票印刷は行われない。
もちろん、印刷ボタン表示のみをON、OFFできる場合には、送信するページ表示用データを共通として、印刷ボタン表示のみを権限の有無によって変更するように構成しても良い。
次に、帳票の項目毎に権限を設定する場合の処理について説明する。この場合、非権限者が操作した場合、一部の要点となるような項目は表示も印刷もされないようにすることができる。図43は、第1の実施形態において説明した、帳票テンプレートの可変データテーブル(図3)の一部として、本実施形態で追加した項目を示す図である。
図に示すように、本実施形態においては可変データのインデックス毎に、権限による表示、印刷の可否が登録されている。図43の可変データテーブルにおいて、3801の列は、テンプレートの可変データが埋め込まれる事を示すインデックスである。3802では、3801インデックスが示すエリアの名称であり、必ずしも必要ではないが、インデックスのみではデータの意味がわからないため、管理者等の作業のために設けられている。3803,3804,3805は、権限の種類により表示、印刷を行うか否かを示すフラグである。
図43に示す例では、権限1を有するユーザは、全項目について表示及び印刷を行い、権限2を有するユーザは、部署名、性別、小計、合計は表示、印刷されるが社員番号及び氏名は表示、印刷されない。その他の権限を有するユーザは、性別と合計のみが表示、印刷されることになる。この可変データファイルは、Webサーバ内のデータ格納部109に格納される。また、各ユーザが有する権限の種類は、図42に示したテーブルにおいて、印刷権限の欄を権限の種類の欄に置き換えた構成を有するテーブル等に予め登録されて、データ格納部に記憶しておく。
次に、図44に示すフローチャートを用いて、図43に示す設定がなされている状態でWebブラウザ画面で印刷ボタンが押された場合の、Webサーバ(画像生成部111)の動作を説明する。以下の説明においては、ユーザのログインが終了し、ユーザが有する権限の種類が既に取得されているものとする。
第1の実施形態で説明したように、印刷ボタンが押され(ステップS3901)、その通知を受信すると、Webサーバでは、このプリント処理で使用する帳票のテンプレートを検知する(ステップS3902)。ステップS3903では、Webサーバ内等にあるデータ格納部から帳票作成に必要な可変データテーブルを検索し、帳票テンプレートへのデータ埋め込みの準備を行う。
ここでは、印刷に使用する帳票テンプレートが図43に示すデータテーブルに対応しているものとする。そして、帳票内における各項目の位置を検知(ステップS3903)するとともに、3801のインデックスN1,N2…に対応するデータの検索を行う。そして、ステップS3904にてユーザの権限情報を得ると同時に、図43で可変データテーブルから、印刷項目のファイルを読み込む。
次のステップでは、インデックスの順に対応する値と図43に示される印刷項目ファイルの権限情報との比較を行う。ステップS3905において、最初にインデックスを1(N1)にする。ステップS3906においてN1に対応するデータは、現状のユーザの権限で、印刷可能か否かをステップS3904で読み込んだ印刷項目ファイルより判定する。もしユーザが有する権限でN1が印刷可能であれば、ステップS3907において、すでに検索済みのN1に対応するデータを読み込み、ステップS3909において帳票テンプレートとマージ用のインデックスデータを作成する。
ステップS3910では、インデックスがすべて終了したか否かを判定する。終了していない場合は、Nの値をカウントアップし次の項目について判定する。ステップS3906において該当項目が印刷権限のない項目であった場合も、Nをカウントアップし次の項目についての判定を行う。したがって、印刷権限のない項目に関しては、インデックスデータは作成されず、ステップS3912において帳票として画像生成される時、インデックスデータの作成されていない項目については、なにも印刷されない(空白で印刷される)ことになる。
図44においては印刷処理について説明したが、表示処理においても同様の処理によって対応することができる。
[第14の実施形態]
次に、本発明の第14の実施形態に係るネットワークプリントシステムについて説明する。
図45は、本実施形態に係るネットワークプリントシステムの構成を示すソフトウェアブロック図である。第1の実施形態において図1に示した構成に対し、本実施形態の特徴である、クライアントから送られてきた印刷要求に対して制限をかける機能を追加した構成を有する。
図において、101はクライアント、105はネットワークであり、それぞれ図1におけるクライアント101、ネットワーク105と同一である。また、Webサーバ5103において、ネットワーク通信制御部107はWebサーバ106におけるネットワーク通信制御部107と同一である。
5105は後述するプリント情報解析部5106で解析された結果を元に、印刷を許可するか否かをクライアントに指示する機能を持つ、印刷制御部である。プリント情報解析部5106はクライアント101から送られてきた印刷データに制限がかかっているか否かを、後述するデータベース5107を参照し判断する機能を持つ。データベース5107は各帳票に設定されている制限情報を保持する。
図46は、図45のデータベース5107に保持されるデータを具体的に現したものである。登録済み帳票ファイルには、帳票5202が複数登録され、利用可能な帳票ごとに、印刷の制限情報を有している。期限情報5203はその帳票が利用期限であり、この期限を過ぎてからの印刷要求に対しては印刷を許可しない。回数情報5204はその帳票の印刷回数の上限を規定し、印刷回数がこの上限回数になると、それ以降の印刷要求に対しては印刷を行なわない。現在の印刷回数5205はその帳票がこれまでに印刷された回数を保持する。図46においては、これら情報5203〜5205は帳票Aに対応してのみ示されているが、実際には各帳票毎に対応して格納される。
次に、図47に示すフローチャートを用いて、制限情報を用いた印刷か批判団処理について説明する。本処理は、クライアントからの印刷要求に対する処理の中で、実行される。例えば、第1の実施形態において説明したサーバ印刷処理(図5)において、サーバ印刷ボタンの押下検出(ステップS501)と帳票検索(ステップS502)の代わりに実行することができる。
まずステップS5301において、クライアントからWebサーバに対する印刷要求を受信する。次に、ステップS5302において、サーバ5103のプリント情報解析部5106が、クライアントから送られてきた印刷要求データを解析し、要求された印刷処理に用いる帳票の種類を検出する。そして、ステップS5307では、帳票の種類を元にデータベース5107を検索し、その帳票に対応する制限情報を参照する。印刷期限が設定されている場合には現在日時と期限情報5203とを比較し、期限を過ぎていたら印刷中止と判断する。
期限情報の設定がない場合もしくは期限内である場合には、印刷回数の制限が設定されている場合は現在の印刷回数5205と回数情報5204とをステップS5304において比較する。現在の印刷回数が回数情報に設定された回数と等しい場合には、印刷を実行すると上限回数を超えることになるので印刷中止と判断する。
回数制限の設定がない場合もしくは上限回数に満たない場合にはステップS5305で印刷実行の指示を印刷制御部5105に送り、データベース5107の使用した帳票に対応する印刷回数の値を1だけ加算する(ステップS5308)。ステップS5306ではステップS5303及びステップS5304のいずれかで印刷を許可しないと判断した場合、印刷中止の指示を印刷制御部5105に送る。
印刷中止と決定された場合、要求元のクライアントのWebブラウザ114の画面に、その旨を知らせるメッセージを表示するようにしても良い。また、印刷だけでなく、表示の時点で同じ様な制限をかけることもできる。この場合、表示自身を中止しても、第13の実施形態で説明したように、印刷ボタンを除いた状態で表示するようにしても良い。
[第15の実施形態]
次に、本発明の第15の実施形態に係るネットワークプリントシステムについて説明する。
図48は、本実施形態に係るネットワークプリントシステムの構成を示すブロック図である。本実施形態においては、Webサーバからプリントデータを複数存在するクライアントに選択的に配信することにより、クライアントにおける負荷を分散し、クライアントにおける出力処理を高速におこなうことを特徴とする。
図において、3401はネットワークを示しており、コンピュータ装置であるクライアントやプリンター等が接続されている。3402及び3403は第1の実施形態において説明したクライアント101(図1)と同一の構成を有するクライアントである。3404〜3407はそれぞれ異なる印字能力を持つプリンタを示し、プリンタ3404及び3405はそれぞれクライアント3402及び3403に接続されている。また、プリンタ3406及び3407はネットワーク3401に接続されている。
3408及び3409は第1の実施形態におけるネットワーク105と同様のネットワークであるが、利用するプリンタに応じて選択される経路が異なることを特徴とする。Webサーバ3410は第1の実施形態におけるWebサーバ106に、プリント情報を解析しプリントデータの送信先をしかるべきクライアントに振り分ける機能を付加したものである。ネットワーク通信制御部3411も同様に図1に示すネットワーク通信制御部107と同様である。
3412はネットワーク3401上に接続されているプリンタの印刷能力や負荷状態、および後述するWebサーバ3410のプリントデータ解析部3413からの情報を元に、印刷に最適なプリンタを自動的に選択し印刷要求を送信する印刷制御部である。
プリントデータ解析部3413はプリント情報を解析し、印刷要求のあった帳票の種類、印刷要求を出したユーザの情報等を元にどのプリンタを優先的に利用するべきかを印刷制御部3412に知らせると同時に、受け付けた印刷要求の情報を後述するデータベース3414に蓄積する。データベース3414は例えばリレーショナルデータベースであり、ネットワーク3401上に接続されているプリンタの種類や、過去に行なわれた印刷の情報を蓄積する。
図49はデータベース3414に蓄積されるデータの例を示す図である。データベース3414は利用可能なプリンタの情報を蓄積したプリンタファイル部3501と、ユーザー毎に過去の印刷履歴を蓄積した印刷情報ファイル部3502とを有する。
プリンタファイル部3501には、クライアントが利用可能なプリンタ毎に、カラー印刷の可否、印字スピード、設置場所等の固有情報が格納される。また、印刷情報ファイル部3502には、各ユーザの印刷履歴情報として、これまでにどの帳票をどのプリンタで出力したか、その時の書式設定はどうなっていたかといった履歴を格納する。本実施形態においては、この履歴に基づいて次回の印刷要求時の設定が決定される。
次に、図50に示すフローチャートを用いて、本実施形態に係るシステムにおける、印刷要求を受け付けてからプリントするプリンタを遠択するまでの処理を説明する。
まずステップS3601でいずれかのクライアントからWebサーバに対する印刷要求が発生し、Webサーバがこの要求を受け付ける。次いでWebサーバのプリントデータ解析部3413は、受け付けた印刷要求を解析し、印刷要求をしたユーザを特定する(ステップS3602)。そして、データベース3414の印刷情報ファイル部3502を参照し(ステップS3603)、このユーザーが行なった過去の印刷履歴を元に、選択するプリンタの候補を絞り込む(ステップS3604)。
プリンタの候補は、例えば過去所定回、例えば10回の印刷要求において使用されたプリンタのうち、回数の多いものから所定数、例えば3台のプリンタを選択することによって決定することもできるし、単に前回使用したプリンタを選択するようにしても良い。
候補プリンタが選定されると、その候補をクライアントのWebブラウザ画面に表示させて、ユーザに選択を促す。この際、前回の印刷で利用したプリンタを優先的にデフォルトの選択状態とすることも可能である。ステップS3605でユーザのプリンタ選択結果を受信すると、ステップS3606では履歴に基づいて印刷の書式設定を自動的に決定する。
次いで、ステップS3607では印刷制御部3412が、使用が決定されたプリンタの状態を検出する。ステップS3608でピジー状態の時はデータベース3414のプリンタファイル部3501から、同等かそれ以上の機能を持つ他のプリンタを自動的に選択し、印刷ジョブを移管する(ステップS3609)。この場合、ユーザに印刷出力先が変更されたことを通知することが望ましい。
また、ビジー状態の場合、ユーザにその旨を通知するとともに、プリンタファイル部から他のプリンタを選択肢として与え、ユーザが選択したプリンタに印刷処理を移管するようにしても良い。
ステップS3610で最終的に選択されたプリンタに合わせて、Webサーバの画像生成部による印刷データ生成処理等の印刷処理が実施される。
上述の説明では、複数の候補を選定し、ユーザにその中から1台選択させるようにしたが、最も利用頻度の高いプリンタや、前回使用したプリンタを自動選択するように構成しても良い。
また、書式設定とビジー時の代替プリンタ選定処理を両方行なう場合について説明したが、いずれかのみを行なうようにしても良いことは言うまでもない。
[第16の実施形態]
次に、本発明の第16の実施形態に係るネットワークプリントシステムについて説明する。本実施形態に係るネットワークプリントシステムは、印刷しようとしている帳票データの内容にカラーデータを含むか否かで印刷に最適のプリンタを自動的に選択することを特徴とする。
また、印刷する文書のページ数が所定のページ数より多い場合、一つの文書を複数に分割し、複数のクライアントプリンタに印刷処理を分散させることを別の特徴とする。この際、文書をカラー・モノクロの種別によって分割し、それぞれに最適なプリンタを割り当てて印刷処理を分散させることも可能である。
本実施形態に係るネットワークプリントシステムは、第15の実施形態において説明した図48に示す構成により実現することができるため、構成の説明は省略する。
図51は、本実施形態におけるデータベース3414’の内容を示す図である。第15の実施形態において図48に示したデータベース3414の構成に、分割印刷を行なうための情報である、環境情報ファイル部4403および印刷場所グループファイル部4404を追加した構成を有する。環境情報ファイル部4403は、印刷する文書のページ数が何枚を超えたら分割印刷を実行するか、複数のプリンタを使った分割印刷を行なう時に、どこに設置されているプリンタを利用するか等の情報を格納する。印刷場所グループファイル部4404は、分割印刷において利用するプリンタの範囲をグループ化した情報を格納する。
次に、図52に示すフローチャートを用いて、本実施形態における印刷処理について説明する。図52には、第15の実施形態において図50で説明した処理と同様、クライアントから印刷要求を受け付けてから、印刷を実行するプリンタを決定するまでの処理を示している。
まずステップS4501で、クライアントからの印刷要求をWebサーバが受け付ける。ステップS4502において、Webサーバのプリントデータ解析部3413(図48)は、受け付けた印刷要求を解析し、要求を行なったユーザーの特定及び、印刷文書にカラーページが含まれるか否かを検出する。
カラーページが含まれる場合には、ステップS4503からステップS4504へ移行し、データベース3414のプリンタファイル部3501を参照して、利用できるプリンタの中からカラープリンタを抽出する。
一方、モノクロページのみの場合はステップS4503からステップS4505へ移行し、データベース3414’のプリンタファイル部3501を参照して、利用できるプリンタの中からモノクロプリンタを抽出する。
次いで、ステップS4506において、ユーザーの印刷履歴をデータベース3414’の印刷情報ファイル部3502を参照して、印刷書式を自動設定する。この処理は第15の実施形態におけるステップS3606の処理と同一である。 書式設定がすむと、ステップS4507で、印刷しようとする文書を分割印刷すべきどうかを判定する。すなわち、データベース3414’の環境情報ファイル部4403を参照し、印刷文書が分割すべき条件を満たすかどうかを判断する。
たとえば、印刷文書が分割条件であるページ数を超えるページ数を有している場合には、ステップS4507で分割印刷すべきと判断され、ステップS4508においてどのプリンタ群を用いて分割印刷を行なうかを設定する。この設定は、データベース3414’の印刷場所グループファイル部4404から適切なプリンタ群を選択することによって行なわれる。この選択に当たっては、プリントデータ解析部3413による解析結果(帳票の種類や、どのプリンタを優先的に使用すべきか等の情報)を考慮するとともに、ステップS4504及びS4505で抽出したプリンタを含むグループであり、カラーページを含む場合には、カラープリンタのみで構成されるグループを選択することが好ましい。さらに、印刷要求を行なったユーザから出力が行なわれるプリンタの距離が離れすぎないグループを選択することも好ましい。
分割印刷を行なう場合には、生成したプリントファイルを分割印刷を行なうプリンタの台数や能力に応じて分割して送信する(ステップS4510)。分割印刷はプリンタ群に含まれる全てのプリンタを用いる必要はなく、ユーザーからの距離などに応じて任意の条件で選択することができる。
一方、分割印刷を行なわない場合には、例えば第15の実施形態におけるステップS3607〜S3609(図50)に相当する処理をステップS4509で行い、最適なプリンタを決定した後、そのプリンタに適切なプリントファイルの生成処理等の印刷処理が実行される(ステップS4510)。
もちろん、本実施形態においても、第15の実施形態で行なったように、ステップS4504及びステップS4505抽出したプリンタの候補をユーザに提示し、ユーザが選択したプリンタを使用するようにしても良い。
また、分割印刷する場合やユーザが選択したプリンタがビジーで他のプリンタで印刷を実行する場合には、その旨を実行するプリンタ名等とともに通知することが好ましい。
(第16の実施形態の変形例1)
図52の処理においては、モノクロページとカラーページをそれぞれでまとめずに分割印刷していたのに対し、本変形例においては、カラーページとモノクロページをそれぞれでまとめて分割印刷することを特徴とする。
図53に示すフローチャートを用いて、本変形例における印刷処理について説明する。図53には、図52で説明した処理と同様、クライアントから印刷要求を受け付けてから、印刷を実行するプリンタを決定するまでの処理を示している。
まずステップS4601で、クライアントからの印刷要求をWebサーバが受け付ける。次いで、ステップS4602で、印刷しようとする文書を分割印刷すべきどうかを判定する。すなわち、データベース3414’の環境情報ファイル部4403を参照し、印刷文書が分割すべき条件を満たすかどうかを判断する。たとえば、印刷文書が分割条件であるページ数を超えるページ数を有している場合には、分割印刷すべきと判断される。
一方、分割印刷を行なわない場合には、例えば第15の実施形態におけるステップS3607〜S3609(図50)に相当する処理をステップS4609で行い、最適なプリンタを決定した後、そのプリンタに適切なプリントファイルの生成処理等の印刷処理が実行される(ステップS4510)。
ステップS4502において、Webサーバのプリントデータ解析部3413(図48)は、受け付けた印刷要求を解析し、要求を行なったユーザーの特定及び、印刷文書にカラーページが含まれるか否かを検出する。そして、カラーページが含まれる場合には、そのページをカラーページ群に、それ以外のページ(モノクロページ)はモノクロページ群にそれぞれ分割して、例えばWebサーバ3410(図48)のデータ格納部に格納する(ステップS4604〜S4606)。
次いで、ステップS4506において、ユーザーの印刷履歴をデータベース3414’の印刷情報ファイル部3502を参照して、印刷書式を自動設定する。この処理は第15の実施形態におけるステップS3606の処理と同一である。 ステップS4608においては、ステップS4602におけるプリントデータ解析部3413による解析結果(帳票の種類や、どのプリンタを優先的に使用すべきか等の情報)を考慮するとともに、印刷文書がカラーページを含む場合にはカラープリンタを含むプリンタ群を選定する。
そして、ステップS4609において、ステップS4605により分割されたカラーページ群に対してはプリンタ群に含まれるカラープリンタを、ステップS4606により分割されたモノクロページにはモノクロ専用プリンタをそれぞれ選択する。ステップS4610においては、選択したプリンタに適切なプリントファイルの生成処理等の印刷処理が実行される。
[第17の実施形態]
図54は、本発明を実施するネットワークプリントシステムのソフトウエアブロック図である。図54において、図1に示したネットワークプリントシステムと同じ構成には同じ参照数字を付し、その説明は省略する。
図1と図54との比較から明らかなように、図54の構成はWebサーバ600が複数のネットワークインターフェース610〜612を有している以外は共通の構成を有している。また、図54においてWebサーバのネットワークインターフェースは3つであるが、複数であれば数の制限はない。
複数の経路が存在するとき、実際にデータが通るネットワーク経路は、ネットワークを構成するルータなどのネットワーク機器の設定に依存する。つまりクライアントからWebサーバへのネットワーク経路は、ネットワーク機器の設定次第で、複数のネットワークインターフェース610〜612のいずれに到着するかが決定する。
一方、Webサーバからクライアントへのデータは、ネットワークインタフェース610〜612のいずれからデータを送出するかはWebサーバによって選択できるが、その後のクライアントまでのネットワーク経路はネットワーク機器の設定に依存する。
本実施形態におけるネットワークプリントシステムでは、クライアントからのデータは、Webサーバのある特定のネットワークインターフェースに到着するように、予めネットワークを構成するルータ等の設定をしておく。また、Webサーバの各々のネットワークインターフェースから出力されたデータの通る経路についても、クライアントから到着するデータの経路や、他のインターフェースからの経路と、ネットワーク負荷と言う観点から見て、干渉しないようにネットワークを構成する機器の設定しておく。
次に、図2に示したブラウザウィンドウにおいて、印刷ボタン210が押された後の動作を説明する。印刷ボタン210が押されると、印刷要求データは、予め設定したネットワーク経路を通って、Webサーバ600の特定のネットワークインターフェースに到着する。Webサーバ内では、データ処理部110で要求データが解析・処理されたうえ、画像生成部111で画像が生成されることにより、クライアントへの応答データが整うことになる。
そして、ネットワーク通信制御部107は、クライアントへの応答データを送り出すネットワークインターフェースとして、クライアントからの要求データが到着した以外のものを選択して、データを送り返す。そうすることによって、この要求の送信元であるクライアントからの要求が伝達される経路とは別の経路でプリントデータが返送されることになり、同じクライアントから別の要求が連続して発生しても、その伝達をWebサーバからの応答データが阻害することはない。
(第17の実施形態の変形例1)
図55は、第17の実施形態に係るネットワークプリントシステムの変形例を示すソフトウエアブロック図である。図55は、図54に示したネットワークプリントシステムの構成において、Webサーバに621のネットワーク負荷監視部が追加された構成を有する。ネットワーク負荷監視部621は、Webサーバに備わる複数のネットワークインターフェース610〜612の負荷を常時監視し、その状態を107のネットワーク通信制御部に通知する機能を有する。
本変形例において、クライアントからの要求データを受けてから、クライアントへの応答データを作成する処理の流れは、図54を用いて上で説明した通りである。
本変形例では、Webサーバ620からクライアント101への応答データの送出にあたり、ネットワーク通信制御部107は、ネットワーク負荷監視部621に各インターフェース610〜612の負荷を問い合わせ、最も負荷の軽いインターフェースを利用してデータ送信を行う。
[他の実施形態]
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態におけるサーバの機能を実現するための、図5あるいは図6のプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。また、Webサーバの機能を実現するための図10あるいは図14及び図15の手順のプログラムをコンピュータに供給しても達成できる。
また、画像生成サーバの機能を実現するための、図12の手順のプログラムコードをコンピュータに供給しても達成できる。
また、本発明の目的は、前述した実施形態におけるサーバの機能を実現するための、図24、図25、図28、図29のプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、
その処理によって前述した実施形態の機能が実現される場合も含まれる。