(57)【要約】【課題】  ライセンスを管理するサーバ装置のダウン等の障害に係らず柔軟にライセンス管理可能にし、従来の問題であったサーバ装置のダウン中にライセンスの取得等の処理が停止してしまってライセンスが使用できなかった無駄な時間の発生を防止して、より効率よくライセンスを使用可能にすること。【解決手段】端末装置２００は、サーバ装置１００との通信が不可能な場合、他の端末装置２００からの要求に基づいて、使用済のライセンスを他の端末装置２００に貸与し、また、端末装置２００は、サーバ装置１００との通信が不可能な場合、ライセンスを他の端末装置２００に要求して借り受ける。また、サーバ装置１００は、端末装置２００との通信再開時に、ライセンスを割り当て中の端末装置２００にライセンスの使用状況を確認して、ライセンスの割り当て状態を更新する構成を特徴とする。【選択図】図１
2007249804.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの使用を許諾するライセンスのクライアント装置への割り当て状態を管理するサーバ装置と、前記サーバ装置から前記ライセンスを獲得しソフトウェアを実行する複数のクライアント装置と、を有するライセンス管理システムにおいて、
前記クライアント装置は、
前記ライセンスを前記サーバ装置から獲得する獲得手段と、
前記ライセンスを前記サーバ装置に返却する返却手段と、
前記返却手段によるライセンスの返却が行えなかった場合に前記ライセンスを他のクライアント装置に貸与可能に保持する保持手段と、
他のクライアント装置からのライセンス借り受け要求を受けた場合に、前記保持手段で保持しているライセンスを該他のクライアント装置に貸与する貸与手段と、
を備えることを特徴とするライセンス管理システム。
【請求項２】
前記クライアント装置は、
前記獲得手段により前記サーバ装置からライセンスを獲得できなかった場合に、ライセンスを貸与可能に保持している他のクライアント装置に対してライセンス借り受け要求を行いライセンスを借り受ける借受手段を更に備えることを特徴とする請求項１に記載のライセンス管理システム。
【請求項３】
前記返却手段は、前記借受手段により他のクライアント装置から借り受けたライセンスを当該他のクライアント装置に返却することを特徴とする請求項２に記載のライセンス管理システム。
【請求項４】
前記返却手段は、前記サーバ装置との通信が可能な場合に前記借受手段により他のクライアント装置から借り受けたライセンスを前記サーバ装置に返却することを特徴とする請求項２または３に記載のライセンス管理システム。
【請求項５】
前記サーバ装置は、
前記クライアント装置との通信再開時に、ライセンスを割り当て中のクライアント装置にライセンスの使用状況を確認して、ライセンスの割り当て状態を更新する更新手段を有することを特徴とする請求項１乃至４のいずれか１項に記載のライセンス管理システム。
【請求項６】
前記クライアント装置は、前記サーバ装置との通信再開時に、前記サーバ装置の前記更新手段による要求に基づいて、前記ライセンスの使用状況を通知する通知手段を更に有することを特徴とする請求項５に記載のライセンス管理システム。
【請求項７】
ソフトウェアの使用を許諾するライセンスを相互に貸借する複数の情報処理装置を有するライセンス管理システムにおいて、
前記情報処理装置は、
他の情報処理装置からの要求に基づいて、使用していない前記ライセンスを他の情報処理装置に貸与する貸与手段と、
前記ライセンスを他の情報処理装置に要求して借り受ける借受手段と、
を有することを特徴とするライセンス管理システム。
【請求項８】
前記情報処理装置は、前記借受手段により借り受けたライセンスを、前記貸与手段により他の情報処理装置に貸与するまで保持しておくことを特徴とする請求項７記載のライセンス管理システム。
【請求項９】
ソフトウェアの使用を許諾するライセンスを管理するサーバ装置から前記ライセンスを獲得し、ソフトウェアを実行する情報処理装置であって、
前記ライセンスを前記サーバ装置から獲得する獲得手段と、
前記ライセンスを前記サーバ装置に返却する返却手段と、
前記返却手段によるライセンスの返却が行えなかった場合に前記ライセンスを他の情報処理装置に貸与可能に保持する保持手段と、
他の情報処理装置からのライセンス借り受け要求を受けた場合に、前記保持手段で保持しているライセンスを該他の情報処理装置に貸与する貸与手段と、
を有することを特徴とする情報処理装置。
【請求項１０】
ソフトウェアの使用を許諾するライセンスのクライアント装置への割り当て状態を管理するライセンス管理装置において、
前記各クライアント装置は、ライセンス管理装置との通信が不可能な場合、クライアント装置間で使用していないライセンスを貸し借りするものであり、
前記クライアント装置との通信再開時に、ライセンスを割り当て中のクライアント装置にライセンスの使用状況を確認して、前記管理するライセンスの割り当て状態を更新する更新手段と、
を有することを特徴とするライセンス管理装置。
【請求項１１】
ソフトウェアの使用を許諾するライセンスのクライアント装置への割り当て状態を管理するサーバ装置と、前記サーバ装置から前記ライセンスを獲得しソフトウェアを実行する複数のクライアント装置と、を有するライセンス管理システムにおけるライセンス管理方法であって、
前記クライアント装置は、
前記ライセンスを前記サーバ装置から獲得する獲得ステップと、
前記ライセンスを前記サーバ装置に返却する返却ステップと、
前記返却ステップによるライセンスの返却が行えなかった場合に前記ライセンスを他のクライアント装置に貸与可能に保持する保持ステップと、
他のクライアント装置からのライセンス借り受け要求を受けた場合に、前記保持ステップで保持しているライセンスを該他のクライアント装置に貸与する貸与ステップと、
を備えることを特徴とするライセンス管理方法。
【請求項１２】
ソフトウェアの使用を許諾するライセンスを管理するサーバ装置から前記ライセンスを獲得しソフトウェアを実行する情報処理装置におけるライセンス管理方法であって、
前記ライセンスを前記サーバ装置から獲得する獲得ステップと、
前記ライセンスを前記サーバ装置に返却する返却ステップと、
前記返却ステップによるライセンスの返却が行えなかった場合に前記ライセンスを他の情報処理装置に貸与可能に保持する保持ステップと、
他の情報処理装置からライセンス借り受け要求を受けた場合に、前記保持ステップで保持しているライセンスを該他の情報処理装置に貸与する貸与ステップと、
を有することを特徴とするライセンス管理方法。
【請求項１３】
ソフトウェアの使用を許諾するライセンスを、複数のクライアント装置からの要求に基づいて割り当てるとともに、該ライセンス割り当て状態を記憶管理するライセンス管理装置におけるライセンス管理方法において、
前記各クライアント装置は、ライセンス管理装置との通信が不可能な場合、クライアント装置間でライセンスを貸し借りするものであり、
前記クライアント装置との通信再開時に、ライセンスを割り当て中のクライアント装置にライセンスの使用状況を確認して、前記ライセンス割り当て状態を更新する更新ステップを有することを特徴とするライセンス管理方法。
【請求項１４】
請求項１乃至７記載のライセンス管理システムとしてコンピュータを機能させるためのプログラム又は請求項１１乃至１３のいずれか１項に記載されたライセンス管理方法をコンピュータに実行させるためのプログラム。
【請求項１５】
請求項１乃至７記載のライセンス管理システムとしてコンピュータを機能させるためのプログラム又は請求項１１乃至１３のいずれか１項に記載されたライセンス管理方法をコンピュータに実行させるためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアを使用可能にするライセンスをサーバ装置からクライアント装置に割り当てるライセンス管理システムの制御に関する。
【背景技術】
【０００２】
従来のソフトウェアのライセンス管理では、ユーザに割り当てたソフトウェアライセンスが、ソフトウェアが使われていない間も占有されているという問題があり、ライセンスの無駄が生じることが多々あった。
【０００３】
この問題を解決するため、特許文献１に係るライセンス管理システムでは、ソフトウェアについてのライセンスを割当中のユーザの使用端末におけるユーザの在・不在状況を管理し、ユーザの在・不在状況に基づきそのユーザに対するライセンスの続行又は切断を判定して、ライセンスの無駄を省く技術が提案されている。
【特許文献１】特開２００２−２５８９６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の技術では、ライセンスを管理しているライセンス管理サーバがダウンすると、ライセンス管理テーブルなどの管理情報はリセットされてしまう。さらには、ライセンス管理サーバとの通信が切断されているため、クライアントはライセンス取得要求を発信することができず、他クライアントが作業を終了してもライセンスを返却することもできない。つまりは、ライセンス管理サーバが回復（再起動）するまではライセンス管理における一連の処理が中断し、非常に効率が悪いといった問題点があった。
【０００５】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、ライセンス管理サーバがダウンしている間も、ライセンスの管理における一連の処理が中断を継続可能にし、効率よくライセンスを使用することができる仕組を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、ソフトウェアの使用を許諾するライセンスのクライアント装置への割り当て状態を管理するサーバ装置と、前記ソフトウェア使用時に前記サーバ装置からライセンスを獲得し、使用終了時に使用済のライセンスを前記サーバ装置に返却する複数のクライアント装置と、を有するライセンス管理システムにおいて、前記各クライアント装置は、前記サーバ装置との通信が不可能な場合、他のクライアント装置からの要求に基づいて、使用済のライセンスを他のクライアント装置に貸与する貸与手段と、前記各クライアント装置は、前記サーバ装置との通信が不可能な場合、前記ライセンスを他のクライアント装置に要求して借り受ける借り受け手段と、を有することを特徴とする。
【０００７】
また、前記サーバ装置は、前記クライアントとの通信再開時に、ライセンスを割り当て中のクライアント装置にライセンスの使用状況を確認して、前記管理するライセンスの割り当て状態を更新する更新手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ライセンスを管理するサーバ装置がダウンしてもクライアント装置間の連携により、ライセンスの管理を継続することができる。
【０００９】
また、クライアント自身が状態情報を保持しているためライセンスを管理するサーバ装置の回復（再起動）後、ライセンスを管理するサーバ装置は、クライアント装置のライセンス使用状態をチェックすることにより、ライセンス管理状態を復元し、サーバ装置ダウン前の状態と同様にライセンス管理を継続することができる。
【００１０】
従って、ライセンスを管理するサーバ装置のダウン等の障害に係らず柔軟にライセンス管理することができ、従来の問題であったサーバ装置のダウン中にライセンスの取得等の処理が停止してしまってライセンスが使用できなかった無駄な時間の発生を防止して、より効率よくライセンスを使用可能にすることができる等の効果を奏する。
【発明を実施するための最良の形態】
【００１１】
〔第１実施形態〕
以下、本発明の実施形態について、図１〜図１２を使用して詳細に説明する。
【００１２】
図１は、本発明の一実施形態を示すライセンス管理システムのシステム構成及びサーバ装置のハードウェア構成の一例を示すブロック図である。
【００１３】
図１において、１００はサーバ装置であり、ＬＡＮ等の通信ネットワーク３００を介して、端末装置２００ａ〜２００ｄと通信可能である。なお、端末装置２００ａ〜２００ｄを総称して端末装置２００と称する。
【００１４】
サーバ装置１００において、１０２はサーバ装置１００の中枢となる制御装置であって、各種制御を行う。この制御装置１０２は、具体的にはパーソナルコンピュータのＣＰＵなどにあたる（以下、ＣＰＵと称する）。
【００１５】
１０３はＲＡＭ（Random Access Memory）であって、プログラムのワークエリアや一時的に保持するデータのバッファとして利用する。１０４はＲＯＭ（Read Only Memory）であって、ブートプログラム等を保持する。
【００１６】
１０５は外部メモリであって、ＯＳや本発明のプログラム等の各種プログラムや各種データを保持する。なお、外部メモリ１０５は、具体的にはハードディスクドライブやＤＶＤドライブ等である。
【００１７】
１０６は入力装置であり、この装置を通じて制御装置１０２にデータなどの入力が行われる。なお、この入力装置１０６は、具体的には、キーボードや、マウス等のポインティングデバイスである。
【００１８】
１０７は表示装置であり、具体的にはディスプレイ等である。１０９は通信インターフェースであり、ＬＡＮ等の通信ネットワーク３００と接続する部分である。
【００１９】
なお、端末装置２００のハードウェア構成も、上述したサーバ装置１００のハードウェア構成と同様である。
【００２０】
図２は、図１に示したライセンス管理システムにおけるソフトウェア構成の一例を示す構成図である。なお、端末装置２００は、図１に示したように、２台以上が接続されていることを前提とする。
【００２１】
図２において、４００はライセンス管理ＤＢであり、ソウトウェアの利用状況や利用者情報等を保持管理する。このライセンス管理ＤＢ４００は、サーバ装置１００内に設けられても、他の装置内に設けられる構成であってもよい。
【００２２】
サーバ装置１００には、ライセンスサーバプログラム１０１が実装されている。このライセンスサーバプログラム１０１は、サーバ装置１００の外部メモリ１０５に格納され、ＣＰＵ１０２によりＲＡＭ１０３上にロードされて実行される。
【００２３】
なお、このライセンスサーバプログラム１０１は、端末装置２００からの使用要求に対して、使用権限や認証、及びライセンスの空き状況をライセンス管理ＤＢ４００に照合する手段、使用要求のあった端末装置２００に対しライセンスを与える手段、端末装置２００内にあるアプリケーションプログラム２０１からのライセンス返却要求を受け付ける手段、端末装置２００と定期的に通信しながら動作する手段、端末装置２００に対しライセンスを授受した後、ライセンス管理ＤＢ４００のライセンス使用状況を更新する手段、一定時間を超えてもライセンスを返却しない場合にアプリケーションプログラム２０１が起動しているかチェックする手段、起動時に各アプリケーションプログラム２０１と通信してライセンス使用状況を確認し、ライセンス管理ＤＢ４００で管理するライセンス使用状況を更新する手段、を機能として備えている。
【００２４】
端末装置２００には、アプリケーションプログラム２０１が実装されている。このアプリケーションプログラム２０１は、端末装置２００の外部メモリに格納され、端末装置２００のＣＰＵによりＲＡＭ上にロードされて実行される。
【００２５】
なお、アプリケーションプログラム２０１は、起動時にライセンスサーバプログラム１０１に使用権を照会する手段、端末装置２００における自身の稼動状況を監視し、一定時間以上入出力処理が発生しなかった場合、ライセンスをライセンスサーバプログラム１０１に返却する手段、ライセンス返却後、自身の操作機能を一時的にロックする手段、サーバ装置１００と定期的に通信しながら動作する手段、また、その時点のデータをメモリ上に保持する手段、ライセンスサーバプログラム１０１と通信不能の場合に、使用済のライセンスを他のクライアントに貸与する手段、ライセンスサーバプログラム１０１と通信不能の場合に、他のクライアントからライセンスを借受する手段、を機能として備えている。
【００２６】
ライセンス管理ＤＢ４００には、図３に示すようなライセンス管理テーブル４０１が保持されている。また、端末装置２００のＲＡＭ又は外部メモリには、図３に示すようなマシン管理テーブル４０２が保持されている。
【００２７】
図３は、図２に示したライセンス管理テーブル４０１，マシン管理テーブル４０２の一例を示す図である。
【００２８】
図３に示すように、ライセンス管理テーブル４０１は、許可されたライセンス番号４０１ａ、ライセンス番号の使用状況４０１ｂ、使用中のマシンに割り当てられているマシン名４０１ｃ、使用中のマシンのＭＡＣアドレス４０１ｄ、ライセンスの連続使用時間４０１ｅ等の各項目のデータを保持する。
【００２９】
また、マシン管理テーブル４０２は、自マシン名４０２ａ、自ステータス情報４０２ｂ、貸与または借受マシン名４０２ｃ、要求待ち時間４０２ｄ等の各項目のデータを保持する。
【００３０】
アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１と定期的な通信を行うことで、ライセンスの使用権を確認しながら動作する。このことにより、アプリケーションプログラム２０１、もしくはライセンスサーバプログラム１０１が異常終了した場合や、ネットワークの寸断等で通信不能になった場合にもライセンスの整合性を確保できる。
【００３１】
以下、図４を参照して、図３に示した端末装置２００上からアプリケーションプログラム２０１を起動する過程を説明する。
【００３２】
図４は、本発明のライセンス管理システムにおける第１の制御処理手順の一例を示すフローチャートであり、アプリケーションプログラム２０１の起動処理に対応する。なお、このフローチャートの処理は、端末装置２００の外部メモリに格納されアプリケーションプログラム２０１を、端末装置２００のＣＰＵがＲＡＭ上にロードして実行することにより実現される。また、図中、Ｓ１００〜Ｓ１０９は各ステップを示す。
【００３３】
まず、アプリケーションプログラム２０１は、起動時にサーバ装置１００上のライセンスサーバプログラム１０１に対して、ライセンスの取得要求を送信する（Ｓ１００）。これ以後、アプリケーションプログラム２０１は、要求待ち時間を計時し、定期的に、自身の保持するマシン管理テーブル４０２の要求待ち時間４０２ｄを更新するものとする。
【００３４】
そして、アプリケーションプログラム２０１は、ライセンスサーバとの通信可能か否かをチェックし（Ｓ１０１）、通信可能であると判定した場合には、ライセンスを取得できたか否かを判定する（Ｓ１０２）。
【００３５】
なお、ライセンスサーバプログラム１０１は、端末装置２００からのライセンスの取得要求を受信すると、ライセンス管理テーブル４０１に基づいて、ライセンスの空き状況を確認し、空きライセンスがあると判定した場合には、端末装置２００に当該ライセンスを割り振り、ライセンスを付与する旨の情報を端末装置２００に通知する。これにより、端末装置２００はアプリケーションプログラム２０１のライセンスを取得できる。
【００３６】
ステップＳ１０２において、アプリケーションプログラム２０１は、ライセンスを取得できた（ライセンスを付与する旨の情報を受信した）と判定した場合、ステップＳ１０３に処理を進める。なお、ここで、アプリケーションプログラム２０１は、要求待ち時間の計時を終了し、自身の保持するマシン管理テーブル４０２の要求待ち時間４０２ｄを初期化するものとする。
【００３７】
ステップＳ１０３では、アプリケーションプログラム２０１は、アプリケーションプログラム２０１自身がロック状態か否か確認をする。なお、ロック状態とは、アプリケーションプログラム２０１の操作が禁止された状態を示す。
【００３８】
そして、ステップＳ１０３で、アプリケーションプログラム２０１自身がロック状態であると判定した場合には、ロックを解除し（Ｓ１０４）、ステップＳ１０５に処理を進める。
【００３９】
一方、ステップＳ１０３で、アプリケーションプログラム２０１自身がロック状態でないと判定した場合には、そのままステップＳ１０５に処理を進める。
【００４０】
次に、ステップＳ１０５において、アプリケーションプログラム２０１は、ライセンスを付与されたので、マシン管理テーブル４０２内のステータスフラグ４０２ｂを「使用中」に設定し、アプリケーションプログラム２０１本体を起動する（Ｓ１０６）。
【００４１】
また、ステップＳ１０２で、アプリケーションプログラム２０１は、ライセンスを取得できなかった（ライセンスを付与する旨の情報を受信できなかった）と判定した場合には、図示しないステップにおいて、「ライセンスは取得できませんでした」等のメッセージを表示し、アプリケーションプログラム２０１本体は起動せず、処理を終了する。
【００４２】
また、ステップＳ１０１で、ライセンスサーバプログラム１０１と通信不能であると判定した場合には、アプリケーションプログラム２０１は、自身の保持するマシン管理テーブル４０２のステータスフラグ４０２ｂを「要求」にセットして他の端末装置２００のアプリケーションプログラム２０１に（例えば、ブロードキャストにより）通知して、他のクライアントへ空きライセンスがないか問い合わせをする（Ｓ１０７）。なお、ここでは図示しないが、他クライアントにおいて、マシン管理テーブル４０２のステータスフラグ４０２ｂが「使用済」のものがあれば、そのクライアントは、ライセンスを貸与する旨の情報を問い合わせのあったクライアント（ステータスフラグ４０２ｂが「要求」の端末装置２００）に送信し、ステータスフラグ４０２ｂを「貸与」に変更し、貸与または借受けマシン名４０２ｃにライセンスを貸与したマシン名を設定する。これにより、他のクライアントにライセンスを貸与することができる。
【００４３】
そして、ステップＳ１０８において、アプリケーションプログラム２０１は、他のクライアントからライセンスを取得できた（ライセンスを貸与する旨の情報を受信した）か否かを判定し、ライセンスを取得できたと判定した場合には、ステップＳ１０９に処理を進める。
【００４４】
ステップＳ１０９において、アプリケーションプログラム２０１は、マシン管理テーブル４０２のステータスフラグ４０２ｂを「借受」に変更し、貸与または借受けマシン名４０２ｃにライセンスを借り受けたマシン名を設定し、ステップＳ１０６において、アプリケーションプログラム２０１本体を起動する。これにより、ユーザはアプリケーションプログラム２０１の各機能が使用可能となる。
【００４５】
一方、そして、ステップＳ１０８で、アプリケーションプログラム２０１は、他のクライアントからライセンスを取得できなかったと判定した場合には、図示しないステップにおいて、「ライセンスは取得できませんでした」等のメッセージを表示し、アプリケーションプログラム２０１本体は起動せず、処理を終了する。
【００４６】
以下、図５を参照して、図３に示したライセンスサーバプログラム１０１がライセンスを発行するまでの過程を説明する。
【００４７】
図５は、本発明のライセンス管理システムにおける第２の制御処理手順の一例を示すフローチャートであり、ライセンスサーバプログラム１０１のライセンス発行処理に対応する。なお、このフローチャートの処理は、サーバ装置１００の外部メモリ１０５に格納されライセンスサーバプログラム１０１を、サーバ装置１００のＣＰＵ１０２がＲＡＭ１０３上にロードして実行することにより実現される。また、図中、Ｓ２００〜Ｓ２０４各ステップを示す。
【００４８】
まず、ライセンスサーバプログラム１０１は、アプリケーションプログラム２０１からライセンスの取得要求を受信する（Ｓ２００）。すると、ライセンスサーバプログラム１０１は、ライセンス状況をライセンス管理テーブル４０１においてチェック（照会）する（Ｓ２０１）。
【００４９】
そして、ステップＳ２０２において、ライセンスサーバプログラム１０１は、ライセンスに空き（使用状況４０１ｂが「未使用」のライセンス）があるか否かを判定する。
【００５０】
そして、ステップS２０２で、空きがあると判定した場合には、ライセンスサーバプログラム１０１は、ステップＳ２０３において、空きライセンスのライセンスＩＤ４０１ａを取得し、ライセンス管理テーブル４０１の当該ライセンスのステータス（使用状況４０１ｂ）を「使用中」に変更する。
【００５１】
次に、ステップＳ２０４において、ライセンスサーバプログラム１０１は、要求のあったアプリケーションプログラム２０１に対してライセンスを発行する。即ち、ライセンスサーバプログラム１０１は、上述の空きライセンスを、要求のあったアプリケーションプログラム２０１に割り当て、該ライセンスの使用マシン名４０１ｃ，ＭＡＣアドレス４０１ｄに、要求のあったアプリケーションプログラム２０１が実行されている端末装置のマシン名，ＭＡＣアドレスを格納する。さらに、上記要求のあったアプリケーションプログラム２０１に、ライセンスを付与する旨の情報を送信する。これ以後、ライセンスサーバプログラム１０１は、使用時間を計時し、定期的に、ライセンス管理テーブル４０１の対応するライセンスキーの使用時間４０１ｅを更新するものとする。
【００５２】
一方、ステップＳ２０２で、ライセンスサーバプログラム１０１は、ライセンスに空き（使用状況４０１ｂが「未使用」のライセンス）がないと判定した場合には、ライセンスの取得要求を却下し、そのまま処理を終了する。なお、ライセンスの取得要求を却下する際には、要求のあったアプリケーションプログラム２０１に対して、ライセンスの取得要求を却下する旨の通知を、送信するように構成してもよい。
【００５３】
以下、図６を参照して、図３に示した端末装置２００上からアプリケーションプログラム２０１が一時的にライセンスを自動返却する過程を説明する。
【００５４】
図６は、本発明のライセンス管理システムにおける第３の制御処理手順の一例を示すフローチャートであり、アプリケーションプログラム２０１のライセンス返却処理に対応する。なお、このフローチャートの処理は、端末装置２００の外部メモリに格納されアプリケーションプログラム２０１を、端末装置２００のＣＰＵがＲＡＭ上にロードして実行することにより実現される。また、図中、Ｓ３００〜Ｓ３１１は各ステップを示す。
【００５５】
アプリケーションプログラム２０１は稼動中、常時入出力イベントを監視しており（Ｓ３００）、一定時間を超えて入出力処理が行われなかったと判定した場合には、自身の操作機能を一時的にロックする（Ｓ３０１）。
【００５６】
次に、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１との通信状態をチェックし（Ｓ３０２）、ライセンスサーバプログラム１０１との通信が不能となったと判定した場合には、アプリケーションプログラム２０１は、マシン管理テーブル４０２のステータスフラグ４０２ｂを「使用済」に変更する（Ｓ３０３）。なお、この時点で、アプリケーションプログラム２０１は、自身のステータスが「使用済」になったことを、他の端末装置２００のアプリケーションプログラム２０１に（例えば、ブロードキャストにより）通知するように構成してもよい。
【００５７】
そして、ステップＳ３１１において、アプリケーションプログラム２０１は、ライセンス貸与処理（図７）を実行し（Ｓ３１１）、処理を終了する。
【００５８】
一方、ステップS３０２で、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１と通信可能と判定した場合には、ライセンスサーバプログラム１０１に、ライセンスを返却する旨の情報を送信し（Ｓ３０４）、マシン管理テーブル４０２のステータスフラグ４０２ｂを「未使用」に変更し（Ｓ３０５）、処理を終了する。
【００５９】
また、ステップＳ３０１で、一定時間内に入出力イベントがあったと判定した場合には、アプリケーションプログラム２０１は、定期的に（予め設定された使用確認制限時間毎に）自身に使用権があるか否かをライセンスサーバプログラム１０１に対して確認する。
【００６０】
詳細には、ステップＳ３０６において、アプリケーションプログラム２０１は、まず、前回使用権の確認を行ってからの経過時間が使用確認制限時間を超えたか否かを判定する。そして、まだ使用確認制限時間を超えていないと判定した場合には、端末装置２００でアプリケーションプログラム２０１を起動し続けることが可能であり、アプリケーションプログラム２０１は、ステップＳ３００に処理を戻す。
【００６１】
一方、ステップＳ３０６で、使用確認制限時間を超えたと判定した場合には、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１に対してライセンス使用権の確認要求を送信する（Ｓ３０７）。
【００６２】
次に、ステップＳ３０８において、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１と通信不能か否かを判定し、通信不能であると判定した場合には、ステップＳ３１０に処理を進める。
【００６３】
そして、ステップＳ３１０において、アプリケーションプログラム２０１は、ステップＳ３０７の通信のリトライ回数（後述するようにＲＡＭに保持される）が予め設定された制限を越えたか否かを判定する。
【００６４】
そして、ステップＳ３１０で、また、リトライ回数が制限を越えていないと判定した場合には、アプリケーションプログラム２０１は、ステップＳ３００に処理を戻し、Ｓ３００〜Ｓ３１０の処理を繰り返す（リトライする）。なお、リトライの際、リトライ回数をＲＡＭ内に記憶するようにする。なお、この間はアプリケーションプログラム２０１を起動し続けることができる。
【００６５】
一方、ステップＳ３１０で、既にリトライ回数が制限を越えていると判定した場合には、ステップＳ３０１に処理を移行させ、アプリケーションプログラム２０１は、自身の操作機能を一時的にロックする。
【００６６】
また、ステップＳ３０８で、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１と通信可能と判定した場合、即ち、ライセンスサーバプログラム１０１からライセンス使用権確認結果を受信した場合には、ステップＳ３０９に処理を進める。
【００６７】
そして、ステップＳ３０９において、アプリケーションプログラム２０１は、ライセンス使用権確認結果に基づいて、サーバから使用を拒否されたか否かを判定する。そして、使用を拒否されたと判定した場合には、アプリケーションプログラム２０１は、ステップＳ３０１に処理を移行させ、アプリケーションプログラム２０１は、自身の操作機能を一時的にロックする。
【００６８】
一方、ステップＳ３０９で、アプリケーションプログラム２０１は、サーバから使用を許可されたと判定した場合には、ステップＳ３００に処理を戻し、入出力イベントを監視する。なお、この間はアプリケーションプログラム２０１を起動し続けることができる。
【００６９】
以下、図７を参照して、アプリケーションプログラム２０１がライセンスを他端末装置２００に貸与する処理過程を説明する。
【００７０】
図７は、本発明のライセンス管理システムにおける第４の制御処理手順の一例を示すフローチャートであり、図６のステップＳ３１１のライセンス貸与処理に対応する。なお、このフローチャートの処理は、端末装置２００の外部メモリに格納されアプリケーションプログラム２０１を、端末装置２００のＣＰＵがＲＡＭ上にロードして実行することにより実現される。また、図中、Ｓ１１００〜Ｓ１１０８は各ステップを示す。
【００７１】
まず、ステップＳ１１００において、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１との通信状態をチェックし（Ｓ１１００）、ライセンスサーバプログラム１０１との通信が不能であると判定した場合には、ステップＳ１１０３に処理を進める。
【００７２】
ステップＳ１１０３では、アプリケーションプログラム２０１は、マシン管理テーブル４０２のステータスフラグ４０２ｂを「使用済」に設定する。なお、ここで、アプリケーションプログラム２０１は、自身のステータスが「使用済」になったことを、他の端末装置２００のアプリケーションプログラム２０１に（例えば、ブロードキャストにより）通知するように構成してもよい。
【００７３】
そして、ステップＳ１１０４において、アプリケーションプログラム２０１は、ステータスが「要求」となっている他の端末装置２００を検索する。詳細には、アプリケーションプログラム２０１は、他の端末装置２００のアプリケーションプログラム２０１のマシン管理テーブル４０２を要求して取得して判定する。
【００７４】
そして、ステップＳ１１０４で、ステータスが「要求」となっている他の端末装置２００がないと判定した場合には、アプリケーションプログラム２０１は、ステップＳ１１００に処理を戻す。
【００７５】
一方、ステップＳ１１０４で、マシン管理テーブル４０２のステータスフラグ４０２ｂが「要求」となっている他の端末装置２００があると判定した場合には、アプリケーションプログラム２０１は、ステップＳ１１０５に処理を進める。
【００７６】
ステップＳ１１０５では、アプリケーションプログラム２０１は、上記ステータスが「要求」となっている他の端末装置２００にライセンスを貸与する。即ち、空きライセンスを問い合わせた端末装置２００に、ライセンスを付与する旨の情報を送信する。なお、ここでは図示しないが、ステップＳ１１０４において他の端末装置を検索する際、ステータスが「要求」となっている他の端末装置２００が複数台存在する場合は、マシン管理テーブル内「要求待ち時間」が最長である端末装置に優先的にライセンスを貸与していくこととする。
【００７７】
次に、ステップＳ１１０７において、アプリケーションプログラム２０１は、上記他のクライアントからライセンスを貸与した他のクライアントからライセンスが返却されたか否かを判定する。そして、返却されたと判定した場合には、アプリケーションプログラム２０１は、ステップＳ１１００に処理を戻す。
【００７８】
一方、ステップＳ１１０７で、ライセンスが返却されていないと判定した場合には、アプリケーションプログラム２０１は、ステップＳ１１０８に処理を進める。
【００７９】
ステップＳ１１０８では、ライセンスサーバプログラム１０１との通信が不能であるかをチェック、ライセンスサーバプログラム１０１との通信が不能であると判定した場合には、ステップＳ１１０７の処理を繰り返す。
【００８０】
一方、ステップＳ１１０８では、ライセンスサーバプログラム１０１との通信が可能となった、即ち、ライセンスが返却される前にライセンスサーバプログラム１０１との通信が可能となったと判定した場合には、そのまま処理を終了する。
【００８１】
また、ステップＳ１１００で、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１との通信状態をチェックし（Ｓ１１００）、ライセンスサーバプログラム１０１との通信が可能であると判定した場合には、ステップＳ１１０１に処理を進める。
【００８２】
ステップＳ１１０１では、アプリケーションプログラム２０１は、ライセンスサーバプログラム１０１に、ライセンスを返却する旨の情報を送信し、ステップＳ１１０２において、マシン管理テーブル４０２のステータスフラグ４０２ｂを「未使用」に設定する。そして、処理を終了する。
【００８３】
以下、図８を参照して、アプリケーションプログラム２０１からライセンスが自動返却された際のライセンスサーバプログラム１０１側の処理過程を説明する。
【００８４】
図８は、本発明のライセンス管理システムにおける第５の制御処理手順の一例を示すフローチャートであり、ライセンスサーバプログラム１０１のライセンス返却処理に対応する。なお、このフローチャートの処理は、サーバ装置１００の外部メモリ１０５に格納されライセンスサーバプログラム１０１を、サーバ装置１００のＣＰＵ１０２がＲＡＭ１０３上にロードして実行することにより実現される。また、図中、Ｓ４００〜Ｓ４０２各ステップを示す。
【００８５】
まず、ライセンスサーバプログラム１０１は、アプリケーションプログラム２０１からライセンスの返却要求を受信する（Ｓ４００）。すると、ステップＳ４０１において、ライセンスサーバプログラム１０１は、このライセンスの返却要求の送信元のマシン名，ＭＡＣアドレスを特定し、対応するライセンスを特定する。そして、ライセンス管理テーブル４０１内の、当該返却されたライセンスに対応するステータス（使用状況４０１ｂ）を「未使用」に変更する。
【００８６】
次に、ステップＳ４０２において、ライセンスサーバプログラム１０１は、上記ライセンスを返却したアプリケーションプログラム２０１に対して、ライセンス返却を受領した旨の応答を送信し、処理を終了する。
【００８７】
以下、図９のシーケンス図を参照して、上記図４〜図８のフローチャートで示した、端末装置２００がライセンスを取得後、アプリケーションプログラム２０１を起動し、ライセンスを返却するまでの処理の流れについて説明する。
【００８８】
図９は、本発明のライセンス管理システムにおいて端末装置２００がライセンスを取得後、アプリケーションプログラム２０１を起動し、ライセンスを返却するまでの処理の流れの一例を示すシーケンス図である。
【００８９】
図９に示すように、端末装置２００は、ライセンスサーバプログラム１０１にライセンス取得要求を送信する（Ｓ５００）。
【００９０】
ライセンス取得要求を受信したライセンスサーバプログラム１０１は、ライセンス管理ＤＢ４００に照会を行う（Ｓ５０１）。ライセンス管理ＤＢ４００は、空きライセンスを検索し（Ｓ５０２）、空きがあれば、ライセンス使用情報を追加し（Ｓ５０３）、ライセンスサーバプログラム１０１に通知する（Ｓ５０４）。
【００９１】
ライセンスサーバプログラム１０１は、ライセンス管理ＤＢ４００より取得した空きライセンスを端末装置２００に割り振る（Ｓ５０５）。
【００９２】
ライセンスを割り振られた端末装置２００は、アプリケーションプログラム２０１の使用権限を取得するので、ここでアプリケーションプログラム２０１本体を起動することができる。
【００９３】
また、アプリケーションプログラム２０１は、一定時間毎にライセンスサーバプログラム１０１に対し使用権限の確認要求を送信する（Ｓ５０６）。
【００９４】
使用権限の確認要求を受信したライセンスサーバプログラム１０１は、ライセンス管理ＤＢ４００に使用権限確認要求を送信する（Ｓ５０７）。ライセンス管理ＤＢ４００は、ライセンス管理テーブル４０１において当該ライセンスキーのステータスを確認し（Ｓ５０８）、ライセンスサーバプログラム１０１へ確認内容について応答する（Ｓ５０９）。
【００９５】
そして、ライセンスサーバプログラム１０１は、ライセンスの使用権限確認応答を、アプリケーションプログラム２０１に送信する。なお、確認の結果、ステータスが確認を要求した端末装置２００において「使用中」であれば、ライセンスサーバプログラム１０１は「使用権限ありを示す情報」をアプリケーションプログラム２０１に送信する。これにより、アプリケーションプログラム２０１は使用権限を失うことなく起動し続けることができる。一方、確認の結果、ステータスが確認を要求した端末装置２００において「使用中」でなければ、ライセンスサーバプログラム１０１は「使用権限なしを示す情報」をアプリケーションプログラム２０１に送信する。これにより、アプリケーションプログラム２０１は使用権限を失うことになる。
【００９６】
また、アプリケーションプログラム２０１においての入出力処理が行われなかった時は、ライセンスサーバプログラム１０１にライセンス返却要求を送信する（Ｓ５１１）。
【００９７】
ライセンス返却要求を受信したライセンスサーバプログラム１０１は、ライセンス管理ＤＢ４００にライセンス返却情報を通知する（Ｓ５１２）。ライセンス管理ＤＢ４００は、ライセンス管理テーブル４０１に当該ライセンスキーのステータスを「未使用」に戻す（Ｓ５１３）。このライセンスの返却処理が終了したらライセンス管理ＤＢ４００は、ライセンスサーバプログラム１０１にライセンス返却情報を通知する（Ｓ５１４）。
【００９８】
ライセンスサーバプログラム１０１は、端末装置２００にライセンス返却情報を通知する（Ｓ５１５）。
【００９９】
このライセンス返却情報を受信した端末装置２００は、この時点でアプリケーションプログラム２０１の使用権限を失いスリープ状態（ロック状態）となる。
【０１００】
以下、図１０を参照して、ライセンスサーバプログラム１０１がアプリケーションプログラム２０１の使用権限の確認を行う課程を説明する。
【０１０１】
図１０は、本発明のライセンス管理システムにおける第６の制御処理手順の一例を示すフローチャートであり、ライセンスサーバプログラム１０１によるライセンス剥奪処理に対応する。なお、このフローチャートの処理は、サーバ装置１００の外部メモリ１０５に格納されライセンスサーバプログラム１０１を、サーバ装置１００のＣＰＵ１０２がＲＡＭ１０３上にロードして実行することにより実現される。また、図中、Ｓ６００〜Ｓ６０６各ステップを示す。
【０１０２】
まず、ライセンスサーバプログラム１０１は、ライセンス管理テーブル４０１よりライセンスキーのステータスが「使用中」であるライセンスの情報（複数）を取得し、該取得した各ライセンスに対して、それぞれ図１０のフローチャートの処理を実行するものとする。
【０１０３】
まず、ステップＳ６００において、ライセンスサーバプログラム１０１は、使用権確認制限時間内に対象となるライセンスを使用中の端末装置（以下、当該クライアントという）のアプリケーションプログラム２０１から使用権限確認の要求を受信したか否かをチェックする。そして、使用権限確認の要求を受信したと判定した場合には、ライセンスサーバプログラム１０１は、ステップＳ６０６に処理を進め、当該クライアントへ応答メッセージを返信する。そして、ライセンスサーバプログラム１０１は、ライセンス管理テーブル４０１内の当該クライアントに対応するライセンスキーの使用時間４０１ｅを初期化し、処理を終了する。これにより、アプリケーションプログラム２０１は使用権限を失うことなく起動し続けることができる。
【０１０４】
一方、ステップＳ６００で、使用権確認制限時間内に当該クライアントからアプリケーションプログラム２０１から使用権限確認の要求を受信していないと判定した場合には、ライセンスサーバプログラム１０１は、ステップＳ６０１において、当該クライアントへ動作状況確認メッセージを送信する。
【０１０５】
次に、ライセンスサーバプログラム１０１は、当該クライアントと通信可能か否かをチェックし（Ｓ６０２）、通信不能であると判定した場合には、ステップＳ６０４に処理を進める。そして、ステップＳ６０３において、ライセンスサーバプログラム１０１は、リトライ回数（後述するようにＲＡＭ１０３に保持される）が制限数を超えたか否かを判定し、まだ制限を越えていないと判定した場合には、ステップＳ６００に処理を戻し、Ｓ６００〜Ｓ６０３の処理を繰り返す（リトライする）。なお、リトライの際、リトライ回数をＲＡＭ１０３内に記憶するようにする。
【０１０６】
一方、ステップＳ６０３で、リトライ回数（後述するようにＲＡＭ１０３に保持される）が制限数を超えたと判定した場合には、ライセンスサーバプログラム１０１は、ステップＳ６０４において、ライセンス管理テーブル４０１内の当該クライアントに対応するライセンスキーのステータス（使用状況４０１ｂ）を「未使用」に設定する。そして、処理を終了する。
【０１０７】
また、ステップＳ６０２で、当該クライアントと通信可能であると判定した場合には、ライセンスサーバプログラム１０１は、ステップＳ６０４に処理を進める。
【０１０８】
そして、ステップＳ６０４では、ライセンスサーバプログラム１０１は、ステップＳ６０１のメッセージ送信により、当該クライアントからアプリケーションプログラム２０１を使用中であるという確認が取れた（クライアントから応答があった）か否かを判定する。そして、当該クライアントから応答がないと判定した場合には、ステップＳ６０５に処理を進め、ライセンス管理テーブル４０１内の当該クライアントに対応するライセンスキーのステータス（使用状況４０１ｂ）を「未使用」に設定する。そして、処理を終了する。
【０１０９】
一方、ステップＳ６０４で、クライアントから応答があったと判定した場合には、ステップＳ６０６に処理を進め、当該クライアントへ応答メッセージを返信する。そして、ライセンスサーバプログラム１０１は、ライセンス管理テーブル４０１内の当該クライアントに対応するライセンスキーの使用時間４０１ｅを初期化し、処理を終了する。これにより、アプリケーションプログラム２０１は使用権限を失うことなく起動し続けることができる。
【０１１０】
以下、図１１を参照して、ライセンスサーバプログラム１０１が起動時に行う処理の過程を説明する。
【０１１１】
図１１は、本発明のライセンス管理システムにおける第７の制御処理手順の一例を示すフローチャートであり、ライセンスサーバプログラム１０１による起動処理に対応する。なお、このフローチャートの処理は、サーバ装置１００の外部メモリ１０５に格納されライセンスサーバプログラム１０１を、サーバ装置１００のＣＰＵ１０２がＲＡＭ１０３上にロードして実行することにより実現される。また、図中、Ｓ７００〜Ｓ７０５各ステップを示す。
【０１１２】
まず、ステップＳ７００において、ライセンスサーバプログラム１０１は、ライセンス管理ＤＢ４００に保持されているライセンス管理テーブル４０１を参照する。そして、ライセンスサーバプログラム１０１は、上記参照時に発行済みのライセンスが存在するか否かのチェックを行い（Ｓ７０１）、存在しないと判定した場合には、そのまま処理を終了する。
【０１１３】
一方、ステップＳ７００で、ライセンスサーバプログラム１０１が、発行済みのライセンスが存在すると判定した場合には、ステップＳ７０２に処理を進め、ライセンスサーバプログラム１０１は、各ライセンスを使用する端末装置２００（以下、各クライアントという）へ、ライセンスのステータス情報の確認を行う。詳細には、ライセンスサーバプログラム１０１は、各クライアントにライセンスのステータス情報を要求し、各クライアントからライセンスのステータス（ステータスフラグ４０２ｂ）を取得する。
【０１１４】
そして、ステップＳ７０３において、ライセンスサーバプログラム１０１は、サーバ装置１００側のステータス（使用状況４０１ｂ）と各クライアントのステータス（ステータスフラグ４０２ｂ）との間に差分があるか否かを判定する。そして、差分がないと判定した場合には、ライセンスサーバプログラム１０１は、そのまま処理を終了する。
【０１１５】
一方、ステップＳ７０３で、サーバ装置１００側のステータスと各クライアントのステータスとの間に差分がある（クライアント側のステータスが「貸与」となっている場合等を言う）と判定した場合には、ステップＳ７０４に処理を進める。
【０１１６】
そして、ステップＳ７０４では、ライセンスサーバプログラム１０１は、当該差分のあるクライアントに対して、該クライアントのステータス情報（ステータスフラグ４０２ｂ）を更新するメッセージを送信する。即ち、ステータスが「貸与」であったクライアントには、ステータスを「未使用」に変更させる。さらに、ステータスが「貸与」であったクライアントの貸与先のクライアントには、ステータスを「借受」から「使用中」に変更させる。
【０１１７】
さらに、ステップＳ７０５において、ライセンスサーバプログラム１０１は、ライセンス管理テーブル４０１を更新し、処理を終了する。即ち、クライアントのステータスが「貸与」であったライセンスキーに対応する使用マシン名４０１ｃ，ＭＡＣアドレス４０１ｄを、ステータスが「貸与」であったクライアントの使用マシン名，ＭＡＣアドレスに変更する。
【０１１８】
以下、図１２のシーケンス図を参照して、サーバ装置１００のダウン時における端末装置間の処理の流れについて説明する。
【０１１９】
図１２は、本発明のライセンス管理システムにおいて、サーバ装置１００のダウン時における端末装置間の処理の流れの一例を示すシーケンス図である。
【０１２０】
図１２に示すように、ライセンス使用済みの端末装置２００ａ（以下端末装置２００ａとする）は、サーバ装置１００（ライセンスサーバ）がダウンしているため、自端末装置にライセンス返却要求を通知する（Ｓ９００）。
【０１２１】
ライセンス返却要求を受信した端末装置２００ａは、自ステータス（ステータスフラグ４０２ｂ）を「使用済」に変更する（Ｓ９０１）。なお、ここでは図示していないが、端末装置２００ａは、自ステータスを「使用済」に変更すると同時に、他の端末装置２００（ｂ〜ｄ）のステータスが「要求」となっているものを探索し、ライセンス要求端末装置２００ｂに自端末装置２００ａが保持しているライセンスを貸与する（Ｓ９０２）。そして、ライセンスを貸与した端末装置２００ａは、自ステータスを「貸与」とする（Ｓ９０３）。
【０１２２】
また、端末装置２００ａからライセンスを借り受けた端末装置２００ｂは、この時点でアプリケーションプログラム２０１を稼動することができる。なお、ライセンスを借り受けた端末装置２００ｂは、自ステータスを「借受」に変更する（Ｓ９０４）。
【０１２３】
サーバ装置１００が再起動した場合、ライセンスサーバプログラム１０１は、ライセンス管理テーブル４０１においてライセンス発行状況の参照を行い（Ｓ９０５，Ｓ９０６）、ライセンスを発行している端末装置２００ａにライセンス使用状況の確認を行う（Ｓ９０７）。なお、ライセンスを貸与した端末装置２００ａは、自ステータスを「未使用」とする（Ｓ９０８）。
【０１２４】
ライセンスは端末装置２００ｂに貸与されているため、ライセンスサーバプログラム１０１は、端末装置２００ｂに使用状況の確認を行う（Ｓ９０９，Ｓ９１０）。ライセンスの使用状況を確認したライセンスサーバプログラム１０１は、ライセンス管理テーブル４０１を更新し（Ｓ９１１，Ｓ９１２）、端末装置２００ｂにライセンスを割り振る（Ｓ９１３）。この時点で、端末装置２００ａのステータスは「未使用」に、端末装置２００ｂは「使用中」に変更される（Ｓ９１４）。
【０１２５】
以下、図１３を参照して、端末装置２００におけるライセンス取得から返却までのステータスフラグの変化の過程を示す。
【０１２６】
図１３は、端末装置２００におけるライセンス取得から返却までのステータスフラグの変化の過程を示す状態遷移図である。
【０１２７】
まず、端末装置２００は、ライセンスを使用していないことを前提とする（Ｓ１０００）。
【０１２８】
端末装置２００は、ライセンス取得要求をサーバ装置１００へ通知すると同時に自ステータスを「要求」に変更する（Ｓ１００１）。
【０１２９】
そして、サーバ装置１００との通信が可能で且つ空きライセンスがあれば、サーバ装置１００から空きライセンスを割り振られ、自ステータスを「使用中」に変更し（Ｓ１００２）、アプリケーションプログラム２０１を実行することができる。
【０１３０】
また、サーバ装置１００と通信不能で、且つ、ステータスが「使用済」の他の端末装置があるときは、該他の端末装置よりライセンスを借り受け、自ステータスを「借受」に変更する（Ｓ１００７）と同時にアプリケーションプログラム２０１を実行することができる。
【０１３１】
また、ここでは図示していないが、ライセンスを貸出した他の端末装置２００は、自ステータスを「貸与」に変更し、マシン管理テーブル４０２上の「貸与または借受けマシン名」４０２ｃに、貸出しをしたマシン名を設定する。
【０１３２】
アプリケーションプログラム２０１を使用後は、サーバ装置１００と通信可能であればライセンスを返却し、ステータスを「未使用」に変更する（Ｓ１００３）。一方、サーバ装置１００と通信不能であれば、自ステータスを「使用済」に変更し（Ｓ１００４）、ステータスが「要求」となっている他端末装置２００にライセンスを貸与する（Ｓ１００５）。そして、サーバ装置１００の再起動後に、ライセンスを返却し、自ステータスを「未使用」に変更する（Ｓ１００６）。
【０１３３】
一方、Ｓ１００７の処理で、ライセンスを借り受けた端末装置２００は、サーバ装置１００の再起動後に、正式にライセンスを割り振られるためステータスが「使用中」に変更となる（Ｓ１００８）。
【０１３４】
以上示したように、本発明のライセンス管理システムでは、ライセンス管理サーバがダウンしている間も、クライアントマシン間の連携により、ライセンスの管理における一連の処理を継続可能にし、効率よくライセンスを使用することができる。
【０１３５】
また、クライアント自身が状態情報を保持しているため、ライセンス管理サーバの回復（再起動）後、ライセンス管理サーバは、クライアントの状態をチェックすることにより、ライセンス管理テーブルを復元し、サーバダウン前の状態と同様に管理を継続することができる。
【０１３６】
従って、ライセンス管理サーバのダウンに係らず、柔軟にライセンス管理することで、従来の問題点であったサーバダウン中に、ライセンスの許諾処理等が停止してしまうという無駄な時間を削減し、より効率よくライセンスを使用することができるフレキシブルなライセンス許諾環境を構築することが可能となる。
【０１３７】
また、上記実施形態ではライセンス管理サーバがライセンス管理ＤＢを基にライセンスを振り分けてライセンスを管理するという利用方法を示したが、ライセンス管理サーバやライセンス管理ＤＢがない場合でも本実施形態は利用可能である。
【０１３８】
以下では、図１及び図２のサーバ装置１００、ライセンス管理ＤＢ４００がないことを前提とする。
【０１３９】
以下、図１３を参照して、端末装置間でライセンスの貸借のステータスフラグの変化の過程を示す。
【０１４０】
まず、端末装置２００ａはライセンスを使用していないことを前提とする（Ｓ１０００）。
【０１４１】
端末装置２００ａは、ライセンス取得要求を他の端末装置２００ｂ〜２００ｄへ通知すると同時に自ステータスを「要求」に変更する（Ｓ１００１）。
【０１４２】
もし、端末装置２００ａがライセンスを持っていれば、端末装置２００ａが持っているライセンスを割り振り、自ステータスを「使用中」に変更し（Ｓ１００２）、アプリケーションプログラム２０１を実行することができる。
【０１４３】
また、端末装置２００ａがライセンスを持っておらず、他の端末装置２００ｂ〜２００ｄで、ステータスが「使用済」の他の端末装置（Ｓ１００４）があるときは、端末装置２００ａは該他の端末装置２００ｂ〜２００ｄよりライセンスを借り受け、自ステータスを「借受」に変更後（Ｓ１００７）、「使用中」に変更し（Ｓ１００８）、同時にアプリケーションプログラム２０１を実行することができる。
【０１４４】
また、ライセンスを貸出す他の端末装置２００ｂ〜２００ｄは、自ステータスが「使用済」の端末装置であり（Ｓ１００４）、自ステータスを「貸与」に変更後（Ｓ１００５）、「未使用」に変更する（Ｓ１００６）。
【０１４５】
端末装置２００ａはアプリケーションプログラム２０１を使用後、自ステータスを「使用済」に変更し（Ｓ１００４）、ステータスが「要求」となっている他端末装置にライセンスを貸与する（Ｓ１００５）。ライセンスを貸与後は、自ステータスを「未使用」に変更する（Ｓ１００６）。
【０１４６】
すなわち、ライセンス管理サーバがない場合は、予め付与されているライセンスを使用しなくなった端末装置が、次に使用する端末装置の出現するまで、ライセンスを保持しておく。
【０１４７】
その後、ライセンスを使用する端末装置が現れたら、ライセンスを使用しなくなった端末装置が、ライセンスを貸与し、ライセンスを使用する端末装置がライセンスを借受けて、アプリケーションプログラムを実行することができる。
【０１４８】
したがって、ライセンス管理サーバがない状態で、複数のクライアントマシンにクライアントマシンの数より少ないライセンスが付与された場合でも、各クライアント間でライセンスの貸借を行って上記同様の作用によりライセンスを効率よく使用することが可能である。
【０１４９】
以上示したように、本発明のライセンス管理システムでは、ライセンス管理サーバがない場合も、クライアントマシン間の連携により、ライセンスの管理における処理を可能にし、効率よくライセンスを使用することができる。
【０１５０】
なお、ソフトウェアのライセンスとはアプリケーションプログラム自身の起動の許可を与えるものでもよいし、アプリケーションプログラムの一部の機能についての許可を与えるものでも良い。
【０１５１】
また、上記各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０１５２】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１５３】
以下、図１４に示すメモリマップを参照して本発明に係るライセンス管理システムを構成する各装置（サーバ装置１００，端末装置２００）で読み取り可能なデータ処理プログラムの構成について説明する。
【０１５４】
図１４は、本発明に係る本発明に係るライセンス管理システムを構成する各装置（サーバ装置１００，端末装置２００）で読み取り可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【０１５５】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１５６】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１５７】
本実施形態における図４，図５，図６，図７，図８，図９，図１０，図１１，図１２に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１５８】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１５９】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１６０】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０１６１】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６２】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１６３】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６４】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１６５】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【図面の簡単な説明】
【０１６６】
【図１】本発明の一実施形態を示すライセンス管理システムのシステム構成及びサーバ装置のハードウェア構成の一例を示すブロック図である。
【図２】図１に示したライセンス管理システムにおけるソフトウェア構成の一例を示す構成図である。
【図３】図２に示したライセンス管理テーブル，マシン管理テーブルの一例を示す図である。
【図４】本発明のライセンス管理システムにおける第１の制御処理手順の一例を示すフローチャートである。
【図５】本発明のライセンス管理システムにおける第２の制御処理手順の一例を示すフローチャートである。
【図６】本発明のライセンス管理システムにおける第３の制御処理手順の一例を示すフローチャートである。
【図７】本発明のライセンス管理システムにおける第４の制御処理手順の一例を示すフローチャートである。
【図８】本発明のライセンス管理システムにおける第５の制御処理手順の一例を示すフローチャートである。
【図９】本発明のライセンス管理システムにおいて端末装置がライセンスを取得後、アプリケーションプログラムを起動し、ライセンスを返却するまでの処理の流れの一例を示すシーケンス図である。
【図１０】本発明のライセンス管理システムにおける第６の制御処理手順の一例を示すフローチャートである。
【図１１】本発明のライセンス管理システムにおける第７の制御処理手順の一例を示すフローチャートである。
【図１２】本発明のライセンス管理システムにおいて、ライセンスサーバのダウン時における端末装置間の処理の流れの一例を示すシーケンス図である。
【図１３】端末装置におけるライセンス取得から返却までのステータスフラグの変化の過程を示す状態遷移図である。
【図１４】本発明に係る本発明に係るライセンス管理システムを構成する各装置（サーバ装置，端末装置）で読み取り可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【符号の説明】
【０１６７】
１００  サーバ装置
１０１  ライセンスサーバプログラム
１０２  ＣＰＵ
１０３  ＲＡＭ
１０５  外部メモリ
１０６  入力装置
２００ａ〜２００ｄ  端末装置
２０１  アプリケーションプログラム
３００  通信ネットワーク
４００  ライセンス管理ＤＢ
４０１  ライセンス管理テーブル
４０１ａ  ライセンスＩＤ
４０１ｂ  使用状況
４０１ｃ  使用マシン名
４０１ｄ  ＭＡＣアドレス
４０１ｅ  使用時間
４０２  マシン管理テーブル
４０２ａ  マシン名
４０２ｂ  ステータスフラグ
４０２ｃ  貸与マシン名又は借受マシン名
４０２ｄ  要求待ち時間
【図１】
2007249804.tif 000003
【図２】
2007249804.tif 000004
【図３】
2007249804.tif 000005
【図４】
2007249804.tif 000006
【図５】
2007249804.tif 000007
【図６】
2007249804.tif 000008
【図７】
2007249804.tif 000009
【図８】
2007249804.tif 000010
【図９】
2007249804.tif 000011
【図１０】
2007249804.tif 000012
【図１１】
2007249804.tif 000013
【図１２】
2007249804.tif 000014
【図１３】
2007249804.tif 000015
【図１４】
2007249804.tif 000016