本発明の一実施形態について図1から図28に基づいて説明すると以下の通りである。以下では、本発明に係る複合機制御システムの一実施形態について説明する。図2は、本実施形態に係る複合機制御システムの概略を示す図である。
本実施形態に係る複合機制御システムは、図2に示すように、複合機1と複数の制御装置2…を含んでおり、これらの装置が通信ネットワークを介して接続されている。もちろん、複合機制御システムに含まれる複合機の台数は複数台であってもよく、また、複合機制御システムに含まれる制御装置の台数が1台であってもよい。
本実施形態において、制御装置2は、複合機1に対して、複合機1が実行可能な各種アプリケーションプログラム(例えば、OCRプログラムや翻訳プログラムなど)を、通信ネットワークを介して提供する。これにより、複合機1は、工場出荷時にはインストールされていなかった各種プログラムを必要に応じて取得して実行することができる。また、工場出荷後にプログラムがアップデートされた場合であっても、制御装置2から必要に応じて最新バージョンのプログラムを取得して実行することができる。
また、制御装置2は、通信ネットワークを介して複合機1に実行指示を送信することにより、複合機1の処理を制御することができる。さらに、制御装置2は、複合機1が有する機能を連携させた連携処理を行わせることができるようになっている。
図3は、複合機1のハードウェア構成を示すブロック図である。図3に示すように、複合機1は、操作部3、制御部(コンピュータ)100、記憶部(コンピュータ)105、原稿読取部110、画像形成部115、および通信部120を備え、これらの各部はデータバスによって接続されている。
操作部3は、ユーザからの入力を受け付けるためのものであり、後述する操作パネル6および入力部5を含んでいる。原稿読取部110は、スキャナ111および原稿搬送部112を含んでおり、原稿に印刷された文字や画像などを画像データとして読み取ることができる。
画像形成部115は、用紙などのシートに対して、入力画像データに対応する画像(文字/写真/グラフィック)を印刷するためのものであり、印刷機構116および用紙トレイ117などを含んでいる。通信部120は、制御装置2などの外部の装置との間で通信を行うためのインターフェイスである。
制御部100は、CPU101および専用プロセッサ102を含んでいる。そして、記憶部105は、RAM106、ROM107、およびHDD108を含んでいる。
複合機1では、この制御部100のCPU101が、記憶部105に格納された各種プログラムを実行することにより、様々な機能を実現している。すなわち、CPU101が原稿読取部110の制御プログラムを実行することにより、原稿読取処理が実行される。また、CPU101が画像形成部115の制御プログラムを実行することにより、画像形成(印刷)処理が実行され、CPU101が通信部120の制御プログラムを実行することにより、各種データの送受信などの通信処理が実行される。さらに、複合機1では、CPU101がアプリケーションプログラムを実行することにより、OCRおよび翻訳などの画像処理も実行される。
図4は、複合機1に備えられた操作部3の拡大図である。図4に示されるように、操作部3は、ユーザに対して操作画面を表示するための操作パネル(表示部)6と、ユーザ入力を受け付ける入力部5とを備えている。なお、操作パネル6は、タッチパネルシステムを採用しており、入力部5を兼ねている。
なお、複合機1は、上記操作部3の代わりに、もしくは、操作部3と兼用して、UI装置と接続可能であってもよい。この場合、複合機1に接続される該UI装置に操作画面が表示される。
図5は、制御装置2のハードウェア構成を示すブロック図である。図5に示すように、制御装置2はコンピュータであり、UI部125、制御部130、記憶部135、外部記憶装置140、および通信部145を備え、これらの各部はデータバスによって接続されている。
UI部125は、ユーザからの入力を受け付けたり、ユーザに対して情報を通知したりするためのものであり、キーボード126、マウス127、および表示装置128を含んでいる。通信部145は、複合機1などの外部の装置との間で通信を行うためのインターフェイスである。
制御部130は、CPU131および専用プロセッサ132を含んでいる。そして、記憶部135は、RAM136、ROM137、およびHDD138を含んでいる。また、外部記憶装置140は、CD/DVD141およびFDD142を含んでいる。
複合機1では、この制御部130のCPU131が、記憶部135に格納された各種プログラムを実行することにより、様々な機能を実現している。すなわち、CPU131がUI部125の制御プログラムを実行することにより、ユーザから情報の入力を受け付ける処理およびユーザへ情報を通知する処理が実行される。また、CPU131が通信部145の制御プログラムを実行することにより、各種データの送受信などの通信処理が実行される。さらに、複合機1では、CPU101がアプリケーションプログラムを実行することにより、OCRおよび翻訳などの画像処理も実行される。
なお、複合機1と制御装置2とが接続される通信ネットワークとしては、インターネット、電話線、シリアルケーブル、または、他の有線回線もしくは無線回線などの通信回線が利用できる。
制御装置2は、複合機1の様々な機能を制御するために、複合機1が提供している1つまたは複数のWebサービスを使用してもよい。Webサービスとは、装置の機能をネットワークを通じて外部から利用できるようにするプログラム処理のことであり、通常SOAPが用いられる。
一方、複合機1は、Webサーバである当該制御装置2にアクセスし、操作画面のデータを制御装置2から取得して操作パネル6に表示させる。すなわち、複合機1は、ユーザと対話することができる。これにより、複合機1は、制御装置2に対して操作画面データを要求するだけで操作画面を表示することができ、操作画面データ自体を管理する必要がない。
このような構成により、本実施形態の複合機制御システムでは、制御装置2から、複合機1に新たな機能を追加したり、複合機1の動作を自在に制御したりすることができるので、柔軟なシステムを構築することができる。
また、複合機1は、後述するように、外部に公開するAPI(Application Program Interface)(実行指示)を機種によらず共通にしている。これにより、制御装置2は、複合機1の機種によらず、共通した制御指示を複合機1に出力することができ、制御装置2内に組み込むプログラムの開発を容易に行うことが可能になっている。なお、APIとは、ソフト開発の際に使用できる命令と、その命令によって実行される手続きとの関係を定めた規約(関数)の集合のことである。
複合機1と制御装置2とは、操作画面データの要求/応答に関する通信に、HTTP、または、SSL(Secure Socket Layer)を使用したHTTPSを利用する。ここで、HTTPSを利用するとセキュリティを向上させることができる。また、これらの通信で用いられるマークアップ言語としては、HTML(Hypertext Markup Language)、XML(eXtensible Markup Language)、WML(Wireless Markup Language)、XHTML(eXtensible HyperText Markup Language)、および/または、他の言語からなる用語が挙げられる。
なお、XMLは、HTMLと同様の手軽さでデータ送受信できる文書構造の記述言語であり、(a)利用者が文書中の文字列に意味付けできる、(b)特定のソフトウェアに依存しない、(c)プログラミングが容易である、などのメリットがある。
一方、制御装置2が複合機1を制御する際の制御指示の通信については、XMLなどのマークアップ言語を用いたSOAP(Simple Object Access Protocol)などのオブジェクト間通信プロトコルを用いて行われる。SOAPは、XMLとHTTPなどをベースとした、データやサービスを呼び出すためのプロトコルで、システムとシステムとを連携させることができる。
以下に、制御装置2および複合機1の構成について説明する。
(制御装置の構成)
図6は、本実施形態に係る制御装置2の機能構成を示すブロック図である。図6に示されるように、制御装置2は、OS部21、Webサーバ部22、MFP制御ロジック部23、連携モジュール24、アプリケーション部25を備えている。これらの各部は、図5に示した制御部130および記憶部135を含むハードウェアと、記憶部135に格納されたプログラムからなるソフトウェアとが協働することにより実現される。
OS部21は、コンピュータシステムを管理し、基本的なユーザ操作環境を提供するオペレーティングシステム(OS)に従った処理を行うブロックである。OSとしては、Windows(登録商標)やLinuxなどがある。
Webサーバ部22は、HTTP(hypertext transfer protocol)(またはHTTPS)やSOAP(simple object access protocol)を用いた通信を行うものである。Webサーバ部22は、複合機1からHTTPリクエストを受信するとともに、当該HTTPリクエストに対応するHTTPレスポンスを送信する。Webサーバ部22は、例えば、Apacheのようなソフトウェアに従った動作を行うブロックである。
MFP制御ロジック部23は、複合機1の操作画面(UI)の表示制御および複合機1に備わった各種機能に基づいた処理の実行制御、ならびに複合機1へのプログラムの提供を行うものである。MFP制御ロジック部23は、情報受付部231、画面データ記憶部232、UI制御部233、制御指示テーブル記憶部234、複合機機能制御部(複合機制御手段)235、アプリケーション指示部236、複合機プログラム送信部(プログラム送信手段)237、送信プログラム記憶部(送信プログラム記憶手段)238、プログラム変換部(プログラム変換手段)239を備えている。
画面データ記憶部232は、複合機1の操作パネル6に表示される各種操作画面のデータを記憶するものである。
UI制御部233は、情報受付部231からの指示に応じて、操作画面データを画面データ記憶部232から読み出し、Webサーバ部22を介して複合機1に出力するものである。なお、UI制御部233は、HTTP(またはHTTPS)を用いて、操作画面データを複合機1に送信する。
制御指示テーブル記憶部234は、複合機1に実行させる処理の内容と、当該内容の処理を実行させるための、複合機1が受け付け可能な制御指示(その中には実行指示も含まれる)との対応関係が示された制御指示テーブルを格納するものである。
図8は、制御指示テーブルの一例を示す図である。図8に示されるように、制御指示テーブルでは、例えば、処理「スキャン」と、その制御指示(実行指示)「JobCreate」、「ExecuteScan」および「JobClose」とが対応付けられている。また、制御指示テーブルでは、1つの処理に複数の制御指示が対応付けられている場合、各制御指示の出力順序も示されている。
なお、制御指示テーブルに示された制御指示は、後述するように、複合機1のOpenI/F層19が外部に公開しているAPI(第1API)を呼び出すための第1制御コマンドの組となっている。これらのコマンドは、複合機1の機種に依存しない共通のコマンドとなっている。
複合機機能制御部235は、情報受付部231からの指示に応じて、複合機1に対する制御指示を制御指示テーブル記憶部234から読み出すとともに、Webサーバ部22を介して複合機1に送信するものである。なお、複合機機能制御部235は、SOAPを用いて、制御指示を複合機1に送信する。
なお、複合機機能制御部235が送信する制御指示は、複合機1に対して、当該複合機1が実行可能な各種処理の実行を命令するものである。複合機1は、この制御指示を受信すると、制御指示に応じたプログラムをCPU101に実行させることにより、自機の有する各種機能に基づいた処理を実行する。従って、複合機機能制御部235が送信する制御指示は、複合機1に対するプログラムの実行指示であるともいえる。
アプリケーション指示部236は、情報受付部231からの指示に応じて、アプリケーション部25に、アプリケーションプログラムに基づいた各種処理を開始するよう指示するものである。
送信プログラム記憶部238は、複合機1のCPU101が実行可能なプログラムである複合機用プログラムを複数格納している。この複合機用プログラムの内容は特に限定されないが、例えば、スキャン画像の傾き補正するための傾き補正プログラム、スキャン画像に対して文字認識を行うOCRプログラム、および文字認識によって取得した英文を和文に翻訳する英日翻訳プログラムなどが挙げられる。
さらに、送信プログラム記憶部238は、上述した複数の複合機用プログラムの所在やバージョン情報を管理するために、複合機用プログラム管理テーブルも有している。図7は、複合機用プログラム管理テーブルの一例を示す図である。図7に示されるように、複合機用プログラム管理テーブルでは、複合機用プログラムごとに、プログラムの識別子、プログラムの名称、プログラムのバージョン情報、プログラムの格納アドレスが示されている。
複合機プログラム送信部237は、情報受付部231からの指示に応じて、送信プログラム記憶部238から複合機用プログラムを読み出し、Webサーバ部22を介して複合機1へ送信するものである。
プログラム変換部239は、情報受付部231からの指示に応じて、送信プログラム記憶部238から複合機用プログラムを読み出し、この複合機用プログラムを自機のCPU131が実行可能な制御装置用プログラムに変換するものである。そして、プログラム変換部239は、変換した制御装置用プログラムを記憶部135に格納する。変換された制御装置用プログラムは、その後、アプリケーション部25の一部として機能する。
情報受付部231は、Webサーバ部22を介して、複合機1から送信される情報を受け付け、当該情報に応じた処理を、UI制御部233、アプリケーション指示部236、複合機機能制御部235、複合機プログラム送信部237、およびプログラム変換部239に対して指示するものである。情報受付部231が複合機1から受け付ける情報には、(1)操作画面データの送信要求、(2)操作画面においてユーザによって選択された項目を示す被選択項目情報、(3)操作画面においてユーザによって入力された入力情報(ログイン情報など)、(4)アプリケーション部25による各種アプリケーションを利用した処理の実行要求、(5)複合機用プログラムの送信要求、(6)複合機1において複合機プログラムの実行が拒絶されたことを示す拒絶通知および実行が拒絶された複合機用プログラム、ならびに(7)複合機1において処理が実行された後に当該複合機1から送信される完了通知などが含まれる。
なお、上記(1)における操作画面としては、例えば、複合機1が実行する処理をユーザに選択させるための実行処理選択画面、ユーザの認証を行うためのログイン画面などが含まれる。情報受付部231は、上記(1)を受け付けると、UI制御部233に対して、該当する操作画面データの送信を指示する。
また、上記(2)としては、例えば、実行処理選択画面において選択された処理の種類を示すものなどが含まれる。情報受付部231は、上記(2)を受け付けると、複合機機能制御部235に対して、選択された処理の実行指示を複合機1へ送信するよう指示する。一例を挙げると、複合機1において、ユーザによってスキャン処理が選択された場合、このスキャン処理が選択されたことを示す被選択処理情報を受け取った情報受付部231は、複合機機能制御部235に対して、スキャン処理の実行指示を複合機1へ送信するよう指示する。
また、上記(3)としては、ユーザIDおよびパスワードなどの認証情報が含まれる。情報受付部231は、認証情報を受け付けると、アプリケーション部25の図示しないユーザ認証部にこれらの認証情報を入力し、当該ユーザ認証部に対して、認証を行っているユーザが正規のユーザであるか否かを認証情報に基づいて判定するよう指示する。
また、上記(4)としては、例えば、認証アプリケーションを用いたユーザの認証処理の実行要求や、イベント集計アプリケーションを用いた集計処理の実行要求などが含まれる。ただし、情報受付部231が受け付ける上記(4)の実行要求は、これらに限定されるものではなく、複合機1から任意(または定期的)に受信する情報であり、当該情報に応じて、アプリケーション部25が何らかの処理を行うものであればよい。情報受付部231は、上記(4)を受け付けると、アプリケーション部25の図示しないユーザ認証部や集計処理部を機能させるよう、アプリケーション指示部236に指示する。
また、情報受付部231は、上記(5)を受け付けると、複合機プログラム237に対して、複合機用プログラムを複合機1へ送信するよう指示し、また、上記(6)を受け付けると、プログラム変換部239に対して、複合機1において実行が拒絶されたプログラムを代替する制御装置用プログラムを、受信した複合機プログラムを基に生成するよう指示し、また、上記(7)を受け付けると、複合機機能制御部235に対して、後続の処理の実行指示を複合機1へ送信するよう指示する。
なお、情報受付部231は、これらの指示を、記憶部105に格納されたイベントテーブルに基づいて行っている。図25は、イベントテーブルの一部を示す図である。図25に示すように、イベントテーブルには、情報受付手段が受信した情報と、その情報を受信したときに指示を行う対象および内容とが示されている。
アプリケーション部25は、各種アプリケーションプログラムに基づいた処理を行うブロックである。これらの処理は、CPU131が記憶部135に格納されたアプリケーションプログラムを実行することにより行われる。アプリケーション部25は、例えば、予め登録されたユーザであるか否かを判定する認証アプリケーション、画像データを保存・管理するドキュメント管理アプリケーション、複合機1で実行されたイベントの集計を行うイベント集計アプリケーションなどに応じた動作を行う。
連携モジュール24は、アプリケーション部25とMFP制御ロジック部23との接続するためのモジュールである。連携モジュール24は、アプリケーション指示部236からの指令をアプリケーション部25に伝えるとともに、アプリケーション部25からの指令を複合機機能制御部235に伝える。
(複合機の構成)
次に、複合機1の構成について説明する。図1は、本実施形態に係る複合機1の機能構成を示すブロック図である。図1に示されるように、複合機1は、ユーザインターフェイス層11、アプリケーション層12、サービス層13、ドライバ層14、OS層15、UIサービス層16、Webサービス層17、OSAアプリ層18、およびOpenI/F層19を備えている。これらの各層およびそこに含まれる各ブロックは、図3に示した制御部100および記憶部105を含むハードウェアと、記憶部105に格納されたプログラムからなるソフトウェアとが協働することにより実現される。
ユーザインターフェイス層11は、ユーザが複合機1を操作するためのインターフェイスである。ユーザインターフェイス層11は、複合機1に固有の操作画面(固有操作画面)を記憶しており、当該固有操作画面を操作パネル6に表示させる。ユーザは、固有操作画面に対して、所望の処理の実行を入力することで、複合機1の制御を行うことができる。
なお、ユーザインターフェイス層11の操作パネル部11aは、複合機1の操作画面にて入力された情報をアプリケーション層12に伝達する処理を行う。
また、Webページ部11bは、Webページにて入力された情報をアプリケーション層12に伝達する処理を行う。
アプリケーション層12は、複合機1が有する各種の要素処理を連携させて実行するアプリケーションプログラムに従って動作するものである。上記の要素処理としては、図3に示される原稿読取部110を制御することにより実行されるスキャン処理、画像形成部115を制御することにより実行される印刷(プリント)処理、アプリケーションプログラムに基づいた画像処理、通信部120を制御することにより実行されるネットワーク処理などが挙げられる。そして、これらの要素処理を組み合わせることにより、連携処理が実現する。本実施形態では、ユーザからは、上記連携処理の実行が指示される。
要素処理を組み合わせてなる連携処理とは、例えば、スキャン処理と画像処理と印刷処理とを組み合わせて実行される複写(コピー)処理、およびスキャン処理と文字認識(OCR)処理と英日翻訳処理と印刷処理とを組み合わせて実行される翻訳コピー処理などがある。以下では、連携処理と要素処理とを区別して扱うこととする。
本実施形態のアプリケーション層12は、連携処理である複写(コピー)処理の実行/制御を行うためのコピーアプリ12a、プリント処理の実行/制御を行うためのプリントアプリ12b、スキャンした画像データを外部の装置に送信するイメージ送信処理の実行/制御を行うためのイメージ送信アプリ12c、ドキュメントファイリング処理の実行/制御を行うためのドキュメントファイリングアプリ12d、ユーザ認証処理の実行/制御を行うためのユーザ認証アプリ12e、FAX受信処理の実行/制御を行うためのFAX受信アプリ12f、TWAIN処理の実行/制御を行うためのTWAINアプリ12gなどを含む。
サービス層13は、アプリケーション層12の下位に位置する層であり、アプリケーション層12からの指示に従って、複合機1が有する各種の要素処理を実行するものである。
本実施形態のサービス層13には、要素処理であるスキャン処理を行うスキャンサービス13a、プリント(印刷)処理を行うプリントサービス13b、ジョブ毎の情報管理を行うジョブログサービス13c、イメージ作成等の画像形成処理を実行する画処理サービス13d、ドキュメントファイリング等、イメージを管理するための処理を行うファイルサービス13e、リモートからWebページ経由でアクセスするための処理を行うWWWサーバサービス13f、LANや電話回線等を用いて通信処理を行うネットワークサービス13gなどがある。
ドライバ層14は、サービス層13の下位に位置する層であり、上記要素処理を実行するために、複合機1のハードウェアを制御するものである。サービス層13の各部は、複合機1が有する各種ハードウェアを制御するためのドライバプログラムに従った動作を行う。
本実施形態のドライバ層14には、画像形成に関するASICドライバ14a、USB通信を行うためのUSBドライバ14b、シリアル通信を行うためのシリアル通信ドライバ14c、LAN通信を行うためのNICドライバ14d、操作パネル6の表示制御を行うためのLCDドライバ14e、電源管理を行うためのパワードライバ14fなどがある。
OS層15は、ドライバ層14の下位に位置する層であり、オペレーティングシステムを管理するものである。
なお、上記ユーザインターフェイス層11、アプリケーション層12、サービス層13、ドライバ層14およびOS層15は、複合機1に固有のソフトウェアに従った動作を行うものであり、複合機1ごとに異なっている。これらの層を備えることで、複合機1は、通信ネットワークを介することなくユーザからの指示を直接受け付け、その指示に従った動作を行うことができる。
ただし、複合機1が上記のような固有の層しか有していない場合、制御装置2は、この複合機1を制御する際に、複合機1ごとに制御指示を生成しなければならず、処理が複雑になってしまう。そこで、本実施形態の複合機1は、外部の制御装置2から共通の制御指示を受け付けることのできるように、以下の層をさらに有している。
UIサービス層16は、HTTP(またはHTTPS)を用いて、制御装置2から操作画面データを取得し、取得した操作画面データに基づいた操作画面を操作パネル6上に表示させるものである。なお、UIサービス層16は、汎用されているWebブラウザの機能を有するものでよい。
UIサービス層16とユーザインターフェイス層11とを備えることで、ユーザは、操作パネル6の操作画面を、複合機1に固有の操作画面(ユーザインターフェイス層11によって表示される)を操作して、その操作に応じた機能が複合機1で実行される標準操作モードと、ネットワークリソース(例えば、RCDのアプリケーション)を使用するオープンシステムモード(open system modes)とのいずれかに切り替えて使用することができる。
なお、UIサービス層16には、制御装置2から提供されたUI(操作画面)の表示を制御するUIマネージャ16aがある。
UIサービス層16は、操作画面データを要求する旨の送信要求情報(リクエスト情報)を、HTTP(またはHTTPS)を用いて、当該アドレス情報で指定される制御装置2に対して送信する。そして、UIマネージャ16aは、レスポンスとして取得した操作画面データに基づいて操作画面を操作パネル6に表示させる。このように、UIマネージャは、制御装置2から操作画面のデータを受信し、受信したデータに対応する操作画面を操作パネル6に表示させるUI処理手段として機能する。
また、UIマネージャ16aは、操作画面上で押下されたボタンを示す押下ボタン情報を、HTTP(またはHTTPS)を用いて制御装置2に送信し、その応答として新たな操作画面データを取得し、当該データに対応する操作画面を操作パネル6に表示させる。つまり、UIマネージャ16aは、ユーザから取得した各種情報を制御装置2に対して通知する情報通知手段としても機能する。
Webサービス層17は、SOAPを用いて制御装置2から送信される制御指示を受信し、当該制御指示に対応するOSAアプリ層18の適切なモジュールを呼び出すものである。また、Webサービス層17は、OSAアプリ層18から受けた情報を示すSOAPコマンドを生成し、制御装置2に対して送信する。Webサービス層17は、制御指示と、当該制御指示が示す制御に適切なOSAアプリ層18のモジュールとを対応付けて記憶しており、当該記憶内容に応じて、適切なモジュールを呼び出す。
本実施形態のWebサービス層17は、UI制御に関するWebサービスを処理するUIマネージャ17a、ジョブ制御に関するWebサービスを処理するジョブマネージャ17b、イベント送信要求に関するWebサービスを処理するイベントマネージャ17c、ジョブやデバイスのステータス制御に関するWebサービスを処理するステータスマネージャ17d、OSAアプリ層18に関する情報を登録するためのサービスマネージャ17e、ジョブデータの送受信を行うためのWebサービスを処理するデータ送受信マネージャ17fなどを含む。
OSAアプリ層18は、上述した連携処理を制御するための層であり、アプリケーションプログラムに基づいて、制御装置2からの処理の実行指示に含まれる第1API(第1制御コマンド)をOpenI/F層19に出力する。後述するように、OpenI/F層19で使用可能な(公開されている)APIは、複合機1の機種に依存しない。そのため、OSAアプリ層18は、複合機1ごとに、プログラムコードを変更する必要がない。
本実施形態のOSAアプリ層18は、複写(コピー)処理の実行/制御を行うためのコピーアプリ18a、プリント処理の実行/制御を行うためのプリントアプリ18b、スキャンした画像データを外部の装置に送信するイメージ送信処理の実行/制御を行うためのスキャンアプリ18c、ドキュメントファイリング処理の実行/制御を行うためのドキュメントファイリングアプリ18d、ユーザ認証処理の実行/制御を行うためのユーザ認証アプリ18e、FAX受信処理の実行/制御を行うためのFAX受信アプリ18f、TWAIN処理の実行/制御を行うためのTWAINアプリ18g、さらには、制御装置2からダウンロードしたアプリケーションプログラムの登録および管理を行うためのプログラム登録管理アプリ(プログラム受信手段)18h、処理の実行に必要な時間を推定する実行時間推定アプリ(実行時間推定手段)18iなどを含む。
OpenI/F層19は、サービス層13を制御するための第1APIをOSAアプリ層18に公開しており、OSAアプリ層18から第1APIを呼び出すための第1制御コマンドを受け付けるとともに、受け付けた第1制御コマンドを、サービス層13が受け付け可能な第2制御コマンドに変換するものである。
OpenI/F層19は、OSAアプリ層18から受け付ける第1制御コマンドと、サービス層13が外部に公開している第2APIを呼び出すための第2制御コマンドとを対応付けたコマンド変換テーブル(コマンド対応情報)を記憶するコマンド変換テーブル記憶部(コマンド変換テーブル記憶部)(図示せず)を備えており、当該変換テーブルに従って、サービス層13の公開している第2APIの呼び出しを行う。図8は、OpenI/F層19が保持しているコマンド変換テーブルの一例を示す図である。
OpenI/F層19は、OSAアプリ層18へ公開する第1APIを複合機1によらず共通にしている。これにより、OSAアプリ層18のプログラムコードを変更する必要がなく、Webサービス層17が外部の装置に公開するメソッドを複合機1によらず共通に定義することができる。すなわち、各制御装置2は、複合機1によらず共通のメソッドを用いて、Webサービス層17に対する制御を行うことができる。
図9は、OpenI/F層19の機能を説明する図である。図9において、モデルAの複合機1は、サービス層13として、スキャンサービス13aおよびプリントサービス13bを有している。この場合、モデルAの複合機1のOpenI/F層19は、コマンド対応テーブルとして、図8に示されるように、第1API(第1制御コマンド)「Execute Copy」と、第2API(第2制御コマンド)「Do Scan」および「Do Print」とを対応付けて記憶している。そのため、OpenI/F層19は、第1API(第1制御コマンド)「Execute Copy」を受けると、変換後の第2API(第2制御コマンド)に従ってスキャンサービス13aおよびプリントサービス13bを実行させる。
一方、モデルBの複合機1は、サービス層13として、コピーサービスを有している。この場合、モデルBの複合機1のOpenI/F層19は、コマンド対応テーブルとして、第1API(第1制御コマンド)「Execute Copy」と、第2API(第2制御コマンド)'Do Copy'とを対応付けて記憶している。そのため、OpenI/F層19は、第1API(第1制御コマンド)'Execute Copy'を受けると、変換後の第2API(第2制御コマンド)に従ってコピーサービスを実行させる。
以上のように、OpenI/F層19によれば、複合機のモデルに関らず、制御装置2やOSAアプリ層18は、'Execute Copy'という共通のAPI(制御コマンド)を用いてコピーの実行を指示することができる。つまり、複合機1のサービス層が機種ごとに異なる場合であっても、制御装置2及びOSAアプリ層18は、同じ実行指示及び第1API(第1制御コマンド)を用いて各サービスを実行させることができる。従って、複合機1の機種ごとに実行指示及び第1API(第1制御コマンド)を使い分ける必要がなく、制御装置2やOSAアプリ層18に用いるプログラムを容易に開発することができる。
(複合機制御システムの概略動作)
次に、複合機制御システムの動作について概略的に説明する。図10は、本実施形態の複合機制御システムの概略的な動作を示すフロー図である。
図10に示すように、まず、複合機1を利用するユーザのログイン処理を行う(S1)。ここでは、ユーザの認証は、複合機1において行われるのではなく、制御装置2において行うようになっている。従って、個々の複合機制御システムに複合機1が複数台含まれる場合であっても、個々の複合機1…がユーザ情報を管理する必要がない。
次に、制御装置2において、複合機1を利用するユーザが管理者であるか否かの判定が行われる(S2)。ここで、ユーザが管理者である場合は、ステップS3に進み、複合機用プログラムのメンテナンス処理が行われる。一方、ユーザが管理者でなく一般ユーザである場合は、ステップS4に進み、複写処理や英日翻訳処理などの各種連携処理が複合機1において行われる。
なお、各ステップの動作については、以下に詳述する。
(ログイン処理)
まず、上述したステップS1におけるログイン処理について詳述する。
本実施形態の複合機制御システムにおいて、ログイン処理は、複合機1が制御装置2の認証アプリケーションと連携して動作することによって実行される。つまり、上述したように、ユーザが複合機1に対して入力したログイン情報に基づいて、当該ユーザが正当なユーザであるか否かの認証処理を制御装置2が行うのである。
まず、本実施形態の複合機制御システムにおけるログイン処理を説明する前に、従来の技術に基づいた比較例について説明する。
図11は、HTTPのみで通信を行う比較例における認証処理の流れを示す図である。HTTPは、HTTPリクエスト(要求)とHTTPレスポンス(応答)とが1対1のペアとして通信されるものである。すなわち、クライアントがHTTPリクエストをサーバに対して行うと、サーバは、当該HTTPリクエストに対応するHTTPレスポンスをクライアントに返信する。このように、サーバは、HTTPリクエストがないのに何らかのデータをクライアントに送信することができず、また、クライアントは、HTTPリクエストを送信していないのに、サーバから何らかのデータを受信することができない。
図11に示されるように、比較例では、複合機1(クライアント)がログインデータをサーバに送信すると、サーバは、当該送信に応答して、認証処理が終了したのち、次の操作画面データを複合機1に送信する。この場合、ユーザは、認証処理が終了するまでの間、次の画面を確認することができず、正常に認証処理が行われているのかどうか不安に思うこととなる。そのため、「ログイン中です」というような画面を複合機1の操作パネル6に表示する必要がある。しかしながら、比較例では、ログインデータの送信の応答として「ログイン中です」という画面を返信してしまうと、次の操作画面データを送信することができなくなる。複合機1からのリクエストがないからである。
本実施形態によれば、複合機1からのHTTPリクエストに応じて、制御装置2のアプリケーション部25が何らかの処理を行う場合であっても、当該処理の間に、複合機1の操作パネル6上の操作画面を遷移させることが可能となる。図12は、本実施形態におけるログイン処理を示すタイミング図である。
まず、複合機1において、UIサービス層16のUIマネージャ16aは、ネットワーク上に存在する複数の制御装置2の中からユーザがログイン処理を所望する制御装置2を特定するために、制御装置2の一覧が表示され、ユーザに制御装置2の選択を促すサーバ選択画面を操作パネル6に表示させる。
そして、ユーザがログイン処理を所望する制御装置2を選択する。図13は、サーバ選択画面においてユーザが制御装置2を選択した際の画面の一例である。
次に、複合機1において、UIサービス層16のUIマネージャ16aは、ユーザによって選択された制御装置2に対して、ログイン画面データの送信を要求するリクエストを送信する(S51)。
このリクエストを受信した制御装置2では、情報受付部231が、UI制御部233に対して、ログイン画面データを複合機1へ送信するよう指示し(S52)、UI制御部233が、ログイン画面データを画面データ記憶部232の中から検索して複合機1に返信する(S53)。
そして、複合機1において、UIサービス層16のUIマネージャ16aは、受信した画面データに基づいて、ログイン画面を表示する。図14は、ログイン画面の一例を示す図である。
これを受けてユーザは、操作パネル6または入力部5によってログインデータ(ユーザ名およびパスワード)を入力し、OKボタンを押下する。図15は、管理者がログイン情報を入力した際のログイン画面の一例であり、図16は、一般ユーザがログイン情報を入力した際のログイン画面の一例である。この入力を受けて、UIマネージャ16aは、入力されたログインデータとともに、OKボタンが押下されたことを示す押下ボタン情報を制御装置2に送信する(S54)。
次に、制御装置2の情報受付部231は、上記押下ボタン情報を受信すると、図25に示すイベントテーブルを参照して、UI制御部233に対して、「ログイン中です」と表示された通知画面のデータを複合機1へ送信するよう指示するとともに(S55)、アプリケーション指示部236に対して、認証アプリケーションを呼び出すように指示する(S56)。
その結果、UI制御部233は、ステップS55の送信指示に従い、「ログイン中です」と表示された通知画面のデータを画面データ記憶部232から読み出し、複合機1に送信する(S57)。複合機1のUIマネージャ16aは、この通知画面のデータを受信して、操作パネル6に、受信したデータに対応する通知画面を表示させる。
一方、アプリケーション指示部236は、ステップS56の指示に従い、アプリケーション部25に対して、認証アプリケーションプログラムに基づいた処理の実行を指示する。これを受けて、アプリケーション部25は、認証アプリケーションプログラムに基づいて、予め登録されている認証データベースを用いてユーザの認証処理を行う(S58)。
そして、ユーザの認証に成功すると、アプリケーション部25は、複合機機能制御部235に対して、認証に成功したことを通知する認証成功通知を複合機1へ送信するよう指示する(S59)。これに従い、複合機機能制御部235は、複合機1に対して認証成功通知を送信する(S60)。
さらに、複合機機能制御部235は、複合機1に対して、操作画面の変更を指示する制御指示を送信する(S62)。ここで、複合機機能制御部235は、認証されたユーザが管理者である場合は、管理メニュー画面のデータをリクエストするよう指示し、一方、認証されたユーザが一般ユーザである場合は、実行処理メニュー画面のデータをリクエストするよう指示する。
一方、ステップS58において認証に失敗した場合は、複合機1の操作パネル6に、認証に失敗した旨が示されたエラー画面が表示される。
なお、ステップS60およびS62におけるデータの通信には、SOAPが用いられる。
(複合機用プログラムのメンテナンス処理)
まず、図10のステップS3における複合機用プログラムのメンテナンス処理について詳述する。図17は、複合機用プログラムのメンテナンス処理を示すフロー図である。
上述したステップS58において認証されたユーザが管理者であった場合、制御装置2のUI制御部233は、画面データ記憶部232から、管理メニュー画面のデータを読み出し、複合機1に対して送信する(S101)。この管理メニュー画面には、ユーザが選択可能な管理内容の項目が一覧表示され、本実施形態では、図18に示すように、(i)制御装置2から複合機1へ全ての複合機用のアプリケーションプログラムを送信する「複合機プログラム送信」と、(ii)複合機1が有しているアプリケーションプログラムを更新する「複合機プログラム更新」との2つの選択項目が表示される。
次に、複合機1のUIマネージャ16aが、この管理メニュー画面のデータを受信し、データに対応する管理メニュー画面を操作パネル6に表示させる(S102)。そして、ユーザは、この管理メニュー画面を参照して、所望の処理項目、すなわち上記の(i),(ii)の何れかを操作パネル6または入力部5によって選択する(S103)。その結果、複合機1のUIマネージャ16aは、ユーザが選択した項目を特定する情報(被選択項目情報)を取得する。なお、上記の被選択項目情報は、押下ボタン情報として取得される。
次に、複合機1のUIマネージャ16aは、制御装置2に対して、被選択項目情報を送信することにより、ユーザによって選択された処理の内容を通知する(S104)。すると、制御装置2の情報受付部231は、この被選択項目情報を受信し、受信した情報を複合機用プログラムの送信要求として解釈するとともに、ユーザが上記の(i),(ii)の何れを所望しているかを判定する(S105)。
ここで、複合機1から送信された被選択項目情報が(i)の実行を要求するものであった場合、情報受付部231は、複合機プログラム送信部237に対して、複合機用プログラムの一式を複合機1へ送信するよう指示し、ステップS106に進む。
ステップS106において、複合機プログラム送信部237は、送信プログラム記憶部238に格納されている全ての複合機用プログラムを読み取るとともに、読み取った複合機用プログラムをプログラムの登録処理の実行指示とともに複合機1へ送信する。そして、ステップS111に進む。
ステップS111では、複合機1のWebサービス層17のジョブマネージャ17bが、制御装置2から送信されたプログラムの登録処理の実行指示を受信するとともに、データ送受信マネージャ17fが、制御装置2から送信された複合機用プログラムを受信する
そして、ジョブマネージャ17bは、実行指示に従って、OSAアプリ層18のプログラム登録管理アプリ18hを呼び出し、データ送受信マネージャ17fが受信した複合機用プログラムを登録するよう指示する。すると、プログラム登録管理アプリ18hは、データ送受信マネージャ17fから複合機用プログラムを受け取って記憶部105に格納するとともに、当該複合機用プログラムをジョブマネージャ17bからOSAアプリ層18のアプリとして呼び出すことができるように登録する(S111)。
この登録は、プログラム登録管理アプリ18hが、記憶部105に格納されたプログラム管理テーブルを更新することによって行われる。図19は、プログラム管理テーブルの一例を示す図である。プログラム管理テーブルには、複合機用プログラムごとに、プログラムの識別子、プログラムの名称、プログラムのバージョン情報、プログラムの実行可能なユーザのIDおよびそのユーザによるプログラムの累積実行回数、ならびにプログラムの格納アドレスが示されている。
プログラム登録管理アプリ18hは、このプログラム管理テーブルを参照し、受信した複合機用プログラムが新規のプログラムの場合は、受信した複合機用プログラムについてのデータをテーブルに新たに追加する。一方、受信した複合機用プログラムが既に有しているものであった場合、プログラム登録管理アプリ18hは、テーブルの中の該当する複合機用プログラムのデータを上書きする。
Webサービス層17のジョブマネージャ17bは、上記のプログラム管理テーブルを参照してOSAアプリ層18の各アプリを呼び出すため、プログラム登録管理アプリ18hがプログラム管理テーブルを更新することにより、制御装置2から受信した複合機用プログラムを呼び出すことができるようになる。例えば、ステップS111において、文字認識プログラムおよび英日翻訳プログラムが新規に登録された場合、図1に示すOSAアプリ層18は、図20に示すように変更される。
一方、ステップS105において、複合機1から送信された情報が(ii)の実行を要求するものであった場合、情報受付部231は、複合機プログラム送信部237に対して、更新された複合機用プログラムを複合機1へ送信するよう指示し、ステップS107に進む。
ステップS107において、複合機プログラム送信部237は、複合機1に対して、複合機1の記憶部105に格納されている全てのプログラムのバージョン情報が示されたバージョン一覧情報のリクエストを送信する。すると、複合機1のWebサービス層17のジョブマネージャ17bが、制御装置2から送信されたバージョン一覧情報のリクエストを受信するとともに、OSAアプリ層18のプログラム登録管理アプリ18hに対して、バージョン一覧情報を送信するよう指示する。
これを受けて、プログラム登録管理アプリ18hは、上述したプログラム管理テーブルの中から、プログラムのバージョン情報を抽出し、自機の有している全てのプログラムのバージョン情報の一覧が示されたバージョン一覧情報を作成し、Webサービス層17を介して制御装置2へ送信する(S108)。そして、このバージョン一覧情報を、制御装置2の情報受付部231が受信し、複合機プログラム送信部237へ入力する。
次に、複合機プログラム送信部237は、複合機1から送信されたバージョン一覧情報と、送信プログラム記憶部238に格納された複合機用プログラム管理テーブル(図7を参照)に示されたバージョン情報とを比較する(S109)。ここで、複合機1が有しているプログラムよりも新しいバージョンのプログラムが見つかった場合、複合機プログラム送信部237は、そのプログラムを送信プログラム記憶部238の中から読み出す。
そして、複合機プログラム送信部237は、読み出した複合機用プログラムを、プログラムの登録処理の実行指示とともに複合機1へ送信する。その後、ステップS111に進み、上述したプログラムの登録が行われる。
ステップS111においてプログラムの登録が行われると、プログラム登録管理アプリ18hは、制御装置2に対して、プログラムの登録が完了したことを、Webサービス層17を介して通知する(S112)。すると、制御装置2のUI制御部233は、図21に示すような処理が完了したことを示す完了通知画面のデータを複合機1に送信し(S113)、複合機1のUIマネージャ16aが、完了画面を操作パネル6に表示させる(S114)。
(複合機による連携処理)
次に、図10のステップS4における複合機による各種連携処理について詳述する。図22および23は、複合機1による連携処理を示すフロー図である。
まず、上述したステップS58において認証されたユーザが一般ユーザであった場合、制御装置2のUI制御部233は、画面データ記憶部232から実行処理メニュー画面のデータを読み出し、複合機1に対して送信する(S201)。この実行処理メニュー画面には、ユーザが選択可能な処理の項目が一覧表示されている。図24は、実行処理メニュー画面の一例を示す図である。
複合機1のUIマネージャ16aは、この実行処理メニュー画面のデータを受信し、データに対応する実行処理メニュー画面を操作パネル6に表示させる(S202)。そして、ユーザは、この実行処理メニュー画面を参照して、操作パネル6または入力部5によって所望の処理項目を選択する(S203)。その結果、複合機1のUIマネージャ16aは、ユーザの選択した項目を特定する情報(被選択項目情報)を取得する。なお、上記の被選択項目情報は、押下ボタン情報として取得される。
次に、複合機1のUIマネージャ16aは、制御装置2の情報受付部231に対して、被選択項目情報を送信することにより、ユーザによって選択された処理の内容を通知する(S204)。すると、情報受付部231は、図25に示すイベントテーブルを参照して、複合機機能制御部235に対して、ユーザによって選択された処理の内容に応じて、適切な実行指示を複合機1へ送信するよう指示する(S205)。
例えば、図24に示す実行処理メニュー画面において、「英日翻訳してコピー」処理が選択された場合、情報受付部231は、イベントテーブルを参照して、複合機機能制御部235に対して、スキャン処理の実行指示を複合機1へ送信するよう指示する。以下では、実行処理メニュー画面において、「英日翻訳してコピー」処理が選択された場合を例に用いて説明する。
次に、複合機機能制御部235は、情報受付部231の指示に従い、処理の実行指示と、ステップS58で認証されたユーザのIDと、自機の識別情報とを複合機1のジョブマネージャ17bに送信する(S206)。また、OCR処理、翻訳処理、あるいは印刷処理など、処理の実行にデータが必要な場合、複合機機能制御部235は、そのデータ(以下「入力データ」という)を複合機1のデータ送受信マネージャ17fに送信する。なお、このステップS206における実行指示などの送受信は、SOAPを用いて行われる。
このステップについて上述の例で説明すると、複合機機能制御部235は、スキャン処理の実行指示(「JobCreate」、「ExecuteScan」および「JobClose」)を制御指示テーブル記憶部234から読み出し、この実行指示にユーザIDおよび自機の識別情報を付加して複合機1のWebサービス層17へ送信する。
次に、Webサービス層17のジョブマネージャ17bは、実行指示、ユーザID、および制御装置の識別情報を受信し、受信した実行指示が、予め登録された制御装置2から送信されたものであるかを判定する(S207)。すなわち、本実施形態の複合機1では、実行指示の受け付けを許可する制御装置の識別情報の一覧が示された制御装置制限情報が記憶部105に格納されており、ジョブマネージャ17bは、実行指示とともに受信した制御装置の識別情報が制御装置制限情報に登録されているか否かを判定する。
ここで、受信した識別情報が制御装置制限情報に登録されていない場合、ジョブマネージャ17bは、受信した実行指示が正当なものではないと判断し、制御装置2に対してエラーを通知する(S208)。その結果、制御装置2では、情報受付部231の指示に従って、UI制御部233がエラー画面のデータを複合機1へ送信し(S209)、複合機1の操作パネル6にエラー画面が表示される(S212)。
一方、ステップS207において、受信した識別情報が制御装置制限情報に登録されていた場合、ジョブマネージャ17bは、実行指示とともに受信したユーザIDが、実行指示に基づいた処理に用いられるプログラムを実行する権限を有しているか否かを、図19に示す上述したプログラム管理テーブルを参照して判定する(S210)。
上述の例で説明すると、実行指示「ExecuteScan」は、図19に示すプログラム管理テーブルにおいて識別子「M_0018」で示される「スキャン」プログラムの実行を指示するものであるが、この「スキャン」プログラムの行に示された実行可能ユーザIDの中に、実行指示とともに受信したユーザIDが含まれているか否かを判定する。
ここで、受信したユーザIDが、実行指示に基づいた処理に用いられるプログラムの実行権限を有していない場合、ジョブマネージャ17bは、制御装置2に対してエラーを通知する(S211)。その結果、制御装置2では、情報受付部231の指示に従って、UI制御部233がエラー画面のデータを複合機1へ送信し(S209)、複合機1の操作パネル6にエラー画面が表示される(S212)。
一方、ステップS210において、受信したユーザIDが、プログラムの実行権限を有している場合、ジョブマネージャ17aは、OSAアプリ層18の実行時間推定アプリ18iを呼び出す。そして、実行時間推定アプリ18iは、実行指示に基づいた処理を行うのに要する時間(すなわちプログラムの実行時間)を推定する(S213)。
例えば、制御装置2からの実行指示が英日翻訳処理である場合、処理に必要な時間は、翻訳しなければならない文章の量に依存する。ここで、複合機1が大量の文章を翻訳すると、翻訳中にユーザが他の処理を実行させることができなくなってしまう。そこで、実行時間推定アプリ18iが処理に必要な時間を概算し、概算結果に応じて処理を行うか否かを判断するのである。
ここで、処理に必要な時間は、例えば英日翻訳の場合は翻訳対象である文章の量といったように、処理対象となるデータのサイズに依存すると考えられる。従って、実行時間推定アプリ18iは、ジョブマネージャ17bが実行指示を受信した際にデータ送受信マネージャ17fが受信した入力データに基づいて、処理に要する時間を推定する。
例えば、入力データのサイズをN、処理内容(アプリケーションプログラム)ごとに決定されるパラメータをAとすると、実行時間Tは、次の(1)〜(4)式
T=A×N …(1)
T=A×NlogN …(2)
T=A×N2 …(3)
T=A×2N …(4)
の何れかなどによって算出することができる。もちろん、上記の(1)〜(4)式を、印刷処理、OCR処理、翻訳処理などの処理の種類に応じて選択して用いてもよい。
なお、スキャン処理などのように入力データのない場合は、この処理時間の推定ステップを省略してもよいし、別の方法で処理時間を推定してもよいし、あるいは所定の時間を処理時間とみなしてもよい。
次に、実行時間推定アプリ18iは、推定した処理時間が閾値以上か否かを判定する(S214)。この閾値は、予め設定した固定値であってもよいし、複合機1がすでに有しているジョブの量などに応じて変動する値であってもよい。
ここで、推定した処理時間が閾値以上でない場合は、ジョブマネージャ17bが、図19に示すプログラム管理テーブルの中の、実行指示に基づいて呼び出されるアプリ(プログラム)の累積実行回数を更新する(S219)。より詳細には、プログラム管理テーブルには累積実行回数がユーザごとに設けられているため、ジョブマネージャ17bは、ステップS206において受信したユーザIDに対応する累積実行回数をインクリメントする。
その後、ジョブマネージャ17bは、実行指示に基づいた処理を行うためのアプリの呼び出しを行う。その結果、実行指示に基づいた処理が行われる(S220)。
上述した例で説明すると、スキャン処理の実行指示「ExecuteScan」を受け取ったジョブマネージャ17bは、OSAアプリ層18の中からスキャンアプリ18cを呼び出す。ここで、スキャンアプリ18cを呼び出すということは、ジョブマネージャ17bが、図19に示すプログラム管理テーブルを参照して、「スキャン」プログラムをCPU101に実行させることを意味する。
もちろん、ジョブマネージャ17bが、文字認識処理あるいは英日翻訳処理の実行指示を受け取った場合は、図20において新規に追加された文字認識アプリ18jあるいは英日翻訳アプリ18kを呼び出す(すなわち、制御装置2から受信した「文字認識」プログラムあるいは「英日翻訳」プログラムをCPU101に実行させる)ことができる。
なお、複合機1のOSAアプリ層18以下では、指示された処理が大きく分けて次の2つの手順で実行される。まず、指示された処理が、文字認識処理や翻訳処理のように、CPU101および記憶部105のみのハードウェアによって実行できる場合、OSAアプリ層18のアプリが処理をそのまま実行する。
一方、スキャン処理あるいは印刷処理などのように、制御部100および記憶部105以外のハードウェアも必要とする場合は、OSAアプリ層18の呼び出されたアプリが、OpenI/F層19を介してサービス層13のサービスを呼び出す。そして、呼び出されたサービス層13のサービスが、ドライバ層14に含まれる、所望のハードウェアを制御するドライバを呼び出しながら、処理を実行する。
例えば、図26に示されるように、制御装置2からスキャン処理の実行指示が送信され(S301)、OSAアプリ層18においてスキャンアプリ18cが呼び出された場合(S303)、スキャンアプリ18cは、OpenI/F層19に対して、第1制御コマンド「ExecuteScan」を出力する(S304)。
すると、OpenI/F層19は、図8のコマンド対応テーブルを参照して、受け取った第1制御コマンド「ExecuteScan」に対応する第2制御コマンド「Do Scan」、「Save File」、および「SenByFTP」をサービス層13に順次出力する(S306)。その結果、第2制御コマンド「Do Scan」に従って、サービス層13のスキャンサービス13aが呼び出され、このスキャンサービス13aが、ドライバ層14の、原稿読取部110を制御するドライバを呼び出しながら、原稿の読み取りを実行する(S307)。続いて、ファイルサービス13eが、原稿を読み取って得たデータをファイルとして保存する。最後に、ネットワークサービス13gが、保存したファイルを制御装置2へFTPで送信する(S308)。
その後、サービス層13から、処理の完了を示す完了通知が、OpenI/F層19、OSAアプリ層18、Webサービス層17の順に送られ、Webサービス層17のイベントマネージャ17cが、制御装置2の情報受付部231に対して完了通知を送信する(図23のS221、図26のS309〜S312)。この完了通知の送信は、SOAPを用いて行われる。
処理の完了通知を受け取った制御装置2の情報受付部231は、イベントテーブルを参照して(S222)、連続して行うべき次の処理があるか否かを判定する(S223)。ここで、次の処理がある場合は、ステップS206に戻り、複合機機能制御部235が、情報受付部231の指示に従って、次の処理の実行指示を送信する。また、処理に必要なデータがある場合は、複合機機能制御部235がデータを複合機1のデータ送受信マネージャ17fに送信する。
例えば、ユーザによって「英日翻訳コピー」処理が選択され、複合機1がスキャン処理を終了したときは、情報受付部231は、図25のイベントテーブルを参照して、複合機機能制御部235に対して、次の処理である文字認識処理の実行指示を複合機1へ送信するよう指示する。このとき、先ほど得られたスキャンデータもデータ送受信マネージャ17fに送信する。同様に、文字認識処理が完了したときは英日翻訳処理、英日翻訳処理が完了したときはプリント処理が行われる。
そして、S223において全ての処理が完了した場合は、情報受付部231は、UI制御部233に対して、全ての処理が完了したことを通知する完了通知画面のデータを複合機1へ送信するよう指示し、これに従い、UI制御部233が、完了通知画面のデータを複合機1へ送信する(S223)。
そして、複合機1のUIマネージャ17aは、受信したデータに対応する完了通知画面を操作パネル6に表示させる(S224)。図27は、この完了通知画面の一例を示す図である。
ところで、ステップS214において、実行時間推定アプリ18iの推定した処理時間が閾値以上である場合は、ジョブマネージャ17bが、制御装置2の情報受付部231に対して、指示された処理の実行を拒絶する旨を示す拒絶通知を送信する(S215)。このとき、ジョブマネージャ17bは、実行を拒絶する処理に対応する複合機用プログラムの識別子も送信する。
この拒絶通知を受信した情報受付部231は、アプリケーション指示部236に対して、実行が拒絶された処理をアプリケーション部25に行わせるよう指示する。すると、アプリケーション指示部236は、まず、複合機1において実行が拒絶された処理を行うために、実行が拒絶された複合機用プログラムに対応する制御装置用プログラムが自機の記憶部135にあるか否かを判定する(S216)。
このステップについて詳細に説明すると、本実施形態の制御装置2の記憶部135には、図28に示す制御装置用プログラム管理テーブルが格納されている。この制御装置用プログラム管理テーブルには、制御装置2の記憶部135に格納された、自機のCPU131が実行するための各アプリケーションプログラムについての情報が示されており、具体的には、プログラムごとに、プログラムの識別子、プログラムの名称、プログラムのバージョン情報、対応する複合機用プログラムの識別情報、およびプログラムの格納アドレスが示されている。
アプリケーション指示部236は、この制御装置用プログラム管理テーブルを参照し、拒絶通知とともに送信された複合機用プログラムの識別情報が、制御装置用プログラム管理テーブルに示されているか否かを判定する。ここで、示されていた場合は、実行が拒絶された処理を行うためのプログラムを自機が有していることになるため、アプリケーション指示部236は、格納アドレスを参照して、実行が拒絶された複合機用プログラムに対応する制御装置用プログラムの呼び出しを行う。換言すると、アプリケーション指示部236は、実行が拒絶された複合機用プログラムに対応する制御装置用プログラムをCPU131に実行させる。その結果、制御装置2のアプリケーション部25は、複合機1の代わりに処理を実行する(S218)。
一方、拒絶通知とともに送信された複合機用プログラムの識別情報が、テーブルに示されていない場合は、アプリケーション指示部236は、プログラム変換部239に対して、実行が拒絶された処理を行うための複合機用プログラムを、自機のCPU131が実行可能な制御装置用プログラムに変換するよう指示する。
これを受けて、プログラム変換部239は、送信プログラム記憶部238から、実行が拒絶された処理を行うための複合機用プログラムを読み取り、読み取った複合機用プログラムを制御装置用プログラムに変換する(S217)。なお、変換に用いる複合機用プログラムは、送信プログラム記憶部238に格納されたものに限定されず、複合機1から必要に応じて送信されたものであってもよい。
このプログラムの変換は、例えば、複合機用プログラムがJAVA(登録商標)でコードされ、制御装置用プログラムがCPU131のネイティブコード(マシン語)である場合は、JAVA(登録商標)でコードされた複合機用プログラムを一旦C++などのソースコードに変換し、それをコンパイルしてネイティブコードを生成することにより行うことができる。
そして、プログラム変換部239は、変換して得られた制御装置用プログラムを記憶部135に格納するとともに、制御装置用プログラム管理テーブルに、格納した制御装置用プログラムについての情報を追加する。続いて、プログラム変換部239は、アプリケーション指示部236に対して、格納した制御装置用プログラムをCPU131に実行させるよう(すなわち、制御装置用プログラムを呼び出すよう)指示する。
その結果、制御装置2のアプリケーション部25は、複合機1の代わりに処理を実行する(S218)。
最後に、図1および図6に示す複合機1および制御装置2の各ブロックは、ハードウェアロジックによって構成することもできるが、本実施形態では、次のようにCPU101・131を用いてソフトウェアによって実現している。
すなわち、複合機1および制御装置2は、各ブロックの機能を実現するプログラムを実行するCPU(central processing unit)101・131、上記プログラムを格納したROM(read only memory)108・137あるいはHDD(hard disk drive)108・138、上記プログラムを展開するRAM(random access memory)107・136、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)105・135・140などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである複合機1および制御装置2のプログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、複合機1および制御装置2に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、複合機1および制御装置2を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
以上のように、本実施形態の複合機1は、CPU101を有するとともに、制御装置2と通信可能に接続され、当該制御装置2によって制御されるものである。そして、複合機1は、CPU101が実行するためのプログラムである複合機用プログラムを格納するための記憶部105と、制御装置2から複合機用プログラムを受信して記憶部105に格納するプログラム登録管理アプリ18hと、制御装置2から送信される実行指示に応答して、記憶部105に格納された複合機用プログラムをCPU101に実行させるジョブマネージャ17bとを備えた構成となっている。
上記構成によれば、プログラム登録管理アプリ18hによって、複合機1が有していないプログラムが制御装置2から取得されるとともに記憶部105に格納される。これにより、複合機1は、自身の有していないプログラムを制御装置から取得し、取得したプログラムに基づいて、工場出荷時にはできなかった新規の処理を実行することができるようになる。さらに、ジョブマネージャ17bは、記憶部105に格納された複合機用プログラムを、制御装置2から送信される実行指示に応答してCPU101に実行させる。これにより、複合機1が取得したプログラムに基づいた処理の実行を制御装置2から指示することができる。従って、複合機の有する機能を統合的に制御し、かつ、複合機の提供する機能を柔軟に変更することのできるシステムを実現することができる。
また、本実施形態の制御装置2は、この複合機1と通信可能に接続されるものであり、複合機用プログラムを格納する送信プログラム記憶部238と、送信プログラム記憶部238から複合機用プログラムを読み取って複合機1に送信する複合機プログラム送信部237と、複合機1に対して、複合機プログラム送信部237が送信した複合機用プログラムの実行指示を送信する複合機機能制御部235とを備えた構成となっている。
上記構成によれば、複合機プログラム送信部237によって、複合機用プログラムが送信プログラム記憶部238から読み取られるとともに、複合機1へ送信される。これにより、複合機1は、自身の有していないプログラムを制御装置から取得し、取得したプログラムに基づいて、工場出荷時にはできなかった新規の処理を実行することができるようになる。さらに、複合機機能制御部235によって、複合機プログラム送信部237が送信した複合機用プログラムの実行指示が、複合機1に対して送信される。これにより、制御装置2が送信したプログラムの実行を制御装置2から指示することができる。従って、複合機の有する機能を統合的に制御し、かつ、複合機の提供する機能を柔軟に変更することのできるシステムを実現することができる。
なお、複合機1に接続される制御装置2は複数台であってもよく、さらには、複合機1に対して複合機用プログラムを送信する制御装置と、当該複合用プログラムの実行指示を送信する制御装置とが、別の装置であってもよい。
また、制御装置2の複合機機能制御部235は、複合機プログラム送信部237が送信した複合機用プログラムのみならず、複合機プログラム送信部237が送信せずに元から複合機1が有していたプログラムの実行指示も送信する構成となっている。
上記構成によれば、制御装置2は、工場出荷時には複合機1が有しておらず、かつ、自機が提供したプログラムと、複合機1が元から有していたプログラムとの双方についての実行指示を送信することができるため、複合機1が元から有していたプログラムに基づいた処理と、制御装置2が提供したプログラムに基づいた処理とを組み合わせた連携処理を行わせることができる。従って、組み合わせに応じて、様々な連携処理を複合機1に実行させることができる。
また、本実施形態の複合機1の記憶部105には、実行指示の受け付けを許可する制御装置の識別情報が示された制御装置制限情報が格納され、ジョブマネージャ17bが、実行指示を送信した制御装置の識別情報をも受信する構成となっている。そして、ジョブマネージャ17bは、受信した識別情報によって示される制御装置2が、制御装置制限情報に識別情報が示されている制御装置の中に含まれているか否かを判定し、判定結果が「否」である場合に、複合機用プログラムをCPU101に実行させない構成となっている。
上記構成によれば、制御装置制限情報に識別情報が示されていない制御装置からの実行指示をジョブマネージャが許可しないので、不正な制御装置2から複合機1が実行指示を受け付けてしまうのを防止することができる。
同様に、本実施形態の複合機1の記憶部105に格納される複合機用プログラム管理テーブルには、図19に示すように、実行指示の受け付けを許可するユーザIDが、複合機用プログラムごとに示されており、ジョブマネージャ17bが、複合機用プログラムの実行を操作パネル6への入力により指示したユーザIDをも受信する構成となっている。そして、ジョブマネージャ17bは、複合機用プログラムの実行指示とともに受信したユーザIDが、実行指示を受信した複合機用プログラムの実行指示の受け付けを許可するユーザIDの中に含まれているか否かを判定し、判定結果が「否」である場合に、複合機用プログラムをCPU101に実行させない構成となっている。
上記構成によれば、ユーザ制限情報に識別情報が示されていないユーザからの実行指示をジョブマネージャ17bが許可しないので、不正なユーザが複合機1に複合機用プログラムの実行を指示するのを防止することができる。また、複合機用プログラム管理テーブルには、実行指示の受け付けを許可するユーザIDが、複合機用プログラムごとに示されているので、ユーザに応じて複合機用プログラムの実行権限を切り替えることができる。
また、本実施形態の複合機1は、複合機用プログラムがCPU101によって実行された回数をジョブマネージャ17bが、プログラムごと、かつ、ユーザごとにカウントし、カウントした実行回数をプログラムごと、かつ、ユーザごとに複合機用プログラムごとに複合機用プログラム管理テーブルに格納する構成となっている。
上記構成によれば、各複合機用プログラムが複合機1において何回実行されたかを知ることができるので、課金システムの構築や複合機用プログラムの利用統計を取得するのに応用することができる。
課金システムの具体例としては、複合機1に、ジョブマネージャ17bによってカウントされた実行回数に基づいて、複合機用プログラムの使用の対価となる課金情報を算出する課金情報処理部(課金情報処理手段)を設けることが挙げられる。この場合、課金情報処理部は、複合機用プログラムを1回利用したときの単価情報を複合機用プログラムごとに有しており、カウントされた実行回数に単価を乗算することにより、ユーザに請求する課金情報を得ることができる。そして、ジョブマネージャ17bは、カウントされた実行回数をユーザの決済ごとにリセットすることにより、決済と次の決済との間の期間における実行回数をカウントするものであってもよい。
また、課金システムの他の具体例としては、プリペイドカードなどにより、予めユーザから代金を受け取っておき、受け取った代金に応じた実行回数の上限を設定しておくことが挙げられる。この場合、上記実行回数カウント手段によってカウントされた実行回数が上記の上限に達している場合に、複合機用プログラムを上記コンピュータに実行させないようジョブマネージャ17bを構成すればよい。そして、ジョブマネージャ17bは、カウントされた実行回数をユーザの決済ごとにリセットすることにより、決済と次の決済との間の期間における実行回数をカウントするものであってもよい。
また、本実施形態の複合機1の記憶部105には、図19に示すように、複合機用プログラムとともにそのバージョン情報も格納され、プログラム登録管理アプリ18hが、制御装置2に対して、記憶部105に格納された複合機用プログラムのバージョン情報を送信する構成となっている。
そして、本実施形態の制御装置2の送信プログラム記憶部238には、図7に示すように、複合機用プログラムとともにそのバージョン情報も格納され、複合機プログラム送信部237が、複合機1の有している複合機用プログラムのバージョン情報を複合機1から受信し、受信したバージョン情報と、送信プログラム記憶部238に格納された自身の有している複合機用プログラムのバージョン情報とを比較し、送信プログラム記憶部238に格納されたバージョン情報によって示されるバージョンが、受信したバージョン情報によって示されたバージョンよりも新しい場合に、送信プログラム記憶部238に格納された複合機用プログラムを複合機1に送信するモードを有した構成となっている。
上記構成によれば、制御装置2の送信プログラム記憶部238に格納されている複合機用プログラムのうち、複合機1が有しているプログラムよりもバージョンが古いものについては、複合機プログラム送信部237が複合機1に対して送信しない。従って、制御装置2が有している全ての複合機用プログラムが送信されることはなく、プログラムの更新を効率的に行うことができる。
また、本実施形態の複合機1は、複合機用プログラムの実行に必要な時間を推定する実行時間推定アプリ18iを備え、ジョブマネージャ17bが、実行時間推定アプリ18iによって推定された時間を閾値と比較して、推定された時間が閾値よりも大きい場合には、複合機用プログラムをCPU101に実行させない構成となっている。
上記構成によれば、制御装置2からプログラムの実行指示があっても、実行時間推定アプリ18iによって推定された実行時間が閾値よりも大きい場合には、CPU101がプログラムを実行しない。従って、ネットワークを介して指示された処理によって、複合機1が長時間専有されてしまうのを防止することができる。
さらに、複合機1のジョブマネージャ17bは、実行時間推定アプリ18iによって推定された実行時間が閾値よりも大きい場合は、制御装置2に対して、複合機用プログラムの実行を拒絶したことを示す拒絶通知を送信する。
そして、制御装置2は、複合機1から送信された拒絶通知を受信すると、実行が拒絶された複合機用プログラムと同様の機能を有し、かつ、自機のCPU131が実行可能な制御装置用プログラムをCPU131に実行させるアプリケーション指示部236を備えた構成となっている。
より具体的には、制御装置2の記憶部135には、図28に示すように、制御装置用プログラムの識別情報と複合機用プログラムの識別情報とが対応関係が示された制御装置用プログラム管理テーブルが格納されており、アプリケーション指示部236が、記憶部135に格納された制御装置用プログラムの中から、複合機1において実行が拒絶された複合機用プログラムに対応する制御装置用プログラムを制御装置用プログラム管理テーブルに基づいて特定するとともに、特定した制御装置用プログラムを自機のCPU131に実行させる構成となっている。
上記構成によれば、複合機用プログラムと、それに対応する制御装置用プログラムが複数組ある場合であっても、制御装置用プログラム管理テーブルにより、複合機用プログラムに対応する制御装置用プログラムを特定することができ、複合機1において実行が拒絶された処理を、制御装置2に代替的に実行させることができる。
さらに、制御装置2は、複合機用プログラムを制御装置用プログラムに変換して記憶部135に格納するプログラム変換部239をさらに備えた構成となっている。
上記構成によれば、制御装置2が複合機用プログラムに対応する制御装置用プログラムを有していない場合であっても、プログラム変換部239によって、複合機用プログラムが制御装置用プログラムに変換されるので、制御装置2は、複合機1において実行が拒絶された処理を代替的に実行することができる。
また、本実施形態の複合機1は、画像読取処理、画像形成処理、および通信処理を含む処理を実行するサービス層13と、制御装置2から、サービス層13によって実行される処理を組み合わせてなる連携処理の実行指示を受信するWebサービス層17と、当該Webサービス層が受信した実行指示に対応する第1制御コマンドを出力するOSAアプリ層18と、OSAアプリ層18が出力する第1制御コマンドと、サービス層13が受け付け可能な第2制御コマンドとの対応関係が示されたコマンド変換テーブルを格納する記憶部105と、OSAアプリ層18から出力された第1制御コマンドに対応する上記第2制御コマンドを上記コマンド変換テーブルに基づいて特定するとともに、特定した第2制御コマンドをサービス層13に対して出力するOpenI/F層19とを備えた構成となっている。
通常、サービス層13の詳細な構成は、複合機1の有するハードウェアに依存するため、複合機1に固有の構成となる。そのため、サービス層13が受け付け可能な第2制御コマンドも複合機1の機種によって異なるものとなる。
しかしながら、上記の構成によれば、OpenI/F層19が、第1制御コマンドを受け付け、当該第1制御コマンドに対応する第2制御コマンドをコマンド変換テーブルから特定し、特定した第2制御コマンドをサービス層13に対して出力する。これにより、第2制御コマンドが上述したように複合機1の機種に依存するものであっても、OpenI/F層19が受け付けることができる第1制御コマンドを複合機1の機種に依存しないものにすることができる。
これにより、外部の制御装置2が複合機1を制御する場合、制御装置2は、複合機1の機種に依存しない第1制御コマンドの基となる実行指示を複合機1に出力すればよい。その結果、制御装置2から複合機1に対して新たな処理の実行指示を行う場合であっても、複合機1によらず共通した第1制御コマンドの基となる実行指示を生成するように制御装置2を開発すればよく、その開発効率が向上する。
そして、上記コマンド変換テーブルにおいて、第1制御コマンドは、複数の第2制御コマンドに対応付けられていてもよい。
上記構成によれば、連携処理の実行を指示する単一の第1制御コマンドに基づいて、連携処理を構成する複数の要素処理が第2制御コマンドに基づいて実行される。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。