情報処理装置、情報処理方法及びプログラム
【課題】コンポーネントに特別な実装を追加する事無く、通信制御ミドルウェアで、コンポーネント間で依頼と応答との通信が正常に行われた場合でも、処理が正常に進行していない状況を検出することを目的とする。
【解決手段】複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、複数のアプリケーションコンポーネントのライフサイクルを管理し、複数のアプリケーションコンポーネントの通信間隔のばらつきから故障発生を判断するライフサイクル管理手段と、を有することによって課題を解決する。
【解決手段】複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、複数のアプリケーションコンポーネントのライフサイクルを管理し、複数のアプリケーションコンポーネントの通信間隔のばらつきから故障発生を判断するライフサイクル管理手段と、を有することによって課題を解決する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、アプリケーションコンポーネント以下、コンポーネントという同士が通信する通信制御ミドルウェアとして、コンポーネントの状態をコンポーネントライフサイクルに渡って管理する方法は一般的である。このライフサイクル管理は一般に、システムを構成する各コンポーネントの状態をシステム状態に関連付けられる際に用いられる。例えば、障害発生時にアプリケーションを再起動する方法としては特許文献1が挙げられる。一方、システムにおける故障の検出手段については特許文献2が挙げられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−157386号公報
【特許文献2】特開平8−44684号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のライフサイクル管理では、特許文献2に示されるように故障を検出した事をきっかけとして、特許文献1に示されるようにシステムを再起動する処理を実現できない。これには以下の問題があった。
通信制御ミドルウェアでは故障の発生を検出することができない。コンポーネント間のコマンド送受信が成功している場合、通信制御ミドルウェアでコマンドの実行が正常に行われたか判断できない。その為、故障検出の仕組みをコンポーネントに実装する必要があった。
【0005】
本発明はこのような問題点に鑑みなされたもので、コンポーネントに特別な実装を追加する事無く、通信制御ミドルウェアで、コンポーネント間で依頼と応答との通信が正常に行われた場合でも、処理が正常に進行していない状況を検出することを目的とする。
【課題を解決するための手段】
【0006】
そこで、本発明の情報処理装置は、複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの通信間隔のばらつきから故障発生を判断するライフサイクル管理手段とを有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、コンポーネントに特別な実装を追加する事無く、通信制御ミドルウェアで、コンポーネント間で依頼と応答との通信が正常に行われた場合でも、処理が正常に進行していない状況を検出することができる。
【図面の簡単な説明】
【0008】
【図1】システム構成の一例を示す図である。
【図2】図1のOS上位層を論理的に拡大表示した図である。
【図3】UIコンポーネントとジョブ制御コンポーネントとのメッセージ送受信の一例を説明するための図である。
【図4】コンポーネント情報保存部について説明するための図である。
【図5】状態変化通知と、ジョブ処理の流れと、を説明するための図である。
【図6】一般的なシステムにおけるコンポーネント構成の一例を示す図である。
【図7】キーコンポーネントが多くの他のコンポーネントと通信するイメージの一例を示す図である。
【図8】図1や図2のシステムにおける、4つのコンポーネントの関係の一例を示す図である。
【図9】4つのコンポーネントが共有データ管理コンポーネントを介してデータを共有しながら、処理を進めていく様子の一例を示す図である。
【図10】共有データコンポーネントと他のコンポーネントと通信制御のシーケンスの一例を示す図である。
【図11】キーコンポーネント特定の流れを表す図である。
【図12】キーコンポーネントを特定する概念を表す図である。
【図13】故障のない処理の通信履歴と状態変化の関係を表す図である。
【図14】コンポーネントBに着目した表であり、故障コンポーネントを特定する概念を表す図である。
【図15】故障コンポーネント特定部の処理の流れを示す図である。
【図16】故障通知の詳細を説明するための図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づいて説明する。
【0010】
<実施形態1>
図1は、システム構成の一例を示す図である。図1では、システム1601が複数のコンピュータを有している。CPU1 1602とOS1 1604とを有するコンピュータは、ユーザにインタフェースを提供し、CPU2 1606とOS2 1608とを有するコンピュータは、デバイスの制御を司る。各々のコンピュータシステムは通信制御物理層1603、1607によって物理的に接続されている。また、各々のコンピュータシステム上には通信制御ミドルウェア1605、1609が動作している。この通信制御ミドルウェア1605、1609は、アプリケーションコンポーネント以下、コンポーネントというに対し、通信制御層以下の物理的なシステム構成を隠蔽している。ユーザインタフェースを司るCPU1 1602とOS1 1604とのコンピュータシステムの通信制御ミドルウェア1605の上にはUIコンポーネント102が動作している。装置の制御を司るCPU2 1606とOS2 1608とのコンピュータシステムの通信制御ミドルウェア1609の上には3つのコンポーネントが動作している。即ち、ジョブ制御コンポーネント103とデバイス制御コンポーネント104と共有データ管理コンポーネント105とが動作している。システム1601は、ユーザ1610がUIコンポーネント102を操作し、システム内の4つのコンポーネントが協調動作することでユーザにサービスを提供する。4つのコンポーネントとは、UIコンポーネント102、ジョブ制御コンポーネント103、デバイス制御コンポーネント104、共有データ管理コンポーネント105である。
なお、本実施形態では、コンピュータシステムは、1つの情報処理装置コンピュータに実装されているものとして説明を行う。情報処理装置は、通常のコンピュータのハードウェア構成を有する。情報処理装置のCPUが、RAM、ROM、HDD等の記憶装置に記憶されているプログラムに基づき処理を実行することによって、各コンピュータシステムの構成、及び後述する各コンピュータシステムにおける処理が実現される。なお、CPUが処理を実行する際に利用されるデータ等は、記憶装置に記憶されている。
【0011】
OS上位層1611の点線で囲まれた領域について図2を用いて詳説する。図2は、図1のOS上位層1611を論理的に拡大表示した図である。
通信制御ミドルウェア1605、1609は、通信制御部101とライフサイクル管理部112とを有している。4つのコンポーネントが通信制御部101とライフサイクル管理部112とに論理的に接続されている。これらの論理接続は各コンポーネントが通信ミドルウェアに対して行う初期化処理にて確立される。コンポーネント同士は通信制御部101を介してメッセージの送受信を行い、コンポーネント状態管理部108に状態変化の通知を行う。
通信制御部101の動作についてUIコンポーネント102とジョブ制御コンポーネント103とのメッセージ送受信を例に図3を用いて説明する。図3は、UIコンポーネント102とジョブ制御コンポーネント103とのメッセージ送受信の一例を説明するための図である。
ここではUIコンポーネント102とジョブ制御コンポーネント103とがメッセージ送受信によりジョブスタートとジョブ終了の強調動作を行う事を想定している。UIコンポーネント102がジョブ制御コンポーネント103に対してメッセージ送信を行う場合、まずUIコンポーネント102は、通信制御部101に対してメッセージ送信1101を行う。このメッセージ送信1101ではメッセージ内容として「ジョブスタート」、送信元としてUIコンポーネント102、送信先としてジョブ制御コンポーネントのメッセージ1105が送信される。通信制御部101ではこのメッセージ1105が一旦保存され、ジョブ制御コンポーネント103からのメッセージ受信1102により受け渡される1106。同様にジョブ制御コンポーネント103からUIコンポーネント102にメッセージ送信を行う場合、まずジョブ制御コンポーネント103から通信制御部101にメッセージ送信1103を行う。このメッセージ送信1103ではメッセージ内容として「ジョブ終了」、送信元としてジョブ制御コンポーネント103、送信先としてUIコンポーネント102のメッセージ1107が送信される。通信制御部101ではこのメッセージ1107を一旦保存し、UIコンポーネント102からのメッセージ受信1104により受け渡される1108。通信制御部101から見れば1109、1110、1111、1112の時点でコンポーネントに対しメッセージの送受信が発生した事が明らかである。
図2の通信制御部101はコンポーネント間でメッセージの送受信が発生すると、通信履歴保存部106を介してメッセージの送受信履歴を1109、1110、1111、1112等の時点で保存する。通信履歴保存部106は、コンポーネント情報保存部107に対し通信履歴1506の保存を行う。
【0012】
コンポーネント情報保存部107について図4を用いて述べる。図4は、コンポーネント情報保存部107について説明するための図である。コンポーネント情報保存部107は、コンポーネントに関する情報として、コンポーネント情報1500を持つ。コンポーネント情報1500は、複数のコンポーネントに関する情報を保持する1501。各コンポーネント1501の情報としては代表的な物としてコンポーネント識別子1502、現在の状態1503、状態変化履歴1504、通信履歴1506がある。その他にも各コンポーネント1501に対し、通信発生間隔履歴1511、キーコンポーネントフラグ1510、通信相手リスト1512が関連付けられる。各状態変化履歴1504には状態変化時刻1505が関連付けられる。各通信履歴1506には送信元コンポーネントと送信先コンポーネント1507及び通信時刻1514が関連付けられる。ここで言う送信元コンポーネントとはメッセージ中に定義される送信元コンポーネントであり、より具体的には1105、1106、1107、1108に示される送信元と等価である。通信履歴1506と関連付けられる送信先コンポーネント1507についても1105、1106、1107、1108に示される送信先と等価である。更に各通信履歴1506は通信制御部101から見た場合の送受信種別が関連付けられる。通信制御部101から見た送信とは例えば1101、1103の様な場合を示し、受信は1102、1104の様な場合を示す。
【0013】
次に図2のコンポーネント状態管理部108について説明する。コンポーネント状態管理部108は、各コンポーネント102、103、104、105からの状態変化通知を論理的な接続113、114、115、116を介して受け取る。なお、113、114、115、116のコンポーネントとコンポーネント状態管理部108との論理的な接続は通信制御部101との接続の上で実現されてもよいし、別途確立される接続でもよい。
状態変化通知を受けたコンポーネント状態管理部108は、コンポーネント情報保存部107にて、コンポーネント1501に関連付けられた状態変化履歴1504と状態変化時刻1505とを保存する。
【0014】
図5を用いて状態変化通知と、ジョブ処理の流れと、を解説する。図5は、状態変化通知と、ジョブ処理の流れと、を説明するための図である。ユーザ1016がUIコンポーネント102に対しユーザインタフェース等を介してスタート1001を指示したとする。UIコンポーネント102は、コンポーネント状態管理部108に対しUIコンポーネント102が活性化された事を示すACTIVE状態通知1002を行う。このとき、コンポーネント状態管理部108は、コンポーネント情報保存部107に対しコンポーネントの状態変化履歴1504と状態変化時刻1505とをコンポーネント1501に関連付けて保存する。関連付けは、予めコンポーネント情報保存部107に設定されているコンポーネント識別子1502と状態変化通知であるACTIVE状態通知1002等に付随して送られてくるコンポーネント識別子とを関連付けて実現される。コンポーネント状態管理部108は、コンポーネントからの状態変化通知を受ける毎にコンポーネントの状態変化履歴1504と状態変化時刻1505とを保存する。更に最新のコンポーネント状態を現在の状態1503に保存する。その後、UIコンポーネント102は、ジョブ制御コンポーネント103にジョブスタート1003を指示する。ACTIVE状態通知1002やジョブスタート1003は、実際には通信制御部101に対するメッセージ送受信により実施される。又は、ACTIVE状態通知1002についてはコンポーネントとコンポーネント状態管理部108との間に別途確立されたコネクション上で実施されてもよい。ジョブスタート1003を指示されたジョブ制御コンポーネント103は、活性化されたことをコンポーネント状態管理部108にACTIVE通知1004する。その後、ジョブ制御コンポーネント103は、デバイス制御コンポーネント104にデバイス処理開始1005を指示する。デバイス処理開始1005を指示されたデバイス制御コンポーネント104は、活性化された事をコンポーネント状態管理部108にACTIVE通知1006する。
【0015】
その後、デバイス制御コンポーネント104にて一連のデバイス制御処理を実施し、処理が終了したらデバイス制御コンポーネント104が非活性化された事をコンポーネント状態管理部108に通知する。この通知は、デバイス制御コンポーネント104からコンポーネント状態管理部108に対しIDLE1007を通知する事で実施される。その後、デバイス制御コンポーネント104は、デバイス処理が終了したことをジョブ制御コンポーネント103に通知する1008。デバイス処理終了1008通知を受けたジョブ制御コンポーネント103は、コンポーネント状態管理部108に対して自身が非活性化されることをIDLE1009通知する。その後、ジョブ制御コンポーネント103は、UIコンポーネント102に対しジョブ処理が終了1010したことを通知する。ジョブ処理の終了1010通知を受けたUIコンポーネント102は、自身が非活性化される事をIDLE1011通知によりコンポーネント状態管理部108に伝え、ユーザに処理が終了した事を通知1012する。なお、共有データ管理コンポーネント105は、ジョブのスタート1001や終了の通知1012に関わらず、システムが起動するより前に活性化されている必用がある1014。更にシステムが終了する前に非活性化される1015。
【0016】
なお、共有データ管理コンポーネント105は、活性化される前にコンポーネント状態管理部108に対し、コンポーネント属性送信1013を行ってもよい。図2ではこの属性送信はキーコンポーネント特定属性111によって表されている。このコンポーネント属性送信1013は、共有データ管理コンポーネント105が自らをキーコンポーネントであることを宣言する意味を持つ。このコンポーネント属性送信1013を受けた場合は、コンポーネント状態管理部108は、該当コンポーネントのキーコンポーネントフラグ1510をONにする。コンポーネント属性送信1013にはコンポーネント識別子が関連付けられているものとする。なお、キーコンポーネント特定属性送信は必ずしも実装される必要はなく、キーコンポーネント特定部110によりキーコンポーネントの特定を行うようにしてもよい。
【0017】
ここでキーコンポーネントとは何かを解説する。図6は、一般的なシステム204におけるコンポーネント構成の一例を示す図である。丸印203は1つのコンポーネントを示している。また、201202の様な太陽印はキーコンポーネントを示している。ここでは、キーコンポーネントとしてデータを共有するコンポーネント202と、状態を同期するコンポーネント201と、を仮定している。システムが例えば2台のコンピュータシステムで構成されている場合、各々のコンピュータシステム上に複数の論理的ドメインが構成されシステムが構成される場合が多い。例えば、最上位ドメインはユーザインタフェースドメイン205であり、次がアプリケーションサービスを提供するAPSドメイン206であり、次がジョブ制御を行うJobCtrl207ドメインである。ここまでが一台のコンピュータシステム上に構成されるとする。更にもう一台のコンピュータシステム上には以下3つのドメインが構成されるものとする。即ち、組込機器の上位層としてジョブ制御を行うEmbeded Job Ctrl208ドメイン。組込機器の機能制御を行うEmbeded Function Ctrl209ドメイン。組込機器のデバイス制御を行うEmbeded Deveice Ctrl210ドメイン、の3ドメインである。各ドメインを構成するコンポーネント同士は一般に、隣のドメインに存在するコンポーネントと協調しながらシステム全体が動作しサービスを提供する。一方、システムには、201202に示す様な、ドメインを跨って全コンポーネントに対しデータや状態を同期する、コンポーネントが幾つかは存在する場合が多い。本実施形態ではこの様にシステム上の多くのコンポーネントからアクセスされるコンポーネントをキーコンポーネントと呼ぶ。図7は、キーコンポーネント301が多くの他のコンポーネント302と通信するイメージの一例を示す図である。
【0018】
図8は、図1や図2のシステムにおける、4つのコンポーネントの関係の一例を示す図である。UIコンポーネント102は、ジョブ制御コンポーネント103に対しジョブスタート・終了401の関係を持つ。ジョブ制御コンポーネント103とデバイス制御コンポーネント104とはデバイス処理開始・終了の関係402を持つ。一方、共有データ管理コンポーネント105とUIコンポーネント102とはジョブデータセット・取得・結果データ取得403の関係を持つ。共有データ管理コンポーネント105とジョブ制御コンポーネント103とはデバイス処理データセット・結果取得404の関係を持つ。更に、共有データ管理コンポーネント105とデバイス制御コンポーネント104とはデバイス処理データ取得・更新405の関係を持つ。即ち、サービス提供を制御する系統のコンポーネントである、UIコンポーネント102、ジョブ制御コンポーネント103、デバイス制御コンポーネント104は、互いに数珠繋ぎの関係を持つ。一方でサービス提供を制御する系統の各々のコンポーネント102、103、104は、処理を進める為にデータを共有する必要性から、共有データ管理コンポーネント105とは中央集権型の関係を持つ。つまり共有データ管理コンポーネント105は、本実施形態におけるキーコンポーネントであると見なす事ができる。
【0019】
図9は、4つのコンポーネントが共有データ管理コンポーネント105を介してデータを共有しながら、処理を進めていく様子の一例を示す図である。ユーザ1215がUIコンポーネント102に対してスタート1201を指示する。UIコンポーネント102は、共有データ管理コンポーネント105にジョブデータセット1202を行い、ジョブ制御コンポーネント103にジョブスタート1203を指示する。ジョブ制御コンポーネント103は、ジョブスタート1203を受けると、ジョブデータ取得1204とデバイス処理データセット1205とを共有データ管理コンポーネント105に対して行う。その後、ジョブ制御コンポーネント103は、デバイス制御コンポーネント104にデバイス処理開始1206を指示する。指示を受けたデバイス制御コンポーネント104は、デバイス処理データ取得1207とデバイス処理データ更新1208とを共有データ管理コンポーネント105に対して行う。その後、デバイス制御コンポーネント104がデバイス制御処理を終えるとデバイス処理終了1209をジョブ制御コンポーネント103に通知する。デバイス処理終了1209を受けたジョブ制御コンポーネント103は、デバイス処理結果データ取得1210を共有データ管理コンポーネント105から行う。その後、ジョブ制御コンポーネント103は、UIコンポーネント102に対しジョブ終了1211を通知する。ジョブ終了1211を受信したUIコンポーネント102はジョブ処理結果データ取得1212を共有データ管理コンポーネント105から行う。その後、UIコンポーネント102は、ユーザに対しジョブ処理結果データ表示1213と、終了通知1214と、を行う。ここで示したジョブスタート1203、ジョブ終了1211、デバイス処理開始1206、デバイス処理終了1209は、通信制御部101を介して伝達される事は図3に解説した通りである。一方でジョブデータセット1202、ジョブデータ取得1204、1205、1207、12081210、1212についても通信制御部101を介して伝達される。その様子を、図10を用いて説明する。
【0020】
図10は、共有データコンポーネントと他のコンポーネントと通信制御のシーケンスの一例を示す図である。UIコンポーネント102が共有データ管理コンポーネント105に対してジョブデータセット1202を実施する際、UIコンポーネント102はまず通信制御部101に対しメッセージ送信1301を行う。この際「メッセージ内容:ジョブデータセット、送信元UIコンポーネント、送信先共有データ管理コンポーネント」1305、のメッセージが通信制御部101に対して送信される。共有データ管理コンポーネント105は通信制御部101からメッセージ受信1302を行い、1306、1305と等価のメッセージを受け取る。1309、1310のタイミングで通信制御部101は、通信履歴保存部106を介してコンポーネント情報保存部107に通信履歴1506を保存する。通信履歴1506に対応して通信時刻1514も保存される。同様にUIコンポーネント102が共有データ管理コンポーネント105からジョブ処理結果データ取得1212を行う際はまず通信制御部101に対しメッセージ送信1303を行う。このメッセージには「メッセージ内容:ジョブ処理結果データ取得、送信元:UIコンポーネント、送信先:共有データ管理コンポーネント」1308のメッセージが通信制御部101に対して送信される。共有データ管理コンポーネント105は、通信制御部101からメッセージ受信1304を行い、1307、1308と等価のメッセージを受け取る。1311、1312のタイミングで通信制御部101は、通信履歴保存部106を介してコンポーネント情報保存部107に通信履歴1506を保存する。通信履歴1506に対応して通信時刻1514も保存される。これにより図9で示される、4つのコンポーネントが共有データ管理コンポーネント105を介してデータを共有しながら、処理を進めていく様子は全てコンポーネント情報保存部107の通信履歴1506に保存される。
【0021】
次に図2におけるキーコンポーネント特定部110について説明する。図11は、キーコンポーネント特定の流れを表す図である。図11の黒丸は処理の開始状態を表し、黒丸の外に丸がある2重丸の印は処理の終了状態を示す図15も同様。コンポーネント状態管理部108がキーコンポーネント特定部110に対し、コンポーネントが非活性化されたコンポーネントの状態がACTIVEからIDLEに変化した事を伝える801。キーコンポーネント特定部110は、コンポーネント情報保存部107に保存された通信履歴1506から、コンポーネントの通信相手コンポーネントのリストを作成する。ここで、特に図示しないが、コンポーネントの通信相手コンポーネントのリストは、毎回全て作り直してもよいし、コンポーネントの1活性期間内についてのみ作成してもよい。その後、キーコンポーネント特定部110は、作成された通信相手コンポーネントリストをコンポーネント情報保存部107の通信相手リスト1512に保存する。更にキーコンポーネント特定部110は、送信先コンポーネント数と受信元コンポーネント数と送受信両方を行っているコンポーネント数とを通信相手リスト1512と通信履歴1506とから算出する803。次に、キーコンポーネント特定部110は、自コンポーネントの送受信コンポーネント数と他の全てのコンポーネントの送受信コンポーネント数とを比較する。キーコンポーネント特定部110は、自コンポーネントの送受信コンポーネント数が最大である場合は、自コンポーネントのキーコンポーネントフラグをONにする804。これら一連の処理は、コンポーネントが非活性化される801毎に各々のコンポーネント1501に対して実施される。
図12は、キーコンポーネントを特定する概念を表す図である。図10の処理の流れの結果保存された通信履歴1506に対し図11の流れを適用すると図12の様にキーコンポーネントが特定される。共有データ管理コンポーネント105のみがUIコンポーネント102、ジョブ制御コンポーネント103、デバイス制御コンポーネント104の3つのコンポーネントに対し送受信の関係◎で示す。送受信コンポーネントの数は4つのコンポーネントの内最大であることがわかる515。このことから共有データ管理コンポーネント105は、キーコンポーネントであると言える。
【0022】
次に図2における故障コンポーネント特定部109について説明する。故障コンポーネント特定部109の詳細を述べる前に、故障コンポーネントを特定する概念を図13と図14とで説明する。図13は、故障のない処理の通信履歴と状態変化の関係を表す図である。図13はコンポーネントCに着目した表であり、図13の初めの4つの通信履歴はコンポーネントCが1回目に活性化していた期間に発生した通信回数と通信間隔とを示している。コンポーネントCが1回目に活性化していた期間は約330msであり通信回数が4回であることから平均的な通信間隔は約80msである。更に2回目の活性期間も約330msであり通信回数が4回であるから平均的な通信間隔は約80msである。3回目の活性期間についても約330msであり通信回数が4回であるから平均的な通信間隔は約80msである。この場合はコンポーネントCには故障は発生せず、活性期間中に問題は無かったと判断される。
一方、図14に着目する。図14は、コンポーネントBに着目した表であり、故障コンポーネントを特定する概念を表す図である。初めの4回の通信履歴は、活性化期間330msの間に4回の通信が発生し平均的な通信間隔が80msであることを示している。2回目の活性化期間もほぼ同等である。しかし3回目の活性化期間は平均的な通信間隔が20000msであることを示している。この場合は3回目の活性化期間の平均的な通信間隔が、他の2回の活性化期間の平均的な通信間隔にたいしておおきくばらついていることが判る。このことから最後の活性化期間にはコンポーネントBに何らかの問題が発生していて、正常に処理が行われなかった事が推定される。本図は、説明の簡略化の為に活性化期間を3回に絞って説明しているが、実際のシステム運用時は観察する活性化期間の回数は大きく、通信間隔がばらつく回数は小さいことを想定している。
【0023】
次に故障コンポーネント特定部109の処理の詳細について述べる。図15は、故障コンポーネント特定部109の処理の流れを示す図である。コンポーネント状態管理部108が故障コンポーネント特定部109にコンポーネントが非活性化したACTIVE→IDLEの状態変化事を伝える901か、ユーザが故障診断を指示する902。故障コンポーネント特定部109は、コンポーネントが活性化されてから非活性化されるまでのキーコンポーネントとの通信回数を通信履歴から取得する903。コンポーネント情報保存部107は、状態変化履歴1504と状態変化時刻1505と通信履歴1506と通信時刻1514とを保持しているので903の操作が可能になる。なお903の処理についてはオプションとしてキーコンポーネントとの通信回数ではなく、通信相手に関わらずコンポーネントが活性化されてから非活性化されるまでの通信回数を通信履歴から取得910する方法であってもよい。このオプションを用いるとはキーコンポーネント特定部110に依存せずに故障コンポーネント特定部109がキーコンポーネントを特定する処理を実行する。次に、故障コンポーネント特定部109は、コンポーネントが活性化されていた期間を状態変化履歴から算出する904。次に、故障コンポーネント特定部109は、活性化期間を通信回数で割り、活性期間中の平均的な通信間隔を算出する905。故障コンポーネント特定部109は、算出した活性期間中の通信発生間隔をコンポーネント1501に対応付けられた通信発生間隔履歴1511に保存する906。次に、故障コンポーネント特定部109は、予め設定された過去N回分の通信発生間隔の標準偏差σと平均とを求める907。次に、故障コンポーネント特定部109は、今回最新の通信発生間隔が平均プラスマイナス3σの範囲内に入っているか908判断する。この部分はオプション処理として、今回最新の通信発生間隔が平均プラスマイナスn*σの範囲内に入っているか911の処理に置き換える事もできる。nは予め設定しておく。故障コンポーネント特定部109は、範囲に入っていない912場合は故障通知を行う909。908911では、故障コンポーネント特定部109は、コンポーネント活性期間中の通信間隔にばらつきが発生した事を検出し、大きくばらついていた場合には正常な処理が行われていないと判断している。
【0024】
故障通知909の詳細について図16を用いて説明する。殆どの処理は図5を用いて説明された状態変化通知とジョブ処理の流れと同様である。異なる部分としては、故障コンポーネント特定部109が図15の故障コンポーネント特定部109の処理の流れ909にて故障コンポーネントの故障通知を行うと、故障コンポーネント通知1401が発生する。故障コンポーネント通知1401は、故障コンポーネント特定部109からコンポーネント状態管理部108に送られる。コンポーネント状態管理部108は、1401を受信し、故障復帰処理開始指示1402をジョブ制御コンポーネント103に、故障発生通知1403をUIコンポーネント102に送付する。故障コンポーネント通知1401には故障コンポーネントを特定するコンポーネント識別子が関連付けられており、コンポーネント状態管理部108は該当するコンポーネントに復帰処理開始指示を送信する。図16の実施例では故障コンポーネントがジョブ制御コンポーネント103であった場合を想定している。故障復帰処理開始指示1402を受信したジョブ制御コンポーネント103は、自身に実施可能な故障復帰処理を開始する事ができる。故障発生通知1403を受信したUIコンポーネント102は、1403にコンポーネント識別子を関連付けておくことで、故障発生個所をユーザに表示できる1404。
【0025】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ又はCPUやMPU等がプログラムを読み出して実行する処理である。
【0026】
以上、上述した各実施形態によれば、コンポーネントに特別な実装を追加する事無く、通信制御ミドルウェアで、コンポーネント間で依頼と応答との通信が正常に行われた場合でも、処理が正常に進行していない状況を検出することができる。
【0027】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0028】
101 通信制御部
112 ライフサイクル管理部
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、アプリケーションコンポーネント以下、コンポーネントという同士が通信する通信制御ミドルウェアとして、コンポーネントの状態をコンポーネントライフサイクルに渡って管理する方法は一般的である。このライフサイクル管理は一般に、システムを構成する各コンポーネントの状態をシステム状態に関連付けられる際に用いられる。例えば、障害発生時にアプリケーションを再起動する方法としては特許文献1が挙げられる。一方、システムにおける故障の検出手段については特許文献2が挙げられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−157386号公報
【特許文献2】特開平8−44684号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のライフサイクル管理では、特許文献2に示されるように故障を検出した事をきっかけとして、特許文献1に示されるようにシステムを再起動する処理を実現できない。これには以下の問題があった。
通信制御ミドルウェアでは故障の発生を検出することができない。コンポーネント間のコマンド送受信が成功している場合、通信制御ミドルウェアでコマンドの実行が正常に行われたか判断できない。その為、故障検出の仕組みをコンポーネントに実装する必要があった。
【0005】
本発明はこのような問題点に鑑みなされたもので、コンポーネントに特別な実装を追加する事無く、通信制御ミドルウェアで、コンポーネント間で依頼と応答との通信が正常に行われた場合でも、処理が正常に進行していない状況を検出することを目的とする。
【課題を解決するための手段】
【0006】
そこで、本発明の情報処理装置は、複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの通信間隔のばらつきから故障発生を判断するライフサイクル管理手段とを有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、コンポーネントに特別な実装を追加する事無く、通信制御ミドルウェアで、コンポーネント間で依頼と応答との通信が正常に行われた場合でも、処理が正常に進行していない状況を検出することができる。
【図面の簡単な説明】
【0008】
【図1】システム構成の一例を示す図である。
【図2】図1のOS上位層を論理的に拡大表示した図である。
【図3】UIコンポーネントとジョブ制御コンポーネントとのメッセージ送受信の一例を説明するための図である。
【図4】コンポーネント情報保存部について説明するための図である。
【図5】状態変化通知と、ジョブ処理の流れと、を説明するための図である。
【図6】一般的なシステムにおけるコンポーネント構成の一例を示す図である。
【図7】キーコンポーネントが多くの他のコンポーネントと通信するイメージの一例を示す図である。
【図8】図1や図2のシステムにおける、4つのコンポーネントの関係の一例を示す図である。
【図9】4つのコンポーネントが共有データ管理コンポーネントを介してデータを共有しながら、処理を進めていく様子の一例を示す図である。
【図10】共有データコンポーネントと他のコンポーネントと通信制御のシーケンスの一例を示す図である。
【図11】キーコンポーネント特定の流れを表す図である。
【図12】キーコンポーネントを特定する概念を表す図である。
【図13】故障のない処理の通信履歴と状態変化の関係を表す図である。
【図14】コンポーネントBに着目した表であり、故障コンポーネントを特定する概念を表す図である。
【図15】故障コンポーネント特定部の処理の流れを示す図である。
【図16】故障通知の詳細を説明するための図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づいて説明する。
【0010】
<実施形態1>
図1は、システム構成の一例を示す図である。図1では、システム1601が複数のコンピュータを有している。CPU1 1602とOS1 1604とを有するコンピュータは、ユーザにインタフェースを提供し、CPU2 1606とOS2 1608とを有するコンピュータは、デバイスの制御を司る。各々のコンピュータシステムは通信制御物理層1603、1607によって物理的に接続されている。また、各々のコンピュータシステム上には通信制御ミドルウェア1605、1609が動作している。この通信制御ミドルウェア1605、1609は、アプリケーションコンポーネント以下、コンポーネントというに対し、通信制御層以下の物理的なシステム構成を隠蔽している。ユーザインタフェースを司るCPU1 1602とOS1 1604とのコンピュータシステムの通信制御ミドルウェア1605の上にはUIコンポーネント102が動作している。装置の制御を司るCPU2 1606とOS2 1608とのコンピュータシステムの通信制御ミドルウェア1609の上には3つのコンポーネントが動作している。即ち、ジョブ制御コンポーネント103とデバイス制御コンポーネント104と共有データ管理コンポーネント105とが動作している。システム1601は、ユーザ1610がUIコンポーネント102を操作し、システム内の4つのコンポーネントが協調動作することでユーザにサービスを提供する。4つのコンポーネントとは、UIコンポーネント102、ジョブ制御コンポーネント103、デバイス制御コンポーネント104、共有データ管理コンポーネント105である。
なお、本実施形態では、コンピュータシステムは、1つの情報処理装置コンピュータに実装されているものとして説明を行う。情報処理装置は、通常のコンピュータのハードウェア構成を有する。情報処理装置のCPUが、RAM、ROM、HDD等の記憶装置に記憶されているプログラムに基づき処理を実行することによって、各コンピュータシステムの構成、及び後述する各コンピュータシステムにおける処理が実現される。なお、CPUが処理を実行する際に利用されるデータ等は、記憶装置に記憶されている。
【0011】
OS上位層1611の点線で囲まれた領域について図2を用いて詳説する。図2は、図1のOS上位層1611を論理的に拡大表示した図である。
通信制御ミドルウェア1605、1609は、通信制御部101とライフサイクル管理部112とを有している。4つのコンポーネントが通信制御部101とライフサイクル管理部112とに論理的に接続されている。これらの論理接続は各コンポーネントが通信ミドルウェアに対して行う初期化処理にて確立される。コンポーネント同士は通信制御部101を介してメッセージの送受信を行い、コンポーネント状態管理部108に状態変化の通知を行う。
通信制御部101の動作についてUIコンポーネント102とジョブ制御コンポーネント103とのメッセージ送受信を例に図3を用いて説明する。図3は、UIコンポーネント102とジョブ制御コンポーネント103とのメッセージ送受信の一例を説明するための図である。
ここではUIコンポーネント102とジョブ制御コンポーネント103とがメッセージ送受信によりジョブスタートとジョブ終了の強調動作を行う事を想定している。UIコンポーネント102がジョブ制御コンポーネント103に対してメッセージ送信を行う場合、まずUIコンポーネント102は、通信制御部101に対してメッセージ送信1101を行う。このメッセージ送信1101ではメッセージ内容として「ジョブスタート」、送信元としてUIコンポーネント102、送信先としてジョブ制御コンポーネントのメッセージ1105が送信される。通信制御部101ではこのメッセージ1105が一旦保存され、ジョブ制御コンポーネント103からのメッセージ受信1102により受け渡される1106。同様にジョブ制御コンポーネント103からUIコンポーネント102にメッセージ送信を行う場合、まずジョブ制御コンポーネント103から通信制御部101にメッセージ送信1103を行う。このメッセージ送信1103ではメッセージ内容として「ジョブ終了」、送信元としてジョブ制御コンポーネント103、送信先としてUIコンポーネント102のメッセージ1107が送信される。通信制御部101ではこのメッセージ1107を一旦保存し、UIコンポーネント102からのメッセージ受信1104により受け渡される1108。通信制御部101から見れば1109、1110、1111、1112の時点でコンポーネントに対しメッセージの送受信が発生した事が明らかである。
図2の通信制御部101はコンポーネント間でメッセージの送受信が発生すると、通信履歴保存部106を介してメッセージの送受信履歴を1109、1110、1111、1112等の時点で保存する。通信履歴保存部106は、コンポーネント情報保存部107に対し通信履歴1506の保存を行う。
【0012】
コンポーネント情報保存部107について図4を用いて述べる。図4は、コンポーネント情報保存部107について説明するための図である。コンポーネント情報保存部107は、コンポーネントに関する情報として、コンポーネント情報1500を持つ。コンポーネント情報1500は、複数のコンポーネントに関する情報を保持する1501。各コンポーネント1501の情報としては代表的な物としてコンポーネント識別子1502、現在の状態1503、状態変化履歴1504、通信履歴1506がある。その他にも各コンポーネント1501に対し、通信発生間隔履歴1511、キーコンポーネントフラグ1510、通信相手リスト1512が関連付けられる。各状態変化履歴1504には状態変化時刻1505が関連付けられる。各通信履歴1506には送信元コンポーネントと送信先コンポーネント1507及び通信時刻1514が関連付けられる。ここで言う送信元コンポーネントとはメッセージ中に定義される送信元コンポーネントであり、より具体的には1105、1106、1107、1108に示される送信元と等価である。通信履歴1506と関連付けられる送信先コンポーネント1507についても1105、1106、1107、1108に示される送信先と等価である。更に各通信履歴1506は通信制御部101から見た場合の送受信種別が関連付けられる。通信制御部101から見た送信とは例えば1101、1103の様な場合を示し、受信は1102、1104の様な場合を示す。
【0013】
次に図2のコンポーネント状態管理部108について説明する。コンポーネント状態管理部108は、各コンポーネント102、103、104、105からの状態変化通知を論理的な接続113、114、115、116を介して受け取る。なお、113、114、115、116のコンポーネントとコンポーネント状態管理部108との論理的な接続は通信制御部101との接続の上で実現されてもよいし、別途確立される接続でもよい。
状態変化通知を受けたコンポーネント状態管理部108は、コンポーネント情報保存部107にて、コンポーネント1501に関連付けられた状態変化履歴1504と状態変化時刻1505とを保存する。
【0014】
図5を用いて状態変化通知と、ジョブ処理の流れと、を解説する。図5は、状態変化通知と、ジョブ処理の流れと、を説明するための図である。ユーザ1016がUIコンポーネント102に対しユーザインタフェース等を介してスタート1001を指示したとする。UIコンポーネント102は、コンポーネント状態管理部108に対しUIコンポーネント102が活性化された事を示すACTIVE状態通知1002を行う。このとき、コンポーネント状態管理部108は、コンポーネント情報保存部107に対しコンポーネントの状態変化履歴1504と状態変化時刻1505とをコンポーネント1501に関連付けて保存する。関連付けは、予めコンポーネント情報保存部107に設定されているコンポーネント識別子1502と状態変化通知であるACTIVE状態通知1002等に付随して送られてくるコンポーネント識別子とを関連付けて実現される。コンポーネント状態管理部108は、コンポーネントからの状態変化通知を受ける毎にコンポーネントの状態変化履歴1504と状態変化時刻1505とを保存する。更に最新のコンポーネント状態を現在の状態1503に保存する。その後、UIコンポーネント102は、ジョブ制御コンポーネント103にジョブスタート1003を指示する。ACTIVE状態通知1002やジョブスタート1003は、実際には通信制御部101に対するメッセージ送受信により実施される。又は、ACTIVE状態通知1002についてはコンポーネントとコンポーネント状態管理部108との間に別途確立されたコネクション上で実施されてもよい。ジョブスタート1003を指示されたジョブ制御コンポーネント103は、活性化されたことをコンポーネント状態管理部108にACTIVE通知1004する。その後、ジョブ制御コンポーネント103は、デバイス制御コンポーネント104にデバイス処理開始1005を指示する。デバイス処理開始1005を指示されたデバイス制御コンポーネント104は、活性化された事をコンポーネント状態管理部108にACTIVE通知1006する。
【0015】
その後、デバイス制御コンポーネント104にて一連のデバイス制御処理を実施し、処理が終了したらデバイス制御コンポーネント104が非活性化された事をコンポーネント状態管理部108に通知する。この通知は、デバイス制御コンポーネント104からコンポーネント状態管理部108に対しIDLE1007を通知する事で実施される。その後、デバイス制御コンポーネント104は、デバイス処理が終了したことをジョブ制御コンポーネント103に通知する1008。デバイス処理終了1008通知を受けたジョブ制御コンポーネント103は、コンポーネント状態管理部108に対して自身が非活性化されることをIDLE1009通知する。その後、ジョブ制御コンポーネント103は、UIコンポーネント102に対しジョブ処理が終了1010したことを通知する。ジョブ処理の終了1010通知を受けたUIコンポーネント102は、自身が非活性化される事をIDLE1011通知によりコンポーネント状態管理部108に伝え、ユーザに処理が終了した事を通知1012する。なお、共有データ管理コンポーネント105は、ジョブのスタート1001や終了の通知1012に関わらず、システムが起動するより前に活性化されている必用がある1014。更にシステムが終了する前に非活性化される1015。
【0016】
なお、共有データ管理コンポーネント105は、活性化される前にコンポーネント状態管理部108に対し、コンポーネント属性送信1013を行ってもよい。図2ではこの属性送信はキーコンポーネント特定属性111によって表されている。このコンポーネント属性送信1013は、共有データ管理コンポーネント105が自らをキーコンポーネントであることを宣言する意味を持つ。このコンポーネント属性送信1013を受けた場合は、コンポーネント状態管理部108は、該当コンポーネントのキーコンポーネントフラグ1510をONにする。コンポーネント属性送信1013にはコンポーネント識別子が関連付けられているものとする。なお、キーコンポーネント特定属性送信は必ずしも実装される必要はなく、キーコンポーネント特定部110によりキーコンポーネントの特定を行うようにしてもよい。
【0017】
ここでキーコンポーネントとは何かを解説する。図6は、一般的なシステム204におけるコンポーネント構成の一例を示す図である。丸印203は1つのコンポーネントを示している。また、201202の様な太陽印はキーコンポーネントを示している。ここでは、キーコンポーネントとしてデータを共有するコンポーネント202と、状態を同期するコンポーネント201と、を仮定している。システムが例えば2台のコンピュータシステムで構成されている場合、各々のコンピュータシステム上に複数の論理的ドメインが構成されシステムが構成される場合が多い。例えば、最上位ドメインはユーザインタフェースドメイン205であり、次がアプリケーションサービスを提供するAPSドメイン206であり、次がジョブ制御を行うJobCtrl207ドメインである。ここまでが一台のコンピュータシステム上に構成されるとする。更にもう一台のコンピュータシステム上には以下3つのドメインが構成されるものとする。即ち、組込機器の上位層としてジョブ制御を行うEmbeded Job Ctrl208ドメイン。組込機器の機能制御を行うEmbeded Function Ctrl209ドメイン。組込機器のデバイス制御を行うEmbeded Deveice Ctrl210ドメイン、の3ドメインである。各ドメインを構成するコンポーネント同士は一般に、隣のドメインに存在するコンポーネントと協調しながらシステム全体が動作しサービスを提供する。一方、システムには、201202に示す様な、ドメインを跨って全コンポーネントに対しデータや状態を同期する、コンポーネントが幾つかは存在する場合が多い。本実施形態ではこの様にシステム上の多くのコンポーネントからアクセスされるコンポーネントをキーコンポーネントと呼ぶ。図7は、キーコンポーネント301が多くの他のコンポーネント302と通信するイメージの一例を示す図である。
【0018】
図8は、図1や図2のシステムにおける、4つのコンポーネントの関係の一例を示す図である。UIコンポーネント102は、ジョブ制御コンポーネント103に対しジョブスタート・終了401の関係を持つ。ジョブ制御コンポーネント103とデバイス制御コンポーネント104とはデバイス処理開始・終了の関係402を持つ。一方、共有データ管理コンポーネント105とUIコンポーネント102とはジョブデータセット・取得・結果データ取得403の関係を持つ。共有データ管理コンポーネント105とジョブ制御コンポーネント103とはデバイス処理データセット・結果取得404の関係を持つ。更に、共有データ管理コンポーネント105とデバイス制御コンポーネント104とはデバイス処理データ取得・更新405の関係を持つ。即ち、サービス提供を制御する系統のコンポーネントである、UIコンポーネント102、ジョブ制御コンポーネント103、デバイス制御コンポーネント104は、互いに数珠繋ぎの関係を持つ。一方でサービス提供を制御する系統の各々のコンポーネント102、103、104は、処理を進める為にデータを共有する必要性から、共有データ管理コンポーネント105とは中央集権型の関係を持つ。つまり共有データ管理コンポーネント105は、本実施形態におけるキーコンポーネントであると見なす事ができる。
【0019】
図9は、4つのコンポーネントが共有データ管理コンポーネント105を介してデータを共有しながら、処理を進めていく様子の一例を示す図である。ユーザ1215がUIコンポーネント102に対してスタート1201を指示する。UIコンポーネント102は、共有データ管理コンポーネント105にジョブデータセット1202を行い、ジョブ制御コンポーネント103にジョブスタート1203を指示する。ジョブ制御コンポーネント103は、ジョブスタート1203を受けると、ジョブデータ取得1204とデバイス処理データセット1205とを共有データ管理コンポーネント105に対して行う。その後、ジョブ制御コンポーネント103は、デバイス制御コンポーネント104にデバイス処理開始1206を指示する。指示を受けたデバイス制御コンポーネント104は、デバイス処理データ取得1207とデバイス処理データ更新1208とを共有データ管理コンポーネント105に対して行う。その後、デバイス制御コンポーネント104がデバイス制御処理を終えるとデバイス処理終了1209をジョブ制御コンポーネント103に通知する。デバイス処理終了1209を受けたジョブ制御コンポーネント103は、デバイス処理結果データ取得1210を共有データ管理コンポーネント105から行う。その後、ジョブ制御コンポーネント103は、UIコンポーネント102に対しジョブ終了1211を通知する。ジョブ終了1211を受信したUIコンポーネント102はジョブ処理結果データ取得1212を共有データ管理コンポーネント105から行う。その後、UIコンポーネント102は、ユーザに対しジョブ処理結果データ表示1213と、終了通知1214と、を行う。ここで示したジョブスタート1203、ジョブ終了1211、デバイス処理開始1206、デバイス処理終了1209は、通信制御部101を介して伝達される事は図3に解説した通りである。一方でジョブデータセット1202、ジョブデータ取得1204、1205、1207、12081210、1212についても通信制御部101を介して伝達される。その様子を、図10を用いて説明する。
【0020】
図10は、共有データコンポーネントと他のコンポーネントと通信制御のシーケンスの一例を示す図である。UIコンポーネント102が共有データ管理コンポーネント105に対してジョブデータセット1202を実施する際、UIコンポーネント102はまず通信制御部101に対しメッセージ送信1301を行う。この際「メッセージ内容:ジョブデータセット、送信元UIコンポーネント、送信先共有データ管理コンポーネント」1305、のメッセージが通信制御部101に対して送信される。共有データ管理コンポーネント105は通信制御部101からメッセージ受信1302を行い、1306、1305と等価のメッセージを受け取る。1309、1310のタイミングで通信制御部101は、通信履歴保存部106を介してコンポーネント情報保存部107に通信履歴1506を保存する。通信履歴1506に対応して通信時刻1514も保存される。同様にUIコンポーネント102が共有データ管理コンポーネント105からジョブ処理結果データ取得1212を行う際はまず通信制御部101に対しメッセージ送信1303を行う。このメッセージには「メッセージ内容:ジョブ処理結果データ取得、送信元:UIコンポーネント、送信先:共有データ管理コンポーネント」1308のメッセージが通信制御部101に対して送信される。共有データ管理コンポーネント105は、通信制御部101からメッセージ受信1304を行い、1307、1308と等価のメッセージを受け取る。1311、1312のタイミングで通信制御部101は、通信履歴保存部106を介してコンポーネント情報保存部107に通信履歴1506を保存する。通信履歴1506に対応して通信時刻1514も保存される。これにより図9で示される、4つのコンポーネントが共有データ管理コンポーネント105を介してデータを共有しながら、処理を進めていく様子は全てコンポーネント情報保存部107の通信履歴1506に保存される。
【0021】
次に図2におけるキーコンポーネント特定部110について説明する。図11は、キーコンポーネント特定の流れを表す図である。図11の黒丸は処理の開始状態を表し、黒丸の外に丸がある2重丸の印は処理の終了状態を示す図15も同様。コンポーネント状態管理部108がキーコンポーネント特定部110に対し、コンポーネントが非活性化されたコンポーネントの状態がACTIVEからIDLEに変化した事を伝える801。キーコンポーネント特定部110は、コンポーネント情報保存部107に保存された通信履歴1506から、コンポーネントの通信相手コンポーネントのリストを作成する。ここで、特に図示しないが、コンポーネントの通信相手コンポーネントのリストは、毎回全て作り直してもよいし、コンポーネントの1活性期間内についてのみ作成してもよい。その後、キーコンポーネント特定部110は、作成された通信相手コンポーネントリストをコンポーネント情報保存部107の通信相手リスト1512に保存する。更にキーコンポーネント特定部110は、送信先コンポーネント数と受信元コンポーネント数と送受信両方を行っているコンポーネント数とを通信相手リスト1512と通信履歴1506とから算出する803。次に、キーコンポーネント特定部110は、自コンポーネントの送受信コンポーネント数と他の全てのコンポーネントの送受信コンポーネント数とを比較する。キーコンポーネント特定部110は、自コンポーネントの送受信コンポーネント数が最大である場合は、自コンポーネントのキーコンポーネントフラグをONにする804。これら一連の処理は、コンポーネントが非活性化される801毎に各々のコンポーネント1501に対して実施される。
図12は、キーコンポーネントを特定する概念を表す図である。図10の処理の流れの結果保存された通信履歴1506に対し図11の流れを適用すると図12の様にキーコンポーネントが特定される。共有データ管理コンポーネント105のみがUIコンポーネント102、ジョブ制御コンポーネント103、デバイス制御コンポーネント104の3つのコンポーネントに対し送受信の関係◎で示す。送受信コンポーネントの数は4つのコンポーネントの内最大であることがわかる515。このことから共有データ管理コンポーネント105は、キーコンポーネントであると言える。
【0022】
次に図2における故障コンポーネント特定部109について説明する。故障コンポーネント特定部109の詳細を述べる前に、故障コンポーネントを特定する概念を図13と図14とで説明する。図13は、故障のない処理の通信履歴と状態変化の関係を表す図である。図13はコンポーネントCに着目した表であり、図13の初めの4つの通信履歴はコンポーネントCが1回目に活性化していた期間に発生した通信回数と通信間隔とを示している。コンポーネントCが1回目に活性化していた期間は約330msであり通信回数が4回であることから平均的な通信間隔は約80msである。更に2回目の活性期間も約330msであり通信回数が4回であるから平均的な通信間隔は約80msである。3回目の活性期間についても約330msであり通信回数が4回であるから平均的な通信間隔は約80msである。この場合はコンポーネントCには故障は発生せず、活性期間中に問題は無かったと判断される。
一方、図14に着目する。図14は、コンポーネントBに着目した表であり、故障コンポーネントを特定する概念を表す図である。初めの4回の通信履歴は、活性化期間330msの間に4回の通信が発生し平均的な通信間隔が80msであることを示している。2回目の活性化期間もほぼ同等である。しかし3回目の活性化期間は平均的な通信間隔が20000msであることを示している。この場合は3回目の活性化期間の平均的な通信間隔が、他の2回の活性化期間の平均的な通信間隔にたいしておおきくばらついていることが判る。このことから最後の活性化期間にはコンポーネントBに何らかの問題が発生していて、正常に処理が行われなかった事が推定される。本図は、説明の簡略化の為に活性化期間を3回に絞って説明しているが、実際のシステム運用時は観察する活性化期間の回数は大きく、通信間隔がばらつく回数は小さいことを想定している。
【0023】
次に故障コンポーネント特定部109の処理の詳細について述べる。図15は、故障コンポーネント特定部109の処理の流れを示す図である。コンポーネント状態管理部108が故障コンポーネント特定部109にコンポーネントが非活性化したACTIVE→IDLEの状態変化事を伝える901か、ユーザが故障診断を指示する902。故障コンポーネント特定部109は、コンポーネントが活性化されてから非活性化されるまでのキーコンポーネントとの通信回数を通信履歴から取得する903。コンポーネント情報保存部107は、状態変化履歴1504と状態変化時刻1505と通信履歴1506と通信時刻1514とを保持しているので903の操作が可能になる。なお903の処理についてはオプションとしてキーコンポーネントとの通信回数ではなく、通信相手に関わらずコンポーネントが活性化されてから非活性化されるまでの通信回数を通信履歴から取得910する方法であってもよい。このオプションを用いるとはキーコンポーネント特定部110に依存せずに故障コンポーネント特定部109がキーコンポーネントを特定する処理を実行する。次に、故障コンポーネント特定部109は、コンポーネントが活性化されていた期間を状態変化履歴から算出する904。次に、故障コンポーネント特定部109は、活性化期間を通信回数で割り、活性期間中の平均的な通信間隔を算出する905。故障コンポーネント特定部109は、算出した活性期間中の通信発生間隔をコンポーネント1501に対応付けられた通信発生間隔履歴1511に保存する906。次に、故障コンポーネント特定部109は、予め設定された過去N回分の通信発生間隔の標準偏差σと平均とを求める907。次に、故障コンポーネント特定部109は、今回最新の通信発生間隔が平均プラスマイナス3σの範囲内に入っているか908判断する。この部分はオプション処理として、今回最新の通信発生間隔が平均プラスマイナスn*σの範囲内に入っているか911の処理に置き換える事もできる。nは予め設定しておく。故障コンポーネント特定部109は、範囲に入っていない912場合は故障通知を行う909。908911では、故障コンポーネント特定部109は、コンポーネント活性期間中の通信間隔にばらつきが発生した事を検出し、大きくばらついていた場合には正常な処理が行われていないと判断している。
【0024】
故障通知909の詳細について図16を用いて説明する。殆どの処理は図5を用いて説明された状態変化通知とジョブ処理の流れと同様である。異なる部分としては、故障コンポーネント特定部109が図15の故障コンポーネント特定部109の処理の流れ909にて故障コンポーネントの故障通知を行うと、故障コンポーネント通知1401が発生する。故障コンポーネント通知1401は、故障コンポーネント特定部109からコンポーネント状態管理部108に送られる。コンポーネント状態管理部108は、1401を受信し、故障復帰処理開始指示1402をジョブ制御コンポーネント103に、故障発生通知1403をUIコンポーネント102に送付する。故障コンポーネント通知1401には故障コンポーネントを特定するコンポーネント識別子が関連付けられており、コンポーネント状態管理部108は該当するコンポーネントに復帰処理開始指示を送信する。図16の実施例では故障コンポーネントがジョブ制御コンポーネント103であった場合を想定している。故障復帰処理開始指示1402を受信したジョブ制御コンポーネント103は、自身に実施可能な故障復帰処理を開始する事ができる。故障発生通知1403を受信したUIコンポーネント102は、1403にコンポーネント識別子を関連付けておくことで、故障発生個所をユーザに表示できる1404。
【0025】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ又はCPUやMPU等がプログラムを読み出して実行する処理である。
【0026】
以上、上述した各実施形態によれば、コンポーネントに特別な実装を追加する事無く、通信制御ミドルウェアで、コンポーネント間で依頼と応答との通信が正常に行われた場合でも、処理が正常に進行していない状況を検出することができる。
【0027】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0028】
101 通信制御部
112 ライフサイクル管理部
【特許請求の範囲】
【請求項1】
複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、
前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの通信間隔のばらつきから故障発生を判断するライフサイクル管理手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記ライフサイクル管理手段は、前記複数のアプリケーションコンポーネントのうち、他のアプリケーションコンポーネントとのメッセージの送受信の量に基づいて、キーとなるコンポーネントを特定し、コンポーネントの活性期間における前記コンポーネントと前記特定したコンポーネントとの通信間隔のばらつきから故障発生を判断することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
通信制御手段と、ライフサイクル管理手段と、を有する通信制御ミドルウェア手段を有する情報処理装置における情報処理方法であって、
前記通信制御手段が、複数のアプリケーションコンポーネントの通信を制御する制御ステップと、
前記ライフサイクル管理手段が、前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの活性期間の通信間隔のばらつきから故障発生を判断するライフサイクル管理ステップと、
を含むことを特徴とする情報処理方法。
【請求項4】
コンピュータを、
複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、
前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの活性期間の通信間隔のばらつきから故障発生を判断するライフサイクル管理手段と、
して機能させることを特徴とするプログラム。
【請求項1】
複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、
前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの通信間隔のばらつきから故障発生を判断するライフサイクル管理手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記ライフサイクル管理手段は、前記複数のアプリケーションコンポーネントのうち、他のアプリケーションコンポーネントとのメッセージの送受信の量に基づいて、キーとなるコンポーネントを特定し、コンポーネントの活性期間における前記コンポーネントと前記特定したコンポーネントとの通信間隔のばらつきから故障発生を判断することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
通信制御手段と、ライフサイクル管理手段と、を有する通信制御ミドルウェア手段を有する情報処理装置における情報処理方法であって、
前記通信制御手段が、複数のアプリケーションコンポーネントの通信を制御する制御ステップと、
前記ライフサイクル管理手段が、前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの活性期間の通信間隔のばらつきから故障発生を判断するライフサイクル管理ステップと、
を含むことを特徴とする情報処理方法。
【請求項4】
コンピュータを、
複数のアプリケーションコンポーネントの通信を制御する通信制御手段と、
前記複数のアプリケーションコンポーネントのライフサイクルを管理し、前記複数のアプリケーションコンポーネントの活性期間の通信間隔のばらつきから故障発生を判断するライフサイクル管理手段と、
して機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2012−123722(P2012−123722A)
【公開日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願番号】特願2010−275741(P2010−275741)
【出願日】平成22年12月10日(2010.12.10)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願日】平成22年12月10日(2010.12.10)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]