(57)【特許請求の範囲】
【請求項１】
乗車媒体に記録されている媒体情報を読み取り、当該媒体情報に基づき運賃計算プログラムにより利用料金を算出する駅務機器において、
前記運賃計算プログラムの不具合により特定の媒体情報に対して障害が発生した場合の障害発生パターンと、当該障害を回避するために実行すべき処理内容を記述した障害回避アクションとの組が、障害防止ルールとして記憶されている記憶手段と、
前記障害が発生した以降に読み取られた媒体情報が、前記記憶手段に記憶されている障害発生パターンと一致するか否かを、前記運賃計算プログラムの実行に先立って判定する判定手段と、
前記判定手段が媒体情報と障害発生パターンとの一致を判定した場合に、当該障害発生パターンに対応する障害防止ルールで指定された障害回避アクションに記述されている処理内容を実行する処理手段と、
を備えたことを特徴とする駅務機器。
【請求項２】
請求項１に記載の駅務機器において、
前記運賃計算プログラムは複数のプログラムからなり、
前記障害回避アクションには、前記複数のプログラムから選択されたいずれかの運賃計算プログラムのプログラム名が記述されており、
前記処理手段は、前記選択された運賃計算プログラムを実行することを特徴とする駅務機器。
【請求項３】
請求項１に記載の駅務機器において、
前記障害回避アクションには、ネットワーク上のリソースとして指定された運賃計算プログラムのプログラム名が記述されており、
前記処理手段は、前記指定された運賃計算プログラムを実行することを特徴とする駅務機器。
【請求項４】
請求項１に記載の駅務機器において、
前記障害回避アクションには、予め算出した正しい運賃計算結果が記述されており、
前記処理手段は、前記運賃計算プログラムを実行することなく、前記運賃計算結果に基づく利用料金を用いて処理を行うことを特徴とする駅務機器。
【請求項５】
請求項１ないし請求項４のいずれかに記載の駅務機器において、
前記判定手段は、乗車媒体の媒体情報が読み取られる度に、前記記憶手段から障害防止ルールを１つずつ取り出して、読み取られた媒体情報が、障害防止ルールの障害発生パターンと一致するか否かを判定し、
前記処理手段は、前記判定手段が一致を判定した場合は前記障害回避アクションに記述されている処理内容を実行し、全ての障害発生パターンについて前記判定手段が一致を判定しなかった場合は、前記運賃計算プログラムによる運賃計算を実行することを特徴とする駅務機器。
【請求項６】
請求項１ないし請求項５のいずれかに記載の駅務機器と、当該駅務機器に接続された管理装置とを有する駅務システムであって、
障害が発生した媒体情報についての障害発生パターンを生成して前記管理装置へ送信する障害発生パターン生成手段を備え、
前記管理装置は、
前記障害発生パターン生成手段から送られてきた障害発生パターンに対する障害回避アクションを作成するための障害回避アクション編集手段と、
障害発生パターンと、これに対応して前記障害回避アクション編集手段で作成された障害回避アクションとの組を、障害防止ルールとして登録し管理する障害防止ルール管理手段と、
を有することを特徴とする駅務システム。
【請求項７】
請求項６に記載の駅務システムにおいて、
前記駅務機器は、複数の駅務機器からなり、
前記障害防止ルール管理手段は、登録した障害防止ルールを各駅務機器へ配信することを特徴とする駅務システム。
【請求項８】
請求項６に記載の駅務システムにおいて、
前記障害発生パターンを論理式で記述して作成するための障害発生パターン編集手段を更に備えていることを特徴とする駅務システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動改札機や自動精算機などの駅務機器に関し、特に、運賃計算プログラムの不具合による障害発生を防止するための技術に関する。
【背景技術】
【０００２】
自動改札機や自動精算機などの駅務機器には、運賃計算プログラムが搭載されており、このプログラムに従って利用料金の算出が行われる。例えば、自動改札機にプリペイドカードや、定期券とプリペイドカードの機能を併せ持つ複合券などの乗車媒体が投入されると、運賃計算プログラムを用いて運賃計算を行い、算出した運賃を乗車媒体の残額から引き去って徴収するようにしている。
【０００３】
しかるに、プログラムの欠陥が原因で、運賃の計算に誤りが発生し、正規の運賃よりも高い運賃を徴収してしまうことがある。このような障害が発生すると、利用者に不測の損害を与えることになるから、プログラムの不具合による料金の誤収受を防ぐための対策が必要となる。この対策としてよく知られているのが、プログラム多重化システムである。
【０００４】
プログラム多重化システムは、プログラムの信頼性を向上させるため、独立して開発された同じ動作を行なうプログラムを２つ以上具備し、入力データに対して各プログラムを実行させて、それらの実行結果を突合して全てに差異がないことを確認することにより、プログラムの実行結果の正しさを検証する冗長系システムである。運賃計算にプログラム多重化を適用した駅務システムはすでに運用されており、後掲の特許文献１〜３にもこのようなシステムが開示されている。
【０００５】
特許文献１では、乗車媒体から読み取った媒体情報が、障害を発生するパターンと一致するか否かを判定し、一致する場合はただちにＮＧ処理を行い、一致しない場合は読み取った媒体情報に対して、２つの運賃計算プログラムで算出した結果の突合（実行結果を出力項目ごとに比較すること）を実行し、結果が一致しない場合は、新たな障害発生パターンとして登録した後にＮＧ処理を行うシステムが開示されている。
【０００６】
特許文献２では、自動改札機と他の駅務機器のそれぞれにおいて運賃計算プログラムによる運賃計算を実行し、それらの計算結果を突合して、突合結果が一致しない場合は、精算処理を中断して係員対応とするシステムが開示されている。また、自動改札機において運賃計算プログラムに不具合があることが判明した場合に、他の駅務機器へ問合せを行い、他の駅務機器での算出結果を用いて自動改札機での精算処理を実行するシステムが開示されている。さらに、自動改札機において特定条件下で運賃計算の誤りが発生することが判明した場合は、係員対応によって、当該条件についてのみ他の駅務機器での算出結果を用いて精算処理を行うように設定することも開示されている。
【０００７】
特許文献３では、複数のプログラムを用いて利用料金を算出し、それぞれの料金を照合して、料金が不一致の場合は所定の処理を禁止するとともに、不一致データを上位装置へ通知し、上位装置で係員がデータを確認し、正しい料金となる新たなプログラムデータを作成し、各駅務機器へ新しいプログラムデータを送信してプログラムを修正するシステムが開示されている。
【０００８】
【特許文献１】特開２００６−２９３６７７号公報
【特許文献２】特開２００５−１３５２７０号公報
【特許文献３】特開２００７−１１４８４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
運賃計算プログラムに多重化を採用することで、各プログラムの計算結果に差異が生じた場合に、障害発生を検知することができるが、プログラムが２つの二重化システムの場合は、どちらかのプログラムに欠陥があることが判るにとどまり、どちらが正しいプログラムかは自動的に判断できない。したがって、障害発生が検知された場合、従来は、特許文献１のように、検知時点で扉を閉じるなどのＮＧ処理を実行するしかなく、正しい計算結果に基づいて処理を行うことはできなかった。しかし、この方法では障害発生時に一律にＮＧ処理へ移行するため、その都度係員の対応が必要となるとともに、利用者の円滑な通行が妨げられる割合が高くなるという問題がある。
【００１０】
一方、特許文献２に開示されている、他の駅務機器での計算結果を用いて処理を行う方法を採用すれば、自動改札機の稼動を停止させなくて済むため、上述した係員対応や通行阻害の問題は解消される。しかしながら、この方法では、他の駅務機器の運賃計算プログラムにも不具合があった場合には、依然として運賃計算の誤りが発生することになり、運賃の誤収受を防止することができないという問題がある。
【００１１】
したがって、最終的には、特許文献３のように、係員が障害発生に係るデータを検証したうえで、運賃計算プログラムの欠陥を除去する作業が必要となる。ところが、欠陥除去のためにプログラムを修正すると、予期しない動作を引き起す可能性があり、この場合、修正による影響が波及する範囲を事前に完全に把握することは至極困難である。このため、現場で障害が発生した場合に、プログラム修正で危急に対応することは、予想外の二次障害を誘発する可能性があり、リスクが高い。
【００１２】
本発明は、上述した事情に鑑み、運賃計算に障害が発生した場合でも、プログラムを修正することなく同様な障害の発生を事前に防止できる駅務機器および駅務システムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係る駅務機器は、乗車媒体に記録されている媒体情報を読み取り、当該媒体情報に基づき運賃計算プログラムにより利用料金を算出する駅務機器であって、運賃計算プログラムの不具合により特定の媒体情報に対して障害が発生した場合の障害発生パターンと、当該障害を回避するために実行すべき処理内容を記述した障害回避アクションとの組が、障害防止ルールとして記憶されている記憶手段を備えている。また、障害が発生した以降に読み取られた媒体情報が、記憶手段に記憶されている障害発生パターンと一致するか否かを、運賃計算プログラムの実行に先立って判定する判定手段と、この判定手段が媒体情報と障害発生パターンとの一致を判定した場合に、当該障害発生パターンに対応する障害防止ルールで指定された障害回避アクションに記述されている処理内容を実行する処理手段とを備えている。
【００１４】
このような本発明によると、運賃計算プログラムの不具合に基づいて発生した障害のパターンと同じ障害パターンの媒体情報が読み取られた際に、その障害発生パターンに対応する障害回避アクションが抽出され、当該アクションが実行される。このため、障害発生時の対応としてプログラムを修正しなくても、あらかじめ用意された障害回避アクションを実行することで、処理が適正に行われ、同様の障害が発生するのを未然に防止することができる。
【００１５】
本発明においては、運賃計算プログラムが複数のプログラムからなる場合、障害回避アクションに、複数のプログラムから選択されたいずれかの運賃計算プログラムのプログラム名を記述しておき、処理手段が、選択された運賃計算プログラムを実行するような実施形態を採用することができる。これによると、正しく動作する運賃計算プログラムを障害回避アクションにおいて指定しておくことにより、運賃計算プログラムの修正を行なわなくとも、正しい運賃計算結果を用いた処理を行うことが可能となる。
【００１６】
本発明においては、障害回避アクションに、ネットワーク上のリソースとして指定された運賃計算プログラムのプログラム名を記述しておき、処理手段が、指定された運賃計算プログラムを実行するような実施形態を採用してもよい。これによると、他の装置が保有する運賃計算プログラムを指定して実行することにより、同じ端末内でプログラムを多重化する必要がなくなり、多重化システムの設計を柔軟に行なえる利点がある。
【００１７】
本発明においては、障害回避アクションに、予め算出した正しい運賃計算結果を記述しておき、処理手段が、運賃計算プログラムを実行することなく、上記運賃計算結果に基づく利用料金を用いて処理を行うような実施形態を採用してもよい。これによると、事前に正しい計算結果を求めて、これをアクション中に含めておくことにより、運賃計算プログラムの修正を行なわなくとも、正しい運賃計算結果を用いた処理を行うことが可能となる。
【００１８】
次に、本発明に係る駅務システムは、上述した駅務機器と、当該駅務機器に接続された管理装置とを有する駅務システムであって、障害が発生した媒体情報についての障害発生パターンを生成して管理装置へ送信する障害発生パターン生成手段を備えている。管理装置は、障害発生パターン生成手段から送られてきた障害発生パターンに対する障害回避アクションを作成するための障害回避アクション編集手段を有する。また、管理装置は、障害発生パターンと、これに対応して障害回避アクション編集手段で作成された障害回避アクションとの組を、障害防止ルールとして登録し管理する障害防止ルール管理手段を有する。
【００１９】
このような本発明によると、駅務機器で運賃計算プログラムの不具合に基づく障害が発生した際に、その障害発生パターンが管理装置へ送信されるので、当該パターンの検証に基づき、障害回避アクション編集手段により障害回避アクションを作成することができる。そして、障害が発生した都度、障害発生パターンと障害回避アクションの組からなる障害防止ルールを登録することができる。このため、障害発生時の対応としてプログラムを修正しなくても、障害発生パターンに対応した障害回避アクションを実行することで、処理が適正に行われ、同様の障害が発生するのを未然に防止することができる。
【００２０】
本発明においては、駅務機器が複数の駅務機器からなる場合、障害防止ルール管理手段が、登録した障害防止ルールを各駅務機器へ配信する実施形態を採用してもよい。これによると、管理装置から各駅務機器へ障害防止ルールを一斉に配信することで、どの駅務機器においても運賃計算の障害が発生するのを未然に防止することができる。
【００２１】
本発明においては、障害発生パターンを論理式で記述して作成するための障害発生パターン編集手段を更に備えている実施形態を採用してもよい。これによると、論理式によって障害発生パターンを汎化（包括化）して記述することもできるため、障害を引き起こす全ての媒体情報を障害発生パターンとして生成する必要がなく、障害防止ルールの管理が容易になるとともに、パターン照合の高速化が可能となる。
【発明の効果】
【００２２】
本発明によれば、運賃計算に障害が発生した場合でも、プログラムを修正することなく、同様な障害の発生を事前に防止することができる効果がある。
【発明を実施するための最良の形態】
【００２３】
最初に、後述の実施形態の前提となるプログラム多重化システムについて簡単に説明する。プログラム多重化システムは、突合を行なうタイミングにより、「同期突合型」と「遅延突合型」の２つのタイプに分けられる。以下では、説明を単純化するため、２つのプログラムを具備した二重化冗長システムを例に挙げる。
【００２４】
図１５は、同期突合型のプログラム多重化システムを示している。同期突合型の場合は、対象システム（例えば自動改札装置）が２つのプログラムＡ、Ｂを保有し、入力情報に対してそれぞれのプログラムによる処理を同時に実行し、それらの実行結果を突合する。つまり、突合のタイミングはプログラムＡ、Ｂの実行時である。突合結果において双方の実行結果に差異がある場合は、２つのプログラムＡ、Ｂのどちらかに障害を発生させる欠陥があるとみなす。
【００２５】
図１６は、遅延突合型のプログラム多重化システムを示している。遅延突合型の場合は、対象システム（例えば自動改札装置）が１つのプログラムＡを保有するとともに、上位装置（例えばＰＣ）がもう１つのプログラムＢ（対照プログラム）を保有している。そして、対象システムがプログラムＡによる処理を実行した一定期間内のすべての入力情報に対して、一定期間経過後に上位装置が同じ入力情報に対してプログラムＢによる処理を実行し、双方の実行結果を事後的に突合する。つまり、突合のタイミングは、プログラムＡの実行から一定期間経過後である。この場合も、突合結果において双方の実行結果に差異があれば、２つのプログラムＡ、Ｂのどちらかに障害を発生させる欠陥があるとみなす。
【００２６】
以下、本発明の実施形態につき、図を参照しながら説明する。
【００２７】
図１は、本発明の第１実施形態のシステム構成図である。ここでは、本発明に関係する構成要素のみを機能ブロックとして表してある。本実施形態においては、上述した同期突合型のプログラム多重化システムを採用している。
【００２８】
１は駅に設置された駅務機器としての自動改札装置、２は自動改札装置１と回線で接続された管理装置である。自動改札装置１は実際には複数台設置されるが、図１では１台のみ図示してある。管理装置２は、例えば駅の係員室や管理センターなどに設置されたサーバからなる。自動改札装置１および管理装置２により駅務システムが構成される。
【００２９】
自動改札装置１は、運賃算出処理部１０を備えている。運賃算出処理部１０において、１１は、乗車券から読み取った媒体情報ａと、後述の障害防止ルールｆとに基づいて、運賃計算障害の発生を防止するための処理を行う障害防止処理部である。１２は運賃計算プログラムＡにより運賃計算を行う運賃計算部、１３は運賃計算プログラムＢにより運賃計算を行う運賃計算部、１４は運賃計算部１２，１３での計算結果ｂ、ｃを突合して突合結果ｄを出力する計算結果突合部である。１５は、計算結果突合部１４での突合において計算結果ｂ、ｃが一致しない場合に、後述する障害発生パターンｅを生成して管理装置２へ送信する障害発生パターン生成部である。１６は、管理装置２から配信される障害防止ルールｆを管理するローカル障害防止ルール管理部、１７は当該障害防止ルールｆを蓄積したローカル障害防止ルールＤＢ（ＤＢはデータベース；以下同様）である。
【００３０】
管理装置２は、マスター障害防止ルール管理部２１、マスター障害防止ルールＤＢ２２、障害回避アクション編集部２３、障害発生パターン編集部２４を備えている。マスター障害防止ルール管理部２１は、自動改札装置１から送られてくる障害発生パターンｅを受信・収集して、マスター障害防止ルールＤＢ２２に格納して管理する。また、障害発生パターン編集部２４で作成された障害発生パターンと、障害回避アクション編集部２３で作成された障害回避アクションとの組を障害防止ルールとしてマスター障害防止ルールＤＢ２２に格納する。さらに、マスター障害防止ルールＤＢ２２に格納されている障害防止ルールを一定時間毎に自動改札装置１に送信し、自動改札装置１における障害防止ルールを更新する。
【００３１】
障害回避アクション編集部２３は、ＵＩＦ（ユーザーインターフェイス）から構成される。ここでは、自動改札装置１から送られてくる障害発生パターンｅに対して、ＵＩＦの操作により、障害を回避するための障害回避アクションを作成する。
【００３２】
障害発生パターン編集部２４もＵＩＦから構成される。ここでは、自動改札装置１から送られてくる障害発生パターンｅに対する障害原因や影響範囲などの精査結果に基づき、ＵＩＦの操作により、障害発生に関係のない属性を削除したり、障害発生を引き起す属性の範囲を設定したりして、新たな障害発生パターンを論理式で記述して作成する。
【００３３】
図２は、自動改札装置１の構成をハードウェアのブロックで示した図である。３０はＬＡＮ（Local Area Network）などの通信回線１００を介して管理装置２と通信を行うための通信制御装置である。３１は運賃の計算、障害発生の判定、通行可否の判定などの処理を実行するとともに、自動改札装置１の動作を制御するＣＰＵである。３２はデータを一時的に格納するためのメモリである。３３は切符や定期券、プリペイドカードなどの乗車媒体に記録されている媒体情報を読み取る媒体読取部である。媒体読取部３３は、磁気券の情報を読み取る磁気ヘッドや、非接触カードの情報を読み取るアンテナから構成される。３４はＣＰＵ３１での通行可否の判定結果に基づき、自動改札装置１に備わるゲート扉（図示省略）の開閉を制御する扉開閉制御部である。３５は利用客に対して案内表示などを行う表示部である。
【００３４】
３６はハードディスクなどからなる記憶装置であって、運賃計算プログラム（Ａ）４１、運賃計算プログラム（Ｂ）４２、計算結果突合プログラム４３が格納されている。３７もハードディスクなどからなる記憶装置であって、障害防止処理プログラム４４、障害発生パターン生成プログラム４５、ローカル障害防止ルール管理プログラム４６、および図１に示したローカル障害防止ルールＤＢ１７が格納されている。この例では、２つの記憶装置３６，３７が設けられているが、１つの記憶装置にすべてのプログラム４１〜４６とデータベース１７を格納してもよい。
【００３５】
運賃計算プログラム４１、４２は、ＩＣカードや磁気券などの乗車媒体に記録されている媒体情報を入力とし、運賃データに基づいて運賃計算や残額計算を行うとともに、不正使用の有無や有効期間内の使用か否かなどの判定を行い、それらの結果を出力するプログラムである。
【００３６】
計算結果突合プログラム４３は、運賃計算プログラム４１、４２のそれぞれから出力される計算結果を比較して、差異の有無を調べるプログラムである。計算結果に差異が全くない場合は、両プログラムは正しく動作していると判断し、その計算結果を出力する。計算結果に差異がある場合は、いずれかのプログラムに欠陥があると判断し、ＮＧ判定（Ｆａｌｓｅ値）を出力する。
【００３７】
障害防止処理プログラム４４は、媒体情報が読み取られる度に、ローカル障害防止ルールＤＢ１７から障害防止ルールを１つずつ取り出して、入力媒体情報と障害発生パターンとの照合を行い、一致した場合はそのルールで指定されている障害回避アクションを実行するプログラムである。
【００３８】
障害発生パターン生成プログラム４５は、計算結果突合プログラム４３による突合結果に差異があった場合に、入力媒体情報に基づく障害発生パターンを生成し、これをマスター障害防止ルール管理部２１に送信するプログラムである。
【００３９】
ローカル障害防止ルール管理プログラム４６は、マスター障害防止ルール管理部２１から送信される障害防止ルールを受信して、ローカル障害防止ルールＤＢ１７に格納したり、ローカル障害防止ルールＤＢ１７から障害防止ルールを取り出したりするためのプログラムである。
【００４０】
ＣＰＵ３１と運賃計算プログラム（Ａ）４１により図１の運賃計算部１２が構成され、ＣＰＵ３１と運賃計算プログラム（Ｂ）４２により運賃計算部１３が構成され、ＣＰＵ３１と計算結果突合プログラム４３により計算結果突合部１４が構成される。また、ＣＰＵ３１と障害防止処理プログラム４４により障害防止処理部１１が構成され、ＣＰＵ３１と障害発生パターン生成プログラム４５により障害発生パターン生成部１５が構成され、ＣＰＵ３１とローカル障害防止ルール管理プログラム４６によりローカル障害防止ルール管理部１６が構成される。
【００４１】
図３は、管理装置２の構成をハードウェアのブロックで示した図である。５０はＬＡＮなどの通信回線１００を介して自動改札装置１と通信を行うための通信制御装置である。５１は管理装置２の動作を制御するＣＰＵである。５２はデータを一時的に格納するためのメモリである。５３は障害発生パターンや障害回避アクションの作成を行うためのＵＩＦ（ユーザーインターフェイス）であって、キーボードなどから構成される操作部５４と、液晶ディスプレイなどから構成される表示部５５とを備えている。５６はハードディスクなどからなる記憶装置であって、マスター障害防止ルール管理プログラム６１、障害回避アクション編集プログラム６２、障害発生パターン編集プログラム６３、および図１に示したマスター障害防止ルールＤＢ２２が格納されている。
【００４２】
マスター障害防止ルール管理プログラム６１は、各自動改札装置１から送られてくる障害発生パターンをマスター障害防止ルールＤＢ２２に格納したり、障害回避アクション編集部２３で作成された障害回避アクションや、障害発生パターン編集部２４で作成された障害発生パターンをマスター障害防止ルールＤＢ２２に格納したり、マスター障害防止ルールＤＢ２２に格納されている障害防止ルールを一定時間毎に各自動改札装置１に送信したりするプログラムである。
【００４３】
障害回避アクション編集プログラム６２は、ある障害発生パターンに対して、当該障害を回避する処理である障害回避アクションを作成するためのプログラムである。
【００４４】
障害発生パターン編集プログラム６３は、自動改札装置１から送信されてくる個々の障害発生パターンの解析結果に基づいて、例えば障害発生条件を集合で表現するなどして汎化した新たな障害発生パターンを作成するためのプログラムである。
【００４５】
ＣＰＵ５１とマスター障害防止ルール管理プログラム６１により図１のマスター障害防止ルール管理部２１が構成され、ＣＰＵ５１とＵＩＦ５３と障害回避アクション編集プログラム６２により障害回避アクション編集部２３が構成され、ＣＰＵ５１とＵＩＦ５３と障害発生パターン編集プログラム６３により障害発生パターン編集部２４が構成される。
【００４６】
以上の構成において、記憶装置３７は、本発明における記憶手段の一実施形態を構成する。障害防止処理部１１は、本発明における判定手段および処理手段の一実施形態を構成する。障害発生パターン生成部１５は、本発明における障害発生パターン生成手段の一実施形態を構成する。マスター障害防止ルール管理部２１は、本発明における障害防止ルール管理手段の一実施形態を構成する。障害回避アクション編集部２３は、本発明における障害回避アクション編集手段の一実施形態を構成する。障害発生パターン編集部２４は、本発明における障害発生パターン編集手段の一実施形態を構成する。
【００４７】
次に、障害発生パターンについて説明する。障害発生パターンは、プログラムの欠陥が原因で障害が発生する場合の、媒体情報の属性（項目）と各属性についての入力値（乗車媒体から読み取ったデータ）との組として表現される。
【００４８】
図４は、１つの障害発生パターンの例である。ここでは、属性として券種、利用種別、乗車駅、最新乗降駅、定期区間発駅、定期区間着駅、残額の各項目が挙げられている。本例は、入力値として、券種がＩＣ複合券で、利用種別が大人で、乗車駅がＹ電鉄Ｃ駅で、最新乗降駅がＹ電鉄Ｕ駅で、定期区間発駅がＸ電鉄Ａ駅で、定期区間着駅がＸ電鉄Ｂ駅で、残額が２０００円である乗車券の場合に、障害が発生する（すなわち運賃計算部１２，１３での計算結果ｂ、ｃが一致しない）例である。この障害発生パターンを論理式による条件式で記述すると、次のようになる。
障害発生パターン：
（［券種］＝ＩＣ複合券）ａｎｄ（［利用種別］＝大人）ａｎｄ（［乗車駅］＝Ｙ電鉄Ｃ駅）ａｎｄ（［最新乗降駅］＝Ｙ電鉄Ｕ駅）ａｎｄ（［定期区間発駅］＝Ｘ電鉄Ａ駅）ａｎｄ（［定期区間着駅］＝Ｘ電鉄Ｂ駅）ａｎｄ（［残額］＝２０００円）  ・・・（１）
【００４９】
ところで、運賃計算における障害は、ある１つの媒体情報のみに関して発生するとは限らず、他の媒体情報でも同じ障害が発生することがある。例えば、図４の例では、乗車駅がＹ電鉄Ｃ駅の場合だけでなく、Ｙ電鉄全駅について同じ障害が発生するようなケースや、定期区間発駅がＸ電鉄Ａ駅の場合だけでなく、Ａ駅〜Ｇ駅の区間にある場合に同じ障害が発生するようなケースである。こうした場合、障害を引き起こす全ての媒体情報を障害発生パターンとして個々に生成すると、データ量が膨大になるが、所定の属性についての入力値を、大小関係や集合的な包含関係により条件付けた論理式で表現することにより、障害発生パターンが汎化され、データ量を抑制することができる。
【００５０】
図５は、そのような汎化された障害発生パターンの例である。本例は、券種がＩＣ複合券で、利用種別が大人か子供のいずれかで、乗車駅がＹ電鉄のすべての駅で、残額が０でない乗車券の場合に、障害が発生する例である。この障害発生パターンを論理式による条件式で記述すると、次のようになる。
障害発生パターン：
（［券種］＝ＩＣ複合券）ａｎｄ（［利用種別］＝大人ｏｒ［利用種別］＝子供）ａｎｄ（［乗車駅］⊂Ｙ電鉄全駅）ａｎｄ（［残額］＞０円）  ・・・（２）
【００５１】
次に、障害回避アクションについて説明する。障害回避アクションは、障害の発生を回避するために実行すべき処理内容を記述した指示情報であり、１つの障害発生パターンに対して１つの障害回避アクションが作成される。この作成は、運賃計算仕様について判断のできる事業者やシステム開発者等によって行われる。
【００５２】
図６は、障害回避アクションの例を示している。この例は、複数の運賃計算プログラムから選択されたいずれかの運賃計算プログラム（正しく動作することが検証済のプログラム）のプログラム名を記述しておき、このプログラムを実行する「選択実行アクション」である。図６（ａ）では、自動改札装置１に搭載された運賃計算プログラムＡ、Ｂのうち、運賃計算プログラムＡが指定されており、このプログラムを実行することで障害発生を回避する。図６（ｂ）では、自動改札装置１の外部にネットワーク上のリソースとして配置された運賃計算プログラムのＵＲＬ（Uniform Resource Locator）が指定されており、このプログラムを実行することで障害発生を回避する。
【００５３】
図７は、障害回避アクションの他の例を示している。この例は、予め算出した正しい運賃計算結果を記述しておき、この結果をそのまま適用する「正当結果適用アクション」である。このアクションにおいては、運賃計算プログラムは実行されない。なお、本アクションでは、結果に対して入力値が一意に定まらなければならないため、対応する障害発生パターンの条件式は、図４の場合の前記（１）式のように、すべて等号で記述される必要があり、図５の場合の前記（２）式のような、集合や不等号を含む記述は許されない。
【００５４】
図８は、媒体情報が障害発生パターンに該当しない場合の「突合実行アクション」を示している。これは障害回避アクションではなく、通常の動作の場合に実行されるデフォルトアクションとして設定されているものである。この場合は、通常通り２つの運賃計算プログラムＡ、Ｂによる運賃計算を実行し、それらの計算結果の突合が行われる。
【００５５】
以上の図６〜図８のアクションは、同期突合型のプログラム多重化システムで採用されるアクションである。遅延突合型のプログラム多重化システムでは、図９や図１０のアクションが採用されるが、これについては後述する。
【００５６】
次に、障害防止ルールについて説明する。障害防止ルールは、障害発生パターンと障害回避アクションとの組からなり、１つの障害防止ルールは、１つの障害発生パターンと、これに対応する１つの障害回避アクションとから構成される。
【００５７】
図１１は、障害防止ルールの一例を示している。この例は、図４の障害発生パターンに合致する媒体情報が入力された場合に、運賃計算プログラムＢで計算を実行すると計算誤りが発生し、運賃計算プログラムＡで計算を実行すると正しい計算結果が得られたため、障害回避アクションのプログラム名に運賃計算プログラムＡを指定した例である。すなわち、「図４のような障害発生パターンに対しては、運賃計算プログラムＡを実行する」というルールを規定したものである。運賃計算プログラムＡの実行により正しい計算結果が得られ、障害は発生しない。
【００５８】
図１２は、障害防止ルールの他の例を示している。この例は、図５の障害発生パターンに合致する媒体情報が入力された場合に、運賃計算プログラムＡで計算を実行すると計算誤りが発生し、運賃計算プログラムＢで計算を実行すると正しい計算結果が得られたため、障害回避アクションのプログラム名に運賃計算プログラムＢを指定した例である。すなわち、「図５のような障害発生パターンに対しては、運賃計算プログラムＢを実行する」というルールを規定したものである。運賃計算プログラムＢの実行により正しい計算結果が得られ、障害は発生しない。
【００５９】
次に、図１のシステムの動作を具体的な事例に基づいて説明する。
【００６０】
［事例１］
自動改札装置１において、媒体情報ａが記録された乗車券が投入された場合を想定する。障害防止処理部１１は、この媒体情報ａが、ローカル障害防止ルールＤＢ１７に記憶されている障害防止ルールの障害発生パターンｆと一致しなければ、図８の突合実行アクションを実行する。これにより、運賃計算部１２，１３は、それぞれ運賃計算プログラムＡ，Ｂに従って運賃計算を行う。そして、計算結果突合部１４で、それぞれの計算結果ｂ，ｃの突合を行った結果、それらが一致せず、例えば運賃計算部１２で計算された引き去り金額が、運賃計算部１３で計算された引き去り金額より１００円多いという差異が発生したとする。
【００６１】
この場合、障害発生パターン生成部１５は、計算結果突合部１４での突合結果が不一致となった媒体情報ａの障害発生パターンｅを、管理装置２へ送信する。この送信は、通信制御装置３０（図２）により通信回線１００を介して行われる。管理装置２では、自動改札装置１から送られてきた障害発生パターンｅを、マスター障害防止ルール管理部２１が受信する。本例では、障害発生パターンｅが図４のパターンであったとする。この障害発生パターンに対して、例えば図６（ａ）のような障害回避アクションが、障害回避アクション編集部２３において人手により作成され、作成された障害回避アクションと障害発生パターンとの組を、図１１のような障害防止ルールとして、マスター障害防止ルールＤＢ２２に登録する。
【００６２】
その後、マスター障害防止ルール管理部２１は、新たに登録された障害防止ルールｆをマスター障害防止ルールＤＢ２２から読み出して、管理装置２に接続されている全ての自動改札装置１へ配信する。この配信は、通信制御装置５０（図３）により通信回線１００を介して行われる。自動改札装置１では、管理装置２から配信される障害防止ルールｆをローカル障害防止ルール管理部１６が受信し、ローカル障害防止ルールＤＢ１７へ格納する。
【００６３】
自動改札装置１では、乗車券の媒体情報が媒体読取部３３で読み取られて入力される度に、障害防止処理部１１の障害防止処理プログラム４４（図２）が起動される。このプログラムが起動されると、ローカル障害防止ルール管理部１６は、ローカル障害防止ルールＤＢ１７から障害防止ルールｆを１つずつ取り出し、取り出された障害防止ルールｆと入力された媒体情報ａとの照合が、障害防止処理部１１において行われる。
【００６４】
この照合の結果、媒体情報ａと障害防止ルールｆの障害発生パターンとが一致しない場合は、次の障害防止ルールｆを取り出して媒体情報ａとの照合を行い、全ての障害防止ルールとの照合が完了するまで、これを繰り返す。一方、図４のパターンに該当する媒体情報が記録されている乗車媒体が投入された場合は、媒体情報ａと障害防止ルールｆの障害発生パターンとが一致するため、当該障害防止ルールｆで指定された障害回避アクションを実行する。すなわち、図１１のルールに従って、選択実行アクションが実行され、運賃計算プログラムＡによる運賃計算が行われる。この障害回避アクションの実行により運賃計算は正しく行われるので、一度登録された障害防止ルールｆの障害発生パターンと同じパターン（図４のパターン）の媒体情報が記録された乗車券に対して、障害が発生するのを未然に防止することができる。
【００６５】
［事例２］
各駅の自動改札装置１から管理装置２に送信された障害発生パターンを解析した結果、券種がＩＣ複合券で、利用種別が大人か子供のいずれかで、乗車駅がＹ電鉄のすべての駅で、残額が０でない乗車券の場合に、同じ障害が発生することが判明したとする。
【００６６】
この場合、障害発生パターン編集部２４において、図５のような汎化された障害発生パターンが人手により作成される。また、プログラムを検証した結果、例えば、運賃計算プログラムＡに欠陥があり、運賃計算プログラムＢは正しく動作することが判明したものとすると、障害回避アクション編集部２３において、運賃計算プログラムＢを選択実行する障害回避アクションが作成される。そして、これらの障害発生パターンと障害回避アクションとの組を、図１２のような障害防止ルールとして、マスター障害防止ルールＤＢ２２に登録する。
【００６７】
その後、マスター障害防止ルール管理部２１は、新たに登録された障害防止ルールｆをマスター障害防止ルールＤＢ２２から読み出して、管理装置２に接続されている全ての自動改札装置１へ配信する。自動改札装置１では、管理装置２から配信される障害防止ルールｆをローカル障害防止ルール管理部１６が受信し、ローカル障害防止ルールＤＢ１７へ格納する。
【００６８】
自動改札装置１では、乗車券の媒体情報が媒体読取部３３で読み取られて入力される度に、障害防止処理部１１の障害防止処理プログラム４４（図２）が起動される。このプログラムが起動されると、ローカル障害防止ルール管理部１６は、ローカル障害防止ルールＤＢ１７から障害防止ルールｆを１つずつ取り出し、取り出された障害防止ルールｆと入力された媒体情報ａとの照合が、障害防止処理部１１において行われる。
【００６９】
この照合においては、前回の障害検知時の媒体情報と異なる媒体情報が入力された場合でも、障害発生パターンが汎化されているため、当該パターンの条件式（前記の式（２））を満たす媒体情報であれば、照合結果は一致と判定され、図１２の障害防止ルールで指定された障害回避アクション、すなわち運賃計算プログラムＢの選択実行アクションが実行される。この結果、運賃計算は正しく行われ、一度登録された障害防止ルールｆの障害発生パターン（図５のパターン）に含まれる媒体情報が記録された乗車券に対して、障害が発生するのを未然に防止することができる。
【００７０】
図１３は、本発明の第２実施形態のシステム構成図である。ここでは、本発明に関係する構成要素のみを機能ブロックとして表してある。本実施形態においては、遅延突合型のプログラム多重化システムを採用している。
【００７１】
図１３では、図１と同一または対応する部分には、同一符号を付してある。１は駅に設置された駅務機器としての自動改札装置、３は自動改札装置１と回線で接続された上位装置、２は自動改札装置１および上位装置３と回線で接続された管理装置である。自動改札装置１は実際には複数台設置されるが、図１３では１台のみ図示してある。管理装置２は、例えば駅の係員室や管理センターなどに設置されたサーバからなる。上位装置３は、例えばＰＣ（Personal Computer）から構成され、係員室や管理センターなどに設置される。自動改札装置１、管理装置２および上位装置３により駅務システムが構成される。
【００７２】
自動改札装置１の運賃算出処理部１０の各ブロックと、上位装置３の各ブロックとは、図１の運賃算出処理部１０に含まれる各ブロックと同じ機能を有しているので、個々のブロックについての詳細な説明は省略する。また、管理装置２の各ブロックも、図１の管理装置２の各ブロックと同じ機能を有しているので、個々のブロックについての詳細な説明は省略する。
【００７３】
図１３のシステムでは、自動改札装置１の運賃計算部１２が運賃計算プログラムＡによる処理を実行した一定期間内のすべての媒体情報に対して、一定期間経過後に上位装置３の運賃計算部１３が運賃計算プログラムＢによる処理を実行し、それぞれの計算結果ｂ、ｃを突合部１４で事後的に突合する。これ以降の処理については、図１の場合と同様であるので、重複説明は省略する。
【００７４】
但し、図１３のように遅延突合型のプログラム多重化システムを採用した場合は、自動改札装置１での運賃計算が運賃計算プログラムＡのみによって行われるため、障害回避アクションとして図６のような「選択実行アクション」を用いることはできない。そこで、これに代わるものとして、図９に示した「運賃計算回避アクション」を用いる。このアクションは、運賃計算実行による障害発生を回避するため、運賃計算を実行しないでＮＧ判定を出力し、係員対応とするものである。なお、このような運賃計算回避アクション以外に、図７で示した「正当結果適用アクション」を用いることも可能である。
【００７５】
図１０は、媒体情報が障害発生パターンに該当しない場合の「運賃計算実行アクション」を示している。これは障害回避アクションではなく、通常の動作の場合に実行されるデフォルトアクションとして設定されているものである。この場合は、通常通り運賃計算プログラムＡによる運賃計算が実行される。
【００７６】
図１４は、以上述べた第１および第２実施形態における障害防止処理部１１の処理内容を表したフローチャートである。前述したように、媒体情報が読み取られる毎に、障害防止処理プログラム４４が起動されて、図１４の手順が実行される。
【００７７】
媒体情報が読み取られると、ステップＳ１において、ローカル障害防止ルール管理部１６が、ローカル障害防止ルールＤＢ１７から障害防止ルールを１つ取り出す。そして、障害防止ルールが存在すれば（ステップＳ２：ＹＥＳ）、ステップＳ３へ進む。ステップＳ３では、読み取った媒体情報と、取り出した障害防止ルールの障害発生パターンとを照合し、ステップＳ４で、パターンが一致するか否かを判定する。パターンが一致しない場合は（ステップＳ４：ＮＯ）、ステップＳ１へ戻って、ローカル障害防止ルールＤＢ１７から次の障害防止ルールを取り出し、ステップＳ２〜Ｓ４を実行する。
【００７８】
パターンが一致する場合は（ステップＳ４：ＹＥＳ）、ステップＳ５へ進み、障害防止ルールで指定されている障害回避アクションを実行する。すなわち、第１実施形態（図１）の場合は、前述の「選択実行アクション」や「正当結果適用アクション」が実行され、第２実施形態（図１３）の場合は、前述の「運賃計算回避アクション」や「正当結果適用アクション」が実行される。
【００７９】
また、ステップＳ２でルールが存在しない場合は（ステップＳ２：ＮＯ）、ステップＳ６へ進み、デフォルトアクションを実行する。すなわち、第１実施形態の場合は前述の「突合実行アクション」、第２実施形態の場合は前述の「運賃計算実行アクション」がそれぞれ実行される。
【００８０】
以上説明した各実施形態によれば、運賃計算プログラムの不具合に基づいて発生した障害のパターンと同じ障害パターンの媒体情報が読み取られた際に、その障害発生パターンに対応する障害回避アクションが抽出され、当該アクションが実行される。このため、障害発生時の対応としてプログラムを修正しなくても、あらかじめ用意された障害回避アクションを実行することで、処理が適正に行われ、同様の障害が発生するのを未然に防止することができる。
【００８１】
また、障害回避アクションとして図６のような「選択実行アクション」を採用する場合は、障害防止ルールにおいて正しく動作する運賃計算プログラムを指定しておくことにより、運賃計算プログラムの修正を行なわなくとも、正しい運賃計算結果を用いた処理を行うことが可能となる。
【００８２】
また、選択実行アクションにおけるプログラム名として、図６（ｂ）のようにネットワーク上のリソースとして指定された運賃計算プログラムを記述しておけば、自動改札装置以外の機器が保有する運賃計算プログラムを指定して実行することができるため、自動改札装置内でプログラムを多重化する必要がなくなり、多重化システムの設計を柔軟に行なえる利点がある。
【００８３】
また、障害回避アクションとして図７のような「正当結果適用アクション」を採用する場合は、事前に正しい計算結果を求めて、これをアクション中に含めておくことにより、運賃計算プログラムの修正を行なわなくとも、正しい運賃計算結果を用いた処理を行うことが可能となる。
【００８４】
また、上述した駅務システムでは、自動改札装置１で運賃計算プログラムの不具合に基づく障害が発生した際に、その障害発生パターンが管理装置２へ送信されるので、当該パターンの検証に基づき、障害回避アクション編集部２３により障害回避アクションを作成することができる。そして、障害が発生した都度、障害発生パターンと障害回避アクションの組からなる障害防止ルールを、マスター障害防止ルールＤＢ２２に登録することができる。このため、障害発生時の対応としてプログラムを修正しなくても、障害発生パターンに対応した障害回避アクションを実行することで、処理が適正に行われ、同様の障害が発生するのを未然に防止することができる。
【００８５】
また、マスター障害防止ルール管理部２１が、マスター障害防止ルールＤＢ２２に登録された障害防止ルールを複数の自動改札装置１へ一斉に配信することによって、どの自動改札装置においても運賃計算の障害が発生するのを未然に防止することが可能となる。
【００８６】
さらに、障害発生パターン編集部２４において新たな障害発生パターンを作成するにあたって、パターンを論理式により汎化して記述することによって、障害を引き起こす全ての媒体情報を障害発生パターンとして生成する必要がなく、障害防止ルールの管理が容易になるとともに、パターン照合を高速に行うことが可能となる。
【００８７】
以上述べた実施形態では、駅務機器として自動改札装置を例に挙げたが、本発明は自動精算機や窓口処理機などの駅務機器にも適用することができる。
【図面の簡単な説明】
【００８８】
【図１】本発明の第１実施形態のシステム構成図である。
【図２】自動改札装置の構成をハードウェアのブロックで示した図である。
【図３】管理装置の構成をハードウェアのブロックで示した図である。
【図４】障害発生パターンの例である。
【図５】汎化された障害発生パターンの例である。
【図６】障害回避アクションの例である。
【図７】障害回避アクションの他の例である。
【図８】デフォルトアクションの例である。
【図９】障害回避アクションの例である。
【図１０】デフォルトアクションの例である。
【図１１】障害防止ルールの例である。
【図１２】障害防止ルールの他の例である。
【図１３】本発明の第２実施形態のシステム構成図である。
【図１４】障害防止処理部の処理内容を表したフローチャートである。
【図１５】同期突合型のプログラム多重化システムを示す図である。
【図１６】遅延突合型のプログラム多重化システムを示す図である。
【符号の説明】
【００８９】
１    自動改札装置
２    管理装置
３    上位装置
１０  運賃算出処理部
１１  障害防止処理部
１２  運賃計算部
１３  運賃計算部
１４  計算結果突合部
１５  障害発生パターン生成部
１６  ローカル障害防止ルール管理部
１７  ローカル障害防止ルールデータベース
２１  マスター障害防止ルール管理部
２２  マスター障害防止ルールデータベース
２３  障害回避アクション編集部
２４  障害発生パターン編集部
３１  ＣＰＵ
３３  媒体読取部
３７  記憶装置
ａ    媒体情報
ｆ    障害防止ルール
【図１】
0005292757.tif 000002
【図２】
0005292757.tif 000003
【図３】
0005292757.tif 000004
【図４】
0005292757.tif 000005
【図５】
0005292757.tif 000006
【図６】
0005292757.tif 000007
【図７】
0005292757.tif 000008
【図８】
0005292757.tif 000009
【図９】
0005292757.tif 000010
【図１０】
0005292757.tif 000011
【図１１】
0005292757.tif 000012
【図１２】
0005292757.tif 000013
【図１３】
0005292757.tif 000014
【図１４】
0005292757.tif 000015
【図１５】
0005292757.tif 000016
【図１６】
0005292757.tif 000017