以下、本発明の一実施形態を、図面を参照して詳細に説明する。
以下では、自動取引装置を構成する各種の処理部を制御するモジュールのうち、紙幣処理装置である紙幣部を例に説明しているが、例えば、カード・明細票処理装置、通帳処理装置あるいは硬貨処理装置等の自動取引装置が一般的に備えている各種装置を制御する様々なモジュールについても同様に適用することができる。また、以下では、本発明にかかる取引媒体取扱装置の一例として、自動取引装置について記載しているが、ソータ等の紙幣の仕分装置、テラーマシーン等のテラーが扱う装置、中央銀行で利用される装置などにも適用できる。なお、本発明はこれらの実施の形態に限定されるものではない。
本実施例では、モジュール提供元が、制御部側で機能を実現するソフトウェアライブラリを設計し、モジュール提供先へモジュールと合わせて提供することで、適切な使いこなし技術を実現する手段を提案する。本提案によれば、モジュール提供元においては、モジュール提供先へのモジュール使いこなし技術の開示を最小限にとどめ、制御部が持つストレージを活用し追加コストなく運用や保守にかかる多くの機能実現が可能となる。その結果、モジュールの価値を高めることが可能となる。
また、モジュール提供先においては、複雑なモジュール使いこなし技術のすべてを理解する必要はなく、自動取引装置に必要な最小限の理解で充分になるとともに、モジュールを制御する最適なシステム設計ができる。したがって、制御部の資源を最大限有効活用しつつ性能を発揮することができる。さらに、保守等の設計優先度が低くなりがちな機能をモジュール提供元から供給を受けることで設計工数を削減し、短期間かつ高品質に自動取引装置の設計が可能となる。また、制御部に各種変換情報を有することにより、複数種類のモジュール又は複数の銀行で機能を実現した場合であっても、制御部の設計変更の負担を抑制することが可能となる。
図1は、自動取引装置(以下、ATMと呼ぶ。)10の外観斜視図である。ATM10は、金融機関等に設置され、顧客の操作によって現金の預入や引出等の取引を行い、顧客の要求する種々の取引を自動的に実行する装置である。図1に示すように、ATM10は、その内部に、紙幣部11と、カード・明細票部12と、通帳部13と、硬貨部14と、操作部15と、係員操作部16と、を含んで構成されている。
紙幣部11は、紙幣の金種や真偽を判別し、利用者が投入した紙幣を計数して収納したり、操作部15から入力された入金金額等に応じて、紙幣収納庫に収納されている紙幣を繰出して入出金口に排出する等、紙幣に関する処理を行う。
カード・明細票部12は、利用者がATM10との間で取引を行うためのキャッシュカードの受け入れ、カードに記憶された情報の取得、排出、取引記録を印字した明細票を利用者に排出する等、カードや明細票に関する処理を行う。
通帳部13は、利用者がATM10との間で取引を行うための通帳の受け入れ、通帳に記録された情報の取得、排出、取引記録を印字やページめくり等、通帳に関する処理を行う。
硬貨部14は、硬貨の金種や真偽を判別し、利用者が投入した硬貨を計数して収納したり、操作部15から入力された入金金額等に応じて、硬貨収納庫に収納されている硬貨を繰出して入出金口に排出する等、硬貨に関する処理を行う。
すなわち、紙幣部11、カード・明細票部12、通帳部13、及び硬貨部14は、それぞれ対象媒体から、取引に利用される情報(例えば、取引金額、口座情報)を取得する処理である取引処理を行う。また、取引処理には、取引に利用される情報を取得するために、対象媒体を搬送する媒体搬送処理等の動作処理を含んでもよい。
操作部15は、利用者から、取引の種別、入出金金額等、取引に関する様々な情報の入力や指定を受け付ける。
係員操作部16は、運用中に発生した障害の情報や復旧操作情報の案内表示や、保守運用で種々の操作画面情報の表示を行う。
図2は、ATM10の機能的な構成を示すブロック図である。図2に示すように、ATM10は、紙幣部11、カード・明細票部12、通帳部13、硬貨部14、操作部15が、それぞれ制御部20に接続されている。また、制御部20は、ホストコンピュータ等の外部装置に接続するための通信制御部17に接続されている。以下では、紙幣部11を例に、上記各部の具体的な構成を説明する。
紙幣部11は、入出金部112と、識別部113と、一時保留部114と、搬送部115と、カセット116とを有し、これらが紙幣制御部111に接続されている。図2に示すように、紙幣部11は、ATM10全体およびATM10を構成する各部の動作を制御する制御部20からの指示を受け、紙幣の繰出し、搬送等を制御するとともに動作結果を制御部20に報告する紙幣制御部111を核として、紙幣の投入、抜き取りを行なう入出金部112や、紙幣の金種識別を行なう識別部113、取引操作者が投入した紙幣を一時的に保留する一時保留部114、それぞれの部位を接続し紙幣を搬送する搬送部115、紙幣を収納する着脱可能な複数のカセット116から構成されている。なお、紙幣部11によっては、一時保留部114がないことや、入出金部112が入金と出金が完全に別の場所となることや、入出金部112の数が異なることもあり、紙幣部11の構成は、図2に限らない。
図3は、ATM10内の一般的なソフトウェア構成図である。図3に示すように、制御部20には、ATM10の機能や上記各部を管理するための基本的なソフトウェアであるオペレーティングシステム(OS)201と、ATM10や上記各部の動作に必要な様々な情報を記憶するストレージ202と、ATM10の取引操作を受け付けるソフトウェアである業務アプリケーション(AP)203と、業務アプリケーション203と紙幣部11との間で送受信され、紙幣部11等の各部が実行可能なコマンド電文やレスポンス電文を生成する電文提供モジュール(ソフトウェア)であるサービスプロバイダ(SP)204と、上記各部のそれぞれに対応する通信制御部205(紙幣部通信制御部2051、カード・明細票部2052、通帳部通信制御部2053、硬貨部通信制御部2054)と、を有している。
制御部20内で動作するオペレーティングシステム201上では、上記各部に対応する各種媒体を取扱うモジュール(紙幣部11、カード・明細票部12、通帳部13、硬貨部14のそれぞれで実行されるモジュール)と通信制御を行うモジュール用の通信制御部(紙幣部通信制御部2051、カード・明細票部2052、通帳部通信制御部2053、硬貨部通信制御部2054)、各モジュールと通信する電文の生成や編集、解析を行うサービスプロバイダ204、各モジュールの動作を組み合わせて取引動作を実現する業務アプリケーション203が動作する。その他、ストレージ202には、各動作に必要な情報やプログラム、動作結果記録などが記憶される。ここで、サービスプロバイダ204と業務アプリケーション203が明確に区分けされず、一体化している場合もある。
制御部20は、ハードウェアとしては、例えば、CPU(Central Processing Unit)及びメモリから構成され、ATM10を構成する上記各部の機能を実現するためのプログラムをストレージ202に記憶している。制御部20は、例えば、ATM10の電源がONされたタイミングで、上記ストレージ202からプログラムを不図示のメモリに読み出して実行することにより、上記機能を実現する。
なお、上記プログラムは、インストール可能な形式又は実行可能な形式のファイルでUSB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録されて提供したり、インターネット等のネットワークに接続された他のコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより、ストレージ202に提供または配布するように構成しても良い。
図4は、図3に示したソフトウェア構成において、制御部内の各部およびモジュールにおけるコマンド電文やレスポンス電文の流れを示す図である。図4では、紙幣部11が実行するモジュールの場合について示している。なお、以降では、図3に示すモジュールの通信制御部の図示を省略するが、各通信制御部は、モジュールに対し通信制御を行うものとある。
図4に示すように、制御部20では、業務アプリケーション203から取引に関する指示を受けると、サービスプロバイダ204が、その指示毎に、紙幣部11に対するコマンド電文C1を生成、編集して出力する。コマンド電文C1としては、例えば、入金処理などの取引を実行する指示を含むコマンドがある。すなわち、サービスプロバイダ204は、紙幣部11が実施可能なコマンドを生成する。ここで、紙幣部11が実施可能なコマンドとは、紙幣部11が理解できるコマンドを意味し、当該コマンドの情報に従い紙幣部が処理又は動作をするコマンドであってよい。すなわち、コマンドに含まれる情報を変更しなくとも紙幣部11が動作する(紙幣部11を直接動作させることができる)コマンドは、実施可能なコマンドに含まれる。なお、制御部20と紙幣部11との間の通信のために、コマンドを一時的に変更した場合であっても、制御部20と紙幣部11とで利用されるコマンドに含まれる情報が同一の場合は、実施可能なコマンドに含まれる。一方、サービスプロバイダ204や、ファンクションライブラリ206でコマンドに含まれる情報(特にコマンドコード)を変換した場合は、実施可能なコマンドに含まれなくともよい。
紙幣部11は、サービスプロバイダ204からコマンド電文C1を受信すると、そのコマンドに従って処理を実行し、その結果をレスポンス電文R1としてサービスプロバイダ204に返す。レスポンス電文R1としては、例えば、入金取引などの取引で各金種のカセットに収納された紙幣の枚数、偽券と判別された紙幣の枚数、取引の処理が正常終了したか否かを示す取引の処理結果などを含むレスポンスがある。
サービスプロバイダ204は、上記レスポンス電文R1に応じて、業務アプリケーション203にコマンドC1に対応するレスポンスを送信する。業務アプリケーション203は、レスポンスに基づきコマンドC1の結果を外部へ通知する。
図3、4に示したソフトウェア構成では、業務アプリケーション203は、銀行側で定められた仕様で提供され、その業務アプリケーション203の仕様に合致するように、モジュール提供先でサービスプロバイダ204を設計する必要があった。この際、モジュール提供先では、モジュール提供元から提供されるモジュールの機能を最大限に引き出して設計することが求められる。しかし、モジュール提供先では、モジュール提供元から提供されるモジュールの仕様や複雑なコマンド電文やレスポンス電文の構造を必ずしも適切に理解することができないまま、サービスプロバイダ204の設計を行っていた。したがって、モジュール提供元が意図したとおりにモジュールの機能が発揮されているとはいえない場合があった。
そこで、以下に示すように、本実施例では、サービスプロバイダ204からの簡易な指示に従ってモジュールの詳細な機能を実現することができるソフトウェアライブラリをモジュール提供側で設計することにより、モジュール提供先におけるサービスプロバイダ204の設計負担を軽減しつつ、モジュール提供元における技術流出の危険性を低減している。
図5は、図4に示したソフトウェア構成において、モジュール提供元により設計されるソフトウェアライブラリであるファンクションライブラリ(FL)206を配置したATM10内のソフトウェアの構成図である。
ATM10は、ファンクションライブラリ206を備えることにより、従来から実施している取引処理(基本処理ともいう)に加え、拡張処理を容易に実施することが可能となる。取引処理は、取引で利用される情報を取得する処理であり、例えば、入金取引又は出金取引などであり、外部から指定された口座に入金する金額又は外部から指定された口座から出金する金額を紙幣部11が計数する処理などがある。また、外部から投入された現金やカード等の媒体から、取引に利用される情報(例えば、取引金額や口座情報等をいう。)を取得する処理も含まれる。
一方、拡張処理は、取引処理とは異なる処理であり、取引では利用しない情報を取得する処理、取引処理又は拡張処理により取得した情報に基づき、ファンクションライブラリが実施する又は紙幣部11に実施させる処理がある。より具体的には、紙幣部11から状態情報を取得する取得処理と、紙幣部11を動作させる又は紙幣部11に設定をさせる動作処理と、取得処理により取得した情報に基づきファンクションライブラリ206が分析を行う分析処理を含む。取得処理は、例えば、紙幣部11から状態情報(例えば、収納庫毎又は金種などの種別毎に収納されている紙幣の枚数、紙幣部の設定情報、紙幣部の障害情報、ログ情報(紙幣部11の稼働状態を示す稼働ログ、取引処理で紙幣から取得した紙幣画像や記番号などの紙幣ログ))を取得する処理である。また、動作処理は、例えば、取得処理により取得した状態情報に基づき又は外部からの指示により紙幣部11に取引処理とは異なる動作(例えば、紙幣部11の収納している紙幣の計数又は精査など)をさせる又は紙幣部11の設定を変更させる処理である。また、分析処理は、紙幣部11の各部品の稼働ログに基づき、部品の障害発生の予兆検知を行う処理である。
続いて、ファンクションライブラリ206と、サービスプロバイダ204に関して説明する。ファンクションライブラリ206は、サービスプロバイダ204を経由して外部から受信したコマンドに基づき、紙幣部11等の各部が実行可能なコマンド電文を送信し、紙幣部11等の各部から受信したレスポンス電文をサービスプロバイダ204又は業務アプリケーション203が処理できるレスポンス電文として送信する電文提供モジュールであってよい。また、サービスプロバイダ204は、複数の業務アプリケーション203からの指示に基づき共通して実施される共通処理又は共通して利用されるデータの管理を実施する共通処理部を実現するソフトウェア、即ちミドルウェアであってよい。なお、図3、図4でも説明したように、業務アプリケーション203は、サービスプロバイダ204に取引指示を行うが、サービスプロバイダ204と一体化されている場合もある。そのため、以下では、サービスプロバイダ204、ファンクションライブラリ206、紙幣部11間での処理について説明する。
次に、図5に示す処理の概要を説明する。サービスプロバイダ204は、紙幣部11に対する動作指示をファンクションライブラリ206に発行し、ファンクションライブラリ206はその動作指示を受け、紙幣部11への適切な動作指示に変換し紙幣部11へ指示する。なお、図4と同様に本図では通信制御部の図示を省略するが、通信制御部が、モジュールに対し通信制御を行っている。
紙幣部11は指示に従って動作を行い、その結果を、ファンクションライブラリ206に返送する。ファンクションライブラリ206は動作結果に従い、動作記録の収集など必要に応じて紙幣部へ追加動作を指示するなどを行ったり、あるいは動作情報の一部をストレージ202に格納するなど使いこなし技術に従った最適動作を行った上で、サービスプロバイダ204からの指示に対する動作結果をサービスプロバイダ204に返送する。ファンクションライブラリ206は、サービスプロバイダ204からの動作指示をそのまま紙幣部11へ送信することもある、動作指示に含まれる情報を参照し、情報を変更した上で紙幣部11へ送信する場合もある。
続いて、これらのサービスプロバイダ204とファンクションライブラリ206を、取引処理又は拡張処理のいずれかに応じて、使い分ける技術について説明する。例えば、制御部20は、外部からの指示に基づいて取引処理を紙幣部11に実施させる場合、サービスプロバイダ204が紙幣部11に取引処理を実施させる(実施可能な)コマンド(例えば、コマンドコード)を生成する。また、外部からの指示に基づいて拡張処理を紙幣部11に実施させる場合、ファンクションライブラリ206が拡張処理を実施する又は紙幣部11に拡張処理を実施させる(実施可能な)コマンド(例えば、コマンドコード)を生成するようにしてもよい。なお、この場合、外部からの指示はサービスプロバイダ204を経由してもよいし、経由しなくてもよい。また、外部からの指示がサービスプロバイダ204を経由した場合、サービスプロバイダ204は、紙幣部に拡張処理を実施させるコマンドの生成をできないものでよい。
なお、上述のコマンドの生成とは、コマンドを新たに生成する意に限られず、既成のコマンドを利用することも含まれる。また、コマンドコードとは、紙幣部に実施させる処理を示す処理毎に固有の情報である。また、紙幣部が実施可能なコマンドコートとは、紙幣部11が理解できるコマンドコードを意味し、当該コマンドコードの情報に従い紙幣部が処理又は動作をするコマンドであってよい。すなわち、コマンドコードを変更しなくとも紙幣部11が動作する(紙幣部11を直接動作させることができる)コマンドコードは、実施可能なコマンドコードに含まれる。なお、制御部20と紙幣部11との間の通信のために、コマンドコードを一時的に変更した場合であっても、制御部20と紙幣部11とで利用されるコマンドコードが同一の場合は、実施可能なコマンドに含まれる。一方、サービスプロバイダ204や、ファンクションライブラリ206でコマンドコードを変換した場合は、実施可能なコマンドコードには含まれなくともよい。
取引処理と、拡張処理とを異なるミドルウェアのそれぞれが、紙幣部11に実施可能なコマンドを生成するようにしたことで、拡張処理の技術秘匿と機能拡張や変更に伴う設計工数の削減の両立が可能となる。また、この場合、上述のように、ファンクションライブラリ206は、サービスプロバイダ204が生成した紙幣部11に取引処理を実施させるコマンドに関しては、そのまま(コマンドコードを変更することなく)紙幣部11へ送信してもよい。そのまま紙幣部11に送信することにより、取引処理を実施している既存の制御部20のサービスプロバイダ204の設計変更を抑制することが可能となる。
以下では、図5を用いて、制御部20が、取引処理を実施する場合に、ファンクションライブラリ206が取引処理及び拡張処理を紙幣部11に実施させる例について説明する。なお、上記同様取引処理のコマンドコードは、サービスプロバイダ204が生成してもよい。
より具体的には、図5に示すように、制御部20では、業務アプリケーション203から取引に関する指示を受けると、サービスプロバイダ204が、その指示に従って、ファンクションライブラリ206に対するコマンド電文Ca1を生成、編集して出力する。コマンド電文Ca1としては、例えば、入金処理を実行する指示を含むコマンドがある。図5に示すコマンド電文Ca1と、図4に示したコマンド電文C1とは同じ電文を用いることができる。
ファンクションライブラリ206は、サービスプロバイダ204からコマンド電文Ca1を受信すると、そのコマンドに従って、紙幣部11に対するコマンド電文Cb1を生成、編集して出力する。コマンド電文Cb1としては、例えば、上記指示に含まれる入金処理を実行するコマンドのほか、カセットの金種の指定、偽券の取扱方法、紙幣受け付け率の指定を含むコマンドがある。また、コマンド電文Cb1には、現時点における紙幣部11の状態を示す状態情報を取得するためのコマンドが含まれる。上記状態情報を取得するためのコマンドとしては、例えば、ログ情報を収集するコマンドがある。
紙幣部11は、コマンド電文Cb1を受信すると、これらのコマンドに従って処理を実行し、その結果をレスポンス電文Rb1としてファンクションライブラリ206に返す。レスポンス電文Rb1としては、例えば、指定された金種のカセットに収納された紙幣の枚数、偽券と判別された紙幣の枚数、処理した際の紙幣の受け付け率、処理が正常終了したか否かを示す処理結果を含むレスポンスがある。
ファンクションライブラリ206は、上記レスポンス電文Rb1に応じた次の処理を実行するためのコマンド電文Cb2を生成、編集して出力する。例えば、ファンクションライブラリ206は、レスポンス電文Rb1として、指定された金種の紙幣のカセットの収納枚数が、あらかじめ定められた閾値以上である場合やこれ以上紙幣を受け付けられないため入金の取引を停止させる等の問い合わせを含む場合には、他のカセットに回収する指示をコマンド電文Cb2として出力し、コマンド電文Cb2に対するレスポンス電文Rb2を受信する。
以降、ファンクションライブラリ206は、業務アプリケーション203から指示された取引が完了するまで、紙幣部11との間でコマンド電文およびレスポンス電文の受け渡しを行う。紙幣部11から、業務アプリケーションより指示された取引に関する処理の終わりを示すレスポンスRbNを受信すると、ファンクションライブラリ206は、サービスプロバイダ204に業務アプリケーションから指示された取引に関する処理の終わりを示すレスポンスRaNを送信する。サービスプロバイダ204は、当該レスポンスに基づき、業務アプリケーション203により、外部に取引の結果を通知する。
なお、図4の場合と異なり、図5では、サービスプロバイダ204が生成するコマンド電文は、紙幣部11等の各部が実行不能な内容又は実行可能な内容のいずれであってもよい。実行不能な場合、ファンクションライブラリ206は、サービスプロバイダ204により送信された紙幣部11等の各部が実行不能なコマンド電文に基づき、紙幣部11等の各部が実行可能なコマンド電文を生成又は変更し、紙幣部11等の各部から受信したレスポンス電文を、サービスプロバイダ204が処理できるレスポンス電文に変換して、サービスプロバイダ204に送信してもよい(詳細に関しては、後述する。)。一方、ファンクションライブラリ206は、実行可能なコマンドの場合は、そのまま紙幣部11等とへ送信し、紙幣部11から受信したレスポンスをそのままサービスプロバイダ204に返信してもよい。
このように、本実施例では、サービスプロバイダ204と紙幣部11との間にファンクションライブラリ206を設けることにより、サービスプロバイダ204が第一のコマンド(例えば、コマンド電文Ca1)をファンクションライブラリ206に送信し、第一のコマンドに対応する第一のレスポンス(例えば、レスポンスRaN)をファンクションライブラリ206から受信するまでの間に、ファンクションライブラリ206が、サービスプロバイダ204に問い合わせる(レスポンス電文及びコマンド電文の送受信する)ことなく、第一のコマンドに基づき、モジュールに対する複数の第二のコマンド(例えば、コマンド電文Cb1、コマンド電文Cb2)の送信及び複数の第二のコマンドそれぞれに対応する第二のレスポンス(例えば、レスポンス電文Rb1、レスポンス電文Rb2)を受信する。これにより、サービスプロバイダ204は、ファンクションライブラリとの間での、第一のコマンド及び第一のレスポンスの数を抑制することが可能となる。
また、ファンクションライブラリは、一の第二のコマンドに対応する一の第二のレスポンス(例えば、レスポンス電文Rb1)の内容に基づき、一の第二のコマンドの次にモジュールに送信する次の第二のコマンド(コマンド電文Cb2))の種類を判断するようにしてもよい。この場合、ファンクションライブラリは、モジュールに対して、モジュールの状態に適したコマンドを選択して送信することが可能となり、モジュールへのコマンド送信及びレスポンス受信の数の抑制などによるATM10のシステム資源の効率的な利用ができる。
また、外部からの指示に基づき、サービスプロバイダ204が紙幣部11に紙幣を搬送させて実行する入金取引又は出金取引等の取引処理を実行させる上述の第一のコマンドである取引コマンドを送信し、ファンクションライブラリ206は、取引コマンドに基づき、取引では使用されない状態情報を含むログ情報を収集する情報取得コマンドを生成し、紙幣部11に送信し拡張処理を実行してもよい。なお、状態情報は、紙幣部11が紙幣を搬送させたことにより生じる紙幣部11の稼働情報、紙幣部11が取引前若しくは後で保持している紙幣の種類毎の収納情報、紙幣部11の部品毎のエラー情報を示す部品情報などを含む情報であってよい。さらには、ファンクションライブラリ206は、取引コマンドに基づき紙幣部11から取得した情報は、サービスプロバイダ204に送信し、情報取得コマンドに基づき紙幣部11が取得したログ情報は、サービスプロバイダ204には送信しないように処理する。この場合、ファンクションライブラリ206は、ログ情報をストレージ202に収納してもよい。
また、ファンクションライブラリ206は、サービスプロバイダ204により生成された紙幣部11等の各部が実行不能なコマンドに基づき、紙幣部11等の各部が実行可能なコマンドを生成又は変更してもよい。
また、処理の種類(例えば、拡張処理)によっては、サービスプロバイダを204介さずに、ファンクションライブラリ206が外部からの第一のコマンドに基づき紙幣部11が実行可能な一の第二のコマンドを生成し、紙幣部11へ送信し、紙幣部11から受信した一の第二のコマンドに対する一の第二のレスポンスに基づき、紙幣部11が実行可能な他の第二のコマンドを生成し、紙幣部11に送信してもよい。
このように、ファンクションライブラリ206を設け、上述の処理を実施させることで、モジュール提供先では、サービスプロバイダ204を設計する負荷を抑制できるとともに、モジュール提供元では技術流出の懸念がなくなる。また、モジュールの運用や保守に必要な機能において動作履歴を活用することができる。また、図6は、図5に示したモジュールがサブモジュールを含む場合のソフトウェアの構成図である。図6に示す例では、図5に示したモジュールである紙幣部11が、内部に1階層のサブモジュールである識別部113を有している。また、制御部20には、上記識別部113に対応する識別部通信制御部が設けられている(不図示)。すなわち、制御部20は、紙幣部11と接続されると共に、紙幣部11を介さずに識別部113とも接続されている。
制御部20では、業務アプリケーション203から取引に関する指示を受けると、サービスプロバイダ204が、その指示に従って、ファンクションライブラリ206に対するコマンド電文Ca1を生成、編集して出力する。コマンド電文Ca1としては、例えば、入金処理を実行する指示を含むコマンドがある。図5に示すコマンド電文Ca1と、図4に示したコマンド電文C1とは同じ電文を用いることができる。
ファンクションライブラリ206は、サービスプロバイダ204からコマンド電文Ca1を受信すると、そのコマンドを解析し、モジュールである紙幣部11に対するコマンド電文CbM1と、サブモジュールである識別部113に対するコマンド電文CbS1を生成、編集して出力する。コマンド電文CbM1としては、図5の場合と同様のコマンドがある。また、コマンド電文CbS1としては、例えば、紙幣の真偽判定のための閾値の設定を含むコマンドがある。この場合も、コマンド電文CbM1と同様に、現時点における紙幣部11の状態を示す状態情報を取得するためのコマンドを含めてもよい。
識別部113は、コマンド電文CbS1を受信すると、これらのコマンドに従って処理を実行し、その結果をレスポンス電文RbS1としてファンクションライブラリ206に返す。レスポンス電文RbS1としては、例えば、紙幣の真偽判定のための閾値を含むレスポンスがある。
ファンクションライブラリ206は、レスポンス電文RbM1を受信した場合と同様に、上記レスポンス電文RbS1に応じた次の処理を実行するためのコマンド電文CbS2を生成、編集して出力し、業務アプリケーション203から指示された取引が完了するまでコマンド電文およびレスポンス電文の受け渡しを行う。
すなわち、識別部113は、制御部20が紙幣部11へ送信したコマンドに基づき取引処理における紙幣の識別を実施すると共に、制御部20が紙幣部11を介さずに識別部113に送信したコマンドに基づき、取引処理とは異なる処理(例えば、拡張処理)を実施する。
このように、識別部113を、直接(紙幣部11を経由せず)、ファンクションライブラリ206(又は制御部20)と接続することで、識別部113への専用の動作指示や識別部113が持つ多量情報の収集を行うことができる。ここでは、ファンクションライブラリ206は、識別部通信制御部(不図示)を介して識別部113と通信を行なうため、紙幣部11との通信と並行で処理することで、サービスプロバイダ204からコマンドが発行されてからレスポンスを返すまでの処理時間を短縮することができる。
また、ファンクションライブラリ206は、サービスプロバイダ204からの1のコマンド電文に基づき、紙幣部11へのコマンド電文と、識別部113へのコマンド電文を生成してもよい。これにより、サービスプロバイダ204からのコマンド電文の指示の回数を抑制することが可能になり、モジュール提供先では、従来のように、サービスプロバイダ204を設計する必要がなくなるとともに、モジュール提供元では技術流出の懸念がなくなる。なお、本例では、モジュールが1階層の1つのサブモジュールを有している場合について説明したが、モジュールが多数階層の複数のサブモジュールを有している場合にも同様に適用することができる。この場合にはさらに上記処理時間を短縮することができる。続いて、本実施例で行われる処理について説明する。
図7は、ファンクションライブラリ206のライセンス管理や正しいモジュールが接続されているかを検証することを目的としたなりすまし防止機能を持たせた紙幣部接続処理フローの例を示す。本処理は、例えば、ATM10の電源がONされたときに実行される。
紙幣部接続処理(701)では、ファンクションライブラリ206は、紙幣部11と回線接続を行なうコマンド電文を生成し、紙幣部通信制御部2051に出力する。紙幣部通信制御部2051は、所定の通信手順を含むコマンド電文を生成し、紙幣部11に対する回線接続を行う(702)。ファンクションライブラリ206は、紙幣部通信制御部2051から紙幣部11と回線接続できた旨のレスポンス電文を受信したか否かを判定し(703)、接続できた旨のレスポンス電文を受信しなかったと判定した場合(703;No)、紙幣部11からのレスポンス電文に含まれる接続不可を示す理由(例えば、通信タイムアウト、紙幣部11の電源off等のエラーを示すメッセージやコード)をサービスプロバイダ204に通知し(710)、本処理を異常終了させる(713)。
一方、ファンクションライブラリ206は、接続できた旨のレスポンス電文を受信したと判定した場合(703;Yes)、そのレスポンス電文に含まれる紙幣部のタイプ(型式)を示す紙幣部種別や紙幣部のハードウェア毎に固有のシリアル番号等の紙幣部を識別する情報を含む構成情報を読み取る(704)。読み取った構成情報の例を図8に示す。
図8に示すように、構成情報には、モジュールである紙幣部11のハードウェア構成(例えば、カセットの数量、国や地域情報、入出金口の配置等の情報がある。)、シリアル番号、ファームウェアのバージョン数のほか、サブモジュールである識別部のシリアル番号、ファームウェアのバージョン数が含まれている。
続いて、ファンクションライブラリ206は、あらかじめストレージ202に記憶したATM10の有するライセンス許可情報と、ステップ704で読み取った構成情報とを参照し、読み取った構成情報がライセンス許可情報に登録されているか否かを判定する(705)。本例では、ライセンス許可情報がストレージ202に記憶されているが、ファンクションライブラリ206に記憶されていてもよい。ライセンス許可情報は、使用が許可された紙幣部11を識別するための情報である。
ライセンス許可情報の例を図9に示す。ここでは動作を許可するライセンス許可シリアル番号をテーブル形式で保持している。図9では、ある種別(型式XXXXX−XX)の紙幣部について、そのハードウェア構成、ライセンスが許可された複数のシリアル番号が登録されていることがわかる。図9のように、上記シリアル番号をすべて格納するほか、ある番号から他の番号まで、というようにシリアル番号を特定の範囲で指定して許可するか、ある桁の特定数値を指定することにより許可するといった手法により、紙幣部が許可された紙幣部であるか否かを判定してもよい。
ファンクションライブラリ206は、ステップ705で、読み取った構成情報がライセンス許可情報に登録されていないと判定し(705;No)、使用不可と判断したときには、サービスプロバイダ204にその旨を通知し(711)、処理を異常終了させる(713)。この場合、サービスプロバイダ204は、使用不可の情報を外部(ATM10が接続された上位装置やATM10の表示部(例えば、操作部15、係員操作部16))に通知してもよい。
一方、ファンクションライブラリ206は、ステップ705で、読み取った構成情報がライセンス許可情報に登録されていると判定し(705;Yes)、使用可能と判断したときには、紙幣部11に対するコマンド電文を生成し、紙幣部通信制御部2051に出力する。紙幣部通信制御部2051は、所定の通信手順を含むコマンド電文を生成し、紙幣部11の初期化処理を実行するコマンド電文を生成し、紙幣部11は、そのコマンド電文に従って初期化処理を実行する(706)。ファンクションライブラリ206は、紙幣部11が正常に初期化できたことを示すレスポンス電文を、紙幣部通信制御部2051を介して紙幣部11から受信したか否かを判定する(707)。紙幣部11の初期化の例としては、使用するカセットの金種の指定や、紙幣受け付け率の設定がある。
ファンクションライブラリ206は、紙幣部11が正常に初期化できたことを示すレスポンス電文を受信したと判定した場合(707;Yes)には、サービスプロバイダ204に初期化が正常した旨を通知し(708)、接続処理を正常終了する(709)。一方、ファンクションライブラリ206は、紙幣部11が正常に初期化できたことを示すレスポンス電文を受信しなかったと判定した場合(707;No)、初期化ができなかった旨をサービスプロバイダ204に通知し(712)、処理を異常終了する(713)。
図10は、ファンクションライブラリ本体機能の基本処理フローを例として示す。本処理は、例えば、ファンクションライブラリ206が、S701、S1002、S1013を、ATM10の電源がONされたときに実行し、S1003〜S1012、S1014をサービスプロバイダ204からのコマンドの受信に応じて実行してよい。
まず、本処理では、図7に示した紙幣部接続処理を実行し(701)、ファンクションライブラリ206は、紙幣部11に接続できなかったときには接続不可として不可理由をサービスプロバイダ204に通知し、再接続指示待ちとする(1002;No、1013)。一方、ファンクションライブラリ206は、紙幣部11に正しく接続できたときには、サービスプロバイダ204からのコマンドを受信する(1003)。ステップ1003においてサービスプロバイダ204からコマンドを受信したときに次のステップに進み、ファンクションライブラリ206は、コマンドに対応した登録処理内容を処理内容テーブルの中から検索する。
図11は、処理内容テーブルの例を示す図である。処理内容テーブルは、サービスプロバイダ204から受け取ったコマンドに対するモジュールである紙幣部11への処理の順序を決める処理シーケンスを定めたテーブルである。本例ではモジュールへの処理シーケンスを定めているが、図6に示したようにモジュールがサブモジュールを有している場合には、モジュールと同様に定めることができる。
図11に示すように、処理内容テーブルには、サービスプロバイダ204から受け取ったコマンドを識別するための番号と、その番号により識別されるコマンドと、そのコマンドの実行が許可されたものであるか否かを示す許可区分と、そのコマンドを受け取ったときに実行する処理シーケンスとが対応付けて記憶されている。
なお、ファンクションライブラリ206は、モジュールに対して発行するコマンドの種別毎にID等を付与し、コマンドの発行回数をカウントするようにしても良い。また、併せてコマンド発行の時刻や、モジュールの実行した処理が正常に終了したか否かを示す終了情報を管理しても良い。これにより、ファンクションライブラリ206でコマンドによるモジュールの動作状況(動作正常終了の回数や動作異常終了の回数等)を詳細に把握することができる。また、モジュール提供元では、該モジュールの動作状況に基づきモジュール提供元でのファンクションライブラリ206の使用状況を把握することができる。
ファンクションライブラリ206は、このような処理内容テーブルを用いてサービスプロバイダ204から受信したコマンドを検索し、まず、登録の有無および使用許可されているか否かを判定する(1005)。
ファンクションライブラリ206は、サービスプロバイダ204から受信したコマンドが処理内容テーブルに登録されており、かつ使用許可されていると判定した場合(1005;Yes)、次の処理に進む。一方、ファンクションライブラリ206は、サービスプロバイダ204から受信したコマンドが処理内容テーブルに登録されており、かつ使用許可されていないと判定した場合(1005;No)、実行が許可されていないコマンドを受信したとして、処理が実行できない旨をサービスプロバイダ204に返送する(1014)。
一方、ファンクションライブラリ206は、使用許可を確認した場合は(1005;Yes)、モジュールに対してどのような動作を指示するのかを決定するための指示決定処理(1006〜1010)を実行する。ファンクションライブラリ206は、処理対象とするシーケンス番号を初期化する(1006)。このシーケンス番号は、制御部20内のメモリ(不図示)に記憶しておく。
次に、ファンクションライブラリ206は、図11に示した処理内容テーブルを参照し、ステップ1003で受信したコマンドに対応する処理シーケンスのうち、初期化したシーケンス番号に対応するモジュールである紙幣部11へのコマンド電文を生成し、紙幣部通信制御部2051を介して、生成したコマンド電文を紙幣部11に送信する(1007)。ステップ1007で送信されたコマンド電文に従って、紙幣部11が処理を実行すると、ファンクションライブラリ206は、その動作結果を含むレスポンス電文を受信する(1008)。
ファンクションライブラリ206は、モジュールから受信したレスポンス電文を解析してモジュールの動作結果を確認する。ファンクションライブラリ206は、図11に示した処理内容テーブルの現在のシーケンス番号と、モジュールの動作結果とを参照して、次に行うべき処理のシーケンス番号を決定する(1009)。ファンクションライブラリ206は、決定したシーケンス番号がその処理シーケンスの中で最後のシーケンス番号であるか否かを判定し(1010)、決定したシーケンス番号がその処理シーケンスの中で最後のシーケンス番号でないと判定した場合(1010;No)、ステップ1007に戻って以降の処理を繰り返す。
一方、ファンクションライブラリ206は、決定したシーケンス番号がその処理シーケンスの中で最後のシーケンス番号であると判定した場合(1010;Yes)、サービスプロバイダ204へのレスポンス電文を生成し(1011)、サービスプロバイダ204にレスポンス電文を返送する(1012)。
以下、図10に示したステップ1003以降の処理を、より具体的に説明する。ステップ1003において、ファンクションライブラリ206は、入金処理の実行指示を含むコマンド電文をサービスプロバイダ204から受信すると、ステップ1004、1005において、図11に示した処理内容テーブルに入金コマンドとその許可区分が許可であることを確認する。続いて、ファンクションライブラリ206は、ステップ1006において、シーケンス番号を「1」に初期化する。
さらに、ファンクションライブラリ206は、ステップ1007において、入金コマンドに対応する処理シーケンスのうち、初期化したシーケンス番号に対応する順序で行うコマンド電文である入金コマンドを読み取り、モジュールである紙幣部11へのコマンド電文を生成する(C1101)。ファンクションライブラリ206は、生成したコマンド電文を、紙幣部通信制御部2051を介して紙幣部11に送信する。
ファンクションライブラリ206は、ステップ1008において紙幣部11からコマンド電文に対する処理の実行結果を含むレスポンス電文を受信し、その実行結果を解析する。ファンクションライブラリ206は、ステップ1009において、レスポンス電文を解析した結果、紙幣部11における処理が正常終了したと判定した場合にはシーケンス番号2に進み、ログ収集1(例えば、正常ログの収集処理)のコマンド電文を生成する(C1102)。ファンクションライブラリ206は、生成したコマンド電文を、紙幣部通信制御部2051を介して紙幣部11に送信する。さらに、ファンクションライブラリ206は、ステップ1010において、入金処理のシーケンス(図11における番号2のシーケンス)が全て終了したか否かを判定する。この場合には、次のシーケンス番号が指定されていないため、ステップ1011、1012に進み、ファンクションライブラリ206は、紙幣部11から正常ログの収集処理の実行結果を含むレスポンス電文を受信し、その実行結果を解析する。ファンクションライブラリ206は、レスポンス電文を解析した結果、正常ログの収集処理が正常終了したと判定した場合には、入金処理が正常に終了したことを示すレスポンス電文を生成し(C1103)、生成したレスポンス電文をサービスプロバイダ204に送信する。一方、ファンクションライブラリ206は、レスポンス電文を解析した結果、正常ログの収集処理が異常終了したと判定した場合には、ステップ1011、1012において、入金処理が異常終了したことを示すレスポンス電文を生成し(C1104)、生成したレスポンス電文をサービスプロバイダ204に送信する。
上記処理と同様に、ファンクションライブラリ206は、ステップ1009において、レスポンス電文を解析した結果、紙幣部11における処理が正常終了しなかったと判定した場合にはシーケンス番号3に進み、ログ収集2(例えば、障害ログの収集処理)のコマンド電文を生成し(C1105)、生成したコマンド電文を、紙幣部通信制御部2051を介して紙幣部11に送信する。さらに、ファンクションライブラリ206は、ステップ1010において、入金処理のシーケンスが全て終了したか否かを判定する。この場合には、次のシーケンス番号が指定されていないため、ステップ1011、1012に進み、ファンクションライブラリ206は、紙幣部11から異常ログの収集処理の実行結果を含むレスポンス電文を受信し、その実行結果を解析する。
ファンクションライブラリ206は、レスポンス電文を解析した結果、障害ログの収集処理が正常終了したと判定した場合には、入金処理が異常に終了したことを示すレスポンス電文を生成し(C1106)、生成したレスポンス電文をサービスプロバイダ204に送信する。また、ファンクションライブラリ206は、レスポンス電文を解析した結果、障害ログの収集処理が異常終了したと判定した場合には、ステップ1011、1012において、入金処理が異常終了したことを示すレスポンス電文を生成し(C1107)、生成したレスポンス電文をサービスプロバイダ204に送信する。
すなわち、シーケンス番号3の場合、処理の異常終了としては、入金処理自体が異常終了したこと、障害ログ収集が異常終了したことの2つのケースがあるが、このような場合であっても、サービスプロバイダ204に対しては、いずれの場合も入金処理が異常終了したことだけを示すレスポンス電文を生成する。したがって、サービスプロバイダ204に対しては、従来どおり、入金処理が異常終了したことだけがレスポンス電文として通知される。
このように、本実施例では、サービスプロバイダ204から受信した第一のコマンドに従ってモジュールが処理を実行する場合、ファンクションライブラリ206が、その第一のコマンドと処理内容テーブルとを参照し、その第一のコマンドに基づくモジュールとの第二のコマンド/レスポンスのシーケンスを解析し、サービスプロバイダ204から受信した第一のコマンドごとに、モジュールとの第二のコマンド/レスポンスのシーケンスに基づく処理を実施した上で、サービスプロバイダへの第一のレスポンス電文を生成する。言い換えると、ファンクションライブラリは、一の第二のコマンドに対するモジュールからの応答である一の第二のレスポンスの情報に基づき、次にモジュールに送信する他の第二のコマンドを決定する。
より詳細には、制御部が、一の第二のレスポンスの情報毎に、次に生成する他の第二のコマンドの情報を記憶した処理内容情報を有し、ファンクションライブラリは、処理内容情報に基づき、モジュールから受信した一の第二のレスポンスの情報に対応する他の第二のコマンドの情報を含む他の第二のコマンドを送信している。このため、モジュールの提供元では、モジュールの提供先に委ねざるを得なかった機能の設計を自らおこなえる。また、モジュール提供先にとっては、複雑なコマンドレスポンス電文等の解析をすることなくサービスプロバイダの設計ができる。
図12は、上記実施例で送受信されるコマンド電文のフォーマットの例を示す図である。図12に示すように、コマンド電文のフォーマットには、コマンド電文の長さを示す電文長と、サービスプロバイダから送信されたコマンドを示すコマンドコードと、紙幣の受け入れ可能枚数を示す合計受付可能枚数と、金種ごとの受け入れ可能枚数を示す金種1受付可能枚数〜金種4受付可能枚数と、コマンド電文の拡張コマンドを設定するためのリザーブと、電文の妥当性を確認するためのチェックコードとが含まれる。図10、11の例では、サービスプロバイダ204から送信された入金コマンドがコマンドコードに設定されている。
図13は、上記実施例で送受信されるレスポンス電文のフォーマットの例を示す図である。図13に示すように、レスポンス電文のフォーマットには、レスポンス電文の長さを示す電文長と、モジュールが実行したコマンドを示すコマンドコードと、コマンドの実行結果を示す動作結果コードと、コマンド実行時に発生したエラーを示すエラーコードと、コマンドを実行して実際に紙幣が受け入れられた枚数を示す合計受付枚数と、金種ごとの受け入れ枚数を示す金種1受付枚数〜金種4受付枚数と、リジェクトされた紙幣枚数を示すリジェクト件数と、レスポンス電文の拡張コマンドを設定するためのリザーブと、電文の妥当性を確認するためのチェックコードとが含まれる。図10、11の例では、紙幣部11が実行した入金コマンドがコマンドコードに設定されている。
図12、13は入金取引に利用されるコマンドに関し説明したが、出金取引など他の取引に利用される出金コマンドであっても、同様である。すなわち、紙幣取引を指示する紙幣取引コマンドは、コマンドの種別を示すコマンドコードと、紙幣の種類毎に取引可能な枚数を示す取引可能枚数を含んでよい。また、紙幣取引の結果を返信する紙幣取引レスポンスは、当該レスポンスに対応する紙幣取引コマンドの種別を示すコマンドコードと、紙幣部が計数した紙幣の種類毎の枚数である取引枚数を含む。
なお、上記実施例では、レスポンス電文としてリザーブには拡張用のコマンドを設定することなくやり取りした。しかし、例えば、紙幣部11が入金計数動作を実行したときに投入口に返却した紙幣がある場合、その返却紙幣が計数動作を実行した結果リジェクトした紙幣である場合には、再度入金計数動作を実行することで、その返却紙幣を読み取ることができる可能性がある。しかし、返却紙幣が繰出し不良に伴うものであったときは、再度入金計数動作を行なうとジャム異常になる懸念がある。したがって、このような場合には、そのまま返却紙幣有りというレスポンス電文を送信し、その返却紙幣については再度読み取らずに処理を終了させるほうが好ましい場合もある。したがって、図14に示すように、紙幣部11が上記リザーブに投入口繰出し状況1401の判定結果を含めてレスポンス電文を送信してもよい。レスポンス電文はコマンド電文に対して返送されるため、図12に示したコマンド電文のリザーブに、投入口繰出し状況1401を通知するコマンドを設定しておけばよい。このように、図13に示したレスポンス電文例に、投入口繰出し状況等の、紙幣部11を構成する各部の詳細な状況を示す付加情報を含めることにより、そのレスポンス電文を受信したファンクションライブラリ206は、その情報を用いてさらに細かい制御を行なうことができる。
図15は、レスポンス電文に上述した状態情報などの付加情報を含めて返送した場合の処理内容テーブルの例を示す図である。図15では、紙幣部11が入金計数を実行したときに上記付加情報を含めたレスポンス電文を送信する場合の例を示している。また、図16は、上記付加情報を含めた場合のファンクションライブラリ本体機能の基本処理フローを例として示す図である(例えば、拡張処理に含まれる動作処理などがある)。図16では、図10のステップと同一のステップについては同一の符合を付してその説明を省略している。また、図10同様、例えば、ファンクションライブラリ206は、S701、S1002、S1013を、ATM10の電源がONされたときに実行し、S1003〜S1008、S1010〜S1012、S1014、S1061をサービスプロバイダ204からのコマンドの受信に応じて実行してよい。
図10に示したC1101の場合と同様、ステップ1006〜1008では、ファンクションライブラリ206は、初期化したシーケンス番号に対応する順序で行うコマンド電文である入金コマンドを読み取り、上記付加情報として投入口繰出し状況1401を判定するためのコマンドを含むコマンド電文を生成する。そして、ファンクションライブラリ206は、そのコマンド電文を、紙幣部通信制御部2051を介して紙幣部11に送信し、そのコマンド電文にしたがって処理されたレスポンス電文を、紙幣部11から受信し、その実行結果を解析する。
このとき、ファンクションライブラリ206は、ステップ1601において、図15に示した処理内容テーブルを参照し、返却媒体ありかつ繰出し不良なしを示す旨の実行結果を示す投入口繰出し状況1401を含むレスポンス電文を紙幣部11から受信したか否かを判定する(C1501)。ファンクションライブラリ206は、返却媒体ありかつ繰出し不良なしを示す旨の実行結果を示す投入口繰出し状況1401を含むレスポンス電文を受信したと判定した場合、シーケンス番号2に進み、再度入金コマンドを含むコマンド電文を紙幣部11に送信する(C1502)。このように、ファンクションライブラリ206は、紙幣部11から受信したレスポンス電文の付加情報を参照して再度入金コマンドを発行すべきか否かを判定しているので、リジェクト紙幣の低減を図ることができる。
一方、ファンクションライブラリ206は、返却媒体ありかつ繰出し不良なしを示す旨の実行結果を示す投入口繰出し状況1401を含むレスポンス電文を受信したと判定した場合、シーケンス番号3に進み、図10の場合と同様に、ログ収集1を実行し、そのまま処理を終了する。処理を終了する理由は、返却紙幣があっても、繰出し不良が発生していたときには再度入金を行なうとジャムになる可能性があり、そのまま動作終了したほうが高い信頼性が得られるためである。
すなわち、サービスプロバイダから受信した第一のコマンドに基づき、ファンクションライブラリ206が、紙幣部11に第二のコマンドを送信し、紙幣部から状態情報を含む第二のレスポンスを受信し、当該状態情報に応じた処理を実行した上で、サービスプロバイダに第一のレスポンスを送信することで、サービスプロバイダは、複雑な処理を実施する必要がなくなる。
また、上記実施例では、図9に示したように、シリアル番号が登録されている紙幣部11についてのみ図11に示した処理内容テーブルの許可区分を「有」として定義し、コマンドの実行を許可することとした。しかし、モジュールの提供先によって、ライセンスを与えるレベルを分け、どのようなレベルのコマンドを実行させるのかをモジュールの提供元が定めておくことが望ましい場合もある。そこで、以下では、許可区分を「有無」だけでなく、ライセンスレベルに応じて分けて定義する場合について説明する。
図17は、ライセンスレベルを含めて定義したライセンス許可情報の例を示す図である。図17に示すように、本例では、紙幣部種別及び型式に対応付けてライセンスレベルが記憶されている。図17では、ライセンスレベル1(基本機能のみ許可するレベル)、ライセンスレベル2(基本機能および拡張機能を許可するレベル)として定義されているため、シリアル番号1、2の紙幣部については拡張機能として提供されるコマンド電文およびレスポンス電文のやり取りが可能となる。なお、ライセンス許可シリアル番号として紙幣部の製造番号を用いることにより、紙幣部1つ1つの装置を識別することができるが、故障等に伴う紙幣部の入れ替えや修理を考慮する場合、紙幣部の製造番号とは別にライセンス管理専用のユニークな番号を用いてもよい。
図18は、図17に示したライセンス許可情報を用いた場合の処理内容テーブルの例を示す図である。図18に示すように、ライセンスレベルを設けたときの処理内容テーブルには、許可区分に代えて許可区分レベル1801が定義されている。この例では、ライセンスレベルが1、2のいずれの紙幣部でもリセットコマンド、入金コマンド、収納コマンドのそれぞれと、これらのコマンドに対応する処理シーケンスの実行が可能である一方、自動精算コマンドおよびこれに対応する処理シーケンスは、拡張機能であるため、ライセンスレベルが2の紙幣部にのみ許可していることがわかる。以上のように、処理内容テーブルには、複数の取引機能及び拡張機能のコマンドとそのコマンドに対応する処理シーケンスの情報が格納されると共に、紙幣部は複数の取引機能又は拡張機能のうちいずれの機能の実行を許可されているかを指定するライセンス情報をさらに含むようにすることができる。
さらに、出金コマンドについては、ライセンスレベルに応じて、実行する処理シーケンスを分けて定義されている。ライセンスレベルが1の場合には、基本機能として出金処理とログ収集を実行する処理シーケンスである一方、ライセンスレベルが2の場合には、拡張機能として出金処理とログ収集のほか、回収やリセットの実行が可能な処理シーケンスであることがわかる。本例では、1つの処理内容テーブルに複数のライセンスレベルのそれぞれに対応する処理シーケンスを定義しているが、ライセンスレベルごとに処理テーブルを設けてもよい。以上のように、紙幣部毎にライセンスレベルを設定することにより、実行する機能の適否を柔軟に設定することができる。
図19は、図17に示したライセンス許可情報を用いた場合のファンクションライブラリ本体機能の基本処理フローを例として示す図である。図19では、図10のステップと同一のステップについては同一の符合を付してその説明を省略している。また、図10、1619と同様に、一部の処理をATM10の電源がONされたときに実行し、残りの処理をサービスプロバイダ204からのコマンドの受信に応じて実行してよい。
ファンクションライブラリ206は、ステップ103において、入金処理の実行指示を含むコマンド電文をサービスプロバイダ204から受信すると、ステップ1004、1901において、図11に示した処理内容テーブルに入金コマンドとその許可区分レベルを確認する。具体的には、ファンクションライブラリ206は、自装置のシリアル番号に対応するライセンスレベルを図17に示したライセンス許可情報から読み取る。ファンクションライブラリ206は、読み取ったライセンスレベルが図18に示した処理内容テーブルの入金コマンドに対応する許可区分レベルに設定されているか否かを判定し、読み取ったライセンスレベルが上記許可区分レベルに設定されていないと判定した場合には、図10の1014と同様に、処理が実行できない旨をサービスプロバイダ204に返送する。一方、ファンクションライブラリ206は、図10の場合と同様に、ステップ1006以降の処理を実行する。
このように、ファンクションライブラリ206は、モジュールに与えられたライセンスレベルに応じてコマンド電文およびレスポンス電文の実行可否を判定しているので、モジュール提供先が保有するライセンスのレベルに応じて、どのような機能をモジュール提供先に開示するのかを、モジュール提供元主導で設計することができる。
また、上記実施例では、サービスプロバイダ204とファンクションライブラリ206との間のコマンド電文およびレスポンス電文と、ファンクションライブラリ206と紙幣部116との間のコマンド電文およびレスポンス電文とを、同じフォーマットで実行する場合について説明した。しかし、サービスプロバイダ204とファンクションライブラリ206との間のコマンド電文およびレスポンス電文を蓄積して解析する等により、ファンクションライブラリ206がどのようなコマンドを受信した場合にどのような処理シーケンスを実行するのかがモジュール提供先に漏洩し、モジュールの提供元からモジュールの提供先への技術流出の懸念が残る。そこで、以下では、モジュール使いこなし技術の隠蔽化を目的として、コマンド電文の一部を改変した場合について説明する。
図20は、ファンクションライブラリ206とモジュールである紙幣部11との間のコマンド電文のフォーマットの例を示す図である。図12で示したコマンド電文のフォーマットが、サービスプロバイダ204とファンクションライブラリ206との間のコマンド電文とした場合を例に説明する。図12では、ファンクションライブラリ206がサービスプロバイダ204から受け取るコマンド電文のコマンドコードの値が$1000であるところ、図20では、紙幣部11がファンクションライブラリ206から受け取るコマンド電文のコマンドコード2001の値が$7100となっていることがわかる。すなわち、ファンクションライブラリ206は、サービスプロバイダ204からコマンド電文を受信すると、そのコマンド電文に含まれるコマンドコードの値に所定値を加える等して演算した後の値に変換し、紙幣部11に送信するコマンド電文に含まれるコマンドコードの値に設定している。
このように、ファンクションライブラリ206が、コマンドコードを変更してモジュールに送信することで、サービスプロバイダ204とモジュールとを、同じコマンド電文で直接接続することがなくなり、モジュールの使いこなし技術の流出を防止することができ、ファンクションライブラリ206の必要性を高めることができる。なお、本例では、コマンドコードを変換する場合の一例について説明したが、コマンド電文が盗み見られた場合でもコマンドシーケンスの秘匿化を行なうため、ファンクションライブラリ206にコマンド電文の全体をスクランブルしたり、暗号化する機能を持たせてもよい。
また、上記実施例では、ファンクションライブラリ206からサービスプロバイダ204にレスポンス電文を送信する際に、処理シーケンスで異常終了となったときのエラーコードが同じである前提で説明した。しかし、ATM10を使用するクライアントのニーズやATM10が設置された地域、モジュールの供給先のニーズ等によっては、一律に同じ体系のエラーコードを採用しないほうが好ましい場合もある。
例えば、ATM10を使用するクライアント側でどのような対応をすればよいのかを容易に把握できるように、標準的なエラーコードの体系よりも簡易な体系のエラーコードを望む場合もある。そこで、以下では、標準的なエラーコードを改変や拡大してファンクションライブラリ206からサービスプロバイダ204に提供する場合について説明する。
図21は、標準的なエラーコードを改変や拡大した場合のファンクションライブラリ本体機能の基本処理フローを例として示す図である。図21では、図10のステップと同一のステップについては同一の符合を付してその説明を省略している。また、図10、1619と同様に、一部の処理をATM10の電源がONされたときに実行し、残りの処理をサービスプロバイダ204からのコマンドの受信に応じて実行してよい。また、図21では、ファンクションライブラリ206と紙幣部11との接続を行う場合の処理を例示している。
ファンクションライブラリ206は、ステップ1005において、図11に示した処理内容テーブルを用いてサービスプロバイダ204から受信したコマンドを検索し、登録の有無および使用許可されていないと判定した場合(1005;No)、その旨を示すエラーコードを不図示のメモリに記憶し(2101)、ステップ2106に進む。
一方、ファンクションライブラリ206は、登録の有無および使用許可されていると判定した場合(1005;Yes)、シーケンス番号を初期化する(1006)。このとき、ファンクションライブラリ206は、次のコマンドを実行するために、ファンクションライブラリ206のステータスが次のコマンドを実行可能な状態にあるか否かを判定し(2101)、次のコマンドを実行可能でないと判定した場合(2102;No)、その旨を示すエラーコードを不図示のメモリに記憶し(2103)、ステップ2106に進む。
一方、ファンクションライブラリ206は、次のコマンドを実行可能であると判定した場合(2102;Yes)、ステップ1007〜1009の処理を実行し、紙幣部11から受信したレスポンス電文に含まれる付加情報に従って、ファンクションライブラリ206のステータスを更新し(2104)、紙幣部11と接続できたか否かを判定する(2105)。そして、ファンクションライブラリ206は、紙幣部11と接続できたと判定した場合(2105;Yes)、ステップ2101、2103で記憶したエラーコードをキーにしてエラーコード変換テーブルにアクセスし、エラーコードを変換する(2106)。
図22は、エラーコード変換テーブル2200の例を示す図である。図22に示すように、エラーコード変換テーブル2200では、紙幣部11の標準仕様で定められたエラーコードである標準エラーコード2201と、カスタマイズされたエラーコード2202(本例では、3つの設定のエラーコード)とが対応付けて記憶されている。言い換えると、ファンクションライブラリ206が、紙幣部11毎に固有の標準エラーコード2201と、サービスプロバイダ204又は銀行毎に固有のエラーコード2202とを対応付けている(設定1〜3のそれぞれが、サービスプロバイダ又は銀行毎に決まっている)。したがって、ファンクションライブラリ206は、ステップ2101、2103で記憶した標準エラーコードをいずれかのカスタマイズエラーコードに変換した上で、ステップ1011、1012において、サービスプロバイダ204へのレスポンス電文を生成し、送信する。なお、これらのエラーコードの設定は、製品出荷時に初期設定ファイルとして定めておくか、あるいはATM10の電源起動時にファンクションライブラリ206が起動し、サービスプロバイダ204にアクセスして取得すればよい。
すなわち、ファンクションライブラリ206は、エラーコード変換テーブルに基づき、紙幣部11から受信したエラーに対応する標準エラーコードを、サービスプロバイダ204又は銀行に応じたエラーコードに変更する。これにより、サービスプロバイダ204の開発工数を抑制することが可能となる。
また、以上の処理は、図23で後述するように複数種類の紙幣部11を取り扱う場合にも適用できる。紙幣部11の種類が異なると、ファンクションライブラリ206が実施する処理シーケンスが異なる場合がある。このような場合、図11の処理内容テーブルを紙幣部11の種類毎に記憶することにより、複数の紙幣部11に対して、ファンクションライブラリ206を利用することが可能となる。このような場合を想定して、制御部20は、参照先管理テーブルを記憶してもよい。
図23は、参照先管理テーブルの例を示す図である。
参照先管理テーブル2301は、紙幣部11の種類を示す紙幣部種別(例えば、図9の型XXXXX-XX)と、図11に示す処理内容テーブル毎に固有の識別情報とを関連づける。
ファンクションライブラリ206は、サービスプロバイダ204より紙幣部11等のモジュールに対する動作指示を受けるとき又は初期設定時に、参照先管理テーブルを参照することにより、紙幣部11から取得した又は外部から受け付けた紙幣部11の種別に基づき、対応する参照すべき処理内容テーブルを決定する。そして、ファンクションライブラリ206は、決定した処理内容テーブルに定められたシーケンスに基づき、紙幣部11との間で各処理を実施する。
参照先管理テーブル2301を有することにより、ファンクションライブラリ206は、紙幣部11の種類に応じた処理内容の設定が可能となる。
続いて、図21、22の変形例に関して説明する。図21、22では、制御部20が、後述する第一のコマレス管理情報(第一のコマレス管理テーブル)と後述する第二のコマレス管理情報(第二のコマレス管理テーブル)との両方の機能を有するエラーコード変換テーブルを有する場合に関し、エラーコードの変換を中心に説明したが、制御部20が図24A、24Bのように、第一のコマレス管理情報と第二のコマレス管理情報を別々に備えてもよい。
図24Aは、第一のコマレス(コマンドレスポンス)管理テーブル2400Aの例を示す図である。図11、15、18の処理内容テーブルの“SPからの受信コマンド”に関し、サービスプロバイダ204とファンクションライブラリ206との間で、コマンドコードが共通である場合を主として説明した。
しかし、サービスプロバイダ204の種類又は銀行の種別が複数になってくると、ファンクションライブラリ206とサービスプロバイダ204との間で送受信されるコマンド電文やレスポンス電文の定義(例えば、電文フォーマット、コマンドコード)が異なる場合が生じる。
このような場合、コマンド電文やレスポンス電文の定義をサービスプロバイダ204又は銀行毎に記憶することにより、複数のサービスプロバイダ204に対して、ファンクションライブラリ206を利用することが容易となる。このような場合を想定して、制御部20は、例えば、第一のコマレス管理テーブル2400Aを記憶してもよい。以下では、コマンドコード/レスポンスコード(例えば、動作結果コード、エラーコード、付加情報)がサービスプロバイダ204又は銀行毎に異なる場合に関して説明するが、これに限るものではない。
第一のコマレス管理テーブル2400Aは、コマンド/レスポンスの種別毎2401Aに、ファンクションライブラリ206で定義(管理)するコマンドコード/レスポンスコード2402Aと、サービスプロバイダ204又は銀行毎に定義(管理)するコマンドコード/レスポンスコード2403Aとを関連づける。
ここで、ファンクションライブラリ206で定義するコマンドコード/レスポンスコード2402Aは、コマンド/レスポンスの種別毎に識別できる固有の値である。また、サービスプロバイダ204又は銀行毎に定義するコマンドコード/レスポンスコード2403Aも、コマンド/レスポンスの種別毎に識別できる固有の値となる。ファンクションライブラリ206で定義するコマンドコード/レスポンスコード2402Aとサービスプロバイダ204又は銀行毎に定義するコマンドコード/レスポンスコード2403Aとは、一部又は全部の種別に関し、異なる値又は共通の値を有してもよい。
また、サービスプロバイダ204又は銀行毎に定義するコマンドコード/レスポンスコードは、一部又は全部の種別に関し、複数のサービスプロバイダ又は銀行間で異なる値又は共通の値であってよい。
ファンクションライブラリ206は、サービスプロバイダ204からコマンドを受信する際に、第一のコマレス管理テーブル2400Aを参照しサービスプロバイダ204又は銀行の種別に基づき、サービスプロバイダ204から受信するコマンドコードを対応するファンクションライブラリ206のコマンドコードへ変換する。また、ファンクションライブラリ206は、サービスプロバイダ204にレスポンスを送信する際に、第一のコマレス管理テーブル2400を参照しサービスプロバイダ204又は銀行の種別に基づき、サービスプロバイダ204へ送信するレスポンスコードを対応するサービスプロバイダ204又は銀行のレスポンスコードへ変換する。あるいは、ファンクションライブラリ206は、初期設定時に第一のコマレス管理テーブル2400Aを参照しサービスプロバイダ204又は銀行の種別に基づき、接続されたサービスプロバイダ204に応じて、処理内容テーブル(図11、15、18)の“SPからの受信コマンド”を、当該サービスプロバイダ204の種別のコマンドコード/レスポンスコードに変更してもよい。
なお、サービスプロバイダ204又は銀行の種別は、サービスプロバイダ204又は外部からファンクションライブラリ206が受信し、ファンクションライブラリ206が設定してもよい。
制御部20が、第一のコマレス管理テーブル2400Aを利用することにより、種別の異なるサービスプロバイダ204又は銀行と接続する場合にも、その取扱いを柔軟に行うことができ、適用する機能の拡張や削除にあわせたコマンドの追加、削除を容易に行うことができる。なお、コマンド電文/レスポンス電文のフォーマットや、他の要素に関しても、制御部20は、サービスプロバイダ204又は銀行の種類毎に要素の種類を対応づけた同様の管理テーブルを有し、サービスプロバイダ204又は銀行の種類毎の要素の情報に基づき処理をできるようにしてもよい。
図24Bは、第二のコマレス(コマンドレスポンス)管理テーブル2400Bの例を示す図である。図11、15、18の処理内容テーブルの“モジュールへの発行コマンド”は、紙幣部11とファンクションライブラリ206との間で、コマンドコードが共通である場合に関して説明した。
しかし、紙幣部11の種類(例えば、図8の紙幣部種別(型番))が複数になってくると、ファンクションライブラリ206と紙幣部11との間で送受信されるコマンド電文やレスポンス電文の定義(例えば、電文フォーマット、コマンドコード)が異なる場合が生じる。このような場合、コマンド電文やレスポンス電文の定義を紙幣部11の種類毎に記憶することにより、複数種類の紙幣部11に対して、ファンクションライブラリ206を利用することが容易となる。このような場合を想定して、制御部20は、例えば、第二のコマレス管理テーブルを記憶してもよい。以下では、コマンドコード/レスポンスコード(例えば、動作結果コード、エラーコード、付加情報)が紙幣部11の種類毎に異なる場合に関して説明するが、これに限るものではない。
第二のコマレス管理テーブルは、コマンド/レスポンスの種別毎2401Bに、ファンクションライブラリ206で定義(管理)するコマンドコード/レスポンスコード2402Bと、紙幣部11の種類毎に定義(管理)するコマンドコード/レスポンスコード2403Bとを関連づける。
ここで、ファンクションライブラリ206で定義するコマンドコード/レスポンスコード2402Bは、コマンド/レスポンスの種別毎に識別できる固有の値である。また、紙幣部11の種類毎に定義するコマンドコード/レスポンスコード2403Bも、コマンド/レスポンスの種別毎に識別できる固有の値となる。ファンクションライブラリ206で定義するコマンドコード/レスポンスコード2402Bと紙幣部11の種類毎に定義するコマンドコード/レスポンスコード2403Bとは、一部又は全部の種別に関し、異なる値又は共通の値を有してもよい。
また、紙幣部11の種類毎に定義するコマンドコード/レスポンスコード2403Bは、一部又は全部の種別に関し、紙幣部11の種類毎で異なる値又は共通の値であってよい。
ファンクションライブラリ206は、紙幣部11からレスポンスを受信する際に、第二のコマレス管理テーブル2400Bを参照し紙幣部11の種類に基づき、紙幣部11から受信するレスポンスコードを対応するファンクションライブラリのレスポンスコードへ変換する。また、ファンクションライブラリ206は、紙幣部11コマンドを送信する際に、第二のコマレス管理テーブルを参照し紙幣部11の種別に基づき、紙幣部11へ送信するコマンドコードを対応する紙幣部11のコマンドコードへ変換する。あるいは、ファンクションライブラリ206は、初期設定時に第二のコマレス管理テーブル2400Bを参照し紙幣部11の種別に基づき、接続された紙幣部11に応じて、処理内容テーブル(図11、15、18)の“モジュールへの発行コマンド”を当該紙幣部11の種別のコマンドコード/レスポンスコードに変更してもよい。
なお、紙幣部11の種別は、紙幣部11又は外部からファンクションライブラリ206が受信し、ファンクションライブラリ206が設定してもよい。
制御部20が、第二のコマレス管理テーブル2400Bを利用することにより、種別の異なる紙幣部11と接続する場合にも、その取扱いを柔軟に行うことができ、適用する機能の拡張や削除のにあわせたコマンドの追加、削除を容易に行うことができる。なお、コマンド電文/レスポンス電文のフォーマットや、他の要素に関しても、制御部は、紙幣部11の種類毎に要素の種類を対応付けた同様の管理テーブルを有し、紙幣部11の種類毎の要素の情報に基づき処理をできるようにしてもよい。
また、図24A、24Bを別々に有することで、紙幣部11の種類及びサービスプロバイダ204若しくは銀行の種類によらず、ファンクションライブラリ20を有する制御部20は容易に様々な種類のシステムに導入することが可能となる。
また、図24A、24Bは、基本処理(例えば、入金、出金、収納(入金計数の後の収納))又は拡張処理(例えば、自動精査、ログ収集1)の両方のコマレスを変換する例を示したが、いずれか一方のコマレスを変換するものであってもよい。
[第2の実施形態]
図25は、上述の紙幣部11を含む複数のATM10が通信ネットワーク100により接続される上位装置を含むシステムの一例を示す。上位装置としては、例えば、銀行がATM10の稼働等を管理する管理装置110や、保守会社が管理する保守装置120などがある。以下では、上位装置がファンクションライブラリ206を管理する場合について説明する。
管理装置110あるいは保守装置120等の上位装置は、記憶部(例えば、メモリ)とCPUとを含む制御部130と、外部からの情報の入力を受け付ける操作端末140とを有する。上位装置の制御部130は、通信ネットワーク100で接続されたATM10の通信制御部101との間で各種情報の送受信を行う。
記憶部は、ATM10又は紙幣部11、紙幣識別部113の固有の情報2601(例えば、ATMシリアル番号、紙幣部シリアル番号、又は紙幣識別部シリアル番号)と、各ATM10のファンクションライブラリ206の種類を示す情報とを関連付けたファンクションライブラリ管理情報2600を記憶している。
図26は、ファンクションライブラリ管理情報2600の例を示す図である。
ファンクションライブラリ管理情報2600は、ATM毎にファンクションライブラリを管理するための情報である。ファンクションライブラリ管理情報2600は、ATMを識別するATM情報2601と、ファンクションライブラリ206の種類を示す種類情報2602とを関連づける。ATM情報2601は、ATM毎に固有の情報であるATMID2603を含む。また、ATM情報2601は、紙幣部を識別する情報である紙幣部シリアル番号2604、紙幣識別部を識別する情報である紙幣識別部シリアル番号2605を有しても良い。また、ファンクションライブラリ206の種類を示す種類情報2602は、例えば、ファンクションライブラリのバージョンを示すFLバージョン情報2606、ファンクションライブラリのライセンスのレベル又はライセンスの有無を示すライセンス情報2607、ファンクションライブラリがATMに提供する機能を示す機能種別情報2608(例えば、入金、収納、出金、自動精査など)、ファンクションライブラリの提供元ベンダを示す提供ベンダ情報2609などを含んで良い。また、ファンクションライブラリ管理情報は、ATMの設置場所を示す設置場所情報2610を含んでも良い。
さらに、上位装置は、ファンクションライブラリ管理情報2600を用いて、上位装置の操作端末140が受け付けたファンクションライブラリ206の種類情報2602に基づき、当該ファンクションライブラリ206を有するATM10、紙幣部11又は紙幣識別部113を抽出し、抽出したATM10、紙幣部11、又は紙幣識別部113を示す情報を操作端末140に表示してもよい。
また、上位装置は、上位装置の操作端末140が受け付けたATM10、紙幣部11又は紙幣識別部113を示す情報に基づき、当該ATM10のファンクションライブラリ206の種類情報2602を抽出し、抽出したファンクションライブラリ206の種類情報を操作端末140に表示してもよい。
これにより、上位装置から、ATM10、紙幣処理装置11、紙幣識別部113とファンクションライブラリ206の管理が可能となる。
続いて、ファンクションライブラリ管理情報の更新に関して説明する。上位装置は、操作端末140から更新指示を受け付けると、ファンクションライブラリ管理情報2600に基づき、更新指示を受け付けたATM10の固有の情報に対応する、当該ATM10にファンクションライブラリ206の種類情報2602の取得指示を送信する。
ATM10のファンクションライブラリ206は、業務アプリケーション203又はサービスプロバイダ204を経由して、当該取得指示を受信する。ファンクションライブラリ206は、当該指示に基づき、ストレージ202が記憶するファンクションライブラリ206の種類情報を取得し、ファンクションライブラリ206の種類情報を業務アプリケーション203又はサービスプロバイダ204を経由して、上位装置に送信する。
ATM10は、ファンクションライブラリ206の種類情報に加え、ATM10又は紙幣部11の固有の情報も上位装置へ送信してもよい。上位装置は、ファンクションライブラリ206の種類情報を受信し、ファンクションライブラリ管理情報を更新する。上位装置の操作端末140は、更新したファンクションライブラリ管理情報を表示する。
なお、ファンクションライブラリ206は、上位装置から取得指示を受信したタイミングではなく、ファンクションライブラリ206が管理する種類情報に更新があった場合に、ファンクションライブラリ206の種類情報を業務アプリケーション203又はサービスプロバイダ204を経由して、上位装置に送信してもよい。ATM10は、ファンクションライブラリ206の種類情報に加え、ATM10又は紙幣部11の固有の情報も上位装置へ送信してよい。
また、第1の実施形態と同様に、ファンクションライブラリ206は、モジュールに対して発行するコマンドの種別毎にコマンドの発行回数、コマンド発行の時刻、モジュールの実行した処理が正常に終了したか否かを示す終了情報を管理してもよい。さらに、上位装置やATM10の制御部20が、以上の情報を個別に管理してもよい。これにより、モジュール提供元とモジュール提供先とでファンクションライブラリ206の使用状況に関し、情報の一致/不一致を確認することができる。
続いて、ファンクションライブラリ206の分析処理に関して説明する。ファンクションライブラリ206は、ファンクションライブラリ206を有する紙幣部11が稼働することにより発生する紙幣部11を構成する部品毎のログ情報を収集し、収集したログ情報に基づき、紙幣部11の部品毎の障害発生の有無、可能性の有無、確率あるいは時期、又は部品毎の交換の要否、時期を判断する分析処理を実施する。ファンクションライブラリ206は、分析処理で判断した結果である分析情報をストレージ202に格納する。
一方、上位装置は、上位装置の操作端末140から分析処理の結果である分析情報の取得指示を受け付けると、取得指示を受け付けたATM10にファンクションライブラリ206の分析情報の取得指示を送信する。ファンクションライブラリ206は、業務アプリケーション203又はサービスプロバイダ204を経由して、当該取得指示を受信する。ファンクションライブラリ206は、当該取得指示に基づき、ストレージ202が記憶するファンクションライブラリ206の分析情報を取得し ファンクションライブラリ206の分析情報を業務アプリケーション203又はサービスプロバイダ204を経由して、上位装置に送信する。ATM10は、ファンクションライブラリ206の分析情報に加え、ATM10、紙幣部11又は識別部13の固有の情報も上位装置へ送信してもよい。上位装置は、ファンクションライブラリ206の分析情報を受信し、ATM10などの固有の情報及び分析情報を関連づけて記憶する。また、上位装置は、分析情報を操作端末140に表示してもよい。
上述の通り、ATM10のファンクションライブラリ206が紙幣部11のログ情報を収集し、収集したログ情報に基づき紙幣部11の状態を分析し、分析した結果を上位装置に送信するため、上位装置が、ログ情報を収集して分析する場合に比較し、上位装置の資源及び上位装置とATM10を接続する通信回線の資源などを有効利用することが可能となる。
以降では、分析処理についてより詳細に説明する。
図27は、紙幣部11を構成する部品毎のログ情報2700の例を示す図である。
ログ情報は、ファンクションライブラリ206から受信したコマンドの種類であるコマンド種別2701(コマンドコードであってもよい)と、当該コマンドを受信した時間である受信日時2702とを有するものであってよい。また、ログ情報は、部品の稼働により紙幣部11が取得した稼働値2703と、紙幣部11が当該値を取得した日時を示す日時2704とを、部品毎に有するものであってよい。また、ログ情報には、部品の種類を示す部品種別2705と、紙幣部11内での部品毎に固有な又はある部品種別の中でも配置される場所により固有な部品番号を示す部品番号情報2706を有してもよい。
なお、部品の種類毎に、対応するコマンド種別を有し、ファンクションライブラリ206が、処理内容テーブル(図11、図18)に基づき、どの種別の部品を取得するかを決定していてもよい。例えば、ログ収集1は、センサの値を収集し、ログ収集2は、ローラの値を取得するように設定してもよい。
ここで、部品は、例えば、光学センサ、磁気センサなどを含む検知部、ローラ、ベルトなどを含む搬送部などを含む。また、ログ情報は、例えば、紙幣部11が有する複数の検知部、複数の搬送部のそれぞれが生成する情報であってよい。検知部のログ情報としては、例えば、センサ出力、検知レベルを含んでよい。また、搬送部のログ情報としては、例えば、搬送スキューなどの搬送エラー情報などを含んでよい。
続いて、収集したログ情報に基づき、ATM10の保守に関わる保守情報を生成する分析処理について説明する。ファンクションライブラリ206は、収集又は格納したログ情報に基づき、紙幣部11の部品の現在又は最新の稼働値2703を示す実績データ、及び当該部品の過去の稼働値に基づく情報であって稼働値2703の傾向を示す統計データ(例えば、稼働値の時系列変化を示す情報)を生成する。続いて、ファンクションライブラリ206は、生成した統計データ及び実績データに基づき、障害発生の有無、障害発生の可能性の有無、障害発生の確率あるいは時期、又は部品毎の保守・交換の要否、時期を判断する分析処理を実施する。
図28は、ファンクションライブラリ206が、種々の分析処理を実行する際に利用するログ種別を示す分析ログ情報テーブル2800である。分析ログ情報テーブル2800は、分析処理の種類を示す処理種別2801と、当該分析処理で利用するログの種類であるログ種別280、当該分析処理で利用するログの収集元である部品を示す情報である部品番号2803を関連づけたテーブルである。分析ログ情報テーブル2800で指定される情報によって、分析処理を実行することができる。
図29は、交換情報管理テーブル2900の例を示す図である。
交換情報管理テーブル2900は、紙幣部11若しくは紙幣部11を構成する部品を交換した時間を示す交換時刻2901、紙幣部11を識別する情報である紙幣部シリアル番号2902、交換された部品を示す部品番号2903、及び交換した理由などを示す交換内容の情報を含んで良い。交換情報管理テーブル2900は、部品番号2903と交換時刻2901とを関連付ける情報であり、部品番号2903の交換時刻2901を決定できるものであればよい。
ファンクションライブラリ206は、紙幣部11又は部品の交換を検知すると、交換情報管理テーブル2900の情報を更新する。より詳細には、ファンクションライブラリ206は、紙幣部11から受信した情報に基づき、交換された部品番号2903を特定し、交換を実施した保守員等に交換内容2904を選択させる。また、交換情報管理テーブル2900は、管理装置110の表示画面等に表示してもよく、紙幣部シリアル番号2902や交換箇所等、任意の条件でソートすることにより、管理者が、把握したい紙幣部11の交換情報を即時に知ることができるようにしてもよい。
図30は、統計データ生成処理のフローの一例を示す。
ファンクションライブラリ206は、交換情報管理テーブル2900と分析ログ情報テーブル2800を用いて、統計データを生成する際に、紙幣部11又は部品の交換を考慮した統計データを生成してもよい。
以下詳細にファンクションライブラリ206の実施する統計データ生成処理について、説明する。
ファンクションライブラリ206は、分析ログ情報テーブル2800に基づき、分析処理の処理種別に応じて、当該分析で利用するログ種別のログを生成する部品番号を特定する(S3000)。続いて、ファンクションライブラリ206は、交換情報管理テーブル2900に基づき、特定した部品番号の交換履歴の有無を判断する(S3002)。ここで、交換履歴がない場合(S3002:無)、部品毎に定めた所定期間のログ情報に基づき統計データを生成する(S3008)。一方、交換履歴がある場合(S3002:有)、交換情報管理テーブル2900に基づき、交換時刻を取得する(S3004)。ファンクションライブラリ206は、取得した交換時刻に基づき、統計データを生成する(S3006)。
より詳細には、ファンクションライブラリ206は、取得した交換時刻よりも前のログ情報と、取得した交換時刻以後のログ情報とを区別して、統計データを生成する。言い換えると、ファンクションライブラリ206は、交換時刻よりも前のログ情報と交換時刻後のログ情報とを連続したデータとしては扱わない。例えば、交換時刻前後で2つの統計データを生成、又は交換時刻よりも前のログ情報と交換時刻以後のログ情報を稼働時間帯で対応させて1つの統計データを生成してもよい。以上のように、交換情報管理テーブル2900と分析ログ情報テーブル2800とを有することにより、分析処理に利用される部品に応じて、適切な統計データを生成することが可能となる。
なお、図11に示すコマンドシーケンステーブルにおいては動作結果が正常か異常かで次に実行するコマンドのシーケンス番号を決定したが、モジュールからのレスポンス電文に含まれる情報、たとえば紙幣の残留有無など直近の動作結果にともなう各種情報、過去に実行した動作結果による情報、記憶済の各種設定情報等を元にシーケンス番号を切り替える、あるいはテーブルそのものを別に定義した新たなテーブルに切り替えることで多様かつ複数機能を切り替える仕組みを実現することが可能となる。
さらなる応用例として、図9に示したライセンス許可情報テーブルに装置別で使用するコマンドシーケンス定義テーブルを登録することで、機材別で使用可能な範囲や機能を切り替えることも可能となる。この方法を応用することで、ライセンス許可情報テーブルを更新することで、拡張機能を有効にするといった機能実現が可能となる。
なお、図9では、ライセンス許可情報を紙幣部11の型式によって管理する例を示したが、仮想IDを利用して管理するようにしてもよい。管理装置130等の上位装置が、仮想IDを管理することにより、紙幣部11の交換等により型式変更等が生じた場合にも、仮想IDにより容易に管理することができる。
電文フォーマットについては、サービスプロバイダーファンクションライブラリ間の電文フォーマットと、ファンクションライブラリーモジュール間の電文フォーマットは、本提案目的の一つであるモジュール使いこなし技術の隠蔽化により異なるフォーマットにすることが望ましい。しかしながら、ファンクションライブラリがない状態で装置が構築済であるところにファンクションライブラリの組み込みを行う場合は、同じフォーマットとすることで組み込み設計の容易化が可能となる。この場合、モジュール使いこなし技術の隠蔽化を行うために、既存開示コマンドの情報を一部変更する、あるいは非開示コマンドを追加することで機能制限を設けるなどにより目的を達することができる。
また、既存電文フォーマットを使用する場合であっても電文内に含まれる情報を追加、たとえばモジュールが通知するエラーコードだけでなく動作状況に応じてファンクションライブラリが生成するエラーコードの通知など新たな情報を付加することで付加価値を高めることも可能である。
なお、本説明は、上記実施例そのままに限定されるものではなく、例えば、図10、図16、図20、図21の各フローを適宜組み合わせて実行する等、実施段階ではその要旨に逸脱しない範囲で構成要素や処理のフローチャートの一部または全部を、ATMが使用される環境に応じて組み合わせて実行することができる。
また、情報の保持方法として、図8、9、11〜15、17,18、20、22、23、24、26、28、29では、テーブルの形式で保持する例を示したが、それぞれの情報を関連付けて記憶する方法であれば、テーブルの形式に限らない。
また、図11、15、18では、“SPからの受信コマンド”として、コマンド種別を記載しているが、制御部20の管理状態に応じて、ファンクションライブラリがコマンドを識別するコマンド情報(例えば、ファンクションライブラリが管理するコマンドコード、又はサービスプロバイダが管理するコマンドコード)であってもよい。また、“モジュールへの発行コマンド”として、コマンド種別を記載しているが、制御部20の管理状態に応じて、ファンクションライブラリがコマンドを識別するコマンド情報(例えば、ファンクションライブラリが管理するコマンドコード、又はモジュールが管理するコマンドコード)であってもよい。
また、自動取引装置を実施形態として記載したが、情報を有する媒体から情報を取得する媒体取扱装置であってもよい。
また、媒体取扱装置の実施する取引処理(基本処理)は、入金、出金、振替、振込などの取引を実施するために、対象媒体(例えば、紙幣、カード、明細票、通帳、硬貨)から情報(金額、口座情報)を取得する動作を、処理部(例えば、紙幣部、カード・明細票部、通帳部、硬貨部)が実施する処理であってよい。例えば、取引処理に伴い、各処理部に取り扱う媒体を搬送させる又は読み取る処理などを実施させる処理であってよい。また、紙幣取引レスポンスなどの取引レスポンスは、取引コマンドに基づき、媒体から取得した取引で使用する情報(例えば、当該取引で計数した金種毎の紙幣枚数、読み取ったカード番号、読み取った通帳番号、計数した金種毎の硬貨枚数)を返信するレスポンスであってよい。
また、取引処理は、利用者の口座を特定する情報又は特定された口座に反映される情報を取得する処理であってもよい。
また、ソータの場合は、取引との概念がないため、紙幣部の投入口に投入された紙幣の計数結果(例えば、紙幣種類毎の枚数、紙幣画像)を紙幣部が取得する処理が、基本処理に相当する。一方、基本処理では用いない情報を取得する処理、基本処理又は拡張処理により取得した情報に基づき、ファンクションライブラリが実施する又は紙幣部に実施させる処理が拡張処理となる。このため、当該計数結果を紙幣部が取得する処理を紙幣部に実施させる(実施可能な)コマンドをサービスプロバイダが生成し、拡張処理を紙幣部に実施させる(実施可能な)コマンドをファンクションライブラリが生成するものであってよい。なお、上述の通り、処理部の種類により、基本処理と拡張処理が変わることがあってもよい。
以上の実施形態では、少なくとも以下のいずれか一つ又は複数の特徴を有する。これらの特徴を有することにより、上述した効果を有する。
(1)外部から投入された媒体の情報に基づき取引を行う媒体取扱装置であって、投入された媒体から取引で用いる情報を取得する処理部と、処理部が実施可能なコマンドを生成する制御部を有し、制御部は、取引で用いる情報を取得する基本処理(例えば、取引処理)を処理部が実施可能なコマンドである基本処理コマンドを生成するサービスプロバイダと、基本処理とは異なる拡張処理を処理部が実施可能なコマンドである拡張処理コマンドを生成するファンクションライブラリとを有する。
(1)-2ファンクションライブラリは、基本処理コマンドをサービスプロバイダから受信し、変換することなく(基本処理コマンドと同一のコマンドを)、処理部に送信する。
(2)外部から投入された媒体の情報を取得する処理部を有する媒体取扱装置であって、処理部が実施可能な基本処理コマンド又は拡張処理コマンドを生成する制御部を有し、制御部は、処理部の種類毎に対応した基本処理コマンド又は拡張処理コマンドを管理する第二のコマレス管理情報を有し、第二のコマレス管理情報に基づき、処理部の種類に対応した第一のコマンド又は第二のコマンドを生成することを特徴とする。
(3)外部から投入された媒体の情報を取得する処理部を有する媒体取扱装置であって、外部又はサービスプロバイダに拡張処理の結果である拡張処理のレスポンスを送信するファンクションライブラリを有する制御部を備え、制御部は、銀行又はサービスプロバイダの種類毎に対応した拡張処理のレスポンスを管理する第一のコマレス管理情報を有し、第一のコマレス管理情報に基づき、銀行又はサービスプロバイダの種類に対応した拡張処理のレスポンスを生成する。
(4)媒体の有する情報を使用する処理である媒体処理を行う媒体取扱装置であって、媒体から情報を取得するモジュールと、モジュールと接続され、外部からの取引処理を開始させる指示に基づき、第一のコマンドを生成するサービスプロバイダと、サービスプロバイダから受信した第一のコマンドに基づき、モジュールに送信する第二のコマンドを生成するファンクションライブラリとを有する制御部とを備え、ファンクションライブラリは、一の第二のコマンドに対するモジュールからの応答である一の第二のレスポンスの情報に基づき、次にモジュールに送信する他の第二のコマンドを決定する。
(4)-1制御部は、一の第二のレスポンスの情報毎に、次に生成する他の第二のコマンドの情報を記憶した処理内容情報を有し、ファンクションライブラリは、処理内容情報に基づき、モジュールから受信した一の第二のレスポンスの情報に対応する他の第二のコマンドの情報を含む他の第二のコマンドを送信してもよい。
(4)-2ファンクションライブラリは、一の第一のコマンドに対して、複数の第二のコマンドを生成し、それぞれの第二のコマンドに対応する第二のレスポンスを全て受信した後に、一の第一のコマンドに対する応答である一の第一のレスポンスをサービスプロバイダに送信してもよい。
(5)媒体の有する情報を使用する処理である媒体処理を行う媒体取扱装置であって、媒体から情報を取得するモジュールと、モジュールと接続され、外部からの取引処理を開始させる指示に基づき、第一のコマンドを生成するサービスプロバイダと、サービスプロバイダから受信した第一のコマンドに基づき、モジュールに第二のコマンドを送信するファンクションライブラリとを有する制御部とを備え、ファンクションライブラリは、取引処理では使用しない情報(例えば、状態情報)をモジュールに取得させる情報取得コマンドを生成し、取引処理で使用する情報をモジュールに媒体から取得させる取引コマンド及び前記情報取得コマンドを第二のコマンドとしてモジュールに送信する。
(5)-1ファンクションライブラリは、取引コマンドに対するモジュールからの応答である取引レスポンスの内容(一の第二のレスポンスの情報)に基づき、情報取得コマンドの種類(他の第二のコマンドの情報)を決定してもよい。
(5)-2ファンクションライブラリは、一の情報取得コマンドに対するモジュールからの応答である一の情報取得レスポンスに基づき、次の情報取得コマンドを生成してもよい。
(5)-3モジュールは、取引コマンドに対するモジュールからの応答である取引レスポンス(一の第二のレスポンスの情報)にモジュールの状態を示す状態情報を含め、ファンクションライブラリは、取引レスポンスを受信し、取引レスポンスに含まれた状態情報に基づき、次に生成する第二のコマンド(他の第二のコマンドの情報)を決定してもよい。
(6)ファンクションライブラリは、モジュールの種類を示す情報と処理内容情報とを対応づけた参照先管理情報を有し、参照先管理情報に基づき、モジュールから取得したモジュールの種類を示す情報に対応した処理内容情報を決定してもよい。
(7)媒体を用いて取引を実行する処理部を有する自動取引装置であって、取引の指示に基づいて、取引に使用する情報を処理部から取得する第1のコマンドを生成する第1のコマンド提供部と、第1のコマンドに基づき処理部の実行する処理を指定し、第1のコマンドとは異なるコマンドに変換される第2のコマンドを生成する第2のコマンド提供部とを含む制御部を有する。
(7)-1第2のコマンド提供部は、第2のコマンドを指定する処理内容情報を有し、処理部から第1のコマンドに対する応答である第1のレスポンスに基づいて処理内容情報により第2のコマンドを決定する。
(7)-2第2のコマンド提供部は、第1のコマンド提供部から第1のコマンドを受信し、第1のコマンドのコマンドコードを変換することなく、第1のコマンドを処理部に送信する。
なお、実施形態において各処理を実現するためのプログラムは、電気・電子及び/又は磁気的な非一時的(non‐transitory)な記録媒体に格納可能である。即ち、ファンクションライブラリ206の機能を実現するためのプログラムを、持ち運び可能な又はサーバなどの上位装置の非一時的な記録媒体に格納し、ATM10にインストール(格納)することで、その機能を実現させるようにしても良い。
以上、図面を用いて詳細に説明したが、本発明は上述の種々の例に限定されるものではなく、その趣旨を逸脱しない範囲で、種々の変更が可能である。