(57)【要約】ファイル内のデータ変更時に、ファイル全体を新しいファイルに切り替えるべきファイルであって、参照時には参照ロックをかけないアクセスを許すファイルの切替の信頼性を向上させる。切替装置１は、切替時点まで使用されていたファイルの名称の記憶部２と、現時点まで使用されているファイルの内容がコピーされている一方の記憶部と、切替時点で新たなファイルの内容がコピーされるべき他方の記憶部とで構成される２つのファイル内容記憶部３、４と、切替時に記憶部２に切替時点まで使用されていたファイルの名称を記憶させ、前記他方の記憶部に新たなファイルの内容をコピーし、前記一方の記憶部の記憶内容を消去する切替部５とを備える。
2004109518.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを切り替えるファイル切替装置において、
ファイルの切替時点まで使用されていたファイルの名称を記憶するためのファイル名称記憶手段と、
２つのファイル内容記憶手段であって、現時点まで使用されているファイルの内容が複写されている第１の記憶手段と、ファイルの切替時点で新たなファイルの内容が複写されるべき第２の記憶手段とで構成される２つの記憶手段と、
ファイルの切替時に、前記ファイル名称記憶手段に該切替時点まで使用されていたファイルの名称を記憶させ、前記第２の記憶手段に新たなファイルの内容を複写し、前記第１の記憶手段の記憶内容をデータ未格納状態とするファイル切替手段とを備えることを特徴とするファイル切替装置。
【請求項２】
前記ファイル切替装置において、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記２つのファイル内容記憶手段のうちで、ファイルの内容が記憶されている記憶手段に対してロックをかけることなく、該ファイル参照アプリケーションにアクセスを許可するアクセス制御手段を更に備えることを特徴とする請求項１記載のファイル切替装置。
【請求項３】
前記ファイル切替装置において、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記ファイル切替手段がファイルの切替処理を行っているクリティカルリージョンの状態の場合には、該ファイル参照アプリケーションに該クリティカルリージョンの状態の解消を待たせた後に、ファイル参照を行わせる参照制御手段を更に備えることを特徴とする請求項１記載のファイル切替装置。
【請求項４】
前記ファイル切替装置において、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記２つのファイル内容記憶手段の両方にファイルのデータが記憶されているエラー状態が検出された場合には、該ファイル参照アプリケーションに、前記ファイル名称記憶手段の記憶内容に従って該エラーの発生以前に現版として使用されていたファイルにアクセスさせ、前記第２のファイル内容記憶手段に複写された内容を消去するエラー処理手段を備えることを特徴とする請求項１記載のファイル切替装置。
【請求項５】
前記ファイルが、一覧形式で情報が羅列されているカタログファイルであることを特徴とする請求項１記載のファイル切替装置。
【請求項６】
ファイルを切り替えるファイル切替方法において、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させ、
新たなファイルの内容の複写を記憶装置の定められた領域に格納し、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とすることを特徴とするファイル切替方法。
【請求項７】
ファイルを切り替える計算機によって使用されるプログラムにおいて、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させる手順と、
新たなファイルの内容の複写を記憶装置の定められた領域に格納する手順と、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とする手順とを計算機に実行させるためのプログラム。
【請求項８】
前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記２つの定められた領域のうちで、ファイルの内容が記憶されている領域に対してロックをかけることなく、該ファイル参照アプリケーションにアクセスを許可する手順を計算機に更に実行させることを特徴とする請求項７記載のプログラム。
【請求項９】
前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時にファイルの切替処理が行われているクリティカルリージョンの状態の場合には、該ファイル参照アプリケーションに該クリティカルリージョンの状態の解消を待たせた後に，ファイル参照を行わせる手順を更に計算機に実行させることを特徴とする請求項７記載のプログラム。
【請求項１０】
前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記２つの定められた領域の両方にファイルのデータが記憶されているエラー状態が検出された場合には、該ファイル参照アプリケーションに、前記ログバッファの記憶内容に従って該エラーの発生以前に現版として使用されていたファイルにアクセスさせ、前記新たなファイルの内容の複写が格納された、前記定められた領域をデータ未格納の状態とする手順を更に計算機に実行させることを特徴とする請求項７記載のプログラム。
【請求項１１】
前記ファイルが、一覧形式で情報が羅列されているカタログファイルであることを特徴とする請求項７記載のプログラム。
【請求項１２】
ファイルを切り替える計算機によって使用される記憶媒体において、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させるステップと、
新たなファイルの内容の複写を記憶装置の定められた領域に格納するステップと、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とするステップとを計算機に実行させるためのプログラムを格納した計算機読出し可能可搬型記憶媒体。
【発明の詳細な説明】
【技術分野】  本発明はファイルの切替方式に関する。すなわちファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるべきファイルを対象として、ファイル参照時には参照ロックをかけることなくアクセスすることができる、ファイルの切替を行うファイル切替装置及び切替方法に関する。
【背景技術】  一般にファイルの更新を行う場合には、更新中にファイルが参照されることを防止するために更新ロック、すなわち排他制御を行って更新を行うことになる。
このような排他制御を行うことなくファイル更新を行うための従来技術として、次のような文献がある。
【特許文献１】  特開平７−１８２２１３号「ファイル共用システム」
【特許文献２】  特開平７−２８１９３４号「システムファイルの更新及び復元方法」
【特許文献３】  特開平８−３２８９３３号「並列処理システムのファイルアクセス制御方式」
特許文献１には、ファイル更新期間中にも更新前のファイルを他の利用者が利用可能とするために、実メモリ上のファイルを利用者それぞれの論理空間に割付け、ファイル更新時には例外処理の中で実メモリ上のファイルのコピーをおこない、コピーされたファイルを更新するため、利用者間での排他制御が不要となる技術が開示されている。
特許文献２には、ＯＳによってアクセスが拒否されているファイルの更新などをソフトウェアによって実現する方法が開示されており、その方法では二つの記憶領域に同一のＯＳを格納しておき、ファイル更新時には稼動中の第一のＯＳを終了させて第２のＯＳを起動させ、第二のＯＳの機能を用いてファイルの更新（入替）が行われる。
特許文献３では、ページ参照用の参照バッファとページ更新用の更新バッファを設け、ページ更新の場合には新しいバージョンのページを更新バッファ上に作成し、ファイルの排他制御によるオーバヘッドを削減するファイルアクセス制御方式が開示されている。
しかしながらこれらの従来技術は、いずれも基本的にはファイルの更新、すなわちファイル内の一部のデータの変更を含むファイルの更新を対象としており、本発明におけるカタログ切替とは対象が異なるものである。
データの一部の変更ではなく、切替を行うべきファイルとして後述するカタログファイルがある。カタログファイルは、例えばＸＭＬ文書のフォーマット変換内の処理として外部実体の参照処理がある時、ＵＲＩ（ユニフォーム・リソース・アイデンティファイア）によって指定されるリソースの場所と外部にある実体との関係を記述するものである。このカタログファイルは一般にクライアント側のパソコンで作成され、フォーマット変換を行うサーバに一括してファイル転送されるものであり、便宜上１つのファイルとして扱われ、例えばサーバ側にはバージョンアップに対応する旧版、現版、及び新版の三つのバージョンのカタログファイルが保持され、必要に応じて例えば現版を新版に切り替えるファイル切替処理が行われることとなる。
前述の特許文献１ではファイルがコピーされて更新されるだけであり、本発明が対象とするようなファイルの切替処理は行われていない。
また、特許文献３では同様にファイルの切替を対象としておらず、また更新バッファ上に作成された新しいバージョンのページは一時的に格納されているだけのものであり、その後参照用のページに格納されなければならないという問題点がある。
特許文献２は、例えばＷｅｂにおけるアプリケーションのアップデート時に適用されるべき技術であり、アップデートした時にかえって問題があり、元に戻したい時に使うことができる技術である。参照や更新時のロック等の排他制御とは無関係であり、本発明が対象とするファイル切替時には適用できないという問題点があった。
本発明が対象とするファイルの切替処理について図１及び図２を用いて更に説明する。
図１はカタログファイルに対する参照方式の従来例の説明図である。前述のようにクライアント側で作成され、サーバ側に転送、すなわち登録されるカタログファイルは一般にバージョンアップに対応して複数存在する。ただしその中で参照されて実際に用いられるファイル、すなわち現版（選択中）のファイルは１つだけである。そして例えばカタログファイルが三つ存在する場合、その状態は現版（選択中）と、旧版（旧選択）、及びそれ以外である。それ以外には、例えばテスト用や、新たにクライアント側から送られた切替（更新）用、すなわち新たに選択中に切り替えるべきファイルが含まれる。この中で現版（選択中）は必ず１つ必要であるが、例えばファイル切替（更新）時のエラー回復のために、旧選択のものも必要となる。
図１において参照アプリケーション１０は、カタログファイルの参照にあたって排他制御のために参照ロックをかける。そして選択中ファイル名格納部１２に格納されているファイル名を参照し、カタログファイル群１４、１５、１６のいずれかのうちで選択中（現版）のファイルの参照を行うことになる。図１では旧選択のファイル名を格納する格納部１３も存在し、選択中のファイルはＡカタログ１４であり、旧選択のファイルはＢカタログ１５であり、それ以外のファイルはＣカタログ１６である。
図２はカタログ切替（更新）処理方式の従来例の説明図である。図１におけると同様に、選択中ファイル名格納部１２にはＡカタログのファイル名が、旧選択ファイル名格納部１３にはＢカタログのファイル名が格納されている。この状態で更新処理１１は更新ロックをかけて更新処理を開始する。この更新処理の間は参照アプリケーション１０側はファイルの参照を行うことができない。
更新処理１１は選択中ファイル、すなわちＡカタログ１４を旧選択ファイルに切り替え、例えばＣカタログ１６を選択中ファイルとするために、選択中ファイル名格納部１２の格納内容をＣカタログに、また旧選択ファイル名格納部１３の格納内容をＡカタログに変更して、選択中ファイルをＡカタログからＣカタログに切り替えることになる。
このようなカタログファイルの切替（更新）処理においては、基本的にはファイルサービスを停止することなく、カタログファイルの切替を安全に行うことができることが望ましい。まず、カタログファイルの新規追加または更新を反映するために、現版（選択中）から新版への切替を行ったり、新規追加または更新を反映した結果、不具合が検出され、新版を現版に戻すように切り替えたり、あるいは時間帯で業務内容（本番／テスト）を変更するために本番用とテスト用とを切り替えたりする処理を、エラーが発生してもそのエラーを回復して、例えば直前に使われていた選択中ファイルを正しく認識して、そのファイルを参照できる状態に復帰するための処理が必要となる。
例えば図２において選択中ファイル名格納部１２の格納内容を変更するときにエラー、例えばＩ／ＯエラーでＣカタログのファイル名の代わりに全く異なる文字列が格納されてしまったり、旧選択ファイル名格納部１３の格納内容を変更する場合にＩ／Ｏエラーが生じたりすると、更新処理１１側でリカバリー処理をしなければならないが、どのような原因でエラーになったかを判別することは必ずしも容易ではなく、リカバリー処理が困難となってしまう場合があるという問題点があった。
【発明の開示】
本発明の目的は、ファイル切替時における対象ファイルのロックに起因する処理時間の増加を防ぐ方法を提供することである。また、ファイル切替（更新）時にエラーになった場合にも、その直前に現版（選択中）として使用されていたファイルのファイル名を正しく検出し、リカバリー処理を確実に実行できるファイル切替装置及び切替方法を提供することである。
本発明のファイル切替装置は、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるものであり、ファイル名称記憶手段、２つのファイル内容記憶手段、及びファイル切替手段を備える。
ファイル名称記憶手段は、ファイルの切替時点まで利用されていたファイルの名称を記憶するためのものであり、２つのファイル内容記憶手段のうち、一方は現時点まで使用されているファイルの内容がコピーされているものであり、他方のファイル内容記憶手段はファイルの切替時に新たなファイルの内容をコピーすべきものである。
ファイル切替手段は、ファイルの切替時に前記ファイル名称記憶手段に現版（選択中）ファイルの名称を記憶させ、前述の他方のファイル内容記憶手段に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶手段の記憶内容を消去させる切替処理を行うものである。
また本発明のファイル切替方法においては、ファイル切替時点まで現版（選択中）として使用されていたファイルの名称をログバッファに記憶させ、新たなファイルの内容のコピーを記憶装置の定められた領域に格納し、記憶装置の異なる領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去する方法が用いられる。また、この方法を実現するためのプログラム及び計算機読出し可能記憶媒体が用いられる。
以上のように本発明によれば、ファイル切替時点まで現版として使用されていたファイルの名称を記憶した後に、定められた二つの記憶領域のうち、空いている領域に新たなファイルの内容をコピーし、もう１つの領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去することになる。
【図面の簡単な説明】  図１は、従来のカタログ参照方式を説明する図である。
図２は、従来のカタログファイル切替処理の動作を説明する図である。
図３は、本発明のファイル切替装置の原理構成ブロック図である。
図４は、本発明のカタログファイル切替方式が適用されるシステムの全体構成ブロック図である。
図５は、図４におけるカタログファイルの構成例を示す図である。
図６は、カタログ情報ファイルとカタログエントリーファイルの具体例を示す図である。
図７は、図４のシステムにおけるファイル変換処理の説明図である。
図８は、図４のシステムにおけるカタログファイル切替処理の説明図である。
図９は、本実施形態におけるカタログファイル参照処理における動作の説明図である。
図１０は、カタログファイル切替処理における動作の説明図である。
図１１は、カタログファイル切替処理が正常に終了したときの状態を説明する図である。
図１２は、カタログファイル切替処理中にエラーが発生した場合の回復動作の説明図である。
図１３は、カタログ参照処理の詳細フローチャートである。
図１４は、有効カタログ獲得処理の詳細フローチャートである。
図１５は、カタログ切替処理の詳細フローチャートである。
図１６は、本発明を実現するためのプログラムのコンピュータへのローディングを説明する図である。
【発明を実施するための最良の形態】  図３は本発明のファイル切替装置の原理構成ブロック図である。同図においてファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替装置１は、ファイル名称記憶部２、２つのファイル内容記憶部３、４、ファイル切替部５を備える。
ファイル名称記憶部２は、ファイルの切替時点まで現版（選択中）として使用されていたファイルの名称を記憶するためのものであり、２つのファイル内容記憶部３、４のうち、一方のファイル内容記憶部は切替時点まで使用されている現版ファイルの内容がコピーされているものであり、他方のファイル内容記憶部はファイルの切替時に新たなファイルの内容がコピーされるものである。
ファイル切替部５は、ファイルの切替時にファイル名称記憶部２に現版ファイルの名称を記憶させ、前述の他方のファイル内容記憶部に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶部の記憶内容を消去させる切替処理を行うものである。
ファイル切替装置１は、ファイル参照アプリケーションが現版ファイルの内容を参照しようとする時、参照ロックをかけることなく、データが記憶されているファイル内容記憶部、例えば前記一方のファイル内容記憶部に対してアクセスを行わせるアクセス制御部を更に備えることもでき、またこの時、前記ファイル切替部５がファイルの切替処理を行っているクリティカルリージョン状態の場合には、ファイル参照アプリケーションにクリティカルリージョンの状態の解消を待たせ、更新ロックを獲得させた後にファイル参照を行わせる参照制御部を更に備えることもできる。
またファイル参照アプリケーションが現版ファイルの内容を参照しようとした時、前述の一方のファイル内容記憶部と他方のファイル内容記憶部との両方にファイルの内容が記憶されているエラーが検出された場合、ファイル名称記憶部２の記憶内容を用いて、ファイル切替以前に現版として使用されていたファイルにファイル参照アプリケーションのアクセスを行わせ、他方のファイル内容記憶部の記憶内容を消去するエラー処理部を備えることもできる。
本発明の実施形態について、図４以降を用いて更に詳細に説明する。図４は本発明のファイル切替方式が用いられるＸＬＭ文書フォーマット変換サービスシステムの全体構成ブロック図である。このシステムを例として、本発明の実施形態におけるファイル切替方式、すなわちカタログファイルの切替方式について説明する。
図４においてクライアント側のパソコン（ＰＣ）２０とサーバ２１とが接続され、さらにこれらはイントラネット、またはインターネット２２に接続されているものとする。このシステムにおいてＸＭＬ（エクステンシブル・マークアップ・ランゲージ）文書を、文書スタイル変換機能ＸＳＬＴ（エクステンシブル・スタイル・ランゲージ・トランスフォーメーション）スタイルシートを用いて、フォーマット変換するサービスが実行される。このサービスを行うためには、情報資源の場所を示すＵＲＩ（ユニフォーム・リソース・アイデンティファイア）によって指定されるスタイルシートが必要となる。
ＸＭＬ文書を読み込むためには、ＸＭＬファイル等を読み込んでデータをメモリに展開するＸＭＬパーサが使用されるが、文書中に外部実体の参照処理があると、ＸＭＬパーサはそのリソースを獲得しようとするが、その外部実体はＵＲＩで指定されている。そこでＵＲＩに対応するリソースを取得し、供給するＵＲＩリゾルバ機構が必要となる。
一般にこのＵＲＩリゾルバ機構は、ＵＲＩがＵＲＬ（ユニバーサル・リソース・ロケータ）であれば、インターネットを参照するか、あるいはイントラネット内のデータベースを参照してリソースを獲得する。この場合にはネットワークに接続されていることが前提となっており、オフラインではリソースの獲得ができない。そこで図４のシステムではカタログ方式が採用されている。
カタログ方式では、ＵＲＩリゾルバ機構に対して、外部実体とリソースの場所との関係が記述されたカタログブックを一まとめにしたカタログファイルを供給し、ＵＲＩリゾルバ機構はリソースが要求されたらこのカタログファイルを利用して、リソースの獲得を行うことになる。これによってＵＲＩリゾルバ機構をオフラインでも機能させることができる。しかし一方でカタログ保守のために、カタログファイルを、例えば現版から新版に随時全体として更新、すなわち切替を行うことが必要となる。そこでカタログファイルとして、複数のバージョンを異なる用途に対応して複数用意し、その選択すなわち切替を行うことが必要となる。
図４においてサーバ２１の内部には全体を管理する管理プロセス２８、ＸＭＬ文書のフォーマット変換等を行うための変換プロセス２３、カタログブックを一まとめにしたＸＭＬカタログファイル２４、及びカタログファイルの切替を行うための切替インターフェイス２５が備えられ、例えばクライアント側から指定される変換前ファイル２６が変換プロセス２３によって変換され、変換後ファイル２７が得られることになる。
図５はカタログファイル２４の構成例の説明図である。同図においてＸＭＬカタログファイル２４は、外部識別子／ＵＲＩとリソースファイルの場所との関係を記述するカタログエントリーファイル３０、ＸＭＬカタログファイルに関する情報、例えばファイル名、関数、コメント等を記述するカタログ情報ファイル３１、外部識別子／ＵＲＩによって参照されるファイル群としてのリソースファイル３２から構成され、またリソースファイル３２はスタイルシート３３、スキーマ３４及びＸＭＬファイル３５を備えている。
図６はカタログファイル２４内でのカタログエントリーファイル３０、及びカタログ情報ファイル３１の具体例である。ここでリソースファイルは（１）から（３）の３つのファイルから構成されているものとする。カタログエントリーファイル３０は、外部識別子／ＵＲＩとリソースファイルの場所との関係を記述したＸＭＬファイルであり、ＸＭＬ等の規格の標準化を行うＯＡＳＩＳ（オルガニゼーション・フォー・ザ・アドバンスメント・オブ・ストラクチャード・インフォメーション・スタンダーズ）によって作成された「ＸＭＬカタログ−コミッティ・スペシフィケーション０６Ａｕｇ２００１」に準拠している必要がある。
図７は図４のシステムにおけるファイル変換処理の説明図である。同図においてクライアント２０側からファイルの変換指示が変換プロセス２３に与えられると、▲１▼で変換前ファイル２６が読み込まれ、▲２▼で切替インタフェース２５のもっている情報から、変換処理において使用すべきカタログファイル、すなわち現版のカタログファイルについての情報が取得され、▲３▼でその現版のカタログファイル、ここではファイルＢが参照され、そのカタログファイルの内容を用いて▲４▼で変換後ファイル２７が作成される。
ファイル変換処理において、現版のカタログファイルとしてのファイルＢが直接参照されるものとしたが、これは説明の便宜上であり、本実施形態では図９以下で説明するように現版ファイルのコピーを参照することを基本とする。
図８は図４のシステムにおけるカタログ切替処理の説明図である。同図において、▲１▼でクライアント２０側から管理プロセス２８に対して、カタログ切替処理の指示が行われる。▲２▼で切替インタフェース２５により現版ファイル、すなわち選択中ファイルがＡカタログとされ、図７で選択中、すなわち現版ファイルとされていたＢカタログが旧選択ファイルとされる切替処理が実行される。
図９は本実施形態におけるカタログ参照処理の説明図である。本実施形態においては実際にはカタログの切替は非常に珍しく、切替がほとんど発生しないという実情に着目して、参照アプリケーションによる参照処理のコストを最小にするため、参照アプリケーションに対しては参照ロックを獲得させずに参照を許すことにする。
図９を従来技術における図１と比較すると、選択中ファイル名格納部１２、旧選択ファイル名格納部１３にかわって２つのカタログファイル複写領域（スイッチ）５１、５２、及びカタログの切替時にその時点まで選択中であったファイルの名称を旧選択ファイル名として格納するログファイル５０が設けられる。
図９では、選択中のファイルはＡカタログ１４であり、最後にファイルの切替が行われた以前に選択中であったファイル、すなわち旧選択のカタログファイルはＢカタログ１５であるとする。そして直前に行われた切替時にログファイル５０にはＢカタログのファイル名が格納され、それが消去されずにそのまま格納されているものとする。２つのファイル格納領域５１と５２の一方、ここでは５１に選択中のファイルとしてのＡカタログの内容がそのまま複写されており、もう一方の格納領域５２にはデータが格納されていない状態（あるいは空であることを示す所定の値）となっている。直前のカタログ切替時には格納領域５２に現在は旧選択のＢカタログの内容が複写されていたが、カタログ切替処理が正確に行われた結果、５２には何らのデータも格納されていない状態となっている。
ここでデータ格納領域５１をスイッチ１、格納領域５２をスイッチ２と呼ぶことにする。この名称は、これらの２つの格納領域にはカタログの参照が可能な正常の状態ではどちらか一方にカタログデータが格納されており、一方には全くデータが格納されていない状態となり、ファイルの切替が行われるたびにカタログファイルの複写されている領域が領域５１と５２の間で交互に切替られることに関連しており、またソフトウェアで行われる処理をハードウェア的に表現する名称である。
図１０はカタログ更新（切替）処理の説明図である。図９の状態で選択中であったＡカタログを旧選択ファイルとし、例えばクライアント側から新たに送られ、Ｃカタログ１６とされたカタログファイルを、選択中に切り替えるカタログ更新処理が行われるものとする。
更新処理１１は、まずログファイル５０に今まで選択中であったファイルの名称、すなわち“Ａカタログ”を格納した後に、図９ではデータが格納されていなかった領域５２に新たに選択中とすべきカタログファイル、すなわちＣカタログの内容を複写し、もう一方の領域５１、すなわちスイッチ１に格納されていたカタログファイル、すなわちＡカタログの消去を行うことになる。
この切替処理が行われている間は、２つの格納領域５１、５２、すなわちスイッチ１とスイッチ２の両方にデータが格納されているクリティカルリージョンの状態となり、この切替中に参照アプリケーション１０が選択中ファイルの参照を行おうとすると、クリティカルリージョンの状態が検出され、参照アプリケーション１０側は、後述するようにこのクリティカルリージョンの状態が解消された後に、再トライを行うことになる。
図１１はカタログ切替処理正常終了時の状態を説明する図である。図１０で説明したようにＡカタログ１４は旧選択ファイルとなり、Ｃカタログ１６が選択中ファイルとなる。格納領域５１、すなわちスイッチ１に格納されていたＡカタログの内容は消去され、ログファイル５２には旧選択のファイル名、すなわちＡカタログのファイル名が格納されている。このログファイルの格納内容は次のファイル切替時点までそのまま保たれ、次のファイル格納時点で上書きされるものとする。
図１２は更新、すなわち切替処理の間にエラーが発生した場合の動作説明図である。更新処理１１側での処理の間にエラーが発生すると、更新処理１１はエラー回復を行わないまま処理を終了するものとする。このようにエラーが発生した場合には、２つの記憶領域５１、５２、すなわちスイッチ１とスイッチ２の両方に複写されたカタログのデータが残っており、またログファイル５０には更新処理を行う前に選択中であったファイル名、ここではＡカタログのファイル名が格納されている。
参照アプリケーション１０側がこの状態で選択中ファイルの参照を行おうとすると、２つの格納領域５１、５２の両方にファイルのデータが存在することが検出され、エラー状態であることがわかり、参照アプリケーション１０はログファイル５０の内容を参照することによって、更新処理の前の選択中ファイルがＡカタログであったことを検出し、ここではスイッチ１側のＡカタログの内容を残し、スイッチ２側のＣカタログの内容を消去して、カタログファイル群のうちでＡカタログ１４を再び選択中に戻して、そのファイルの内容を参照し、処理を終了する。これによって、カタログ切替時にエラーが起こった場合にも、切替の前に使用されていたファイルに確実にアクセスすることが可能となる。
図１３は本実施形態におけるカタログ参照処理のフローチャートである。同図においてカタログ参照処理が開始されると、まずステップＳ１で参照ロックなしに有効カタログの獲得処理が行われる。この処理については図１４で説明する。そしてステップＳ２で正常にカタログが獲得できたか否かが判定され、正常に獲得できた場合にはそのまま処理を終了する。
正常に獲得できないと判定される場合は、図１４で説明するようにファイルの切替処理中で、２つの格納領域５１、５２、すなわちスイッチ１とスイッチ２の両方にファイルデータが格納されているクリティカルリージョンの状態であることになり、ステップＳ３でクリティカルリージョンを抜けるのを待つためロックの獲得トライが行われ、ステップＳ４でクリティカルリージョンの状態を抜けるのを待ち、カタログ切替が完了して待ち状態が解除されるとロックが実際に獲得され、ステップＳ５でステップＳ１と同様の有効カタログの獲得処理が行われ、ここで有効カタログが獲得されると、ステップＳ６でロックが解除されて処理を終了する。
ここでステップＳ３で獲得がトライされるロックとは更新ロックであり、参照アプリケーション側があたかも更新処理であるかのように更新ロックを獲得しようとするものである。更新ロックを獲得しようとすることで、カタログの切替処理が完了し、ロックが獲得できた時点で待ち状態を解除することができ、これによって有効カタログ獲得処理を開始するタイミングを参照アプリケーション側で検出することが可能となる。
図１４は図１３のステップＳ１、またはＳ５における有効カタログ獲得処理の詳細フローチャートである。同図において処理が開始されるとまずステップＳ１０で参照元がロック済で、かつスイッチの両方にデータが格納されているか否かが判定される。参照元がロック済であるということは、図１３のステップＳ４で待ち状態が解除され、参照アプリケーション側で更新ロックが獲得された状態を意味し、この状態でスイッチの両方にデータが格納されているということは、クリティカルリージョンを抜けたにもかかわらず、両方のスイッチにデータが格納されているエラー状態を意味することになる。そこでステップＳ１１でログファイルの内容がチェックされ、切替エラーの発生前に選択されていたカタログファイルを選択中に戻すため、すなわちエラー状態のリカバリーを行うために、図１２で説明したようにログファイル５０に格納されている名称のファイルの内容を格納しているスイッチ側のデータだけが残され、もう一方のスイッチ側のデータは消去される。
ステップＳ１１の処理が行われた後、またはステップＳ１０で参照元がロック済でないか、あるいはスイッチの両方にデータが格納されている状態でない場合には、ステップＳ１２でスイッチ１側のみにデータがあるか否かが判定され、その結果がＹｅｓであるときには、ステップＳ１３でスイッチ１の内容が獲得（通知）されて、図１３の処理に戻る。
ステップＳ１２でスイッチ１側のみにデータがある状態でない場合には、ステップＳ１４でスイッチ２側のみにデータが格納されているか否かが判定され、結果がＹｅｓである場合にはステップＳ１５でスイッチ２の内容が獲得されて、図１３の処理に戻る。
ステップＳ１４の判定がＮｏである場合には、ステップＳ１６で２つのスイッチの両方にデータがないか否かが判定される。この判定結果がＮｏである場合には、両方にデータがある、すなわちステップＳ１０で２つのスイッチにデータが格納されているにもかかわらず、参照元がロック済でない状態、すなわちクリティカルリージョンの状態であることになり、ステップＳ１７でクリティカルリージョンの状態であることが通知されて、図１３の処理に戻る。
ステップＳ１６で両方にデータが無いと判定された場合には、例えばシステムの保守中に２つのスイッチのデータをいずれも消去したメンテナンス状態であることになり、このようなメンテナンス状態の時には、それ以上処理を続けることができないので、ステップＳ１８で対応するエラー処理に移行する。
図１５はカタログ切替処理のフローチャートである。同図において処理が開始されると、まずステップＳ２０でロック、すなわち更新ロックの獲得が行われ、ステップＳ２１でエラーがあるか否か、すなわち両方のスイッチにデータが格納されているか否かが判定され、判定結果がＹｅｓである場合には、ステップＳ２２でログファイルの内容がチェックされ、エラー発生前に選択中であったファイルの内容を示すスイッチ側が選択中ファイルとされ、ステップＳ２３の処理に移行する。ステップＳ２１の判定結果がＮｏの時には直ちにステップＳ２３に移行する。
ステップＳ２３では選択中カタログファイルの名称がログファイルに記録されるが、ステップＳ２１で何らかの理由でエラーがあった場合にも、図１０及び図１１のように正常にカタログ切替が行われている場合にも、ステップＳ２３ではＡカタログの名称がログファイルに記録されることになる。
続いてステップＳ２４で新しいカタログ、すなわち新たに選択中とされるべきカタログファイルの内容が空いているスイッチ側の記憶領域に複写され、ステップＳ２５でファイルの切替処理、すなわち図１１ではＣカタログを選択中、Ａカタログを旧選択とする切替処理が行われ、ステップＳ２６で旧選択側のスイッチに格納されているデータが消去されたか否かが判定され、Ｙｅｓの場合には処理を終了し、さらに何らかのエラーが発生した場合にはステップＳ２７でエラー処理が実行される。
以上において本発明のファイル切替装置、及び切替方法についてその詳細を説明したが、このファイル切替装置は当然一般的なコンピュータシステムとして構成することが可能である。図１６はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
図１６においてコンピュータシステムは中央処理装置（ＣＰＵ）７０、リードオンリーメモリ（ＲＯＭ）７１、ランダムアクセスメモリ（ＲＡＭ）７２、通信インタフェース２３、記憶装置７４、入出力装置７５、可搬型記憶媒体の読取り装置７６、及びこれらの全てが接続されたバス７７によって構成されている。
記憶装置７４としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置７４、またはＲＯＭ７１に図１３〜図１５のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項７のプログラムなどが格納され、そのようなプログラムがＣＰＵ７０によって実行されることにより、本実施形態におけるカタログファイルの参照、ファイルの切替、切替時のエラーに対するリカバリー処理などが可能となる。
このようなプログラムは、プログラム提供者７８側からネットワーク７９、及び通信インタフェース７３を介して、例えば記憶装置７４に格納されることも、また市販され、流通している可搬型記憶媒体８０に格納され、読取り装置７６にセットされて、ＣＰＵ７０によって実行されることも可能である。可搬型記憶媒体８０としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＤＶＤ等様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取装置７６によって読取られることにより、本実施形態におけるカタログファイルの切替等が可能となる。
以上詳細に説明したように、本発明によれば、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替方式において、ファイル切替処理との衝突が起こっても、またファイル切替時にエラーが起こっても、ファイル参照側で正しく動作していた現版のファイルを認識してファイル参照処理を行うことができる。またこのようなエラー発生時のリカバリー処理も参照側で安全、かつ確実に行うことが可能となる。これによってカタログ切替の信頼性が向上し、このようなファイル、特にカタログファイルの実用性の向上に寄与するところが大きい。
【産業上の利用可能性】  本発明は、ファイル内のデータを変更すべき時、全体を新しいファイルに切り替える形式のファイルを利用するすべての産業において利用可能である。特に実際にはファイルの切替が行われることが少なく、頻繁に参照されるファイルを使って、製品製造やビジネス等を行うすべての産業に利用可能である。
【図１】
2004109518.tif 000003
【図２】
2004109518.tif 000004
【図３】
2004109518.tif 000005
【図４】
2004109518.tif 000006
【図５】
2004109518.tif 000007
【図６】
2004109518.tif 000008
【図７】
2004109518.tif 000009
【図８】
2004109518.tif 000010
【図９】
2004109518.tif 000011
【図１０】
2004109518.tif 000012
【図１１】
2004109518.tif 000013
【図１２】
2004109518.tif 000014
【図１３】
2004109518.tif 000015
【図１４】
2004109518.tif 000016
【図１５】
2004109518.tif 000017
【図１６】
2004109518.tif 000018
【手続補正書】
【提出日】平成17年11月9日(2005.11.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファイルを切り替える計算機によって使用されるプログラムにおいて、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させる手順と、
新たなファイルの内容の複写を記憶装置の定められた領域に格納する手順と、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とする手順とを計算機に実行させるためのプログラム。
【請求項２】
前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記２つの定められた領域のうちで、ファイルの内容が記憶されている領域に対してロックをかけることなく、該ファイル参照アプリケーションにアクセスを許可する手順を計算機に更に実行させることを特徴とする請求項１記載のプログラム。
【請求項３】
前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時にファイルの切替処理が行われているクリティカルリージョンの状態の場合には、該ファイル参照アプリケーションに該クリティカルリージョンの状態の解消を待たせた後に，ファイル参照を行わせる手順を更に計算機に実行させることを特徴とする請求項１記載のプログラム。
【請求項４】
前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記２つの定められた領域の両方にファイルのデータが記憶されているエラー状態が検出された場合には、該ファイル参照アプリケーションに、前記ログバッファの記憶内容に従って該エラーの発生以前に現版として使用されていたファイルにアクセスさせ、前記新たなファイルの内容の複写が格納された、前記定められた領域をデータ未格納の状態とする手順を更に計算機に実行させることを特徴とする請求項１記載のプログラム。
【請求項５】
ファイルを切り替えるファイル切替方法において、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させ、
新たなファイルの内容の複写を記憶装置の定められた領域に格納し、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とすることを特徴とするファイル切替方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はファイルの切替方式に関する。すなわちファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるべきファイルを対象として、ファイル参照時には参照ロックをかけることなくアクセスすることができる、ファイルの切替を行うファイル切替装置及び切替方法に関する。
【背景技術】
【０００２】
一般にファイルの更新を行う場合には、更新中にファイルが参照されることを防止するために更新ロック、すなわち排他制御を行って更新を行うことになる。
このような排他制御を行うことなくファイル更新を行うための従来技術として、次のような文献がある。
【特許文献１】特開平７−１８２２１３号「ファイル共用システム」
【特許文献２】特開平７−２８１９３４号「システムファイルの更新及び復元方法」
【特許文献３】特開平８−３２８９３３号「並列処理システムのファイルアクセス制御方式」
【０００３】
特許文献１には、ファイル更新期間中にも更新前のファイルを他の利用者が利用可能とするために、実メモリ上のファイルを利用者それぞれの論理空間に割付け、ファイル更新時には例外処理の中で実メモリ上のファイルのコピーをおこない、コピーされたファイルを更新するため、利用者間での排他制御が不要となる技術が開示されている。
【０００４】
特許文献２には、ＯＳによってアクセスが拒否されているファイルの更新などをソフトウェアによって実現する方法が開示されており、その方法では二つの記憶領域に同一のＯＳを格納しておき、ファイル更新時には稼動中の第一のＯＳを終了させて第２のＯＳを起動させ、第二のＯＳの機能を用いてファイルの更新（入替）が行われる。
【０００５】
特許文献３では、ページ参照用の参照バッファとページ更新用の更新バッファを設け、ページ更新の場合には新しいバージョンのページを更新バッファ上に作成し、ファイルの排他制御によるオーバヘッドを削減するファイルアクセス制御方式が開示されている。
【０００６】
しかしながらこれらの従来技術は、いずれも基本的にはファイルの更新、すなわちファイル内の一部のデータの変更を含むファイルの更新を対象としており、本発明におけるカタログ切替とは対象が異なるものである。
【０００７】
データの一部の変更ではなく、切替を行うべきファイルとして後述するカタログファイルがある。カタログファイルは、例えばＸＭＬ文書のフォーマット変換内の処理として外部実体の参照処理がある時、ＵＲＩ（ユニフォーム・リソース・アイデンティファイア）によって指定されるリソースの場所と外部にある実体との関係を記述するものである。このカタログファイルは一般にクライアント側のパソコンで作成され、フォーマット変換を行うサーバに一括してファイル転送されるものであり、便宜上１つのファイルとして扱われ、例えばサーバ側にはバージョンアップに対応する旧版、現版、及び新版の三つのバージョンのカタログファイルが保持され、必要に応じて例えば現版を新版に切り替えるファイル切替処理が行われることとなる。
【０００８】
前述の特許文献１ではファイルがコピーされて更新されるだけであり、本発明が対象とするようなファイルの切替処理は行われていない。
また、特許文献３では同様にファイルの切替を対象としておらず、また更新バッファ上に作成された新しいバージョンのページは一時的に格納されているだけのものであり、その後参照用のページに格納されなければならないという問題点がある。
【０００９】
特許文献２は、例えばＷｅｂにおけるアプリケーションのアップデート時に適用されるべき技術であり、アップデートした時にかえって問題があり、元に戻したい時に使うことができる技術である。参照や更新時のロック等の排他制御とは無関係であり、本発明が対象とするファイル切替時には適用できないという問題点があった。
【００１０】
本発明が対象とするファイルの切替処理について図１及び図２を用いて更に説明する。
図１はカタログファイルに対する参照方式の従来例の説明図である。前述のようにクライアント側で作成され、サーバ側に転送、すなわち登録されるカタログファイルは一般にバージョンアップに対応して複数存在する。ただしその中で参照されて実際に用いられるファイル、すなわち現版（選択中）のファイルは１つだけである。そして例えばカタログファイルが三つ存在する場合、その状態は現版（選択中）と、旧版（旧選択）、及びそれ以外である。それ以外には、例えばテスト用や、新たにクライアント側から送られた切替（更新）用、すなわち新たに選択中に切り替えるべきファイルが含まれる。この中で現版（選択中）は必ず１つ必要であるが、例えばファイル切替（更新）時のエラー回復のために、旧選択のものも必要となる。
【００１１】
図１において参照アプリケーション１０は、カタログファイルの参照にあたって排他制御のために参照ロックをかける。そして選択中ファイル名格納部１２に格納されているファイル名を参照し、カタログファイル群１４、１５、１６のいずれかのうちで選択中（現版）のファイルの参照を行うことになる。図１では旧選択のファイル名を格納する格納部１３も存在し、選択中のファイルはＡカタログ１４であり、旧選択のファイルはＢカタログ１５であり、それ以外のファイルはＣカタログ１６である。
【００１２】
図２はカタログ切替（更新）処理方式の従来例の説明図である。図１におけると同様に、選択中ファイル名格納部１２にはＡカタログのファイル名が、旧選択ファイル名格納部１３にはＢカタログのファイル名が格納されている。この状態で更新処理１１は更新ロックをかけて更新処理を開始する。この更新処理の間は参照アプリケーション１０側はファイルの参照を行うことができない。
【００１３】
更新処理１１は選択中ファイル、すなわちＡカタログ１４を旧選択ファイルに切り替え、例えばＣカタログ１６を選択中ファイルとするために、選択中ファイル名格納部１２の格納内容をＣカタログに、また旧選択ファイル名格納部１３の格納内容をＡカタログに変更して、選択中ファイルをＡカタログからＣカタログに切り替えることになる。
【００１４】
このようなカタログファイルの切替（更新）処理においては、基本的にはファイルサービスを停止することなく、カタログファイルの切替を安全に行うことができることが望ましい。まず、カタログファイルの新規追加または更新を反映するために、現版（選択中）から新版への切替を行ったり、新規追加または更新を反映した結果、不具合が検出され、新版を現版に戻すように切り替えたり、あるいは時間帯で業務内容（本番／テスト）を変更するために本番用とテスト用とを切り替えたりする処理を、エラーが発生してもそのエラーを回復して、例えば直前に使われていた選択中ファイルを正しく認識して、そのファイルを参照できる状態に復帰するための処理が必要となる。
【００１５】
例えば図２において選択中ファイル名格納部１２の格納内容を変更するとき にエラー、例えばＩ／０エラーでＣカタログのファイル名の代わりに全く異なる文字列が格納されてしまったり、旧選択ファイル名格納部１３の格納内容を変更する場合にＩ／０エラーが生じたりすると、更新処理11側でリカバリー処理をしなければならないが、どのような原因でエラーになったかを判別することは必ずしも容易ではなく、リカバリー処理が困難となってしまう場合があるという問題点があった。
【発明の開示】
【００１６】
本発明の目的は、ファイル切替時における対象ファイルのロックに起因する処理時間の増加を防ぐ方法を提供することである。また、ファイル切替（更新）時にエラーになった場合にも、その直前に現版（選択中）として使用されていたファイルのファイル名を正しく検出し、リカバリー処理を確実に実行でき るファイル切替装置及び切替方法を提供することである。
【００１７】
本発明のファイル切替装置は、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるものであり、ファイル名称記憶手段、２つのファイル内容記憶手段、及びファイル切替手段を備える。
【００１８】
ファイル名称記憶手段は、ファイルの切替時点まで利用されていたファイルの名称を記憶するためのものであり、２つのファイル内容記憶手段のうち、一方は現時点まで使用されているファイルの内容がコピーされているものであり、他方のファイル内容記憶手段はファイルの切替時に新たなファイルの内容をコピーすべきものである。
【００１９】
ファイル切替手段は、ファイルの切替時に前記ファイル名称記憶手段に現版（選択中）ファイルの名称を記憶させ、前述の他方のファイル内容記憶手段に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶手段の記憶内容を消去させる切替処理を行うものである。
【００２０】
また本発明のファイル切替方法においては、ファイル切替時点まで現版（選択中）として使用されていたファイルの名称をログバッファに記憶させ、新たなファイルの内容のコピーを記憶装置の定められた領域に格納し、記憶装置の異なる領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去する方法が用いられる。また、この方法を実現するためのプログラム及び計算機読出し可能記憶媒体が用いられる。
【００２１】
以上のように本発明によれば、ファイル切替時点まで現版として使用されていたファイルの名称を記憶した後に、定められた二つの記憶領域のうち、空いている領域に新たなファイルの内容をコピーし、もう１つの領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去することになる。
【発明を実施するための最良の形態】
【００２２】
図３は本発明のファイル切替装置の原理構成ブロック図である。同図においてファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替装置１は、ファイル名称記憶部２、２つのファイル内容記憶部３、４、ファイル切替部５を備える。
【００２３】
ファイル名称記憶部２は、ファイルの切替時点まで現版（選択中）として使用されていたファイルの名称を記憶するためのものであり、２つのファイル内容記憶部３、４のうち、一方のファイル内容記憶部は切替時点まで使用されている現版ファイルの内容がコピーされているものであり、他方のファイル内容記憶部はファイルの切替時に新たなファイルの内容がコピーされるものである。
【００２４】
ファイル切替部５は、ファイルの切替時にファイル名称記憶部２に現版ファイルの名称を記憶させ、前述の他方のファイル内容記憶部に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶部の記憶内容を消去させる切替処理を行うものである。
【００２５】
ファイル切替装置１は、ファイル参照アプリケーションが現版ファイルの内容を参照しようとする時、参照ロックをかけることなく、データが記憶されているファイル内容記憶部、例えば前記一方のファイル内容記憶部に対してアクセスを行わせるアクセス制御部を更に備えることもでき、またこの時、前記ファイル切替部５がファイルの切替処理を行っているクリティカルリージョン状態の場合には、ファイル参照アプリケーションにクリティカルリージョンの状態の解消を待たせ、更新ロックを獲得させた後にファイル参照を行わせる参照制御部を更に備えることもできる。
【００２６】
またファイル参照アプリケーションが現版ファイルの内容を参照しようとした時、前述の一方のファイル内容記憶部と他方のファイル内容記憶部との両方にファイルの内容が記憶されているエラーが検出された場合、ファイル名称記憶部２の記憶内容を用いて、ファイル切替以前に現版として使用されていたファイルにファイル参照アプリケーションのアクセスを行わせ、他方のファイル内容記憶部の記憶内容を消去するエラー処理部を備えることもできる。
【００２７】
本発明の実施形態について、図４以降を用いて更に詳細に説明する。図４は本発明のファイル切替方式が用いられるＸＬＭ文書フォーマット変換サービスシステムの全体構成ブロック図である。このシステムを例として、本発明の実施形態におけるファイル切替方式、すなわちカタログファイルの切替方式について説明する。
【００２８】
図４においてクライアント側のパソコン（ＰＣ）２０とサーバ２１とが接続され、さらにこれらはイントラネット、またはインターネット２２に接続されているものとする。このシステムにおいてＸＭＬ（エクステンシブル・マークアップ・ランゲージ）文書を、文書スタイル変換機能ＸＳＬＴ（エクステンシブル・スタイル・ランゲージ・トランスフォーメーション）スタイルシートを用いて、フォーマット変換するサービスが実行される。このサービスを行うためには、情報資源の場所を示すＵＲＩ（ユニフォーム・リソース・アイデンティファイア）によって指定されるスタイルシートが必要となる。
【００２９】
ＸＭＬ文書を読み込むためには、ＸＭＬファイル等を読み込んでデータをメモリに展開するＸＭＬパーサが使用されるが、文書中に外部実体の参照処理があると、ＸＭＬパーサはそのリソースを獲得しようとするが、その外部実体はＵＲＩで指定されている。そこでＵＲＩに対応するリソースを取得し、供給するＵＲＩリゾルバ機構が必要となる。
【００３０】
一般にこのＵＲＩリゾルバ機構は、ＵＲＩがＵＲＬ（ユニバーサル・リソース・ロケータ）であれば、インターネットを参照するか、あるいはイントラネット内のデータベースを参照してリソースを獲得する。この場合にはネットワークに接続されていることが前提となっており、オフラインではリソースの獲得ができない。そこで図４のシステムではカタログ方式が採用されている。
【００３１】
カタログ方式では、ＵＲＩリゾルバ機構に対して、外部実体とリソースの場所との関係が記述されたカタログブックを一まとめにしたカタログファイルを供給し、ＵＲＩリゾルバ機構はリソースが要求されたらこのカタログファイルを利用して、リソースの獲得を行うことになる。これによってＵＲＩリゾルバ機構をオフラインでも機能させることができる。しかし一方でカタログ保守のために、カタログファイルを、例えば現版から新版に随時全体として更新、すなわち切替を行うことが必要となる。そこでカタログファイルとして、複数のバージョンを異なる用途に対応して複数用意し、その選択すなわち切替を行うことが必要となる。
【００３２】
図４においてサーバ２１の内部には全体を管理する管理プロセス２８、ＸＭＬ文書のフォーマット変換等を行うための変換プロセス２３、カタログブックを一まとめにしたＸＭＬカタログファイル２４、及びカタログファイルの切替を行うための切替インターフェイス２５が備えられ、例えばクライアント側から指定される変換前ファイル２６が変換プロセス２３によって変換され、変換後ファイル２７が得られることになる。
【００３３】
図５はカタログファイル２４の構成例の説明図である。同図においてＸＭＬカタログファイル２４は、外部識別子／ＵＲＩとリソースファイルの場所との関係を記述するカタログエントリーファイル３０、ＸＭＬカタログファイルに関する情報、例えばファイル名、関数、コメント等を記述するカタログ情報ファイル３１、外部識別子／ＵＲＩによって参照されるファイル群としてのリソースファイル３２から構成され、またリソースファイル３２はスタイルシート３３、スキーマ３４及びＸＭＬファイル３５を備えている。
【００３４】
図６はカタログファイル２４内でのカタログエントリーファイル３０、及びカタログ情報ファイル３１の具体例である。ここでリソースファイルは（１）から（３）の３つのファイルから構成されているものとする。カタログエントリーファイル３０は、外部識別子／ＵＲＩとリソースファイルの場所との関係を記述したＸＭＬファイルであり、ＸＭＬ等の規格の標準化を行うＯＡＳＩＳ（オルガニゼーション・フォー・ザ・アドバンスメント・オブ・ストラクチャード・インフォメーション・スタンダーズ）によって作成された「ＸＭＬカタログ−コミッティ・スペシフィケーション０６Ａｕｇ２００１」に準拠している必要がある。
【００３５】
図７は図４のシステムにおけるファイル変換処理の説明図である。同図においてクライアント２０側からファイルの変換指示が変換プロセス２３に与えられると、１)で変換前ファイル２６が読み込まれ、２)で切替インタフェース２５のもっている情報から、変換処理において使用すべきカタログファイル、すなわち現版のカタログファイルについての情報が取得され、３)でその現版のカタログファイル、ここではファイルＢが参照され、そのカタログファイルの内容を用いて４)で変換後ファイル２７が作成される。
【００３６】
ファイル変換処理において、現版のカタログファイルとしてのファイルＢが直接参照されるものとしたが、これは説明の便宜上であり、本実施形態では図９以下で説明するように現版ファイルのコピーを参照することを基本とする。
【００３７】
図８は図４のシステムにおけるカタログ切替処理の説明図である。同図において、１)でクライアント２０側から管理プロセス２８に対して、カタログ切替処理の指示が行われる。２)で切替インタフェース２５により現版ファイル、すなわち選択中ファイルがＡカタログとされ、図７で選択中、すなわち現版ファイルとされていたＢカタログが旧選択ファイルとされる切替処理が実行される。
【００３８】
図９は本実施形態におけるカタログ参照処理の説明図である。本実施形態においては実際にはカタログの切替は非常に珍しく、切替がほとんど発生しないという実情に着目して、参照アプリケーションによる参照処理のコストを最小にするため、参照アプリケーションに対しては参照ロックを獲得させずに参照を許すことにする。
【００３９】
図９を従来技術における図１と比較すると、選択中ファイル名格納部１２、旧選択ファイル名格納部１３にかわって２つのカタログファイル複写領域（スイッチ）５１、５２、及びカタログの切替時にその時点まで選択中であったファイルの名称を旧選択ファイル名として格納するログファイル５０が設けられる。
【００４０】
図９では、選択中のファイルはＡカタログ１４であり、最後にファイルの切替が行われた以前に選択中であったファイル、すなわち旧選択のカタログファイルはＢカタログ１５であるとする。そして直前に行われた切替時にログファイル５０にはＢカタログのファイル名が格納され、それが消去されずにそのまま格納されているものとする。２つのファイル格納領域５１と５２の一方、ここでは５１に選択中のファイルとしてのＡカタログの内容がそのまま複写されており、もう一方の格納領域５２にはデータが格納されていない状態（あるいは空であることを示す所定の値）となっている。直前のカタログ切替時には格納領域５２に現在は旧選択のＢカタログの内容が複写されていたが、カタログ切替処理が正確に行われた結果、５２には何らのデータも格納されていない状態となっている。
【００４１】
ここでデータ格納領域５１をスイッチ１、格納領域５２をスイッチ２と呼ぶことにする。この名称は、これらの２つの格納領域にはカタログの参照が可能な正常の状態ではどちらか一方にカタログデータが格納されており、一方には全くデータが格納されていない状態となり、ファイルの切替が行われるたびにカタログファイルの複写されている領域が領域５１と５２の間で交互に切替られることに関連しており、またソフトウェアで行われる処理をハードウェア的に表現する名称である。
【００４２】
図１０はカタログ更新（切替）処理の説明図である。図９の状態で選択中であったＡカタログを旧選択ファイルとし、例えばクライアント側から新たに送られ、Ｃカタログ１６とされたカタログファイルを、選択中に切り替えるカタログ更新処理が行われるものとする。
【００４３】
更新処理１１は、まずログファイル５０に今まで選択中であったファイルの名称、すなわち“Ａカタログ”を格納した後に、図９ではデータが格納されていなかった領域５２に新たに選択中とすべきカタログファイル、すなわちＣカタログの内容を複写し、もう一方の領域５１、すなわちスイッチ１に格納されていたカタログファイル、すなわちＡカタログの消去を行うことになる。
【００４４】
この切替処理が行われている間は、２つの格納領域５１、５２、すなわちスイッチ１とスイッチ２の両方にデータが格納されているクリティカルリージョンの状態となり、この切替中に参照アプリケーション１０が選択中ファイルの参照を行おうとすると、クリティカルリージョンの状態が検出され、参照アプリケーション１０側は、後述するようにこのクリティカルリージョンの状態が解消された後に、再トライを行うことになる。
【００４５】
図１１はカタログ切替処理正常終了時の状態を説明する図である。図１０で説明したようにＡカタログ１４は旧選択ファイルとなり、Ｃカタログ１６が選択中ファイルとなる。格納領域５１、すなわちスイッチ１に格納されていたＡカタログの内容は消去され、ログファイル５２には旧選択のファイル名、すなわちＡカタログのファイル名が格納されている。このログファイルの格納内容は次のファイル切替時点までそのまま保たれ、次のファイル格納時点で上書きされるものとする。
【００４６】
図１２は更新、すなわち切替処理の間にエラーが発生した場合の動作説明図である。更新処理１１側での処理の間にエラーが発生すると、更新処理１１はエラー回復を行わないまま処理を終了するものとする。このようにエラーが発生した場合には、２つの記憶領域５１、５２、すなわちスイッチ１とスイッチ２の両方に複写されたカタログのデータが残っており、またログファイル５０には更新処理を行う前に選択中であったファイル名、ここではＡカタログのファイル名が格納されている。
【００４７】
参照アプリケーション１０側がこの状態で選択中ファイルの参照を行おうとすると、２つの格納領域５１、５２の両方にファイルのデータが存在することが検出され、エラー状態であることがわかり、参照アプリケーション１０はログファイル５０の内容を参照することによって、更新処理の前の選択中ファイルがＡカタログであったことを検出し、ここではスイッチ１側のＡカタログの内容を残し、スイッチ２側のＣカタログの内容を消去して、カタログファイル群のうちでＡカタログ１４を再び選択中に戻して、そのファイルの内容を参照し、処理を終了する。これによって、カタログ切替時にエラーが起こった場合にも、切替の前に使用されていたファイルに確実にアクセスすることが可能となる。
【００４８】
図１３は本実施形態におけるカタログ参照処理のフローチャートである。同図においてカタログ参照処理が開始されると、まずステップＳ１で参照ロックなしに有効カタログの獲得処理が行われる。この処理については図１４で説明する。そしてステップＳ２で正常にカタログが獲得できたか否かが判定され、正常に獲得できた場合にはそのまま処理を終了する。
【００４９】
正常に獲得できないと判定される場合は、図１４で説明するようにファイルの切替処理中で、２つの格納領域５１、５２、すなわちスイッチ１とスイッチ２の両方にファイルデータが格納されているクリティカルリージョンの状態であることになり、ステップＳ３でクリティカルリージョンを抜けるのを待つためロックの獲得トライが行われ、ステップＳ４でクリティカルリージョンの状態を抜けるのを待ち、カタログ切替が完了して待ち状態が解除されるとロックが実際に獲得され、ステップＳ５でステップＳ１と同様の有効カタログの獲得処理が行われ、ここで有効カタログが獲得されると、ステップＳ６でロックが解除されて処理を終了する。
【００５０】
ここでステップＳ３で獲得がトライされるロックとは更新ロックであり、参照アプリケーション側があたかも更新処理であるかのように更新ロックを獲得しようとするものである。更新ロックを獲得しようとすることで、カタログの切替処理が完了し、ロックが獲得できた時点で待ち状態を解除することができ、これによって有効カタログ獲得処理を開始するタイミングを参照アプリケーション側で検出することが可能となる。
【００５１】
図１４は図１３のステップＳ１、またはＳ５における有効カタログ獲得処理の詳細フローチャートである。同図において処理が開始されるとまずステップＳ１０で参照元がロック済で、かつスイッチの両方にデータが格納されているか否かが判定される。参照元がロック済であるということは、図１３のステップＳ４で待ち状態が解除され、参照アプリケーション側で更新ロックが獲得された状態を意味し、この状態でスイッチの両方にデータが格納されているということは、クリティカルリージョンを抜けたにもかかわらず、両方のスイッチにデータが格納されているエラー状態を意味することになる。そこでステップＳ１１でログファイルの内容がチェックされ、切替エラーの発生前に選択されていたカタログファイルを選択中に戻すため、すなわちエラー状態のリカバリーを行うために、図１２で説明したようにログファイル５０に格納されている名称のファイルの内容を格納しているスイッチ側のデータだけが残され、もう一方のスイッチ側のデータは消去される。
【００５２】
ステップＳ１１の処理が行われた後、またはステップＳ１０で参照元がロック済でないか、あるいはスイッチの両方にデータが格納されている状態でない場合には、ステップＳ１２でスイッチ１側のみにデータがあるか否かが判定され、その結果がＹｅｓであるときには、ステップＳ１３でスイッチ１の内容が獲得（通知）されて、図１３の処理に戻る。
【００５３】
ステップＳ１２でスイッチ１側のみにデータがある状態でない場合には、ステップＳ１４でスイッチ２側のみにデータが格納されているか否かが判定され、結果がＹｅｓである場合にはステップＳ１５でスイッチ２の内容が獲得されて、図１３の処理に戻る。
【００５４】
ステップＳ１４の判定がＮｏである場合には、ステップＳ１６で２つのスイッチの両方にデータがないか否かが判定される。この判定結果がＮｏである場合には、両方にデータがある、すなわちステップＳ１０で２つのスイッチにデータが格納されているにもかかわらず、参照元がロック済でない状態、すなわちクリティカルリージョンの状態であることになり、ステップＳ１７でクリティカルリージョンの状態であることが通知されて、図１３の処理に戻る。
【００５５】
ステップＳ１６で両方にデータが無いと判定された場合には、例えばシステムの保守中に２つのスイッチのデータをいずれも消去したメンテナンス状態であることになり、このようなメンテナンス状態の時には、それ以上処理を続けることができないので、ステップＳ１８で対応するエラー処理に移行する。
【００５６】
図１５はカタログ切替処理のフローチャートである。同図において処理が開始されると、まずステップＳ２０でロック、すなわち更新ロックの獲得が行われ、ステップＳ２１でエラーがあるか否か、すなわち両方のスイッチにデータが格納されているか否かが判定され、判定結果がＹｅｓである場合には、ステップＳ２２でログファイルの内容がチェックされ、エラー発生前に選択中であったファイルの内容を示すスイッチ側が選択中ファイルとされ、ステップＳ２３の処理に移行する。ステップＳ２１の判定結果がＮｏの時には直ちにステップＳ２３に移行する。
【００５７】
ステップＳ２３では選択中カタログファイルの名称がログファイルに記録されるが、ステップＳ２１で何らかの理由でエラーがあった場合にも、図１０及び図１１のように正常にカタログ切替が行われている場合にも、ステップＳ２３ではＡカタログの名称がログファイルに記録されることになる。
【００５８】
続いてステップＳ２４で新しいカタログ、すなわち新たに選択中とされるべきカタログファイルの内容が空いているスイッチ側の記憶領域に複写され、ステップＳ２５でファイルの切替処理、すなわち図１１ではＣカタログを選択中、Ａカタログを旧選択とする切替処理が行われ、ステップＳ２６で旧選択側のスイッチに格納されているデータが消去されたか否かが判定され、Ｙｅｓの場合には処理を終了し、さらに何らかのエラーが発生した場合にはステップＳ２７でエラー処理が実行される。
【００５９】
以上において本発明のファイル切替装置、及び切替方法についてその詳細を説明したが、このファイル切替装置は当然一般的なコンピュータシステムとして構成することが可能である。図１６はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
【００６０】
図１６においてコンピュータシステムは中央処理装置（ＣＰＵ）７０、リードオンリーメモリ（ＲＯＭ）７１、ランダムアクセスメモリ（ＲＡＭ）７２、通信インタフェース２３、記憶装置７４、入出力装置７５、可搬型記憶媒体の読取り装置７６、及びこれらの全てが接続されたバス７７によって構成されている。
【００６１】
記憶装置７４としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置７４、またはＲＯＭ７１に図１３〜図１５のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項７のプログラムなどが格納され、そのようなプログラムがＣＰＵ７０によって実行されることにより、本実施形態におけるカタログファイルの参照、ファイルの切替、切替時のエラーに対するリカバリー処理などが可能となる。
【００６２】
このようなプログラムは、プログラム提供者７８側からネットワーク７９、及び通信インタフェース７３を介して、例えば記憶装置７４に格納されることも、また市販され、流通している可搬型記憶媒体８０に格納され、読取り装置７６にセットされて、ＣＰＵ７０によって実行されることも可能である。可搬型記憶媒体８０としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＤＶＤ等様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取装置７６によって読取られることにより、本実施形態におけるカタログファイルの切替等が可能となる。
【００６３】
以上詳細に説明したように、本発明によれば、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替方式において、ファイル切替処理との衝突が起こっても、またファイル切替時にエラーが起こっても、ファイル参照側で正しく動作していた現版のファイルを認識してファイル参照処理を行うことができる。またこのようなエラー発生時のリカバリー処理も参照側で安全、かつ確実に行うことが可能となる。これによってカタログ切替の信頼性が向上し、このようなファイル、特にカタログファイルの実用性の向上に寄与するところが大きい。
【産業上の利用可能性】
【００６４】
本発明は、ファイル内のデータを変更すべき時、全体を新しいファイルに切り替える形式のファイルを利用するすべての産業において利用可能である。特に実際にはファイルの切替が行われることが少なく、頻繁に参照されるファイルを使って、製品製造やビジネス等を行うすべての産業に利用可能である。
【図面の簡単な説明】
【００６５】
【図１】従来のカタログ参照方式を説明する図である。
【図２】従来のカタログファイル切替処理の動作を説明する図である。
【図３】本発明のファイル切替装置の原理構成ブロック図である。
【図４】本発明のカタログファイル切替方式が適用されるシステムの全体構成ブロック図である。
【図５】図４におけるカタログファイルの構成例を示す図である。
【図６】カタログ情報ファイルとカタログエントリーファイルの具体例を示す図である。
【図７】図４のシステムにおけるファイル変換処理の説明図である。
【図８】図４のシステムにおけるカタログファイル切替処理の説明図である。
【図９】本実施形態におけるカタログファイル参照処理における動作の説明図である。
【図１０】カタログファイル切替処理における動作の説明図である。
【図１１】カタログファイル切替処理が正常に終了したときの状態を説明する図である。
【図１２】カタログファイル切替処理中にエラーが発生した場合の回復動作の説明図である。
【図１３】カタログ参照処理の詳細フローチャートである。
【図１４】有効カタログ獲得処理の詳細フローチャートである。
【図１５】カタログ切替処理の詳細フローチャートである。
【図１６】本発明を実現するためのプログラムのコンピュータへのローディングを説明する図である。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2004109518.tif 000019
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2004109518.tif 000020
【国際調査報告】
2004109518.tif 000021
2004109518.tif 000022