〔第一の実施形態〕
図1は、情報処理システム5の全体的な構成の例を示す図である。図2は、ゲートウェイ16のハードウェア構成の例を示す図である。図3は、画像形成装置10のハードウェア構成の例を示す図である。図4は、クラウドサーバ21および管理サーバ24のハードウェア構成の例を示す図である。
図1に示すように、情報処理システム5は、ローカルエリアネットワーク1、クラウドサーバ21、管理サーバ24、端末装置3、および通信回線4などによって構成される。
ローカルエリアネットワーク1は、役所、企業、または学校などに設けられる。ローカルエリアネットワーク1は、画像形成装置10、端末装置14、ファイルサーバ15、ゲートウェイ16、および通信回線17などによって構成される。
ゲートウェイ16、クラウドサーバ21、管理サーバ24、および端末装置3は、通信回線4を介して通信を行うことができる。通信回線4としてインターネット回線が用いられる。
ゲートウェイ16は、ローカルエリアネットワーク1の各装置とクラウドサーバ21、管理サーバ24、および端末装置3との間で行われる通信を中継する。
ただし、ローカルエリアネットワーク1の外の装置(以下、「外部装置」と記載する。)からローカルエリアネットワーク1の中の装置(以下、「内部装置」と記載する。)へのアクセスを厳しく制限する。特に、内部装置から外部装置へアクセスしコネクション(接続)を確立することはできるが、外部装置から内部装置へアクセスしコネクションを確立することはできない。
ゲートウェイ16は、図2に示すように、CPU(Central Processing Unit)16a、RAM(Random Access Memory)16b、ROM(Read Only Memory)16c、フラッシュメモリ16d、WAN(Wide Area Network)ポート16e、LAN(Local Area Network)ポート16fのほか種々の回路によって構成される。ゲートウェイ16として、例えば、SaaS(Software as a Service)型ゲートウェイが用いられる。「SaaS型ゲートウェイ」は、SaaSゲートウェイ機能を持った機器であって、ルーティングの機能、HTTPトンネルの機能、XMPP(eXtensible Messaging and Presence Protocol)クライアントの機能、および制御用のソフトウエアなどによって構成される機器である。
WANポート16eは、インターネット側の回線すなわち通信回線4が繋がれる。LANポート16fは、ローカルエリアネットワーク1側の回線すなわち通信回線17が繋がれる。
ROM16cまたはフラッシュメモリ16dには、データ中継プログラム16Pが記憶されている。データ中継プログラム16Pは、RAM16bにロードされ、CPU16aによって実行される。
通信回線17は、ツイストペアケーブルおよびハブなどによって構成される。画像形成装置10、端末装置14、またはファイルサーバ15が無線LANの機能を有する場合は、さらに通信回線17に無線基地局を設けてもよい。
画像形成装置10は、コピー、スキャン、ファックス、またはPCプリントなどの機能を備えた画像処理装置である。「複合機」または「MFP(Multi Function Peripherals)」などと呼ばれることもある。
画像形成装置10は、図3に示すように、CPU10a、RAM10b、ROM10c、補助記憶装置10d、タッチパネルディスプレイ10e、操作キーパネル10f、NIC10g、モデム10h、スキャンユニット10i、画像処理部10j、およびプリントユニット10kなどによって構成される。
タッチパネルディスプレイ10eは、ユーザに対するメッセージを示す画面、ユーザがコマンドまたは情報を入力するための画面、およびCPU10aなどが実行した処理の結果を示す画面などを表示する。また、タッチパネルディスプレイ10eは、タッチされた位置を示す信号をCPU10aへ送る。
操作キーパネル10fは、いわゆるハードウェアキーボードであって、テンキー、スタートキー、ストップキー、電源キー、および種々のファンクションキーなどのキーによって構成される。
NIC10gは、通信回線17などを介してローカルエリアネットワーク1の内外の装置(端末装置14およびクラウドサーバ21など)と通信を行うための装置である。
モデム10hは、ファクシミリ端末との間でG3などのプロトコルで画像データをやり取りする。
スキャンユニット10iは、プラテンガラスの上にセットされた用紙に記されている画像を読み取って画像データを生成する。
画像処理部10jは、NIC10g、モデム10h、またはスキャンユニット10iによって得られた画像データに対して解像度の変換、傾き補正、および天地補正などの処理を行う。
プリントユニット10kは、スキャンユニット10iによって読み取られた画像のほか、他の装置から受信した画像を、画像処理部10jによって処理が必要に応じて施された後、用紙に印刷する。
ROM10cまたは補助記憶装置10dには、上述のコピーなどの機能を実現するためのプログラムが記憶されている。さらに、連携プログラム10Pが記憶されている。
これらのプログラムは、必要に応じてRAM10bにロードされ、CPU10aによって実行される。補助記憶装置10dとして、HDD(Hard Disk Drive)またはSSD(Solid State Drive)などが用いられる。
端末装置14は、画像形成装置10のサービスを使用するためのクライアントである。端末装置14として、パーソナルコンピュータ、スマートフォン、またはタブレットコンピュータなどが用いられる。
ファイルサーバ15は、ファイルを記憶し、他の装置からの要求に基づいてファイルを提供する。ファイルサーバ15として、NAS(Network Attached Storage)が用いられる。
クラウドサーバ21は、いわゆるクラウドサービスを提供するためのサーバである。特に、クラウドサーバ21のクラウドサービスによると、外部装置から画像形成装置10へ印刷ジョブを与え、画像形成装置10に印刷を行わせることができる。また、外部装置からファイルサーバ15へファイルを保存することができる。クラウドサーバ21として、いわゆるサーバ機が用いられる。
クラウドサーバ21は、図4に示すように、CPU20a、RAM20b、ROM20c、補助記憶装置20d、およびNIC20eなどによって構成される。
ROM20cまたは補助記憶装置20dには、上述のクラウドサービスを提供するためのサーバプログラム21Pが記憶されている。サーバプログラム21Pは、RAM20bにロードされ、CPU20aによって実行される。
管理サーバ24は、ローカルエリアネットワーク1の内部装置に関する情報を管理し、外部装置から内部装置へのアクセスを可能にするための支援を行う。
管理サーバ24のハードウェアの構成も、クラウドサーバ21のハードウェアの構成と同様であって、図4に示した通りである。ただし、ROM20cまたは補助記憶装置20dには、サーバプログラム21Pの代わりに管理プログラム24Pが記憶されている。
端末装置3は、画像形成装置10をローカルエリアネットワーク1の外から使用するためのクライアントである。端末装置3として、パーソナルコンピュータ、スマートフォン、またはタブレットコンピュータなどが用いられる。
端末装置3には、クラウドサーバ21のサービスを使用するためのアプリケーションがインストールされている。
図5は、画像形成装置10およびゲートウェイ16それぞれの機能的構成の例を示す図である。図6は、クラウドサーバ21および管理サーバ24それぞれの機能的構成の例を示す図である。
連携プログラム10P、データ中継プログラム16P、サーバプログラム21P、および管理プログラム24Pによると、ユーザは、端末装置3を操作して画像形成装置10に印刷ジョブを実行させたりファイルサーバ15にファイルを保存させたりすることができる。さらに、これらのプログラムによると、従来よりもゲートウェイ16の負荷を軽減することができる。以下、これらの仕組みを、図5〜図7などを参照しながら説明する。
データ中継プログラム16Pを実行することによって、図5に示すトンネル確立部161、第一の外内中継部162、第一の内外中継部163、第二の外内中継部164、第二の内外中継部165、ログデータ書込部166、ログデータ保存部167、およびトンネル切断部168などがゲートウェイ16に実現される。
なお、トンネル確立部161ないしトンネル切断部168の全部または一部を、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)などの回路によってハードウェアモジュールとして実現してもよい。画像形成装置10、クラウドサーバ21、および管理サーバ24それぞれの後述する各部についても、同様である。
連携プログラム10Pを実行することによって、図5に示すコネクション確立部101、ジョブ実行制御部102、ジョブ完了通知部103、およびログ通知部104などが画像形成装置10に実現される。
サーバプログラム21Pを実行することによって、図6に示すジョブ指令受付部201、トンネル要求部202、トンネル確立部203、機能問合部204、直接通信可否判別部205、コネクション要求部206、コネクション確立部207、トンネル切断部208、ジョブ付与部209、およびコネクション切断部210などがクラウドサーバ21に実現される。
管理プログラム24Pを実行することによって、図6に示す機能記憶部241、要求転送部242、および機能回答部243などが管理サーバ24に実現される。
〔準備〕
図7は、デバイス属性データ7Aの例を示す図である。
管理サーバ24の機能記憶部241には、クラウドサーバ21のクラウドサービスを介して外部装置から使用することができる内部装置ごとの機能に関する情報が、予め、記憶されている。
具体的には、図7に示すように、画像形成装置10およびファイルサーバ15などの内部装置それぞれのデバイス属性データ7Aが記憶されている。以下、画像形成装置10およびファイルサーバ15それぞれのデバイス属性データ7Aを「デバイス属性データ7A1」および「デバイス属性データ7A2」と区別して記載することがある。
デバイス属性データ7Aにおいて、「デバイスコード」フィールドは、このデバイス属性データ7Aに係る内部装置の識別子を示す。例えばデバイス属性データ7A1のデバイスコードには、画像形成装置10の識別子が示される。
「コネクション確立機能有無」フィールドは、このデバイス属性データ7Aに係る内部装置が外部装置とのコネクションを確立する機能(以下、「コネクション確立機能」と記載する。)を有するか否かを示す。「有」は、コネクション確立機能を有することを意味し、「無」は、コネクション確立機能を有しないことを意味する。
「スペック」フィールドは、このデバイス属性データ7Aに係る内部装置が有する、コネクション確立機能以外の機能を示す。
デバイス属性データ7Aの内容は、予め管理者によって入力され、機能記憶部241に登録される。
〔ジョブの指令の受付およびトンネルの確立〕
クラウドサーバ21のジョブ指令受付部201は、端末装置3からジョブの指令を受け付ける。以下、特に、画像を用紙に印刷するジョブである印刷ジョブまたはファイルを暗号化して保存するセキュア保存ジョブの指令を受け付ける場合を例に説明する。
また、この際に、ジョブ指令受付部201は、ジョブに使用するデータを端末装置3から受信する。例えば、印刷ジョブの場合は、印刷する画像の画像データ7Bを受信する。また、セキュア保存ジョブの場合は、保存するファイル7Cを受信する。さらに、ジョブを実行させる内部装置の指定を受け付ける。以下、指定された内部装置を「指定装置」と記載する。
トンネル要求部202は、ジョブの指令がジョブ指令受付部201によって受け付けられると、クラウドサーバ21とゲートウェイ16との間のトンネルの確立を管理サーバ24に対して要求する。この際に、トンネル確立コマンド7Dを管理サーバ24へ送信する。トンネル確立コマンド7Dには、クラウドサーバ21の識別子(例えば、IP(Internet Protocol)アドレス)が示されている。
すると、管理サーバ24において、要求転送部242は、クラウドサーバ21からのトンネル確立コマンド7Dをゲートウェイ16へ転送する。
ゲートウェイ16において、トンネル確立部161は、トンネル確立コマンド7Dを管理サーバ24から受信すると、トンネル確立コマンド7Dに基づいてクラウドサーバ21へアクセスする。
そして、トンネル確立部161およびクラウドサーバ21のトンネル確立部203は、ゲートウェイ16とクラウドサーバ21との間でトンネルを確立する。トンネルの確立は、公知の方法によって行われる。
トンネル要求部202は、ジョブの指令が端末装置3から与えられるごとに、トンネルの確立を要求する。よって、ジョブごとにトンネルが確立される。
〔トンネルの削減およびジョブの指令〕
上述の通り、外部装置からジョブの指令があるごとに外部装置とゲートウェイ16との間にトンネルを確立すると、トンネルの数が増え、ゲートウェイ16の負荷が増加してしまう。すると、内部装置と外部装置との間の通信が滞ることがある。これを未然に防止するために、同時期に存在させることができるトンネルの数を限定する場合もある。この場合は、外部装置が内部装置に実行させるジョブが制限されることがある。
そこで、ゲートウェイ16の負荷を軽減するためにトンネルの削減の処理が次のように実行される。
クラウドサーバ21において、機能問合部204は、トンネルが確立されたら、指定装置(端末装置3によって指定された内部装置)がコネクション確立機能を有しているか否かを管理サーバ24に対して問い合せる。この際に、指定装置のデバイス識別子を示す問合データ7Eを管理サーバ24へ送信する。
すると、管理サーバ24において、機能回答部243は、問合データ7Eに示される内部装置のデバイス属性データ7A(図7参照)に基づいて、コネクション確立機能の有無をチェックし、その結果を示す回答データ7Fをクラウドサーバ21へ送信する。例えば、画像形成装置10が指定された場合は、デバイス属性データ7A1のコネクション確立機能フィールドに「有」が示されるので、機能回答部243は、コネクション確立機能を有している旨を示すデータを回答データ7Fとしてクラウドサーバ21へ送信する。
クラウドサーバ21において、直接通信可否判別部205は、回答データ7Fが機能問合部204によって得られると、これに基づいて、指定装置と直接的に(トンネルを介さずに)通信を行うことができるか否かを判別する。具体的には、コネクション確立機能を有している旨がこの回答データ7Fに示されていれば、直接的に通信を行うことができると判別する。コネクション確立機能を有していない旨が示されていれば、直接的に通信を行うことができないと判別する。
コネクション要求部206は、指定装置と直接的に通信を行うことができると直接通信可否判別部205によって判別されたら、トンネル確立部203によって確立されたトンネルを経由して、クラウドサーバ21と指定装置との間のコネクションを確立するように指定装置に対して要求する。この際に、クラウドサーバ21の識別子(例えば、IPアドレス)を示すコネクション確立コマンド7Gを指定装置へ送信する。
以下、画像形成装置10がコネクション確立機能を有し、指定装置が画像形成装置10である場合を例に説明する。
画像形成装置10において、コネクション確立部101は、コネクション確立コマンド7Gを受信すると、コネクション確立コマンド7Gに基づいてクラウドサーバ21へアクセスする。
そして、コネクション確立部101およびクラウドサーバ21のコネクション確立部207は、画像形成装置10とクラウドサーバ21との間でコネクションを確立する。コネクションの確立は、公知の方法によって行われる。
トンネル切断部208は、コネクションが確立されたら、このコネクションを確立するために使用したトンネルを切断(開放)する。
ジョブ付与部209は、トンネルの切断の処理と前後してまたは並行して、コネクションを介して指定装置へジョブの指令を与える。この際に、ジョブに必要なデータ(画像データ7Bまたはファイル7Cなど)を指定装置へ送信する。例えば、画像形成装置10に印刷ジョブの指令を与える場合は、画像データ7Bを送信する。
なお、コネクションを介する場合は、ジョブの指令およびデータは、クラウドサーバ21においてパケット化され、ゲートウェイ16を介して指定装置へ届けられる。
ジョブ付与部209は、コネクション確立機能を有していない旨を示す回答データ7Fが機能問合部204によって得られた場合は、トンネルを介して指定装置へジョブの指令を与える。この際に、コネクションを介する場合と同様、ジョブに必要なデータを指定装置へ送信する。
また、ジョブ付与部209は、ジョブの指令およびデータなどを、コネクションに応じて適宜、暗号化などの処理を施す。例えば、コネクションがSSL(Secure Sockets Layer)に対応していれば、SSLに基づいて暗号化し、送信する。SSLに対応しているか否かは、送信先の内部装置に問い合せてもよい。または、管理サーバ24から送信先の内部装置のデバイス属性データ7Aを取得し、これに基づいて判別してもよい。
なお、トンネルを介する場合は、ジョブの指令およびデータは、クラウドサーバ21において、パケット化され、トンネルのプロトコルに応じてカプセル化される。そして、ゲートウェイ16を経由して指定装置へ届けられる。
〔ゲートウェイ16におけるデータの中継〕
上述の通り、外部装置と内部装置とは、トンネルまたはコネクションを介してデータのやり取りを行うが、データは、物理的に必ずゲートウェイ16を経由する。ゲートウェイ16において、データは、次のように処理される。
第一の外内中継部162は、トンネルのプロトコルのカプセルを外部装置から受信すると、これをパケットに戻して宛先の内部装置へ転送する。
第一の内外中継部163は、内部装置からクラウドサーバ21へ宛てて送信されたデータのパケットをカプセル化してクラウドサーバ21へ転送する。
第二の外内中継部164は、外部装置から送信されてきたパケットを受信すると、これを宛先の内部装置へ転送する。
第二の内外中継部165は、内部装置からクラウドサーバ21へ宛てて送信されたデータのパケットを、クラウドサーバ21へ転送する。
第一の外内中継部162ないし第二の内外中継部165による中継は、公知の方法によって行われる。後述する、外部装置と内部装置との間でやり取りされるデータのカプセルまたはパケットも同様に、第一の外内中継部162ないし第二の内外中継部165の何れかによって中継される。
〔ジョブの実行および後処理〕
画像形成装置10において、ジョブ実行制御部102は、クラウドサーバ21からジョブの指令および画像データ7Bを受信すると、印刷ジョブを実行する。つまり、画像データ7Bに基づいて画像が用紙に印刷されるようにプリントユニット10kなどを制御する。
コネクションを介してジョブが付与された場合は、印刷ジョブが完了すると、ジョブ完了通知部103およびログ通知部104によって次の処理が行われる。
ジョブ完了通知部103は、印刷ジョブが完了した旨を示すジョブ完了データ7Hを、コネクションを介してクラウドサーバ21へ送信する。
ログ通知部104は、コネクションに関するログ(このコネクションを介して行った通信の概要など)を示すログデータ7Jをゲートウェイ16へ送信する。
クラウドサーバ21において、コネクション切断部210は、コネクションを介してジョブ完了データ7Hを受信すると、このコネクションを切断(開放)する。
ゲートウェイ16において、ログデータ書込部166は、ログデータ7Jを受信すると、これをログデータ保存部167に保存させる。
一方、トンネルを介してジョブが付与された場合は、各装置において、次のように処理が行われる。以下、指定装置がファイルサーバ15である場合を例に説明する。
ファイルサーバ15は、ジョブの指令とともにファイル7Cを受信すると、これを保存する。
ゲートウェイ16において、トンネル切断部168は、ファイルサーバ15へのファイル7Cの送信が完了したら、ファイル7Cの中継に使用したトンネルを切断(開放)する。
ログデータ書込部166は、トンネルに関するログ(このトンネルを介して行った通信の概要など)を示すログデータ7Kをログデータ保存部167に保存させる。
図8および図9は、印刷ジョブの際のクラウドサーバ21、管理サーバ24、ゲートウェイ16、および画像形成装置10それぞれの処理の流れの例を示すシーケンス図である。
次に、コネクション確立機能を有する内部装置にジョブを実行させる場合の、各装置の処理の流れを、この内部装置が画像形成装置10である場合を例に、図8〜図9のフローチャートを参照しながら説明する。
クラウドサーバ21は、画像形成装置10に印刷ジョブを実行させる指令および画像データ7Bを端末装置3から受け付けると(図8の#701)、管理サーバ24へトンネル確立コマンド7Dを送信することによって、新規のトンネルの確立(作成)を要求する(#702)。
管理サーバ24は、トンネル確立コマンド7Dを受け付けると(#721)、これをゲートウェイ16へ転送することによって、新規のトンネルの確立を要求する(#722)。
ゲートウェイ16は、トンネル確立コマンド7Dを受信すると(#731)、クラウドサーバ21へアクセスする(#732)。そして、ゲートウェイ16およびクラウドサーバ21は、新規のトンネルを確立する(#703、#733)。
クラウドサーバ21は、トンネルの確立の処理と前後してまたは並行して、管理サーバ24へ問合データ7Eを送信することによって、画像形成装置10がコネクション確立機能を有するか否かを問い合せる(#704)。
管理サーバ24は、問合データ7Eを受信すると(#723)、画像形成装置10のデバイス属性データ7Aつまりデバイス属性データ7A1に基づいて回答データ7Fを生成しクラウドサーバ21へ送信する(#724)。これにより、問合せに対する回答がなされる。本例では、回答データ7Fには、コネクション確立機能を有する旨が示される。
クラウドサーバ21は、回答データ7Fを受信すると(#705)、トンネルを介さずに(つまり、直接的に)画像形成装置10との通信を行うことができるか否かを回答データ7Fに基づいて判別する(#706)。本例では、コネクション確立機能を有する旨が回答データ7Fに示されるので、トンネルを介さずに通信を行うことができると判別する。
すると、クラウドサーバ21は、ステップ#703で確立したトンネルを介してコネクション確立コマンド7Gをゲートウェイ16へ送信することによって、新規のコネクションの確立を要求する(#707)。
ゲートウェイ16は、コネクション確立コマンド7Gを受け付けると(#734)、コネクション確立コマンド7Gを画像形成装置10へ転送することによって、新規のコネクションの確立を要求する(#735)。
画像形成装置10は、コネクション確立コマンド7Gを受信すると(#741)、このトンネルを介してクラウドサーバ21へアクセスする(#742)。そして、画像形成装置10およびクラウドサーバ21は、新規のコネクションを確立する(#743、#708)。
クラウドサーバ21は、このコネクションが確立したら、このトンネルを切断(開放)する(図9の#709)。
トンネルの切断の処理と前後してまたは並行して、クラウドサーバ21は、このコネクションを介して印刷ジョブの指令および画像データ7Bを画像形成装置10へ送信する(#710)。
画像形成装置10は、印刷ジョブの指令および画像データ7Bを受信すると(#744)、これらに基づいて印刷ジョブを実行する(#745)。そして、このコネクションを介してジョブ完了データ7Hをクラウドサーバ21へ送信するとともに(#746)、ログデータ7Jをゲートウェイ16へ送信する(#747)。
クラウドサーバ21は、ジョブ完了データ7Hを受信すると(#711)、このコネクションを切断する(#712)。
ゲートウェイ16は、ログデータ7Jを受信すると(#736)、これを保存する(#737)。
図10は、セキュア保存ジョブの際のクラウドサーバ21、管理サーバ24、ゲートウェイ16、およびファイルサーバ15それぞれの処理の流れの例を示すシーケンス図である。
次に、コネクション確立機能を有しない内部装置にジョブを実行させる場合の、各装置の処理の流れを、この内部装置がファイルサーバ15である場合を例に、図10のフローチャートを参照しながら説明する。
端末装置3からのジョブの受付の処理、トンネルの確立の処理、コネクション確立機能の有無の問合せの処理、および直接的な通信の可否の判別の処理は、図8のステップ#701〜#706、#721〜724、および#731〜#733と同様に行われる(図10の#751〜#756、#761〜764、および#771〜#773)。
ただし、本例においては、セキュア保存ジョブおよびファイル7Cが端末装置3から受け付けられる。また、画像形成装置10のコネクション確立機能有無についてではなく、ファイルサーバ15のコネクション確立機能の有無について、問合わせおよび回答がなされる。
クラウドサーバ21は、ステップ#756において、問合せの結果に基づいて、ファイルサーバ15がコネクション確立機能を有しないと判別する。そして、ステップ#753で確立したトンネルを介して、セキュア保存ジョブの指令およびファイル7Cをファイルサーバ15へ宛ててゲートウェイ16へ送信する(#757)。
ゲートウェイ16は、セキュア保存ジョブの指令およびファイル7Cを受信すると(#774)、これらをファイルサーバ15へ転送する(#775)。
ファイルサーバ15は、セキュア保存ジョブの指令およびファイル7Cを受信すると(#781)、ファイル7Cを暗号化して保存する(#782)。
そして、ゲートウェイ16は、このトンネルを切断し(#776)、ログデータ7Kを保存する(#777)。なお、トンネルの切断は、クラウドサーバ21が行ってもよい。
図11は、クラウドサーバ21の全体的な処理の流れの例を説明するフローチャートである。
クラウドサーバ21は、サーバプログラム21Pに基づいて、図11に示す手順で処理を実行する。
クラウドサーバ21は、端末装置3からジョブの指令、それに用いるデータ、およびジョブを実行させる内部装置の指定などを受け付けると(図11の#31でYes)、トンネルを確立するように、管理サーバ24を介してゲートウェイ16へ要求する(#32)。さらに、指定された内部装置(指定装置)のコネクション確立機能の有無を管理サーバ24へ問い合せる(#33)。
クラウドサーバ21とゲートウェイ16との間でトンネルが確立されたら(#34でYes)、指定装置がコネクション確立機能を有していれば(#35でYes)、クラウドサーバ21は、コネクションの確立を、このトンネルおよびゲートウェイ16を介して指定装置へ要求する(#36)。
そして、クラウドサーバ21と画像形成装置10との間でコネクションが確立したら(#37でYes)、クラウドサーバ21は、このトンネルを切断するとともに(#38)、このコネクションを介して、ジョブの指令およびそれに用いるデータを指定装置へ送信する(#39)。
その後、画像形成装置10からジョブ完了データ7Hを受信したら、このコネクションを切断する(#40)。
一方、指定装置がコネクション確立機能を有していなければ(#35でNo)、クラウドサーバ21は、このトンネルおよびゲートウェイ16を介してジョブの指令およびそれに用いるデータを指定装置へ送信する(#41)。
第一の実施形態によると、可能であればトンネルをコネクションに切り換えることにより、外部装置と内部装置との通信に伴うゲートウェイ16の負荷を従来よりも軽減することができる。
〔第二の実施形態〕
図12は、ゲートウェイ16および画像形成装置10それぞれの機能的構成の例を示す図である。図13は、クラウドサーバ21および管理サーバ24それぞれの機能的構成の例を示す図である。図14および図15は、印刷ジョブの際のクラウドサーバ21、管理サーバ24、ゲートウェイ16、および画像形成装置10それぞれの処理の流れの例を示すシーケンス図である。
第一の実施形態では、内部装置がコネクション確立機能を有していれば、クラウドサーバ21と内部装置との間にコネクションを確立し、このコネクションを介してジョブの指令をクラウドサーバ21から内部装置へ与えられた。この際に、他のジョブの有無を考慮しなかった。
第二の実施形態では、他のジョブ、特にコネクション確立機能を有しない内部装置に実行させるジョブが発生するまでは、トンネルを用い、発生した後にコネクションを用いる。
第二の実施形態において、ローカルエリアネットワーク1の全体的な構成は、第一の実施形態の場合と同様であり、図1に示した通りである。ゲートウェイ16および画像形成装置10それぞれのハードウェアの構成も、第一の実施形態の場合と同様であり、図2および図3に示した通りである。クラウドサーバ21および管理サーバ24のハードウェアの構成も、第一の実施形態の場合と同様であり、図4に示した通りである。
ただし、画像形成装置10のROM10cまたは補助記憶装置10dには、連携プログラム10P(図5参照)の代わりに連携プログラム10Qが記憶されている。連携プログラム10Pによると、図12に示すコネクション確立部171、ジョブ実行制御部172、ジョブ完了通知部173、およびログ通知部174が画像形成装置10に実現される。
また、クラウドサーバ21のROM20cまたは補助記憶装置20dには、サーバプログラム21P(図6参照)の代わりにサーバプログラム21Qが記憶されている。サーバプログラム21Qによると、図13に示すジョブ指令受付部271、トンネル要求部272、トンネル確立部273、機能問合部274、直接通信可否判別部275、コネクション要求部276、コネクション確立部277、トンネル切断部278、ジョブ付与部279、コネクション切断部280、切換要否判別部281、およびジョブ中断指令部282などがクラウドサーバ21に実現される。
第一の実施形態の場合と同様、管理サーバ24は、管理プログラム24Pに基づいて処理を行い、ゲートウェイ16は、データ中継プログラム16Pに基づいて処理を行う。
以下、各装置の各部の処理を、画像形成装置10に印刷ジョブを実行させる場合を例に、図14〜図15のシーケンス図を参照しながら説明する。第一の実施形態と重複する点については、説明を省略する。
クラウドサーバ21において、ジョブ指令受付部271は、第一の実施形態のジョブ指令受付部201と同様に、端末装置3から印刷ジョブの指令および画像データ7Bなどを受け付ける(図14の#801)。
トンネル要求部272は、トンネル要求部202と同様に、管理サーバ24を介してゲートウェイ16へ、クラウドサーバ21とゲートウェイ16との間のトンネルの確立を要求する(#802)。この際に、管理サーバ24およびゲートウェイ16は、第一の実施形態の場合と同様に処理を行う(#821〜#822、#831〜#832)。
トンネル確立部273は、ゲートウェイ16からのアクセスがあると、第一の実施形態の場合と同様に、トンネルを確立する(#803、#833)。
切換要否判別部281は、現在の、クラウドサーバ21とゲートウェイ16との間のトンネルの数に応じて、ステップ#803で確立したトンネルをコネクションに切り換える必要があるか否かを判別する(#804)。具体的には、現在のトンネルの数(以下、「現トンネル数」と記載する。)が所定の数以上であれば、切り換える必要があると判別し、現トンネル数が所定の数未満であれば、切り換える必要がないと判別する。
切り換える必要があると判別された場合は、以下、クラウドサーバ21の機能問合部274ないしコネクション切断部280、管理サーバ24の機能回答部243、ゲートウェイ16の第一の外内中継部162ないしトンネル切断部168、および画像形成装置10のコネクション確立部171ないしログ通知部174が、第一の実施形態のステップ#704〜#712、#723〜#724、#734〜#737、#741〜#747と同様の処理を行う(図8および図9参照)。
一方、切り換える必要がないと判別された場合は、ジョブ付与部279が、このトンネルおよびゲートウェイ16を介して画像形成装置10へ印刷ジョブの指令および画像データ7Bを送信し始める(#805、#834〜#835)。
そして、画像形成装置10において、ジョブ実行制御部172は、印刷ジョブの指令を受信し、画像データ7Bを受信し始めると(#851)、スプールおよび印刷などを開始する(#852)。
その後、クラウドサーバ21が他のジョブを受け付けることなく、画像形成装置10への画像データ7Bの送信を完了した場合は、ゲートウェイ16において、第一の実施形態のステップ#776〜#777と同様に、このトンネルの切断およびログデータ7Kの記録が行われる(図10参照)。
しかし、画像データ7Bの送信を完了するまでに、クラウドサーバ21が他のジョブを受け付けた場合は(#806)、各装置の各部は、次のように処理を行う。以下、ファイルサーバ15に対するセキュア保存ジョブが受け付けられた場合を例に説明する。
機能問合部274は、画像形成装置10およびファイルサーバ15それぞれがコネクション確立機能を有するか否かを管理サーバ24へ問い合せる(#807)。管理サーバ24は、問合せを受け付けると(#823)、画像形成装置10およびファイルサーバ15それぞれのデバイス属性データ7Aに基づいて、回答する(#824)。問合せおよび回答の方法は、第一の実施形態で説明した通りである。
クラウドサーバ21において、切換要否判別部281は、機能問合部274が回答を受け付けると(#808)、このトンネルをコネクションに切り換える必要があるか否かを次のように判別する(#809)。
ステップ#808において受け付けた回答によって、ファイルサーバ15がコネクション確立機能を有しないことが分かった場合は、ファイルサーバ15のためにトンネルを確立しなければならない。そこで、この場合は、新たにトンネルを確立することによって、現トンネル数が所定の数以上になるのであれば、切換要否判別部281は、切り換える必要があると判別する。
直接通信可否判別部275は、切り換える必要があると切換要否判別部281によって判別されると、ステップ#808において受け付けた回答に基づいて、画像形成装置10が直接的に(トンネルを介さずに)通信を行うことができるか否かを判別する(#810)。判別の仕方は、第一の実施形態の場合と同様である。本例では、直接的に通信を行うことができると判別される。
すると、ジョブ中断指令部282は、ステップ#803で確立したトンネルおよびゲートウェイ16を介して、印刷ジョブの中断の指令を示す中断コマンド7Lを画像形成装置10へ指令する(#811、#836〜図15の#837)。
画像形成装置10において、ジョブ実行制御部172は、中断コマンド7Lを受信すると(#853)、印刷ジョブを中断し(#854)、これまでの処理のデータを保持する(#855)。
クラウドサーバ21において、コネクション要求部276は、第一の実施形態のコネクション要求部206と同様に、このトンネルおよびゲートウェイ16を介して、新規のコネクションを確立するように画像形成装置10へ要求する(#813、#838〜#839)。
画像形成装置10において、コネクション確立部171は、要求を受け付けると(#856)、第一の実施形態のコネクション確立部101と同様に、クラウドサーバ21のコネクション確立部277とともに、画像形成装置10とクラウドサーバ21との間にコネクションを確立する(#857〜#858、#814)。
クラウドサーバ21において、コネクションの確立後、トンネル切断部278は、このトンネルを切断する(#815)。
ジョブ付与部279は、このコネクションを介して、画像データ7Bの送信を再開する(#816)。つまり、画像データ7Bのうち未だ送信していない部分(残りの部分)を送信し始める。
画像形成装置10において、ジョブ実行制御部172は、画像データ7Bの残りの部分を受信し始めると(#859)、残りの部分および保持しておいたデータに基づいて印刷ジョブの実行を再開する(#860)。
そして、印刷ジョブが完了したら、ジョブ完了通知部173およびログ通知部174は、それぞれ、第一の実施形態のジョブ完了通知部103およびログ通知部104と同様に、ジョブ完了データ7Hをクラウドサーバ21へ送信するとともに(#861)、ログデータ7Jをゲートウェイ16へ送信する(#862)。
画像形成装置10において、コネクション切断部280は、ジョブ完了データ7Hを受信すると(#817)、このコネクションを切断する(#818)。
また、ゲートウェイ16において、ログデータ7Jは、ログデータ保存部167に保存(記録)される(#840、#841)。
なお、画像形成装置10とクラウドサーバ21との間のトンネルがステップ#815において切断された後、ステップ#806で受け付けたセキュア保存ジョブのための処理が、各装置において、図10で説明した手順で実行される。
図16および図17は、クラウドサーバ21の全体的な処理の流れの例を説明するフローチャートである。
クラウドサーバ21は、サーバプログラム21Qに基づいて、図16〜図17に示す手順で処理を実行する。
クラウドサーバ21は、端末装置3からジョブの指令、それに用いるデータ、およびジョブを実行させる内部装置の指定などを受け付けると(図16の#51)、トンネルを確立するように、管理サーバ24を介してゲートウェイ16へ要求し、トンネルを確立させる(#52)。
さらに、クラウドサーバ21は、このトンネルをコネクションに切り換える必要があるか否かを、現トンネル数に基づいて判別する(#53)。
切り換える必要がない場合は(#54でNo)、クラウドサーバ21は、ステップ#52で確立されたトンネルを介して、指定装置へのジョブの指令およびデータの送信などを開始する(図17の#55)。
そして、データの送信が完了するまで(#56でNo)、クラウドサーバ21は、次の処理を適宜、実行する。
他のジョブの指令を端末装置3から受け付けた場合は(#57でYes)、クラウドサーバ21は、当該他のジョブの指定装置およびステップ#51で受け付けたジョブ(以下、「対象ジョブ」と記載する。)の指定装置それぞれのコネクション確立機能の有無を管理サーバ24へ問い合せる(#58)。そして、問合せの結果に応じて、対象ジョブのトンネルをコネクションに切り換える必要があるか否かを判別する(#59)。
切り換える必要がない場合は(#60でNo)、クラウドサーバ21は、引き続き、対象ジョブのデータの送信を継続する。
一方、切り換える必要がある場合は(#60でYes)、対象ジョブの指定装置がコネクション確立機能を有していれば(#61でYes)、クラウドサーバ21は、ステップ#52で確立したトンネルおよびゲートウェイ16を介して、この指定装置へ、ジョブの中断を指令するとともに(#62)、コネクションの確立の処理を行うように要求する(#63)。
コネクションが確立されたら(#64でYes)、クラウドサーバ21は、このトンネルを切断し(#65)、このコネクションを介して対象ジョブの残りのデータをこの指定装置へ送信する(#66)。そして、送信が完了したら、このコネクションを切断する(#67)。
または、ステップ#53において、ステップ#52で確立したトンネルをコネクションに切り換える必要があると判別された場合は(#54でYes)、クラウドサーバ21は、管理サーバ24への問合せを行う(#68)。そして、その結果、このトンネルをコネクションに切り換えることができると判別したら(#69でYes)、第一の実施形態のステップ#36〜#40と同様、コネクションを新たに確立し、このコネクションを介してジョブの指令およびデータを指定装置へ送信する処理などを行う(#70〜#74)。
一方、切り換えることができないと判別したら(#69でNo)、第一の実施形態とステップ#41と同様に、このトンネルを介してジョブの指令およびデータを指定装置へ送信する(#75)。
第二の実施形態によると、外部装置と内部装置との通信に伴うゲートウェイ16の負荷を従来よりも軽減することができる。また、コネクションへの切換えをトンネルの数に応じて行うことにより、無駄な切換えを減らし、資源を効率的に使用することができる。
なお、クラウドサーバ21は、トンネルをコネクションに切り換えるべきジョブを、次のように選出してもよい。ジョブの種類ごとに、予め優先度(優先順位)を設定しておく。優先度は、重要性の高さによって決めてもよいし、緊急性の高さによって決めてもよい。例えば、外出先から画像形成装置10に行わせる印刷ジョブは、ファイルサーバ15に保存されているファイルを外部装置へ送信するジョブよりも優先度を低く設定しておく。
現トンネル数が所定の数以上になったら、クラウドサーバ21は、トンネルを現在使用するジョブの中から、コネクション確立機能を有する内部装置が実行するジョブを抽出する。そして、抽出したジョブの中から、優先度の最も低いジョブを、トンネルをコネクションに切り換えるべきジョブとして選出する。
第二の実施形態では、コネクションへの切換えを、現トンネル数が所定の数以上になった場合に行ったが、ゲートウェイ16における通信回線4の速度が所定の速度以下になった場合に行ってもよい。または、CPU16aの使用率が所定の値以上になった場合に行ってもよい。
第二の実施形態では、クラウドサーバ21は、ラウドサーバ21とゲートウェイ16との間のトンネルの数に応じて、トンネルをコネクションに切り換えるべきか否かを判別した。しかし、クラウドサーバ21と任意のゲートウェイとの間のトンネルの数に応じて、つまり、一方の端がクラウドサーバ21であり他方の端が任意のゲートウェイであるトンネルの数に応じて、判別してもよい。
または、トンネルをコネクションに切り換えるべきか否かをゲートウェイ16が判別してもよい。この場合に、ゲートウェイ16と任意の外部装置との間のトンネルの数に応じて判別してもよい。
第一の実施形態および第二の実施形態では、ジョブの例として、印刷ジョブおよびセキュア保存ジョブを挙げたが、他のジョブを内部装置に実行させることもできる。例えば、画像形成装置10に保存されているファイルを外部装置に送信するジョブを実行させることができる。画像形成装置10は、このジョブが与えられると、コネクションを介してファイルを外部装置へ送信する。
第一の実施形態および第二の実施形態では、クラウドサーバ21と内部装置との間にコネクションを確立したが、端末装置3と内部装置との間にコネクションを確立し、その後はクラウドサーバ21を介さずこのコネクションを介してジョブのデータなどをやり取りしてもよい。
トンネルの数が少ない場合は、クラウドサーバ21は、トンネルおよびコネクションを併存させ、データを2つに分割しそれぞれをトンネルおよびコネクションを介して内部装置へ送信してもよい。コネクションが暗号化などのセキュリティの機能を備えない場合も同様に、通信を行ってもよい。
第一の実施形態および第二の実施形態では、コネクションが確立された後に、トンネルを切断したが、コネクションの確立の要求がクラウドサーバ21から外部装置に対してなされた後、コネクションが確立される前に、切断してもよい。
第一の実施形態および第二の実施形態では、クラウドサーバ21と管理サーバ24とを別々の装置によって実現したが、1台の装置によって実現してもよい。
第一の実施形態および第二の実施形態では、ゲートウェイ16としてSaaS型ゲートウェイを用いることによって、ルーティングの機能とHTTPトンネルの機能およびXMPPクライアントの機能と1台の機器で実現したが、別々の装置によって実現してもよい。または、ルーティングの機能をルータによって実現し、HTTPトンネルの機能およびXMPPクライアントの機能を画像形成装置10に設けてもよい。
図18および図19は、印刷ジョブの際のクラウドサーバ21、管理サーバ24、ゲートウェイ16、および画像形成装置10それぞれの処理の流れの変形例を示すシーケンス図である。
第一の実施形態および第二の実施形態では、コネクションの確立後、画像形成装置10からの要求の有無に関わらず、クラウドサーバ21が画像形成装置10へ画像データ7Bを送信した。つまり、いわゆるプッシュ型で画像データ7Bを送信した。しかし、画像形成装置10からの要求があった後に、送信してもよい。つまり、いわゆるプル型で送信してもよい。
例えば、各装置は、図18に示す手順で処理を行えばよい。図18に示す手順は、基本的に第一の実施形態と同様である。以下、印刷ジョブを画像形成装置10に実行させる場合を例に、相違点を中心に説明する。
端末装置3から印刷ジョブの指令を受け付けてからクラウドサーバ21と画像形成装置10との間にコネクションを確立するまでの処理は、基本的に第一の実施形態の場合と同様であり、図8〜図9のステップ#701〜#708、#721〜#735、#731〜#735、#741〜#743で説明した通りである。
ただし、クラウドサーバ21は、さらに、トンネルおよびゲートウェイ16を介して印刷ジョブに関する情報(例えば、画像形成装置10が行うべき印刷ジョブが生じたこと、その印刷ジョブの識別子、または、その印刷ジョブの内容)を画像形成装置10へ通知する(図18の#607、#634〜#635、#641)。
コネクションの確立後の処理も、基本的に第一の実施形態の場合と同様であり、図8〜図9のステップ#709〜#712、#736〜#737、#744〜#747で説明した通りである。
ただし、画像形成装置10は、ステップ#641で受け付けた通知に基づいて、コネクションの確立後、そのコネクションを介してクラウドサーバ21に対して印刷ジョブのデータ(画像データ7B)を要求する(#645)。
クラウドサーバ21は、画像形成装置10からの要求に応じて、画像データ7Bを画像形成装置10へそのコネクションを介して送信する(#611、#612)。
そして、画像形成装置10は、画像データ7Bを受信し(#646)、これに基づいて印刷ジョブを実行する(#647)。
その他、情報処理システム5、ローカルエリアネットワーク1、画像形成装置10、ファイルサーバ15、ゲートウェイ16、クラウドサーバ21、管理サーバ24の全体または各部の構成、処理内容、処理順序、データの構成などは、本発明の趣旨に沿って適宜変更することができる。