(57)【要約】【課題】更新における共有文書の利用効率を向上させることのできる情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システムを提供する。【解決手段】文書データを、当該文書データを構成する１以上の要素毎に管理する文書情報管理部１１０と、文書データをクライアント２００Ａに対して出力すると共に、出力した文書データに対するクライアント２００Ａからの編集完了の通知が入力される文書情報入出力モジュール１１７と、編集期間中に、クライアント２００Ａにより編集された少なくとも１つの要素がクライアント２００Ｂからの要求により更新されたか否かを判別する文書更新解析モジュール１２５と、更新が競合していた場合に、クライアント２００Ａからの編集結果により文書データを更新するか否かをクライアント２００Ａからの要求に応じて変える文書本体格納モジュール１１１とを備える。【選択図】図１
2013065181.tif 000002
【特許請求の範囲】
【請求項１】
文書データを、当該文書データを構成する１以上の要素毎に管理する管理手段と、
前記文書データを第１のクライアントに対して出力する出力手段と、
出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力手段と、
前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が第２のクライアントからの要求により更新されたか否かを判別する判別手段と、
前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変える手段と
を備える情報処理装置。
【請求項２】
前記判別手段は、前記第１のクライアントによる編集処理が、前記第２のクライアントからの要求により更新された前記文書データの更新内容と競合するか否かを判別する、
請求項１記載の情報処理装置。
【請求項３】
前記判別手段が競合を判別する編集処理は、文字列の追加及び削除である、
請求項２記載の情報処理装置。
【請求項４】
前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、編集要素の競合を前記第１のクライアントに通知する、
請求項１乃至請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記管理手段は、前記文書データを構成する要素毎に更新時刻を管理し、前記第１のクライアントからの編集により前記文書データを更新する際に、当該第１のクライアントにより編集された要素に対する更新時刻を更新する、
請求項１乃至請求項４のいずれか１項に記載の情報処理装置。
【請求項６】
文書データを、当該文書データを構成する１以上の要素毎に管理する管理ステップと、
前記文書データを第１のクライアントに対して出力する出力ステップと、
出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力ステップと、
前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が第２のクライアントからの要求により更新されたか否かを判別する判別ステップと、
前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変えるステップと
を備える情報処理方法。
【請求項７】
コンピュータに情報処理方法を実行させる情報処理プログラムであって、前記情報処理方法は、
文書データを、当該文書データを構成する１以上の要素毎に管理する管理ステップと、
前記文書データを第１のクライアントに対して出力する出力ステップと、
出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力ステップと、
前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が第２のクライアントからの要求により更新されたか否かを判別する判別ステップと、
前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変えるステップと
を備える、情報処理プログラム。
【請求項８】
文書データを管理する情報処理装置と、
前記情報処理装置が管理する文書データを編集可能な第１のクライアント及び第２のクライアントと
を備える情報処理システムであって、
前記情報処理装置は、
文書データを、当該文書データを構成する１以上の要素毎に管理する管理手段と、
前記文書データを前記第１のクライアントに対して出力する出力手段と、
出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力手段と、
前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントからの要求により更新されたか否かを判別する判別手段と、
前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変える手段と
を備え、前記第１のクライアントは、
当該第１のクライアントからの編集結果により前記文書データを更新するか否かをユーザに選択させる手段と、
前記第１のクライアントからの編集結果を反映させる前後の前記文書データを比較可能にユーザに提示する手段と
を備える情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係るいくつかの態様は、情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システムに関する。
【背景技術】
【０００２】
複数のコンピュータがネットワークで接続されたコンピュータシステムにおいては、クライアント／サーバシステムのように、クライアントがサーバにアクセスし、サーバの持つファイルを参照／更新することができる。しかし、他クライアントによりアクセスされているファイルは、ファイルが破壊される恐れがあるため、別クライアントからのアクセスが禁止されていた。
【０００３】
そこで、ファイルの利用効率を向上させるべく、複数のコンピュータからのアクセスを制御することも考えられている（例えば、特許文献１参照）。特許文献１には、共有ファイルへの複数のアクセスを制御する共有ファイルアクセスシステムにおいて、構造化文書の構造を基に分割された各アクセス領域毎に排他制御を行って構造化文書への複数のアクセスを制御する技術が開示されている。特許文献１記載のシステムは、構造定義に付けられているタグを基に構造化文書を複数のアクセス領域に分割した上で、各領域に対するアクセス状態を管理する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−３０６３８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１記載のファイルアクセスシステムでは、１のユーザがアクセス中のアクセス領域に対して、他のユーザはアクセス予約することしかできない、すなわちアクセスすることができないという課題があった。
【０００６】
本発明のいくつかの態様は前述の課題に鑑みてなされたものであり、更新における共有文書の利用効率を向上させることのできる情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システムを提供することを目的の１つとする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、文書データを、当該文書データを構成する１以上の要素毎に管理する管理手段と、前記文書データを第１のクライアントに対して出力する出力手段と、出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力手段と、前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が第２のクライアントからの要求により更新されたか否かを判別する判別手段と、前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変える手段とを備える。
【０００８】
本発明の情報処理方法は、文書データを、当該文書データを構成する１以上の要素毎に管理する管理ステップと、前記文書データを第１のクライアントに対して出力する出力ステップと、出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力ステップと、前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が第２のクライアントからの要求により更新されたか否かを判別する判別ステップと、前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変えるステップとを備える。
【０００９】
本発明の情報処理プログラムは、コンピュータに情報処理方法を実行させる情報処理プログラムであって、前記情報処理方法は、文書データを、当該文書データを構成する１以上の要素毎に管理する管理ステップと、前記文書データを第１のクライアントに対して出力する出力ステップと、出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力ステップと、前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が第２のクライアントからの要求により更新されたか否かを判別する判別ステップと、前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変えるステップとを備える。
【００１０】
本発明の情報処理システムは、文書データを管理する情報処理装置と、前記情報処理装置が管理する文書データを編集可能な第１のクライアント及び第２のクライアントとを備える情報処理システムであって、前記情報処理装置は、文書データを、当該文書データを構成する１以上の要素毎に管理する管理手段と、前記文書データを前記第１のクライアントに対して出力する出力手段と、出力した前記文書データに対する前記第１のクライアントからの編集完了の通知が入力される入力手段と、前記第１のクライアントへの前記文書データの出力後編集完了通知の入力までの編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントからの要求により更新されたか否かを判別する判別手段と、前記編集期間中に、前記第１のクライアントにより編集された少なくとも１つの要素が前記第２のクライアントにより更新されていた場合に、前記第１のクライアントからの編集結果により前記文書データを更新するか否かを前記第１のクライアントからの要求に応じて変える手段とを備え、前記第１のクライアントは、当該第１のクライアントからの編集結果により前記文書データを更新するか否かをユーザに選択させる手段と、前記第１のクライアントからの編集結果を反映させる前後の前記文書データを比較可能にユーザに提示する手段とを備える。
【発明の効果】
【００１１】
本発明によれば、更新における共有文書の利用効率を向上させることのできる情報処理装置、情報処理方法、情報処理プログラム及び情報処理システムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態における情報処理システム及び情報処理装置（文書管理装置）の概略構成を示す機能ブロック図である。
【図２】図１に示した文書管理装置が文書データを構造化した例を示す図である。
【図３】図１に示した文書管理装置による文書データの管理例を説明するための図である。
【図４】図１に示した文書管理装置による文書データの更新時刻の管理例を説明するための図である。
【図５】図１に示した情報処理システムにおいて表示出力される画面例を示す図である。
【図６】図１に示した情報処理システムにおいて表示出力される画面例を示す図である。
【図７】図１に示した情報処理システムの処理の流れを示すシーケンス図である。
【図８】図１に示した文書管理装置の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に本発明の実施の形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。
【００１４】
（実施形態）
（システム構成）
図１乃至図５は、本発明の実施形態を説明するための図である。図１は、本実施形態における情報処理装置が含まれる情報処理システム１の概略構成を説明するための機能ブロック図である。
【００１５】
図１に記載の情報処理システム１は、例えばコンピュータ等の情報処理装置である文書管理装置１００と、クライアント端末２００Ａ及び２００Ｂとを含み、これらの装置はそれぞれネットワーク３００に接続されている。ネットワーク３００は、例えばＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等により通信されるネットワークである。
【００１６】
クライアント端末２００Ａ及び２００Ｂは、ネットワーク３００を介して文書管理装置１００が格納（記憶）する文書データ（文書ファイル）にそれぞれアクセス可能である。クライアント端末２００Ａ及び２００Ｂはそれぞれ、文書管理装置１００が格納する文書データを読込む機能、及び更新する機能を有する。
【００１７】
ここで、本情報処理システム１で扱う文書データは、図２に例を示すＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等で記載された構造化文書（構造データ）として表現可能な電子文書である。一般的な文書管理システムでは、あるユーザが文書データを編集している間は他のユーザが編集できないようにロック制御を行うものが多い。一方、多数のユーザが共有する文書データは更新頻度が高いことが多い。よって、多数のユーザが共有する文書データをこのような文書管理方法で管理すると頻繁にロックがかけられることとなってしまうので、他のユーザによる文書編集が制限されて利用効率が低下することとなっていた。
【００１８】
この点、本実施形態に係る文書管理装置１００は、構造化文書の構成要素である章や節等の各ブロック単位で文書データを管理する。また文書管理装置１００は、更新時に、ブロック毎の楽観的ロック制御（後述）と編集処理に対する競合検査とを行う。これにより、情報処理システム１では、クライアント端末２００Ａ及び２００Ｂがそれぞれ同時間帯に文書管理装置１００が管理する文書ファイルにアクセスし、各々編集処理を進めることができる。つまり、文書データの共有性が高まり、結果として利用効率を向上させることができる。
【００１９】
尚、本実施形態では、１台の文書管理装置１００が管理する文書データに対して２台のクライアント端末２００Ａ及び２００Ｂがアクセスする場合を例に説明するが、これに限られるものではない。例えば、３台以上のクライアント端末や複数台の文書管理装置が存在しても良い。また、１台の装置が文書管理装置とクライアント端末との両方の機能を有していても良いし、更に、文書管理装置１００自身が、自装置が格納する文書データを更新する機能を有していても良い。
【００２０】
文書管理装置１００は、文書情報管理部１１０と、文書解析部１２０と、ユーザ情報管理部１３０とを有する。尚、文書情報管理部１１０、文書解析部１２０、及びユーザ情報管理部１３０は、それぞれＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算装置上で動作するソフトウェア（プログラム）で実現しても、専用の半導体等のハードウェアで実現しても、ソフトウェア及びハードウェアを組み合わせて実現しても良い。すなわち、文書管理装置１００上の処理は、すべてコンピュータに実行させるプログラムとして実現され得る。
【００２１】
文書情報管理部１１０は、文書管理装置１００の中核をなすモジュール群を含んでいる。文書情報管理部１１０は、文書本体格納モジュール１１１と、文書属性格納モジュール１１３と、文書履歴格納モジュール１１５と、文書情報入出力モジュール１１７とを含む。
【００２２】
文書本体格納モジュール１１１は、文書データのデータファイルを、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やメモリ等の記憶媒体に保存する。文書属性格納モジュール１１３は、各文書データの更新者、更新日時といった属性を記憶媒体に保存する。文書履歴格納モジュール１１５は、文書データを構成する各ブロックの更新履歴を記憶媒体に保存する。文書情報入出力モジュール１１７は、クライアント端末２００Ａ及び２００Ｂと、ネットワーク３００を介して文書データや各種コマンド（要求及び通知）を入出力するモジュールである。
文書解析部１２０は、文書構造解析モジュール１２１と、文書構造情報格納モジュール１２３と、文書更新解析モジュール１２５とを有する。
【００２３】
文書構造解析モジュール１２１は、文書データの構造を解析して各ブロックに分けると共に、構造化言語で表現された構造データを作成する。文書構造情報格納モジュール１２３は、文書構造解析モジュール１２１により作成された構造データを記憶媒体に格納する。文書更新解析モジュール１２５は、クライアントから編集後の文書データを受け取った際に、その文書データのどのブロックが更新されているかを解析する。また文書更新解析モジュール１２５は、複数のクライアント（ユーザ）により同一ブロックが更新されていた場合に文書データの更新トランザクションを解析することで、トランザクションの競合が発生していないかを解析する。ここで、トランザクションとは、文字列の追加や削除等、文書データに対する一連の編集処理をいう。
【００２４】
ユーザ情報管理部１３０は、文書管理装置１００が利用するユーザ情報を管理する。その為にユーザ情報管理部１３０は、ユーザ情報格納モジュール１３１及びアクセス権情報格納モジュール１３３を有する。
【００２５】
ユーザ情報格納モジュール１３１は、ユーザのＩＤや所属といった基本情報を、メモリ等の記憶媒体に記録し、保存する。アクセス権情報格納モジュール１３３は、文書管理装置１００が格納する各文書データに対してそれぞれ設定される、各ユーザからの閲覧権や更新権といったアクセス権情報をメモリ等の記憶媒体に保存する。
次に、文書管理装置１００の動作の概略を以下に説明する。
【００２６】
文書データは、ＸＭＬを利用した構造データとして表現可能であることが多い。また、近年では、文書データを元からＸＭＬ等の構造データの形で内部的に管理している場合も多い。
【００２７】
ＸＭＬで表現された構造データの例を図２に示す。構造データ２０は、ＸＭＬ等の構造データにより、文書の構成要素となる章や節といった骨組みとなる要素や、その中に含まれる本文要素、また図や文書の装飾を定義する要素といった、いくつかの要素で構成される。構造データ２０に含まれる各要素は、一般的にタグと呼ばれる識別子で表現されたテキストデータとして表現される。
【００２８】
文書管理装置１００が有する文書構造解析モジュール１２１は、文書データから構造データ２０を作成し（元から文書データを構造データ２０として表現されている場合もある）、このタグで囲まれた１区画毎、あるいはその集合体をブロックとして分割し、それぞれを文書データの要素とする。当該解析により得られる文書データの構造の例を図３に示す。この例では、文書データそのものが“ｄｏｃｕｍｅｎｔ”というタグで表現されており、これが一番親となるブロック（ルートブロック）として管理されている。この“ｄｏｃｕｍｅｎｔ”ブロックの子要素（“ｄｏｃｕｍｅｎｔ”ブロックに含まれるブロック）として、例えば章に相当する“Ｓｅｃｔｉｏｎ１”“Ｓｅｃｔｉｏｎ２”と続くブロックが配置されている。更に、“Ｓｅｃｔｉｏｎ１”“Ｓｅｃｔｉｏｎ２”等のブロックの子要素として、それぞれ節に相当する”Ｃｈａｐｔｅｒ１”等のブロックが配置されている。
【００２９】
文書構造情報格納モジュール１２３は、文書構造解析モジュール１２１の解析により得られた情報及び構造を保存する。また文書履歴格納モジュール１１５は、ブロック毎に更新日時を管理する。図４は、文書構造情報格納モジュール１２３が管理する更新時刻情報の例を示す図である。図４の例では、“ｄｏｃｕｍｅｎｔ”“Ｓｅｃｔｉｏｎ１”“Ｃｈａｐｔｅｒ１”等の各ブロックが、その構造（ルートブロックである“ｄｏｃｕｍｅｎｔ”からのパス）、及び更新時刻に対応付けて管理されている。
【００３０】
文書管理装置１００は、文書データの編集完了時に、ユーザが編集したブロックと、そのブロックに対する一連の編集処理（トランザクション）をクライアント端末２００Ａから受け取る。文書管理装置１００の文書更新解析モジュール１２５は、編集されたブロック（更新対象のブロック）が競合しないか（他のクライアント（ユーザ）から編集されたブロックでないか）、及び、トランザクションの競合が発生しないかを確認（検査／判別）する。トランザクションの競合検査は、トランザクションで行われる一連の操作（文字列の追加や削除、置換等）を更新前のブロックと比較することにより行われる。この結果トランザクションが競合しない場合には、文書管理装置１００は、文書データの更新を可能とする（楽観的ロック制御）。
【００３１】
ここで、楽観的ロック制御とは、編集開始から編集完了（更新）までの間（編集期間）に他のユーザにより更新されていた場合（更新コミットされていた場合）に、更新させない仕組みである。ここでコミットとは、更新が正常に終了した旨の宣言をいう。
【００３２】
本実施形態では、文書データ全体に対してこの楽観的ロック制御を行うのではなく、文書データを構成するブロック１つ１つに対して、更新期間中の他のユーザからの更新の有無を文書更新解析モジュール１２５が確認（検査）する。もし、ユーザにより編集されたブロック（更新したいブロック）が他のユーザにより更新されていなければ、文書本体格納モジュール１１１は、当該更新された文書データを記憶媒体に更新（記録）する。図５は、更新時にユーザに提示する画面の例を示す図である。
【００３３】
図５の例では、文書データをウィンドウ４１上に表示してその内容をユーザに提示すると共に、メッセージボックス４３を出力することで、更新するか否かをユーザが選択できるようになっている。
【００３４】
尚、本実施形態では、たとえユーザによる編集のトランザクション（すなわち、更新した文書データにかかるトランザクション）が他のユーザによるトランザクションと競合しない場合であっても、同一ブロックが他のユーザにより更新されていると文書更新解析モジュール１２５に判別された場合には、文書管理装置１００は、ユーザに更新可否を選択可能としている。この際、クライアント端末２００Ａは、ユーザに更新可否の判断の材料を提供すべく、更新処理コミット前後の文書データの内容を画面に表示出力する。
【００３５】
図６は、ユーザに更新可否を決定させる際に表示出力する画面の例である。図６の例では、クライアント端末２００Ａは当該ユーザが編集した文書データと、他のユーザが編集した文書データとを、ウィンドウ４１Ａ及び４１Ｂに並列に表示出力することで、ユーザに両者間の差異をわかりやすく提示している。そしてクライアント端末２００Ａはメッセージボックス４３を表示出力し、ユーザに更新可否を選択させている。クライアント端末２００Ａは、ユーザによる選択結果に応じて更新コミット要求若しくは更新取消し要求を送信するので、文書管理装置１００は、当該要求に従い、文書データを更新する、若しくは更新を取りやめる。
【００３６】
また、トランザクションの競合が発生した場合には、その旨のメッセージをユーザに提示し、他ユーザによってコミットされた文書データを表示出力し、自身の編集内容を残すか、或いは他ユーザの編集内容を残すかをユーザに選択させる。
【００３７】
（更新処理の流れ）
次に、図７及び図８を参照しながら、情報処理システム１における更新処理の概略を説明する。図７は、情報処理システム１の編集（更新）処理の流れを説明するためのシーケンス図である。
【００３８】
図７の例では、クライアント端末２００Ａ上のユーザによる文書データの編集期間中に、クライアント端末２００Ｂによって更新がコミットされた場合の文書管理装置１００とクライアント端末２００Ａ、２００Ｂとの処理を示している。尚、図２のシーケンスの開始時点において、クライアント端末２００Ｂによる編集は既に開始されているものとする。
【００３９】
文書管理装置１００が管理する文書データをクライアント端末２００Ａ上のユーザが編集する際には、まず、クライアント端末２００Ａから編集処理開始の要求を文書管理装置１００へ送信する（Ｓ５０１）。これにより、クライアント端末２００Ａと文書管理装置１００との間の編集処理が開始する。
【００４０】
文書管理装置１００が文書情報入出力モジュール１１７で当該編集処理開始要求を受信すると、文書更新解析モジュール１２５は、その時刻を文書編集開始時刻として記憶する（Ｓ５０３）。そして、文書本体格納モジュール１１１が記憶媒体に格納している文書データを読込み、文書情報入出力モジュール１１７は当該文書データを送信する（Ｓ５０５）。クライアント端末２００Ａは受信した文書データをディスプレイ上に表示出力すると共に、ユーザ操作に応じて各種編集作業（文の追加や削除等）を開始する。
【００４１】
このとき、図７の例では、クライアント端末２００Ｂ側でも、クライアント端末２００Ａが編集作業を行っているのと同じ文書データに対する編集作業が進められているものとする。文書編集を終了する際には、クライアント端末２００Ｂは更新のコミットを文書管理装置１００へと送信する（Ｓ５１１）。
【００４２】
文書管理装置１００は、文書情報入出力モジュール１１７でクライアント端末２００Ｂからの更新コミットの要求を受信すると、クライアント端末２００Ｂから受信している文書データに基づき、更新コミット処理を行い、文書本体格納モジュール１１１が格納する文書データを更新する（Ｓ５０９）。これにより、クライアント端末２００Ｂと文書管理装置１００との間の編集処理は終了する。
【００４３】
その後、クライアント端末２００Ａを操作するユーザが文書編集作業を完了すると、クライアント端末２００Ａは編集完了通知を文書管理装置１００へと送信する（Ｓ５１１）。このとき、編集完了通知には、編集完了後の文書本体データと、トランザクション処理操作列とが含まれる。
【００４４】
文書管理装置１００では、文書情報入出力モジュール１１７がクライアント端末２００Ａからの編集完了通知を受信すると、文書更新解析モジュール１２５が競合検査処理を行う（Ｓ５１３）。先述の通り、トランザクションの競合検査は、編集作業中に行われた一連の操作（文の追記や削除、置換等であり、トランザクション処理操作列としてクライアント端末２００Ａから取得される）を、編集前のブロックと比較することにより行われる。文書更新解析モジュール１２５は当該競合検査処理により更新可否を判別し、その結果を文書情報入出力モジュール１１７がクライアント端末２００Ａへ通知する（Ｓ５１５）。
【００４５】
クライアント端末２００Ａは当該要求を受けて、更新コミットを行うか、若しくは更新を取消すかをユーザに選択させる（Ｓ５１７）。このとき、例えば図６に例を示したような表示画面を出力することで、ユーザに更新コミット前と後のデータを提示する。
【００４６】
ユーザによる選択の結果に応じて、クライアント端末２００Ａは更新コミット要求又は更新取消し要求のいずれかを文書管理装置１００へ送信する（Ｓ５１７）。文書管理装置１００は、当該要求に応じて、文書データの更新コミット処理を行って文書本体格納モジュール１１１が格納する文書データを更新するか、若しくは更新を取りやめるかのいずれかの処理を行う（Ｓ５１９）。これにより、クライアント端末２００Ａと文書管理装置１００との間の編集処理が終了する。
【００４７】
続いて、図８を参照しながら、文書管理装置１００の更新処理の流れを説明する。図８は、文書管理装置１００の、更新処理に係る処理の流れを示すフローチャートである。尚、本フローチャートは、図７を参照して説明していた編集処理のＳ５１３以降の処理に相当する。
【００４８】
クライアント端末２００Ａから編集完了の通知（図７のＳ５１１）を受信すると、まず文書更新解析モジュール１２５は、文書編集開始時刻後に、他のユーザ（他のクライアント）からの更新があるか否か（更新コミットがなされているか）を確認（判別）する（Ｓ８０１）。もし、他のユーザからの更新がなされていなければ、トランザクションの競合がなく、文書データの更新が可能である旨を文書情報入出力モジュール１１７がクライアント端末２００Ａに通知する（Ｓ８０３）。
【００４９】
Ｓ８０１において、クライアント端末２００Ａによる編集期間中に他のクライアントからの更新がなされていた（更新がコミットされていた）場合には（Ｓ８０１のＹｅｓ）、文書更新解析モジュール１２５は、編集開始前のデータと、クライアント端末２００Ａから受信した文書データとを比較することで、文書データ中で更新されている更新ブロックを特定する（Ｓ８０５）。当該処理は、例えば図３のように、更新ブロックごとに更新の有無を確認するものである。
【００５０】
更に、文書更新解析モジュール１２５は、文書履歴格納モジュール１１５が管理する各ブロック毎の更新日時のデータ（図４に例示）と、Ｓ８０５で特定した更新ブロックとを比較した上で、それぞれのブロックが、クライアント端末２００Ａによる編集期間中に更新されているか否かをチェックする（Ｓ８０９）。更新ブロックが競合していない場合には（Ｓ８０９のＮｏ）、Ｓ８０３に進んで文書データの更新が可能である旨を文書情報入出力モジュール１１７がクライアント端末２００Ａに通知する。
もし、更新ブロックが競合している場合には（Ｓ８０９のＹｅｓ）、文書更新解析モジュール１２５は、トランザクションの競合を確認する（Ｓ８１１）。
【００５１】
クライアント端末２００Ａによる編集のトランザクションとクライアント端末２００Ｂによる更新のトランザクションとが競合している場合には（Ｓ８１１のＹｅｓ）、更新が競合している旨を文書情報入出力モジュール１１７がクライアント端末２００Ａに通知する（Ｓ８１３）。
【００５２】
クライアント端末２００Ａはこの通知に従い、図６に例を示すように、更新コミット前後の文書データをユーザに提示すると共に、更新するか否かをユーザに選択させる（Ｓ８１７）。
【００５３】
トランザクションが競合していない場合には（Ｓ８１１のＮｏ）、文書管理装置１００は文書情報入出力モジュール１１７がクライアント端末２００Ａにその旨を通知する。これにより、本情報処理システム１では、トランザクションが競合しない場合であっても、更新するか否かをユーザが選択できるようにする（Ｓ８１９）。
【００５４】
Ｓ８０３、Ｓ８１５、Ｓ８１９のいずれかの処理の完了後、文書管理装置１００は、文書情報入出力モジュール１１７で更新コミット要求若しくは更新取消し要求を受信する（Ｓ８２１）。更新コミット要求を受信した場合には（Ｓ８２３の「更新コミット要求」）、文書本体格納モジュール１１１は文書データの更新を行うと共に、文書履歴格納モジュール１１５及び文書属性格納モジュール１１３は、それぞれ管理する更新情報を書き換える（Ｓ８２５）。これにより、文書データの更新がコミットされる。
【００５５】
一方、クライアント端末２００Ａから受信した要求が更新取消し要求である場合には（Ｓ８２３の「更新取消し要求」）、文書更新処理を取消し、文書本体格納モジュール１１１が管理する文書データの更新を行わない（Ｓ８２７）。
【００５６】
（本実施形態の効果）
本実施形態の情報処理システム１では、文書データを章や節といった文書の骨組みを構成するブロック要素に分解し、ブロック毎の更新トランザクションの競合検査及び楽観的ロック制御を実現している。これにより、情報処理システム１では、複数人による共有文書の同時編集における競合を軽減させ、共有文書の編集作業の効率が増している。
【００５７】
多数のユーザによって共有されている文書データであっても、すべてのユーザが同じ章や節を更新しているわけではなく、それぞれのユーザが、担当する章や節を対象に編集することが多い。このような編集作業は排他的であるので、本情報処理システム１のように、文書データを細かく分けて管理することにより、効率的な編集作業が可能となっている。
【００５８】
（付記事項）
なお、前述の実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。
【符号の説明】
【００５９】
１・・・情報処理システム、１００・・・文書管理装置、２００Ａ、２００Ｂ・・・クライアント端末、１１０・・・文書情報管理部、１２０・・・文書解析部、１３０・・・ユーザ情報管理部
【図１】
2013065181.tif 000003
【図２】
2013065181.tif 000004
【図３】
2013065181.tif 000005
【図４】
2013065181.tif 000006
【図５】
2013065181.tif 000007
【図６】
2013065181.tif 000008
【図７】
2013065181.tif 000009
【図８】
2013065181.tif 000010