JP2005275565A - サーバ装置 - Google Patents

サーバ装置 Download PDF

Info

Publication number
JP2005275565A
JP2005275565A JP2004084801A JP2004084801A JP2005275565A JP 2005275565 A JP2005275565 A JP 2005275565A JP 2004084801 A JP2004084801 A JP 2004084801A JP 2004084801 A JP2004084801 A JP 2004084801A JP 2005275565 A JP2005275565 A JP 2005275565A
Authority
JP
Japan
Prior art keywords
document
change
data
fragment
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004084801A
Other languages
English (en)
Other versions
JP4547954B2 (ja
Inventor
Taro Terao
太郎 寺尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2004084801A priority Critical patent/JP4547954B2/ja
Publication of JP2005275565A publication Critical patent/JP2005275565A/ja
Application granted granted Critical
Publication of JP4547954B2 publication Critical patent/JP4547954B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 利用者側でドキュメントに対する変更操作の履歴を生成する必要なく、変更履歴つきのドキュメントを提供できるサーバ装置を提供する。
【解決手段】 前記ドキュメントのうち処理対象となった変更前ドキュメントに対して変更操作を行って得られた変更後ドキュメントを受け入れ、変更前ドキュメントと変更後ドキュメントとの差分の情報を生成し、この差分の情報に基づいて、変更後ドキュメントを変更操作の種類ごとのデータフラグメントに分割し、当該分割して得られたデータフラグメントのうち、その内容がそのまま変更前ドキュメントに含まれているデータフラグメントについては、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけて当該データフラグメントをデータベースに登録する。
【選択図】 図1

Description

本発明は、ウエブサーバ等、ドキュメントをクライアント側装置に提供するサーバ装置に関する。
従来から、一つのドキュメントを多数の利用者によって生成する場合に、各利用者によって行われた改訂の履歴を保持させるプログラム等が知られている(非特許文献1)。
なお、ハッシュ値を用いてリストデータを管理する方式のLisp言語について非特許文献2に、ハッシュ値を用いたデータ管理について特許文献1にそれぞれ記載がある。
エクスメディア著、「超図解(R)Word 2000 forWindows(R) 応用編」、初版、2002年8月10日、152ページから153ページ E.Goto、"Monocopy andAssociate Algorithms in an Extended Lisp", Report TR 74-3, May 1974, University of Tokyo 米国特許第5978792号明細書
しかしながら、上記従来のプログラム等では、利用者の改訂操作を常に監視し、改訂操作の内容を順次記録しているため、例えばサーバ装置上に保持されているドキュメントを改訂する際には、改訂操作を行うクライアント側で改訂操作の履歴を生成しておき、これをドキュメントとともにサーバ装置側にアップロードする必要があったため、改訂履歴つきのドキュメントを提供できるようにするには、利用者側の環境が、改訂操作の履歴を生成できる環境に限定されてしまうという問題点があった。
本発明は上記実情に鑑みて為されたもので、利用者側で改訂操作(ドキュメントに対する変更操作)の履歴を生成する必要なく、改訂履歴つきのドキュメントを提供できるサーバ装置を提供することを、その目的の一つとする。
上記従来例の問題点を解決するための本発明は、少なくとも一つのドキュメントを保持するデータベースにアクセス可能に接続されたサーバ装置であって、前記ドキュメントのうち処理対象となった変更前ドキュメントに対して変更操作を行って得られた変更後ドキュメントを受け入れる受入手段と、前記変更前ドキュメントと変更後ドキュメントとの差分の情報を生成する差分情報生成手段と、前記差分の情報に基づいて、前記変更後ドキュメントを、前記変更前ドキュメントからの変更操作の種類ごとのデータフラグメントに分割する分割手段と、前記差分の情報に基づいて、前記分割して得られたデータフラグメントのうち、その内容がそのまま前記変更前ドキュメントに含まれているデータフラグメントについては、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけて当該データフラグメントを前記データベースに登録する登録手段と、を含むことを特徴としている。
このように、差分の情報から変更操作の内容を特定するので、利用者側でドキュメントに対する変更操作の履歴を生成する必要なく、改訂履歴つきのドキュメントを提供できる。
また前記登録手段は、前記分割手段により得られたデータフラグメントのうち、その内容が前記変更前ドキュメントに含まれておらず、変更後ドキュメントに追加されたデータフラグメントについては、当該追加の変更操作に関する操作関係情報に関連づけて当該データフラグメントを前記データベースに登録することとしてもよい。
これによって、ドキュメントに対する新たな記述の追加等の変更操作が特定され、利用者側でドキュメントに対する変更操作の履歴を生成する必要なく、改訂履歴つきのドキュメントを提供できる。
さらに前記登録手段は、前記分割手段により得られたデータフラグメントのうち、その内容が前記変更前ドキュメントに含まれ、変更後ドキュメントで削除されたデータフラグメントについては、当該削除の変更操作に関する操作関係情報に関連づけて当該データフラグメントを前記データベースに登録することとしてもよい。
これによって、ドキュメントの一部を削除する等の変更操作が特定され、利用者側でドキュメントに対する変更操作の履歴を生成する必要なく、改訂履歴つきのドキュメントを提供できる。
ここで前記操作関係情報には、前記変更操作を行った利用者を特定する情報と、前記変更操作が行われた日時に関する情報とを含むこととしてもよい。
これにより、変更操作をした利用者やその日時を特定する情報を提供できるようになる。
さらに前記ドキュメントから分割して得られたデータフラグメントをクライアント装置側に提供する提供手段を含み、前記提供手段が、当該ドキュメントを分割して得られたデータフラグメントごとに、当該データフラグメントに係る変更操作の種類ごとに異なる情報を関連づけて、前記クライアント装置側に提供することとしてもよい。
これにより、改訂履歴つきのドキュメントを提供できる。
また、上記従来例の問題点を解決するための本発明は、少なくとも一つのドキュメントを保持するデータベースにアクセス可能に接続されたサーバ装置を制御する方法であって、前記ドキュメントのうち処理対象となった変更前ドキュメントに対して変更操作を行って得られた変更後ドキュメントを受け入れさせる工程と、前記変更前ドキュメントと変更後ドキュメントとの差分の情報を生成させる工程と、前記差分の情報に基づいて、前記変更後ドキュメントを、前記変更前ドキュメントからの変更操作の種類ごとのデータフラグメントに分割させる工程と、前記差分の情報に基づいて、前記分割して得られたデータフラグメントのうち、その内容がそのまま前記変更前ドキュメントに含まれているデータフラグメントについては、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけて当該データフラグメントを前記データベースに登録させる工程と、を含むことを特徴としている。
このように、差分の情報から変更操作の内容を特定するので、利用者側でドキュメントに対する変更操作の履歴を生成する必要なく、改訂履歴つきのドキュメントを提供できる。
さらに上記従来例の問題点を解決するための本発明は、少なくとも一つのドキュメントを保持するデータベースにアクセス可能に接続されたサーバ装置を制御するプログラムであって、前記ドキュメントのうち処理対象となった変更前ドキュメントに対して変更操作を行って得られた変更後ドキュメントを受け入れる手順と、前記変更前ドキュメントと変更後ドキュメントとの差分の情報を生成する手順と、前記差分の情報に基づいて、前記変更後ドキュメントを、前記変更前ドキュメントからの変更操作の種類ごとのデータフラグメントに分割する手順と、前記差分の情報に基づいて、前記分割して得られたデータフラグメントのうち、その内容がそのまま前記変更前ドキュメントに含まれているデータフラグメントについては、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけて当該データフラグメントを前記データベースに登録する手順と、をサーバ装置に実行させることを特徴としている。
このように、差分の情報から変更操作の内容を特定するので、利用者側でドキュメントに対する変更操作の履歴を生成する必要なく、改訂履歴つきのドキュメントを提供できる。
本発明の実施の形態について図面を参照しながら説明する。本実施の形態に係るサーバ装置は、例えばウエブサーバ1として実装でき、図1に示すように、制御部11と記憶部12と通信部13とを含んで構成され、データベースサーバ2とクライアント装置3とにネットワークを介して接続されている。なお、データベースサーバ2に対してはネットワークを介さずに直接接続されてもよい。
ウエブサーバ1の制御部11は、記憶部12に格納されているプログラムに従って動作しており、基本的にはクライアント装置3からネットワークを介して受信される要求に応答して、当該要求に係るドキュメントを要求元のクライアント装置3に送信する動作を行っている。また、この制御部11は、提供したドキュメントを変更前ドキュメントとし、これに対して変更処理を施した変更後ドキュメントを受け入れて、変更前ドキュメントと変更後ドキュメントとを関連付する所定処理(履歴管理処理)を行う。さらに本実施の形態においては、この制御部11は、ドキュメントを提供する際に、当該ドキュメントに関連づけられている変更前ドキュメントに関する情報を併せて提供する処理(情報提供処理)を行っている。これら履歴管理処理や情報提供処理については後に詳しく述べる。
記憶部12は、制御部11によって実行されるプログラムを格納するハードディスクデバイスと、制御部11の実行中に生成されるデータを格納するメモリ装置とを含んでなる。通信部13は、制御部11からの指示に従ってデータをネットワークを介して送信する。またこの通信部13は、ネットワークを介して到来するデータを受信して制御部11に出力している。
本実施の形態においてデータベースサーバ2は、ウエブサーバ1が提供するドキュメントを保持している。このデータベースサーバ2に格納されているドキュメントは、フラグメントの列として表現される。例えばあるドキュメントが「これはドキュメントの一例です。」という文字列を含むとき、この文字列を「これはドキュメントの」とのフラグメントと、「一例です」とのフラグメントとの2つのフラグメントに分割され、データベースサーバ2は、各フラグメントの文字列を含むフラグメントデータと、フラグメントの列を規定するドキュメントデータd=[f1,f2]として表現されたドキュメントとを格納している。ここで、f1,f2などは、フラグメントを特定するポインタとなっている。また、このデータベースサーバ2は、利用者名と時刻情報とを含む操作関係情報をヘッダデータとして格納している。
ここでデータベースサーバ2に格納されたフラグメントデータは、さらに各フラグメントデータの生成や削除の操作に関係した利用者及びその操作時刻の時刻情報を含むヘッダデータを特定するポインタと、当該フラグメントが表示可能な状態にあるか否かを表すフラグ(可視フラグ)に関連づけられている。本実施の形態では、これらドキュメントデータと、フラグメントデータと、ヘッダデータとを図2に示すようなデータフォーマットで管理している。
このデータフォーマットには、ドキュメントデータ、フラグメントデータ、ヘッダデータのいずれかを含むデータ部分(D)と、ポインタ部分(P)とが含まれる。ここでデータベースサーバ2は、このデータフォーマットで表される各データに基づいて、ハッシュ値など特徴量を演算して各データに関連づけて保持し(図3)、この特徴量としてのハッシュ値をポインタとして用いることとしてもよいので、以下、ポインタがハッシュ値である場合を例として説明する。なお、ハッシュ値を用いる場合は、各データが互いに識別できる程度のデータ長さ(例えば20バイト程度)としておく。
つまり概念的には図4に示すように、ドキュメントd1が、ドキュメントデータ[f1,f2]と、ハッシュ値hとを関連づけたものとなり、そのハッシュ値は「d1」であるとする。そしてハッシュ値f1に対応するフラグメントは、フラグメントデータとしての文字列「これはドキュメントの」と、ハッシュ値hとを関連づけたものとなり、ハッシュ値f2に対応するフラグメントは、フラグメントデータとしての文字列「一例です」と、ハッシュ値hとを関連づけたものとなる。なお、当初はこれらのフラグメントデータに対応する可視フラグは「表示可能」である旨を表す値(例えば「True」)に設定されている。
また、ハッシュ値hに対応する操作関係情報には、利用者名「aaaa」と、操作の行われた時刻「t」とを含み、この操作関係情報にはポインタとして「何もない」状態を表す「nil」が関連づけられている。なおここでの例において、「これはドキュメントの一例です」とのドキュメントが新規に登録される場合、これら文字列全体をフラグメントデータとし、ハッシュ値hにを関連づけられたデータが生成されてもよい(その場合ドキュメントデータは、当該フラグメントへのハッシュ値[f]となる)が、ここでは以下の説明の便宜のため、フラグメントが2つに分割された場合を例示している。
クライアント装置3は、一般的なパーソナルコンピュータで構わない。このパーソナルコンピュータにはウエブクライアントとしてのブラウザプログラムがインストールされている。
ここで制御部11によって実行される履歴管理処理と情報提供処理とについて説明する。制御部11によって実行されるこれらの処理のためのプログラムは例えばCGI(Common Gateway Interface)を介して起動されるプログラムとして実装されてもよい。
まず、履歴管理処理について説明する。制御部11は、クライアント装置3側から変更操作の対象となるドキュメントを提供するべき旨の指示(この指示には、対象となるドキュメントの格納場所を特定する情報(URL(Uniform Resource Locator)等)が含まれる)を受け入れると、当該指示を行う利用者名を入力させるウエブページを配信する。ここで利用者名が受信されると、制御部11は、変更操作の対象となったドキュメントをデータベースサーバ2から取り出して、HTML(Hyper Text Markup Language)ドキュメントとして配信する。なお、ここで利用者名を用いて認証を行うこととしてもよい。
具体的に図4に概念的に示したドキュメント(そのハッシュ値はd1であるとする)が変更操作の対象となった場合、制御部11は、当該ドキュメントをデータベースサーバ2から読み出す。このドキュメントには、既に述べたように、ドキュメントデータとしてのフラグメントへのハッシュ値の組が含まれている。制御部11は、この組に含まれるハッシュ値を順番に読出して、各ハッシュ値に対応するフラグメントをデータベースサーバ2から取得し、それぞれを連結して、編集可能な状態でクライアント装置3に対して送信する。
つまり、この例では、ドキュメントデータとしてフラグメントへのハッシュ値f1,f2が含まれているので、制御部11は、このハッシュ値に対応するフラグメントをデータベースサーバ2から順次取得する。ここではハッシュ値f1,f2に対応するフラグメントに文字列「これはドキュメントの」及び「一例です」が含まれるので、これらを連結して「これはドキュメントの一例です」を得る。そして制御部11は、この文字列を編集可能な状態とするため、例えばHTMLのテキストエリア(TEXTAREA)タグ中のデフォルト文字列としてこの文字列を設定し、当該HTML記述部分を含むHTML文書を生成して、クライアント装置3に送信する。
また、制御部11は、クライアント装置3から当該送信した文字列の変更結果が送信されると、当該変更結果(変更後ドキュメント)と、上記フラグメントデータに含まれる文字列を連結して得た変更前ドキュメントとを比較して、差分の情報を生成する。
ここで差分の情報は、例えばUNIX(登録商標)において広く用いられているdiffコマンドを用いて生成してもよいが、一般的なdiffコマンドでは行単位の差分となるので、粒度を高めたい場合には、単語単位(形態素解析処理を用いて単語ごとに分離した状態)での差分を生成するdiffコマンドや、文字単位での差分を生成するdiffコマンドが知られているので、それらを利用してもよい。
例えば文字単位での差分を生成するdiffを用いる場合に、上に例示した「これはドキュメントの一例です」を、「これらはドキュメントの例です」と変更した場合には、差分の出力結果は、図5に示すような状態とすることができる。ここで変更を受けた部分のうち、変更後ドキュメントで新たに追加された「ら」の前には「+」記号が付され、変更後ドキュメントで削除された「一」の前には「−」記号が付されている。
制御部11は、この出力の各行を新たなフラグメントとする。つまり(1)追記された部分、(2)削除された部分、(3)変更されていない部分のそれぞれ互いに異なる変更操作に対応する連続部分に分割して新たなフラグメントを定めるのである。ここでは、「これ」、「ら」、「はドキュメントの」、「一」、「例です」の5つのフラグメントに分離される。そして、変更されていないフラグメントについては、変更前のフラグメントのハッシュ値を関連づける。ここでは「これ」及び「はドキュメントの」は、変更前の「これらはドキュメントの」(ハッシュ値:f1)に対応するので、文字列「これ」とハッシュ値f1とを関連づけたフラグメントデータと、文字列「はドキュメントの」とハッシュ値f1とを関連づけたフラグメントデータとを生成し、これらのフラグメントデータに対するハッシュ値を演算し(f′1及びf′3とする)、各ハッシュ値に関連づけてフラグメントデータをデータベースサーバ2に登録する。つまり、これら変更のないデータフラグメントの部分は、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけてデータベースサーバ2に登録しておく。
なお、追記・削除されたデータに関するフラグメントについては、どちらの変更操作であったかを表す情報をさらに関連づけておいてもよい。例えば「ら」の前に「+」記号を付しておく等とすればよい。
また、「ら」のように追記等、変更された部分がある場合は、変更を行った利用者名(最初に取得した利用者名)と変更後ドキュメントを受信した日時の情報とを合わせて操作関係情報を生成し、これに「nil」を関連づけて、ヘッダデータとし、さらにこのヘッダデータのハッシュ値を演算し(ここではh2とする)、このハッシュ値h2とヘッダデータとを関連づけてデータベースサーバ2に登録する。
一方、制御部11は、上記追記部分について、その文字列「ら」と当該文字列の変更を行った利用者名を含む操作関係情報に係るハッシュ値(h2)とを関連づけて新たなフラグメントデータとし、このフラグメントデータのハッシュ値(f′2とする)を演算して、当該フラグメントデータとハッシュ値とを関連づけてデータベースサーバ2に登録する。なお、削除部分である文字列「一」についても当該文字列の変更を行った利用者名を含む操作関係情報に係るハッシュ値(h2)を関連づけて新たなフラグメントデータとし、このフラグメントデータのハッシュ値(f′4とする)を演算して、当該フラグメントデータとハッシュ値とを関連づけてデータベースサーバ2に登録する。この削除されたフラグメントデータについては、その可視フラグを、表示可能でないことを表す値(「false」)に設定する。
また「例です」の部分は、変更がないので、元のフラグメントのハッシュ値f2に関連づけられてフラグメントデータが生成され、このフラグメントデータに対するハッシュ値(f′5とする)が演算されて、この当該フラグメントデータとハッシュ値とを関連づけてデータベースサーバ2に登録されることになる。
そして制御部11は、これらf′1からf′5を配列したドキュメントデータを生成し、このドキュメントデータに元のドキュメントデータに対するハッシュ値d1を関係づけたデータを生成する。そしてこのデータに対するハッシュ値を演算し(d2とする)、この演算したハッシュ値とデータとを関連づけて、データベースサーバ2に登録する。
これにより、図4に対応するデータの関係は、図6に示すようになる(なお、変更を行った利用者名は「bbbb」、変更に関する日時は「t′」であるとする)。
次に情報提供処理について説明する。制御部11は、クライアント装置3からドキュメントを要求する指示としてドキュメントに関連するハッシュ値の入力を受けて、次のように動作する。入力されたハッシュ値に関連するデータをデータベースサーバ2から取得し、当該データに含まれるドキュメントデータとしてのフラグメントのハッシュ値を取得し、各フラグメントのハッシュ値に対応するフラグメントデータをデータベースサーバ2からさらに取得し、各フラグメントデータに含まれる文字列を連結して、クライアント装置3に提供する。
具体的に図4に示したデータがデータベースサーバ2に格納されているときに、クライアント装置3からハッシュ値d1のドキュメントの要求が受け入れられると、このハッシュ値d1に対応するデータがデータベースサーバ2から読み出される。ここでデータにはドキュメントデータとしてフラグメントへのハッシュ値f1,f2が含まれているので、制御部11は、このハッシュ値に対応するフラグメントをデータベースサーバ2から順次取得する。ここではハッシュ値f1,f2に対応するフラグメントに文字列「これはドキュメントの」及び「一例です」が含まれるので、これらを連結して「これはドキュメントの一例です」を得る。そして制御部11は、この文字列を含むHTML文書を生成して、クライアント装置3に送信する。
なお、制御部11はこのとき、各データ(ここではフラグメントデータ)に含まれているハッシュ値hを読み出して、このハッシュ値hに関連づけられているヘッダデータをデータベースサーバ2から取得し、当該ヘッダデータに含まれる利用者名や日時の情報をHTML文書に含めてもよい。この場合、例えばクライアント装置3側で各フラグメントデータに対応する文字列部分にマウスカーソルを重ね合わせたときに、これら利用者名や日時の情報が提供されるようにするため、特殊なタグ(SPANタグなど)を利用することができる。
つまり制御部11は、取得したデータに含まれるハッシュ値がnilになるまで、当該ハッシュ値に関連づけられたデータをデータベースサーバ2から読み出す処理を繰り返し、ハッシュ値がnilとなったところで、当該ハッシュ値nilに関連づけられた情報を読み出すことで、利用者名や日時といった操作関係情報(ヘッダデータに含まれる情報)を取得することができる。
さらに図6に示したようなデータがデータベースサーバ2に格納されているときに、クライアント装置3からハッシュ値d2のドキュメントの要求が受け入れられると、このハッシュ値d2に対応するデータがデータベースサーバ2から読み出される。ここでデータにはドキュメントデータとしてフラグメントへのハッシュ値f′1からf′5が含まれているので、制御部11は、これらのハッシュ値に対応するフラグメントをデータベースサーバ2から順次取得する。ここではハッシュ値f′1からf′5に対応するフラグメントに文字列「これ」「ら」「はドキュメントの」及び「一」「例です」が含まれるので、これらを連結して「これらはドキュメントの一例です」を得る。そして制御部11は、この文字列を含むHTML文書を生成して、クライアント装置3に送信する。
本実施の形態において特徴的なことの一つは、制御部11が、各フラグメントに関する変更操作の種類ごとに異なる情報を関連づけてこのHTML文書を生成することである。具体的に本実施の形態において制御部11は、ドキュメントのハッシュ値d2に対応するヘッダデータを取り出すべく、d2→d1→hと辿って、ドキュメントの元の生成者である利用者名aaaa、及びその日時tを取得する。
一方、ハッシュ値f′1に対応するフラグメントについては、文字列「これ」に関するヘッダデータを取得するため、対応付けられているハッシュ値f1を読み出し、データベースサーバ2からハッシュ値f1に対応するデータ(フラグメントデータ)を読み出し、それに含まれるハッシュ値がnilではなくhであるので、さらにハッシュ値hに対応するデータ(ヘッダデータ)を取得して、利用者名「aaaa」等を取得し、これを例えばSPANタグのタイトル属性として関連づける。
また、ハッシュ値f′2に対応するフラグメントについては、文字列「ら」が追記されたものであり、また、それに含まれるハッシュ値h2にはヘッダデータとして利用者名「bbbb」を含むものが関連づけられているので、利用者名「bbbb」等を取得し、INSタグ等を用いて文字列「ら」を第1の方法で強調表示(例えば太字、下線など)するとともに、利用者名等をその属性として関連づける。
さらにハッシュ値f′4に対応するフラグメントについては、文字列「一」に関連付けられた可視フラグが「表示可能でない」ことを表す値に設定されているので、DELタグなどを用いて文字列「一」を第2の方法で強調表示(例えば打ち消し線などで打ち消す表示)をする。また、このハッシュ値f′4に対応するフラグメントに含まれるハッシュ値h2には、ヘッダデータとして利用者名「bbbb」を含むものが関連づけられているので、利用者名「bbbb」等を取得し、利用者名等をその属性として関連づける。
そうして生成されたHTML文書は、例えば図7に示すようなものとなり、この図7に示されたHTML文書を受信したクライアント装置3がこれを表示すると、そのブラウザの機能にも依存するが、一般的には図8に示すような状態となって、追記部分に下線が引かれるとともに、削除部分に「X」マークが重ね合わせられるか、又は打消し線が引かれる。またブラウザの機能によっては、利用者がこれらの文字列のうち、「これ」や「はドキュメントの」や「例です」など、SPANタグで囲まれた部分にマウスカーソルを重ねると、「aaaa,t」などと、関連づけられている利用者名や変更日時の情報が提供される。同様に、追記部分や削除部分にマウスカーソルを重ねると、「bbbb,t′」といったように、CITEやDATETIME属性で関連づけられた情報が提供される。
このように本実施の形態によると、利用者側でドキュメントに対する変更操作の履歴を生成する必要なく、変更履歴つきのドキュメントを提供できる。
なお、本実施の形態の説明では、ヘッダデータに含める情報として利用者名と変更に係る日時としていたが、これに限らず、変更者のコメントなど、他の情報を含めても構わない。また、ここではウエブサーバ1とデータベースサーバ2とを別体の装置であるように記載しているが、これらは一体の装置であっても構わない。さらに、ここではウエブサーバを例として説明したが、本発明のサーバ装置は、他のサーバ装置、例えば一般的なファイルサーバなどであってもよい。
上記実施の形態に記載した制御部11によって実行される処理について、具体的に既読判定処理、ドキュメント更新処理、ドキュメント表示処理に分けて説明する。まず、既読判定処理について説明する。既読判定の処理では、注目フラグメントfについて利用者が過去に閲覧したか否かを判定する。すなわち制御部11は、利用者が過去に閲覧したフラグメントの配列F(利用者ごとに例えば利用者側のクライアント装置にクッキーとして登録しておく)を取得して、図9に示す処理を開始し、当該注目フラグメントfがフラグメント配列Fに含まれているか否かを調べる(S1)。そして注目フラグメントfがフラグメント配列Fに含まれているならば(Yesならば)、「既読である」旨を表す値「true」を出力して処理を終了する(S2)。
また、注目フラグメントfがフラグメント配列Fに含まれていなければ(Noならば)、次に注目フラグメントfに関連付けられたハッシュ値(参照;Reference)があるか否かを調べ(S3)、参照を有していなければ(Noならば)、「既読でない」旨を表す値「false」を出力して処理を終了する(S4)。
一方、処理S3で参照を有してれば(Yesならば)、参照によって特定されるフラグメントを新たな注目フラグメントfとして(fを参照に置換;S5)、処理S1に戻って処理を続ける。
また、ドキュメントが更新されたときには制御部11は、図10に示す処理を開始し、doldを元のドキュメント、hnewを更新者や更新日時を表す情報、tnewを更新されたテキストとして、元ドキュメントにおいて可視と設定されているフラグメントを取り出し、取り出したフラグメント内のテキストを連結して、変更前のテキストtoldを生成する(S11)。
そして、toldと、tnewとの差分配列Dを生成する(S12)。ここで差分配列Dの要素は、(1)追記された部分、(2)削除された部分、(3)変更されていない部分を特定する情報要素を含み、例えば追記された部分については「+」符号を付して、[+,テキスト]のようなデータを生成し、削除された部分については「−」符号を付して、[-,テキスト]のようなデータを生成し、変更されていない部分については符号を付さずにnilとして、[nil,テキスト]のようなデータを生成する。
次に制御部11は、元のドキュメントdoldを構成するフラグメント配列Foldを取得する(S13)。これはデータベースサーバ2から取得することができる。そしてFoldと、差分配列Dとの共通細分Fnewを生成する(S14)。ここで共通細分とは次のようなものである。すなわち、元のドキュメントdoldは「これはドキュメントの一例です」であり、そのフラグメント配列としては、「これは」とのフラグメントf1と、「ドキュメントの一例です」とのフラグメントf2との2つのフラグメントを含むことになる(Fold=[f1,f2]の場合)。
ここで、変更後のテキストtnewが「これらはドキュメントの例です」である場合、変更前のテキストtold「これはドキュメントの一例です」との間の差分配列Dは、
[nil,これ]
[+,ら]
[nil,はドキュメントの]
[-,一]
[nil,例です]
の5つの要素を含むものとなる。
ここでもとのフラグメント配列Foldと、差分配列Dとの分割位置をすべて含む、最小の分割を共通細分として生成すると、Foldでは、「これは」と、「ドキュメント」との間で分割されているので、当該位置での分割を含め、
[nil,これ]
[+,ら]
[nil,は]
[nil,ドキュメントの]
[-,一]
[nil,例です]
の6つの要素を含むものとなる。
また、元のフラグメント配列Foldが「これはドキュメントの」と、「一例です」とに分けられていた場合、差分配列Dとの共通細分は、
[nil,これ]
[+,ら]
[nil,はドキュメントの]
[-,一]
[nil,例です]
の5つの要素を含むものとなる。
制御部11は、こうして生成した共通細分Fnewをデータ部に含み、元のドキュメントのハッシュ値(参照)を参照部に含むドキュメントdnewを生成して(S15)、処理を終了する。
さらに制御部11は、ドキュメントの表示処理として、図11に示す処理を開始する。ここでは指定されたドキュメントdnewから、利用者が既に閲覧した(既読の)ドキュメントdoldを見いだす(dnewから順に参照を辿りつつ、利用者側にクッキーなどとして登録した情報から、利用者が過去に閲覧したドキュメントを見つけ出す)。
そして、doldからフラグメント配列Foldを取り出し、dnewからフラグメント配列Fnewを取り出す(S21)。そしてFnewに未処理のフラグメントがあるか否かを調べる(S22)。当初はすべてのフラグメントが未処理になっている。この処理S22において、未処理のフラグメントがなければ(Noならば)、処理を終了する。また未処理のフラグメントがあれば(Yesならば)、未処理のフラグメントの一つを注目フラグメントfとして取り出す(S23)。そして、注目フラグメントfのヘッダhを取り出す(S24)。次に、注目フラグメントfが、Fold(利用者が過去に閲覧したフラグメントの配列)に含まれ、既に閲覧されたものであるか否かを判断する(S25)。この処理S25の判断において、図9に示した既読判定の処理が行われる。処理S25において、注目フラグメントfがFoldに対して既読であった(既に閲覧された)と判断された場合(Yesの場合)、注目フラグメントfが可視であるか否かを判断し(S26)、可視でなければ(Noならば)、処理S22に移行して処理を続ける。
一方、処理S26において注目フラグメントfが可視であれば(Yesならば)、注目フラグメントfのテキストにヘッダhを付与して出力(テキストを囲むspanタグの属性として付与する)し(S27)、処理S22に移行する。
また、処理S25が注目フラグメントfがFoldに対して既読でなかった(未だ閲覧されていない)と判断されると(Noであると)、次に注目フラグメントfが可視であるか否かを判断し(S28)、可視でなければ(Noならば)、注目フラグメントfのテキストにヘッダhを付与し、削除されたことを表す強調修飾を行って出力(テキストを囲むdelタグを設定し、その属性とヘッダの情報を付与する)し(S29)、処理S22に移行する。
一方、処理S28において注目フラグメントfが可視であれば(Yesならば)、注目フラグメントfのテキストにヘッダhを付与し、追記されたことを表す強調修飾を行って出力(テキストを囲むinsタグを設定し、その属性としてヘッダの情報を付与する)し(S30)、処理S22に移行する。
これにより、ドキュメントを、利用者が過去に参照してからの変更状況に応じて、図8に示したような状態で提示できるようになる。
本発明の実施の形態に係るサーバ装置の構成とそのネットワーク接続例を表すブロック図である。 データベースサーバ内で管理されるデータ構造の一例を表す説明図である。 データベースサーバが管理するテーブルの一例を表す説明図である。 データベースサーバ内で管理されるデータ間の関係の例を表す説明図である。 ドキュメントの差分を生成した例を表す説明図である。 データベースサーバ内で管理されるデータ間の関係の別の例を表す説明図である。 サーバ装置が生成するHTML文書の一部の例を表す説明図である。 サーバ装置から提供されるHTML文書を表示した例を表す説明図である。 本発明の実施例に係るプログラムの実例を表すフローチャート図である。 本発明の実施例に係るプログラムの実例を表すフローチャート図である。 本発明の実施例に係るプログラムの実例を表すフローチャート図である。
符号の説明
1 ウエブサーバ、2 データベースサーバ、3 クライアント装置、11 制御部、12 記憶部、13 通信部。

Claims (7)

  1. 少なくとも一つのドキュメントを保持するデータベースにアクセス可能に接続されたサーバ装置であって、
    前記ドキュメントのうち処理対象となった変更前ドキュメントに対して変更操作を行って得られた変更後ドキュメントを受け入れる受入手段と、
    前記変更前ドキュメントと変更後ドキュメントとの差分の情報を生成する差分情報生成手段と、
    前記差分の情報に基づいて、前記変更後ドキュメントを、前記変更前ドキュメントからの変更操作の種類ごとのデータフラグメントに分割する分割手段と、
    前記差分の情報に基づいて、前記分割して得られたデータフラグメントのうち、その内容がそのまま前記変更前ドキュメントに含まれているデータフラグメントについては、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけて当該データフラグメントを前記データベースに登録する登録手段と、
    を含むことを特徴とするサーバ装置。
  2. 請求項1に記載のサーバ装置であって、
    前記登録手段は、前記分割手段により得られたデータフラグメントのうち、その内容が前記変更前ドキュメントに含まれておらず、変更後ドキュメントに追加されたデータフラグメントについては、当該追加の変更操作に関する操作関係情報に関連づけて当該データフラグメントを前記データベースに登録することを特徴とするサーバ装置。
  3. 請求項1または2に記載のサーバ装置であって、
    前記登録手段は、前記分割手段により得られたデータフラグメントのうち、その内容が前記変更前ドキュメントに含まれ、変更後ドキュメントで削除されたデータフラグメントについては、当該削除の変更操作に関する操作関係情報に関連づけて当該データフラグメントを前記データベースに登録することを特徴とするサーバ装置。
  4. 請求項2または3に記載のサーバ装置であって、
    前記操作関係情報には、前記変更操作を行った利用者を特定する情報と、前記変更操作が行われた日時に関する情報とを含むことを特徴とするサーバ装置。
  5. 請求項1から4のいずれか一項に記載のサーバ装置であって、
    前記ドキュメントから分割して得られたデータフラグメントをクライアント装置側に提供する提供手段を含み、
    前記提供手段が、当該ドキュメントを分割して得られたデータフラグメントごとに、当該データフラグメントに係る変更操作の種類ごとに異なる情報を関連づけて、前記クライアント装置側に提供することを特徴とするサーバ装置。
  6. 少なくとも一つのドキュメントを保持するデータベースにアクセス可能に接続されたサーバ装置を制御する方法であって、
    前記ドキュメントのうち処理対象となった変更前ドキュメントに対して変更操作を行って得られた変更後ドキュメントを受け入れさせる工程と、
    前記変更前ドキュメントと変更後ドキュメントとの差分の情報を生成させる工程と、
    前記差分の情報に基づいて、前記変更後ドキュメントを、前記変更前ドキュメントからの変更操作の種類ごとのデータフラグメントに分割させる工程と、
    前記差分の情報に基づいて、前記分割して得られたデータフラグメントのうち、その内容がそのまま前記変更前ドキュメントに含まれているデータフラグメントについては、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけて当該データフラグメントを前記データベースに登録させる工程と、
    を含むことを特徴とするサーバ装置の制御方法。
  7. 少なくとも一つのドキュメントを保持するデータベースにアクセス可能に接続されたサーバ装置を制御するプログラムであって、
    前記ドキュメントのうち処理対象となった変更前ドキュメントに対して変更操作を行って得られた変更後ドキュメントを受け入れる手順と、
    前記変更前ドキュメントと変更後ドキュメントとの差分の情報を生成する手順と、
    前記差分の情報に基づいて、前記変更後ドキュメントを、前記変更前ドキュメントからの変更操作の種類ごとのデータフラグメントに分割する手順と、
    前記差分の情報に基づいて、前記分割して得られたデータフラグメントのうち、その内容がそのまま前記変更前ドキュメントに含まれているデータフラグメントについては、当該データフラグメントに対応する部分を含む変更前ドキュメントの少なくとも一部を特定する情報に関連づけて当該データフラグメントを前記データベースに登録する手順と、
    をサーバ装置に実行させることを特徴とするプログラム。
JP2004084801A 2004-03-23 2004-03-23 サーバ装置 Expired - Fee Related JP4547954B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004084801A JP4547954B2 (ja) 2004-03-23 2004-03-23 サーバ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004084801A JP4547954B2 (ja) 2004-03-23 2004-03-23 サーバ装置

Publications (2)

Publication Number Publication Date
JP2005275565A true JP2005275565A (ja) 2005-10-06
JP4547954B2 JP4547954B2 (ja) 2010-09-22

Family

ID=35175208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004084801A Expired - Fee Related JP4547954B2 (ja) 2004-03-23 2004-03-23 サーバ装置

Country Status (1)

Country Link
JP (1) JP4547954B2 (ja)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04270458A (ja) * 1991-02-26 1992-09-25 Matsushita Electric Ind Co Ltd 文書処理方法
JP2000020370A (ja) * 1998-06-29 2000-01-21 Sharp Corp データ同期処理装置
JP2000148691A (ja) * 1998-11-17 2000-05-30 Fujitsu Ltd 情報同期システムおよび記録媒体
JP2000231506A (ja) * 1999-02-12 2000-08-22 Nec Corp 木構造データ編集システムにおける木構造差分出力方法及び装置
JP2001117801A (ja) * 1999-10-22 2001-04-27 Sharp Corp データベース同期処理装置及びデータベース同期処理プログラムを記録した記録媒体
JP2001521251A (ja) * 1997-10-24 2001-11-06 マイクロソフト コーポレイション デスクトップ・コンピュータとモバイル・デバイス間の電子メール・オブジェクト同期
JP2002024211A (ja) * 2000-06-30 2002-01-25 Hitachi Ltd 文書管理方法およびシステム並びにその処理プログラムを格納した記憶媒体
JP2002055864A (ja) * 2000-08-09 2002-02-20 Seiko Epson Corp データ更新方法および情報処理装置
JP2003280967A (ja) * 2002-03-22 2003-10-03 Fujitsu Ltd データ管理装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04270458A (ja) * 1991-02-26 1992-09-25 Matsushita Electric Ind Co Ltd 文書処理方法
JP2001521251A (ja) * 1997-10-24 2001-11-06 マイクロソフト コーポレイション デスクトップ・コンピュータとモバイル・デバイス間の電子メール・オブジェクト同期
JP2000020370A (ja) * 1998-06-29 2000-01-21 Sharp Corp データ同期処理装置
JP2000148691A (ja) * 1998-11-17 2000-05-30 Fujitsu Ltd 情報同期システムおよび記録媒体
JP2000231506A (ja) * 1999-02-12 2000-08-22 Nec Corp 木構造データ編集システムにおける木構造差分出力方法及び装置
JP2001117801A (ja) * 1999-10-22 2001-04-27 Sharp Corp データベース同期処理装置及びデータベース同期処理プログラムを記録した記録媒体
JP2002024211A (ja) * 2000-06-30 2002-01-25 Hitachi Ltd 文書管理方法およびシステム並びにその処理プログラムを格納した記憶媒体
JP2002055864A (ja) * 2000-08-09 2002-02-20 Seiko Epson Corp データ更新方法および情報処理装置
JP2003280967A (ja) * 2002-03-22 2003-10-03 Fujitsu Ltd データ管理装置

Also Published As

Publication number Publication date
JP4547954B2 (ja) 2010-09-22

Similar Documents

Publication Publication Date Title
JP3860347B2 (ja) リンク処理装置
JP3857663B2 (ja) 構造化文書編集装置、構造化文書編集方法及びプログラム
US7730104B2 (en) Extraction of information from structured documents
US9489217B2 (en) Dynamic software documentation
KR100834549B1 (ko) 번역 시스템 및 번역 서비스 제공방법
KR20140048139A (ko) 실행 페이지의 동적 갱신 기법
US7720814B2 (en) Repopulating a database with document content
JP4398454B2 (ja) アノテーション管理プログラム、アノテーション管理装置、アノテーション編集プログラム及びアノテーション編集装置
JP2007141123A (ja) 異なるファイルの同一文字列のリンク
JP2008090404A (ja) 文書検索装置、文書検索方法および文書検索プログラム
US20090265615A1 (en) Data processing server and data processing method
JP6446819B2 (ja) 文書差分表示プログラム及び情報処理装置
JP5459877B2 (ja) メッセージ作成支援装置、メッセージ作成支援方法及びプログラム
JP2002215519A (ja) ウェブページ生成方法およびシステム、ウェブページ生成プログラム、記録媒体
US20090287994A1 (en) Document processing device and document processing method
JP7014958B2 (ja) 編集プログラム、編集装置、及び、編集方法
JP4547954B2 (ja) サーバ装置
JP2006134102A (ja) ディレクトリ編集支援プログラム、ディレクトリ編集支援方法及びディレクトリ編集支援装置
US11036729B2 (en) Document creation support system
JP2017220104A (ja) クライアント装置、情報処理システム及びプログラム
JP6235744B1 (ja) ウェブページ制作支援システム
Good et al. iHOPerator: user-scripting a personalized bioinformatics Web, starting with the iHOP website
JP3478195B2 (ja) データベース検索結果表示システム、方法及び記録媒体
JP2007026398A (ja) 画像情報または音声情報を含む文書データ翻訳システム
JP2011186692A (ja) 情報検索システムおよび情報検索方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070221

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20071112

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100510

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100615

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100628

R150 Certificate of patent or registration of utility model

Ref document number: 4547954

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130716

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140716

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees