しかし、上記では、デバイスを使用するためには、各クライアントにデバイスドライバをインストールする必要があり、このデバイスドライバはOSに依存して動作するため、クライアントの処理負荷が大きくなる。また、デバイスメーカ側も、各クライアントのOSの種類ごとに、対応したデバイスドライバを開発する必要があり、開発コストが大きくなるという問題がある。
本発明は、上記の問題点に鑑みたものであり、クライアントにデバイスドライバをインストールすることなくデバイスを制御することができるネットワークシステムおよびプログラムを提供することを目的とする。
本発明のネットワークシステムは、アプリケーションを実行する1以上のアプリケーション実行サーバと、当該アプリケーション実行サーバにアプリケーションの実行を要求する1以上のクライアント端末と、当該クライアント端末の操作に伴って動作する1以上のデバイスと、当該デバイスを制御する1以上のデバイスサーバと、を有し、少なくともアプリケーション実行サーバとクライアント端末、デバイスサーバとデバイス、アプリケーション実行サーバとデバイスサーバ、クライアント端末とデバイス、がそれぞれネットワーク接続されたネットワークシステムであって、アプリケーション実行サーバは、クライアント端末から、デバイス動作を伴うアプリケーション実行要求を受信する実行要求受信手段と、アプリケーション実行要求の受信に伴ってデバイスを制御するためのデバイス制御情報を生成し、デバイスサーバに送信するデバイス制御情報送信手段と、デバイス制御情報の送信に対するデバイスサーバからの応答受信に伴って、アプリケーションの実行結果を含む第1応答データを生成し、クライアント端末に送信する第1応答データ送信手段と、を備え、クライアント端末は、アプリケーション実行サーバからの第1応答データの受信に伴って、デバイスに対しデバイス動作要求を送信する動作要求手段と、デバイス動作要求に対するデバイスの動作結果を含む第2応答データを受信する動作結果受信手段と、を備え、デバイスサーバは、アプリケーション実行サーバからデバイス制御情報を受信し、制御対象となるデバイスに応じてコマンド変換したコマンド変換情報を、デバイス別のキューに保存するコマンド変換情報保存手段と、アプリケーション実行サーバに対し、コマンド変換情報の保存に伴う応答を送信する保存応答手段と、を備え、デバイスは、クライアント端末からのデバイス動作要求の受信に伴って、デバイスサーバに対しデバイスコマンド要求を送信するコマンド要求送信手段と、デバイスコマンド要求に対してデバイスサーバがデバイス別のキューから取り出したコマンド変換情報を受信し、当該コマンド変換情報に従って動作する動作手段と、動作手段の動作結果を、第2応答データとしてクライアント端末に送信する動作結果送信手段と、を備えたことを特徴とする。
この構成によれば、クライアント端末が、デバイス動作を伴うアプリケーション実行要求を送信すると、アプリケーション実行サーバは、当該アプリケーション実行要求に基づいて、対象となるデバイスを制御するためのデバイス制御情報を生成し、デバイスサーバに送信する。デバイスサーバは、デバイス制御情報を対象となるデバイスに応じてコマンド変換し、デバイス別のキューに保存する。そして、デバイスサーバは、アプリケーション実行サーバに対してデバイス制御情報に係る処理が完了した旨の応答を送信する。アプリケーション実行サーバは、当該応答に伴って、アプリケーションの実行結果を第1応答データとして生成し、当該第1応答データをクライアント端末に送信する。クライアント端末は、受信した第1応答データに基づいて、対象となるデバイスに対してデバイス動作要求を送信する。デバイス動作要求を受信したデバイスは、デバイスサーバに対してデバイスコマンドを要求し、デバイスサーバから当該デバイスに対応するデバイス別キューに保存されているコマンド変換情報を受信する。そして、デバイスは、このコマンド変換情報に基づいて自身を動作させ、その動作結果をクライアント端末に送信し、クライアント端末が当該動作結果を受信することで、一連のデバイス動作に関する処理が完了する。これにより、デバイスサーバが各デバイスの制御情報を管理すると共に、各デバイスのデバイスドライバの役目を果たすため、クライアント端末にデバイスドライバをインストールすることなく、クライアント端末からの動作要求に基づき、デバイスを使用することができる。また、クライアント端末にデバイスドライバが不要になるため、デバイスの使用に係るクライアント端末の処理の負荷を軽減することができる。さらに、デバイスメーカにとっては、各クライアント端末のOSの種類毎にデバイスドライバを作成する必要がなくなり、これに係る開発コストを削減できるといった効果がある。
この場合、アプリケーション実行サーバおよびデバイスは、HTTPサーバとHTTPクライアントと、を備え、デバイスサーバは、HTTPサーバを備え、クライアント端末は、プラグイン機能を有しない単機能ブラウザを備え、アプリケーション実行サーバ、クライアント端末、デバイスサーバおよびデバイスは、ハイパーテキスト転送プロトコルに基づいて通信を行うことが好ましい。
この構成によれば、クライアント端末は、単機能ブラウザを使用して、アプリケーション実行サーバおよびデバイスとハイパーテキスト転送プロトコル(HTTP)に基づいて通信を行うことで、クライアント端末の環境(クライアント端末のOSの種類等)に依存することなく、デバイス(例えば、プリンタ、スキャナ等の周辺機器)にアクセスすることができる。また、クライアント端末はOSの種類やブラウザに依存したプラグインモジュールが不要であるため、例えば、プラグインモジュールが提供されておらず、デバイスが使用できないといったことがなくなる。なお、ここで言う単機能ブラウザとは、プラグインモジュールをインストールしていない標準のブラウザである。
これらの場合、第1応答データには、少なくともデバイスを特定するデバイス特定情報およびデバイスの動作を指定する動作情報を含むタグが挿入されており、動作要求手段は、タグの情報に基づいて、デバイス動作要求を送信することが好ましい。
また、これらの場合、動作要求手段は、受信した第1応答データに、少なくともデバイスを特定するデバイス特定情報およびデバイスの動作を指定する動作情報を含むタグを挿入し、当該タグの情報に基づいて、デバイス動作要求を送信することが好ましい。
これらの構成によれば、アプリケーション実行サーバによりデバイス特定情報および動作情報を含むタグが挿入された第1応答データ、またはクライアント端末により動的にデバイス特定情報および動作情報を含むタグを挿入した第一応答データに基づいて、デバイス動作要求を送信する。これにより、アプリケーション実行サーバとデバイスとのドメインが異なる場合においても、アプリケーション実行サーバとデバイスとがシームレスに連携することができる。また、クライアント端末を使用するユーザは、デバイスに関する情報を意識することなくデバイスを使用することができる。
これらの場合、デバイスは、デバイス本体とデバイスアダプタと、で構成され、デバイス本体は、デバイスアダプタを介してクライアント端末およびデバイスサーバと接続され、デバイスアダプタは、クライアント端末からのデバイス動作要求に基づき、デバイスサーバに対しデバイスコマンド要求を送信することが好ましい。
この構成によれば、デバイスアダプタを介してデバイス本体と、クライアント端末およびデバイスサーバと、をネットワーク接続できる。そして、デバイスアダプタによりクライアント端末からのデバイス動作要求等を受信すると共に、この要求に伴いデバイスサーバに対してデバイスコマンド要求を送信してデバイス本体の動作制御ができる。これにより、デバイス本体が直接ネットワークに接続できない場合でも、クライアント端末からネットワークを介してデバイスを使用することができる。
これらの場合、アプリケーション実行サーバは、デバイスサーバに対し、デバイスを専有して使用するためのデバイス専有要求を送信するデバイス専有要求手段を、さらに備え、デバイスサーバは、デバイス専有要求に基づき、当該デバイスの使用を単一のアプリケーション実行サーバに限定するデバイス排他制御手段と、専有されたデバイスに対して、他のアプリケーション実行サーバから使用要求が有った場合、他のアプリケーション実行サーバに対して、当該デバイスの使用を禁止する旨を通知する通知手段と、を備えたことが好ましい。
この構成によれば、アプリケーション実行サーバからのデバイス専有要求により、デバイスサーバは、対象となるデバイスの排他制御を行う。これにより、単一のアプリケーション実行サーバで、該当するデバイスを専有することができ、例えば、アプリケーション実行サーバで、デバイス動作を伴う優先度の高い処理を行う場合等、該当するデバイスを専有することで処理遅延を防止できる。なお、デバイス専有要求がされていないデバイスに関しては、複数のアプリケーション実行サーバで共有して使用可能である。
これらの場合、アプリケーション実行サーバとクライアント端末、デバイスサーバとデバイス、がそれぞれインターネット接続されていることが好ましい。
この構成によれば、アプリケーション実行サーバおよびデバイスサーバをインターネット上に配置することで、クライアント端末およびデバイスの設置場所に拘らず、上記両サーバにアクセスし、アプリケーションおよびデバイスを使用することができる。
これらの場合、アプリケーション実行サーバは、POSサーバとして機能し、クライアント端末は、POS端末として機能することが好ましい。
この構成によれば、各POS端末にアプリケーションやデバイスドライバをインストールする必要がないため、POS端末の低廉化を図ることができると共に、保守・管理に要する時間やコストを軽減できる。
これらの場合、アプリケーション実行サーバに接続されると共に、当該アプリケーション実行サーバと同様の処理を行うアプリケーション代理実行サーバと、デバイスサーバに接続されると共に、当該デバイスサーバと同様の処理を行う代理デバイスサーバと、をさらに備え、アプリケーション代理実行サーバと代理デバイスサーバと、がネットワーク接続され、アプリケーション代理実行サーバは、アプリケーション実行サーバが異常状態となった場合、アプリケーション実行サーバの処理を代理実行し、代理デバイスサーバは、デバイスサーバが異常状態となった場合、デバイスサーバの処理を代理実行することが好ましい。
この構成によれば、アプリケーション実行サーバが異常状態の場合、アプリケーション代理実行サーバにより、クライアント端末からの処理依頼を代理実行することができる。また、デバイスサーバが異常状態の場合には、代理デバイスサーバにより、デバイスからのデバイスコマンド要求依頼を代理実行することができる。これにより、アプリケーション代理サーバをアプリケーション実行サーバのバックアップサーバとして使用することができると共に、クライアント端末はアプリケーション実行サーバの不具合を意識することなく、アプリケーションの実行結果を取得することができる。また、代理デバイスサーバをデバイスサーバのバックアップとして使用できるため、デバイスサーバの状態を意識することなく、確実にデバイスを動作させることができる。なお、異常状態とは、正常状態でない状態であり、例えば、アプリケーション実行サーバのアプリケーションからの応答がない場合や、アプリケーション実行サーバまたはデバイスサーバが故障した場合をいう。
この場合、アプリケーション実行サーバとアプリケーション代理実行サーバとの間、およびデバイスサーバと代理デバイスサーバとの間で、アプリケーション実行要求に関する情報の同期を取ることが好ましい。
この構成によれば、アプリケーション実行サーバとアプリケーション代理実行サーバの同期を取ることができ、例えば、アプリケーション実行サーバが異常状態になった場合でも、クライアント端末は、アプリケーション実行サーバに実行要求した場合の実行結果と同一の実行結果をアプリケーション代理実行サーバから取得することができる。また、デバイスサーバと代理デバイスサーバの同期を取ることで、例えば、デバイスサーバが異常状態になった場合でも、デバイスは、デバイスサーバに要求した場合の応答結果(コマンド変換情報や印刷データ)と同一の応答結果を代理デバイスサーバから取得することができる。
これらの場合、アプリケーション実行サーバとアプリケーション代理実行サーバ、デバイスサーバと代理デバイスサーバ、がインターネット接続され、アプリケーション実行サーバ、デバイスサーバ、クライアント端末およびデバイスは、LAN接続されていることが好ましい。
この構成によれば、アプリケーション実行サーバ、デバイスサーバ、クライアント端末およびデバイスがLAN接続されるため、アプリケーション実行サーバおよびデバイスサーバをインターネット上に設置する場合と比べ、アプリケーション実行サーバとクライアント端末との間、およびデバイスサーバとデバイスとの間の応答速度を速くすることができる。
これらの場合、デバイスは、当該デバイスの設定サービスを行うためのデバイス設定手段を備え、クライアント端末は、デバイス設定手段による設定サービスを使用し、デバイスの設定を行うことが好ましい。
この構成によれば、クライアント端末から設定サービスを使用してデバイスの設定を行うことができるため、デバイスに入力装置を設ける必要がなく、簡単に且つ低コストでデバイスの設定を行うことができる。なお、ここでいう設定サービスとは、WebページによるUIやWebサービスAPI等によりデバイスの初期設定(IPアドレス、通信対象となるデバイスサーバ名等の設定)を行うものである。
これらの場合、デバイスサーバは、制御対象となるデバイスの環境設定サービスを行うためのデバイス環境設定手段を備え、クライアント端末は、デバイス環境設定手段による環境設定サービスを使用し、デバイスの環境設定を行うことが好ましい。
この構成によれば、デバイスサーバが提供するデバイスの環境設定サービスを使用することで、クライアント端末から制御対象となるデバイスの環境設定(デバイスの登録・削除、デバイス名・IDの設定、デバイスのプロパティ設定等)を行うことができるため、デバイス毎に環境設定用の入力装置を設ける必要がなく、簡単に且つ低コストでデバイスの環境設定を行うことができる。なお、ここでいう環境設定サービスとは、WebページによるUIやWebサービスAPI等によりデバイスの環境設定を行うものである。
これらの場合、アプリケーション実行サーバとデバイスサーバと、が単一のサーバとして構成されていることが好ましい。
この構成によれば、アプリケーション実行サーバとデバイスサーバとを1台のサーバで構成することで、アプリケーション実行サーバとデバイスサーバとの間のデータ通信が不要となり、システムの処理速度が向上する。また、低コストでシステムを構築することができると共に、システム管理が容易になる。
本発明のプログラムは、コンピュータを、上記に記載のネットワークシステムにおけるアプリケーション実行サーバまたはデバイスサーバの各手段として機能させるためのものであることを特徴とする。
このプログラムを用いることにより、クライアント端末にデバイスドライバをインストールすることなく、クライアント端末からの動作要求に基づきデバイスを動作させることができる。
以下、添付の図面を参照して、本実施形態に係るネットワークシステムについて説明する。本実施形態に係るネットワークシステムは、クライアント端末にデバイスドライバをインストールすることなく、クライアント端末からのデバイス動作要求に基づき、対象となるデバイスを使用することができるシステムである。以下、本発明のネットワークシステムを、スーパーやコンビニエンス・ストア等の店舗にて使用されるPOSシステムに適用した場合を例に挙げて説明する。なお、本発明のデバイスとは、キーボードデバイスやポインタデバイス以外の非標準デバイスを対象とする。
図1に示すように、本発明の一実施形態に係るPOSシステム1(ネットワークシステム)は、オペレータによって商品情報が入力され、清算金額を算出する複数のPOS端末2(図1では2台)と、POS端末2とインターネット6で接続される共に、当該POS端末2を管理するPOSサーバ3(アプリケーション実行サーバ)と、POS端末2とインターネット6で接続され、POS端末2の構成要素である各種デバイス5を管理するデバイスサーバ4と、から構成されている。POSサーバ3およびデバイスサーバ4をインターネット6上に設置することで、POS端末2の設置場所に拘らずアクセスすることが可能となり、多数のユーザに同一品質のPOSサービスおよびデバイスサービスを提供することができる。
POSサーバ3は、いわゆるWebアプリケーションサーバとして構築され、図2に示すように、CPU11(Central Processing Unit)、ROM12(Read Only Memory)、RAM13(Random Access Memory)、HDD14(Hard Disk Drive)、入力デバイス15、ディスプレイ16、入出力インターフェース(Input/Output)17、通信インターフェース18を備え、ROM12内に記憶された制御プログラムに従って、RAM13内のデータの処理を行う。HDD14には、HTTPサーバ21、HTTPクライアント22、POSアプリケーション23(Webアプリケーション)、商品マスタ24(データベース)が記憶されている。
POSサーバ3は、HTTPサーバ21を介して、ハイパーテキスト転送プロトコル(HTTP)に基づいてPOS端末2(ホスト装置51のブラウザ71)と通信を行う。つまり、POSサーバ3のCPU11は、POS端末2(ホスト装置51)からのデバイス動作を含むアプリケーション実行要求を、通信インターフェース18を介してHTTPリクエストとして受信し(実行要求受信手段)、当該アプリケーション実行要求に対する実行結果をHTML形式やXML形式のデータ(ページ)としてPOS端末2に送信(応答)する(第1応答データ送信手段)。この場合、CPU11は、POS端末2からデバイス動作を含むアプリケーション実行要求を受信すると、その応答データとして、動作対象となるデバイス5(例えば、印刷装置54、スキャナ等の周辺機器)を特定するデバイス特定情報(当該デバイス5のIPアドレス)、デバイス5の動作を指定する動作情報(例えば、デバイス操作のためのAPI等の情報)等をタグとして挿入したデータ(ページ)、あるいは、後述するデバイスサーバ4での処理結果等をHTML形式、若しくはXML形式のデータ(ページ)としてPOS端末2に送信する。
一方、デバイスサーバ4(HTTPサーバ41)との通信は、POSサーバ3のHTTPクライアント22を介して、SOAP(Simple Object Access Protocol)に基づいて行う(転送プロトコルはHTTPを使用)。POSサーバ3のCPU11は、上記のデバイス動作を含むアプリケーション実行要求に基づいてデバイス制御情報(対象となるデバイス5の情報)を生成し、当該デバイス制御情報と処理対象となるデータ(例えば、印刷データ等)と、をHTTPリクエストとしてデバイスサーバ4に送信する(デバイス制御情報送信手段)。そして、デバイスサーバ4から当該リクエストに対する処理結果を受信する。なお、デバイス制御情報は、XML形式(若しくは、HTML形式)のデータとして生成される。
POSアプリケーション23は、POS端末2からの要求に基づいて決済処理を行うためのものである。例えば、POS端末2から商品の入力情報が送信されると、CPU11は、POSアプリケーション23を実行し、当該入力情報に基づいて、商品マスタ24から商品コード、商品名、金額に関する情報を抽出し、レシートの印刷およびPOS端末2のカスタマディスプレイ52の表示に用いる商品データを生成する。また、CPU11は、POS端末2からの入力情報や生成した上記商品データからレシートに印刷するための決済情報印刷データを生成する。これらの生成したデータは、POS端末2からのアプリケーション実行要求に伴い、上記のデバイス制御情報と共にデバイスサーバ4に送信される。なお、ここで生成される各データは、HTML形式、若しくはXML形式のデータである。
また、POSサーバ3のCPU11は、POS端末2を使用するユーザ(従業員)のアカウント管理を行い、ユーザの識別を行う。CPU11は、POS端末2から送信されるユーザIDおよびパスワードを受信し、POSサーバ3に登録されているものと一致するか否かを認証する。認証が成功した場合は、POSサーバ3へのアクセスを許可し、失敗した場合は、再度ユーザIDおよびパスワードを入力させる、あるいはアクセス拒否通知を送信するなどの処理を実行する。
デバイスサーバ4は、Webアプリケーションサーバとして構築され、図2に示すように、CPU31、ROM32、RAM33、HDD34、入力デバイス35、ディスプレイ36、入出力インターフェース37、通信インターフェース38を備え、ROM32内に記憶された制御プログラムに従って、RAM33内のデータの処理を行う。HDD34には、HTTPサーバ41、デバイス管理アプリケーション42(Webアプリケーション)、デバイス管理データベース43が記憶されている。
デバイスサーバ4は、HTTPサーバ41を介して、SOAPに基づいてPOSサーバ3と通信を行う(転送プロトコルはHTTPを使用)。つまり、デバイスサーバ4のCPU31は、POSサーバ3(HTTPクライアント22)からのデバイス制御情報および処理対象となるデータ(印刷データ等)を、通信インターフェース38を介してHTTPリクエストとして受信する。そして、CPU31は、デバイス管理アプリケーション42により、デバイス管理データベース43を参照して当該デバイス制御情報を制御対象となるデバイス5に対応するようにコマンド変換し、その変換したコマンド変換情報を、デバイス別のキューに保存する(コマンド変換情報保存手段)。その後、CPU31は、POSサーバ3に対し、コマンド変換情報の保存処理に伴う結果(保存の成功/失敗)をXML形式のデータとして送信(応答)する(保存応答手段)。なお、デバイス管理データベース43には、各デバイス5に対応するデバイスドライバの情報が記録されており、CPU31は、この情報に基づいて、デバイス制御情報を制御対象となるデバイス5に即したコマンドに変換する。また、POSサーバ3からの各処理要求に対してジョブIDを付与し、例えば、印刷のキャンセル処理等が発生した場合に、当該ジョブIDを指定して処理を行う。
また、デバイスサーバ4は、HTTPサーバ41を介して、HTTPに基づいてデバイス5(あるいは、デバイスアダプタ53)とも通信を行う。デバイスサーバ4のCPU31は、デバイス5(HTTPクライアント86、96)からのデバイスコマンド要求をHTTPリクエストとして受信する。そして、当該デバイスコマンド要求に基づいて、対象となるデバイス5用のキューに保存したデバイス制御情報(コマンド等)を順番に取り出し、応答データとしてデバイス5に送信する。また、デバイス5側でデータ出力やデータの書き込みを行うための対象となるデータが有る場合には、当該データを対象となるデバイス5で処理可能な形式のデータに変換し、上記のデバイス制御情報と合わせて送信する。
また、デバイスサーバ4のCPU31は、デバイス5のアカウント管理を行い、デバイス5の識別を行う。CPU31は、デバイス5から送信されるデバイスIDおよびパスワードを受信し、デバイスサーバ4に登録されているものと一致するか否かを認証する。認証が成功した場合は、デバイスサーバ4へのアクセスを許可し、失敗した場合は、デバイスサーバ4のアクセスを拒否すると共に、デバイス5に対してその旨を通知する。これにより、確実にデバイス5を識別することができ、誤って別のデバイス5にデータを送信する等のトラブルを防止することができる。
また、デバイスサーバ4は、自身が管理する各デバイス5の環境設定を行うための環境設定サービスを備え、POS端末2(ホスト装置51)等にデバイス環境設定機能を提供する(デバイス環境設定手段)。この環境設定サービスでは、例えば、デバイス5の登録・削除、デバイス名・IDの設定、デバイス5のプロパティ設定等を行うことができる。なお、この環境設定サービスは、例えば、WebページによるUI(User Interface)やWebサービスAPI(Application Program Interface)として提供することが好ましい。これにより、デバイス5毎に環境設定用の入力装置を設ける必要がなく、簡単に且つ低コストでデバイス5の設定を行うことができる。
一方、POS端末2は、POSサーバ3から商品データを取得するホスト装置51(クライアント端末)と、商品名や売上金額等を表示するカスタマディスプレイ52(デバイス本体)と、カスタマディスプレイ52をホスト装置51にネットワーク接続するためのデバイスアダプタ53と、レシートに決済情報を印刷する印刷装置54と、を備え、これらはLAN55により接続されている(図1参照)。
ホスト装置51は、図2に示すように、CPU61、ROM62、RAM63、HDD64、入出力インターフェース65、標準入力デバイス66、通信インターフェース67を備え、HDD64には、ブラウザ71(Webブラウザ)が記憶されている。CPU61は、ROM62内に記憶された制御プログラムに従って、RAM63内のデータの処理を行う。標準入力デバイス66としては、キーボード72、バーコードスキャナ73(バーコードリーダ)を備え、CPU61は、キーボード72による入力およびバーコードスキャナ73による読み取りによって、POSサーバ3から商品コードや商品名、金額等に関する商品データを取得する。
ブラウザ71は、プラグインモジュールを有さない単機能ブラウザ(標準ブラウザ)であり、CPU61は、このブラウザ71を使用して、通信インターフェース67を介してネットワーク接続(インターネット接続、またはLAN接続)されたPOSサーバ3、およびカスタマディスプレイ52(デバイスアダプタ53)や印刷装置54等のデバイス5と通信を行う。この通信は、HTTPに基づいて行われ、http(s)://x.x.x.x/のようなURIを指定することで、POSサーバ3および各デバイス5と接続することにより行われる。
CPU61は、ブラウザ71を使用して、標準入力デバイス66からの入力情報に基づき、POSサーバ3にアプリケーション実行要求を送信する。この時、POSサーバ3からの応答データをカスタマディスプレイ52に表示、あるいは印刷装置54で印刷する等のデバイス動作を伴う場合は、上記アプリケーション実行要求にデバイス動作を伴う旨の情報を含めて送信する。そして、CPU61は、POSサーバ3から動作対象となるデバイス5(カスタマディスプレイ52や印刷装置54等)を特定する情報(デバイス特定情報)、デバイス5の動作を指定する動作情報等をタグとして挿入したHTML形式、若しくはXML形式の応答データを受信(取得)する。その後、CPU61は、受信した応答データに基づいて、対象となるデバイス5に対してデバイス動作要求を送信する(動作要求手段)。また、CPU61は、デバイス5からデバイス動作要求に対する動作結果を含む応答データを受信し(動作結果受信手段)、この応答データによりデバイスの動作結果を判別し、所定の処理を行う。つまり、デバイス5を動作させる場合、ホスト装置51は、ブラウザ71を使用して、デバイス動作要求(HTTPリクエスト)をデバイス5に送信するだけでよく、従来のようにホスト装置51自身でデバイス5を制御する必要がない。これにより、ホスト装置51には、ホスト装置51の環境(OSの種類等)に依存したデバイスドライバが不要となる。また、ブラウザ71は、単機能ブラウザでよく、プラグインモジュールを必要としないため、ホスト装置51の環境に依存することなく、デバイス5にアクセスすることができる。
なお、デバイス5からの応答データには、デバイス動作の成功/失敗の情報のみならず、デバイス5が生成したデータ(画像データや、文書データ等)も含まれる。この場合、ホスト装置51のCPU61は、当該データをPOSサーバ3に送信(アップロード)することが可能である。また、POSサーバ3からの応答データ内に、デバイス5に関する情報(デバイス5のアドレス)を含むタグが挿入されているため、POSサーバ3とデバイス5とのドメインが異なる場合でも、問題なくデバイス5にアクセスが可能(クロスサイトアクセスが可能)となり、POSサーバ3とデバイス5とがシームレスに連携することができる。これにより、ユーザは、デバイス5に関する情報を意識することなくデバイス5にアクセスすることができる。なお、当該タグは、POSサーバ3側で応答データ内に挿入しても良いし、あるいは、ホスト装置51側でタグを生成し、動的に応答データに挿入するようにしてもよい。
カスタマディスプレイ52は、標準入力デバイス66により入力された(読み取られた)商品情報を表示し、顧客に対して購入商品の一覧、金額等を提示する。本実施形態で説明するカスタマディスプレイ52は、単体ではネットワーク接続が不可能なものを想定しており、デバイスアダプタ53を介して、ホスト装置51とLAN55で接続されると共に、デバイスサーバ4とインターネット6接続される。これにより、ネットワーク接続ができないデバイス5であっても、ホスト装置51からネットワークを介してデバイス5を使用することができる。
デバイスアダプタ53は、CPU81、記憶部82および通信インターフェース83を有し、記憶部82には、HTTPサーバ85およびHTTPクライアント86を備えている。デバイスアダプタ53は、HTTPサーバ85を介して、HTTPに基づいてホスト装置51(ブラウザ71)と通信を行う。CPU81は、通信インターフェース83を介してLAN55で接続されたホスト装置51(ブラウザ71)から、HTTPリクエストとしてカスタマディスプレイ52への表示要求(デバイス動作要求)を受信する。そして、CPU81は、ホスト装置51から受信したカスタマディスプレイ52への表示要求に基づき、HTTPクライアント86を介して、デバイスサーバ4(HTTPサーバ41)に対し、デバイスコマンド要求(HTTPリクエスト)を送信する(コマンド要求送信手段)。この時、デバイスアダプタ53(CPU81)は、自身のデバイスIDおよびパスワードを合わせて送信し、デバイスサーバ4による認証を受ける。そして、認証成功後、CPU81は、デバイスサーバ4から、当該要求に対応するデバイスコマンド(デバイス制御情報)および表示データを受信する。そして、CPU81は、このデバイスコマンドおよび表示データに基づいて、カスタマディスプレイ52を制御して所望の文字や画像を表示させ(動作手段)、その結果(正常に表示できたか否か)を、HTTPサーバ85を介してホスト装置51(ブラウザ71)に送信する(動作結果送信手段)。
なお、上記では、デバイスアダプタ53をハードウェアとして構成しているが、これに限らず、ソフトウェアとして構成してもよい。この場合、ソフトウェアデバイスアダプタ87をホスト装置51に組み込み、カスタマディスプレイ52に所望の情報を表示させることが好ましい(図3参照)。
印刷装置54は、レシート上に決済情報を印刷するレシートプリンタであり、CPU91、記憶部92、印刷部93および通信インターフェース94を備え、通信インターフェース94を介してホスト装置51とLAN55で接続されると共に、デバイスサーバ4とインターネット6で接続されている。また、記憶部92には、HTTPサーバ95と、HTTPクライアント96と、を有している(図2参照)。
印刷装置54は、HTTPサーバ95を介して、HTTPに基づいてホスト装置51(ブラウザ71)と通信を行う。CPU91は、HTTPサーバ95により、通信インターフェース94を介してLAN55で接続されたホスト装置51(ブラウザ71)から、HTTPリクエストとして印刷要求(デバイス動作要求)を受信する。そして、CPU91は、ホスト装置51から受信した印刷要求に基づき、HTTPクライアント96を介して、デバイスサーバ4(HTTPサーバ41)に対し、デバイスコマンド要求(HTTPリクエスト)を送信する(コマンド要求送信手段)。この時、印刷装置54(CPU91)は、自身のデバイスIDおよびパスワードを合わせて送信し、デバイスサーバ4による認証を受ける。そして、認証成功後、CPU91は、デバイスサーバ4から、当該要求に対応するデバイスコマンド(デバイス制御情報)および印刷データを受信する。そして、CPU91は、このデバイスコマンドおよび印刷データに基づいて、印刷部93を制御して印刷処理を行い(動作手段)、その印刷処理結果(成功/失敗)を、HTTPサーバ95を介してホスト装置51(ブラウザ71)に送信する(動作結果送信手段)。
また、印刷装置54は、自身の初期設定を行うための設定サービスを備え、ホスト装置51等にデバイス設定機能を提供する(デバイス設定手段)。この設定サービスは、例えば、WebページによるUI(User Interface)やWebサービスAPI(Application Program Interface)として提供することが好ましい。これにより、印刷装置54(デバイス5)に入力装置を設ける必要がなく、簡単に且つ低コストで印刷装置54(デバイス5)の設定を行うことができる。
次に、図4および図5を参照して、本発明のPOSシステム1において、ホスト装置51からデバイス5を動作させる手順について説明する。ここでは、対象となるデバイス5として、印刷装置54を例に挙げ、入力された商品情報に基づいてレシートを印刷する手順について説明する。まず、ホスト装置51がPOSサーバ3に接続すると、POSサーバ3は、ホスト装置51を使用するユーザの認証処理を行う(S01,詳細は後述)。ユーザ認証終了後、ホスト装置51は、標準入力デバイス66(キーボード72やバーコードスキャナ73)により商品情報を入力(読み取り)し、POSサーバ3に対して入力した商品情報に基づくレシート印刷要求(アプリケーション実行要求)を送信する(S02)。このレシート印刷要求は、ホスト装置51のブラウザ71から、HTTPリクエストとしてPOSサーバ3(HTTPサーバ21)に送信される。
POSサーバ3は、レシート印刷要求を受信すると(S03,実行要求受信手段)、当該要求に基づき、POSアプリケーション23を実行してXML形式のデバイス制御情報(印刷装置54に関する情報)および印刷対象となる決済情報印刷データを生成し(S04)、デバイスサーバ4に送信する(S05,デバイス制御情報送信手段)。デバイスサーバ4は、デバイス制御情報および決済情報印刷データを受信し(S06)、当該デバイス制御情報を制御対象となる印刷装置54に対応するようにコマンド変換してコマンド変換情報(デバイスコマンド)を生成し(S07)、当該印刷装置54用のキューに保存する(S08,コマンド変換情報保存手段)。そして、デバイスサーバ4は、POSサーバ3に対し、この保存処理に伴う結果(保存の成功/失敗)を送信する(S09,保存応答手段)。
POSサーバ3は、デバイスサーバ4から処理結果を受信すると(S10)、HTML形式(若しくはXML形式)の第1応答データ(ページ)を生成する(S11)。この第1応答データには、印刷装置54の特定情報(IPアドレス等)、印刷装置54の起動に関する情報(起動用のAPI名等)、印刷装置54からのコールバックを受けるためのJavaScript(登録商標)の関数が埋め込まれている。そして、POSサーバ3は、ホスト装置51に対して当該第1応答データ(ページ)を送信する(S12,第1応答データ送信手段)。
ホスト装置51(ブラウザ71)は、第1応答データを受信し(S13)、当該第1応答データに基づいて、印刷装置54(HTTPサーバ95)に対してHTTPリクエストとして印刷装置起動要求(デバイス起動要求)を送信する(S14,動作要求手段)。
印刷装置54(HTTPサーバ95)は、ホスト装置51からの印刷装置起動要求を受信し(S15)、これに伴い、デバイスサーバ4に対して自身のデバイスIDおよびパスワード送信する。そして、デバイスサーバ4は、受信した印刷装置54のIDとパスワードに基づいて印刷装置54の認証処理(デバイス認証)を行う(S16,詳細は後述)。デバイス認証終了後、印刷装置54(HTTPクライアント96)は、デバイスサーバ4(HTTPサーバ41)に対し、HTTPリクエストとしてデバイスコマンド要求を送信する(S17,コマンド要求送信手段)。
デバイスサーバ4は、デバイスコマンド要求を受信し(S18)、この要求に基づいて、保存済みのコマンド変換情報(デバイスコマンド)を、当該印刷装置54用のキューから取り出すと共に、印刷対象である決済情報印刷データを印刷装置54で出力可能な形式のデータに変換して印刷装置54に送信する(S19)。印刷装置54は、デバイスコマンドおよび決済情報印刷データを受信し(S20)、当該デバイスコマンドに基づいて、印刷部93を動作させて印刷処理を行う(S21,動作手段)。その後、印刷装置54は、印刷処理の実行結果(成功/失敗等)および印刷装置54の状態に関する情報を第2応答データとして生成する(S22)。この第2応答データは、JSONP(JSON with Padding)によりJavaScript(登録商標)のコールバック関数として生成される。そして、印刷装置54は、当該第2応答データをホスト装置51に送信する(S23,動作結果送信手段)。
第2応答データを受信したホスト装置51は(S24,動作結果受信手段)、当該第2応答データに基づき、印刷装置54の動作結果を判別する(S25)。具体的には、ホスト装置51は、第2応答データのJavaScript(登録商標)を実行し、コールバック関数を呼び出すことで、印刷装置54の動作結果を取得し、判別する。印刷処理が正常に終了した場合(S26:Yes)、ホスト装置51は、印刷装置54での印刷処理が正常終了した旨をPOSサーバ3に通知し(S27)、POSサーバ3は、その通知を受信する(S28)。一方、印刷処理が正常終了しなかった場合(S26:No)、ホスト装置51は、印刷装置54に、再度、印刷装置起動要求を送信したり、あるいは印刷装置54の状態に基づいたエラー処理を行う(S29)。
次に、図6を参照して、ホスト装置51を使用するユーザの認証の手順について説明する。まず、ホスト装置51は、ユーザによりユーザIDおよびパスワード(以下、ユーザ認証情報)が入力されると(S31)、当該ユーザ認証情報をPOSサーバ3に送信する(S32)。ユーザ認証情報を受信したPOSサーバ3は、ユーザ認証用データベース(図示省略)を参照し、当該ユーザIDに対するパスワードが登録されたものと一致するか認証を行う(S33)。認証が成功した場合(S34:Yes)、POSサーバ3は、当該ユーザ(ホスト装置51)にPOSアプリケーション23の使用を許可する(S35)。一方、認証が失敗した場合(S34:No)、POSサーバ3は、ホスト装置51(ユーザ)に対してその旨を通知し(例えば、ユーザ認証情報の入力画面を再表示する等)、ホスト装置51(ユーザ)は、再度ユーザIDおよびパスワードを入力し(S36)、再入力したユーザIDおよびパスワードをPOSサーバ3に送信する(S32)。なお、パスワードを連続して所定回数間違って入力した場合、POSサーバ3への接続を切断したり、あるいは、当該ユーザIDを無効にする等の処理をすることが好ましい。
次に、図7を参照して、デバイスサーバ4にアクセスするデバイス5(あるいは、デバイスアダプタ53)の認証の手順について説明する。まず、デバイス5は、デバイスIDおよびパスワード(以下、デバイス認証情報)をデバイスサーバ4に送信する(S41)。当該デバイス認証情報を受信したデバイスサーバ4は、デバイス認証用データベース(図示省略)を参照し、当該デバイスIDに対するパスワードが登録されたものと一致するか認証を行う(S42)。認証が成功した場合(S43:Yes)、デバイスサーバ4は、当該デバイス5に自身(デバイスサーバ4)へのアクセスを許可する(S44)。一方、認証が失敗した場合(S43:No)、デバイスサーバ4は、デバイス5に対してその旨を通知する。認証失敗の通知を受けたデバイス5は(S45)、ホスト装置51に対し、認証が失敗してデバイスサーバ4にアクセスできない旨を通知し(S46)、ホスト装置51は、その通知に基づいてエラー処理を行う(S47)。
次に、図8を参照して、印刷装置54に障害が発生した場合の動作手順について説明する。まず、印刷装置54は、エラー(障害)を検出すると(S51)、印刷装置54は、自身の印刷動作を停止する(S52)。そして、印刷装置54は、自身のイベント情報やステータス情報(以下、デバイス情報)等をHTTPリクエストとしてデバイスサーバ4に送信する(S53)。デバイスサーバ4は、デバイス情報を受信し(S54)、当該デバイス情報に基づいて、デバイス管理アプリケーション42により、当該印刷装置54の状態(ステータス)を変更する等の処理を行うと共に(S55)、デバイス情報を受信した旨の通知(受信完了通知)を印刷装置54に送信する(S56)。受信完了通知を受信した印刷装置54は、自身の動作を停止させたまま、ホスト装置51からのデバイス動作要求に対する応答データを、JSONP(JSON with Padding)によりJavaScript(登録商標)のコールバック関数として生成し(S57)、当該応答データをホスト装置51に送信する(S58,動作結果送信手段)。ホスト装置51は、印刷装置54からの応答データを受信すると(S59,動作結果受信手段)、コールバック関数を呼び出して印刷装置54の状態を判別し(S60)、その状態(エラー内容)に応じたエラー処理を行う(S61)。
次に、図9および図10を参照して、印刷装置54の印刷動作の一時停止動作、復旧動作、中止動作の動作手順について説明する。なお、これらの動作手順は、送受信するデータの内容が異なるだけで、基本的に同一であるため、ここでは、印刷装置54の一時停止動作について説明する。
まず、ホスト装置51は、ブラウザ71を使用し、POSサーバ3(HTTPサーバ21)に対して、HTTPリクエストとして印刷動作一時停止要求(アプリケーション実行要求)を送信する(S71)。POSサーバ3は、印刷動作一時停止要求を受信し(S72,実行要求受信手段)、当該印刷動作一時停止要求に基づいて、POSアプリケーション23を実行してHTML形式(若しくはXML形式)の第1応答データ(ページ)を生成する(S73)。この第1応答データには、印刷装置54の特定情報(IPアドレス等)、印刷装置54の一時停止に関する情報(一時停止用のAPI名等)、印刷装置54からのコールバックを受けるためのJavaScript(登録商標)の関数が埋め込まれている。そして、POSサーバ3は、ホスト装置51に対して当該第1応答データ(ページ)を送信する(S74,第1応答データ送信手段)。
ホスト装置51(ブラウザ71)は、第1応答データを受信し(S75)、当該第1応答データに基づいて、印刷装置54(HTTPサーバ95)に対してHTTPリクエストとして印刷装置一時停止要求(デバイス動作要求)送信する(S76,動作要求手段)。印刷装置54は、ホスト装置51からの印刷装置一時停止要求を受信すると(S77)、自身のイベント情報やステータス情報(以下、デバイス情報)等をHTTPリクエストとしてデバイスサーバ4に送信する(S78)。デバイスサーバ4は、デバイス情報を受信し(S79)、当該デバイス情報に基づいて、デバイス管理アプリケーション42により、当該印刷装置54の状態(ステータス)を一時停止状態に変更する等の処理を行うと共に(S80)、デバイス情報を受信した旨の通知および一時停止用のデバイスコマンド(応答通知)を印刷装置54に送信する(S81)。応答通知を受信した印刷装置54は、自身の動作を一時停止させ(S82,動作手段)、一時停止処理の結果(成功/失敗等)および印刷装置54の状態(ステータス)に関する情報を第2応答データとして生成する(S83)。この第2応答データは、JSONP(JSON with Padding)によりJavaScript(登録商標)のコールバック関数として生成される。そして、印刷装置54は、当該第2応答データをホスト装置51に送信する(S84,動作結果送信手段)。
第2応答データを受信したホスト装置51は(S85,動作結果受信手段)、当該第2応答データに基づき、印刷装置54の動作結果を判別する(S86)。具体的には、ホスト装置51は、第2応答データのJavaScript(登録商標)を実行し、コールバック関数を呼び出すことで、印刷装置54の動作結果を取得し、判別する。一時停止処理が正常に終了した場合(S87:Yes)、ホスト装置51は、印刷装置54の一時停止に係る処理を完了する(S88)。一方、一時停止処理が正常終了しなかった場合(S87:No)、ホスト装置51は、印刷装置54に、再度、印刷装置一時停止要求を送信したり、あるいは印刷装置54の状態に基づいたエラー処理を行う(S89)。なお、印刷動作を中止させる場合、印刷装置54およびデバイスサーバ4は、上記の処理に合わせて、中止対象となる印刷動作の印刷ジョブを削除する処理を行う。
以上のように、本実施形態によれば、ホスト装置51(クライアント端末)からデバイス5を動作させる場合、デバイスサーバ4が各デバイス5の制御情報を管理すると共に、各デバイス5のデバイスドライバの役目を果たすため、ホスト装置51にデバイスドライバをインストールすることなく、デバイス5を使用することができる。また、ホスト装置51にデバイスドライバが不要になるため、デバイス5の使用に係るホスト装置51の処理の負荷を軽減することができる。さらに、デバイスメーカにとっては、各ホスト装置51のOSの種類毎にデバイスドライバを作成する必要がなくなり、これに係る開発コストを削減できるといった効果がある。
また、各POS端末2(ホスト装置51)にPOSアプリケーション23やデバイスドライバをインストールする必要がないため、POS端末2(ホスト装置51)の低廉化を図ることができると共に、保守・管理に要する時間やコストを軽減できる。
なお、図11に示すように、上述したPOSシステム1に、POSサーバ3が異常状態の場合にホスト装置51からの処理要求を代理実行する代理POSサーバ101(アプリケーション代理実行サーバ)と、デバイスサーバ4が異常状態の場合にデバイス5からの処理要求を代理実行する代理デバイスサーバ102と、を導入し、POSサーバ3、デバイスサーバ4およびPOS端末2を同一LAN55上に、代理POSサーバ101および代理デバイスサーバ102をインターネット6上に設置するようにしてもよい。この場合、POSサーバ3と代理POSサーバ101との間で、ホスト装置51からの実行要求の処理状況、商品マスタ24の情報、ユーザ認証情報(ユーザIDやパスワード)等のデータの同期を所定間隔で取り、POSサーバ3が異常状態になり、代理POSサーバ101に処理が移行した場合においても、確実に処理が引き継がれるようにする。また、デバイスサーバ4と代理デバイスサーバ102との間でも、POSサーバ3(代理POSサーバ101)からのデバイス制御情報、デバイス5からの要求に対する処理状況、デバイス管理データベース43の情報、デバイス認証情報(デバイスIDやパスワード)等のデータの同期を所定間隔で取り、デバイスサーバ4が異常状態になり、代理デバイスサーバ102に処理が移行した場合においても、確実に処理が引き継がれるようにする。これにより、ホスト装置51は、POSサーバ3に実行要求した場合の実行結果と同一の実行結果を代理POSサーバ101から取得することができる。一方、デバイス5は、デバイスサーバ4にコマンド要求した場合の応答結果(コマンド変換情報や印刷データ)と同一の応答結果を代理デバイスサーバ102から取得することができる。つまり、結果として、ホスト装置51から各デバイス5を確実に動作させることができる。
また、代理POSサーバ101をPOSサーバ3のバックアップサーバとして、代理デバイスサーバ102をデバイスサーバ4のバックアップとして使用することができるため、ホスト装置51はPOSサーバ3の不具合を意識することなく、アプリケーションの実行結果を取得することができると共に、デバイスサーバ4の状態を意識することなく、確実にデバイス5を動作させることができる。なお、異常状態とは、正常状態でない状態であり、例えば、POSサーバ3のPOSアプリケーション23や、デバイスサーバ4のデバイス管理アプリケーション42からの応答がない場合や、POSサーバ3またはデバイスサーバ4が故障した場合をいう。また、POSサーバ3、デバイスサーバ4およびPOS端末2(ホスト装置51とデバイス5)を同一のLAN55に設置するため、POSサーバ3およびデバイスサーバ4がインターネット6上に設置される場合と比べ、応答速度を早くすることができ、POSシステム1全体の処理効率を向上させることができる。
また、本実施形態では、POSサーバ3とデバイスサーバ4と、を別個のサーバで構成しているが、これに限らず、POSサーバ3とデバイスサーバ4と、を単一のサーバとして構成してもよい。これにより、POSサーバ3とデバイスサーバとの間のデータ通信が不要となり、POSシステム1全体の処理速度が向上する。また、低コストでシステムを構築することができると共に、システム管理が容易になる。
また、本実施形態では、デバイス5として、カスタマディスプレイ52や印刷装置54(レシート印刷装置)を例に挙げて説明したが、これに限らず、家庭用プリンタ、イメージスキャナ、各種ストレージ等のコンシューマ向けデバイス、オフィス向けデバイスおよび業務用デバイスに適用することが可能である。
また、上述した実施例のPOSシステム1は一例であり、用途は限定されない。例えば、オフィスにおいてレーザプリンタとイメージスキャナを使用した帳票入出力システム等に、本発明は適用可能である。
また、デバイスサーバ4は、自身が管理するデバイス5の使用を単一のPOSサーバ3(アプリケーション実行サーバ)に限定する機能を有することが好ましい(デバイス排他制御手段)。この場合、POSサーバ3(アプリケーション実行サーバ)は、デバイスサーバ4に対し、デバイス5を専有して使用するためのデバイス専有要求を送信し(デバイス専有要求手段)、デバイスサーバ4は、デバイス専有要求に基づき、当該デバイス5の使用を当該POSサーバ3(アプリケーション実行サーバ)に限定する。そして、専有されたデバイス5に対して、他のPOSサーバ3(アプリケーション実行サーバ)から使用要求が有った場合、当該デバイス5の使用を禁止する旨を通知する(通知手段)。これにより、例えば、POSサーバ3(アプリケーション実行サーバ)で、デバイス動作を伴う優先度の高い処理を行う場合等、該当するデバイス5を専有することで処理遅延を防止できる。
また、上記の例に示した、POSシステム1の機能をプログラムとして提供することも可能である。また、そのプログラムを記憶媒体(図示省略)に格納して提供することも可能である。記録媒体としては、CD−ROM、フラッシュROM、メモリカード(コンパクトフラッシュ(登録商標)、スマートメディア、メモリースティック等)、コンパクトディスク、光磁気ディスク、デジタルバーサタイルディスクおよびフレキシブルディスク等を利用することができる。
また、上述した実施例によらず、POSシステム1の装置構成や処理工程等について、本発明の要旨を逸脱しない範囲で、適宜変更も可能である。