(57)【特許請求の範囲】
【請求項１】

データ管理オブジェクトに記憶されたデータを、表示オブジェクトによりコンピュータディスプレイ上に複数のビューとして表示するデータ表示方法において、
データ管理オブジェクトが、相互の関連性に基づいて複数のグループに分割されたデータを記憶すると共に、前記グループを表す管理カテゴリ識別子、及び該データ管理オブジェクトの処理動作を表す管理ポリシー識別子を保持し、
前記データ管理オブジェクトとの間及び表示オブジェクトとの間で関連を有して該データ管理オブジェクトと表示オブジェクトとの間を仲介オブジェクトが仲介すると共に、
該仲介オブジェクトが、相互に関連を有してツリー構造を構成し、関連を有するデータ管理オブジェクトの探索処理を、該データ管理オブジェクトに保持された管理カテゴリ識別子及び管理ポリシー識別子に応じて、前記ツリー構造に沿って行い、
表示オブジェクトが、前記データ管理オブジェクトにより記憶されたデータの表示処理を行うデータ表示方法であって、  
表示処理を実行するためのメッセージを送信する場合、
表示オブジェクトが、メッセージを仲介オブジェクトに送出し、
仲介オブジェクトが、関連を有するデータ管理オブジェクトの中から前記メッセージに応答可能なデータ管理オブジェクトを検索し、該応答可能なデータ管理オブジェクトが存在しない場合は、ツリー構造に沿って他の仲介オブジェクトに再帰的検索を依頼し、該再帰的検索により前記応答可能なデータ管理オブジェクトが存在する場合は、該データ管理オブジェクトに対してメッセージを送信し、前記再帰的検索により応答可能なデータ管理オブジェクトが存在しない場合は、メッセージ送信エラーを発生することを特徴とするデータ表示方法。
【請求項２】

データ管理オブジェクトに記憶されたデータを、表示オブジェクトによりコンピュータディスプレイ上に複数のビューとして表示するデータ表示方法において、
データ管理オブジェクトが、相互の関連性に基づいて複数のグループに分割されたデータを記憶すると共に、前記グループを表す管理カテゴリ識別子、及び該データ管理オブジェクトの処理動作を表す管理ポリシー識別子を保持し、
前記データ管理オブジェクトとの間及び表示オブジェクトとの間で関連を有して該データ管理オブジェクトと表示オブジェクトとの間を仲介オブジェクトが仲介すると共に、
該仲介オブジェクトが、相互に関連を有してツリー構造を構成し、関連を有するデータ管理オブジェクトの探索処理を、該データ管理オブジェクトに保持された管理カテゴリ識別子及び管理ポリシー識別子に応じて、前記ツリー構造に沿って行い、
表示オブジェクトが、前記データ管理オブジェクトにより記憶されたデータの表示処理を行うデータ表示方法であって、  
データ管理オブジェクトに記憶されたデータの更新イベントを通知する場合、
データ管理オブジェクトが、更新イベントを仲介オブジェクトに送出し、
仲介オブジェクトが、更新イベントに含まれる管理カテゴリ識別子に基づいて、該仲介オブジェクトに関連する表示オブジェクトに更新イベントを通知し、更新イベントに含まれる管理カテゴリ識別子及び該仲介オブジェクトに関連するデータ管理オブジェクトの管理ポリシー識別子に基づいて、ツリー構造に沿って他の仲介オブジェクトに再帰的に更新イベントを通知することを特徴とするデータ表示方法。
【請求項３】

