(57)【要約】【課題】転送要求がなされたデータをサーバが作成する間の待ち状態による不便を軽減させる。【解決手段】データ転送システム１０において、クライアント端末１２からデータ転送の要求が発行されると、サーバ１４のサーバ演算処理部２４において、転送管理部２８およびデータ作成部３０に対応するプロセスが起動する。データ作成部３０は、要求されたデータを作成してデータベース３６に格納する。転送管理部２８は、データ作成部３０におけるデータの作成状況の情報を、クライアント端末１２からの所定の時間間隔のアクセスに応じて取得し、クライアント端末１２に送信する。さらに、所定量のデータが作成される都度、当該所定量単位でデータがクライアント端末１２に転送されるように制御を行う。クライアント端末１２の出力部２２には、サーバ１４におけるデータの作成状況の情報を表示する。【選択図】図１
2009080587.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続したクライアント端末からの要求に従い、転送するデータを作成して前記クライアント端末に転送するデータ転送サーバであって、
転送するデータを作成するデータ作成部と、
前記データ転送サーバへ所定の時間間隔でアクセスを実行するプログラムコードを前記クライアント端末へ送信し、当該プログラムコードを実行したクライアント端末から前記データ転送サーバへのアクセスを検知したとき、前記データ作成部におけるデータの作成状況の情報を取得し前記クライアント端末に送信する転送管理部と、
を備えたことを特徴とするデータ転送サーバ。
【請求項２】
前記転送管理部は、前記データ作成部において所定量のデータが作成されるごとに、全データの作成完了を待たずに当該所定量単位で前記クライアント端末にデータが転送されるように制御を行うことを特徴とする請求項１に記載のデータ転送サーバ。
【請求項３】
前記転送管理部は、前記クライアント端末においてユーザが入力した転送中止の要求を、当該クライアント端末からのアクセスがない状態が所定時間継続したことに基づき検知して、少なくともデータの作成状況の情報の取得を停止し、
前記データ作成部は、前記転送管理部がデータの作成状況の情報を取得しない状態が所定時間継続したことに基づき前記転送中止の要求を検知し、少なくともデータの作成を中止することを特徴とする請求項１または２に記載のデータ転送サーバ。
【請求項４】
前記転送管理部は、前記作成状況の情報を表し、前記転送管理部が送信した前記作成状況の情報に基づき更新される画面データを前記クライアント端末へ送信することを特徴とする請求項１または２に記載のデータ転送サーバ。
【請求項５】
前記転送管理部は、前記データ作成部において所定量のデータが作成されるごとに、前記所定量単位のデータを表示させる画面データを前記クライアント端末へ送信することを特徴とする請求項２に記載のデータ転送サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理技術に関し、特にネットワークを介してクライアント端末へデータを転送するデータ転送サーバに関する。
【背景技術】
【０００２】
近年の情報処理技術の発展およびネットワーク環境の充実化に伴い、コンピュータや携帯端末を操作するユーザは、サーバに格納された所望のデータを種別やサイズなどを問わずに、容易に取得することが可能となっている。
【０００３】
それを実現するひとつの形態として、ＷＷＷ（World Wide Web）システムによるドキュメントの閲覧が広く普及している。ＷＷＷシステムでは、ユーザが操作する端末で起動されたウェブブラウザにおいて所望のＵＲＬ（Uniform Resource Locator）を指定すると、ＷＷＷサーバが、当該ＵＲＬに対応するウェブページのデータをＨＴＭＬ（Hyper Text Markup Language）などの記述言語等で作成し、ユーザの端末（以下、クライアント端末と呼ぶ）に転送する。
【０００４】
ＷＷＷサーバは膨大な数のクライアント端末からの要求に応じて処理を行う必要がある。そこでクライアント端末とのセッションを管理する機能をＷＷＷサーバに設け、一のクライアント端末に対する継続的な処理を効率よく行う技術が提案されている（例えば特許文献１）。
【特許文献１】特開平１０−３２６２４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のような技術は主にサーバ側でのリソース利用の効率化を図るためのものであるため、１度のデータ転送要求において発生し得る、クライアント端末側での不便を解消するものではなかった。例えば、サーバが備えたデータベースから大量の文書データをダウンロードしたい場合などにおいて、サーバが当該文書データに対し転送に必要な処理を行っている間、ユーザはクライアント端末側で場合によっては長時間待つことを強いられる。
【０００６】
このような不便は、転送対象が文書データの場合のみならず、動画コンテンツやオーディオデータなどであっても、転送を行う前にサーバが形式変換などの処理を施すデータであれば共通して起こり得る。データ転送までの処理に時間を要する比較的大きなサイズのデータをネットワークを介して提供するサービスは増加し続けており、クライアント端末側で生じる転送処理待ちの状態がユーザに与えるストレスも看過できなくなっている。
【０００７】
本発明はこうした状況に鑑みてなされたものであり、その目的は、サーバにおけるリソースを効率的に利用すると同時に、クライアント端末側での転送処理待ちの状態を改善することのできるデータ転送技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のある態様は、データ転送サーバに関する。このデータ転送サーバは、ネットワークを介して接続したクライアント端末からの要求に従い、転送するデータを作成して前記クライアント端末に転送するサーバにおいて、転送するデータを作成するデータ作成部と、前記クライアント端末から前記サーバへ所定の時間間隔でアクセスを実行するプログラムコードを前記クライアント端末へ送信し、当該プログラムコードを実行したクライアント端末から前記サーバへのアクセスを検知したとき、前記データ作成部におけるデータの作成状況の情報を取得し前記クライアント端末に送信する転送管理部と、を備えたことを特徴とする。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によれば、クライアント端末での転送待ちの状態を改善しつつサーバのリソースを有効に活用することができる。
【発明を実施するための最良の形態】
【００１１】
図１は本実施の形態におけるデータ転送システムの構成を示している。データ転送システム１０は、クライアント端末１２とサーバ１４とがネットワーク４０を介して接続する構成を有する。クライアント端末１２はサーバ１４にデータの転送を依頼する。サーバ１４は依頼されたデータに必要な処理を適宜施してクライアント端末１２に転送する。ＷＷＷシステムを例にとると、クライアント端末１２側では起動したウェブブラウザにおいてユーザが所望のＵＲＬを指定し、サーバ１４がＷＷＷサーバとして指定されたＵＲＬに基づきＨＴＭＬ文書などを生成しクライアント端末１２に返す。ただし本実施の形態はＷＷＷシステムに限らず、いかなる規模、いかなる種類のデータ転送システムにも適用できる。サーバ１４が転送するデータは例えば、クライアント端末１２において入力した検索キーワードに合致する特許データの一覧などである。
【００１２】
クライアント端末１２は、転送するデータの指定を含むデータ転送指示の入力を受け付ける入力部１６、クライアント端末１２における各種処理およびクライアント端末１２全体の統括的な管理を行うクライアント演算処理部１８、ネットワーク４０を介してサーバ１４との通信を行うインターフェースであるクライアント通信部２０、およびサーバにおけるデータの作成状況の情報および転送されたデータに係る情報を出力する出力部２２を含む。
【００１３】
サーバ１４は、転送するデータの作成や作成状況の監視などを行うサーバ演算処理部２４、サーバ演算処理部２４における処理に必要なデータを格納する共有メモリ３２、ネットワーク４０を介してクライアント端末１２と通信を行うインターフェースであるサーバ通信部３４、および転送するデータを格納するデータベース３６を含む。サーバ演算処理部２４は、転送するデータの作成状況を監視しクライアント端末１２に転送に係る情報を提供する転送管理部２８、および転送するデータを作成してデータベース３６に格納していくデータ作成部３０を含む。
【００１４】
図１において様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、ネットワークを介して他の装置との通信を実現するプログラムなどによって実現される。
【００１５】
例えばサーバ演算処理部２４は単一のプロセッサまたは複数のサブプロセッサを備えたプロセッサユニットとすることができる。転送管理部２８とデータ作成部３０は、クライアント端末１２からのデータ転送要求に従い生成される２つのプロセスであってもよい。サーバ演算処理部２４はそれらの２つのプロセスを例えば並列に実行する。
【００１６】
ただし本実施の形態はこれに限らず、例えば転送管理部２８、データ作成部３０としてそれぞれ専用のプロセッサを備える構成としてもよい。以後の説明では転送管理部２８とデータ作成部３０は２つのプロセスとする。そして一のデータ転送要求に対して転送管理部２８およびデータ作成部３０に対応する一組のプロセスが生成されるとする。すなわちクライアント端末１２から別のデータ転送要求がなされた場合や、複数のクライアント端末１２からそれぞれデータ転送要求がなされた場合は、転送管理部２８に対応するプロセスおよびデータ作成部３０に対応するプロセスを要求の数に応じて生成する。以後の説明では転送管理部２８に対応するプロセス、データ作成部３０に対応するプロセスも、それぞれ単に転送管理部２８、データ作成部３０とも呼ぶ。
【００１７】
データ作成部３０は、クライアント端末１２においてユーザから要求されたデータを、クライアント端末１２の種別、通信プロトコル、ユーザからの指定などの情報に応じた形式で作成する。作成するデータはウェブページ、テキストデータ、アーカイブ、圧縮データ、データストリームなど一般的なデータの形態のいずれでもよい。転送管理部２８は、データ作成部３０におけるデータ作成状況の情報を所定のタイミングで取得し、途中経過としてクライアント端末１２に提供する。さらに、転送要求のあったデータの一部を、全データの作成完了を待たずにクライアント端末１２に転送する。転送管理部２８の詳細な構成については後述する。
【００１８】
クライアント端末１２における入力部１６は、キーボートや方向指示ボタン、マウス、トラックボール、ポインティングデバイスなど、コンピュータや携帯端末に一般的に備えられる、または接続可能なデバイスとすることもできるし、ウェブブラウザなど転送データの指定を行うことのできる画面を表示した表示装置とそれらのデバイスとの組み合わせとすることもできる。
【００１９】
クライアント端末１２におけるクライアント演算処理部１８は、単一のプロセッサまたは複数のサブプロセッサを備えたプロセッサユニットとすることができる。クライアント演算処理部１８は、入力部１６が受け付けたユーザのデータ転送要求の入力を検知し、サーバ１４へ当該転送要求を行うのに必要な情報を生成する。またクライアント通信部２０を介してサーバ１４との通信のセットアップを行う。さらにサーバ１４から送信されるデータの作成状況の情報、転送されたデータに係る情報、およびプログラムを認識し、プログラムを実行することなどにより、転送された情報が出力されるよう出力部２２の制御を行う。
【００２０】
出力部２２は、表示装置、プリンタ、ハードディスクなどの記憶装置など、サーバ１４から送信される情報を可視化、あるいはアクセス可能な形で実体化できるデバイスであってよい。あるいは、ウェブブラウザなど所定のプログラムをクライアント演算処理部１８にて実行することにより表示装置に表示される画面とすることもできる。以後、出力部２２を表示装置またはそれに表示される画面として説明する。
【００２１】
転送管理部２８とデータ作成部３０はプロセス間通信で情報の送受を行う。具体的には、データ作成部３０は、自らが行っているデータの作成状況の情報を共有メモリ３２に書き込む。転送管理部２８は、共有メモリ３２から当該情報を読み出し、クライアント端末１２に送信する。作成状況の情報は、転送を要求された全データのうちデータ作成部３０によって作成済みのデータの割合でもよいし、作成済みのデータのサイズや文書数などの絶対値であってもよい。
【００２２】
本実施の形態において、転送管理部２８が共有メモリ３２から作成状況の情報の読み出しを行う端緒は、クライアント端末１２からのアクセスとする。そのためサーバ１４の転送管理部２８は、クライアント端末１２に初回に作成状況の情報を送信する際、クライアント端末１２からサーバ１４へ所定の時間間隔で定期的にアクセスを行うプログラムコードを一緒に送信する。以後、このプログラムコードを「自動アクセスコード」と呼ぶ。そしてクライアント端末１２のクライアント演算処理部１８において自動アクセスコードが実行され、所定の時間間隔、例えば３秒間隔などで定期的にサーバ１４へアクセスが行われると、それを検知した転送管理部２８が共有メモリ３２からその時点での作成状況の情報を読み出し、クライアント端末１２に再度送信する。
【００２３】
転送管理部２８はさらに、所定量のデータが生成されるごとに当該データをクライアント端末１２へ送信する。すなわち本実施の形態では転送を要求された全データが作成されるのを待たずに、作成済みの部分的なデータを逐次クライアント端末１２に転送する。以後、クライアント端末１２への転送単位である部分的なデータを「転送単位データ」と呼ぶ。たとえばクライアント端末１２が１０万件の文書データの転送を要求した場合、サーバ１４は１０００件目のデータが作成された時点で１０００件分のデータをクライアント端末１２に送信する。この例では結果的に、全データを１００回に分割して転送することになる。転送単位はあらかじめ設定しておいてもよいし、ユーザが指定できるようにしてもよい。ユーザが指定した場合は、クライアント端末１２からサーバ１４へ送信されるデータ転送要求にその情報を含める。
【００２４】
一方クライアント端末１２では、サーバ１４の転送管理部２８が送信した作成状況の情報を出力部２２に表示する。出力部２２には、例えば作成済みのデータのサイズや件数などの絶対値を文字で表示したり、転送を要求した全データに対する作成済みデータの割合をインジケータなどで表現した図形を表示したりする。またサーバ１４から転送単位データが転送された場合、出力部２２にはデータそのものを表示したり、各データを表すアイコンを表示したりする。または、サーバ１４の転送管理部２８はまず、転送単位データを格納したデータベース３６など、データへのアクセスが可能なハイパーリンクを含むページのデータを先に送信し、クライアント端末１２の出力部２２へ表示するようにしてもよい。この場合はユーザが当該ハイパーリンクをクリックするなどしたときに、転送単位データがサーバ１４からクライアント端末１２へ転送される、という２段階の転送処理となる。
【００２５】
以上のような構成とすることにより、クライアント端末１２側でデータ転送の要求を行ったユーザは、サーバ１４においてどの程度までデータの作成処理が進捗しているかを常時確認することができる。これにより、いつ転送されるかわからないデータをクライアント端末１２の前で待ちつづける、といった状況を回避することができる。また、処理の停止、中断、処理速度の低下など、サーバ１４で発生している問題をリアルタイムで認識できる。さらに、どの程度の時間で全データの転送が完了するのかを見積もることができ、データ転送の中止や別の処理の開始など、とるべき行動をユーザが検討する拠り所を与えることができる。
【００２６】
ここで、作成状況の情報の送信をクライアント端末１２からの定期的なアクセスによって実現することにより、クライアント端末１２とサーバ１４との接続がタイムアウトによって切断されるのを防止することもできる。クライアント端末１２とサーバ１４との間に一定期間のアクセスが発生しないと、通信を中継するプロキシサーバなどのアクセス制御用サーバ（図示せず）の設定によってはタイムアウトが発生し得る。するとクライアント端末１２とサーバ１４との通信が切断されデータの転送が中断してしまうほか、通信の切断と関わりなくサーバ１４においてはデータの作成が続行し、サーバ１４のリソースを無駄に使用することにもなる。そこで上述のように、クライアント端末１２からのアクセスを端緒として作成状況の情報をサーバ１４から送信するようにすれば、望まないタイムアウトの発生の防止とユーザによる作成状況の確認とを同時に実現することができる。
【００２７】
さらに所定の転送単位である転送単位データが作成されたら随時、クライアント端末１２に転送することにより、ユーザは先に転送された転送単位データを確認したりそれを用いてさらなる処理を行ったりできる。すなわち転送データ取得後の処理を、サーバ１４のデータ作成と並列して行うことができる。結果としてユーザ側で処理の効率が向上する。この効果は転送を要求したデータが多いほど顕著になる。
【００２８】
上述したように本実施の形態ではデータ転送を要求するユーザにとって、サーバ１４におけるデータ作成時間がもたらすストレスを軽減することができるが、その機構を利用して、サーバ１４におけるリソース使用の効率化をも実現する。すなわち、クライアント端末１２においてユーザがデータ転送を中止した場合に、上記構成を利用してサーバ１４における転送管理部２８とデータ作成部３０の処理、すなわちそれぞれに対応する２つのプロセスを終了する。
【００２９】
具体的には、サーバ１４の転送管理部２８は、作成状況の情報および転送単位データの情報、あるいは転送単位データそのものをクライアント端末１２に送信した都度、自らのプロセスを一旦終了する。そしてクライアント端末１２からの定期的なアクセスによって当該プロセスを再度生成する。すると、クライアント端末１２から所定時間のアクセスがなかった場合、転送管理部２８は共有メモリ３２に格納した作成状況の情報を読み出さなくなる。データ作成部３０は、共有メモリ３２に格納した作成状況の情報を転送管理部２８が所定時間読み出していないことを検知した際、ユーザが転送を中止したと判断し自らの処理を終了する。より詳細な手順は後述する。
【００３０】
本実施の形態では上述のように、データの作成状況の情報や転送単位データをクライアント端末１２に随時送信することにより、ユーザがとるべき行動の選択肢を増やす。このような態様においてユーザは、全データの転送完了までに要する時間の把握や転送単位データの確認が可能となるため、予想外に時間を要する見通しであったりそれ以上のデータを必要としないことが判明した場合などに、データ転送を中止することが考えられる。このとき上述のような構成とすると、転送管理部２８やデータ作成部３０は、必要のない処理を行うことなくリソースを開放することができる。したがってサーバ１４のリソース使用の無駄を発生させずに、データ転送を中止するという選択肢をユーザに与えることができる。
【００３１】
図２は上述の構成で行われるデータ転送処理の手順の概要を示すフローチャートである。まずユーザはクライアント端末１２の入力部１６に対し、所望のデータを指定してデータ転送を要求する入力を行う（Ｓ１０）。するとクライアント端末１２のクライアント演算処理部１８は、当該要求を行う信号をクライアント通信部２０を介してサーバ１４へ発行する（Ｓ１２）。サーバ１４のサーバ通信部３４が要求信号を受信すると、当該要求に対応するプロセスとして転送管理部２８に対応するプロセスおよびデータ作成部３０に対応するプロセスが起動する（Ｓ１３のＹ、Ｓ１４）。ここでクライアント端末１２からのアクセスが初回でなければ（Ｓ１３のＮ）、後述するようにデータ作成部３０に対応するプロセスは実行中であるため、転送管理部２８に対応するプロセスのみを生成する（Ｓ１５）。そしてデータ作成部３０によってデータ作成処理が行われる（Ｓ１６）。各プロセスの起動および処理は一般的なＯＳが提供する機能を利用してよい。
【００３２】
このとき前述のとおり、データ作成部３０は作成が終了したデータから順にデータベース３６に格納していくとともに、共有メモリ３２に作成状況の情報を書き込んでいく。
【００３３】
転送管理部２８はデータ作成処理開始後、所定のタイミングで共有メモリ３２に書き込まれた作成状況の情報を読み出し、サーバ通信部３４を介してクライアント端末１２へ送信することにより、クライアント端末１２の出力部２２に当該情報を表示させる（Ｓ１８）。例えばＨＴＭＬなどのマークアップ言語で、作成状況を表現するインジケータなどを表示させるページを記述し、送信する。この際、上述のとおり、自動アクセスコードも同時に送信する。これは例えば一般的に用いられる「Refresh」などのメソッドに、あらかじめ定めたアクセスを行わせる時間間隔を指定してＨＴＭＬ文書に含めることにより実現できる。
【００３４】
これによりクライアント端末１２の出力部２２に表示させた、作成状況の情報を表すインジケータなどが、所定の時間間隔ごとに、サーバ１４にアクセスすることにより送信された新たな作成状況の情報に基づき更新されることになる。Ｓ１８において転送管理部２８により読み出された作成状況の情報において、所定量のデータ、すなわち転送単位データがデータベース３６に蓄積されていないことが示されている場合は（Ｓ２０のＮ）、転送管理部２８に対応するプロセスをそのまま終了する（Ｓ２４）。
【００３５】
データ作成部３０によって一の転送単位データの作成が完了すると（Ｓ２０のＹ）、転送管理部２８がその情報をクライアント端末１２に送信することにより、最終的にはデータベース３６からクライアント端末１２に、当該転送単位データがサーバ通信部３４を介して転送される（Ｓ２２）。転送単位データの転送手順、およびクライアント端末１２における転送単位データの出力の仕方には上述のとおり様々な手法が考えられ、そのいずれを採用してもよい。
【００３６】
例えば転送管理部２８は、転送単位データを格納したデータベース３６へアクセス可能なＵＲＬとともにウェブブラウザを起動するプログラムをクライアント端末１２に送信してもよい。これにはＪＡＶＡ（登録商標）アプレットなど既存の技術を利用することができる。この場合、クライアント端末１２の出力部２２では、ウェブブラウザが自動で起動するとともに、指定されたＵＲＬへアクセスを開始することにより、転送単位データがウェブブラウザに表示されることになる。
【００３７】
転送単位データの情報をクライアント端末１２に転送した時点においても転送管理部２８に対応するプロセスを一旦終了する（Ｓ２４）。このような状態において、クライアント端末１２の入力部１６は、常時、ユーザからの当該転送の中止を受け付ける。転送を中止する入力があった場合は（Ｓ２６のＹ）、上述のとおり、データ作成部３０がそれを検知し、自らのプロセスを終了することによりデータ作成処理が停止する（Ｓ３０）。なお図２のフローチャートでは転送中止の入力の検知をＳ２６のステップで行ったが、同検知はクライアント端末１２が転送を中止する旨の入力を受け付けた時点で速やかに行ってよく、それによりＳ３０のプロセス終了のステップへ移行してよい。
【００３８】
そして、ユーザからの転送を中止する入力がない限りは（Ｓ２６のＮ）、次の転送単位データが作成されるまでは、転送管理部２８のプロセス生成、出力部２２に表示されたインジケータなど作成状況の表示の自動更新、転送管理部２８のプロセス終了を繰り返し（Ｓ１３、Ｓ１５、Ｓ１６、Ｓ１８、Ｓ２０のＮ、Ｓ２４）、次の転送単位データが作成されたら新たなウェブブラウザを起動するなどして当該転送単位データを転送する（Ｓ２０のＹ、Ｓ２２）。上記処理を、最初にユーザが要求した全データの転送が完了するまで繰り返す（Ｓ２８のＮ、Ｓ１５〜Ｓ２６）。そして全データの転送が完了したら（Ｓ２８のＹ）、データ作成部３０のプロセスを終了することにより、当該要求に対する処理を終える（Ｓ３０）。Ｓ３０のプロセス生成部のプロセス終了処理については後述する。
【００３９】
図３は本実施の形態においてデータの転送処理を行っている際にクライアント端末１２の出力部２２に表示される画面の構成例を示している。表示画面５０に複数表示されるウィンドウはそれぞれウェブブラウザに対応してもよいし、あるブラウザから派生したサブウィンドウなどでもよい。あるいは個別のウィンドウでなくてもよい。表示画面５０は作成状況表示欄５２と転送単位データ表示欄５８ａ〜５８ｃを含む。作成状況表示欄５２は、図２のＳ２０において表示または更新される、作成状況を表すインジケータ５４、およびＳ１８においてユーザがデータの転送を中止する際に押下する「キャンセル」ボタン５６を含む。
【００４０】
転送単位データ表示欄５８ａ〜５８ｃはそれぞれ、図２のＳ２４でサーバ１４から転送された転送単位データを表示する。ここでは転送単位データごとに新たなウェブブラウザが起動する態様において３回の転送単位データを取得した状態を示している。したがって転送回数が増加するに従い転送単位データ表示欄５８ａ〜５８ｃの数は増加する。サーバ１４において要求したデータの作成中であっても、ユーザはクライアント端末１２において、その作成状況および転送単位データを表示画面５０にて確認することができる。
【００４１】
図４および図５は図２で示した処理手順を詳細に表したタイムチャートである。以後、同図に沿って詳細な処理手順の例を説明する。ただし同図は例示であり、本実施の形態を限定するものではない。また図４および図５では、図２で示したユーザによるデータ転送を中止する入力（Ｓ２６）、および全データの転送完了（Ｓ２８）に係る分岐については、あるタイミングで順次、次の段階へと進むものとして一部図示を省略している。なお転送管理部２８とデータ作成部３０はそれぞれのプロセスが動作している期間を矩形で表している。またデータ転送処理を終了する際の手順については図６を参照して詳述する。
【００４２】
まず図４に示すように、ユーザからの入力を受け付けたクライアント端末１２は、サーバ１４にデータ転送要求を示す信号を発行し、それを受けたサーバ１４において、転送管理部２８およびデータ作成部３０が自らのプロセスを起動する（Ｓ３０、Ｓ３４）。信号には転送を要求するデータに係る情報と出力形式、通信プロトコルなどを適宜含めてよい。例えばクライアント端末１２で起動したウェブブラウザにおいて、サーバ１４で転送処理を実現する所定のＣＧＩ（Common Gateway Interface）プログラムを起動させるためのＵＲＬ、例えば「http//A.cgi」などで表されるＵＲＬを指定することにより、当該ＣＧＩプログラムを起動させるようにしてもよい。あるいはそれ以外の既存の技術を適用してもよい。
【００４３】
するとデータ作成部３０は、信号に含まれる転送データに係る情報などに基づき転送するデータを作成し、データベース３６に格納する（Ｓ３６）。データ作成の元となるデータは図示しない別のデータベースなどから読み出してもよい。データベース３６へデータを格納する都度、あるいは所定の時間間隔で、データ作成部３０は共有メモリ３２にその時点の作成状況の情報を書き込む（Ｓ３７）。
【００４４】
共有メモリ３２に代わり、データベース３６を利用してもよい。共有メモリ３２における一の転送要求に対する作成状況の情報は、２つのプロセスのうちいずれかのプロセスＩＤと、転送要求を受け付けた時刻とで構成される変数などをキーとして他の転送要求の情報と区別する。当該２つのプロセスは、クライアント端末１２が発行する転送要求ごとに起動されるため、データ作成部３０、転送管理部２８、およびクライアント端末１２は、以後の処理において、当該キーに基づき必要な情報を識別することができる。
【００４５】
Ｓ３７でデータ作成部３０は、共有メモリ３２に、当該キーに対応づけて作成状況の情報を書き込む。データ作成部３０は、作成したデータのデータベース３６への格納および作成状況の情報の書き込みを繰り返すが（Ｓ３８〜Ｓ４３）、作成状況の情報は常に同キーに対応づけて書き込んでいく。
【００４６】
一方、転送管理部２８は、所定のタイミングでキーに基づき共有メモリ３２にアクセスし、最新の作成状況の情報を読み出す（Ｓ４５）。そして図３の作成状況表示欄５２などを含むページを表すＨＴＭＬデータなどをクライアント端末１２に送信する（Ｓ４７）。送信するデータには前述のとおり、所定の時間間隔でサーバ１４にアクセスを行う自動アクセスコードが組み込まれている。自動アクセスコードには、例えば、先にＣＧＩプログラムを起動させた際のＵＲＬと共有メモリ３２に記憶したキーとを含むＵＲＬを記述しておく。これは例えば、ＣＧＩプログラムが「A.cgi」でありキーが「KEY1」であれば、「http://A.cgi?KEY1」といった情報となる。転送管理部２８はＳ４７の送信処理を行った時点で自らのプロセスを一旦終了させる。
【００４７】
クライアント端末１２では、送信されたデータに基づき図３の作成状況表示欄５２のようなウィンドウが表示される。そして自動アクセスコードで指定された所定の時間間隔が経過すると、クライアント端末１２はサーバ１４へアクセスを行う（Ｓ４９）。上述の例であれば、このときサーバ１４に送信される情報は自動アクセスコードに記述されたＵＲＬ、「http://A.cgi?KEY1」である。サーバ１４の転送管理部２８は当該アクセスにより自らのプロセスを起動し、ＵＲＬなどアクセス時に送信された情報に含まれるキーに対応づけて共有メモリ３２に格納された作成状況の情報を再度読み出す（Ｓ５１）。そして当該情報をクライアント端末１２へ送信することにより（Ｓ５３）、クライアント端末１２の出力部２２に表示されたインジケータ５４等の作成状況表示欄５２を更新する。転送管理部２８はＳ５３の送信処理を行った時点で自らのプロセスを再度終了させる。
【００４８】
次に図５に示すように、データ作成部３０が引き続き、作成したデータをデータベース３６へ格納するとともに、共有メモリ３２に作成状況の情報を書き込み続けている状態で（Ｓ５５、Ｓ５７）、クライアント端末１２がサーバ１４へ新たなアクセスを行い（Ｓ５９）、転送管理部２８が共有メモリ３２から読み出した作成状況の情報から一の転送単位データの作成完了を検知したとする（Ｓ６０）。例えば１０００件ごとのデータを転送単位データとするときは、１２０００件まで転送済みであり、１３９２２件のデータ作成が完了している場合には、１２００１件から１３０００件までのデータを転送すべき転送単位データとして検知する。
【００４９】
このとき転送管理部２８は、作成状況の情報とともにデータベース３６に格納された転送単位データへアクセスするための情報と、ウェブブラウザを起動するプログラムとをクライアント端末１２に送信する（Ｓ６１）。転送単位データへアクセスするための情報とは格納領域へのＵＲＬなどでもよく、例えば上述の例のとおりＣＧＩプログラムが「A.cgi」、キーが「KEY1」であり、転送単位データが格納されたデータベース３６内の記憶領域を識別する情報を「data=13000」とすると、「http://A.cgi?KEY1&data=13000」といった情報となる。ウェブブラウザを起動するプログラムは前述のとおりＪＡＶＡ（登録商標）アプレットなどを利用できる。このときクライアント端末１２では、送信されたプログラムが起動し、出力部２２にウェブブラウザ画面が表示される。転送管理部２８はＳ６１の送信処理を行った時点で自らのプロセスを再度終了させる。
【００５０】
クライアント端末１２は送信された転送単位データへアクセスするための情報、上述の例では新規ブラウザによって「http://A.cgi?KEY1&data=13000」に基づきサーバ１４へアクセスを行うことにより（Ｓ６２）データベース３６に格納された転送単位データを取得する。（Ｓ６４）。転送単位データの転送処理は、実際には転送管理部２８などサーバ１４が保持する何らかの機能が仲介するようにしてもよい。このときは同図に示すように、Ｓ６２でクライアント端末１２からアクセスがあった際に、転送管理部２８が自らのプロセスを起動し、データベース３６に格納された転送単位データを取得して、クライアント端末１２へ転送する（Ｓ６３、Ｓ６４）。これにより、クライアント端末１２の出力部２２には、図４のＳ３０において指定した出力形式で、転送単位データ、またはその情報が表示される。これは例えば図３で示した転送単位データ表示欄５８ａに表示される。転送管理部２８はＳ６４の転送処理が行われた時点で自らのプロセスを再度終了させる。
【００５１】
そして次なる転送単位データが作成されるまでは、図５のＳ６１で取得した自動アクセスコードなどにより、クライアント端末１２はそれ以前と同様の所定の時間間隔でサーバ１４へアクセスを行う（Ｓ６５）。それに応じて転送管理部２８は図４のＳ５１およびＳ５３と同様、自らのプロセスを起動し、作成情況の情報を共有メモリ３２から読み出し、クライアント端末１２へ送信する（Ｓ６７、Ｓ６９）。次なる転送単位データが生成されたらＳ６１、Ｓ６２、Ｓ６３、Ｓ６４の処理を再度行う。これにより、クライアント端末１２の出力部２２には、インジケータ５４などを含む作成状況表示欄５２が常に表示され、転送単位データが作成された時点でそれを表示する転送単位データ表示欄５８ａ〜５８ｃが表示されていく、という形態の表示がなされることになる。
【００５２】
ここでユーザから、データ転送を中止する入力がクライアント端末１２に対してなされた場合、上述のとおりデータ作成部３０は、共有メモリ３２への転送管理部２８のアクセスの有無を確認することによりそれを検知する（Ｓ７５）。これによりデータ作成処理など、当該要求に係る全ての処理を終了する。
【００５３】
例えばユーザが、クライアント端末１２の出力部２２において、作成状況表示欄５２に示された「キャンセル」ボタン５６を押下した際、あるいは作成状況表示欄５２を示すブラウザを閉じた際などに、クライアント端末１２における自動アクセスコードに対応する処理を終了するようにする。これにより、サーバ１４への自動アクセスが行われない状態となる。このようにすることで転送管理部２８は自らのプロセスを起動することがなくなる。クライアント端末１２が何らかの原因によりフリーズした場合など、自動アクセスコードの実行が異常停止した場合も同様に扱う。
【００５４】
一方、データ作成部３０は、転送管理部２８が所定時間、共有メモリ３２に格納した作成状況の情報の読み出しを行っていないことを検知すると、ユーザがデータ転送を中止したと判断する（Ｓ７５）。これを実現するために転送管理部２８は、共有メモリ３２から作成状況の情報を読み出す都度、そのときの時刻を共有メモリ３２の所定の領域に記憶させておく。そしてデータ作成部３０は、作成状況の情報を共有メモリ３２に書き込む都度、最後に転送管理部２８が作成状況の情報を読み出した時刻を取得する。そして当該時刻と現在時刻との差が所定時間、例えば自動でアクセスする時間間隔より長ければ、転送管理部２８のプロセスが終了したと判断する。
【００５５】
データ転送が中止されたと判断したら、データ作成部３０は自らの処理を停止しプロセスを終了させる。割り当てられたメモリ空間の開放など、各プロセスの終了処理は一般的に行われているものと同様でよい。このようにすることにより、ユーザが転送を中止する入力を行った際や、クライアント端末１２が異常終了した場合などに、当該転送処理に対応するプロセスそのものが短時間で終了し、サーバ１４で無駄にＣＰＵ時間などのリソースが使用されることがなくなる。
【００５６】
図６は共有メモリ３２に格納される作成状況の情報のデータ構造例を示している。作成状況情報テーブル１００はキー欄１０２、作成状況欄１０４、転送済みデータ欄１０６、完了ステータス欄１０８、および最終アクセス時刻欄１１０を含む。キー欄１０２には上述のように一の転送要求の情報を他と識別するために転送要求ごとに一意に定められた値、例えばプロセスＩＤと転送要求を受け付けた時刻などから構成されるキーを格納する。図６の例では「9999920070823114503」、「9999920070823115806」、「9999920070823122300」、「9999920070823132500」なる４つのキーが格納されており、現在、４つの転送要求が受け付けられていることを示している。
【００５７】
作成状況欄１０４にはデータ作成部３０がデータベース３６に格納したデータの件数を格納する。当該数値は例えば図４のＳ３７などにおいてデータ作成部３０自身が書き込みを行う。転送管理部２８は図４のＳ４５などにおいて作成状況欄１０４を参照して作成状況を取得しクライアント端末１２へ送信するとともに、所定の転送単位データがデータベース３６に格納されたか否かを判断する。
【００５８】
転送済みデータ欄１０６には、それまでにクライアント端末１２への転送処理が終了したデータの件数を格納する。転送管理部２８は転送済みデータ欄１０６に格納された数値と作成状況欄１０４に格納された数値との差分が所定の転送単位に達した際、図５のＳ６１のようにクライアント端末１２への転送単位データの転送処理を開始する。このとき転送済みデータ欄１０６の値の更新も行う。図６の例は、１０００件を転送単位とした場合に、キー「9999920070823114503」を有する転送要求に対しては、現在「16258」件のデータがデータベース３６に格納されていて、そのうち「16000」件のデータがクライアント端末１２へ転送済みであることを示している。その他の転送要求についても同様である。
【００５９】
完了ステータス欄１０８は要求された転送データの作成が完了したか否か、の完了ステータスを示す数値を格納する。図６の例では、同欄に「０」が格納されている、キー「9999920070823114503」、「9999920070823122300」、「9999920070823132500」の要求はデータ作成中であり、「１」が格納されているキー「9999920070823115806」の要求は全データの作成が完了したことを示している。当該数値は、クライアント端末１２からデータ作成要求が発行された時点では「０」であり、要求された全データの作成を完了したタイミングで、データ作成部３０が「１」に更新する。そしてデータ作成部３０は自らのプロセスを終了する。
【００６０】
転送管理部２８は共有メモリ３２から作成状況を読み出す際、完了ステータス欄１０８を参照し、その値が「１」であれば、その時点でデータベース３６に格納されているデータをもって転送要求された全データが作成されたことを検知する。この場合は、その時点でデータベース３６に格納されているデータを転送単位データに代わりクライアント端末１２へ転送する。その際の処理は図５のＳ６１〜Ｓ６４と同様である。ただし、クライアント端末１２へは当該完了ステータスの数値「１」も同時に送信する。これによりクライアント端末１２は全てのデータの転送が完了したことを検知する。このときクライアント端末１２において全データの転送が完了したことを示す表示を行うようにしてもよい。一方、転送管理部２８は最後のデータの情報、あるいはデータそのものをクライアント端末１２へ転送した後、自らのプロセスを終了する。
【００６１】
転送管理部２８がクライアント端末１２からのアクセスを受け、図６の作成状況の情報のデータを参照したとする。このときキー「9999920070823114503」は「16258」件のデータがデータベース３６に格納されていて、そのうち「16000」件のデータがクライアント端末１２へ転送済みであり、完了ステータスが「０」であるため、転送管理部２８は当該要求を発行したクライアント端末１２へ「16258件」の作成状況のみを送信する。キー「9999920070823115806」は「13923」件のデータがデータベース３６に格納されていて、そのうち「13000」件のデータがクライアント端末１２へ転送済みであり、完了ステータスが「１」であるため、未転送の９２３件のデータについての情報と完了ステータス「１」を送信する。
【００６２】
キー「9999920070823122300」は「13922」件のデータがデータベース３６に格納されていて、そのうち「12000」件のデータがクライアント端末１２へ転送済みであり、完了ステータスが「０」であるため、「13922件」の作成状況、12001件〜13000件の転送単位データの情報を送信する。キー「9999920070823132500」は「13921」件のデータがデータベース３６に格納されていて、そのうち「11000」件のデータがクライアント端末１２へ転送済みであり、完了ステータスが「０」であるため、「13921件」の作成状況、11001件〜12000件の転送単位データの情報を送信する。
【００６３】
最終アクセス時刻欄１１０には、図４のＳ４５などにおいて転送管理部２８が作成状況を読み出すために作成状況情報テーブル１００を参照した直近の時刻を格納する。これは上述のとおり転送管理部２８によって書き込まれ、データ作成部３０が参照する。図６の例では、キー「9999920070823114503」を有する転送要求に対して直近に作成状況が読み出された時刻が「20070823122108」となっている。そして当該欄に格納された時刻とデータ作成部３０が参照した現在時刻との差が所定の時間間隔より長い場合に、転送管理部２８のプロセスが終了したと判断してデータ作成部３０のプロセスも終了する（図５のＳ７５）。
【００６４】
以上述べた本実施の形態によれば、クライアント端末の一度のデータ転送要求に対し、サーバ側では転送の管理を行うプロセスと転送するデータを作成するプロセスとの２つのプロセスを起動させる。そして転送の管理を行うプロセスは、データを作成するプロセスにおけるデータの作成状況の情報をプロセス間通信により取得し、クライアント端末１２へ提供する。これによりユーザは、クライアント端末側で、現在のデータ作成処理の進捗をリアルタイムで把握することができ、その後の見通しを立てることができる。結果的に、いつ終了するか不明確な状況でクライアント端末１２の前で待ち続けるといったストレスフルな状況を回避することができる。
【００６５】
また、転送の管理を行うプロセスは、所定量のデータが作成された時点でそれを転送単位データとしてクライアント端末１２に転送する。これによりユーザは、作成されたデータの一部を実際に確認することができ、転送単位データを利用したユーザ側での処理を、サーバ１４におけるデータの作成と並行して行うことができるため、処理効率が向上する。また、上述したデータの作成状況の把握と、実際に転送された転送単位データの中身とを総合的に判断して、高い確度でそれ以後のデータ転送の有意性を判断することができる。これにより、要求したデータが実際にはあまり必要なかった場合などは特に、サーバから一度にデータを転送する場合と比較して、ユーザやクライアント端末にとって時間やリソースの節約になる。
【００６６】
ここでユーザが作成状況および転送済みの転送単位データの中身から、転送の中止を決定した場合、クライアント端末から転送の管理を行うプロセス、データを作成するプロセス、という経路で当該中止の情報が、これまで述べた機能以外の監視機能や信号の送受を行うことなく伝達される。そしてそれぞれのプロセスは自らＣＰＵ時間を開放して終了する。これにより、転送の中止という事態が生じても、サーバ１４における特別なリソースを使用することなく速やかにデータ転送に係る処理が終了するため、サーバにとってもリソースの節約となる。
【００６７】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００６８】
【図１】本実施の形態におけるデータ転送システムの構成を示す図である。
【図２】本実施の形態におけるデータ転送処理の手順の概要を示すフローチャートである。
【図３】本実施の形態においてデータの転送処理を行っている際にクライアント端末の出力部に表示される画面の構成例を示す図である。
【図４】本実施の形態におけるデータ転送処理の手順を詳細に表したタイムチャートである。
【図５】本実施の形態におけるデータ転送処理の手順を詳細に表したタイムチャートである。
【図６】本実施の形態において共有メモリに格納される作成状況の情報のデータ構造例を示す図である。
【符号の説明】
【００６９】
１０  データ転送システム、  １２  クライアント端末、  １４  サーバ、  １６  入力部、  １８  クライアント演算処理部、  ２２  出力部、  ２４  サーバ演算処理部、  ２８  転送管理部、  ３０  データ作成部、  ３２  共有メモリ、  ３６  データベース、  ５０  表示画面、  ５２  作成状況表示欄、  ５４  インジケータ、  ５８ａ  転送単位データ表示欄。
【図１】
2009080587.tif 000003
【図２】
2009080587.tif 000004
【図３】
2009080587.tif 000005
【図４】
2009080587.tif 000006
【図５】
2009080587.tif 000007
【図６】
2009080587.tif 000008