図1は、本実施形態のネットワークシステムの全体構成図の一例を示す図である。図1に示すネットワークシステムは、操作システム101、外部サーバ106、第1の配信サーバ133、監視センタホスト111、第2の配信サーバ143、顧客システム114、119、129を備える。操作システム101は、データベース103と、データベース103にデータ登録や修正などの制御を行なうPC104を備える。PC104は、監視センタホスト111、配信サーバ133が提供するWebサイトへアクセスしてデータの閲覧や、ファームウェアの配信予約等を行う。ホスト102、データベース103、PC104はLAN105を介して接続されている。
尚、図1に示すネットワークシステムは、複数の装置から構成され示されているが、同等の機能を達成できれば同一の構成でなくてもよい。例えば、データベース103は物理的にホスト102内に存在してもよい。さらに、ホスト102からアクセス可能であれば、インターネット132を経由した別の場所に存在しても構わない。つまり、複数の装置から構成されるようにしてもよいし、1つの装置から構成するようにしても良い。
外部サーバ106は、ホスト107、データベース108、PC109を備える。各装置は、LAN110を介して接続されている。外部サーバ106は、配信サーバ133のファームウェアを高速に配信するためサービスを提供する機能を有する。外部サーバ106は、第1の配信サーバにアクセスしてURLを取得したデバイスが、当該URLに基づいて外部サーバ106にアクセスした際に、配信対象のソフトウェアをアクセス元のデバイスに配信する。
次に、監視センタホスト111を説明する。監視センタホスト111は、データベース112を有する、デバイス監視システムである。データベース112は、デバイス監視のための情報や、デバイスの稼働状態などを蓄積する履歴記憶手段として機能するデータベースである。監視センタホスト111とデータベース112はLAN113で接続されており、LAN113はインターネット132に接続されている。なおデータベース112は、物理的に監視センタホスト111内に存在してもよい。さらに、監視センタホスト111からアクセス可能であれば、インターネット132を経由した別の場所に存在しても構わない。監視センタホスト111は、監視装置117、122、123やデバイス131から監視対象としてのデバイスの情報、稼働状態を示す情報を収集、蓄積、加工し、警告等を外部に提供する機能を有する。
次に、第1の配信サーバ133を説明する。配信サーバ133は、デバイスに第1のコントローラのためのファームウェアを配信する配信システムである。詳細は後述するが、配信サーバ133は、ソフトウェアの配信指示を行ったデバイスに対し、配信対象のソフトウェアがあれば当該配信対象のソフトウェアをダウンロードするためのURLをデバイスに渡す。データベース134は、デバイスに適用するためのファームウェアを蓄積する記憶手段としてのデータベースである。配信サーバ133とデータベース134はLAN135で接続されており、LAN135はインターネット132に接続されている。なお、データベース134は物理的に配信サーバ133内に存在してもよい。さらに、配信サーバ133からアクセス可能であれば、インターネット132を経由した別の場所に存在しても構わない。なお、LAN113とLAN135は同一としてもよく、データベース134とデータベース112はデータを送受信しても構わない。
図1には、監視センタホスト111およびデータベース112と、配信サーバ133とデータベース134が1つずつしか示されていない。しかし、実際には、多くのデバイスおよび監視装置からの情報収集や、ファームウェア配信の負荷分散を行なうために、複数の監視センタホスト111、データベースに分散処理をさせるケースもある。
次に、第2の配信サーバ143を説明する。第2の配信サーバ143は、デバイスに第2のコントローラのためのファームウェアを配信する配信システムである。第2の配信サーバ143は、PC139、ホスト140、データベース141を備える。PC139は、例えば、第2のソフトウェアの配信予約の設定画面を提供する。データベース141は、デバイスに適用するためのファームウェアを蓄積する記憶手段としてのデータベースである。PC139、ホスト140、データベース141は、LAN142で接続されており、LAN142はインターネット132に接続されている。
次に、顧客側のシステム構成について説明する。顧客側のシステムは、顧客により構成が異なる。図1では、顧客システム114、119、129が示されている。顧客システム114(A社X事業所)においては、インターネット132に接続されたLAN118に接続されたデバイス115、116が監視装置117により監視され、監視装置117は、インターネット132経由で監視センタホスト111と通信している。一方、顧客システム119(A社Y事業所)においては、監視装置122、123によってLAN128上のデバイスが管理されている。監視装置122により、デバイス120、121、124、125が、監視装置123によりデバイス126、127が夫々管理されている。なお、デバイスはプリンタや複合機などの画像形成装置であり、以下では単にデバイスまたはネットワークデバイスと呼称する。
顧客129システム(B社)においては、インターネット132に接続されたLAN130に接続されたデバイス131自身が、直接インターネット132経由で監視センタホスト111と通信している。デバイス131は、監視装置117、122、123と同等の機能を有しており、自身の稼働情報を監視センタホスト111に送信している。本実施例では、デバイス131には、デバイスにインストールされている第1のコントローラと異なる第2のコントローラがインストールされているPC136が接続され、ディスプレイ137が接続されている。
ネットワークデバイス131には、第2のコントローラが別体、または内蔵した形態で搭載されており、また、ディスプレイ137が接続されている。第2のコントローラには監視装置の機能も搭載されている。ネットワークデバイス131には、他の顧客システムに設置されたネットワークデバイスと同様に第1のコントローラも搭載されている。ネットワークデバイス131は、第1のコントローラのみの制御のもとで単独で使用してもよいし、第2のコントローラを使用して、ディスプレイ137を併用して利用することも可能である。
例えば、画像形成装置においては、第1のコントローラを備える通常の画像処理などの制御機能に加え、高度なプリントジョブの管理を行うためにもう1つのコントローラとして第2のコントローラを搭載する。ここで、高度なプリントジョブの管理とは、用紙坪量や用紙サイズ、後処理方法などを考慮して、印刷時間のほか用紙補給や消耗品交換などのタイミングを予測する機能を備え、プリントジョブを管理することをいう。この機能により、印刷ジョブを効率よく処理し、ダウンタイムの最少化を図ることができる。また、第2のコントローラを用いることで、ネットワークデバイスの立面操作部に大きく操作しやすいディスプレイなどを接続できる場合もある。
第2の配信サーバ143には、ホスト140、データベース141が、LAN142で接続されている。第2の配信サーバ143は、第2のコントローラ用のソフトウェアを配信するためサービスを持つ。
ネットワークデバイス131と第2のコントローラを備える別の機器を接続することで、第2のコントローラを用いてネットワークデバイス131の制御を行う形態について更に説明する。この場合は、第2のコントローラのモジュールと、第2のコントローラのモジュールを実行するためのOS(Operating System)のソフトウェアを該別の機器にインストールし、ネットワークデバイス131と接続して使用する。第2のコントローラに対応するソフトウェアは、第1の配信サーバでは配信対象外なので、第2のコントローラに対応するソフトウェアをサポート対象とする第2の配信サーバ143によりソフトウェア更新などのサービスがサポートされる。
図2は、監視センタホスト111のハードウェア構成図を示す。また、配信サーバ133、ホスト102、107、140、監視装置117、122、123、PC104、109、136、139のハードウェア構成図も同一である。図2に示すように、監視センタホスト111は、CPU201、ROM202、RAM203、HDD204、操作部205、表示部206、外部機器I/F207、NetworkI/F208を備える。なお、CPUは、Central Processing Unitの略称である。ROMは、Read Only Memoryの略称である。RAMは、Random Access Memoryの略称である。HDDは、Hard Disk Driveの略称である。
CPU201は、本装置上の各処理部を制御する。書換え不可能なROM202は、本装置の各処理に関わるプログラムやデータを記憶する。RAM203は、本装置の各処理に関わる一時的なデータを電気的に記憶でき、かつ書き換え可能である。HDD204は、本装置の各処理に関わるプログラムやデータ、および一時的なデータ、監視対象のデバイスに関する情報、およびデバイスから収集した情報などを記憶する。たとえば、HDD204は、稼働情報などを保存する。監視センタホスト111、配信サーバ133の場合、PC104が、後述する図4の処理を行うプログラムをHDD204に記憶している。このプログラムは、RAM203を一時保存領域として使用し、CPU201によって呼び出され実行される。
操作部205は、本装置への指示入力を受け付けるキーボードである。表示部206は、本装置の動作状況や、本装置上で動作する各プログラムが出力する情報を表示する。NetworkI/F208は、ネットワーク経由でLANおよびインターネット132に接続し、外部と情報交換を行う。外部機器I/F207は外部記憶機器等を接続する。これらの要素がシステムバス209により結び付き、データをやりとりしている。
図3は、本実施形態の画像形成装置として機能するデバイス115、116、120、121、124、125、126、127、131におけるハードウェア構成図を示す。デバイスとしては、具体的には、プリンタ及びファクシミリ機能が統合的に設けられた複合機、PCなどからデータを受信し印刷するプリンタ(電子写真方式及びインクジェット方式を含む)や、スキャナーや、ファクシミリなどが挙げられる。本図では、デバイスの一例として複合機の構成を示している。
イメージリーダ302は、原稿給送部301で原稿を読み込む。画像形成部303は、イメージリーダ302で読み込んだ原稿やNotworkI/F305からネットワーク経由で受信したデータを印刷画像に変換・印刷出力する。排紙部304は印刷出力した紙を排出し、ソートやステイプルといった処理を施す。NetworkI/F305はネットワーク経由でLANおよびインターネット132に接続し、外部と情報交換を行う。CPU306は本装置上の各処理部を制御する。CPU306は、デバイスの動作状態を監視し、障害等の特定のイベントが発生した場合には、その状態を示す状態情報を、あらかじめ定めた宛先へと送信する。宛先はたとえば、監視センタホスト111や監視装置などである。
書換え不可能なROM307は、本装置の各処理に関わるプログラムやデータを記憶する。RAM308は、本装置の各処理に関わる一時的なデータを電気的に記憶でき、かつ書き換え可能である。HDD309は本装置の各処理に関わるプログラムやデータ、および一時的なデータ、本装置へ送信されてきたユーザデータなどを記憶する。各デバイスは、後述する図5の処理を行うプログラムをHDD309に記憶している。このプログラムは、RAM308を一時保存領域として使用し、CPU306によって呼び出され実行される。
操作部310は、本装置への指示入力を受け付ける。表示部311は本装置の動作状況および操作部310に対する操作に関わる情報を表示する。そしてこれらの要素がシステムバス312により結び付き、データをやりとりしている。なお、デバイス自身が監視のための情報を送信する機能を持つデバイス131は、ROM307またはHDD309内に、前記監視データ送出処理にかかわるプログラムやデータを保持している。
図4は、監視センタホスト111、配信サーバ133における通信部分のソフトウェア構成図を示す。SOAP通信部401は、監視装置117、122、123またはデバイス131よりNetworkI/F208を介して受信したSOAPデータをSOAPメッセージ解析部402に渡す。また、SOAPメッセージ作成部403が作成したSOAPデータをNetworkI/F208を介して監視装置117、122、123またはデバイス131に送信する。
収集情報処理部404では、監視装置117、122、123またはデバイス131から受信した情報をそのまま、または加工し、データベースアクセス部406を介してデータベース112、あるいはデータベース134に格納する。監視センタホスト111の場合、監視制御部405は、監視装置117、122、123またはデバイス131のスケジュール管理などの制御を行なう。配信サーバ133の場合、監視制御部405は、監視装置117、122、123またはデバイス131のポーリング処理などの制御を行う。
図5は、監視装置117、122、123またはデバイス131における通信部分のソフトウェア構成図を示す。SOAP通信部501は、監視センタホスト111または配信サーバ133によりNetworkI/F208を介して受信したSOAPデータを、SOAPメッセージ解析部503に渡す。また、SOAPメッセージ作成部502が作成したSOAPデータをNetworkI/F208を介して監視センタホスト111、配信サーバ133に送信する。
監視制御部504は、情報蓄積部506に保持する監視対象のデバイス情報の更新や、デバイス115、116の情報取得を行なう。デバイス情報処理部505は、デバイスの稼働情報を、情報蓄積部506に蓄積する。情報蓄積部506に蓄積したデータは、デバイス情報処理部505を介してそのままSOAPメッセージ作成部502に渡され、監視センタホスト111へ送信される。
図6は、監視センタホスト111、配信サーバ133、監視装置117、122、123、または各デバイスにおいてプログラムがロードされた際のメモリマップの構造を示す図である。本発明に係る処理プログラムを実行する際、監視センタホスト111、監視装置117、122、123ではRAM203上に、各デバイスではRAM308上にプログラムがロードされる。
メモリマップは、基本I/Oプログラム601、システム・プログラム602、本実施例の処理プログラムを初めとする各種処理プログラム603、関連データを格納するエリア604、プログラムのワークエリア605で構成されている。基本I/Oプログラム601は、本装置上の入出力を司る。システム・プログラム602は、各処理プログラムに動作環境を提供する。
図7は、本発明に係るネットワークシステムを実現する各ソフトウェアのブロック図を示す。図7に示すデバイス131は、デバイス内の第1のコントローラ740を備え、かつPC136にインストールされた第2のコントローラ741が接続された状態を示す。第1のコントローラ740は、第1の通信I/F部702、通信データ制御部703、第2の通信I/F部704、第1のクライアントモジュール705、エンジン制御部706、アクセサリ制御部707、データ記憶部708を備える。
第1の通信I/F部702は、第1の配信サーバ133、及び外部サーバ106との通信を司る。通信データ制御部703は、第1の通信I/F部702、及び第2の通信I/F部704から受信した通信データを制御する。第2の通信I/F部704は、第1のコントローラ740と第2のコントローラ741との通信を司る。第1のクライアントモジュール705は、第1の配信サーバ133から受信したURL情報を元に、外部サーバ106からソフトウェアを受信し、エンジン制御部706や、アクセサリ制御部707にインストールする役割を持つ。データ記憶部708は、第1のコントローラ内のソフトウェアデータの記憶や、一時記憶領域として使用する。
第2のコントローラ741は、第1の通信I/F部709、通信データ制御部710、第2の通信I/F部711、第2のクライアントモジュール712、画像形成部713、OS714、データ記憶部715を備える。第1の通信I/F部709は、第2のコントローラと第2の配信サーバ143との通信を司る。通信データ制御部710は、第1の通信I/F部709、及び第2の通信I/F部711から受信した通信データを制御する。第2の通信I/F部711は、第1のコントローラ740と第2のコントローラ741との通信を司る。第2のクライアントモジュール712は、第2の配信サーバ143からソフトウェアを受信し、画像形成部713やOS714にインストールする役割を持つ。データ記憶部715は、第2のコントローラ内のソフトウェアデータの記憶や一時記憶領域として使用する。
第1の配信サーバ133は、通信I/F部716、通信データ制御部717、データ制御部718、ファームデータ登録部719、ファームデータ検索部720、ファームデータ記憶部721を備える。通信I/F部716は、ネットワークデバイスの第1のコントローラ740と第1の配信サーバ133との通信を司る。通信データ制御部717は、通信I/F部716から受信した通信データを制御する。データ制御部718は、第1の配信サーバ内のデータの制御を司る。ファームデータ登録部719は、ソフトウェアの情報をファームデータ記憶部721に登録する。ファームデータ検索部720は、ソフトウェアの検索をファームデータ記憶部721より行う。ファームデータ記憶部721は、第1の配信サーバ内に配信用のファームデータを記憶する。ファームデータ記憶部に記憶されているソフトウェアは、エンジン制御部706と、アクセサリ制御部707のソフトウェアを対象とする。
外部サーバ106は、データ受信部722、配信部723、データ管理部724、データ記憶部725を備える。外部サーバ106は、第1の配信サーバ133のソフトウェアを高速に配信するためサービスを持ち、第1の配信サーバより定期的にソフトウェアデータが転送されている。データ受信部722は、第1の配信サーバから転送されたソフトウェアデータを受信する。配信部723は、データ記憶部725に登録されているデータを第1のコントローラ740に高速に配信する。データ管理部724は、データ受信部722から受信したデータをデータ記憶部725に記憶させる。また、配信部723に配信用のデータを供給する。データ記憶部725は、データ管理部724から指示を受け各種データを記憶する。
第2の配信サーバ143は、通信I/F部726、通信データ制御部727、データ制御部728、ファームデータ登録部729、ファームデータ検索部730、ファームデータ記憶部731を備える。通信I/F部726は、ネットワークデバイスの第2のコントローラと第2の配信サーバとの通信を司る。通信データ制御部727は、通信I/F部726から受信した通信データを制御する。データ制御部728は、第2の配信サーバ内のデータの制御を司る。ファームデータ登録部729は、ソフトウェアの情報をファームデータ記憶部731に登録する。ファームデータ検索部730は、ソフトウェアの検索をファームデータ記憶部731より行う。ファームデータ記憶部731は、第2の配信サーバ内に配信用のファームデータを記憶する。ファームデータ記憶部731に記憶されているソフトウェアは、画像形成部713とOS714を対象とする。
図8は、第2の配信サーバ143のPC139がWeb画面として提供する配信予約画面901を示している。ユーザはこのWeb画面を使用して配信予約を行う。デバイスID902は、配信予約対象であるネットワークデバイスのネットワークデバイスIDを示す。現在のグループバージョン903は、ネットワークデバイスに現在適用されているグループバージョンを示す。グループバージョンとは、全てのモジュールのバージョンの組み合わせを統合し、一つのバージョンで表したバージョンである。配信日904、配信時刻905はそれぞれ、ネットワークデバイスにソフトウェアを配信する配信日と配信時刻を指定するための項目である。
配信対象のグループバージョン906は、ユーザから配信予約を受け付けた際に配信対象のデバイスに配信可能なグループバージョンを示す。通常は、最新のソフトウェアバージョンを指定するが、任意のグループバージョンも指定可能である。OKボタン907は、配信予約の内容を適用するためのボタンである。キャンセルボタン908は、配信予約の内容をキャンセルするためのボタンである。この例では、第2の配信サーバ143が提供する画面として説明したが、第1のPC(不図示)がこの配信予約画面901を提供することも可能である。
図9は、第2の配信サーバ143の配信情報テーブル1001を示す。第2の配信サーバ143は、ユーザが配信予約画面901で予約した内容に基づいて配信情報テーブル1001を作成し、DB141に保持させる。デバイスID1002は、配信予約対象であるネットワークデバイスのネットワークデバイスIDを示す。配信開始時刻1003は、配信予約画面901でユーザが予約した配信開始時刻を示す。配信対象グループバージョン1004は、配信予約画面901でユーザが予約したグループバージョンを示す。配信対象モジュール名1005は、配信対象グループバージョン1004に対応する配信対象モジュールとそれらのバージョンを示す。第2の配信サーバ143は、図9のバージョン管理テーブルを参照し、自身が配信するモジュールを判断する。ファイルサイズ1006には、配信対象モジュールのファイルサイズの合算値が格納される。各モジュールのファイルサイズはバージョン管理テーブル1101に登録されている。
図10は、バージョン管理テーブル1101を示す。バージョン管理テーブル1101は、第1の配信サーバ133、第2の配信サーバ143の双方に登録されている適切なバージョンの組み合わせであるバージョン管理テーブルを示す。このテーブルは配信サーバ133,143のDB134,141に記憶されている。本テーブルでは、1102に示すように、行にグループバージョンが示され、列に各モジュールが示される。この例では、グループバージョン1103乃至1106が示される。各グループバージョンの列には、対応するモジュールのバージョンとファイルサイズが登録されている。尚、バージョン管理テーブル1101は、第1の配信サーバ133、第2の配信サーバ143で同様の情報を共有しており、定期的に双方の配信サーバより更新される。
図11は、第2の配信サーバ143の情報テーブル1201を示す。対象配信サーバ1202には、配信を担うサーバ名が格納される。本テーブルは、第1の配信サーバ133が参照するため、対象は第2の配信サーバ143となる。平均通信速度1203は、第2の配信サーバ143がソフトウェアを配信する際の平均通信速度をMbps(bits per second)で示している。本実施例では、第2の配信サーバ143は、10Mbpsの平均通信速度を持つ。インストール所要時間1204は、画像形成装置が第2の配信サーバにより配信されたソフトウェアをインストールする際の所要時間を示す。本実施例では、デバイスは、一分あたり、100MBのソフトウェアをインストールする。
図12は、第1の配信サーバ133のDB134が備える配信情報テーブル1301を示す。第1の配信サーバ133は、第2の配信サーバ143から配信情報を通知されると、通知された配信情報をDB134に保持する。デバイスID1302は、配信予約対象であるネットワークデバイスのデバイスIDを示す。配信開始時刻1303は、第1のコントローラ740に係るソフトウェアの配信開始時刻を示す。配信対象グループバージョン1304は、デバイスに配信するグループバージョンを示す。配信対象モジュール1305には、配信対象グループバージョン1304に対応する配信対象モジュールとバージョンが格納される。第1の配信サーバ133は、図9のバージョン管理テーブルを参照し、自身が配信するモジュールと配信開示時刻を判断する。
図13は、本発明におけるソフトウェア配信処理のシーケンス図を示す。本シーケンスでは、ネットワークデバイスに第2のコントローラ741が接続され、第1のコントローラ740と第2のコントローラ741の両方にソフトウェアが配信される例を示す。第2のコントローラがネットワークデバイスとは別の機器として接続されることで該ネットワークデバイスに搭載された際には、当該別の機器を第2の監視装置としている。尚、処理の詳細については、図15乃至図19のフローチャートで説明するため、本シーケンスでは概要説明を行う。以下で説明するシーケンスは、各処理を行う各装置のCPU201,306が、ROM202,307、またはHDD204,309に格納されたプログラムをRAM203,308にロードし実行することで実現される。また、以下の説明では、顧客側のB社のシステムと通信するものとする。
S801において、第2の配信サーバ143は、ユーザから配信予約901を受け付ける。S802において、第2の配信サーバ143は、バージョン管理テーブル1101を参照し、第2の配信サーバ143で配信するソフトウェアを検索する。S803において、第2の配信サーバ143は、配信予約を図9で説明した配信情報テーブル1001に設定する。S804において、第2の配信サーバ143は、配信情報テーブル1001に設定された配信情報と、図11に示す情報テーブル1201を第1の配信サーバ133に送信する。
S805において、第1の配信サーバ133は、バージョン管理テーブル1101を参照し、S804で通知された配信情報を元に、第1の配信サーバ133が配信するソフトウェアを検索する。S806において、第1の配信サーバ133は、情報テーブル1201を参照し、配信情報の合算ファイルサイズから、第2の配信サーバ143側の配信が終了する時間を計算する。S807において、第1の配信サーバ133は、配信予約として第1の配信サーバの配信情報テーブル1301(図12)を設定する。
S808において、第1の配信サーバ133は、配信対象ネットワークデバイスのネットワークデバイスIDを配信ネットワークデバイスとして設定するように監視センタホスト111に指示する。これにより、配信のための設定が、画像形成装置の監視モジュールとして機能する第1の監視装置131がポーリングする第1の監視装置131に対して行われる。具体的には、S809において、監視センタホスト111は、第1の監視装置131のレスポンス用に配信フラグを設定する。配信フラグとは、配信用の情報があることを示すためのフラグである。画像第1の監視装置131は、配信フラグが設定されていれば、第1のクライアントモジュール705に配信サーバに問い合わせを行うように指示を行う。
S810において、第1の監視装置131は、監視センタホスト111に配信フラグの確認を行う。S811において、監視センタホスト111は、第1の監視装置131に配信フラグを返答する。S812において、第1の監視装置131は、第1のクライアントモジュール705に配信予約の取得を指示する。
次に、図14のS813において、第2の監視装置136は、第2の配信サーバ143に配信フラグの確認を行う。S814において、第2の配信サーバ143は、第2の監視装置136に配信フラグをレスポンスとして返す。S815において、第2の監視装置136は、第2のクライアントモジュール712に配信予約の取得を指示する。S816において、第2のクライアントモジュール712は、第2の配信サーバ143に配信情報を問い合わせる。
S817において、第2のクライアントモジュール712は、第2の配信サーバ143から配信情報をダウンロードして設定する。S818において、第2のクライアントモジュール712は、第2の配信サーバ143にソフトウェア配信指示を行う。S819において、第2のクライアントモジュール712は、第2の配信サーバ143から配信対象ソフトウェアのURLを受信する。S820において、第2のクライアントモジュール712は、URLを参照し、第2の配信サーバ143からソフトウェアをダウンロードする。S821において、第2のクライアントモジュール712は、ダウンロードしたソフトウェアをインストールする。S822において、第2のクライアントモジュール712は、第2の配信サーバ143に配信結果を送信する。
一方、S823において、第1のクライアントモジュール705は、第1の配信サーバ133にソフトウェア配信指示を行う。S824において、第1のクライアントモジュール705は、第1の配信サーバ133から配信対象ソフトウェアのURLを受信する。S825において、第1のクライアントモジュール705は、URLを参照し、外部サーバ106からソフトウェアをHDDにダウンロードする。
S826において、第1のクライアントモジュール705は、第2のクライアントモジュール712に配信処理が完了したか問い合わせを行う。S827において、S826の問い合わせの結果が配信完了を示すなら、第1のクライアントモジュール705は、ソフトウェアをインストールする。S828において、第1のクライアントモジュール705は、第1の配信サーバ133に配信結果を送信する。
図15は、配信サーバの予約受付フローを示す。S1401乃至S1408は、第2の配信サーバ143が行う処理のフローを示す。S1401において、第2の配信サーバ143は、ユーザから配信予約を受け付ける。ユーザは第2の配信サーバ143が提供する配信予約画面901を用いて配信予約を行い、配信対象のデバイスID、配信日、配信時刻、配信するソフトウェアのグループバージョンを指定する。
S1402において、第2の配信サーバ143は、配信予約画面901で指定されたグループバージョンを元に、バージョン管理テーブル1101を参照して、配信するソフトウェアを検索する。検索した結果、配信対象モジュールは、グループバージョンV3.1に紐づく、BOOT(第2のコントローラ)のV2.1と、M−CON(第2のコントローラ)のV3.1となる。その結果、第2の配信サーバ143は、以下のような配信情報を決定し、配信情報テーブル1001に登録する。ここでは、下記の配信予約を実行した例を示す。
<配信情報>
配信日:2013/10/1
配信時刻:9:00
配信するソフトウェアのグループバージョン:3.1
配信対象モジュール:BOOT(第2のコントローラ) V2.1、M−CON(第2のコントローラ) V3.1
S1403において、第2の配信サーバ143は、S1402で決定した情報に基づき、配信予約を設定する。この内容は、第2の配信サーバの配信情報テーブル1001に反映される。なお、設定が完了した時点で、第2の配信サーバ143は配信フラグを立てる。S1404において、第2の配信サーバ143は、第2の配信サーバの配信情報テーブル1001に登録された配信情報を第1の配信サーバ133に送信する。
S1405において、第2の配信サーバ143は、第2の監視装置136からポーリング通信を受信する。S1406において、第2の配信サーバ143は、第2の監視装置136に配信フラグをレスポンスとして返す。S1407において、第2の配信サーバ143は、第2のクライアントモジュール712から配信要求を受信する。S1408において、第2の配信サーバ143は、第2のクライアントモジュール712に配信ソフトウェアを提供する。
S1409乃至S1416は、第1の配信サーバが行う処理のフローを示す。S1409において、第1の配信サーバ133は、第2の配信サーバ143からの配信情報を受信する。S1410において、第1の配信サーバ133は配信情報で指定されたグループバージョンを元に、バージョン管理テーブル1101を参照し、第1の配信サーバ133が配信するソフトウェアを検索する。第1の配信サーバ133は、第2の配信サーバ143が配信するソフトウェアの組合せと整合するソフトウェアの組合せを検索する。具体的には、本実施例の場合、配信対象グループバージョンは、3.1である。従って、S1410で検索した結果、配信対象モジュールは、BOOT(第1のコントローラ) V2.1、M−CON(第1のコントローラ) V3.1、ACCON(アクセサリ) V1.4と判定される。
S1411において、第1の配信サーバ133は、第1の配信サーバ133で配信可能なソフトウェアがあると判断した場合、S1412に進み、ないと判断した場合は処理を終了する。S1412において、第1の配信サーバ133は、受信した情報テーブル1201と配信情報のファイルサイズを用いて、第2の配信サーバ143の配信が終了する時間を計算する。
第1の配信サーバ133は、受信した情報テーブル1201を参照し、第2の配信サーバ143の平均通信速度と、ファイルサイズから、以下の式により配信所要時間を計算する。
(式1)
配信ファイルサイズ(MB)/(第2の配信サーバの平均通信速度(Mbps)/8)=配信所要時間(s)
従って、第2の配信サーバの平均通信速度:10Mbps、配信ファイルサイズ:500MBなので、配信所要時間は400秒≒6.7分という結果になる。
次に、配信後にネットワークデバイスがインストールにかかる時間を第2の配信サーバ情報テーブル1201から計算する。インストール所要時間1204を参照すると、100MBあたり、2分を要するので、500MBのソフトウェアのインストール所要時間は、10分と計算できる。従って、6.7分+10分=16.7分が、配信所要時間となる。
S1413において、第1の配信サーバ133は、S1412の結果を踏まえ、配信予約を設定する。この内容は、第1の配信サーバの配信情報テーブル1301に反映される。
<配信情報>
配信日:2013/10/1
配信時刻:9:16.7
配信するソフトウェアのグループバージョン:3.1
配信対象モジュール:BOOT(第1のコントローラ) V2.1、M−CON(第1のコントローラ) V3.1、ACCON(アクセサリ) V1.4
S1414において、第1の配信サーバ133は、配信対象のネットワークデバイスのデバイスID1302を配信予約対象ネットワークデバイスとして設定するように、監視センタホスト111に指示する。S1415において、第1の配信サーバ133は、第1のクライアントモジュール705から配信要求を受信する。S1416において、第1の配信サーバ133は、第1のクライアントモジュール705に配信用のURLを提供する。
図16は、監視センタホスト111による処理フローを示す。S1501において、監視センタホスト111は、第1の配信サーバ133から配信対象のデバイスID1302を受信する。S1502において、監視センタホスト111は、第1の監視装置131のレスポンス用に配信フラグを設定する。配信フラグとは、配信用の情報があることを示すためのフラグである。S1503において、監視センタホスト111は、第1の監視装置131からポーリング通信を受信する。S1504において、監視センタホスト111は、第1の監視装置131に設定した配信フラグを返答する。
図16は、監視装置のポーリング処理フローを示す。監視装置は、監視センタホスト111または第2の配信サーバ143に一定間隔でポーリング確認を行う。S1601乃至1604は、第1の監視装置131による処理フローである。S1601において、第1の監視装置131は、ポーリングの確認時刻になったかどうかを判断する。確認時刻になった場合はS1602に進み、そうでない場合は待機する。S1602において、第1の監視装置131は、監視センタホスト111に配信フラグの確認を行う。S1603において、第1の監視装置131は、監視センタホスト111の返答として、配信フラグの設定を受け取った場合はS1604に進み、受け取っていない場合は、処理を終了する。S1604において、第1の監視装置131は、第1のクライアントモジュール705に配信予約の取得を指示する。
S1605乃至S1608は、第2の配信サーバ143による処理フローである。S1605において、第2の監視装置136は、ポーリングの確認時刻になったかどうかを判断する。確認時刻になった場合は、S1606に進み、そうでない場合は待機する。S1606において、第2の監視装置136は、第2の配信サーバ143に配信フラグの確認を行う。S1607において、第2の監視装置136は、第2の配信サーバ143の返答として、配信フラグ設定を受け取った場合は、処理はS1608に進み、受け取っていない場合は処理を終了する。S1608において、第2の監視装置136は、第2のクライアントモジュール712に配信予約の取得を指示する。
図18は、第2のクライアントモジュールによるソフトウェアのインストールフローを示す。S1701において、第2のクライアントモジュール712は、第2の監視装置136から配信予約の取得指示を受信する。S1702において、第2のクライアントモジュール712は、第2の配信サーバ143に配信予約情報を問い合わせする。S1703において、第2のクライアントモジュール712は、第2の配信サーバ143から配信予約情報をダウンロードして設定する。S1704において、第2のクライアントモジュール712は、配信時刻になったかを確認する。
S1705において、第2のクライアントモジュール712は、第2の配信サーバ143にソフトウェア配信指示を行う。S1706において、第2のクライアントモジュール712は、第2の配信サーバ143から配信対象ソフトウェアのURLを受信する。S1707において、第2のクライアントモジュール712は、URLを参照し、第2の配信サーバ143からソフトウェアをダウンロードする。S1708において、第2のクライアントモジュール712は、URLの参照を完了する。S1709において、第2のクライアントモジュール712は、ソフトウェアをインストールする。
S1710において、第2のクライアントモジュール712は、ソフトウェアのバージョンチェックを行う。S1711において、第2のクライアントモジュール712は、第2の配信サーバ143に配信結果を送信する。S1712において、第2のクライアントモジュール712は、第1のクライアントモジュール705からの配信完了問い合わせを受信する。S1713において、第2のクライアントモジュール712は、適用完了と返答する。
図19は、第1のクライアントモジュールによるソフトウェアのインストールフローを示す。S1714において、第1のクライアントモジュール705は、第1の監視装置131から配信予約の取得指示を受信する。S1715において、第1のクライアントモジュール705は、第1の配信サーバ133に配信予約情報の問い合わせを行う。S1716において、第1のクライアントモジュール705は、第1の配信サーバ133から配信予約情報をダウンロードして設定する。S1717において、第1のクライアントモジュール705は、配信時刻になったかを判断する。配信時刻になった場合、処理はS1718に進み、そうでない場合は待機する。
S1718において、第1のクライアントモジュール705は、第1の配信サーバ133にソフトウェア配信指示を行う。S1719において、第1のクライアントモジュール705は、第1の配信サーバ133から配信対象ソフトウェアのURLを受信する。S1720において、第1のクライアントモジュール705はURLを参照し、外部サーバ106からソフトウェアをHDDにダウンロードする。S1721において、URL参照が完了していれば、処理はS1722に進み、完了していない場合は処理はS1720に戻る。
S1722において、第1のクライアントモジュール705は、第2のクライアントモジュール712に配信処理が完了したか問い合わせを行う。S1723において、第1のクライアントモジュール705は、第2のクライアントモジュール712の配信処理が完了したか判断し、完了したと判断した場合は、処理はS1724に進み、完了していない場合は、処理はS1727に進む。S1724において、第1のクライアントモジュール705はソフトウェアをインストールする。
S1725において、第1のクライアントモジュール705は、ソフトウェアのバージョンチェックを行う。S1726において、第1のクライアントモジュール705は、第1の配信サーバ133に配信結果を送信する。S1727において、第1のクライアントモジュール705は、タイムアウトかどうかを判断し、タイムアウトの場合処理を終了する。そうでない場合は、処理はS1723に戻る。
以上、本発明によれば、画像形成装置に適用されるソフトウェアを異なる配信システムが配信する際に、一方の配信システムが配信するソフトウェアに対応するソフトウェアを、他方の配信システムが適用時間を重ねないように配信することが可能となる。第2のコントローラに係るソフトウェアが配信された後に、適切な時間で、第1のコントローラに係るソフトウェアの配信が行われるため、リブート処理が重なることを防止することができる。
なお、上述の実施形態では、第2の配信サーバ143においてユーザから配信予約を受け付ける例を説明した。当然のことながら、図8に示した画面を用いて、第1の配信サーバ133においてユーザから配信予約を受け付けることも可能である。この場合、第1の配信サーバ133は、予約を受け付けたソフトウェアのファイルサイズから、第1の配信サーバによる配信終了時間を計算する。そして、計算された配信時間に基づいて第2の配信サーバ143が対応するソフトウェアを配信する配信時間を設定し、該設定情報を第2の配信サーバ143に送信する構成としてもよい。第1の配信サーバ133が配信終了した後に第2の配信サーバ143に配信を開始させる場合、S826の処理では、第2の配信サーバ143が第1の配信サーバ133に対しソフトウェアのインストールが終了したかを問い合わせることになる。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。