データ管理オブジェクトに記憶されたデータを、表示オブジェクトによりコンピュータディスプレイ上に複数のビューとして表示するデータ表示方法において、
データ管理オブジェクトが、相互の関連性に基づいて複数のグループに分割されたデータを記憶すると共に、前記グループを表す管理カテゴリ識別子、及び該データ管理オブジェクトの処理動作を表す管理ポリシー識別子を保持し、
前記データ管理オブジェクトとの間及び表示オブジェクトとの間で関連を有して該データ管理オブジェクトと表示オブジェクトとの間を仲介オブジェクトが仲介すると共に、
該仲介オブジェクトが、相互に関連を有してツリー構造を構成し、関連を有するデータ管理オブジェクトの探索処理を、該データ管理オブジェクトに保持された管理カテゴリ識別子及び管理ポリシー識別子に応じて、前記ツリー構造に沿って行い、
表示オブジェクトが、前記データ管理オブジェクトにより記憶されたデータの表示処理を行うデータ表示方法であって、  
データ管理オブジェクトの初期化処理を行う場合、
仲介オブジェクトが、初期化対象となる管理カテゴリ識別子を保持するデータ管理オブジェクトを検索し、該管理カテゴリ識別子を保持するデータ管理オブジェクトが存在する場合は、データ管理ポリシー識別子がデータの初期化処理を表しているデータ管理オブジェクトに対して、該仲介オブジェクトのツリー構造に沿った他の仲介オブジェクトに関連するデータ管理オブジェクトのデータからコピーする初期化処理を実行し、前記管理カテゴリ識別子を保持するデータ管理オブジェクトが存在しない場合は、ツリー構造に沿って他の仲介オブジェクトが再帰的に前記初期化処理を実行し、
データ管理オブジェクトの参照処理を行う場合、
仲介オブジェクトが、参照対象となる管理カテゴリ識別子を保持するデータ管理オブジェクトを検索し、該管理カテゴリ識別子を保持するデータ管理オブジェクトが存在する場合は、データ管理ポリシー識別子がデータの参照処理を表しているデータ管理オブジェクトに対して、該仲介オブジェクトのツリー構造に沿った他の仲介オブジェクトに関連するデータ管理オブジェクトのデータを参照する参照処理を実行し、前記管理カテゴリ識別子を保持するデータ管理オブジェクトが存在しない場合には、ツリー構造に沿って他の仲介オブジェクトが再帰的に前記参照処理を実行することを特徴とするデータ表示方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一定のスキーマに基づいてメモリーに読み込まれたデータ集合を、コンピュータディスプレイ上に、種々の形式で複数のビューとして表示するデータ表示システムの構成技術に関するものである。
【０００２】
【従来の技術】
データ表示システムは、データ集合を文書形式、表形式、数値グラフ形式、グラフィック図形形式等、種々の形式で複数のビューに表示できることが必要である。このためのシステムでは、同一のデータ集合に対して複数のビューを表示させる場合、更に、データ集合の値の更新を的確なタイミングで各ビューに反映させることが必要である。また、種々のビューのバリエーションが追加された場合でも既存のソースコードの変更を抑えることが必要になる。
【０００３】
従来、種々の表示を行う場合、オブジェクト指向ソフトウェア構成技術におけるＭＶＣ(Model, View, Control)パターンによって上記の要件を実現している。ＭＶＣパターンについては、例えば、E.Gamma,R.Helem,J.Johnson,J.Vissides,「デザインパターン」（本位田真一、吉田和樹監訳、ソフトバンク、1995）、及び、F.Bushmann,R.Meunier,H.Rohnert,P.Sommerlad,M.Stal,「ソフトウェアアーキテクチャ」（金澤典子他訳、トッパン、1999）に詳細が記載されている。ＭＶＣは、データ集合を保持するModelオブジェクトと、そのModelオブジェクトからデータの値を取得してディスプレイ上に表示するViewオブジェクトと、ユーザーの入力イベントを受け取りViewオブジェクトの情報に基づいてModelオブジェクトの内容を変更するControllerオブジェクトから構成される。
【０００４】
ＭＶＣにおいては、データの更新イベントがModelオブジェクトからViewオブジェクトへ通知され、それを受けたViewオブジェクトがModelオブジェクトの内容にアクセスして実際の表示処理を実行する。即ち、Modelオブジェクトは、表示処理の内容に依存しないように定義される。このため、一つのModelオブジェクトに対し複数のViewオブジェクトとControllerオブジェクトとを組合せることが可能である。このように、ＭＶＣを用いることにより、同一のデータ集合に対して複数のビューを表示し、的確なタイミングでそれを更新することが可能である。その際、Modelオブジェクトの定義は変更する必要が無いため既存のソースコードの変更を抑える拡張が可能である。
【０００５】
また、ユーザーの理解及び操作を助けるため、データ集合を異なる抽象度で複数ビューに表示することが必要となる場合がある。その場合、データの抽象度に応じて元のデータ集合の一部を変換し、又は新たな表示パラメータを追加することが必要になる。また、データ集合を共有する他のビューの処理に影響が及ばないようにすることが必要になる。従来は、これを、オブジェクト指向ソフトウェア構成技術におけるＰＡＣ(Presentation, Abstraction, Control)パターンによって実現している。ＰＡＣパターンについては、例えば、F.Bushmann,R.Meunier,H.Rohnert,P.Sommerlad,M.Stal,「ソフトウェアアーキテクチャ」（金澤典子他訳、トッパン、1999）に詳細が記載されている。
【０００６】
ＰＡＣは、複数のControlオブジェクトをポインタによってツリー状に構成し、下位の複数のオブジェクトが上位の一つのオブジェクトを共有し参照する。データ集合はAbstractionオブジェクトに格納され、データの表示及び操作の処理はPresentationオブジェクトが実行する。Controlオブジェクトは、二つのオブジェクト間に介在し、データアクセスの制御及びメッセージの転送を行う。
【０００７】
ＰＡＣにおいては、Abstractionオブジェクトへのアクセスの際にControlオブジェクトを介してツリーの上位のAbstractionオブジェクトから予めデータの内容をコピーしておくか又はアクセスが行われた時点で間接的にアクセスを行う。また、更新イベントの通知の際、ツリーの上位から下位へブロードキャストを行う。このように、ＰＡＣを用いることにより、抽象度に応じてデータの変換又は表示パラメータの追加等を行うことが可能になる。また、データ集合を共有する他のビューの処理に影響が及ばないようにすることが可能になる。
【０００８】
しかしながら、ＰＡＣにおけるデータ集合の共有関係は、Controlオブジェクトを定義する際にツリーの親又は子として実装されたControlオブジェクトにより固定的に決定される。即ち、同じ種類のControlオブジェクトが兄弟関係にあるノードとして追加されるような数的な変更はコーディングレスに行うことができるが、親ノードの種類、子ノードの種類、多段階の共有関係における段数、それらの間の順序等、構造的な変更を行うことはできない。
【０００９】
高度な対話処理を行うデータ表示システムでは、データ集合の共有関係を構造的に変更できることが望ましいが、ＰＡＣでは、それらの変更が生じた場合はソースコードを逐一修正することによって対応する必要がある。
【００１０】
データ表示システムにおいて、データ集合を管理するオブジェクト、即ちデータ管理オブジェクトの定義の良否は、開発コストに大きな影響を与える。ＭＶＣにおいては、Modelオブジェクトがデータ管理オブジェクトに相当する。ＰＡＣにおいては、ControlオブジェクトとAbstractionオブジェクトとの組がデータ管理オブジェクトに相当する。
【００１１】
ＭＶＣを用いる場合、Modelオブジェクトは常に一つのオブジェクトとなる。これは、処理の定義を分割管理することができないことを意味する。従って、表示内容の色、大きさ、位置等を制御するパラメータ（表示パラメータ）の数又は表示を更新するイベント（更新イベント）の種類が増加した場合等には、Modelオブジェクトの定義はそれらを単純に包含したものになる。
【００１２】
このため、ＭＶＣでは表示の多様性に伴ってプログラムロジックが急激に複雑化する傾向がある。また、表示機能の仕様を変更する際、一度に大量のソースコードを解析する必要がある。更に、その変更内容の事前検証、実装変更、試験、デバッグ等の作業コストが増大し、間違いも生じ易くなる。特に、変更が局所的な場合でもその影響は広域に及ぶため、作業効率は著しく低下する。また、プログラムの保守及び管理においても、仕様の微細な違いにより多数のバリエーションが発生する。
【００１３】
ＰＡＣを用いる場合、ＭＶＣのModelオブジェクトに相当する機能はAbstractionオブジェクトとControlオブジェクトとで実現される。Controlオブジェクトが構成するツリーに着目すると、データ管理オブジェクトに相当する処理要素は複数存在する。しかし、これらは機能の分割によるものではなく、それぞれが単独のデータ管理オブジェクトとして機能するものであるため、重複する定義内容が多い。このため、データ管理オブジェクト（AbstractionオブジェクトとControlオブジェクトとの組）一つを記述するのに必要なソースコード量はＭＶＣと基本的に変わらず、ＭＶＣが抱える課題は改善されない。
【００１４】
更に、ＰＡＣ上でデータ集合の共有関係を構造的に変更する場合には、逐一ソースコードの修正が必要である。このことから、ＭＶＣの課題と相俟って保守及び管理作業の効率の低下及びプログラムの質の低下が顕著に現れる。
【００１５】
具体的な例として、地図表示プラットフォームRouteViewについて説明する。RouteViewは、業務内容毎に作成されたアプリケーションを読み込み、それに基づいて屋外通信施設等の管理データベースを検索し、地図データと重ね合わせてグラフィック表示する機能を提供する。また、ユーザーはポインティングデバイスによって図形を選択し、その内容に基づいて新たな検索を行い、別のウィンドウに結果を表示することができる。
【００１６】
RouteViewは、OPENSTEP上に実装されており、プログラミング言語はObjective-Cを用いている。Objective-Cでは、メッセージ識別子による応答可能オブジェクトの判定、メッセージ受信時における他オブジェクトへの転送等の実行時機能が利用できる。そのため、メッセージ送信処理は直接実装することができる。
【００１７】
図１３は、RouteViewの主要なオブジェクトの構成を示す図である。矩形で描かれたオブジェクトがデータ管理オブジェクトであり、円で描かれたオブジェクトが外部オブジェクトである。データ管理オブジェクトには、Document Controller、Document及びViewがある。Document Controllerは、RouteViewに対して常に一つだけ存在し、ＯＳ上における動作環境設定及びデータベースに対する動作パラメータを保持する。Documentは、RouteViewにロードされた業務アプリケーション毎に存在し、アプリケーションの動作パラメータを保持する。
【００１８】
外部オブジェクトは、検索結果データ毎に存在し、地図図形表示に必要な表示パラメータ及びポインティングデバイスに対する動作条件等の動作パラメータを保持する。外部オブジェクトには、システム設定ＧＵＩ表示オブジェクト、データベース検索オブジェクト、アプリケーションローダ、アプリケーション設定ＧＵＩ表示オブジェクト、地図画面表示オブジェクト、ウィンドウ表示オブジェクト等が存在する。これらの外部オブジェクトは、データ管理オブジェクトにアクセスして各種入出力処理を行う。
【００１９】
また、RouteViewで定義される管理カテゴリは、Global、Application、View、Map、Graphic及びDataである。Globalは共通パラメータであり、例えば印刷のページサイズ、作業ディレクトリの位置、サイズ等である。Applicationは業務アプリケーションのパラメータであり、例えばビュー構成に関する情報等である。Viewはビューに関連するＧＵＩのパラメータであり、例えば表示拡大率、図形選択モード等である。Mapは背景となる地図のパラメータであり、例えば地図の種類、縮尺率、地図ファイル検索ディレクトリ等である。Graphicは図形生成のためのパラメータであり、例えば生成図形の種類、色、サイズ、表示モード等である。Dataは設備管理データベース検索結果データであり、例えば検索結果のテーブルデータ、特定カラムの最大値、最小値等である。
【００２０】
図１４は、従来技術によって複数ビュー表示を行う場合のデータ管理方法を説明するための図である。図示のように、表示パラメータ（管理カテゴリGraphic）と検索結果（管理カテゴリData）とのデータ共有関係を変更した時に、（ａ）（ｂ）（ｃ）のようにDocumentオブジェクトとViewオブジェクトとの管理処理の内容が異なってしまう。これを実装する場合は、それぞれの共有関係に応じて異なるバリエーションを実装する方法、これらの機能を全て実現するオブジェクトを実装する方法等が考えられる。しかしながら、前者は多くのバリエーションを維持管理するために多大のコストを必要とし、後者は複雑な処理を定義するために多大のコストを必要とする。
【００２１】
図１５は、従来技術によって異なる抽象度により複数ビュー表示の追加を行う場合のデータ管理方法を説明するための図である。具体的には、（ｂ）View'オブジェクトに対応するウィンドウで地図上の範囲を指定し、より詳細な地図の表示を（ｃ）Detail Viewオブジェクトとそれに対応するウィンドウとで行う場合を示す。ビューの追加に際して、各データ管理オブジェクトの定義に対する修正の必要性は次の通りである。
【００２２】
先ず、（ｃ）Detail Viewオブジェクトは、上位の（ｂ）View'オブジェクトからデータをコピー又は参照するよう新規に定義する必要がある。次に、（ｂ）View'オブジェクトは、追加前のViewオブジェクトに対して管理カテゴリMapのデータ管理が加えられているため、定義の修正が必要である。また、（ａ）Document'オブジェクトについても（ｂ）View'オブジェクトに対する管理カテゴリMapの追加に伴い、上位の管理カテゴリMapとしてデータを公開するための修正が必要になる。更に、（ａ）（ｂ）（ｃ）の間で適切にデータ更新イベントが伝播されるように、この共有関係専用の定義を行わなければならない。
【００２３】
以上示したように、抽象度の異なるビュー表示を追加する場合、多くのデータ管理オブジェクトに修正を加えることが必要になる。この状況は、図１４で示した複数ビュー表示のバリエーションと組合された場合に更に顕著になる。このように、従来技術によれば、抽象度の異なるビューの開発コストが著しく大きくなることがわかる。
【００２４】
【発明が解決しようとする課題】
本発明の目的は、種々のバリエーションを複数のビューに表示する場合に、データの共有関係の構造的変更をコーディングレスで行うことができ、新たな抽象度のビューの追加を既存のソースコードの僅かな修正によって行うことができるデータ表示方法及びデータ表示装置を提供することにある。
【００２５】
【課題を解決するための手段】
本発明のデータ表示方法は、上記の目的を達成するため、データ管理オブジェクトに記憶されたデータを、表示オブジェクトによりコンピュータディスプレイ上に複数のビューとして表示するデータ表示方法において、データ管理オブジェクトが、相互の関連性に基づいて複数のグループに分割されたデータを記憶すると共に、前記グループを表す管理カテゴリ識別子、及び該データ管理オブジェクトの処理動作を表す管理ポリシー識別子を保持し、前記データ管理オブジェクトとの間及び表示オブジェクトとの間で関連を有して該データ管理オブジェクトと表示オブジェクトとの間を仲介オブジェクトが仲介すると共に、該仲介オブジェクトが、相互に関連を有してツリー構造を構成し、関連を有するデータ管理オブジェクトの探索処理を、該データ管理オブジェクトに保持された管理カテゴリ識別子及び管理ポリシー識別子に応じて、前記ツリー構造に沿って行い、表示オブジェクトが、前記データ管理オブジェクトにより記憶されたデータの表示処理を行うことを特徴とする。
【００２６】
本発明のデータ表示方法において、表示処理を実行するためのメッセージを送信する場合、表示オブジェクトが、メッセージを仲介オブジェクトに送出し、仲介オブジェクトが、関連を有するデータ管理オブジェクトの中から前記メッセージに応答可能なデータ管理オブジェクトを検索し、該応答可能なデータ管理オブジェクトが存在しない場合は、ツリー構造に沿って他の仲介オブジェクトに再帰的検索を依頼し、該再帰的検索により前記応答可能なデータ管理オブジェクトが存在する場合は、該データ管理オブジェクトに対してメッセージを送信し、前記再帰的検索により応答可能なデータ管理オブジェクトが存在しない場合は、メッセージ送信エラーを発生するようにしてもよい。
【００２７】
本発明のデータ表示方法において、データ管理オブジェクトに記憶されたデータの更新イベントを通知する場合、データ管理オブジェクトが、更新イベントを仲介オブジェクトに送出し、仲介オブジェクトが、更新イベントに含まれる管理カテゴリ識別子に基づいて、該仲介オブジェクトに関連する表示オブジェクトに更新イベントを通知し、更新イベントに含まれる管理カテゴリ識別子及び該仲介オブジェクトに関連するデータ管理オブジェクトの管理ポリシー識別子に基づいて、ツリー構造に沿って他の仲介オブジェクトに再帰的に更新イベントを通知するようにしてもよい。
【００２８】
本発明のデータ表示方法において、データ管理オブジェクトの初期化処理を行う場合、仲介オブジェクトが、初期化対象となる管理カテゴリ識別子を保持するデータ管理オブジェクトを検索し、該管理カテゴリ識別子を保持するデータ管理オブジェクトが存在する場合は、データ管理ポリシー識別子がデータの初期化処理を表しているデータ管理オブジェクトに対して、該仲介オブジェクトのツリー構造に沿った他の仲介オブジェクトに関連するデータ管理オブジェクトのデータからコピーする初期化処理を実行し、前記管理カテゴリ識別子を保持するデータ管理オブジェクトが存在しない場合は、ツリー構造に沿って他の仲介オブジェクトが再帰的に前記初期化処理を実行し、データ管理オブジェクトの参照処理を行う場合、仲介オブジェクトが、参照対象となる管理カテゴリ識別子を保持するデータ管理オブジェクトを検索し、該管理カテゴリ識別子を保持するデータ管理オブジェクトが存在する場合は、データ管理ポリシー識別子がデータの参照処理を表しているデータ管理オブジェクトに対して、該仲介オブジェクトのツリー構造に沿った他の仲介オブジェクトに関連するデータ管理オブジェクトのデータを参照する参照処理を実行し、前記管理カテゴリ識別子を保持するデータ管理オブジェクトが存在しない場合は、ツリー構造に沿って他の仲介オブジェクトが再帰的に前記参照処理を実行するようにしてもよい。
【００２９】
また、本発明のデータ表示装置は、任意のデータをコンピュータディスプレイ上に複数のビューとして表示するデータ表示装置において、相互の関連性に基づいて複数のグループに分割したデータをそれぞれ記憶し、前記グループを表す管理カテゴリ識別子及び処理動作を表す管理ポリシー識別子をそれぞれ保持する複数のデータ管理オブジェクトと、該データ管理オブジェクトにより記憶されたデータの表示処理をそれぞれ行う複数の表示オブジェクトと、相互に関連を有してツリー構造を構成すると共に、前記データ管理オブジェクトとの間及び表示オブジェクトとの間で関連を有して該データ管理オブジェクトと表示オブジェクトとの間を仲介し、関連を有するデータ管理オブジェクトの探索処理を、該データ管理オブジェクトに保持された管理カテゴリ識別子及び管理ポリシー識別子に応じて、前記ツリー構造に沿ってそれぞれ行う複数の仲介オブジェクトとを備えたことを特徴とする。
【００３０】
このような本発明によれば、管理カテゴリ毎にデータ管理オブジェクトの定義及び動作が独立していること、データ管理オブジェクトの動作を管理ポリシーの変更によって実行時に変更することができること、仲介オブジェクトの情報交換機能によりデータ管理オブジェクト及び表示オブジェクトを含む外部オブジェクトを定義する際に情報交換のための処理を記述する必要が無いこと、データ管理オブジェクトを単純な定義の集合によって構成できるのでプログラムロジックの複雑化を避けることができること、データ共有構造の変更をコーディングレスに行うことができること等、従来技術には無い特徴を実現することができる。
【００３１】
【発明の実施の形態】
図１は、本発明のデータ表示装置の構成例を示す図である。データ管理オブジェクト10は、従来のＭＶＣのModelオブジェクト又はＰＡＣのAbstractionオブジェクトとControlオブジェクトとの組によって実現されていたデータ管理オブジェクトを複数に分割したものに相当する。データ管理オブジェクト10は、データ間の相互依存性、データ変更イベントの類似性及びデータアクセスメソッドの関連性を基準に、グループ化されたデータ集合及びメソッド定義によって構成する。データ管理オブジェクトの定義は、管理処理の内容に応じて、基本データ管理クラスからの継承によって作成する。ここで継承とは、オブジェクト指向プログラミングにおけるソースコードの定義手法を指す。
【００３２】
管理カテゴリ識別子11は、データ管理オブジェクト10のグループ化の観点を表すデータである。これは、アプリケーション開発者が、アプリケーションのドメインに応じて任意に定義することができる。
【００３３】
管理ポリシー識別子12は、各データ管理オブジェクト10の動作を制御するデータである。これは、Block、Copy、Refer及びShareの４値によって表される。それぞれの意味は後述する。
【００３４】
仲介オブジェクト13-1は、メッセージ送信処理、変更イベント通知処理及びデータ内容管理処理において、情報交換の仲介機能を担う。更に、仲介オブジェクト13-1は、複数のデータ管理オブジェクト10との間に双方向ポインタを持つ。一つの仲介オブジェクトに対し、同一の管理カテゴリ識別子を持つデータ管理オブジェクトが二つ以上関連付けられることは基本的に無いものとする。また、仲介オブジェクト13-1は、仲介オブジェクト13-2のデータを参照するため双方向ポインタを持つ。更に、仲介オブジェクト13-3及び13-4に対してデータを公開するため双方向ポインタを持つ。
【００３５】
共有関係ツリー14は、仲介オブジェクト13-1、13-2、13-3及び13-4によって構成されるツリー構造全体である。外部オブジェクト15は、データにアクセスする仲介オブジェクト13-1への片方向ポインタを持つ。外部オブジェクト15は、例えば、実際に表示処理を行う表示オブジェクトを含む。
【００３６】
図２は、更新イベント伝播処理に着目した本発明のデータ表示装置の構成例を示す図である。更新イベント通知対象リスト20は、更新イベントが発生した場合に通知すべき外部オブジェクトを記憶するリストである。管理カテゴリ識別子21は、更新イベント通知対象リスト20の各要素に一つずつ格納される。外部オブジェクトへのポインタ22は、管理カテゴリ識別子21に関する更新イベントが発生した時に通知する外部オブジェクトへのポインタである。メッセージ識別子23は、管理カテゴリ識別子21に関する更新イベントが発生して外部オブジェクトへのポインタ22が指すオブジェクトへ通知する時に呼び出されるメッセージの識別子である。
【００３７】
図３は、共有関係ツリー14におけるデータ内容管理、更新イベント通知及びメッセージ送信の各処理について、管理ポリシー識別子に対応させて動作内容を表すテーブルを示す図である。データ内容管理は、データ管理オブジェクトにおいてデータの値を参照又は変更する時のアクセス先の制御を示す。更新イベント通知は、データの値が変更された時の伝播範囲の制御を示す。メッセージ送信は、外部オブジェクトから仲介オブジェクトへ送られるメッセージの送信先の制御を示す。また、テーブルの最右側欄は、データ管理オブジェクト自体が仲介オブジェクトのポインタ先に無い場合の処理を示す。
【００３８】
図４は、メッセージ送信処理の基本動作のフローを示す図である。表示オブジェクト等の外部オブジェクトから仲介オブジェクトへメッセージが送出されると、仲介オブジェクトはメッセージの送信先の探索処理を開始する。探索処理では、仲介オブジェクトが保持する複数のポインタからメッセージに反応可能なデータ管理オブジェクトを検索する。該当するデータ管理オブジェクトが得られた場合はそれにメッセージを送信し、探索処理を終了する。該当するデータ管理オブジェクトが得られなかった場合は、共有関係ツリーにおいて親に相当する他の仲介オブジェクトに対して探索処理を再帰的に実行する。共有関係ツリーの最も上位の仲介オブジェクトは、親に相当するオブジェクトが存在しないので、メッセージ送信エラーを発生し、探索処理を終了する。
【００３９】
図５は、イベント通知処理の基本動作のフローを示す図である。データ管理オブジェクトにおいてデータの値の変更が行われた場合、それを参照するオブジェクトに更新イベントの通知を行う必要がある。先ず、データ管理オブジェクトは、自己へのポインタを保持する仲介オブジェクトへ更新イベントを通知する。この時、更新イベントの情報に、データ管理オブジェクトの管理カテゴリ識別子の情報を含むように通知する。
【００４０】
その通知を受けた仲介オブジェクトは、その通知の伝播処理を開始する。伝播処理では、更新イベントに含まれるカテゴリ情報に基づいて仲介オブジェクトが保持する複数のポインタから同じカテゴリのデータ管理オブジェクトを検索する。該当するデータ管理オブジェクトが得られない場合は、共有関係ツリーにおいて子に相当する他の仲介オブジェクト全てについて伝播処理を再帰的に実行する。該当するデータ管理オブジェクトが得られた場合は、管理ポリシー識別子を調べる。管理ポリシー識別子がRefer又はShareの場合、仲介オブジェクトに登録されているイベント通知対象の外部オブジェクトへ更新イベントを通知し、引き続いて共有関係ツリーにおいて子に相当する他の仲介オブジェクト全てについて伝播処理を再帰的に実行する。識別子がBlock又はCopyの場合、イベントは通知せず、伝播処理を終了する。
【００４１】
図６は、データ内容管理処理の初期化時の基本動作のフローを示す図である。データ内容の初期化は、共有関係ツリー上の仲介オブジェクトにデータ管理オブジェクトのポインタが設定されるか又は明示的に外部オブジェクトから管理カテゴリを指定して初期化メッセージが送出されることによって行われる。それを受けた仲介オブジェクトが初期化処理を開始する。
【００４２】
初期化処理では、仲介オブジェクトが保持する複数のポインタから初期化対象となる管理カテゴリのデータ管理オブジェクトを検索する。該当するデータ管理オブジェクトが得られない場合は、共有関係ツリーにおいて親に相当する他の仲介オブジェクトについて初期化処理を再帰的に実行する。該当するデータ管理オブジェクトが得られた場合は、既に初期化されているか否かを調べる。既に初期化されている場合は初期化処理を終了し、未だ初期化されていない場合は、引き続き管理ポリシー識別子を調べる。識別子がCopyの場合、先ず共有関係ツリーにおいて親に相当する他の仲介オブジェクトについて初期化処理を再帰的に実行し、引き続いて該当する管理カテゴリ識別子を持つ先祖ノードのデータ管理オブジェクトから必要な部分をコピーし、初期化処理を終了する。識別子がCopy以外の場合、何も実行せずに初期化処理を終了する。
【００４３】
図７は、データ内容管理処理の参照時の基本動作のフローを示す図である。データ内容の参照は、データ管理オブジェクトにおいて自己が保持していないデータを参照する時に発生する。それを受けた仲介オブジェクトは参照処理を開始する。
【００４４】
参照処理では、仲介オブジェクトが保持する複数のポインタから参照対象となる管理カテゴリのデータ管理オブジェクトを検索する。該当するデータ管理オブジェクトが得られない場合は、共有関係ツリーにおいて親に相当する他の仲介オブジェクトについて参照処理を再帰的に実行する。該当するデータ管理オブジェクトが得られた場合は、それが保持している管理ポリシー識別子を調べる。管理ポリシーがReferの場合は、先ず共有関係ツリーにおいて親に相当する他の仲介オブジェクトについて参照処理を再帰的に実行し、引き続いて該当する管理カテゴリ識別子を持つ先祖ノードのデータ管理オブジェクトから必要な部分を参照し、参照処理を終了する。識別子がRefer以外の場合、何も実行せずに参照処理を終了する。
【００４５】
図８は、データ内容管理処理の動作概念を示す図である。ツリー中段の仲介オブジェクトにおいて、動作対象の管理カテゴリに該当するデータ管理オブジェクトが存在する場合、そのデータ管理オブジェクトのポリシーが異なる場合の動作の違いを示す。図（ａ）はBlockの場合、図（ｂ）はCopyの場合、図（ｃ）はReferの場合、図（ｄ）はShareの場合をそれぞれ示す。
【００４６】
図９は、イベント通知処理の動作概念を示す図である。図８の場合と同様にデータ管理オブジェクトのポリシーが異なる場合の動作の違いを示す。図（ａ）はBlock及びCopyの場合、図（ｂ）はRefer及びShareの場合をそれぞれ示す。
【００４７】
図１０は、データ管理オブジェクトが無い場合のデータ内容管理処理、メッセージ送信処理及びイベント通知処理の動作概念を示す図である。データ管理オブジェクトが無い状態とは、ツリー中段の仲介オブジェクトに動作対象の管理カテゴリに該当するデータ管理オブジェクトが存在しない場合を意味する。
【００４８】
【実施例】
次に本発明の具体的な実施例として、地図表示プラットフォームRouteViewについて説明する。RouteViewは、上述のように、業務内容毎に作成されたアプリケーションを読み込み、それに基づいて屋外通信施設等の管理データベースを検索し、地図データと重ね合わせてグラフィック表示する機能を提供する。また、ユーザーはポインティングデバイスによって図形を選択し、その内容に基づいて新たな検索を行い、別のウィンドウに結果を表示することができる。
【００４９】
RouteViewは、OPENSTEP上に実装されており、プログラミング言語はObjective-Cを用いている。本発明はRouteViewの内部クラスとして組み込まれているため、同じプログラミング言語を用いて実装されている。Objective-Cでは、メッセージ識別子による応答可能オブジェクトの判定、メッセージ受信時における他オブジェクトへの転送等の実行時機能が利用できる。そのため、メッセージ送信処理は直接実装することができる。
【００５０】
Ｊａｖａ、Ｃ＋＋等の他のオブジェクト指向言語では、このような実行時機構を利用できない場合があるが、その場合は、外部オブジェクトからのメッセージ送信を単一メッセージの呼び出しに置き換えることによって実現することができる。即ち、上述のメッセージ識別子は、該当する単一メッセージの引数に文字列として指定する等により、上述の説明と同様に仲介オブジェクト内の処理で参照することができる。
【００５１】
また、Ｊａｖａ、Ｃ＋＋等の他のオブジェクト指向言語上で、多少の作業コストを伴っても通常のメッセージ送信を行うことが必要になる場合がある。これに対しては、仲介オブジェクト側に通常のメッセージから単一メッセージへの変換メソッドを実装する方法がある。この場合は、多数の変換メソッドを定義しなければならないが、これらのソースコードを生成する作業は単純であるため、パール(perl)等のスクリプト言語の利用によって効率化することが可能である。
【００５２】
この実施例におけるRouteViewの主要オブジェクト及び管理カテゴリは、上述の従来例におけるそれらと同様とする。図１１は、本発明のデータ表示方法により複数ビューの表示を行う場合の例を示す図である。外部オブジェクトは共有関係ツリー上の同じレベルの仲介オブジェクトにアクセスする。仲介オブジェクトは、管理カテゴリ毎にメッセージ送信、更新イベント通知及びデータアクセス転送を行う。これによって、外部オブジェクトの定義内容は、データ管理オブジェクトが共有関係ツリーのどこに存在するかに影響を受けない。従って、Graphic及びDataの両カテゴリのデータ管理オブジェクトをツリー上の任意の位置に移動することができる。即ち、ウィンドウ間で共有させたいデータについては（ａ）のレベルにデータ管理オブジェクトを配置し、ローカルに保持したいデータについては（ｂ）のレベルにデータ管理オブジェクトを配置することにより、コーディングレスで共有関係を変更することができる。
【００５３】
図１２は、本発明のデータ表示方法により異なる抽象度の複数ビューの表示を行う場合の例を示す図である。管理カテゴリ単位で上位のデータのコピー（管理ポリシーはCopy）又は参照（管理ポリシーはRefer）を行うように動作を指定することができる。新たなビューの追加のために必要な定義はデータ管理オブジェクトMap'のみであり、これはデータ管理オブジェクトMapから継承によって記述できる。従って、上述の従来例に比べて定義の数を低く抑えることができる。
【００５４】
一方、本発明によれば、管理カテゴリ毎に四つの管理ポリシー、即ち、Block、Copy、Refer及びShareについて処理を定義することが必要になる。これは、従来は単一のデータ管理オブジェクト上で必要な処理のみを記述していた場合に比べて一見無駄のように見える。しかし、本発明においては、各データ管理オブジェクトを実装する際にその継承元となる基本クラスで、管理ポリシー毎の基本的なデータ管理処理を提供しており、このため、開発者が定義する内容は、実際にシステムで利用する部分について差分の処理のみを記述すればよい。従って、一つの管理カテゴリについての記述量に注目した場合でも、本発明は従来技術に比べて処理の定義量が増えることはない。
【００５５】
本発明においては、共有ツリー上を子ノードの方向に更新イベント通知を伝播する場合、親ノードがその子孫の管理ポリシーを事前に調べて伝播が必要か否かをキャッシュしておくことにより、処理効率を向上させることができる。また、共有ツリー上を親ノードの方向にメッセージ送信の送信先を探索する場合、子ノードがその先祖の反応メソッドの履歴を記憶して探索が必要か否かをキャッシュしておくことにより、処理効率を向上させることができる。これらの場合、キャッシュの内容は、共有関係ツリーの構造変更、データ管理オブジェクトの生成、削除、管理ポリシーの変更等があった場合にはクリアする。
【００５６】
本発明においては、また、更新イベント通知を行う場合、イベント発生に対する即時性がさほど要求されない画面表示の場合は、データ変更の都度実行せずに、表示対象となるデータ集合の取得及び変換並びに表示の際に参照する表示パラメータの変更等が全て完了した後にそれらの結果をまとめて反映させることにより、処理効率を向上させることができる。外部オブジェクトをイベント通知対象として登録する際に、即時通知か遅延通知かいずれかを指定し、必要に応じて使い分けるようにしてもよい。
【００５７】
本発明においては、また、仲介オブジェクトから遅延通知を行う際に、同一外部オブジェクトの同一メッセージが登録されている場合は、メッセージ送信を１回のみ行うようにしてもよい。また、外部オブジェクトから、更新が発生した管理カテゴリを問い合わせる機能を具えるようにしてもよい。この機能により、外部オブジェクトの定義の際に、メッセージ処理を一つに統一することができ、更に、その中で、管理カテゴリ間での処理の優先順位、排他処理、実行順序制御等を簡潔に記述することができる。即ち、外部オブジェクト側の定義をシンプルにすることができる。
【００５８】
【発明の効果】
以上説明したように、本発明によれば、複数ビュー間のデータの共有関係を変更する場合にコーディングレスで行うことができ、且つ、新規のビュー機能を追加する場合に元のソースコードに対する影響を最小にすることができる。従って、小さい開発コストで種々のバリエーションの複数ビュー表示を実現することができる。
【図面の簡単な説明】
【図１】  本発明のデータ表示装置の構成例を示す図である。
【図２】  更新イベント伝播処理に着目した本発明のデータ表示装置の構成例を示す図である。
【図３】  共有関係ツリーにおけるデータ内容管理、更新イベント通知及びメッセージ送信の各処理について、管理ポリシー識別子に対応させて動作内容を表すテーブルを示す図である。
【図４】  メッセージ送信処理の基本動作のフローを示す図である。
【図５】  イベント通知処理の基本動作のフローを示す図である。
【図６】  データ内容管理処理の初期化時の基本動作のフローを示す図である。
【図７】  データ内容管理処理の参照時の基本動作のフローを示す図である。
【図８】  データ内容管理処理の動作概念を示す図である。
【図９】  イベント通知処理の動作概念を示す図である。
【図１０】  データ管理オブジェクトが無い場合のデータ内容管理処理、メッセージ送信処理及びイベント通知処理の動作概念を示す図である。
【図１１】  本発明のデータ表示方法により複数ビューの表示を行う場合の例を示す図である。
【図１２】  本発明のデータ表示方法により異なる抽象度の複数ビューの表示を行う場合の例を示す図である。
【図１３】  RouteViewの主要なオブジェクトの構成を示す図である。
【図１４】  従来技術によって複数ビュー表示を行う場合のデータ管理方法を説明するための図である。
【図１５】  従来技術によって異なる抽象度により複数ビュー表示の追加を行う場合のデータ管理方法を説明するための図である。
【符号の説明】
１０  データ管理オブジェクト
１１  管理カテゴリ識別子
１２  管理ポリシー識別子
１３  仲介オブジェクト
１４  共有関係ツリー
１５  外部オブジェクト
２０  更新イベント通知対象リスト
２１  管理カテゴリ識別子
２２  外部オブジェクトへのポインタ
２３  メッセージ識別子
【図１】
0003798935.tif 000002
【図２】
0003798935.tif 000003
【図３】
0003798935.tif 000004
【図４】
0003798935.tif 000005
【図５】
0003798935.tif 000006
【図６】
0003798935.tif 000007
【図７】
0003798935.tif 000008
【図８】
0003798935.tif 000009
【図９】
0003798935.tif 000010
【図１０】
0003798935.tif 000011
【図１１】
0003798935.tif 000012
【図１２】
0003798935.tif 000013
【図１３】
0003798935.tif 000014
【図１４】
0003798935.tif 000015
【図１５】
0003798935.tif 000016