以下、本発明が適用された実施形態について、[構成および動作]、[効果]、[変形例]、[本発明との対応関係]の順に説明する。
[構成および動作]
(1)全体構成
本発明が適用された、ネットワークを介したサービスの提供が行われるサービス提供システムは、図1に示すように、複合機10,ディレクトリサーバ20,機能サーバ30などからなり、これらがネットワーク(本実施形態ではインターネット等の広域ネットワーク)1を介してデータ通信可能に接続されている。具体的にいうと、複合機10,ディレクトリサーバ20および機能サーバ30は、それぞれルータ(R;周知のブロードバンドルータ)2〜4を介してネットワーク1と接続されている。
複合機10は、制御部11,操作部12,読取部13,記録部14,通信部15,記憶部16,音入力部17および音出力部18などを備えている。
これらのうち、制御部11は、CPU,ROM,RAM等を備え、このCPUが、ROMに記憶されているプログラムに従って複合機10全体を統括制御する。
また、操作部12は、図2に示すように、コピーキー41,スキャナキー42,FAXキー43,サービスキー44,設定キー45,上下左右の方向キー46〜49,OKキー50およびキャンセルキー51,ディスプレイ52などからなるユーザーインターフェースとして構成されている。
図1に説明を戻し、また、読取部13は、スキャナとしての機能を実現するための入力デバイスであり、用紙等のシート状記録媒体に記録(例えば印刷)された画像を読み取り、その画像を表す画像データを生成する。
また、記録部14は、プリンタとしての機能を実現するための出力デバイスであり、画像データの表す画像を用紙等のシート状記録媒体に印刷する。
また、通信部15は、複合機10をネットワーク1に接続すると共に、このネットワーク1を介してデータを送受信するための処理を行う。
また、記憶部16は、図示しないハードディスク等の不揮発性の記憶媒体を備えており、入出力したデータ等を記憶することができる。なお、その記憶媒体にはキャッシュ領域が確保されており、そのキャッシュ領域には通信部15を介して受信したデータ等を一時保存(いわゆるキャッシュ)することができるようになっている。このキャッシュ領域には、キャッシュしているファイルを管理するためのキャッシュ管理情報と、キャッシュしているファイルと、が関連づけられて記憶されている。ここでキャッシュ管理情報について、図31を用いて説明する。図31に示すように、キャッシュ管理情報は、要求先のアドレスであるURL(Uniform Resource Locator)と、そのアドレスのグルーピング情報であるグループID(Group ID)と、キャッシュファイルのファイル名称(Filename)と、キャッシュにファイルを保存した時刻または再取得の指令があった時刻である時間情報(Time)とから構成される。なお、グループIDは任意項目である。また、グループIDは、第一種グループIDと第二種グループIDとに分類され、第一種グループIDはメイングループID(図31に例示したデータでは二つ目のダブルスラッシュ(//)より前の文字列)のみからなり、第二種グループIDはメイングループIDとサブグループID(図31に例示したデータでは二つ目のダブルスラッシュ(//)より後の文字列)とからなる。
図1に説明を戻し、また、音入力部17は、本複合機10が備える図示しないハンドセット(受話器)に設けられたマイクから音を入力し、その音を表す音データ(PCMデータ)を生成する。
そして、音出力部18は、音データ(PCMデータ)の表す音を、図示しないハンドセットに設けられたスピーカ、又は、複合機10本体に設けられた図示しないスピーカから出力する。
ディレクトリサーバ20は、制御部21,通信部22および記憶部23を備えている。
これらのうち、制御部21は、CPU,ROM,RAM等を備え、このCPUが、ROMに記憶されているプログラムに従ってディレクトリサーバ20全体を統括制御する。
また、通信部22は、ディレクトリサーバ20をネットワーク1に接続すると共に、このネットワーク1を介してデータを送受信するための処理を行う。
そして、記憶部23は、図示しないハードディスクを備えており、このハードディスクにデータを記憶する。この記憶部23には、後述するサービス定義情報25を記憶するためのサービス定義情報記憶部24が設けられている。このサービス定義情報25は、XML(eXtensible Markup Language)により記述されたデータであり、この記述内容に従って後述するサービス選択用画面を表示することで(図10(a)参照)、機能サーバ30が提供可能なサービス一覧(各サービスの種類及び要求先アドレス(URL)を提供することができる。なお、このサービス定義情報25における各タグの定義付けを図3に示す。
機能サーバ30は、制御部31,通信部32および記憶部33などを備えている。
これらのうち、制御部31は、CPU,ROM,RAM等を備え、このCPUが、ROMに記憶されているプログラムに従って機能サーバ30全体を統括制御する。なお、この制御部31は、複合機10の制御部11に比べて充分に高性能な構成とされており、複合機10の制御部11では実行困難な処理についても行うことができる。
また、通信部32は、機能サーバ30をネットワーク1に接続すると共に、このネットワーク1を介してデータを送受信するための処理を行う。
そして、記憶部33は、図示しないハードディスクを備えており、このハードディスクにデータを記憶する。この記憶部33は、後述するサービスI/F情報36を記憶するためのサービスI/F情報記憶部34と、それぞれ異なるサービスを提供するための処理を実行するサービスソフトウェア37を記憶するためのサービスソフト記憶部35と、からなる。このサービスI/F情報36は、XMLにより記述されたデータであり、この記述内容に従って後述するパラメータ入力用画面が複合機10に表示されることで(図16参照)、機能サーバ30に対してサービスの提供を要求するための情報(サービスの詳細内容等)の設定を行うインターフェースが実現される。
なお、このサービスI/F情報36における各タグの定義付けを図4に示す。
ここで、複合機10と機能サーバ30との間で行われる通信の一例について、図5のラダーチャートを用いて説明する。
複合機10と機能サーバ30とは、サービス起動からサービス終了までの間、一連の通信処理(セッション)を行う。このセッションにおいて、まず、複合機10は、機能サーバ30に対し、サービス起動を要求する。すると、機能サーバ30は、複合機10に対しセッションIDを送信する。ここで、セッションIDとは、機能サーバ30においてセッションを特定するための識別子であり、以降の通信において、複合機10はリクエストに伴いセッションIDを送信し、機能サーバ30はそのセッションIDに基づきセッションを特定する。これにより、機能サーバ30は、複数のセッションを同時に処理することが可能となる。
複合機10は、セッションIDを受信すると、以降は、本複合機10に対する指令の問い合わせである複合機指令問合せを定期的に行い、これに対する機能サーバ30からの返答という形で指令を受ける。なお、機能サーバ30は、複合機指令問合せに対して送信すべき指令がない場合には、指令がない旨の送信(複合機指令無し)を行う。
この例において、機能サーバ30は、まず、UI(ユーザーインターフェース)ジョブ起動指令を複合機10へ送信する。ここで、UIジョブ起動指令とは、複合機10に設けられるUIデバイス(操作部12)の利用開始を通知するものである。これにより、複合機10と機能サーバ30との間で、UIジョブの通信処理が開始される。このUIジョブの通信処理は、セッションと並行して行われる。また、機能サーバ30から複合機10へは、UIジョブ起動指令に伴い、機能サーバ30においてジョブを特定するためのジョブID(セッションにおいて固有の識別子)が送信される。そして、複合機10は、UIジョブの通信処理において、リクエストに伴いセッションID及びジョブIDを送信し、機能サーバ30は、そのセッションID及びジョブIDに基づきジョブを特定する。これにより、機能サーバ30は、複数のジョブを同時に処理することが可能となる。なお、UIジョブの通信処理の内容については後述する。
続いて、機能サーバ30は、所定のタイミングで、入力ジョブ起動指令を複合機10へ送信する。ここで、入力ジョブ起動指令とは、複合機10に設けられる入力デバイス(読取部13又は音入力部17)の利用開始を通知するものである。これにより、複合機10と機能サーバ30との間で、入力ジョブの通信処理が開始される。そして、この入力ジョブの通信処理も、UIジョブと同様、セッションと並行して行われる。また、機能サーバ30から複合機10へは、入力ジョブ起動指令に伴いジョブIDが送信される。そして、複合機10は、入力ジョブの通信処理において、リクエストに伴いセッションID及びジョブIDを送信し、機能サーバ30は、そのセッションID及びジョブIDに基づきジョブを特定する。なお、入力ジョブの通信処理の内容については後述する。
続いて、機能サーバ30は、所定のタイミングで、出力ジョブ起動指令を複合機10へ送信する。ここで、出力ジョブ起動指令とは、複合機10に設けられる出力デバイス(記録部14又は音出力部18)の利用開始を通知するものである。これにより、複合機10と機能サーバ30との間で、出力ジョブの通信処理が開始される。そして、この出力ジョブの通信処理も、UIジョブや入力ジョブと同様、セッションと並行して行われる。また、機能サーバ30から複合機10へは、出力ジョブ起動指令に伴いジョブIDが送信される。そして、複合機10は、出力ジョブの通信処理において、リクエストに伴いセッションID及びジョブIDを送信し、機能サーバ30は、そのセッションID及びジョブIDに基づきジョブを特定する。なお、出力ジョブの通信処理の内容については後述する。
続いて、機能サーバ30は、所定のタイミングで、出力ジョブを終了することの通知である出力ジョブ終了指令を複合機10へ送信する。
続いて、機能サーバ30は、所定のタイミングで、入力ジョブを終了することの通知である入力ジョブ終了指令を複合機10へ送信する。
続いて、機能サーバ30は、所定のタイミングで、UIジョブを終了することの通知であるUIジョブ終了指令を複合機10へ送信する。
続いて、機能サーバ30は、所定のタイミングで、サービスを終了することの通知であるサービス終了指令を複合機10へ送信する。
以上が、セッションの内容である。
次に、UIジョブの通信処理について説明する。
UIジョブの通信処理において、まず、複合機10は、機能サーバ30にサービスI/F情報36を送信してもらうための要求である「サービスI/F情報送信要求」を機能サーバ30に対して行う。すると、機能サーバ30は、複合機10に対しサービスI/F情報36を送信する。
複合機10は、サービスI/F情報36を受信すると、そのサービスI/F情報36に基づいてパラメータ入力用画面を操作部12のディスプレイ52に表示させる(例えば図16)。
そして、複合機10は、機能サーバ30に対し複合機ジョブ指令問合せを行う。すると機能サーバ30は、複合機10に対しパラメータ要求を送信する。ここで、パラメータ要求とは、サービスの実行に必要なパラメータを複合機10の利用者に設定させるためのものである。
複合機10は、機能サーバ30からパラメータ要求を受信すると、利用者により設定されたパラメータを、機能サーバ30へ送信する。
機能サーバ30は、複合機10からパラメータを受信すると、機能サーバ30が複合機10からの情報を正常に受け取ることができたか否かを表す通知であるサーバ受取状況を送信する。
そして、複合機10は、機能サーバ30から受信したサーバ受取状況により機能サーバ30がパラメータを正常に受信したことを確認すると、機能サーバ30に対し、サービスの状態に関する情報の要求であるサービス状態情報要求を行う。
機能サーバ30は、複合機10からサービス状態情報要求を受信すると、機能サーバ30及びサービスの状態の通知であるサービス状態情報を複合機10へ送信する。
以降は、サービス状態情報要求と、これに対するサービス状態情報の送信が繰り返される。
次に、入力ジョブの通信処理について説明する。
入力ジョブの通信処理において、まず、複合機10は、機能サーバ30に対し、本複合機10の状態に関する情報である複合機状態情報を送信する。すると、機能サーバ30は、複合機10に対し複合機パラメータを送信する。ここで、複合機パラメータとは、UIジョブの通信処理で複合機10の利用者に設定させた入力デバイスのパラメータである。
複合機10は、機能サーバ30から複合機パラメータを受信すると、複合機10が機能サーバ30からの情報を正常に受け取ることができたか否かを表す通知である複合機受取状況を送信する。
そして、機能サーバ30は、複合機10からの複合機受取状況により複合機10が情報を正常に受信したことを確認すると、複合機10に対し、ジョブに対応した入力データの要求である入力データ要求を送信する。ここで、ジョブに対応した入力データとは、スキャンジョブ(読取部13で生成された画像データに関するサービスで実行されるジョブ)であれば読取部13で生成された画像データ、音声入力ジョブ(音入力部17により出力される音を表す音データに関するサービスで実行されるジョブ)であればPCMデータである。
複合機10は、機能サーバ30から入力データ要求を受信すると、入力操作(画像の読み取り操作や音声入力操作)を利用者に促す表示等を行い、その結果生成した入力データを機能サーバ30へ送信する。
機能サーバ30は、複合機10から入力データを受信すると、機能サーバ30及びサービスの状態の通知であるサービス状態情報を複合機10へ送信する。
次に、出力ジョブの通信処理について説明する。
出力ジョブの通信処理において、まず、複合機10は、機能サーバ30に対し、複合機10の状態に関する情報である複合機状態情報を送信する。すると、機能サーバ30は、複合機10に対し複合機パラメータを送信する。ここで、複合機パラメータとは、UIジョブの通信処理で複合機10の利用者に設定させた出力デバイスのパラメータである。
複合機10は、機能サーバ30から複合機パラメータを受信すると、複合機10が機能サーバ30からの情報を正常に受け取ることができたか否かを表す通知である複合機受取状況を送信する。
そして、機能サーバ30は、複合機10からの複合機受取状況により複合機10が情報を正常に受信したことを確認すると、複合機10に対し、出力データを送信する。ここで、出力データとは、印刷ジョブ(記録部14で印刷する画像を表す画像データに関するサービスで実行されるジョブ)であれば画像データ、音声出力ジョブ(音出力部18で出力する音声を表すPCMデータに関するサービスで実行されるジョブ)であればPCMデータである。
複合機10は、機能サーバ30から出力データを受信すると、出力データに基づく出力処理(画像の印刷や音声の出力)を行う。そして、複合機10は、複合機10の状態に関する情報である複合機状態情報を機能サーバ30へ送信する。
機能サーバ30は、複合機10から複合機状態情報を受信すると、機能サーバ30及びサービスの状態の通知であるサービス状態情報を複合機10へ送信する。
次に、複合機10、ディレクトリサーバ20および機能サーバ30の各制御部11,21,31が行う処理について説明する。
(2)ディレクトリサーバ20による処理
まず、ディレクトリサーバ20の制御部21により実行されるディレクトリサーバ処理を図6に基づいて説明する。
このディレクトリサーバ処理は、複合機10からHTTP1.1に基づくHTTPリクエスト(以降、単に「HTTPリクエスト」という。)があると実行が開始される。まず、HTTPリクエストを受信し(S71)。そのHTTPリクエストの内容がサービスの一覧を照会するものであるか否かをチェックする(S72)。ここでHTTPリクエストの内容がサービスの一覧を照会するものであれば(S72:YES)、トップのサービス定義情報25をサービス定義情報記憶部24から読み出し(S73)、S77に移行する。
一方、S72で、HTTPリクエストの内容がサービスの一覧を照会するものでなければ(S72:NO)、HTTPリクエストの内容がサービスの照会であるか否かをチェックする(S74)。ここでHTTPリクエストの内容がサービスを照会するものであれば(S74:YES)、指定されたサービス定義情報25をサービス定義情報記憶部24から読み出し(S75)、S77に移行する。
一方、S74で、HTTPリクエストの内容がサービスを照会するものでなければ(S74:NO)、エラー情報をセットし(S76)、S77に移行する。
S77では、サービス定義情報25またはエラー情報をHTTP1.1に基づくHTTPレスポンス(以降、単に「HTTPレスポンス」という。)として要求もとの複合機10に送信し、本ディレクトリサーバ処理を終了する。
(3)複合機10による処理
次に複合機10の制御部11により実行される各種処理について説明する。
(3−1)複合機処理
まず、複合機10が起動された以降、繰り返し実行される処理である複合機処理を図7に基づいて説明する。
この複合機処理が起動されたら、まず、初期化処理を行う(S102)。
この初期化処理を終えた後、外部からの指令,例えば、操作部12への入力操作やネットワーク1を介した指令信号の入力などが発生したら(S104)、この入力が動作モードをサービスモードへ移行させるための内容であるか否かをチェックする(S106)。ここでは、S104による入力が操作部12のサービスキー44を押下する操作であれば、サービスモードへ移行させるための内容であると判定する。なお、この「サービスモード」とは、以下の処理で示すように、機能サーバ30に対してサービスの提供を要求するための処理を実行するための動作モードである。
S106で、サービスモードへ移行させるための内容でないと判定されたら(S106:NO)、その入力内容に応じて他の動作モードに対する処理(その他のモードの処理)を行った後(S108)、S104へ戻る。
一方、S106で、サービスモードへ移行させるための内容であると判定されたら(S106:YES)、機能サーバ30に要求すべきサービスを指定する方法をユーザに指定させる(S110)。ここでは、図8に示す方法選択画面をディスプレイ52に表示させ、サービスをリストから指定するか(図8における「リストから選択」)、要求先アドレスを直接入力により指定するか(図8における「直接入力」)の選択を促す。この選択画面が表示された後、ユーザは、操作部12により、いずれにより指定するかの選択を行うことができる。
このS110で、リストから指定する旨が選択されたら(S110:YES)、ディレクトリサーバ20にトップのサービス一覧の照会を要求して取得する(S112)。ここでは、ディレクトリサーバ20に対してサービス定義情報25の送信を要求するためのアドレスとして、あらかじめ記憶部16に記憶されたアドレス宛にHTTPリクエストを送信することにより、サービス一覧の照会を要求する。このアドレスに基づいてアクセスを受けたディレクトリサーバ20は、後述するようにトップのサービス定義情報25をHTTPレスポンスにより返信してくる。なお、このHTTPリクエストの送信またはHTTPレスポンス受信は、後述するファイル取得処理がコールされ、そのファイル取得処理の中で必要に応じて行われる。
こうして、トップのサービス一覧の照会を要求した後、ディレクトリサーバ20から返信されたサービス定義情報25を受信したら、このサービス定義情報25に基づいてサービス選択用画面をディスプレイ52に表示させた後(S116)、次の処理(S120)へ移行する。このS116の処理がトップのサービス定義情報25を受信した後に行われる場合には、図9に示すようなトップのサービス定義情報25(XMLの記述)に従って、図10(a)に示すように、表示用タイトル(Title)として「ディレクトリサービス」の文字がディスプレイ52の表示領域上部に配置され、選択可能なカテゴリを表す項目(Link_Title)である「データ保存サービス」,「印刷サービス」および「コピー応用サービス」の文字が表示領域下部に配置されてなるサービスのカテゴリ選択画面の表示を行う。なお、この場合のサービスのカテゴリ選択画面には、カテゴリに対応する別のサービス定義情報25のIDがリンク先として割り当てられており(図9における「Link_Location」参照)、いずれかの項目が選択された際に、その項目に対応するIDのサービス定義情報25がディレクトリサーバ20に要求されることになる。
また、S116の処理がトップ以外のサービス定義情報25を受信した後に行われる場合,具体的な例として、「コピー応用サービス」に関するサービス定義情報25を受信した場合には、図11に示すようなサービス定義情報25(XMLの記述)に従って、図10(b),図10(c)に示すように、表示用タイトル(Title)として「コピー応用サービス」の文字が表示領域上部に配置され、選択可能なサービスを表す項目(Link_Title)である「すかし入りコピー」,「翻訳コピー」,「原稿読み上げ」および「音声テキスト変換」の文字が表示領域下部に配置されてなるサービス選択画面の表示を行う。なお、本実施形態において、表示領域の制約上、すべての項目を一度に表示することができない場合には、画面をスクロールさせることで各項目の配置が上下に移動するように構成されており、図10(b),図10(c)では、そのようなスクロール前後の状態を示している。また、この場合のサービス選択画面には、サービスに対応する別のサービス定義情報25のIDがリンク先として割り当てられており(図11における「Link_Location」参照)、いずれかの項目が選択された際に、その項目に対応するIDのサービスの提供が機能サーバ30に要求されることになる。また、図11に例示するサービス定義情報25にはグループID(GID)として「http://copy−svc.com」が定義されている。
また、上述したS110で、要求先アドレスを直接入力により指定する旨が選択された場合には(S110:NO)、要求先アドレスを入力するための図示しないアドレス入力画面をディスプレイ52に表示させた後(S118)、次の処理(S120)へ移行する。
こうして、サービス選択画面またはアドレス入力画面が表示された以降、ユーザは、操作部12により、いずれかの項目を選択する操作(アドレスを入力する操作),または,サービスモードを終了する操作(停止操作)を行うことができる。
次に、ユーザによる操作部12への入力操作を受け付け(S120)、こうして行われた入力操作がリンクを選択する操作であるか否かをチェックする(S122)。ここでは、S116にて表示されたサービス選択画面における項目を選択する操作,または,S118にて表示されたアドレス入力画面にアドレスを入力する操作が入力操作として行われた場合に、リンクを選択する操作であると判定する。
このS122で、リンクを選択する操作でないと判定された場合(S122:NO)、その入力操作が停止操作であれば(S124:YES)、S104へ戻ることによりサービスモードとしての処理を終了する。一方、入力操作が停止操作でなければ(S124:NO)、拒否音(ブザー音など)を鳴動させた後(S126)、S120へ戻る。
また、S122で、入力操作がリンクを選択する操作であると判定された場合(S122:YES)、その選択されたリンクがサービスへのリンク,つまり機能サーバ30にサービスの提供を要求するためのIDであるか否かをチェックする(S128)。
このS128で、サービスへのリンクでないと判定された場合,つまり別のサービス定義情報25のIDである場合には(S128:NO)、ディレクトリサーバ20に対してサービス一覧の照会を要求し、該当するサービス定義情報25を受信した後(S130)、S116へ戻ってサービス選択用画面をディスプレイ52に表示させる。このS130においてなされる処理も後述するファイル取得処理がコールされ、そのファイル取得処理の中で必要に応じて行われる。
そして、S128で、サービスへのリンクであると判定された場合には(S128:YES)、後述するセッション処理(図12)を行った後(S132)、S104へ戻ることによりサービスモードとしての処理を終了する。
(3−2)セッション処理
続いて、図7におけるS132であるセッション処理の詳細な処理手順を図12,図13に基づいて説明する。
このセッション処理では、まず、利用するサービスを選択し、サービス定義情報25のLink_Location(アドレスを直接入力した場合には、そのアドレス)に基づきサービスを起動する(S202)。つまり、サービスのアドレス宛にサービス起動指令をHTTPリクエストにより送信することで、ユーザに選択されたサービスを機能サーバ30側において起動させる。このサービス起動指令を受信した機能サーバ30からは、セッションIDがHTTPレスポンスにより返信されてくる。
次に、S204によるサービス起動指令に応じて機能サーバ30から返信されてくるセッションIDを受信する(S204)。なお、以降の処理で送信するHTTPリクエストおよびHTTPレスポンスには、特に明示しない限り、全てセッションIDが含まれた状態で送信されることとし、このHTTPリクエストを受信した機能サーバ30側では、このセッションIDに基づいて通信中のデバイスを管理(周知のセッション管理)するように構成されている。
次に、複合機10に対する指令の有無を問い合わせるための「複合機指令問合せ」をHTTPリクエストにより機能サーバ30へ送信する(S206)。この「複合機指令問合せ」を受信した機能サーバ30は、複合機10に対する指令が発生していれば、その内容を示す指令(指令が発生していない場合には「指令なし」を示す指令)をHTTPレスポンスにより返信してくる。
次に、S206による問い合わせにより返信されてくる指令(複合機指令)を受信したら(S208)、その指令がジョブ起動指令であるか否かを判定する(S210)。この「ジョブ起動指令」とは、後述のように、S202にてサービス起動指令を送信した以降、機能サーバ30側で発生する指令であり、そのタイミングやサービスの内容に応じて「UIジョブ」,「入力ジョブ(スキャンジョブまたはボイスジョブ)」,「出力ジョブ(プリントジョブまたはスピーカジョブ)」のいずれかの起動を指令する内容となっている。なお、このジョブ起動指令には、起動すべきジョブのジョブID、ジョブの種類(UIジョブ、入力ジョブ(スキャンジョブまたはボイスジョブ)、出力ジョブ(プリントジョブまたはスピーカジョブ))およびジョブの通信先アドレスが付加されている。
このS210で、ジョブ起動指令であると判定された場合(S210:YES)、ジョブの起動に必要なリソースを確保した後(S212)、以下に示すS252〜S266によりジョブ起動指令で指令されたジョブの起動を行う。
以下に、このS252〜S266について図13に基づいて説明する。
ここでは、まず、ジョブ起動指令で指令されたジョブがUIジョブであるか否かをチェックし(S252)、UIジョブであると判定された場合には(S252:YES)、ジョブ起動指令に付加されたジョブIDおよび通信先アドレスに基づいてUIジョブを起動した後(S254)、次の処理(図12におけるS214)へ移行する。このUIジョブは、このS254の処理で起動された以降、他の処理と並行して実行されるものであり、これについては、後述する「UIジョブ」(図14)において詳述する。
また、ジョブ起動指令で指令されたジョブがUIジョブでないと判定された場合(S252:NO)、その指令されたジョブが入力ジョブの一種であるスキャンジョブ(S256:YES)またはボイスジョブ(S256:NO,S262:YES)であれば、ジョブ起動指令に付加されたジョブIDおよび通信先アドレスに基づいて入力ジョブを起動した後(S260)、次の処理(図12におけるS214)へ移行する。この入力ジョブは、このS260の処理で起動された以降、他の処理と並行して実行されるものであり、これについては、後述する「入力ジョブ」(図17)において詳述する。
また、ジョブ起動指令で指令されたジョブが上述したいずれのジョブでないと判定された場合(S258:NO)、その指令されたジョブが出力ジョブの一種であるプリントジョブ(S262:YES)またはスピーカジョブ(S262:NO,S264:YES)であれば、ジョブ起動指令に付加されたジョブIDおよび通信先アドレスに基づいて出力ジョブを起動した後(S266)、次の処理(図12におけるS214)へ移行する。この出力ジョブは、このS266の処理で起動された以降、他の処理と並行して実行されるものであり、これについては、後述する「出力ジョブ」(図18)において詳述する。
なお、ジョブ起動指令で指令されたジョブが上述したいずれのジョブでもないと判定された場合(S264:NO)、ジョブの起動を行うことなく、次の処理(図12におけるS214)へ移行する。
こうして、ジョブの起動を行った後、図12へ戻り、所定インターバル待機した後(S214)、S206へ戻る。
また、上述したS210で、ジョブ起動指令でないと判定された場合(S210:NO)、S208で受信した指令がジョブ終了指令であるか否かをチェックする(S216)。この「ジョブ終了指令」とは、後述のように、図13における各処理でジョブを起動した以降、このジョブが終了した際に機能サーバ30側で発生する指令である。なお、このジョブ終了指令には、その終了したジョブのジョブIDが付加されている。
このS216で、ジョブ終了指令であると判定された場合(S216:YES)、このジョブ終了指令に付加されたジョブIDのジョブを停止させる(該当するジョブに対して終了指示を渡す)と共に、このジョブを起動する前にS212にて確保したリソースを解放した後(S218)、S214へ移行する。
また、上述したS216で、ジョブ終了指令でないと判定された場合(S216:NO)、「指令なし」を示すものであるか否かをチェックし(S220)、「指令なし」を示すものであれば(S220:YES)、S214へ移行する。一方、「指令なし」を示すものでなければ(S220:NO)、セッション終了指令であるか否かを判定する(S222)。この「セッション終了指令」とは、この複合機10に対するサービスの提供が終了した際に機能サーバ30側で発生する処理である。
そして、このS222で、セッション終了指令であると判定された場合(S222:YES)、本セッション処理を終了する。一方、S208で受信した指令が上述したいずれの指令でもない場合、エラーを報知するための処理(指令エラーの処理)を行った後(S224)、本セッション処理を終了する。このS224では、エラーである旨のメッセージをディスプレイ52に表示させることによりエラーを報知する。
(3−3)UIジョブ
続いて、図13におけるS254にて起動されるUIジョブの処理手順を図14に基づいて説明する。
このUIジョブが開始されると、まず、機能サーバ30にサービスI/F情報36を送信してもらうための要求である「サービスI/F情報送信要求」およびその要求対象を特定するURLを送信用データとして所定領域へ書き込む。この送信用データは、後述するS315やS321の処理で利用される情報であり、このデータとして書き込まれている情報がセッションID及びジョブIDとともに機能サーバ30へ送信される。なお、送信用データの格納領域は、複合機10の制御部11内に備えられた図示しないRAMの所定領域に設けられている(S301)。
続いて、上述したセッション処理からの終了指示(図12のS218において出力される指示)があったか否かを判定する(S303)。
このS303で、セッション処理からの終了指示があったと判定された場合には(S303:YES)、セッション処理に対してUIジョブの終了を通知した後(S305)、本UIジョブを終了する。なお、このセッション終了指令は、上述した図12のセッション処理のS218における処理の中で受信される。S218の内部ではこの指令を受信することによりジョブが完全に停止したと判断し、以降の手順を実施する。
一方、セッション処理からの終了指示がないと判定された場合には(S303:NO)、操作部12がビジー状態であるか否かを判定する(S309)。ここでは、各ジョブの起動中に立つ(「1」がセットされる)ように設定されたビジーフラグFuに基づき、ビジーフラグFuが立っていればビジー状態であると判定し、ビジーフラグFuが下りて(「0」がセットされて)いればビジー状態でないと判定する。
このS309で、ビジー状態であると判定された場合には(S309:YES)、操作部12のビジー状態が解除されるまで,つまりビジーフラグFuが下りるまで待機した後(S307)、S309へ戻る。一方、ビジー状態でないと判定した場合には(S309:NO)、ビジーフラグFuを立てて(S311)、本UIジョブにより操作部12がビジー状態になっているものとする。
次に、上述した送信用データは「サービスI/F情報送信要求」であるか否かを判定する(S313)。なお、S301を経て最初にこのS313を処理する場合は、送信用データは「サービスI/F情報送信要求」であるが、それ以降にS313を処理する場合は、送信用データはサービスI/F情報送信要求でないこともある。送信用データが「サービスI/F情報送信要求」であると判定した場合は(S313:YES)、後述するファイル取得処理を実行し(S315)、サービスI/F情報36を得る。そして、複合機10に対する指令の問い合わせである「複合機ジョブ指令問合わせ」を送信用データとして格納領域へ書き込み(S315)、ビジーフラグFuを下げて(S319)、上述したS303に処理を戻す。
一方、S313において、送信用データが「サービスI/F情報送信要求」でないと判定した場合は(S313:NO)、送信用データとして格納領域に書き込まれている情報をセッションIDおよびジョブIDを伴わせて機能サーバ30へHTTPリクエストにより送信する(S321)。このHTTPリクエストを受信した機能サーバ30は、本UIジョブに対する指令があれば、その内容を示す複合機指令をHTTPレスポンスにより返信してくる。なお、本UIジョブに対する指令がなければ、「指令なし」を示す複合機指令をHTTPレスポンスにより返信してくる。
次に、HTTPレスポンスにより返信されてくる複合機指令を受信すると(S323)、その指令がパラメータ要求であるか否かを判定する(S325)。この「パラメータ要求」とは、機能サーバ30で実行される後述のUIジョブ処理(図28)におけるS914の処理で送信される要求であり、このパラメータ要求に付加されたサービスI/F情報36に基づいて、サービスの利用に必要なパラメータの指定要求がユーザに対してなされる。
このS325で、パラメータ要求であると判定された場合(S325:YES)、サービスI/F情報36に基づきパラメータ入力用画面を操作部12のディスプレイ52に表示させ、パラメータの設定するための入力操作を利用者に促す(S327)。
ここで、サービスI/F情報36のうち、翻訳コピーサービスに対応するサービスI/F情報36を例示してパラメータ入力画面が表示される様子について説明する。なお、翻訳コピーサービスとは、複合機10における読取部13で読み取られた画像データに基づき、機能サーバ30が、この画像データで表される画像に対してOCR(Optical Character Recognition )処理でテキストを認識し、そのテキストを所定の言語に翻訳した内容の画像を表す画像データを生成して提供することにより、この画像を複合機10における記録部14に印刷させるサービスである。
まず、図15に示すようなXMLの記述内容に従って、図16(a)に示すように、表示用タイトル(Title)として「翻訳コピー」の文字が表示領域上部に配置され、その下に入力項目(Disp_Name)として「言語選択」の文字が配置され、さらにその下に入力項目「言語選択」について選択可能なパラメータを表す項目(Disp_Select)である「英語→日本語」及び「日本語→英語」の文字が配置されたパラメータ入力用画面を表示させる。ここで、「翻訳コピー」に関する入力項目(Disp_Name)としては、上記表示されている「言語選択」に加え、「スキャナ設定」,「印刷設定」及び「コメント」があるが、この時点では、「言語選択」についての入力項目のみが表示される。これは、単にディスプレイ52の大きさの制限によるものであり、この状態から操作部12を操作する(左右の方向キー48,49)ことで、図16(b)〜図16(e)に示すように、表示領域下部に表示される入力項目を、「スキャナ設定」,「印刷設定」及び「コメント」を含む4種類の中から切り替えることができる。
なお、これら入力項目について選択可能なパラメータについて説明すると、「スキャナ設定」について選択可能なパラメータを表す項目(Disp_Select)としては、「普通の文字」及び「細かい文字」の文字が表示されることとなる(図16(b)参照)。ここでいう「普通の文字」とは、読取部13のパラメータである解像度(読取解像度)を300×300dpiに設定することを意味し、「細かい文字」とは、解像度を600×600dpiに設定することを意味する。
また、「印刷設定」について選択可能なパラメータを表す項目(Disp_Select)としては、「印刷速度優先」,「普通」及び「高精細」の文字が表示されることとなる。なお、ディスプレイ52の大きさの制限により、「高精細」については、初めは表示されていないが(図16(c)参照)、画面をスクロールさせることで表示される(図16(d)参照)。ここでいう「印刷速度優先」とは、記録部14のパラメータである解像度(印刷解像度)を200×200dpiに設定することを意味し、「普通」とは、解像度を300×300dpiに設定することを意味し、「高精細」とは、解像度を600×600dpiに設定することを意味する。
そして、「コメント」については、「コメント」の文字の下に、コメントの入力欄が表示され、設定されている文字列(Default_String)が入力された状態となる(図16(e)参照)。こうして、コメントとして入力欄に入力された文字列は、例えば、印刷画像のヘッダやフッタに記載されるという形で利用される。
なお、図15に示すXMLには、グループID(GID)として「http://copy−svc.com//001」が定義されている。
こうして、パラメータ入力用画面を表示させた後、ユーザにより、各入力項目に対するパラメータの指定,入力欄への文字列の入力,および,指定内容を確定するための操作などが行われると、これらの入力情報(パラメータ)を送信用データとして格納領域へ書き込む(S329)。そして、ビジーフラグFuを下げて(S319)、S303へ処理を戻す。
次に、上述したS323において受信した複合機指令が、パラメータ要求でないと判定された場合には(S325:NO)、S323にて受信した複合機指令がサービス状態情報の表示指令であるか否かを判定する(S331)。ここで言う「サービス状態情報の表示指令」とは、機能サーバ30側で発信される指令(図28におけるS936で送信される指令)であり、機能サーバ30において問題なくサービスに関わる処理が実行されていること、または、問題がありサービスを停止することなどを報知するための指令である。
このS331で、サービス状態情報の表示指令であると判定されたら(S331:YES)、このサービス状態情報に基づく表示をディスプレイ52に行わせた後(S333)、機能サーバ30で稼働するサービスの稼働状態の新たな情報を要求する「サービス状態情報要求」を送信用データとして格納領域へ書き込む(S335)。そして、ビジーフラグFuを下げて(S319)、S303へ処理を戻す。
また、S331において、サービス状態情報の表示指令でないと判定されたら(S331:NO)、S323にて受信した複合機指令が状態情報要求であるか否かをチェックする(S337)。この「状態情報要求」とは、複合機10の状態に関する情報送信を要求するための指令である。
このS337で、状態情報要求であると判定されたら(S337:YES)、複合機10の状態に関する情報(例えば、用紙なし、カバーオープンなどを示す情報)を送信用データとして格納領域を書き込む(S339)。そして、ビジーフラグFuを下げて(S319)、S303へ処理を戻す。
また、S337で、状態情報要求でないと判定されたら(S337:NO)、S323にて受信した複合機指令がサーバ受取状況を表す指令であるか否かをチェックする(S341)。この「サーバ受取状況」とは、機能サーバ30が複合機10からの情報を正常に受け取ることができたか否かを通知するために送信する指令である。
このS341で、サーバ受取状況であると判定されたら(S341:YES)、このサーバ受取状況の内容が異常受取(NG)を表すものである場合(S343:YES)、このサーバ受取状況を送信する契機となった情報を送信用データとして格納領域へ書き込む(S346)。そして、ビジーフラグFuを下げて(S319)、S303へ処理を戻す。一方、異常受取(NG)を表すものでない場合(S343:NO)、上述した「サービス状態情報要求」を送信用データとして格納領域へ書き込み(S345)、ビジーフラグFuを下げて(S319)、S303へ処理を戻す。
一方、S341において、S323で受信した複合機指令が「サーバ受取状況」でないと判定されたら(S341:NO)、S323にて受信した複合機指令が「指令なし」を示すものか否かをチェックし(S338)、「指令なし」を示すものであれば(S338:YES)、複合機10に対する指令の問い合わせである「複合機指令ジョブ指令問合わせ」を送信用データとして格納領域へ書き込み(S349)、ビジーフラグFuを下げて(S319)、S303へ処理を戻す。一方、「指令なし」を示すものでなければ(S338:NO)、エラー処理を行った後(S347)、ビジーフラグFuを下げて(S319)、S303へ処理を戻す。このエラー処理の具体的な内容は、エラーが発生した旨を表す情報を送信用データとして格納領域に書き込んだり、ディスプレイ52にエラー発生の旨を表示させること等である。
(3−4)入力ジョブ
続いて、図13におけるS260にて起動される入力ジョブの処理手順を図17に基づいて説明する。この入力ジョブは、上述したセッション処理およびUIジョブと並列動作する処理である。
この入力ジョブが開始されると、まず、入力デバイスがビジー状態であるか否かを判定する(S402)。ここでは、入力デバイスがビジー状態である場合に立つ(「1」がセットされる)ように設定されたビジーフラグFiに基づき、ビジーフラグFiが立っていればビジー状態であると判定し、ビジーフラグFiが下りて(「0」がセットされて)いればビジー状態でないと判定する。なお、ここでいう「入力デバイス」とは、読取部13で生成された画像データに関するサービスの提供を受ける場合であれば読取部13であり、音入力部17により出力される音を表す音データに関するサービスを受ける場合であれば音入力部17のことである。
このS402で、入力デバイスがビジー状態であると判定された場合には(S402:YES)、入力デバイスのビジー状態が解除されるまで待機した後(S404)、S402の処理へ戻る一方、入力デバイスがビジー状態ではないと判定された場合には(S402:NO)、ビジーフラグFiを立てる(S406)。
次に、複合機10の状態に関する情報である複合機状態情報を、セッション処理におけるS260にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S408)。この複合機状態情報を受信した機能サーバ30は、後述のように、図14におけるS321にて機能サーバ30に送信しておいたパラメータに基づく情報である複合機パラメータをHTTPレスポンスにより返信してくる。
次に、S408にて送信した複合機状態情報に対して複合機パラメータが返信されてきたら(S410)、セッション処理から終了指示が渡されたか否か(セッションからの終了指示があるか)を判定する(S412)。この終了指示は、図12におけるS218により終了するジョブが入力ジョブである場合において、セッション処理から本入力ジョブに渡される指示である。
このS412で、セッション処理から終了指示が渡されていないと判定された場合には(S412:NO)、S410にて返信されてきた複合機パラメータを正常に受信できていなければ(S414:NO)、機能サーバ30からの情報を正常に受け取ることができない旨(異常受取(NG)である旨)を通知するための複合機受取状況を、セッション処理におけるS260にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S416)。この複合機受取状況を受信した機能サーバ30は、後述のように、再度、複合機パラメータをHTTPレスポンスとして返信してくるため、このS416の後、S410へ戻る。
一方、S410にて複合機パラメータを正常に受信できていれば(S414:YES)、機能サーバ30からの情報を正常に受け取ることができた旨(正常受取(OK)である旨)を通知するための複合機受取状況を、セッション処理におけるS260にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S418)。この複合機受取状況を受信した機能サーバ30は、後述のように、機能サーバ30側で処理すべきデータの送信を要求するための入力データ要求を返信してくる。
次に、複合機受取状況を受信した機能サーバ30から入力データ要求が返信されてきたら(S420)、S412と同様に、セッション処理から終了指示が渡されたか否かを判定する(S422)。
このS422で、セッション処理から終了指示が渡されていないと判定された場合には(S422:NO)、S420にて返信されてきた入力データ要求を正常に受信できていなければ(S424:NO)、S416と同様に、異常受取(NG)である旨を通知するための複合機受取状況を機能サーバ30へ送信する(S426)。この複合機受取状況を受信した機能サーバ30は、後述のように、再度、入力データ要求を返信してくるため、このS426の後、S420へ戻る。
一方、S420にて返信されてきた入力データ要求を正常に受信できていれば(S424:YES)、機能サーバ30側で処理させるべき入力データを、セッション処理におけるS260にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S428)。ここでは、まず、入力デバイスの設定値をS410にて受信した複合機パラメータで示されるパラメータに変更した後、機能サーバ30側で処理させるべきデータの入力を促すためのデータ入力画面をディスプレイ52に表示させることにより、データを複合機10に入力するための操作をユーザに促す。その後、ユーザによりデータを入力するための操作が行われることにより取得したデータ(入力データ)を、セッション処理におけるS260にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する。具体的な例としては、例えば、「原稿をセットしてOKキーを押してください」,「受話器をとって音声を入力してください」などのメッセージをディスプレイ52に表示し、この後、読取部13または音入力部17により取得されるデータを機能サーバ30へ順次送信する。この入力データを受信した機能サーバ30は、この入力データに基づくデータ処理が正常に終了したか否かを通知するためのサービス状態情報を返信してくる、といった構成が考えられる。
なお、この処理におけるデータの取得方法については、図示されないメモリカードスロットにセットされたメモリーカードから読み出したり、記憶部16における特定の記憶領域から読み出すといった方法であってもよく、その場合には、データの取得先となる記憶領域を指定すべきメッセージをディスプレイ52に表示させればよい。
こうして、入力データを機能サーバ30へ送信した後、S428の処理で変更された入力デバイスの設定値を元に戻し(S430)、その後、機能サーバ30から返信されるサービス状態情報を受信する(S432)。
そして、S432にてサービス情報を受信した後、または、S412,S422でセッション処理から終了指示が渡されていると判定された場合には(S412:YES,S422:YES)、S406にて立てたビジーフラグFiを下ろした後(S434)、セッション処理におけるS260にて渡されたジョブIDと共にセッション処理へ入力ジョブの終了を通知して(S436)、本入力ジョブを終了する。この入力ジョブの終了の通知は、上述した図12のセッション処理のS218における処理の中で受信される。S218内部ではこの指令を受信することでジョブが完全に停止したと判断し、以降の処理手順を実施する。
(3−5)出力ジョブ
次に、図13におけるS266にて起動される出力ジョブの処理手順を図18に基づいて説明する。この入力ジョブは、上述したセッション処理およびUIジョブと並列動作する処理である。
この出力ジョブが開始されると、まず、出力デバイスがビジー状態であるか否かを判定する(S502)。ここでは、出力デバイスがビジー状態である場合に立つ(「1」がセットされる)ように設定されたビジーフラグFoに基づき、ビジーフラグFoが立っていればビジー状態であると判定し、ビジーフラグFoが下りて(「0」がセットされて)いればビジー状態でないと判定する。なお、ここでいう「出力デバイス」とは、記録部14で印刷する画像データに関するサービスの提供を受ける場合であれば記録部14であり、音出力部18により出力される音を表す音データに関するサービスの提供を受ける場合であれば音出力部18のことである。
このS502で、出力デバイスがビジー状態であると判定された場合には(S502:YES)、出力デバイスのビジー状態が解除されるまで待機した後(S504)、S502の処理へ戻る一方、出力デバイスがビジー状態ではないと判定された場合には(S502:NO)、ビジーフラグFoを立てる(S506)。
次に、複合機10の状態に関する情報である複合機状態情報を、セッション処理におけるS266にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S508)。この複合機状態情報を受信した機能サーバ30は、後述のように、図14におけるS321にて機能サーバ30に送信しておいたパラメータに基づく情報である複合機パラメータをHTTPレスポンスにより返信してくる。
次に、S508にて送信した複合機状態情報に対して複合機パラメータが返信されてきたら(S510)、セッション処理から終了指示が渡されたか否か(セッションからの終了指示があるか)を判定する(S512)。この終了指示は、図12におけるS218により終了するジョブが出力ジョブである場合において、セッション処理から本出力ジョブに渡される指示である。
このS512で、セッション処理から終了指示が渡されていないと判定された場合には(S512:NO)、S510にて返信されてきた複合機パラメータを正常に受信できていなければ(S514:NO)、機能サーバ30からの情報を正常に受け取ることができない旨(異常受取(NG)である旨)を通知するための複合機受取状況を、セッション処理におけるS266にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S516)。この複合機受取状況を受信した機能サーバ30は、後述のように、再度、複合機パラメータを返信してくるため、このS516の後、S510へ戻る。
一方、S510にて複合機パラメータを正常に受信できていれば(S514:YES)、機能サーバ30からの情報を正常に受け取ることができた旨(正常受取(OK)である旨)を通知するための複合機受取状況を、セッション処理におけるS266にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S518)。この複合機受取状況を受信した機能サーバ30は、後述のように、図17におけるS428にて送信した入力データに基づいて処理してなるデータ(出力データ)を返信してくる。
次に、複合機受取状況を受信した機能サーバ30から出力データが返信されてきたら(S520)、S512と同様に、セッション処理から終了指示が渡されたか否かを判定する(S522)。
このS522で、セッション処理から終了指示が渡されていないと判定された場合には(S522:NO)、S520にて返信されてきた出力データを正常に受信できていなければ(S524:NO)、S516と同様に、異常受取(NG)である旨を通知するための複合機受取状況を機能サーバ30へ送信する(S526)。この複合機受取状況を受信した機能サーバ30は、後述のように、再度、出力データを返信してくるため、このS526の後、S520へ戻る。
一方、S520にて返信されてきた出力データを正常に受信できていれば(S524:YES)、この出力データを出力デバイスにより出力する(S528)。ここでは、まず、出力デバイスの設定値をS510にて受信した複合機パラメータで示されるパラメータに変更した後、この出力デバイスにより出力データを出力(例えば、画像データが表す画像の印刷や、音データが表す音声の出力)する。
こうして、出力データの出力デバイスによる出力を終えた後、S528で変更された出力デバイスの設定値を元に戻し(S530)、複合機10の状態に関する情報である複合機状態情報を、セッション処理におけるS266にて渡されたジョブIDと共に、HTTPリクエストにより機能サーバ30へ送信する(S532)。この複合機状態情報を受信した機能サーバ30は、後述のように、サービス状態情報を返信してくる。
そして、機能サーバ30から返信されるサービス状態情報を受信した後(S534)、または、S512,S522でセッション処理から終了指示が渡されていると判定された場合には(S512:YES,S522:YES)、S406にて立てたビジーフラグFoを下ろした後(S536)、セッション処理におけるS266にて渡されたジョブIDと共にセッション処理へ入力ジョブの終了を通知して(S538)、本入力ジョブを終了する。この入力ジョブの終了の通知は、上述した図12のセッション処理のS218における処理の中で受信される。S218内部ではこの指令を受信することでジョブが完全に停止したと判断し、以降の手順を実施する。
(3−6)ファイル取得処理
次に、図7におけるS112,S130、図14のS315において起動されるファイル取得処理について図19に基づいて説明する。なお、本ファイル取得処理を終了した場合は起動もとの各処理に戻る。
このファイル取得処理が起動されると、まず、要求されているファイルが記録部14のキャッシュ領域に存在するか否かをチェックする(S151)。具体的にはキャッシュ管理情報のURL項目に記憶されているデータの中に、要求されているURLが存在するか否かをチェックする(図31参照)。この結果、要求されているURLがキャッシュ管理情報の中に存在する場合(S151:YES)、後述するキャッシュ管理情報更新処理1を実行する(S153)。そして、キャッシュから該当ファイルを読み込み(S155)、本ファイル取得処理を終了する。
一方、上述したS151において、要求されているURLがキャッシュ管理情報の中に存在しない場合は(S151:NO)、指定されたファイルを実際に該当サーバから取得する(S157)。そして、その取得したファイルをキャッシュ領域へ記憶させることを試みる。
具体的には、まず、キャッシュ領域が不足しているか否かをチェックする(S159)。キャッシュ領域が不足している場合には(S159:YES)、後述する削除ファイル決定処理1を実行し(S161)、キャッシュ領域から削除するファイルを決定する。その後、削除ファイル決定処理1の実行結果が「削除不可」であるか否かをチェックし(S163)、実行結果が「削除不可」である場合には(S163:YES)、本ファイル取得処理を終了し、一方、実行結果が「削除不可」でない場合には(S163:NO)、キャッシュから削除ファイル決定処理1(S165)によって決定したファイルをキャッシュ領域から削除する。なお、この際にはキャッシュ管理情報からも該当レコードを削除する。キャッシュ領域からファイルを削除し終えると(S165)、上述したS159へ処理を戻す。
一方、キャッシュ領域が不足していない場合には(S159:NO)、後述するキャッシュ登録処理1を実行し(S167)、取得したファイルをキャッシュ領域に記憶させ、本ファイル取得処理を終了する。
(3−7)キャッシュ管理情報更新処理1
次に、図19のS153において起動されるキャッシュ管理情報更新処理1について図20に基づいて説明する。なお、本キャッシュ管理情報更新処理1を終了した場合は起動もとの処理(図19のS153以降)に戻る。
キャッシュ管理情報更新処理1の実行を開始すると、上述したキャッシュ管理情報(図31参照)の該当レコード、つまり、既に記憶されている要求ファイルに対応するレコードの時間情報(Time)を現在時刻で更新する(S553)。更新が終わると、本キャッシュ管理情報更新処理1を終了する。
(3−8)削除ファイル決定処理1
次に、図19のS161において起動される削除ファイル決定処理1について図21および図22に基づいて説明する。なお、本削除ファイル決定処理1を終了した場合は起動もとの処理(図19のS161以降)に戻る。
この削除ファイル決定処理1が起動されると、まず変数Nに0(ゼロ)をセットすると共にテンポラリリストを初期化する(S351)。そして、変数Nに1だけ足し(S353)、この変数Nを用いて上述したキャッシュ管理情報にN番目のレコードが存在するか否かをチェックする(S355)。
そして、キャッシュ管理情報にN番目のレコードが存在する場合には(S355:YES)、そのN番目のレコードにグループIDが存在するか否かをチェックする(S357)。そのN番目のレコードにグループIDが存在する場合には(S357:YES)、そのグループIDがテンポラリリストに存在するか否かをさらにチェックし(S361)、一方、そのN番目のレコードにグループIDが存在しない場合には(S357:NO)、テンポラリリストにN番目のレコードのURLと時間のペアをコピーし(S359)、上述したS353に処理を戻す。なお、ここで言うテンポラリリストというのは、制御部11のRAM内に設けられた一時的な記憶領域であり、URLと時間情報のペア、または、グループIDと時間情報のペアを複数記憶することができる記憶領域である。
N番目のレコードのグループIDがテンポラリリストに存在するか否かをチェックした結果(S361)、N番目のレコードのグループIDがテンポラリリストに存在する場合には(S361:YES)、N番目のレコードの時間情報とテンポラリリストの該当レコードの時間情報とを比較してN番目のレコードの時間情報の方が新しいか否かをチェックする(S365)。一方、N番目のレコードのグループIDがテンポラリリストに存在しない場合には(S361:NO)、テンポラリリストにN番目のレコードのグループIDと時間情報のペアをコピーし(S363)、上述したS353に処理を戻す。
N番目のレコードの時間情報とテンポラリリストのレコードの時間情報とを比較してN番目のレコードの時間情報の方が新しいか否かをチェックした結果(S365)、N番目のレコードの時間情報の方が新しい場合には(S365:YES)、テンポラリリストの該当レコードをキャッシュ管理情報のN番目のレコードの時間情報によって更新し(S367)、上述したS353に処理を戻す。一方、N番目のレコードの時間情報の方が古い場合には何もせずに上述したS353に処理を戻す。
また、上述したS355で、キャッシュ管理情報にN番目のレコードが存在しない場合(S355:NO)には、変数Nが1であるか否かをチェックする(図22のS369)。そして、変数Nが1である場合には(S369:YES)、キャッシュ領域に記憶されているファイルは全て削除することができない旨を結果とし(S373)、本削除ファイル決定処理1を終了する。
一方、変数Nが1でない場合には(S369:NO)、キャッシュ領域から削除する対象ファイルとして、テンポラリリストの中で最も古い時間情報であるレコードのURLまたはグループIDに関連づけられたファイルを決定結果とする(S371)。そして、グループIDに関連づけられたファイルを決定結果とした場合には、そのグループIDが第一種グループIDであるか否かをチェックする(S375)。そのグループIDが第一種グループIDでない場合には(S375:NO)、本削除ファイル決定処理1を終了するが、そのグループIDが第一種グループIDである場合には(S375:YES)、さらに、テンポラリリストにその第一種グループIDに対応する第二種グループIDが存在するか否かをチェックする(S377)。つまり、第一種グループIDのメイングループIDをメイングループIDとして持つ第二種グループIDを検索する。テンポラリリストの中に対応する第二種グループIDが存在しない場合には本削除ファイル決定処理1を終了するが、テンポラリリストの中に対応する第二種グループIDが存在する場合にはテンポラリリストから上記第一種グループIDを削除すると共に変数Nから1を引く(S379)。そして、S369に移行し、S369以降の処理を繰り返す。
(3−9)キャッシュ登録処理1
次に、図19のS167において起動されるキャッシュ登録処理1について図23に基づいて説明する。なお、本キャッシュ登録処理1を終了した場合は起動もとの処理(図19のS167以降)に戻る。
キャッシュ登録処理1の実行を開始すると、取得したファイルをキャッシュに記憶させると共に、キャッシュ管理情報に新たにレコード(URL、(あればグループID(Group ID))、ファイル名(Filename)、現時時刻(Time)によって構成されるレコード)を作成する(S551)。更新が終わると本キャッシュ登録処理1を終了する。
(4)機能サーバ30による処理
次に、機能サーバ30の制御部31により実行される各種処理について説明する。
(4−1)機能サーバ処理
はじめに、HTTPリクエストが受信される毎に行われる機能サーバ処理の処理手順を図24,図25に基づいて説明する。
この機能サーバ処理が起動されると、まず、受信したHTTPリクエストがサービス起動指令であるか否かをチェックする(S702)。この「サービス起動指令」は、図12におけるS202にて複合機10により送信されるものである。
このS702で、サービス起動指令であると判定された場合には(S702:YES)、セッションIDを生成し、このセッションIDを示す送信データを生成すると共に、サービスの実行のためのリソースを確保して該当するプロセスを起動した後(S708)、次の処理(S734)へ移行する。ここで起動するプロセスとは、後述するセッション処理(図26)のことである。
また、S702で、サービス起動指令でないと判定された場合には(S702:NO)、HTTPリクエストがサービス終了指令であるか否かをチェックする(S710)。
このS710で、サービス終了指令であると判定された場合には(S710:YES)、セッションIDおよびS708にて確保されたリソースを解放し、サービス終了を表す送信データを作成した後(S712)、次の処理(図25のS734)へ移行する。一方、サービス終了指令ではないと判定された場合には(S710:NO)、サービス(セッション又はジョブ)に関する情報が含まれているか否か,具体的には複合機10がセッション処理またはジョブ(UIジョブ,入力ジョブ,出力ジョブ)において送信してきたHTTPリクエストであるか否かをチェックする(S714)。
このS714で、サービスに関する情報が含まれていると判定された場合には(S714:YES)、そのHTTPリクエストを送信してきたプロセス(セッション処理,UIジョブ,入力ジョブ,出力ジョブのいずれか)を特定する(S716)。
このS716によりプロセスを特定できなければ(S718:YES)、エラーを通知するための情報(エラー通知情報)を生成した後(S720)、次の処理(S734)へ移行する。
一方、S716によりプロセスを特定できれば(S718:NO)、その特定したプロセスにHTTPリクエストにて送信されてきた情報を渡す(S722)。
こうして、S722を終えた後、または、S714にてサービスに関する情報が含まれていないと判定された場合(S714:NO)、セッションIDまたはジョブIDに対応する情報の記憶領域を特定する(S724)。
このS724により記憶領域を特定できなければ(S726:YES)、S720へ移行してエラー通知情報を生成して次の処理(S734)へ移行する。一方、記憶領域を特定できれば(S726:NO)、この記憶領域に複合機10へ返信すべき情報が存在しているか否かをチェックする(S728)。
そして、このS728で、返信すべき情報が存在していないと判定されたら(S728:NO)、「指令なし」の情報を生成した後(S730)、次の処理(S734)へ移行する。一方、送信すべき情報が存在していると判定されたら(S728:YES)、その返信情報に基づいて複合機制御指令を生成した後(S732)、次の処理(S734)へ移行する。
こうして、S708,S712,S720.S730,S732にて生成した情報をHTTPレスポンスとして複合機10へ返信する(S734)。ここで返信されるHTTPレスポンスのうち、S708にて生成された送信データは、図12におけるS204にて複合機10が受信するものである。また、S712にて生成されたサービス終了を表す送信データは、図12におけるS208にて複合機10が受信し、S222にてYESで判定されるものである。また、S720にて生成されたエラー通知情報は、図12におけるS208にて複合機10が受信し、S222にてNOと判定され、S224の処理が実施されるものである。また、S730にて生成された「指令なし」の情報は、図12におけるS208にて複合機10が受信し、S220にてYESと判定されるものである。そして、S732にて生成された複合機制御指令は、後述する各ジョブにおいて異なる内容のものとなり、それぞれ複合機10側で対応するジョブにおいて受信されるものである。
そして、サービス制御情報処理(S714〜S732)が実施されたのであれば(S736:YES)、セッションID又はジョブIDに対応するメモリアドレスに「送信済み」をセットした後(S738)、本機能サーバ処理を終了する。一方、サービス制御情報処理が実施されていなければ(S736:NO)、メモリアドレスのセットを行うことなく、本機能サーバ処理を終了する。
(4−2)セッション処理
続いて、機能サーバ処理と並行して実行されるセッション処理の処理手順を図26,図27に基づいて説明する。なお、本実施形態においては、翻訳コピーのサービスについてのセッション処理を例に説明する。
このセッション処理が開始されると、まず、初期化処理を行う(S802)。
次に、サービス側UIジョブを起動する(S804)。このUIジョブは、本セッション処理と並行して実行される処理であって、詳細な処理手順は後述する。
次に、UIジョブの起動指令を複合機指令として出力する(S806)。ここでは、ジョブIDおよび通信先アドレスと共にUIジョブの起動指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に起動指令として送信されることとなる。この起動指令は、図12におけるS208にて複合機10側で受信され、これに基づいて、複合機10側においてUIジョブが起動されることとなる(図13のS254)。
次に、複合機10側からのパラメータの入力が完了したか否かをチェックする(S808)。上述したS804にて起動したUIジョブにおいては、後述のように、複合機10側からパラメータを取得し、その旨を本セッション処理に対して通知してくるように構成されている。そのため、このS808では、このUIジョブからのパラメータ取得の通知がなされた場合に、複合機10側からのパラメータの入力が完了したと判定する。
このS808で、パラメータの入力が完了していないと判定された場合には(S808:NO)、UIジョブが停止したか否かをチェックする(S810)。上述したS804にて起動したUIジョブにおいては、後述のように、複合機10側からのパラメータの取得が正常に行われなかった場合に、UIジョブ自体を停止(終了)すると共に、その旨を本セッション処理に対して通知してくるように構成されている。そのため、このS810では、このUIジョブからの停止の通知がなされた場合に、UIジョブが停止したと判定する。
このS810で、UIジョブが停止していないと判定された場合(S810:NO)、S808へ戻る一方、UIジョブが停止していると判定された場合(S810:YES)、後述するS848へ移行する。
また、S808で、パラメータの入力が完了していると判定された場合には(S808:YES)、サービス側入力ジョブの一種であるスキャンジョブを起動する(S812)。このスキャンジョブは、本セッション処理と並行して実行される処理であって、詳細な処理手順は後述する。
次に、スキャン(入力)ジョブの起動指令を複合機指令として出力する(S814)。ここでは、ジョブIDおよび通信先アドレスと共にスキャンジョブの起動指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に起動指令として送信されることとなる。この起動指令は、図12におけるS208にて複合機10側で受信され、これに基づいて、複合機10側において入力ジョブが起動されることとなる。
次に、複合機10側でスキャナ(読取部13)の準備が完了したか否かをチェックする(S816)。上述したS812にて起動したスキャンジョブにおいては、後述のように、複合機10側においてスキャナの準備が完了したことの通知を受け、その旨を本セッション処理に通知してくるように構成されている。そのため、このS816では、このスキャンジョブからのスキャナの準備が完了したことの通知がなされた場合に、複合機10側でスキャナの準備が完了したと判定する。
このS816で、複合機10側でスキャナの準備が完了していないと判定された場合には(S816:NO)、スキャンジョブが停止したか否かをチェックする(S818)。上述したS812にて起動したスキャンジョブにおいては、後述のように、複合機10側からスキャナの準備が完了したことの通知を正常に受けられなかった場合に、スキャンジョブ自体を停止(終了)すると共に、その旨を本セッション処理に対して通知してくるように構成されている。そのため、このS818では、このスキャンジョブからの停止の通知がなされた場合に、スキャンジョブが停止したと判定する。
このS818で、スキャンジョブが停止していないと判定された場合(S818:NO)、S816へ戻る一方、スキャンジョブが停止していると判定された場合(S818:YES)、後述するS844へ移行する。
また、S816で、スキャナの準備が完了していると判定された場合には(S816:YES)、サービス側出力ジョブの一種である印刷ジョブを起動する(S820)。この印刷ジョブは、本セッション処理と並行して実行される処理であって、詳細な処理手順は後述する。
次に、印刷(出力)ジョブの起動指令を複合機指令として出力する(S822)。ここでは、ジョブIDおよび通信先アドレスと共に印刷ジョブの起動指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に起動指令として送信されることとなる。この起動指令は、図12におけるS208にて複合機10側で受信され、これに基づいて、複合機10側において出力ジョブが起動されることとなる(図13のS266)。
次に、複合機10側で印刷準備(記録部14)の準備が完了したか否かをチェックする(S824)。上述したS820にて起動した印刷ジョブにおいては、後述のように、複合機10側において印刷準備が完了したことの通知を受け、その旨を本セッション処理に通知してくるように構成されている。そのため、このS824では、この印刷ジョブからの印刷準備が完了したことの通知がなされた場合に、複合機10側で印刷準備が完了したと判定する。
このS824で、複合機10側で印刷準備が完了していないと判定された場合には(S824:NO)、印刷ジョブが停止したか否かをチェックする(S826)。上述したS820にて起動した印刷ジョブにおいては、後述のように、複合機10側から印刷準備が完了したことの通知を正常に受けられなかった場合に、印刷ジョブ自体を停止(終了)すると共に、その旨を本セッション処理に対して通知してくるように構成されている。そのため、このS826では、この印刷ジョブからの停止の通知がなされた場合に、印刷ジョブが停止したと判定する。
このS826で、印刷ジョブが停止していないと判定された場合(S826:NO)、S824へ戻る一方、印刷ジョブが停止していると判定された場合(S826:YES)、後述するS840へ移行する。
また、S824で、印刷準備が完了していると判定された場合には(S824:YES)、複合機10側から取得された入力データを読み出す(S828)。上述したS812にて起動したスキャンジョブにおいては、後述のように、複合機10から、この複合機10の読取部13にて読み取られた画像データを取得するように構成されているため、このS828では、こうして取得されて所定の記憶領域に格納されたデータ(入力データ)のうち、1頁分に相当するデータ領域を読み出す。
次に、S828にて読み出された入力データに対してOCR,翻訳,印刷レイアウトなどの処理を施してなる画像データを生成する(S830)。ここでは、まず、S828にて読み出された入力データに対してOCR処理を施すことにより、この入力データで表される画像に含まれるテキスト部分を認識する。次に、このテキスト部分に対して翻訳処理を行うことによりテキスト部分を所定の言語で表現されたテキストに変換する。なお、ここでの翻訳処理は、上述したS804にて起動したUIジョブにおいて取得されるパラメータに基づいて行われるものであり、このパラメータで示される言語への変換が行われることとなる。そして、こうして認識されたテキスト部分について、所定の印刷レイアウトを設定してなる印刷用の画像データを生成する。
次に、S830にて生成された画像データを出力する(S832)。ここでは、ジョブIDおよび通信先アドレスと共にS830にて生成された画像データを、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に出力データとして送信されることとなる。この出力データは、図18におけるS520にて複合機10側で受信され、これに基づいて出力データで示される画像の記録部14による記録が行われる。
次に、S828にて全ての入力データ(全ページ分のデータ領域)についての読み出しが完了したか否かをチェックし(S834)、完了していなければ(S834:NO)、S828へ戻る一方、完了していれば(S834:YES)、S832による出力データの出力(記憶領域への書き込み)が終了したか否かをチェックする(S836)。
このS836で、出力データの出力が完了していなければ(S836:NO)、S828へ戻る一方、出力データの出力が完了していれば(S836:YES)、印刷(出力)ジョブの終了指令を複合機指令として出力する(S838)。ここでは、ジョブIDと共に印刷ジョブの終了指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に終了指令として送信されることとなる。この終了指令は、図12におけるS208にて複合機10側で受信され、これに基づいて、複合機10側において出力ジョブが停止(終了)されることとなる(図12のS218)。
こうして、印刷ジョブの終了指令を出力した後、または、上述したS826で印刷ジョブが停止されたと判定された場合(S826:YES)、S820で起動させたサービス側印刷ジョブを終了させる(S840)。
次に、スキャン(入力)ジョブの終了指令を複合機指令として出力する(S842)。ここでは、ジョブIDと共にスキャンジョブの終了指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に終了指令として送信されることとなる。この終了指令は、図12におけるS208にて複合機10側で受信され、これに基づいて、複合機10側において入力ジョブが停止(終了)されることとなる(図12のS218)。
こうして、スキャンジョブの終了指令を出力した後、または、上述したS818でスキャンジョブが停止されたと判定された場合(S818:YES)、S812で起動させたサービス側スキャンジョブを終了させる(S844)。
次に、UIジョブの終了指令を複合機指令として出力する(S846)。ここでは、ジョブIDと共にスキャンジョブの終了指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に終了指令として送信されることとなる。この終了指令は、図12におけるS208にて複合機10側で受信され、これに基づいて、複合機10側においてUIジョブが停止(終了)されることとなる(図12のS218)。
そして、各ジョブにおいて確保されていたリソースを解放するなどの終了処理を行った後(S850)、本セッション処理を終了する(S852)。このS852では、サービスの終了指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図25におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に終了指令として送信されることとなる。この終了指令は、図12におけるS208にて複合機10側で受信され、これに基づいて、複合機10側においてセッション処理が終了されることとなる(図12のS222)。
(4−3)UIジョブ
続いて、図26におけるS804にて起動されるUIジョブの処理手順を図28に基づいて説明する。
このUIジョブが開始されると、まず、複合機10からサービスI/F情報取得要求をHTTPリクエストにより受信するまで待機し、このサービスI/F情報取得要求を受信したら(S902)、サービスI/F情報36を複合機10へHTTPレスポンスにより送信する(S904)。なお、S904にて送信するサービスI/F情報36は、図14におけるS323にて複合機10で受信される。
続いて、複合機10から複合機ジョブ指令問合わせをHTTPリクエストにより受信するまで待機し、この複合機ジョブ指令問合わせを受信したら(S906)、サービスの実行に必要なパラメータの設定を要求するためのパラメータ要求指令を複合機指令として複合機10へ返信する(S914)。なお、S914にて送信する複合機指令とは、図14におけるS323にて複合機10に受信されるHTTPレスポンスであり、サービスI/F情報36(例えば、翻訳コピーのサービスに対応するもの)が付加されたものである。この複合機指令を受信した複合機10は、パラメータを図14のS321にてHTTPリクエストを送信してくる。
次に、エラーカウントを初期化する(S916)。ここでは、後述のようにパラメータを正常に受信できない自体が連続して発生した回数をカウントするためのカウンタをリセット(「0」をセット)する。
次に、S914にて送信した複合機指令を受信した複合機10からパラメータが送信されてくるまで待機し、パラメータを受信したら(S918)、このパラメータを正常に受信できているか否かをチェックする(S920)。
このS920にてパラメータが正常に受信できていないと判定された場合には(S920:NO)、このような正常に受信できない状況が所定の回数(本実施形態においては2回)連続して発生しているか否かをエラーカウントによるカウント値に基づいてチェックし(S922)、所定の回数連続して発生していなければ(S922:NO)、パラメータを正常に受信できなかった旨(サーバ受取NG;異常受取)を通知するためのサーバ受取状況を出力し(S924)、エラーカウントをカウントアップした後(S926)、S918へ戻る。このS924では、サーバ受取状況を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側にサーバ受取状況として送信されることとなる。このサーバ受取状況は、図14におけるS323にて複合機10側で受信され、これに基づいて、複合機10側においてパラメータの再送信が行われることとなる(図14のS341,S343等)。
また、S922で、正常に受信できない状況が所定の回数連続して発生していたら(S922:YES)、セッション処理に対してUIジョブの停止(終了)を通知した後(S928)、本UIジョブを終了する。このS928による通知は、図26におけるS810にてセッション処理が受けるものである。
また、上述したS920で、パラメータが正常に受信できていると判定された場合には(S920:YES)、パラメータを正常に受信できた旨(サーバ受取OK;正常受取)を通知するためのサーバ受取状況を出力する(S930)。ここでは、サーバ受取状況を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側にサーバ受取状況として送信されることとなる。このサーバ受取状況は、図14におけるS323にて複合機10側で受信され、これに基づいて、複合機10側においてパラメータの再送信が必要ないことが確認される(図14のS341,S343))。
次に、セッション処理に対してパラメータの入力が完了(パラメータを取得)した旨を通知する(S932)。ここでの通知は、図26におけるS808にてセッション処理が受けるものである。
そして、このS932を終えた以降、複合機10からサービス状態情報要求を受信するまで待機し、このサービス状態情報要求を受信したら(S934)、サービス状態情報を出力する(S936)。そして、このような処理を、他の処理(例えば、図27におけるS844)により本UIジョブが停止(終了)されるまで繰り返し行う。このS936では、サービス状態情報を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側にサービス状態情報として送信されることとなる。
(4−4)スキャンジョブ
続いて、図26におけるS812にて起動されるスキャンジョブの処理手順を図29に基づいて説明する。
このスキャンジョブが開始されると、まず、複合機10から複合機状態情報を受信するまで待機し、この複合機状態情報を受信したら(S1002)、図28におけるS906と同様にエラーカウントを初期化した後(S1004)、複合機パラメータを出力する(S1006)。このS1002にて受信される複合機状態情報は、図17におけるS408にて複合機10から送信されてくるHTTPリクエストであり、これに応答する形でS1006にて複合機パラメータをHTTPレスポンスとして返信する。この複合機パラメータは、図28におけるS908にて受信されたものであって、S1002にて受信された複合機状態情報の送信元である複合機10に対応するパラメータである。
この複合機パラメータを受信した複合機10からは、この複合機パラメータを正常に受信できたか否かを示す複合機受取状況が送信されてくるため、この複合機受取状況に基づいて複合機10側で正常に受け取ることができたか否かをチェックする(S1008)。具体的には、複合機受取状況が、異常受取(NG)である旨の内容であれば正常に受け取ることができていないと判定し、正常受取(OK)である旨の内容であれば正常に受け取ることができていると判定する。
このS1008で、複合機10側で複合機パラメータを正常に受け取ることができていないと判定された場合(S1008:NO)、このような正常に受信できない状況が所定の回数(本実施形態においては2回)連続して発生しているか否かをエラーカウントによるカウント値に基づいてチェックし(S1010)、所定の回数連続して発生していなければ(S1010:NO)、エラーカウントをカウントアップした後(S1012)、S1006へ戻る。
また、S1010で、正常に受信できない状況が所定の回数連続して発生していたら(S1010:YES)、セッション処理に対してスキャンジョブの停止(終了)を通知した後(S1014)、異常終了を通知するための通知指令をサービス状態情報として出力する(S1016)。このS1014による通知は、図26におけるS818にてセッション処理が受けるものである。また、S1016では、通知指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に通知指令として送信されることとなる。この通知指令は、図17におけるS410にて複合機10側で受信される。
また、上述のS1008で、複合機10側で複合機パラメータを正常に受け取ることができていると判定された場合(S1008:YES)、複合機パラメータの受信をもって複合機10側でスキャナ(読取部13)の準備が完了しているものとし、セッション処理に対してスキャナの準備完了を通知する(S1018)。この通知は、図26におけるS816にてセッション処理が受けるものである。
次に、機能サーバ30側で処理すべきデータの送信を要求するための入力データ要求を出力する。ここでは、入力データ要求を、返信情報を格納する記憶領域に書き込む処理を行う(S1020)。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に入力データ要求として送信されることとなる。この入力データ要求は、図17におけるS420にて複合機10側で受信され、これにより、ユーザの操作を受けて入力データが送信されてくる。
こうして、入力データ要求を受信した複合機10から入力データを受信したら(S1022)、この入力データの受信が正常に終了していれば(S1024:YES)、正常終了を通知するための通知指令をサービス状態情報として出力した後(S1026)、本スキャンジョブを終了する。このS1026では、通知指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に通知指令として送信されることとなる。この通知指令は、図17におけるS432にて複合機10側で受信される。
一方、入力データの受信が正常に終了しなければ(S1024:NO)、S1016へ移行し、異常終了を通知するための通知指令をサービス状態情報として出力した後、本スキャンジョブを終了する。この通知指令は、図17におけるS432にて複合機10側で受信される。
(4−5)印刷ジョブ
続いて、図26におけるS820にて起動される印刷ジョブの処理手順を図30に基づいて説明する。
この印刷ジョブが開始されると、まず、複合機10から複合機状態情報を受信するまで待機し、この複合機状態情報を受信したら(S1102)、図28におけるS906と同様にエラーカウントを初期化した後(S1104)、複合機パラメータを出力する(S1106)。このS1102にて受信される複合機状態情報は、図18におけるS508にて複合機10から送信されてくるHTTPリクエストであり、これに応答する形でS1106にて複合機パラメータをHTTPレスポンスとして返信する。この複合機パラメータは、図28におけるS908にて受信されたものであって、S1102にて受信された複合機状態情報の送信元である複合機10に対応するパラメータである。
この複合機パラメータを受信した複合機10からは、この複合機パラメータを正常に受信できたか否かを示す複合機受取状況が送信されてくるため、図29におけるS1008と同様、この複合機受取状況に基づいて複合機10側で正常に受け取ることができたか否かをチェックする(S1108)。
このS1108で、複合機10側で複合機パラメータを正常に受け取ることができていないと判定された場合(S1108:NO)、このような正常に受信できない状況が所定の回数(本実施形態においては2回)連続して発生しているか否かをエラーカウントによるカウント値に基づいてチェックし(S1110)、所定の回数連続して発生していなければ(S1110:NO)、エラーカウントをカウントアップした後(S1112)、S1106へ戻る。
また、S1110で、正常に受信できない状況が所定の回数連続して発生していたら(S1110:YES)、セッション処理に対して印刷ジョブの停止(終了)を通知した後(S1114)、異常終了を通知するための通知指令をサービス状態情報として出力する(S1116)。このS1114による通知は、図26におけるS826にてセッション処理が受けるものである。また、S1116では、通知指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に通知指令として送信されることとなる。この通知指令は、図18におけるS510にて複合機10側で受信される。
また、上述のS1108で、複合機10側で複合機パラメータを正常に受け取ることができていると判定された場合(S1108:YES)、複合機パラメータの受信をもって複合機10側で印刷(記録部14)の準備が完了しているものとし、セッション処理に対して印刷の準備完了を通知する(S1118)。この通知は、図26におけるS824にてセッション処理が受けるものである。セッション処理では、この通知を受けて、図27におけるS828〜S836を行い、印刷データの送信を行うこととなる。
次に、セッション処理にて生成された印刷データ(図27におけるS832)を複合機10が処理可能な印刷データに変換して送信情報を格納する記憶領域に書き込む処理を行う(S1120)。これに基づいて図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に通知指令として送信される。この通知指令は図18におけるS520にて複合機10側で受信される。
こうして、送信される印刷データを受信した複合機10は、図18におけるS532にて複合機状態情報をHTTPリクエストにより送信してくる。
こうして、印刷データを受信した複合機10から複合機状態情報を受信したら(S1122)、この複合機状態情報の受信が正常に終了していれば(S1124:YES)、正常終了を通知するための通知指令をサービス状態情報として出力した後(S1126)、本印刷ジョブを終了する。このS1126では、通知指令を、返信情報を格納する記憶領域に書き込む処理を行う。これに基づいて、図24におけるS732にて複合機制御指令が生成され、図25におけるS734にて複合機10側に通知指令として送信されることとなる。この通知指令は、図18におけるS534にて複合機10側で受信される。
一方、複合機状態情報の受信が正常に終了しなければ(S1124:NO)、S1116へ移行し、異常終了を通知するための通知指令をサービス状態情報として出力した後、本印刷ジョブを終了する。この通知指令は、図18におけるS534にて複合機10側で受信される。
[効果]
このように構成されたサービス提供システムにおいて、複合機10は、機能サーバ30によるサービスの提供を受けて機能を実現することとなるが、これに先立ち、ディレクトリサーバ20からサービス定義情報25のファイルを取得する。また、機能サーバ30からもサービスI/F情報36のファイルを取得する。これらのファイルの取得は、上述したファイル取得処理(図19参照)によって行われ、その処理の中で、取得しようとしているファイルがキャッシュ領域に存在すれば、実際にサーバからのファイル取得を行わずにキャッシュ領域に存在するファイルを代わりに用いる。そして、キャッシュ領域にファイルが存在せずに新たにサーバからファイルを取得した場合には、キャッシュ領域にファイルを記憶させておく。しかし、無限にキャッシュ領域にファイルを記憶させておくことはできないため、キャッシュ領域に記憶されているファイルを適切に削除する必要がある。
そこで、本サービス提供システムでは、削除すべきファイルか否かの判断をグループID単位で行う(図21、図22参照)。このため、例えばたまたま一度だけ取得したサービスI/F情報36のファイルによって再利用可能性の高いサービス定義情報25のファイルがキャッシュ領域から削除される可能性が減り、ファイルの再取得を行う確率も低減する。つまり、サーバの処理負荷の軽減やネットワーク帯域の使用率の軽減につながる。また、複合機10の使用者にとっても、過去に利用したことがある同一のグループIDを有するファイル同士の利用時におけるレスポンスの差が軽減され、複合機10の使用者の使い勝手も向上する。
また、本サービス提供システムでは、キャッシュからファイルを削除する条件として、最も過去に利用されたファイルから削除するようになっているため(図22のS375)、より利用頻度が高いと推測される新しいファイルがキャッシュに残るため、キャッシュの利用効率が高い。
また、グループIDは、第一種グループID(メイングループIDのみから構成されるもの)と第二種グループID(メイングループIDとサブグループIDとの結合から構成されるもの)との2種類に分けて設定することもできるようになっている。そして、共通のメイングループIDを有する第一種グループIDと第二種グループIDとにおいては、両IDそれぞれに対応するファイルがキャッシュ領域に記憶される場合には削除に制限が課される。具体的には、このような場合に第一種グループIDに対応するファイルが先にキャッシュ領域から削除されることが制限される(図22のS375〜S379)。
このため、上記実施形態で言えば、図15に示したサービスI/F情報36よりも図11に示したサービス定義情報25が先にキャッシュ領域から削除されることがない。したがって、より使用頻度の高い図15に示したサービスI/F情報36がキャッシュ領域に長く残り、上記効果が得られる。
[変形例]
以上、本発明の実施の形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
例えば、上記実施形態においては、本発明における端末装置として、複合機10に適用した構成を例示したが、機能サーバ30により提供されるサービスを受けて機能を実現できる端末装置であれば、複合機以外の装置として、例えば、プリンタ装置,スキャナ装置,ファクシミリ装置などに適用することも可能である。
また、サービスI/F情報36が設定を要求するパラメータとしては、上記実施形態で例示したもの(解像度等)に限らず、サービスの内容に応じて様々なものが考えられる。例えば、モノクロ/カラーの選択、トナーの濃さ(印刷濃度)、音声のボリューム(音量)等が挙げられる。
また、上記実施形態のサービス提供システムでは、複合機10、ディレクトリサーバ20及び機能サーバ30をそれぞれ1台ずつ備えた構成を例示しているが、このような構成はあくまでも説明を容易にするための構成例にすぎず、サービス提供システムは、これ以外にも様々な構成をとることが可能である。例えば、本発明が適用されたサービス提供システムにおいて、複合機10は複数設けられていてもよい。具体的には、複数の複合機10が、共通のディレクトリサーバ20からのサービス定義情報25を受信し、共通の機能サーバ30にサービスを要求するようにすることができる。
また、本発明が適用されたサービス提供システムにおいて、ディレクトリサーバ20は複数設けられていてもよい。具体的には、例えば、トップのサービス定義情報25を送信するディレクトリサーバ20と、各カテゴリのサービス定義情報25を送信するディレクトリサーバ20とを、別々のサーバで構成することも可能である。
また、本発明が適用されたサービス提供システムにおいて、機能サーバ30は複数設けられていてもよい。具体的には、例えば、サービスI/F情報36を送信する機能サーバ30と、サービスを実行する機能サーバ30とを、別々のサーバで構成することも可能である。また、サービスを実行する機能サーバ30についても、例えば、セッション処理を実行する機能サーバ30と、ジョブ処理を実行する機能サーバ30とを、別々のサーバで構成することも可能である。一方、例えば、複数種類のサービスについて、サービスAを実行する機能サーバ30、サービスB〜Dを実行する機能サーバ30、サービスE,Fを実行する機能サーバ30、というように、複数の機能サーバ30が各自のサービスを実行するというように構成することもできる。この場合、サービスI/F情報36は、例えば、サービスを実行する機能サーバ30がそのサービスに対応するサービスI/F情報36を送信するようにしてもよく、サービスを実行する機能サーバ30とは別の機能サーバ30が送信するようにしてもよい。
また、ディレクトリサーバ20またはディレクトリサーバ20の一部構成要素,および,機能サーバ30または機能サーバ30の一部構成要素が、単一の装置として構成されていてもよい。
また、ディレクトリサーバ20(またはディレクトリサーバ20の一部構成要素)や機能サーバ30(または機能サーバ30の一部構成要素)が、本サービス提供システムを構成する複合機10に備えられた構成としてもよい。
また、キャッシュ領域に記憶するファイルを管理するキャッシュ管理情報について上記実施形態では、要求先のアドレスであるURL(Uniform Resource Locator)と、そのアドレスのグルーピング情報であるグループID(Group ID)と、キャッシュファイルのファイル名称(Filename)と、キャッシュにファイルを保存した時刻または再取得に指令があった時刻を時間情報(Time)とによって構成されていたが(図31参照)、時間情報(Time)の代わりに、指令の頻度(Frequency)を用いるようになっていてもよい(図32参照)。
以下、この場合における、キャッシュ管理情報更新処理1の代わりに実行されるキャッシュ管理情報更新処理2、削除ファイル決定処理1の代わりに実行される削除ファイル決定処理2、キャッシュ登録処理1の代わりに実行されるキャッシュ登録処理2、そして、新たに追加される頻度更新処理について相違点を中心に説明する。
(a)キャッシュ管理情報更新処理2
まず、図19のS153において起動されるキャッシュ管理情報更新処理2について図33に基づいて説明する。なお、本キャッシュ管理情報更新処理2を終了した場合は起動もとの処理(図19のS153以降)に戻る。
キャッシュ管理情報更新処理2の実行を開始すると、上述したキャッシュ管理情報(図32参照)の該当レコード、つまり、既に記憶されている要求ファイルに対応するレコードの頻度(Frequency)に100を足す(S557)。更新が終わると、本キャッシュ管理情報更新処理2を終了する。
(b)削除ファイル決定処理2
次に、図19のS161において起動される削除ファイル決定処理2について図33および図34に基づいて説明する。なお、本削除ファイル決定処理2を終了した場合は起動もとの処理(図19のS161以降)に戻る。
この削除ファイル決定処理1が起動されると、まず変数Nに0(ゼロ)をセットすると共にテンポラリリストを初期化する(S451)。そして、変数Nに1だけ足し(S353)、この変数Nを用いて上述したキャッシュ管理情報にN番目のレコードが存在するか否かをチェックする(S455)。
そして、キャッシュ管理情報にN番目のレコードが存在する場合には(S455:YES)、そのN番目のレコードにグループIDが存在するか否かをチェックする(S457)。そのN番目のレコードにグループIDが存在する場合には(S457:YES)、そのグループIDがテンポラリリストに存在するか否かをさらにチェックし(S461)、一方、そのN番目のレコードにグループIDが存在しない場合には(S457:NO)、テンポラリリストにN番目のレコードのURLと頻度のペアをコピーし(S459)、上述したS453に処理を戻す。なお、ここで言うテンポラリリストというのは、制御部11のRAM内に設けられた一時的な記憶領域であり、URLと頻度のペア、または、グループIDと頻度のペアを複数記憶することができる記憶領域である。
N番目のレコードのグループIDがテンポラリリストに存在するか否かをチェックした結果(S461)、N番目のレコードのグループIDがテンポラリリストに存在する場合には(S461:YES)、N番目のレコードの頻度とテンポラリリストの該当レコードの頻度とを比較してN番目のレコードの頻度の方が新しいか否かをチェックする(S465)。一方、N番目のレコードのグループIDがテンポラリリストに存在しない場合には(S461:NO)、テンポラリリストにN番目のレコードのグループIDと頻度のペアをコピーし(S463)、上述したS453に処理を戻す。
N番目のレコードの頻度とテンポラリリストのレコードの頻度とを比較してN番目のレコードの頻度の方が新しいか否かをチェックした結果(S465)、N番目のレコードの頻度の方が新しい場合には(S465:YES)、テンポラリリストの該当レコードをキャッシュ管理情報のN番目のレコードの頻度によって更新し(S467)、上述したS453に処理を戻す。一方、N番目のレコードの頻度の方が古い場合には何もせずに上述したS453に処理を戻す。
また、上述したS455で、キャッシュ管理情報にN番目のレコードが存在しない場合(S455:NO)には、変数Nが1であるか否かをチェックする(図34のS469)。そして、変数Nが1である場合には(S469:YES)、キャッシュ領域に記憶されているファイルは全て削除することができない旨を結果とし(S477)、本削除ファイル決定処理2を終了する。
一方、変数Nが1でない場合には(S469:NO)、キャッシュ領域から削除する対象ファイルとして、テンポラリリストの中で頻度の値が最も小さいレコードのURLまたはグループIDに関連づけられたファイルを決定結果とする(S471)。しかし、その頻度というのが100より大きい場合は決定結果をキャンセルして(S473)、S477に移行する。一方、その頻度というのが100より小さい場合はS475に移行する。
S475では、決定結果としたグループID(URLだった場合は本ステップをキャンセル(S476:NO))が第一種グループIDであるか否かをチェックする(S475)。そのグループIDが第一種グループIDでない場合には(S475:NO)、本削除ファイル決定処理2を終了するが、そのグループIDが第一種グループIDである場合には(S475:YES)、さらに、テンポラリリストにその第一種グループIDに対応する第二種グループIDが存在するか否かをチェックする(S479)。つまり、第一種グループIDのメイングループIDをメイングループIDとして持つ第二種グループIDを検索する。テンポラリリストの中に対応する第二種グループIDが存在しない場合には本削除ファイル決定処理2を終了するが、テンポラリリストの中に対応する第二種グループIDが存在する場合にはテンポラリリストから上記第一種グループIDを削除すると共に変数Nから1を引く(S481)。そして、S469に移行し、S469以降の処理を繰り返す。
(c)キャッシュ登録処理2
次に、図19のS167において起動されるキャッシュ登録処理2について図36に基づいて説明する。なお、本キャッシュ登録処理2を終了した場合は起動もとの処理(図19のS167以降)に戻る。
キャッシュ登録処理2の実行を開始すると、取得したファイルをキャッシュに記憶させると共に、キャッシュ管理情報(図32参照)に新たにレコード(URL、(あればグループID(Group ID))、ファイル名(Filename)、頻度(Frequency)=100によって構成されるレコード)を作成する(S555)。更新が終わると本キャッシュ登録処理2を終了する。
(d)頻度更新処理
次に、複合機10の電源投入と同時に起動して実行を開始する頻度更新処理について図37に基づいて説明する。なお、頻度更新処理は電源が投入されている間、実行され続ける。
頻度更新処理の実行を開始すると、まず、キャッシュ管理情報(図32参照)の全レコードの頻度(Frequency)を2で割る(S559)。なお、小数点以下は切り捨てる。
そして、24時間、本頻度更新処理は待機し、24時間が経過すると再びS559のステップを実行する。
以上が、キャッシュ管理情報のおける時間情報(Time)の代わりに頻度(Frequency)を用いた場合の キャッシュ管理情報更新処理2、削除ファイル決定処理2、キャッシュ登録処理2、頻度更新処理についての説明である。
また、他の変形例としては、例えば、一般的にWebの仕組みに適用してもよい。具体的には、図39に示すようなリンク構造を有するWebページにおいて、図40に示すように、メインページのHTMLにおいてMETAタグを用いてGROUPID(第一種グループID)を設定し、図41に示すように、交通案内ページのHTMLにおいてMETAタグを用いてGROUPID(第二種グループID)を設定する。このように設定すれば、メインページと交通案内ページとがキャッシュ領域に記憶されている場合、メインページのみがキャッシュ領域から削除されてしまうということが発生しない。つまり、キャッシュに登録された以降は、新たにキャッシュに他のページが登録されたとしても、メインページにアクセスする際のレスポンスの方が交通案内ページにアクセスする際のレスポンスよりも劣ることがなくなる。
[本発明との対応関係]
以上説明した実施形態において、複合機10が本発明における端末装置であり、ディレクトリサーバ20および機能サーバ30が本発明におけるサーバである。
また、通信部22,通信部32が本発明におけるサーバ側通信手段であり、記憶部16,33が本発明におけるサーバ側記憶手段であり、制御部21,31が本発明おけるサーバ側制御手段であり、通信部15が本発明の端末側通信手段であり、記憶部16が本発明の端末側記憶手段であり、制御部11が本発明の端末側制御手段である。
また、グループIDが本発明のグルーピング情報に相当する。
10…複合機、11…制御部、12…操作部、13…読取部、14…記録部、15…通信部、16…記憶部、17…音入力部、18…音出力部、20…ディレクトリサーバ、21…制御部、22…通信部、23…記憶部、24…サービス定義情報記憶部、25…サービス定義情報、30…機能サーバ、31…制御部、32…通信部、33…記憶部、34…サービスI/F情報記憶部、35…サービスソフト記憶部、36…サービスI/F情報、37…サービスソフトウェア、41…コピーキー、42…スキャナキー、43…FAXキー、44…サービスキー、45…設定キー、46…方向キー、48…方向キー、49…右キー、50…OKキー、51…キャンセルキー、52…ディスプレイ。