次に、本発明の実施形態について図面を参照して詳細に説明する。
図1は、本実施形態の表示制御装置1の構成を表すブロック図である。
図1を参照すると、表示制御装置1は、入力部10と、画面出力部11と、代替情報記憶部12と、障害判定部13を含む。
本実施形態の表示制御装置1は、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。例えば、入力部10と、画面出力部11と、障害判定部13は、例えば、プログラムを記憶する記録媒体からメモリに読み込まれた、各部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサにより実現することができる。また、代替情報記憶部12は、コンピュータが含むメモリやハードディスク装置により実現することができる。あるいは、入力部10と、画面出力部11と、代替情報記憶部12と、障害判定部13の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
表示制御装置1には、端末2と、ポートレット実行装置3が接続されている。
ポートレット実行装置3は、ポートレットコンテナ30を含む。ポートレットコンテナ30は、複数のポートレット(ポートレット301、ポートレット302、…、ポートレット30N、ポートレット401、ポートレット402、…、ポートレット40M)を含む。ポートレットコンテナは、例えば、各ポートレットを実行するための環境の提供、各ポートレットの生成・消滅などの管理、各ポートレットへの要求や応答の仲介等を行う、例えばコンピュータ上で動作するプログラムである。
ポートレット実行装置3は、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。例えば、ポートレットコンテナ30及び各ポートレットは、例えば、プログラムを記憶する記録媒体からメモリに読み込まれた、各々の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサにより実現することができる。あるいは、ポートレットコンテナ30及び各ポートレットの一部又は全部を、各々の機能を実現する専用の回路によって実現することもできる。
入力部10は、各ポートレットから、表示内容を表す表示データを入力する。各表示データは、例えばXML(Extensible Markup Language)やHTML(Hypertext Markup Language)等のマークアップ言語で記述された、マークアップコードであればよい。各表示データは、ポータルページ全体の一部を表すデータであればよい。
画面出力部11は、端末2からの要求に応じて、1個以上のポートレットウィンドウを含むポータルページの表示画面を端末2に対して出力する。画面出力部11が出力する表示画面は、ポータルページの内容を表し、端末2が画面に表示することができるデータである。画面出力部11が出力する表示画面は、例えば、XMLやHTML等のマークアップ言語で表されたデータであればよい。画面出力部11は、各ポートレットから受信した表示データが表す表示内容を、そのポートレットに対応するポートレットウィンドウに表示するよう、表示画面を構成する。
なお、図1の例では、ポートレット301〜ポートレット30Nが、各ポートレットに障害がない状態でポータルページが含むポートレットウィンドウに対応するポートレットである。ポートレット401〜ポートレット40Mは、各ポートレットに障害がない状態でポータルページが含むポートレットウィンドウに、対応するポートレットウィンドウが無いポートレットである。ポートレット301〜ポートレット30Nに障害が無い状態では、入力部10は、ポートレット301〜ポートレット30Nの各々から表示データを入力する。また、この状態では、入力部10は、ポートレット401〜ポートレット40Mのいずれからも表示データを入力する必要はない。
代替情報記憶部12は、ポートレットを特定する情報と、そのポートレットに障害が発生した場合に、そのポートレットの代替として使用する代替ポートレットを特定する情報とを関連付けた、代替情報を記憶する。あるポートレットの代替ポートレットは、元のポートレットと類似したサービス又は同一のサービスを提供するポートレットであればよい。ポートレットを特定する情報(ポートレットID(Identifier))は、例えば、ポートレットを特定することが可能な、ポートレットの名称等の文字列やデータであればよい。以下、あるポートレット(例えばポートレットA)を特定する情報と、ポートレットAの代替ポートレットを特定する情報を含む代替情報を、ポートレットAの代替情報と表記する。
障害判定部13は、各ポートレットに障害が発生しているか否かを判定し、障害が発生しているポートレットを特定する。障害発生部13は、ポートレット301〜ポートレット30Nに障害が発生しているか否かを判定すればよい。障害発生部13は、ポートレット301〜ポートレット30Nだけでなく、ポートレット401〜ポートレット40Mに障害が発生しているか否かを判定してもよい。
障害判定部13は、障害が発生したポートレットを特定する情報を、入力部10に送信する。入力部10は、障害判定部13から受信した情報で特定されるポートレットの代替情報を、代替情報記憶部12から読み出す。入力部10は、障害が発生したポートレットの代わりに、読み出した代替情報から特定した代替ポートレットから、表示データを入力する。
端末2は、画面出力部11が出力する表示画面を、例えばブラウザによって、画面に表示する。
表示制御装置1は、端末2にポータルページの表示画面を出力するポータルシステムとして動作する。端末2が表示制御装置1にポータルページの出力を要求すると、表示制御装置1は、ポータルページが含む各ポートレットに対して、表示データを要求する。要求を受けた各ポートレットは、入力部10に対して表示データを出力する。画面出力部11は、入力部10が受信した各表示データを合成したポータルページを表す表示画面を構成して、端末2に出力する。
ポートレット実行装置3は、ポートレットコンテナ30内で各ポートレットを実行する。
ポートレットコンテナ30は、各ポートレットを実行するための環境を提供し、各ポートレットの生成・消滅などの管理を行う。また、ポートレットコンテナ30は、ポータルシステムとして動作する表示制御装置1から各ポートレットへの要求や、各ポートレットから表示制御装置1に対する応答を仲介する。
図1の例では、表示制御装置1とポートレット実行装置3は別の装置であるが、これらは同じ装置であってもよい。また、ポートレット実行装置3は、1台に限らない。1台がポートレット実行装置3は、複数のポートレットコンテナ30を含んでいてもよい。一つのポートレットコンテナ30が、全てのポートレットを含んでいなくてもよい。
次に、本実施形態の動作について、図面を参照して詳細に説明する。
図2は、本実施形態の表示制御装置1の動作を表すフローチャートである。
図2のフローチャートの開始時は、例えば、端末2による、表示制御装置1に対するポータルページの出力の要求時であればよい。図2のフローチャートの開始時は、あるいは、端末2がポータルページを既に表示している時点であってもよい。
ポータルページは、個々のポートレットから入力した表示データが表す表示画面を表示するポートレットウィンドウを、1個以上含む。ポートレットは、例えば、メッセージや天気予報、株価などを表示するアプリケーションプログラムや、売上げの入力、工数の入力、勤務管理等、何らかのデータを入力するためのアプリケーションプログラムや、検索等、何らかの入力に対する結果を得るためのアプリケーションプログラムである。ポートレットは、ポータルページのポートレットウィンドウ内で動作可能なアプリケーションプログラムであれば、どのようなアプリケーションプログラムであってもよい。
図2を参照すると、まず、障害判定部13が、各ポートレットの障害の有無を判定し、障害があるポートレットを特定する(ステップS10)。障害判定部13は、全てのポートレットの障害の有無を判定するのではなく、対応するポートレットウィンドウがポータルページに含まれるポートレットの障害の有無を判定すればよい。
ポートレットに障害がある状態は、ポートレット側に何らかの原因があるために、利用者がポータルページ上でポートレットを利用することが困難又は不能になった状態のことである。障害判定部13は、例えば表示制御装置1の設計者が、予め決めた基準に基づき、ポートレットに障害があることを判定すればよい。ポートレットの障害には、例えば、ポートレットによる表示データの出力に著しい遅延が生じたり、ポートレットが表示データを出力しなくなったりして、ポートレットの利用が困難または不能な状態になることがある。このような場合、障害判定部13は、表示制御装置1から各ポートレットへの表示データの要求後、予め決められた所定時間内に表示データを入力部10に入力しなかったポートレットを、障害があるポートレットと判定すればよい。
あるいは、障害判定部13は、例えば、ポートレットコンテナ30から障害が発生したポートレットを特定する通知を受信した場合に、その通知で特定されるポートレットに障害が発生したと判定してもよい。この場合、ポートレットコンテナ30は、ポートレットコンテナ30に含まれるポートレットに障害が発生したことを検出し、障害が発生したポートレットを特定する通知を障害判定部13に送信するよう設計されていればよい。
障害があるポートレットが存在しない場合(ステップS11、N)、入力部10は、対応するポートレットウィンドウがポータルページに含まれる各ポートレットから、表示データを入力し、ステップS16に進む。
障害があるポートレットが存在する場合(ステップS11、Y)、入力部10は、代替情報記憶部12から、障害があるポートレットの代替情報を読み出す(ステップS13)。
図3は、代替情報記憶部12が記憶する代替情報の例を表す図である。
図3の各行が、ポートレットIDによって特定されるポートレットの代替情報を表す。代替情報は、ポートレットを特定するポートレットIDと、そのポートレットIDで特定されるポートレットの代替ポートレットを特定する代替ポートレットIDを含んでいればよい。代替情報は、ポートレットの名称や代替ポートレットの名称などの他の情報を含んでいてもよい。前述のように、ポートレットIDや代替ポートレットIDは、ポートレットを特定できる情報であればよい。ポートレットIDや代替ポートレットIDは、例えばポートレットの名称であってもよい。
代替情報記憶部12が記憶する各ポートレットの代替情報は、例えば表示制御装置1の管理者が、予め作成して代替情報記憶部12に格納したものであればよい。代替情報記憶部12は、端末2の全ての利用者に対して同じ代替情報を記憶していればよい。あるいは、代替情報記憶部12は個々の利用者や利用者のグループを特定する情報(利用者情報)に対応付けられた利用者ごとの代替情報を記憶し、入力部10は端末2から利用者情報を受信し、受信した利用者情報に応じた代替情報を読み出してもよい。代替情報記憶部12は、必ずしも全てのポートレットの代替情報を記憶する必要はない。例えば、他のポートレットと連係して動作しており、代替ポートレットとして動作可能なポートレットが存在しないなどの理由で、代替ができないポートレットの代替情報は、存在していなくてよい。
各ポートレットの代替ポートレットは、例えばそれぞれのポートレットと同一カテゴリのポートレットから、予め適宜選択しておいたポートレットであればよい。
入力部10は、障害があるポートレットの代替情報に含まれる代替ポートレットIDにより、その障害があるポートレットの代替ポートレットを特定する(ステップS14)。
入力部10は、障害のないポートレットと、障害のあるポートレットの代替ポートレットから、表示データを入力する(ステップS15)。
画面出力部11は、入力した表示データを合成した、ポータルページの表示画面を生成する(ステップS16)。
画面出力部11は、障害のあるポートレットが存在した場合、その障害があるポートレットの代替ポートレットから入力した表示データが表す表示内容を表示する。画面出力部11は、代替ポートレットから入力した表示データを、障害があるポートレットのポートレットウィンドウに表示しても、ポータルページに生成した別のポートレットウィンドウに表示してもよい。なお、画面出力部11は、障害があるポートレットのポートレットウィンドウに代替ポートレットから入力した表示データが表す表示内容を表示しない場合、そのポートレットウィンドウに障害が発生したことを示す表示を行ってもよく、何も表示しなくてもよい。
画面出力部11は、生成した表示画面を端末2に対して出力する(ステップS17)。
なお、障害判定部13は、障害があったポートレットの障害が解消したことを判定した場合、入力部10に、障害があったポートレットの障害が解消したことを表す通知を行えばよい。通知を受信した入力部10は、障害が解消したポートレットの代替ポートレットから表示データを入力している場合は代替ポートレットからの入力を中止し、障害が解消したポートレットから表示データを入力すればよい。障害判定部13は、例えば、ポートレットコンテナ30から、障害があったポートレットが復旧したことを表すイベントを受診した場合、そのポートレットの障害が解消したことを判定すればよい。この場合、ポートレットコンテナ30は、各ポートレットに発生した障害が解消した場合に、障害判定部13にイベントを通知する設計にしておけばよい。また、障害判定部13は、例えば、障害が発生したポートレットが正常動作するか定期的に確認を行い、正常動作することが確認できた場合、障害が解消したと判定してもよい。
図4は、ポータルページにポートレットウィンドウが含まれる各ポートレットに障害がない場合の、ポータルページの例を表す図である。
図5は、図4の「ポートレットC」に障害が発生し、ポートレットCの代替ポートレットから入力した表示データを、ポートレットCのポートレットウィンドウに表示した場合の、ポータルページの例を表す図である。
図6は、図4の「ポートレットC」に障害が発生し、ポートレットCの代替情報が存在せず、ポートレットCのポートレットウィンドウに障害が発生したことを示す表示した場合の、ポータルページの例を表す図である。
以上で説明した本実施形態には、ポータルページのいずれかのポートレットウィンドウに表示を行うポートレットに障害が発生した場合に、障害の発生によるユーザビリティの低下を抑制できるという効果がある。
その理由は、入力部10が、表示内容を表す表示データを、障害があると障害判定部13が判定したポートレットの代わりに、そのポートレットの代替ポートレットから入力するからである。出力部10は、正常なポートレットと代替ポートレットから入力した表示データを合成してポータルページの表示画面を構成し、出力する。従って、ポータルページの利用者は、障害があるために利用できなくなったポートレットの代わりに、そのポートレットの代替ポートレットを利用することが可能になる。
次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。
図7は、本実施形態の表示制御装置1Aの構成を表す図である。
図7の表示制御装置1Aは、図1に示す第1の実施形態の表示制御装置1の構成に加えて、イベント入力部14と、入力イベント記憶部15と、代替入力ポートレット実行部16と、ポートレット情報記憶部17と、ポートレット選択部18を含む。
本実施形態の表示制御装置1Aは、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。例えば、入力部10と、画面出力部11と、障害判定部13と、イベント入力部14と、代替入力ポートレット実行部16と、ポートレット選択部18は、例えば、プログラムを記憶する記録媒体からメモリに読み込まれた、各部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサにより実現することができる。また、代替情報記憶部12と、入力イベント記憶部15と、ポートレット情報記憶部17は、コンピュータが含むメモリやハードディスク装置により実現することができる。あるいは、入力部10と、画面出力部11と、代替情報記憶部12と、障害判定部13と、イベント入力部14と、入力イベント記憶部15と、代替入力ポートレット実行部16と、ポートレット情報記憶部17と、ポートレット選択部18の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
イベント入力部14は、表示画面を表示する端末2から入力イベントを入力して、入力イベントの入力先のポートレットを特定し、特定したポートレットに入力イベントを表す入力イベント情報を送信する。
代替入力ポートレット実行部16は、1個以上のポートレット(ポートレット161〜ポートレット16L)を実行する。代替入力ポートレット実行部16は、ポートレット161〜ポートレット16Lのポートレットコンテナであればよい。この場合、以下の説明における、代替入力ポートレット実行部16が実行するポートレットは、ポートレットコンテナであるポートレット実行部16内で実行されるポートレットのことである。
ポートレット161〜ポートレット16Lは、ポートレット実行装置3が実行するポートレットのうち、入力イベント情報を受信するポートレットのいずれかと、同じ入力イベント情報を受信するよう設計されたポートレットである。
代替情報記憶部12は、ポートレット実行装置3が実行する、入力イベント情報を受信するポートレットと、そのポートレットと同じ入力イベント情報を受信する、代替入力ポートレット実行部16が実行するポートレットとを関連付ける代替情報を記憶する。例えば表示制御装置1Aの管理者が、ポートレット実行装置3が実行するポートレットと、代替入力ポートレット実行部16が実行するポートレットとを関連付ける代替情報を予め作成して、代替情報記憶部12に格納しておけばよい。
入力イベント記憶部15は、代替入力ポートレット実行部16が実行するポートレットが、イベント入力部14を介して受信した入力イベント情報を記憶する。
障害があると障害判定部13が判定したポートレットが、入力イベント情報を受信するポートレットであるか否かにかかわらず、入力部10は、第1の実施形態の入力部10と同様に、そのポートレットの代替情報を代替情報記憶部12から読み出す。代替情報によって特定される代替ポートレットが、代替入力ポートレット実行部16が実行するポートレットである場合も同様に、入力部10は、障害があると判定されたポートレットの代わりに、代替ポートレットから表示データを入力する。この場合、画面出力部11が出力する表示画面が表すポータルページには、代替入力ポートレット実行部16が実行するポートレットのポートレットウィンドウが含まれる。
イベント入力部14が特定した、入力イベントの入力先のポートレットが、代替入力ポートレット実行部16が実行するポートレットである場合も同様に、イベント入力部14は、入力イベント情報を入力先のポートレットに送信する。
入力イベント情報を受信した、代替入力ポートレット実行部16が実行するポートレットは、受信した入力イベント情報を、自身が格納したことが分かる形で入力イベント記憶部15に格納すればよい。
障害判定部13は、障害があったポートレットの障害が解消したことを判定した場合、そのポートレットの代替ポートレットが、代替入力ポートレット実行部16が実行するポートレットであるなら、代替ポートレットに障害が解消したことを表す通知を行う。この場合、障害判定部13は、障害が解消したことを表す通知の代わりに、受信した入力イベント情報を、障害が解消したポートレットに送信する指示を、代替ポートレットに送信してもよい。
代替入力ポートレット実行部16が実行する代替ポートレットは、障害判定部13から障害が解消したことを表す通知を受信すると、入力イベント情報を入力イベント記憶部15から読み出し、障害があったポートレットに送信する。以下では、入力イベント情報を受信し入力イベント記憶部15に格納し、障害判定部13から障害が解消したことを表す通知を受信するとこのような動作をする代替ポートレットを、代替入力ポートレットと表記する。
ポートレット情報記憶部17は、各ポートレットのカテゴリを表すカテゴリ情報を、ポートレットを特定する情報と関連付けて記憶する。
ポートレット選択部18は、ポートレット情報記憶部17が記憶する、ポートレットを特定する情報に関連付けられたカテゴリ情報を読み出し、各ポートレットの代替ポートレットを同じカテゴリのポートレットから選択し、代替情報を生成する。ポートレット選択部18は、生成した代替情報を、代替情報記憶部12に格納する。ポータルページにポートレットウィンドウが含まれるポートレットに障害があると障害判定部13が判定した場合、入力部10は、ポートレット選択部18が代替情報記憶部12に格納した代替情報を読み出して、代替ポートレットを特定することができる。
入力部10は、ポートレット実行装置3が実行する各ポートレットに加えて、代替入力ポートレット実行部16が実行するポートレットからも、表示データを入力する。
なお、図7では、表示制御装置1Aが代替入力ポートレット実行部16を含んでいる。さらに、表示制御装置1Aとポートレット実行装置3は別の装置である。しかし、ポートレット実行装置3が、代替入力ポートレット実行部16を含んでいてもよい。また、表示制御装置1Aとポートレット実行装置3は、同じ装置であってもよい。代替入力ポートレット実行部16とポートレットコンテナ30が同じ装置に含まれる場合、代替入力ポートレット実行部16とポートレットコンテナ30は、同一のポートレットコンテナであってもよい。図7は、代替入力ポートレットとして動作するポートレットを代替入力ポートレット実行部16が実行し、それ以外のポートレットをポートレット実行装置3が実行する例を表している。
次に、本実施形態の表示制御装置1Aの動作について、図面を参照して詳細に説明する。
図8は、表示制御装置1Aが、各ポートレットのカテゴリ情報を使用して代替ポートレットを選択し、代替情報を生成する動作を表すフローチャートである。
図8を参照すると、まず、ポートレット選択部18が、ポートレット情報記憶部17から、各ポートレットのカテゴリ情報を読み出す(ステップS20)。
図9は、ポートレット情報記憶部17が記憶する、各ポートレットのカテゴリ情報の例を表す図である。なお、ポートレット情報記憶部17は、ポートレットを特定する情報に関連付けて、そのポートレットのカテゴリ情報だけを記憶するのではなく、図9の例のように、カテゴリ情報に加えてカテゴリ情報以外の情報を含むメタデータを記憶していてもよい。
次に、ポートレット選択部18は、各ポートレットの代替ポートレットを、同じカテゴリのポートレットの中から選択する(ステップS21)。
なお、ポートレット選択部18は、既に代替情報が代替情報記憶部12に記憶されているポートレットの代替ポートレットを選択する必要はない。
また、ポートレット選択部18は、カテゴリ情報によらない、他の方法で各ポートレットの代替ポートレットを選択してもよい。ポートレットを選択する方法には、例えば、ポートレット選択部18が、利用者にポートレットを特定可能な情報を提示してキーワードを入力させ、入力したキーワードが表示内容に最もマッチするポートレットを選択する方法がある。あるいは、ポートレット選択部18は、ポートレットの表示内容に対する他のポートレットの類似の程度を表す類似度を算出し、そのポートレットに対する類似度が最も高いポートレットを選択し、選択したポートレットをそのポートレットの代替ポートレットにしてもよい。ポートレット選択部18は、ポートレットに障害が発生した場合にアクセスが最も増加するポートレットを、障害が発生したポートレットの代替ポートレットにしてもよい。ポートレット選択部18は、代替ポートレットを選択しようとしているポートレットと同一カテゴリのポートレットが複数存在する場合、それらの複数のポートレットから、以上のカテゴリ情報によらない方法によって代替ポートレットを選択してもよい。
ポートレット選択部18は、一つの代替ポートレットを選択するのではなく、前述のいずれかの方法で複数の代替ポートレットの候補を選択して利用者に提示してもよい。ポートレット選択部18は、提示したポートレットの中から利用者が選択したポートレットを、代替ポートレットにすればよい。ポートレット選択部18が代替ポートレットの候補として提示するポートレットは、自動的に選択するのではなく、過去の代替ポートレットとしての利用実績やアンケートの結果に基づき、予め選択したポートレットであってもよい。
なお、図8の動作は、ポートレット選択部18が事前に各代替情報を生成し、代替情報記憶部12に格納しておく場合の動作を表している。しかし、ポートレット選択部18は、障害判定部13がいずれかのポートレットに障害が発生したことを判定してから、代替ポートレットの複数の候補を利用者に提示するなどして、障害が発生したポートレットの代替ポートレットを利用者に選択させてもよい。ポートレット選択部18は、障害が発生したポートレットを特定する情報と選択されたポートレットを特定する情報から生成した代替情報を、代替情報記憶部12に格納すればよい。入力部10は、その代替情報を読み出して、障害が発生したポートレットの代替ポートレットを特定すればよい。
ポートレット選択部18は、次に、ポートレットを特定する情報と、選択した代替ポートレットを特定する情報から、代替情報を生成する(ステップS22)。
ポートレット選択部18は、生成した代替情報を、代替情報記憶部12に格納する(ステップS23)。
次に、障害が発生したポートレットの代わりに、障害が発生したポートレットの代替ポートレットから表示データを入力し、入力した表示データを合成したポータルページを表示する、表示制御装置1Aの動作について説明する。
この場合の動作は、図2に示す第1の実施形態の表示制御装置1の動作と同じである。従って、詳細な説明は省略する。
ただし、ステップS13で入力部10が読み出す代替情報には、代替入力ポートレット実行部16が実行するポートレットが代替ポートレットであるものが存在する。
図10は、本実施形態の代替情報記憶部12が記憶する代替情報の例を表す図である。図10の例では、ポートレット301の代替ポートレットは、代替入力ポートレット実行部16が実行するポートレット161である。
次に、表示制御装置1Aが端末2から入力イベント情報を受信する動作について説明する。
図11は、この場合の本実施形態の表示制御装置1Aの動作を表すフローチャートである。
図11の開始時において、図2に示す動作の結果、画面出力部11は表示画面を出力し、端末2はポータルページを表示している。
いずれかのポートレットに障害が生じ、障害が生じたそのポートレットの代替ポートレットが存在するのであれば、ポータルページは、その代替ポートレットが出力する表示データを表示するポートレットウィンドウを含んでいる。障害が生じたポートレットが、入力イベント情報を受信するポートレットであるなら、そのポートレットの代替ポートレットは、代替入力ポートレット実行部16が実行する代替入力ポートレットである。この場合、端末2が表示するポータルページは、障害が生じたポートレットの表示データの代わりに表示データを入力する、代替入力ポートレットのポートレットウィンドウを含む。そのポートレットウィンドウには、代替入力ポートレットの表示データが合成されて表示されている。
端末2の利用者は、何らかの入力の操作を受け付けるポートレットを使用したいが、そのポートレットには障害が発生している場合、そのポートレットの代わりに、代替入力ポートレットに対して入力の操作を行えばよい。端末2の利用者が、ブラウザが表示するポータルページに対して何らかの入力の操作を行うと、端末2は、その入力の操作を表す情報と入力の操作の対象であるポートレットを特定する情報を含む入力イベント情報を、表示制御装置1Aに対して送信する。表示制御装置1Aのイベント入力部14が、その入力イベント情報を入力する。
図11を参照すると、まず、イベント入力部14が、端末2から入力イベント情報を入力する(ステップS30)。
入力イベント情報は、例えば、キーボードのキーの押下やマウスの移動やマウスボタンの押下のような、端末2の図示しない入力部を介した利用者による操作の情報である。また、入力イベント情報は、文字列を入力するための入力フォームへのキーボードによる入力の情報や、ブラウザに表示されたボタンの押下、ラジオボタンやチェックボックス、プルダウンメニューからの選択などのマウスによる入力の情報であってもよい。この場合、入力イベント情報は、入力された文字列や、マウスで押下したボタンの情報、ボタンやチェックボックス、プルダウンメニュー等からの選択結果の情報を含んでいればよい。入力イベント情報は、さらに、入力された文字列や選択結果が対応する、GUI部品(入力フォーム、ボタン、チェックボックス、プルダウンメニュー等)を特定する情報を含んでいればよい。GUI部品を特定する情報は、GUI部品を特定できればどのような情報であっても構わない。例えば、入力フォームを特定する情報は、入力フォームを特定できるのであれば、フォームタイトルや、入力フォームを表示するポートレットの内部で予め定められた変数名等であってよい。
入力イベント情報を入力したイベント入力部14は、その入力イベントの入力先のポートレットを特定する(ステップS31)。
イベント入力部14が入力イベントの入力先のポートレットを特定する方法は、既存の任意の方法でよい。例えば、利用者がブラウザに表示された入力フォームへの入力やプルダウンメニューの選択を行った場合、イベント入力部14は、その入力フォームやプルダウンメニュー等のGUI部品の表示データを出力したポートレットを入力先のポートレットとすればよい。イベント入力部14は、ポータルページを表示する、端末2のブラウザから、入力の操作が行われたポータルページ上の場所の情報を受信し、その場所を含むポータルウィンドウに対応するポートレットを、入力先のポートレットとしてもよい。端末2のブラウザが、入力イベント情報に入力先のポートレットを特定する情報を関連付けて、イベント入力部14に送信してもよい。この場合、画面出力部11が出力する表示画面が、各ポートレットウィンドウに対応する、ポートレットを特定する情報を含んでいればよい。
イベント入力部14は、特定した入力先のポートレットに、入力したイベントを送信する(ステップS32)。
本実施形態では、入力イベントの入力先のポートレットは、ポートレット実行装置3が実行するポートレット(代替入力ポートレットでないポートレット)、又は、代替入力ポートレット実行部16が実行するポートレット(代替入力ポートレット)のいずれかである。
入力イベントの入力先が、ポートレット実行装置3が実行しているポートレットであれば、イベント入力部14は、入力イベント情報をポートレット実行装置3が実行するポートレットに送信する。入力イベントの入力先が、後述の代替入力ポートレット実行部16が実行しているポートレットであれば、イベント入力部14は、入力イベント情報を代替入力ポートレット実行部16が実行する代替入力ポートレットに送信する。
いずれの代替入力ポートレットも、イベント入力部14が送信した入力イベント情報を受信しない場合(ステップS33、N)、入力イベントの入力先のポートレットは、ポートレット実行装置3が実行するポートレットである。この場合、イベント実行部14は、ポートレット実行装置3が実行するポートレットに入力イベント情報を送信し、ポートレット実行装置3が実行する入力先のポートレットが、入力イベント情報を受信して(ステップS40)、処理を終了する。
いずれかの代替入力ポートレットが、イベント入力部14が送信した入力イベント情報を受信した場合(ステップS33、Y)、入力イベント情報を受信した代替入力ポートレットは、受信した入力イベント情報を入力イベント記憶部15に格納する(ステップS34)。
障害が生じていたポートレットの障害が解消したことを、障害判定部13が判定するまで、代替入力ポートレットは待機を継続する(ステップS35、N)。なお、代替入力ポートレットが待機中に、その代替入力ポートレットへの別の入力イベント情報が入力された場合、表示制御装置1AはステップS30〜ステップS34の動作を繰り返せばよい。
障害判定部13は、障害が生じていたポートレットの障害が解消したことを判定すると(ステップS35、Y)、そのポートレットに生じていた障害が解消したことを表す通知を、そのポートレットの代替入力ポートレットに対して行う(ステップS36)。代替入力ポートレット実行部16がポートレットコンテナとして動作しているなら、障害判定部13は、代替入力ポートレット実行部16を介して、代替入力ポートレットへの通知を行えばよい。
障害判定部13は、少なくとも、代替情報記憶部12が記憶する、障害が解消したポートレットの代替情報から特定した代替ポートレットが、代替入力ポートレット実行部16が実行するポートレット(代替入力ポートレット)である場合に、前述の通知を行えばよい。この場合、例えば、代替情報が、代替ポートレットが代替入力ポートレットであるか否かを表す情報を含んでいればよい。あるいは、例えば、ポートレット情報記憶部17が記憶する、代替ポートレットを含む各ポートレットの情報が、そのポートレットが代替入力ポートレットであるか否かを表す情報を含んでいてもよい。障害判定部13は、特定した代替ポートレットの情報をポートレット情報記憶部17から読み出して、特定した代替ポートレットが代替入力ポートレットであるか否かを判定すればよい。
障害判定部13は、さらに、入力部10に対して、障害が解消したポートレットを特定する情報を送信すればよい。
入力部10は、障害が解消したポートレットの代替ポートレットではなく、障害が解消したポートレットから表示データを入力するよう、表示データの入力元を切り替える。画面出力部11は、代替入力ポートレットではなく、障害が解消したポートレットから入力した表示データを、表示画面に合成して出力する。
前述の通知を受信した代替入力ポートレットは、入力イベント記憶部15に格納した入力イベント情報を読み出す(ステップS37)。
入力イベント情報を読み出した代替入力ポートレットは、読み出した入力イベント情報を、障害が解消したポートレットに送信する(ステップS38)。障害が解消したポートレットは、代替入力ポートレットから、入力イベント情報を受信する(ステップS39)。
各代替入力ポートレットは、読み出した入力イベント情報の送信先となる、障害が解消したポートレットを特定する情報を、予め保持していればよい。代替入力ポートレットは、障害が解消したポートレットへの入力イベント情報の送信を、イベントを送ることで行えばよい。
一般に、ポータルシステムが、ポートレット間のイベントの送受信を仲介する。本実施形態では、イベント入力部14が、代替入力ポートレットから、読み出した入力イベント情報を送信するイベントを受け取り、送信先であるポートレットに対して送信すればよい。
イベントの配布による複数のポートレット間の連携については、JSR286(Java(登録商標) Specification Request 286、又は、Java Portlet Specification 2.0)で規定されている。代替入力ポートレットは、この規程に基づいた、障害が解消したポートレットに入力イベント情報を送信するイベントを発行すればよい。この場合、代替入力ポートレットは、このイベントを発行できるように、発行するイベントの定義にこのイベントの定義を含んで設計されていればよい。更に、このイベントの配布先となるポートレットは、このイベントを受信できるよう、受信するイベントの定義にこのイベントの定義を含んで設計されていればよい。また、イベント入力部14は、各代替入力ポートレットが、それぞれの代替入力ポートレットに対応するポートレットに送信する入力イベントを、中継するよう設計されていればよい。
入力イベント情報を送信するイベントを受信したポートレットは、入力部10及び画面出力部11を介して、入力イベント情報で表される入力を有効にするか確認を求める表示を、1件1件端末2に行い、有効にするイベント情報を利用者に選択させてもよい。さらに、入力イベント情報で表される入力を有効にしたポートレットは、その入力による実行結果を端末2に表示してもよい。
以上で説明した本実施形態には、第1の実施形態の効果に加えて、ポータルページのいずれかのポートレットウィンドウで入力イベントを受信するポートレットに障害が発生した場合に、障害の発生によるユーザビリティの低下を抑制できるという効果がある。
その理由は、入力イベントを受信するポートレットに障害が生じた場合、代替入力ポートレット実行部16が実行する、障害が生じたポートレットと同じ入力イベントを受信する代替入力ポートレットから、表示内容を表す表示データを入力するからである。代替入力ポートレットは、受信した入力イベント情報を入力イベント記憶部15に格納する。障害が生じたポートレットの障害が解消した後、代替入力ポートレットは、入力イベント記憶部15から入力イベント情報を読み出し、障害が解消したポートレットに送信する。このことにより、入力イベントを受信するポートレットに障害が生じている間でも、そのポートレットに対する入力を行うことができる。
次に、第2の実施形態の変形例について説明する。
本変形例の構成は、図7の第2の実施形態の構成と同じである。
本変形例の、入力イベントを受信する各ポートレットは、入力部10及び画面出力部11介して、端末2に入力フォームを表示し、端末2の利用者が入力フォームに入力したデータを含む入力イベント情報を、イベント入力部14を介して、端末2から受信する。各ポートレットは、受信したデータを入力として、所定の処理を行う。
ポートレット情報記憶部17は、入力フォームを表示してデータを受信する各ポートレットの、入力フォームを特定する情報を含む入力フォーム情報を、ポートレットを特定する情報に関連付けて記憶する。なお、入力フォームを特定する情報は、各ポートレットが表示する各入力フォーム内で、入力フォームを特定できる情報であればよい。
図12は、入力フォーム情報の例を表す図である。図12の例では、ポートレットを特定する情報(ポートレットID)は、ポートレットの名称である。入力フォームを特定する情報は、入力された文字列をポートレットが格納する記憶領域に対応する変数名である。
図12の例では、ポートレットBとポートレットCが、文字列を含む入力イベントを受信するポートレットである。ポートレットBは、フォームタイトルがそれぞれ「製品ID」及び「個数」である2個の入力フォームを表示し、これら入力フォームに入力された文字列を、名称がそれぞれ「productId」及び「number」である変数で表される記憶領域に格納する。ポートレットCは、フォームタイトルがそれぞれ「入場時間」及び「退場時間」である2個の入力フォームを表示し、これら入力フォームに入力された文字列を、名称がそれぞれ「enter」及び「Exit」である変数で表される記憶領域に格納する。ポートレットB及びポートレットCは、ポートレット実行装置3で実行されるポートレットである。これらのポートレットは、入力部10及び画面出力部11を介して、端末2の画面に入力フォームの表示を行う。また、これらのポートレットは、端末2に表示されたそれぞれの入力フォームに入力された文字列を、イベント入力部14を介して受信する。
障害判定部13は、入力フォームを表示して文字列を受信するポートレットに障害が生じたことを判定すると、まず、障害が発生したポートレットを特定する情報を含む障害発生情報を、代替入力ポートレット実行部16に送信する。
代替入力ポートレット実行部16は、障害発生情報を受信すると、障害が発生したポートレットの入力フォーム情報を読み出す。代替入力ポートレット実行部16は、読み出した入力フォーム情報から、障害が発生したポートレットの、次に述べる機能を備えた代替入力ポートレット(ダミーポートレット)を生成し、実行する。ダミーポートレットは、入力フォーム情報に含まれる、障害が発生したポートレットの入力フォームのフォームタイトルと、同じフォームタイトルの入力フォームを表示する。ダミーポートレットは、表示した入力フォームに入力されたデータを、イベント入力部14を介して受信する。ダミーポートレットは、さらに、受信したデータを、そのデータが殿入力フォームに対応するか特定できるように、例えば入力フォームを特定する情報に関連付けて、入力イベント記憶部15に格納する。ダミーポートレットは、前述の障害が発生したポートレットの障害が解消した通知を受信すると、第2の実施形態の代替入力ポートレットと同様に、入力イベント格納部15に格納したデータを読み出し、障害が解消したポートレットに送信する。このようにして、ダミーポートレットは、障害が発生したポートレットの代わりに、端末2の使用者が入力したデータを受信し、ポートレットに生じた障害が解消した後、受信したデータを障害が解消したポートレットに送信する。
代替入力ポートレット実行部16は、障害が発生した前述のポートレットの代替ポートレットが、生成したポートレットである代替情報を生成し、代替情報記憶部12に格納する。
代替入力ポートレット実行部16が生成した代替情報を代替情報記憶部12に格納した後、障害判定部13は、障害が発生したことを判定したポートレットを特定する情報を、入力部10に送信する。
入力部10は、代替入力ポートレット実行部16が格納した代替情報を読み出し、代替入力ポートレット実行部16が生成した前述のダミーポートレットを、障害が発生したポートレットの代替ポートレットにする。
次に、本変形例の動作について説明する。
本変形例では、図2のステップS11とステップS13の間で、まず障害判定部13が、障害が発生したポートレットを特定する情報とそのポートレットに障害が生じたことを表す情報を、代替入力ポートレット実行部16に送信する。
これらの情報を受信した代替入力ポートレット実行部16は、障害が発生したポートレットの入力フォーム情報を読み出し、その入力フォーム情報から、前述のダミーポートレットを生成する。代替入力ポートレット実行部16は、障害が発生したポートレットの代替ポートレットが、生成した前述のダミーポートレットである代替情報を生成し、代替情報記憶部12に格納する。
その後の動作は、図2及び図11の動作と同じである。ただし、代替入力ポートレット実行部16は、ステップS38の終了後、生成したダミーポートレットを削除し、そのダミーポートレットが代替ポートレットである代替情報を代替情報記憶部12から削除すればよい。
次に、第3の実施形態について図面を参照して詳細に説明する。
図13は、本実施形態の構成を表す図である。
図13を参照すると、本実施形態の表示制御装置1は、表示画面の一部分に表示する表示内容を表す表示データを出力するポートレットから、前記表示データを入力する入力手段10と、入力した前記表示データから表示内容を生成し、生成した前記表示内容を含む前記表示画面を出力する画面出力手段11と、前記ポートレットを特定する情報と、当該ポートレットの代替として動作する代替ポートレットを特定する情報とを関連付ける代替情報を記憶する12代替情報記憶手段と、前記ポートレットの障害の有無を判定し、障害がある場合前記入力手段に通知する障害判定手段12とを含み、前記入力手段10は、前記ポートレットに障害がある場合、障害がある前記ポートレットの代わりに、記代替情報で当該ポートレットを特定する情報に関連付けられている情報で特定される代替ポートレットから表示データを入力する。
以上で説明した本実施形態には、ポータルページのいずれかのポートレットウィンドウに表示を行うポートレットに障害が発生した場合に、障害の発生によるユーザビリティの低下を抑制できるという効果がある。
その理由は、入力部10が、表示内容を表す表示データを、障害があると障害判定部13が判定したポートレットの代わりに、そのポートレットの代替ポートレットから入力するからである。出力部10は、正常なポートレットと代替ポートレットから入力した表示データを合成してポータルページの表示画面を構成し、出力する。従って、ポータルページの利用者は、障害があるために利用できなくなったポートレットの代わりに、そのポートレットの代替ポートレットを利用することが可能になる。