(57)【特許請求の範囲】
【請求項１】
予め所定数のライセンスを割り当てられた複数の拠点に配設され且つライセンスの要求を含むジョブを発信する複数のユーザ端末と、ジョブを実行するジョブ処理装置と、前記複数のユーザ端末が発信したジョブを拠点ごとにキューに格納し且つライセンスが確保されたジョブを前記ジョブ処理装置へ送信するキュー管理装置とを備え、
前記キュー管理装置は、キューからジョブを読み出すごとに該ジョブに対応するライセンスの確保を前記ジョブ処理装置に要求するキュー処理部を有し、
前記ジョブ処理装置は、前記キュー管理装置からの要求に対しライセンスの確保の成否を応答するライセンス確保処理部を有することを特徴とする情報処理システム。
【請求項２】
前記ジョブ処理装置は、さらに、前記キュー処理部からの要求に係るジョブの拠点と異なる拠点におけるライセンスの確保の成否を判定し該判定の結果を前記ライセンス確保処理部に供給するリモートライセンス確保エージェント処理部を有し、
前記キュー管理装置は、さらに、前記リモートライセンス確保エージェント処理部からライセンスの余剰に関する問い合わせを受け付け且つ当該ライセンスに余剰があるとき該ライセンスを予約するリモートライセンス確保処理部を有することを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記ジョブ処理装置は、さらに、前記リモートライセンス確保処理部により予約されたライセンスをリモート制御により確保しつつ前記キュー管理装置からのジョブを実行するライセンス継続ジョブ実行処理部を有し、
前記キュー管理装置は、さらに、前記ライセンス継続ジョブ実行処理部によるリモート制御のためのコネクションに応答するライセンス保持ジョブ実行処理部を有することを特徴とする請求項２記載の情報処理システム。
【請求項４】
前記キュー管理装置は、ライセンスの確保に失敗した旨を前記ジョブ処理装置から通知されたとき、前記キュー処理部により当該ジョブをキューに戻すことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理システム。
【請求項５】
前記キュー管理装置は、拠点に割り当てられたライセンスを識別するための仮想ライセンスデータを保持し、前記ジョブ処理装置にジョブを送信するとき当該仮想ライセンスデータを共に送信することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
予め所定数のライセンスを割り当てられた複数の拠点に配設された複数のユーザ端末から発信され且つライセンスの要求を含むジョブを拠点ごとにキューに格納するキュー管理装置が、ジョブを実行するジョブ処理装置に対し、キューからジョブを読み出すごとに該ジョブに対応するライセンスの確保を要求し、
前記ジョブ処理装置が、前記キュー管理装置からの要求に対しライセンスの確保の成否を応答し、
前記キュー管理装置が、ライセンスが確保されたジョブを前記ジョブ処理装置へ送信することを特徴とするライセンス管理方法。
【請求項７】
前記ジョブ処理装置が、前記キュー管理装置からの要求に係るジョブの拠点と異なる拠点におけるライセンスの余剰を前記キュー管理装置へ問い合わせ、
前記キュー管理装置が、前記ジョブ処理装置からの問い合わせに応答し且つ当該ライセンスに余剰があるとき該ライセンスを予約することを特徴とする請求項６記載のライセンス管理方法。
【請求項８】
前記ジョブ処理装置が、前記キュー管理装置により予約されたライセンスをリモート制御により確保しつつ前記キュー管理装置からのジョブを実行し、
前記キュー管理装置が、前記ジョブ処理装置によるリモート制御のためのコネクションに応答することを特徴とする請求項７記載のライセンス管理方法。
【請求項９】
前記キュー管理装置が、ライセンスの確保に失敗した旨を前記ジョブ処理装置から通知されたとき、当該ジョブをキューに戻すことを特徴とする請求項６乃至８のいずれか１項に記載のライセンス管理方法。
【請求項１０】
前記キュー管理装置が、拠点に割り当てられたライセンスを識別するための仮想ライセンスデータを保持し、前記ジョブ処理装置にジョブを送信するとき当該仮想ライセンスデータを共に送信することを特徴とする請求項６乃至９のいずれか１項に記載のライセンス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置がソフトウェアを実行する上で必要なライセンスを管理する技術に関し、特に、企業の業務部門のような複数の拠点にて取り扱うライセンスを管理する技術に関する。
【背景技術】
【０００２】
従来、複数の情報処理装置に対するライセンス管理を、人手に寄らず、コンピュータ制御により自動的に行う技術が提案されている。この種の技術として、例えば、後述の特許文献１及び２に記載のものがある。
【０００３】
特許文献１に記載の手法は、ライセンスの取得を要求する手段と、ＧＵＩの動作に連動してライセンスの起動を制御する手段とを情報処理装置に設けるというものである。この手法によれば、オペレータによるＧＵＩの終了操作に伴い、自動的にライセンスの解放処理が行われる。また、特許文献２に記載の手法は、企業等の各部門に配置されたライセンスサーバに管理させるライセンスを、自部門にて専有する専有ライセンスと、自部門に限らず他部門も使用可能な共有ライセンスとから構成するというものである。
【特許文献１】特開２００１−３４４０３１号公報
【特許文献２】特開２００３−３２３２２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献１の手法によれば、情報処理装置により使用するライセンスの要求及び解除を自動的に行うことができ、また、特許文献２の手法によれば、ライセンスを複数の部門間にて融通し合うことが可能となる。しかしながら、従来の手法では、複数の拠点からライセンス要求が発せられた場合、これらの要求に対し、ライセンスを適正な順序で割り当てることができない可能性がある。
【０００５】
上記の問題に関し、具体的には、例えば図１２に示すような状況が考えられる。図示の例は、拠点Ａ及び拠点Ｂにおける各ユーザが、図示しないライセンスサーバや他の拠点に対しライセンス要求を発信するという状況である。この状況において、まず、拠点Ａがタイミングｔ１でライセンス要求を発したとき、現時点ではライセンスの余剰が無かったとする。また、その後のタイミングｔ２にて拠点Ａが再要求を発したときにも、ライセンスの余剰が無かったとする。
【０００６】
ところが、後のタイミングｔ３にてライセンスが１つ利用可能となったが、その直後のタイミングｔ３´にて、偶発的に他方の拠点Ｂがライセンス要求を発したとする。そうすると、タイミングｔ３のライセンスは拠点Ｂに割り当てられ、この拠点Ｂよりも先にライセンス要求を発していた拠点Ａには、未だライセンスが割り当てられないという事態が生じる。このように、従来の手法では、ライセンス要求を発信する周期によっては、長期間、ライセンスを取得できないおそれがある。
【０００７】
本発明は、上記課題に鑑みてなされたものであり、複数のライセンス要求に対し、適切にライセンスを割り当てる手法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る情報処理システムは、予め所定数のライセンスを割り当てられた複数の拠点に配設され且つライセンスの要求を含むジョブを発信する複数のユーザ端末と、ジョブを実行するジョブ処理装置と、前記複数のユーザ端末が発信したジョブを拠点ごとにキューに格納し且つライセンスが確保されたジョブを前記ジョブ処理装置へ送信するキュー管理装置とを備え、前記キュー管理装置は、キューからジョブを読み出すごとに該ジョブに対応するライセンスの確保を前記ジョブ処理装置に要求するキュー処理部を有し、前記ジョブ処理装置は、前記キュー管理装置からの要求に対しライセンスの確保の成否を応答するライセンス確保処理部を有する。
【０００９】
本発明に係るライセンス管理方法は、予め所定数のライセンスを割り当てられた複数の拠点に配設された複数のユーザ端末から発信され且つライセンスの要求を含むジョブを拠点ごとにキューに格納するキュー管理装置が、ジョブを実行するジョブ処理装置に対し、キューからジョブを読み出すごとに該ジョブに対応するライセンスの確保を要求し、前記ジョブ処理装置が、前記キュー管理装置からの要求に対しライセンスの確保の成否を応答し、前記キュー管理装置が、ライセンスが確保されたジョブを前記ジョブ処理装置へ送信するという方法である。
【発明の効果】
【００１０】
本発明によれば、ユーザ端末からのライセンスの要求をキュー管理装置のキューに登録するよう構成したことから、ライセンスを要求するタイミングに依存することなく、各ユーザからの要求に対し公平にライセンスを割り当てることができる。
【発明を実施するための最良の形態】
【００１１】
図１に、本発明の実施形態を示す。本実施形態の情報処理システム１００は、業務部門のような複数の拠点（Ａ及びＢ）からＪＯＢを発信するユーザ端末１０（１０Ａ及び１０Ｂ）と、ユーザ端末１０からＪＯＢを受けるログインサーバ２０（２０Ａ及び２０Ｂ）と、ＮＡＳ（Network Attached Storage）４２に接続された複数のＰＣ４１によりＪＯＢを分散処理するＰＣクラスタ４０と、ログインサーバ２０が受けたＪＯＢを一旦キューに蓄積して順次ＰＣクラスタ４０へ投入するキュー管理装置３０（３０Ａ及び３０Ｂ）とを備える。ＰＣクラスタ４０のＰＣ４１は、本発明におけるジョブ処理装置に対応する構成要素である。
【００１２】
図示の情報処理システム１００は、ログインサーバ２０及びキュー管理装置３０を拠点ごとに配置した構成であるが、これに代えて、ログインサーバ２０及びキュー管理装置３０をシステムに１つずつ置き、それらを各拠点で共用するという構成であってもよい。
【００１３】
情報処理システム１００において、キュー管理装置３０は、ユーザ端末１０からのライセンス要求をＪＯＢとしてログインサーバ２０から受け、それを順次ＪＯＢキューへ格納する。また、キュー管理装置３０は、ＪＯＢに必要なライセンスをＪＯＢに割り当てる機能を果たす。
【００１４】
図２に、各拠点のキュー管理装置３０が管理するライセンスを模式的に示す。図示の「本物のライセンス」の数は、各拠点に予め割り当てられているライセンスの数を表し、「仮想のライセンス」の数は、ＪＯＢの実行に伴い変動し得る各拠点のライセンス数を表す。
【００１５】
また、図２に示すように、各拠点の「仮想のライセンス」には、自己の拠点専用の数量と、自己の拠点に限らず他の拠点も利用可能な、すなわち他の拠点にリモート制御にて貸し出し可能な数量とが設定されている。図示の例では、拠点Ａにおける３個のライセンスのうち、貸し出し可能な数量は１個であり、拠点Ｂにおける４個のライセンスのうち、貸し出し可能な数量は２個である。
【００１６】
図３に、ある拠点が他の拠点のライセンスをリモート制御にて使用する一例を示す。図示の例は、元来保持する３個のライセンスを全て使用中である拠点Ａが、さらに、拠点Ｂの１個のライセンスをリモート制御にて使用するケースである。これは、元来３個のライセンスを割り当てられている拠点Ａにおいて、一時的に４個のライセンスを使用することを意味する。
【００１７】
図４に、キュー管理装置３０及びＰＣクラスタ４０のＰＣ４１の機能構成を示す。これらの機能構成は、当該装置に実装されたプログラムモジュールに対応する。なお、キュー管理装置３０及びＰＣ４１間に記載された矢印のうち、実線のものと破線のものとでは、対応させるキュー管理装置３０の拠点が異なる。すなわち、例えば、実線の矢印が拠点Ａのキュー管理装置３０Ａに対応するとすれば、破線の矢印は、他方の拠点Ｂのキュー管理装置３０Ｂに対応する。
【００１８】
キュー管理装置３０は、その機能構成として、ＪＯＢを蓄積するＪＯＢキューを制御するキュー処理５１と、ライセンスの余剰に関するＰＣ４１からの問い合わせを受け付けるリモートライセンス確保処理５２と、ＰＣ４１がライセンスをリモート制御により確保しつつＪＯＢを実行するためのライセンス保持ＪＯＢ実行処理５３と、確保されたライセンスを解放するライセンス解放処理５４とを有する。
【００１９】
一方、ＰＣ４１は、図４に示すように、キュー管理装置３０から要求されたライセンスの確保を試みるライセンス確保処理６１と、リモート制御により確保できるライセンスを検索するリモートライセンス確保エージェント処理６２と、リモート制御によりライセンスを確保しつつＪＯＢを実行するライセンス継続ＪＯＢ実行処理６３と、リモート制御により確保したライセンスを解放するリモートライセンス解放処理６４とを有する。
【００２０】
また、ＰＣ４１は、リモート制御により確保すべきライセンスのリストであるリモートライセンス要求テーブル６５と、実際に確保したライセンスのリストであるリモートライセンス確保テーブル６６とを有する。これらのテーブルは、ＰＣクラスタ４０のＮＡＳ４２により保持し、その都度ＰＣ４１が参照するようにしてもよい。
【００２１】
リモートライセンス要求テーブル６５には、ＪＯＢの識別子であるJOBIDと、そのＪＯＢに必要なライセンスの種別であるLNAMEとが記録される。また、リモートライセンス確保テーブル６６には、JOBID及びLNAMEに加え、ライセンス情報が記録される。
【００２２】
ライセンス情報は、対象のライセンスを、いずれの拠点のキュー管理装置３０から確保すべきかを表す情報であり、本発明の仮想ライセンスデータに対応するものである。対象のライセンスがリモート制御により確保されるものである場合、ライセンス情報には、リモートでアクセスすべきキュー管理装置３０のＩＰアドレス及びポート番号等が記述される。このライセンス情報が有効に設定されていることは、すなわち、そのライセンスが当該拠点にて確保されており、他の拠点は使用できないことを指す。
【００２３】
次に、情報処理システム１００の動作手順を説明する。まず、図５に示すフローチャートを参照して、キュー処理５１について説明する。キュー管理装置３０は、前述したように、ユーザ端末１０からのライセンス要求をＪＯＢとしてログインサーバ２０から受信し、それらをＪＯＢキューに順次格納する。
【００２４】
キュー管理装置３０は、ＪＯＢキューの処理を開始すべく変数ｎを初期化し（ステップＡ１）、キューの先頭にあたる「n=0」から順にＪＯＢを１つずつ取り出す（ステップＡ２）。ここで、取り出されたＪＯＢがライセンスαの要求であるとすると、キュー管理装置３０は、現時点でライセンスαの確保が可能か否かをＰＣ４１のライセンス確保処理６１に問い合わせる（ステップＡ３）。
【００２５】
ＰＣ４１による後述のライセンス確保処理６１の結果、ライセンスαの確保に失敗、すなわち現時点ではライセンスαの余剰がいずれの拠点にも無い場合（ステップＡ４：No）、キュー管理装置３０は、このＪＯＢをＪＯＢキューのｎ番目に戻す（ステップＡ５）。そして、次のＪＯＢを処理すべく変数ｎを「1」加算する（ステップＡ６）。
【００２６】
このように、ライセンスが確保されなかったＪＯＢは、キューの元の順番に戻されることから、そのＪＯＢには、新たにキューに格納されたＪＯＢよりも高い優先順位を与え続けることができる。
【００２７】
一方、ＰＣ４１がライセンスαの確保に成功した場合（ステップＡ４：Yes）、キュー管理装置３０には、ＰＣ４１からライセンスαに関するライセンス情報が通知される。キュー管理装置３０は、通知されたライセンス情報をＪＯＢに設定し、このＪＯＢを実行させるべくＰＣクラスタ４０に投入する（ステップＡ８）。また、次のＪＯＢを処理するために、ＪＯＢキューの変数ｎを加算する（ステップＡ６）。
【００２８】
ここで、ライセンスαがリモート制御により確保されたものである場合、対象のＪＯＢは、後述のライセンス継続ＪＯＢとしてＰＣ４１により実行される。そして、このライセンス継続ＪＯＢからアプリケーション本体が起動される。
【００２９】
ＰＣ４１によるＪＯＢの実行が終了すると、キュー管理装置３０は、ＰＣ４１から通知されるＪＯＢの処理結果である戻り値を確認する（ステップＡ９）。また、キュー管理装置３０は、ライセンスαがローカルのもの、すなわち自己の拠点のものである場合、後述のライセンス解放処理５４によりライセンスαを解放する（ステップＡ１０）。
【００３０】
キュー管理装置３０は、ＰＣ４１からの戻り値が、ＪＯＢの再実行を示すものか否かを判定する（ステップＡ１１）。戻り値がＪＯＢの再実行でない場合は、このＪＯＢに関する処理を終了する。また、戻り値が再実行を示す場合、それは、ＰＣ４１でＪＯＢの実行が失敗したことを意味する。この場合、キュー管理装置３０は、ＪＯＢをＪＯＢキューのｎ番目に戻す（ステップＡ５）。
【００３１】
キュー管理装置３０は、ＪＯＢキューの変数ｎが、蓄積されているＪＯＢの総数Ｎに達するまで上記処理を繰り返し、最後の「n=N」の処理が終了したとき、再び「n=0」からＪＯＢを取り出して処理する（ステップＡ７）。
【００３２】
図６に示すフローチャートを参照して、ＰＣ４１によるライセンス確保処理６１について説明する。以下の説明では、ＰＣ４１を「クライアント」とし、このＰＣ４１に対しライセンスを貸し出す拠点のキュー管理装置３０を「サーバ」とする。
【００３３】
一例として、拠点Ａのキュー管理装置３０ＡからのＪＯＢを実行するＰＣ４１を「クライアント」とし、拠点Ａにリモートにてライセンスを貸し出す拠点Ｂのキュー管理装置３０Ｂを「サーバ」として説明する。ここで、ＰＣ４１からみて拠点Ａは「ローカル」である。
【００３４】
クライアントであるＰＣ４１は、ライセンスαの確保に関するキュー管理装置３０Ａからの問い合わせ（図５：ステップＡ３）を受けると、ローカル（拠点Ａ）及びリモート（拠点Ｂ）の双方でライセンスαの確保を試みる。本システムでは、仮に、ローカル及びリモートの双方でライセンスの確保に成功した場合、ローカルのものを採用する。
【００３５】
ＰＣ４１は、まず、リモートライセンス要求テーブル６５に、ライセンスαのLNAMEと、これを必要とするＪＯＢのJOBIDとを追加する（ステップＢ１）。リモートライセンス要求テーブル６５にレコードが追加されることにより、ＰＣ４１は、ローカルでのライセンス確保と並行して、後述のリモートライセンス確保エージェント処理６２を行う。
【００３６】
なお、追加しようとするLNAME及びJOBIDのレコードが既に存在する場合は、追加しない。これは、過去において、対象のＪＯＢにライセンスが確保されなかったことにより、リモートライセンス要求テーブル６５にレコードが残されたケースに該当する。
【００３７】
ＰＣ４１は、ローカルでのライセンス確保を行うべく、拠点Ａにライセンスαの余剰があるか否かを確認する（ステップＢ２）。その結果、ローカルにライセンスαがある場合、ローカルライセンス数のカウントを「1」減らす（ステップＢ３）。このローカルライセンス数のデータは、例えば、ＰＣクラスタ４０のＮＡＳ４２にて拠点ごとに保持させておく。
【００３８】
続いて、ＰＣ４１は、リモートライセンス確保テーブル６６を参照し、対象のＪＯＢ及びライセンスαに対応するレコードがあるかどうかを確認する（ステップＢ４）。リモートライセンス確保テーブル６６に該当のレコードが存在することは、リモート制御によるライセンス確保が成功したことを意味する。
【００３９】
ここで、ローカルにてライセンス確保に成功し、且つ、リモートライセンス確保テーブル６６に該当のレコードがある場合は、ローカル及びリモートの双方でライセンスαが確保されたことになる。この場合、リモートにより確保したライセンスを解放すべく、ＰＣ４１は、後述のリモートライセンス解放処理６４を実行する（ステップＢ５）。
【００４０】
さらに、ＰＣ４１は、解放されるライセンスについて、リモートライセンス要求テーブル６５及びリモートライセンス確保テーブル６６から対象のレコードを削除し（ステップＢ６）、ライセンス確保が成功した旨を拠点Ａのキュー管理装置３０Ａへ通知する（ステップＢ７）。
【００４１】
また、ライセンスαの余剰がローカルに存在しない場合（ステップＢ２：No）、ＰＣ４１は、次に、リモートライセンス確保テーブル６６を参照し、リモート制御でライセンスαが確保されたか否かを確認する（ステップＢ８）。
【００４２】
その結果、リモートでのライセンス確保に成功した場合、ＰＣ４１は、リモートライセンス確保テーブル６６から該当のレコードを削除すると共に、このレコードが示すライセンス情報をキュー管理装置３０Ａへ送信する（ステップＢ９、Ｂ１０）。これにより、リモート制御によるライセンスαの確保が成功したことが、キュー管理装置３０Ａへ通知される（ステップＢ１１）。
【００４３】
一方、現時点ではライセンスαをリモートでも確保できなかった場合（ステップＢ８：No）、ＰＣ４１は、ライセンスの確保に失敗した旨をキュー管理装置３０Ａへ通知する（ステップＢ１２）。この場合、リモートライセンス要求テーブル６５の対象のレコードは削除されない。すなわち、今回ライセンスαを確保できなかったＪＯＢのレコードは、リモートライセンス要求テーブル６５に残される。よって、このＪＯＢがキュー管理装置３０Ａにて再び処理される際、新たに発生した他のＪＯＢよりもライセンスαを優先的に確保することができる。
【００４４】
図７に示すフローチャートを参照して、リモートライセンス確保エージェント処理６２について説明する。この処理は、前述したように、ＰＣ４１においてライセンス確保処理６１（図６）と並行して行われるものであり、後述するサーバ側のリモートライセンス確保処理５２と協働する。ここでも、一例として、拠点Ａに関連するＰＣ４１を「クライアント」とし、他方の拠点Ｂのキュー管理装置３０Ｂを「サーバ」として説明する。
【００４５】
リモートライセンス確保エージェント処理６２において、ＰＣ４１は、リモートライセンス要求テーブル６５のレコードの変数Ｎを「０」に初期化し（ステップＣ１）、テーブルのＮ番目のレコードを順次読み出す（ステップＣ２）。そして、サーバ側となるキュー管理装置３０Ｂのリモートライセンス確保処理５２にアクセスし、拠点Ｂにライセンスαの余剰があるか否かを問い合わせる（ステップＣ３）。その結果、サーバ側にライセンスαの余剰がない場合（ステップＣ４：No）、次のレコードを処理すべく変数Ｎを「1」加算する（ステップＣ５）。
【００４６】
一方、ライセンスαがサーバ側にある場合（ステップＣ４：Yes）、ライセンスαが予約された旨と、そのライセンス情報とがサーバ側から応答される（ステップＣ６）。ＰＣ４１は、この応答を受けると、リモートライセンス要求テーブル６５から対象のレコードを削除する（ステップＣ７）。
【００４７】
また、ＰＣ４１は、リモートライセンス確保テーブル６６に、サーバから受信したライセンス情報と、対象のJOBID及びLNAMEとを記録する（ステップＣ８）。ここで記録されたレコードが、前述のライセンス確保処理６１にて参照される（図６：ステップＢ８）。
【００４８】
ＰＣ４１は、上記の処理を全てのレコードに対し順次実行し（ステップＣ９）、全ての処理が修了した場合、一定時間の待機を経て、再び「N=0」から処理を開始する（ステップＣ１０）。
【００４９】
図８に示すフローチャートを参照して、上記リモートライセンス確保エージェント処理６２に対する、サーバ側でのリモートライセンス確保処理５２について説明する。以下の説明では、サーバ側でのライセンスの総数をMAX、現時点で使用されているライセンス数をUNUM、リモートにて貸し出し可能なライセンス数をEXP、そして、貸し出し中のライセンス数をENUMとする。
【００５０】
サーバ側となる拠点Ｂのキュー管理装置３０Ｂは、ライセンスαに関するＰＣ４１からの問い合わせ（図７：ステップＣ３）を受けると（ステップＤ１）、ローカル（拠点Ｂ）で保持するライセンスαについて、「MAX＞UNUM」を判定する（ステップＤ２）。その結果、現状が「MAX＞UNUM」でない場合、拠点Ｂにライセンスαの余剰は無いと認識し（ステップＤ３）、その旨をＰＣ４１へ通知する（ステップＤ４）。
【００５１】
一方、現状が「MAX＞UNUM」を満たす場合、キュー管理装置３０Ｂは、さらに、「EXP＞ENUM」を判定し（ステップＤ５）、これを満たさない場合は、ライセンスαの余剰がないと認識する（ステップＤ３）。また、「EXP＞ENUM」を満たす場合（ステップＤ５：Yes）、キュー管理装置３０Ｂは、拠点Ｂにライセンスαの余剰があると認識し、このライセンスαをクライアント側に貸し出すべく、「ENUM」及び「UNUM」をそれぞれ「1」加算する（ステップＤ６）。これにより、拠点Ｂのライセンスαが１つ、貸し出し用として予約される。
【００５２】
さらに、キュー管理装置３０Ｂは、後述のライセンス保持ＪＯＢを生成し、これを、先ほど予約したライセンスαを割り当てたうえで起動する（ステップＤ７）。ライセンス保持ＪＯＢとは、クライアントに貸し出すライセンスαを、使用中のライセンスとして取り扱うために、サーバ側で実行されるものである。後にも説明するように、ライセンス保持ＪＯＢ実行処理５３は、サーバであるキュー管理装置３０ＢのＩＰアドレス及びポート番号をリモートライセンス確保処理５２に供給する。
【００５３】
キュー管理装置３０Ｂは、リモートライセンス確保処理５２にてキュー管理装置３０ＢのＩＰアドレス及びポート番号を認識すると（ステップＤ８）、それをライセンス情報としてクライアント側へ通知する（ステップＤ９）。
【００５４】
図９に示すフローチャートを参照して、クライアント側のライセンス継続ＪＯＢ実行処理６３、及び、サーバ側のライセンス保持ＪＯＢ実行処理５３について説明する。これらの処理は、ライセンスが確保されたＪＯＢをＰＣ４１により実行する際の処理である。
【００５５】
まず、クライアント側となるＰＣ４１は、拠点Ａのキュー管理装置３０Ａから投入されたＪＯＢをライセンス継続ＪＯＢとして開始し、このＪＯＢに設定されているライセンス情報を取り出す。そして、ライセンス情報が示すＩＰアドレス及びポート番号を用いて、サーバ側であるキュー管理装置３０Ｂにアクセスし、ライセンス保持ＪＯＢ実行処理５３との間でコネクションの確立を試みる（ステップＥ１）。
【００５６】
その結果、通信事情などによりコネクションの確立に失敗した場合（ステップＥ２：No）、ＰＣ４１は、ＪＯＢの起動に失敗したと認識し（ステップＥ３）、ＪＯＢが失敗したことを示す戻り値をキュー管理装置３０Ａに送信する（ステップＥ４）。
【００５７】
また、コネクションの確立に成功した場合（ステップＥ２：Yes）、ＰＣ４１は、キュー管理装置３０Ｂとのコネクションを維持しつつ、アプリケーションを起動し実行する（ステップＥ５）。このコネクションを維持することで、ライセンスが確保され且つアプリケーションの実行が許可された状態となるが、アプリケーションの種類によっては、ライセンス本体の読み取りも必要とされる場合がある。その場合、ＰＣ４１は、ライセンス本体のデータをキュー管理装置３０Ｂから取得する。
【００５８】
その後、ＰＣ４１は、アプリケーションの終了を検知すると、キュー管理装置３０Ｂとのコネクションを切断する（ステップＥ７）。これにより、リモート制御により使用していたライセンスαの解放がキュー管理装置３０Ｂへ伝えられる。ＰＣ４１は、ＪＯＢが完了したことを示す戻り値をキュー管理装置３０Ａへ送信する（ステップＥ８）。
【００５９】
上記処理の間、サーバ側となるキュー管理装置３０Ｂでは、ライセンス保持ＪＯＢ実行処理５３が次のように実行される。キュー管理装置３０Ｂは、前述したように、リモートライセンス確保処理５２からライセンス保持ＪＯＢを起動する（図８：ステップＤ７）。
【００６０】
これによりライセンス保持ＪＯＢ実行処理５３が開始すると、キュー管理装置３０Ｂは、ＰＣ４１からのリモート制御を受付ける所定のポートを開き、そのポート番号をリモートライセンス確保処理５２へ供給する。また、キュー管理装置３０Ｂは、開けたポートに対するＰＣ４１からのコネクションの要求を、所定期間（Ｗ）待機する（ステップＦ１）。
【００６１】
その結果、タイムアウト、すなわち所定期間（Ｗ）のうちにＰＣ４１からコネクションの要求が無い場合は（ステップＦ２：No）、ライセンス保持ＪＯＢ実行処理５３を終了する（ステップＦ５）。ライセンス保持ＪＯＢ実行処理５３が終了すると、キュー管理装置３０Ｂは、前述のリモートライセンス確保処理５２（図８：ステップＤ６）により予約しておいたライセンスαを、後述のライセンス解放処理５４により解放する。
【００６２】
また、所定期間（Ｗ）のうちにＰＣ４１からコネクションの要求があった場合（ステップＦ２：Yes）、キュー管理装置３０Ｂは、コネクションを確立し、そのコネクションを、ＰＣ４１から切断されるまで維持する（ステップＦ３）。コネクションが維持される間、予約しておいたライセンスαが、ＰＣ４１によりリモート制御で使用される。
【００６３】
その後、キュー管理装置３０Ｂは、ＰＣ４１からコネクションが切断されたことを検知すると（ステップＦ４）、ライセンス保持ＪＯＢ実行処理５３を終了し（ステップＦ５）、ライセンス解放処理５４によりライセンスαを解放する。
【００６４】
このように、リモート制御によりライセンスを使用する際、サーバ及びクライアントで実行する２つのＪＯＢがコネクションを結ぶことから、そのライセンスの確保及び解放を確実に行うことができる。
【００６５】
図１０のフローチャートを参照して、キュー管理装置３０のライセンス解放処理５４について説明する。キュー管理装置３０は、解放すべきライセンスαをライセンス情報に基づき認識し（ステップＧ１）、ライセンスαについて、ローカルライセンス数を「1」増加させる（ステップＧ２）。これにより、ローカルにて確保されていたライセンスαが解放され、他のＪＯＢに割り当て可能となる（ステップＧ３）。
【００６６】
図１１のフローチャートを参照して、ＰＣ４１のリモートライセンス解放処理６４について説明する。ＰＣ４１は、解放すべきライセンスαのライセンス情報から、サーバ側のＩＰアドレス及びポート番号を認識する（ステップＨ１）。そして、対象のキュー管理装置３０にアクセスし（ステップＨ２）、確立されていたコネクションを切断する（ステップＨ３）。これにより、リモート制御により確保されていたライセンスαが解放される（ステップＨ４）。
【００６７】
以上説明した実施形態によれば、ＰＣクラスタ４０に対し複数のＪＯＢを順次的に投入するためのＪＯＢキューに、ユーザ端末１０からのライセンス要求を登録するよう情報処理システム１００を構成したことから、ライセンスを公平に割り当てることができる。
【００６８】
なお、本発明を実施するうえでのライセンスの取り扱いに関しては、図３より、全ての拠点の「本物のライセンス」の総数は、そのライセンスに対応するソフトウェアが実装されたＰＣ４１と同数、あるいは、少ない数である。すなわち、対象のＰＣ４１が７台であれば、「本物のライセンス」の数は７個か、それ以下である。
【００６９】
一方、「仮想のライセンス」の数は、図３の例のように「本物のライセンス」と同数とすることが望ましいが、より多い数であってもよい。これにより、実際には未だ実行されないＪＯＢに対し、予約としてライセンスを割り当てることができる。実際に有効となる「仮想のライセンス」の最大数、すなわちリモートライセンス確保テーブル６６に記録されるライセンス情報の最大件数は、「本物のライセンス」の数以上にはならない。従って、たとえ「本物のライセンス」より多くの「仮想のライセンス」を作成しておいても、ライセンスの取り扱いに支障はない。
【００７０】
これにより、ライセンスを確保できないことによるＪＯＢの待機時間が削減され、結果、ＪＯＢを効率よく処理することができる。また、各拠点の「仮想のライセンス」の数を簡易に増減できることから、例えば、プロジェクトの進行状況に応じて各拠点の「仮想のライセンス数」を調整すれば、処理の効率が高められる。
【図面の簡単な説明】
【００７１】
【図１】本発明に係る実施形態の情報処理システムのブロック図である。
【図２】実施形態のライセンスに関する説明図である。
【図３】実施形態のライセンスに関する説明図である。
【図４】実施形態のキュー管理装置およびＰＣの機能構成を示すブロック図である。
【図５】実施形態のキュー処理のフローチャートである。
【図６】実施形態のライセンス確保処理のフローチャートである。
【図７】実施形態のリモートライセンス確保エージェント処理のフローチャートである。
【図８】実施形態のリモートライセンス確保処理のフローチャートである。
【図９】実施形態のライセンス継続ＪＯＢ実行処理およびライセンス保持ＪＯＢ実行処理のフローチャートである。
【図１０】実施形態のライセンス解放処理のフローチャートである。
【図１１】実施形態のリモートライセンス強制解放処理のフローチャートである。
【図１２】従来のライセンス管理方法の説明図である。
【符号の説明】
【００７２】
１００  情報処理システム
１０（１０Ａ、１０Ｂ）  ユーザ端末
２０（２０Ａ、２０Ｂ）  ログインサーバ
３０（３０Ａ、３０Ｂ）  キュー管理装置
４０  ＰＣクラスタ
４１  ＰＣ
４２  ＮＡＳ
５１  キュー処理
５２  リモートライセンス確保処理
５３  ライセンス保持ＪＯＢ実行処理
５４  ライセンス解放処理
６１  ライセンス確保処理
６２  リモートライセンス確保エージェント処理
６３  ライセンス継続ＪＯＢ実行処理
６４  リモートライセンス解放処理
６５  リモートライセンス要求テーブル
６６  リモートライセンス確保テーブル
【図１】
0004792936.tif 000002
【図２】
0004792936.tif 000003
【図３】
0004792936.tif 000004
【図４】
0004792936.tif 000005
【図５】
0004792936.tif 000006
【図６】
0004792936.tif 000007
【図７】
0004792936.tif 000008
【図８】
0004792936.tif 000009
【図９】
0004792936.tif 000010
【図１０】
0004792936.tif 000011
【図１１】
0004792936.tif 000012
【図１２】
0004792936.tif 000013