(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
<実施の形態1>
図1は、本発明の実施形態1に係る端末管理システム1000の構成図である。端末管理システム1000は、管理対象端末200の稼動状態情報を管理し、管理対象端末200に対して制御命令を発行するシステムであり、端末管理サーバ100(端末管理装置)、管理者端末300を有する。これら機器は、ネットワークを介して接続されている。以下の説明では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのはCPU(Central Processing Unit)などの演算装置であり、プログラムを搭載した機器はこれを実行する演算装置を備えているものとする。
【0014】
管理対象端末200は、端末管理システム1000の管理対象となる端末であり、端末管理エージェント210(端末管理部)、端末管理プラグイン220、端末側データツリー格納部230を備える。
【0015】
端末管理エージェント210は、端末管理サーバ100に対して当該端末の稼動状態情報を送信し、端末管理サーバ100から制御命令を受信するプログラムである。端末管理プラグイン220は、端末管理エージェント210を介して、端末管理サーバ100に対して当該端末の稼動状態情報を送信し、端末管理サーバ100から制御命令を受信して実行するプログラムである。端末管理プラグイン220は、管理対象となる稼動状態情報に対応したサブプログラムを有する。ここでは、後述するApplicationInfoに対応するアプリケーション管理プログラム221と、DeviceInfo項目に対応する基本情報管理プログラム222を例示した。端末側データツリー格納部230は、管理対象端末200の稼動状態情報をツリー形式で記述したデータツリーを記憶する記憶装置である。
【0016】
端末管理サーバ100は、管理対象端末200の稼動状態情報を収集・管理し、管理者端末300からの指令に基づき、管理対象端末200に対して制御命令を発行する。制御命令の例としては、アプリケーションのインストール、起動・停止などが挙げられる。端末管理サーバ100は、先述のOMA−DMのようにツリー形式で稼動状態情報を記述する遠隔管理プロトコルを用いて、管理対象端末200の稼動状態情報を取得し、または管理対象端末200に対して制御命令を発行する。
【0017】
端末管理サーバ100は、管理者端末通信プログラム111、管理対象端末通信プログラム112、データツリー操作プログラム121、コマンド操作プログラム122、サブツリー操作プログラム130、サーバ側データツリー格納部140、コマンド管理テーブル150を備える。
【0018】
管理者端末通信プログラム111は、管理者端末300から指令を受信するプログラムである。管理対象端末通信プログラム112は、管理対象端末200から稼動状態情報を受信し、管理対象端末200に対して制御命令を送信するプログラムである。データツリー操作プログラム121は、サーバ側データツリー格納部140が格納しているデータツリーに対する読込要求や書込要求を受け取り、サブツリー操作プログラム130内の対応するプログラムにその要求を振り分けるプログラムである。サブツリー操作プログラム130は、サーバ側データツリー格納部140が格納しているデータツリーを読み込み、またはデータを書き込むプログラムである。サブツリー操作プログラム130は、端末管理プラグイン220が備えるサブプログラムに対応するサブプログラムとして、基本情報操作プログラム131とアプリケーション情報操作プログラム132を備える。サーバ側テータツリー格納部140については後述する。コマンド操作プログラム122は、管理対象端末200に対する制御命令をツリー形式で記述してコマンド管理テーブル150に格納する。コマンド管理テーブル150の具体例については後述する。
【0019】
管理者端末300は、管理対象端末200を管理する管理者が使用する端末であり、管理対象端末200の状態監視、アプリケーション起動・停止などの遠隔制御などの処理を実行する。管理者端末300は、端末操作プログラム310を備える。端末操作プログラム310は、端末管理サーバ100から管理対象端末200の稼動状態情報を取得してディスプレイなどに表示し、管理対象端末200に対する制御指令を入力するユーザインターフェースを提供する。
【0020】
図2は、端末管理サーバ100と管理対象端末200が使用する遠隔管理プロトコルにおいて使用される、管理対象端末200の稼動状態情報を記述するためのデータツリーの例を示す図である。データツリーは、ツリーのパスによって属性値を指定できるように構成された、データの論理構造である。データツリーは、管理対象端末200から取得した稼動状態情報を記述するために使用することもできるし、管理対象端末200に対する制御命令を記述するために使用することもできる。
【0021】
図2に示すデータツリーは、管理対象端末200の基本情報を格納するDeviceInfoサブツリーと、管理対象端末200にインストールされているアプリケーションの属性情報を格納するApplicationInfoサブツリーを有する。ApplicationInfoサブツリーは、管理対象端末200にインストールされているアプリケーションと同数の子ノードを持ち、それぞれの子ノードは属性値として、アプリケーションのIDであるAppID、起動・停止状態を表すStatus、アプリケーションのバージョンを表すVersionを有する。ツリーのパスとして、/DeviceInfo/DeviceIDを指定すると、属性値D00001を取得し、または更新することができる。
【0022】
アプリケーション管理プログラム221はApplicationInfoサブツリーの属性値を取得または更新し、基本情報管理プログラム222はDeviceInfoサブツリーの属性値を取得または更新する。端末管理エージェント210は、管理対象端末200に対して稼動状態情報の取得または更新を指示する命令を受信すると、その命令の宛先に対応する端末管理プラグイン220内のサブプログラムに命令を振り分ける。
【0023】
図3は、基本情報管理テーブル141の構成とデータ例を示す図である。基本情報管理テーブル141は、DeviceInfoサブツリーの値を格納するテーブルであり、同サブツリーが有する各属性値に対応するフィールドを有する。
【0024】
図4は、アプリケーション情報管理テーブル142の構成とデータ例を示す図である。アプリケーション情報管理テーブル142は、ApplicationInfoサブツリーの値を格納するテーブルであり、同サブツリーが有する各属性値に対応するフィールドを有する。ただし、個々の管理対象端末200を識別するため、これらフィールドに加えてDeviceIDフィールドも備えている。
【0025】
基本情報管理テーブル141とアプリケーション情報管理テーブル142は、
図2に示すデータツリーのうち一部のノードを抽出し、RDBのスキーマ形式によって記述したテーブルである。RDBの形式でデータを格納することにより、RDBの検索性能を利用してデータツリーを検索することができる。データ項目を拡張する場合は、新たに追加するツリーノードに対応するテーブルを設け、同テーブルに対応するサブプログラムをサブツリー操作プログラム130と端末管理プラグイン220に追加すればよいので、ツリー形式の拡張性もそのまま利用することができる。
【0026】
端末管理サーバ100は、例えばAppID=A001のStatusをidleからactiveに変更するコマンドを管理対象端末200に対して発行することにより、停止状態にある管理対象端末200上のアプリケーションA001を起動させることができる。
【0027】
以上、端末管理システムの構成について説明した。以下では、端末管理システムの動作例について説明する。必要に応じて、具体例として、
図2〜
図4に記載しているデータを用いる。
【0028】
図5は、端末管理エージェント210に対して端末管理プラグイン220内のサブプログラムを登録する処理を説明するシーケンス図である。端末管理エージェント210は、端末管理サーバ100から稼動状態情報を取得または更新する命令を受け取ると、対応するサブプログラムに命令を振り分ける必要がある。このときの対応関係をあらかじめ定義しておく処理を、登録と呼ぶことにする。以下、
図5の各ステップについて説明する。
(
図5:ステップS501)
端末管理プラグイン220内のサブプログラムは、自身のプログラムパスと、管理するデータツリーのルートパスを、端末管理エージェント210に登録する。プログラムパスとは、端末管理プラグイン220のインスタンスが格納されるメモリ上のアドレスである。ルートパスとは、サブツリーのルートノード名である。例えばDeviceInfoツリーであればDeviceInfo、ApplicationInfoツリーであればApplicationInfoとなる。
(
図5:ステップS501:補足)
組込機器向けJavaプラットフォームであるOSGiでは、任意の文字列によるインスタンスの登録・検索機能であるServiceTrackerを設けているので、端末管理エージェント210と端末管理プラグイン220がOSGi上で動作するOSGiバンドルとして実装されている場合は、その機能を利用して本ステップを実施することができる。例えば、基本情報管理プログラム222は、自身に対応する命令を表す文字列としてDeviceInfoを指定し、自身のインスタンスをServiceTrackerに登録する。以後、端末管理エージェント210は、文字列「DeviceInfo」を指定することにより、基本情報管理プログラム222のインスタンスを検索し、その機能を呼び出すことができる。
【0029】
(
図5:ステップS502)
端末管理エージェント210は、端末管理プラグイン220内の対応するサブプログラムに対し、管理しているデータツリーを送信するよう要求する。
(
図5:ステップS503)
端末管理プラグイン220内のサブプログラムは、自身が管理するデータツリーを端末管理エージェント210に送信する。基本情報管理プログラム222はDeviceInfoツリーを送信し、アプリケーション管理プログラム221はApplicationInfoツリーを送信する。
(
図5:ステップS504)
端末管理エージェント210は、ステップS503で受信したデータツリーを端末側データツリー格納部230に格納する。
【0030】
図6は、端末管理サーバ100が管理対象端末200から稼動状態情報を記述したデータツリーを収集する処理を説明するシーケンス図である。以下、
図6の各ステップについて説明する。
(
図6:ステップS601)
端末管理エージェント210は、データツリーを端末側データツリー格納部230から読み込む。このとき読み込む値は、ツリーのパスと値のペアである。
図2に示したデータツリーを例にすると、パス/DeviceInfo/DeviceIDと値D00001、パス/DeviceInfo/Manufacturerと値CompanyA、パス/DeviceInfo/Modelと値SmartPhone、パス/ApplicationInfo/A001/AppIDと値A001、パス/DeviceInfo/Statusと値idle、パス/ApplicationInfo/A001/Versionと値1.0.1、パス/ApplicationInfo/A002/AppIDと値A002、パス/ApplicationInfo/A002/Statusと値active、/ApplicationInfo/A002/Versionと値2.2.0のペアが読み込まれる。
(
図6:ステップS602)
端末管理エージェント210は、ステップS601で読み込んだDeviceIDの値とデータツリーを、管理対象端末通信プログラム112に送信する。
(
図6:ステップS603)
管理対象端末通信プログラム112は、ステップS602で取得したDeviceIDの値とデータツリーを、データツリー操作プログラム121に送信する。以降、
図7の処理に進む。
【0031】
図7は、データツリー操作プログラム121がデータツリーをサーバ側データツリー格納部140に格納する処理を説明するシーケンス図である。以下、
図7の各ステップについて説明する。
(
図7:ステップS701)
データツリー操作プログラム121は、ステップS603で管理対象端末通信プログラム112から受け取ったデータツリーのルートパスを取得する。
図2のデータツリーの場合、DeviceInfoノードとApplicationInfoノードを取得する。
(
図7:ステップS702)
データツリー操作プログラム121は、ステップS701で取得したルートパスに対応するサブツリー操作プログラム130内のサブプログラムを特定する。アプリケーションサーバ向けJavaプラットフォームであるJavaEE(Enterprise Edition)では、OSGiと同様に、任意の文字列を用いてインスタンスを登録・検索する機構であるJNDI(Java Naming and Directory Interface)を設けているので、これを用いてサブプログラムを特定することができる。例えば基本情報操作プログラム131は、文字列DeviceInfoによって特定し、そのインスタンスをJNDIに登録することができる。本ステップにおいては、サブツリー操作プログラム130として、基本情報操作プログラム131とアプリケーション情報操作プログラム132のインスタンスが取得される。
【0032】
(
図7:ステップS703)
データツリー操作プログラム121は、ステップS702で取得したサブツリー操作プログラム130内のサブプログラムに対し、DeviceIDと対応するサブツリーを送信する。具体的には、パス/DeviceInfo/DeviceIDと値D00001、パス/DeviceInfo/Manufacturerと値CompanyA、パス/DeviceInfo/Modelと値SmartPhoneのペアが、基本情報操作プログラム131に渡され、パス/ApplicationInfo/A001/AppIDと値A001、パス/DeviceInfo/Statusと値idle、パス/ApplicationInfo/A001/Versionと値1.0.1、パス/ApplicationInfo/A002/AppIDと値A002、パス/ApplicationInfo/A002/Statusと値ative、/ApplicationInfo/A002/Versionと値2.2.0のペアが、アプリケーション情報操作プログラム132に渡される。
(
図7:ステップS704)
サブツリー操作プログラム130内の各サブプログラムは、ステップS703で受け取ったDeviceIDとデータツリーを、サーバ側データツリー格納部140内の、自身の管理するテーブルに格納する。具体的には、基本情報操作プログラム131は、受け取ったパスと値のペアを基本情報管理テーブル141に格納しアプリケーション情報操作プログラム132は、アプリケーション情報テーブルに格納する。
【0033】
図8は、管理者が管理者端末300を用いて管理対象端末200のアプリケーション状態を参照する処理を説明するシーケンス図である。以下、
図8の各ステップについて説明する。
(
図8:ステップS801)
端末操作プログラム310は、アプリケーション状態を参照する管理対象端末200のDeviceID、状態を参照するアプリケーションのAppID、アプリケーション状態が格納されるデータツリーのルートパスであるApplicationInfoを、管理者端末通信プログラム111に送信する。以降、DeviceIDをD00001、AppIDをA001として、説明する。
(
図8:ステップS802)
管理者端末通信プログラム111は、ステップS801で受信したDeviceIDと文字列ApplicationInfoを、データツリー操作プログラム121に送信する。データツリー操作プログラム121は、
図9で説明する処理によって対応する属性値を検索し、検索結果を管理者端末通信プログラム111に返信する。
図4に示すデータ例に拠れば、DeviceID=D00001、AppID=A001のレコードが、管理者端末通信プログラム111に返される。
【0034】
(
図8:ステップS803)
管理者端末通信プログラム111は、データツリー検操作プログラム121から受信したツリーデータを端末操作プログラム310に送信する。
(
図8:ステップS804)
端末操作プログラム310は、ステップS803で受信したツリーデータを管理者端末300上のディスプレイなどに表示する。具体的には、DeviceID=D00001、AppID=A001、Version=1.0.1、Status=idleが表示される。これにより管理者は、端末D00001のアプリケーションA001が停止状態にあることを知ることができる。
【0035】
図9は、データツリー操作プログラム121がデータツリー内から指定されたレコードを検索する処理を説明するシーケンス図である。以下、
図9の各ステップについて説明する。
(
図9:ステップS901)
データツリー操作プログラム121は、データツリー操作プログラム121の呼び出し元(管理者端末通信プログラム111または管理対象端末通信プログラム112)から受け取ったルートパスに対応する、サブツリー操作プログラム130内のサブプログラムを特定する。ルートパスがApplicationInfoの場合、アプリケーション情報操作プログラム132が特定される。
(
図9:ステップS902)
データツリー操作プログラム121は、ステップS901で特定したサブツリー操作プログラム130内のサブプログラムに、検索条件を送信する。
【0036】
(
図9:ステップS903)
サブツリー操作プログラム130内のサブプログラムは、受信した検索条件にしたがって、サーバ側データツリー格納部140内の自身が管理するテーブルから該当するレコードを検索し、検索結果をデータツリー操作プログラム121に送信する。例えば検索条件が、DeviceID=D00001、AppID=A001であった場合、
図4に示す1レコード目が取得される。
(
図9:ステップS904)
データツリー操作プログラム121は、ステップS903で取得した検索結果を、データツリー操作プログラム121の呼び出し元(管理者端末通信プログラム111または管理対象端末通信プログラム112)に返す。
【0037】
図10は、端末管理サーバ100が管理対象端末200に対して制御命令を発行する処理を説明するシーケンス図である。以下、
図10の各ステップについて説明する。
(
図10:ステップS1001)
端末操作プログラム310は、制御命令の宛先である管理対象端末200のDeviceID、更新するデータツリーのパス、および更新後の値を、管理者端末通信プログラム111に送信する。例えば、端末D00001のアプリケーションA001を起動する場合は、データツリーのパスは/ApplicationInfo/A001/Status、値はativeとなる。
(
図10:ステップS1002)
管理者端末通信プログラム111は、ステップS1001で受信したDeviceID、データツリーのパス、値をコマンド操作プログラム122に送信する。
(
図10:ステップS1003)
コマンド操作プログラム122は、ステップS1002で受信したDeviceID、データツリーのパス、値をコマンド管理テーブル150に格納する。
【0038】
図11は、コマンド管理テーブル150の構成とデータ例を示す図である。管理対象端末200に対する制御命令は、稼動状態情報と同じツリー形式によって記述することができる。ステップS1001の例の場合、
図11の1レコード目のように記述することができる。コマンド管理テーブル150に格納された制御命令は、
図12で説明するシーケンスによって実行される。
【0039】
図12は、端末管理サーバ100が発行した制御命令を管理対象端末200が実行する処理を説明するシーケンス図である。以下、
図12の各ステップについて説明する。
(
図12:ステップS1201)
端末管理エージェント210は、管理対象端末通信プログラム112に対して自身のDeviceIDを通知し、自身に対する制御命令が端末管理サーバ100から発行されているか否かを問い合わせる。
(
図12:ステップS1202)
管理対象端末通信プログラム112は、ステップS1201で受信したDeviceIDを、コマンド操作プログラム122に送信する。
【0040】
(
図12:ステップS1203)
コマンド操作プログラム122は、ステップS1202で受信したDeviceIDをコマンド管理テーブル150から検索し、検索結果を管理対象端末通信プログラム112に返す。DeviceID=D00001であれば、
図11の1レコード目が管理対象端末通信プログラム112に返される。
(
図12:ステップS1204)
管理対象端末通信プログラム112は、ステップS1203で受信した検索結果を、端末管理エージェント210に送信する。
(
図12:ステップS1205)
端末管理エージェント210は、ステップS1204で受信したレコードが記述しているデータツリーのパスからルートパスを求め、対応する端末管理プラグイン220内のサブプログラムを特定し、データツリーのパスと値を渡す。DeviceID=D00001であれば、データツリーのパスは/ApplicationInfo/A001/Statusであり、ルートパスはApplicationInfoとなるため、アプリケーション管理プログラム221が選択され、パス/ApplicationInfo/A001/Status、値ativeが渡される。アプリケーション管理プログラム221は、渡されたパスと値が指定する制御命令にしたがって、アプリケーションA001を起動する。
【0041】
<実施の形態1:まとめ>
以上のように、本実施形態1に係る端末管理サーバ100は、管理対象端末200との間で使用する遠隔管理プロトコルが使用するツリー形式データのうち一部のノードの属性値を格納する管理テーブルを備える。さらに端末管理サーバ100は、各管理テーブルに対してデータを書き込み、またはデータを読み取る操作プログラムを、管理テーブル毎に備えている。これにより、RDBの検索性能を保ちつつ、ツリー形式データの拡張性を利用して端末管理を柔軟に実施することができる。
【0042】
<実施の形態2>
実施形態1では、サブツリー操作プログラム130内のサブプログラム、対応する管理テーブル、および端末管理プラグイン220内のサブプログラムを追加することにより、RDB形式のテーブルを利用しつつデータツリーを拡張できることを説明した。本発明の実施形態2では、その1例として、管理用端末200のファームウェア情報を管理項目として新たに追加した構成例を説明する。
【0043】
図13は、本実施形態2に係る端末管理システム1000の構成図である。管理対象端末200上においては、端末管理プラグイン220内のサブプログラムとして、ファームウェア管理プログラム223が追加されている。端末管理サーバ100上においては、サブツリー操作プログラム130内のサブプログラムとして、ファームウェア情報操作プログラム133が追加されている。サーバ側データツリー格納部140には、ファームウェア情報テーブル143が追加されている。
【0044】
端末管理システム1000はさらに、バイナリ管理サーバ400を有する。バイナリ管理サーバ400は、管理対象端末200にファームウェア管理プログラム223を配信するためのサーバである。端末管理エージェント210は、端末管理サーバ100が発行する制御命令にしたがって、バイナリ管理サーバ400からファームウェア管理プログラム223をダウンロードし、管理対象端末200上にインストールする。
【0045】
図14は、管理対象端末200のファームウェア情報を管理する機能を端末管理システム1000に追加する処理を説明するシーケンス図である。以下、
図14の各ステップについて説明する。
(
図14:ステップS1401)
端末操作プログラム310は、管理者端末通信プログラム111に、ファームウェア情報操作プログラム133を送信する。
(
図14:ステップS1402)
管理者端末通信プログラム111は、ステップS1401で受信したファームウェア情報操作プログラム133を、端末管理サーバ100上で起動する。端末管理サーバ100のプラットフォームがJavaEEである場合、ファームウェア管理用のデータツリーのルートパスをあらわす文字列であるFarmwareInfoを指定して、ファームウェア情報操作プログラム133のインスタンスをJNDIに登録する。
【0046】
(
図14:ステップS1403)
ファームウェア情報操作プログラム133は、サーバ側データツリー格納部140に、ファームウェア情報管理テーブル143を生成する。ファームウェア情報管理テーブル143の構成については後述する。本ステップは、ファームウェア情報操作プログラム133に代えて、管理者などが手動で実施してもよい。
(
図14:ステップS1404)
端末操作プログラムは、ファームウェア管理プログラム223のバイナリを、バイナリ管理サーバ400にアップロードする。
【0047】
(
図14:ステップS1405)
端末管理サーバ100は、
図10で説明したものと同様の手順を用いて、管理対象端末200に対して、ファームウェア管理プログラム223をインストールするよう支持する制御命令を発行する。
(
図14:ステップS1406)
端末管理エージェント210は、
図12で説明したものと同様の手順を用いて、ステップS1405で発行された制御命令にしたがって、ファームウェア管理プログラム223を管理対象端末200にインストールする。
【0048】
(
図14:ステップS1407)
端末管理エージェント210は、
図5で説明したものと同様の手順を用いて、ファームウェア管理プログラム223を端末管理エージェント210上に登録する。ファームウェア管理プログラム223は、管理対象端末200のファームウェア情報を取得してFarmwareInfoツリーを生成し、端末管理エージェント210を介して、端末側データツリー格納部230に格納する。
(
図14:ステップS1408)
端末管理サーバ100は、
図6で説明したものと同様の手順を用いて、管理対象端末200のファームウェアに関するデータツリー(FarmwareInfoツリー)を収集してファームウェア情報管理テーブル143に格納する。
【0049】
以上のステップS1401からステップS1408までの処理により、端末管理システム1000にファームウェア管理機能が新たに追加される。以降、
図10で説明した登録処理と
図12で説明した実行処理によって、管理対象端末200に対して新たなファームウェアを配信し、その状態を管理することができる。
【0050】
図15は、ステップS1405において端末管理サーバ100が発行する制御命令を格納したコマンド管理テーブル150の構成を例示する図である。
図15に示すデータ例において、ファームウェア管理プログラム223のAppIDはA003であり、/ApplicationInfo/A003/URL属性にはファームウェア管理プログラム223のダウンロード元URLとして133.108.xxx.xxx/Application/A003が指定され、/ApplicationInfo/A003/Status属性にはバイナリのダウンロードとインストール開始を指示するdownloadAndInstallが指定されている。
【0051】
端末管理エージェント210は、
図15に例示するような制御命令にしたがって、ダウンロード元である133.108.xxx.xxx/Application/A003からファームウェア管理プログラム223をダウンロードし、管理対象端末200上にインストールする。
【0052】
図16は、FarmwareInfoツリーの1例を示す図である。FarmwareInfoツリーは、ファームウェア情報を保持する属性値として、FarmID、Version、ByteSizeを有する。
【0053】
図17は、ファームウェア情報管理テーブル143の構成とデータ例を示す図である。ファームウェア情報管理テーブル143は、FarmwareInfoサブツリーの値を格納するテーブルであり、同サブツリーが有する各属性値に対応するフィールドを有する。ただし、個々の管理対象端末200を識別するため、これらフィールドに加えてDeviceIDフィールドも備えている。
【0054】
<実施の形態2:まとめ>
以上のように、本実施形態2においては、管理対象端末200の管理対象項目を追加する例として、ファームウェア情報を管理する機能を例示した。本実施形態2で説明したように、追加する管理対象項目を記述するツリーノードに対応して、サブツリー操作プログラム130、対応する管理テーブル、および端末管理プラグインを追加することにより、端末管理システム1000に新たな機能を動的に追加することができる。これはツリー形式のデータフォーマットの利点を活かしたものであると同時に、RDBの検索性能を利用することができる点で、有用であると考えられる。