JPH11514114A - 動的オブジェクト指向言語のオブジェクトの間の動的関係を管理するための方法 - Google Patents

動的オブジェクト指向言語のオブジェクトの間の動的関係を管理するための方法

Info

Publication number
JPH11514114A
JPH11514114A JP9516726A JP51672697A JPH11514114A JP H11514114 A JPH11514114 A JP H11514114A JP 9516726 A JP9516726 A JP 9516726A JP 51672697 A JP51672697 A JP 51672697A JP H11514114 A JPH11514114 A JP H11514114A
Authority
JP
Japan
Prior art keywords
objects
mapper
connection
class
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP9516726A
Other languages
English (en)
Inventor
ディヴィッド シー ミッチェル
ケリー エル アンダーソン
アンドリュー ヴィー オズマン
デイル ケイ ミッチェル
Original Assignee
ヴィューソフト インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ヴィューソフト インコーポレイテッド filed Critical ヴィューソフト インコーポレイテッド
Publication of JPH11514114A publication Critical patent/JPH11514114A/ja
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems

Abstract

(57)【要約】 マッパを介して動的オブジェクト指向プログラミング環境におけるクラス間の名前を表示した関係を生成するための方法及びシステムが開示されている。マッピング・オブジェクトは、関連するクラスのクラス・インターフェースと動的に結合する。クラス間のこれらの結合は、ビジュアル環境内で定義される。関係は、プログラム実行中に、オブジェクト・インスタンスに名前によってプログラム的に取り付けられうる。これらの関係がリソースにストアされ、オブジェクトに対する名前によって動的に結合されるので、それらは、変更されるべく関連しているオブジェクトのソースコードを要求することなしに、生成され、修正され得る。このことは、他のコンテキストのオブジェクトの再利用を妨げるオブジェクト間のハード・コード従属を削除する。本発明は、メタデータの十分な利点、本発明と関係しているオブジェクトの十分な動的結合及びプローブ・サポートを要求し、得ている。

Description

【発明の詳細な説明】 動的オブジェクト指向言語のオブジェクトの間の 動的関係を管理するための方法 この特許出願の一部には、著作権保護の対象である資料を含む。著作権者は、 米国特許商標庁の特許ファイル又は記録に現れているような、特許書面又は特許 開示のファクシミリ複写に対しては、どんな人によるものでも、異議を有さない が、その他の点ではいかなるものに対しても全ての著作権を留保する。 種々の商標が、この開示に言及されている。これらの商標は、それらの商標保 持者に属する。 技術分野 本発明は、一般的にはオブジェクト指向プログラミングの分野に関し、より詳 細には、オブジェクト自身の部分の特別の挙動を要求することなくプログラムを 実行する間、オブジェクト指向言語のオブジェクト間の関係を動的に生成するた めの構造及び方法に関する。 背景技術 オブジェクト指向プログラミング 最も現代的なシステムの複雑性は、人間の知的能力を超えている。このことは 、コンピュータ及びソフトウェアに関する必要性を作り出す。ソフトウェア開発 者の基本的な仕事は、広大で、しばしば任意の外部の複雑さからユーザを保護す るために簡単な幻想を作り出すことである。プログラミングは、取り扱いが複雑 な仕事を、人が働く現実の世界から、プログラマがシミュレートするコンピュー タ内のそれらのシステムに移す。問題は、コンピュータの内部に移されることに よって、複雑性が減らないことである。複雑なコンピュータプログラムだけが、 現実の世界の複雑な問題を解くことができる。 複雑なソフトウェアシステムを作るとき、プログラマは、他の人と同じように 知的限界を経験する。それゆえ、複雑なシステムをより小さなパーツ又はモジュ ールに分解することで、それらが個別に理解され、洗練され得るようにすること がプログラマにとって不可欠である。次いで、ソフトウェアツールの開発者に関 する基本的な仕事は、ソフトウェアの固有の複雑性を制御し、それを保持するこ とである。 構造化プログラミング及びトップダウン設計は、前の世代のモジュラ・プログ ラム設計の典型である。このアプローチを使用して、プロセッサ又はアルゴリズ ムをより簡単なサブ・プロセッサに分解する。次いで、これらのプロセッサを実 行し、複雑な全部のタスクを成し遂げるためにビーズのようなストリングで互い に繋ぐ。 オブジェクト指向プログラミング(OOP)はまた、複雑なシステムを管理し やすいサブ・システムに分解するように努力する。しかし、オブジェクト指向プ ログラマは、幾つかのより高いレベルの挙動を実行するために共同する自律エー ジェントのセットとして世界を見る。これらのエージェントの意味のある収集の 構造を通してだけ、より高いレベルの機能性が達成される。全体の挙動がそのパ ーツの合計よりも大きいとき、これは不意の挙動である。この形態は、OOPの 強力な利益である。離れ離れのオブジェクトの簡単な収集は小さな価値を有する 。システムによって加えられた価値は、パーツ間の関係からきており、パーツそ れ自体からはこない。その非線型分解の方法により、OOPは、マウス及びウィ ンドウタイプ・インターフェースで直面するランダムな入力に対してより適合す る。 オブジェクト指向デザイン及びプログラミングの更なる情報は、Grady Booch による「Object-Oriented Analysis and Design with Applications − 2nded. 」(The Benjamin/Cummings Publishing Company,Inc.,1994.ISBN:0-8053-534 0-2)に与えられており、これをここにリファレンスとして組み込む。 コード再利用 オブジェクトをスクラッチから生成する際に費やされる出費及び労力のために 、予め作られたオブジェクトを再利用することが高く望まれている。実際に、再 利用可能なビルディングブロックをアセンブリすることによってプログラミング ・コンプレックス・アプリケーションの目標は、コンピュータサイエンスそれ ロニクス・コンポーネントのエレクタセットの再利用をエミュレートすることを 試みる際に、コンピュータの研究者は、より複雑な構造を作り出すことができる 一般的なコンポーネントを生成するために努力する。再利用において幾らかの成 功があるが、ほとんどのプログラマは依然として道のりは長いと信じている。 オブジェクト指向プログラミングは、人々が現実の世界のシステム及びオブジ ェクトについて自然に考える方法で、より正確なモデルでありうるコンピュータ 言語を作り出すための試みの外で発展してきた。より正確なプログラムのオブジ ェクトが現実の世界のオブジェクトを反映しているとき、次いで、プログラミン グオブジェクトは、それらの現実の世界のオブジェクトのモデルが要求する他の コンテキストにおいて、より再利用可能であり得る。プログラミング・オブジェ クトが、モデルにされている現実の世界のオブジェクトと無関係であるエレメン トを包含するとき、次いで、それらの無関係な部分は、該モデルと密接な関係が ない従属物を生成することによって、オブジェクトを再利用することを邪魔しう る。 従属 オブジェクトの分離は全く面白くない。満足のいく不意の挙動を作り出すため に、オブジェクトは共同すべきである。関係を介するオブジェクトの共同は、リ ンクと呼ばれる。リンクは、オブジェクト間の物理的又は概念的な接続である。 リンクは、あるオブジェクト(クライアント)が別のオブジェクト(サーバ)の サービスを請う特定の結合を示す。各リンクに関して、クライアント(トランザ クションを要求するオブジェクト)とサーバ(クライアントの要求を処理するオ ブジェクト)がある。 サーバオブジェクトはクライアントに対して可視的でなければならない。こ れは、典型的には4つの方法のうちの1つで成し遂げられる:1)サーバオブジ ェクトがクライアントに対して汎用である、2)サーバオブジェクトがクライア ントの幾つかのオペレーションに対してパラメータである、3)サーバがクライ アントの一部分である、或いは4)サーバがクライアントの幾つかのオペレーシ ョンに対して局所的に宣言されたオブジェクトである。 1つのオブジェクトがメッセージを別のオブジェクトにリンクを越えて通すと きはいつでも、2つのオブジェクトが同期されていると呼ばれる。リンクを介し たオブジェクトの同期は、オブジェクト指向プログラミングの中心であり、不意 の挙動のソースである。 上述した4つのタイプのリンクが、サーバオブジェクトのアプリケーション・ プログラミング・インターフェース(API)を呼び出すコードを書くためにク ライアントオブジェクトを要求することに注意することが重要である。言い換え れば、クライアントはサーバから独立ではない。実用的な用語では、このことは 、クライアントが、サーバをまた再利用すること無しで、再利用されることはな いことを意味する。このことはクライアントオブジェクトの再利用を減少させる 。典型的には、オブジェクトが種々のサーバオブジェクトのユーティリティを当 てにし得る。複数のサーバに接続することは、再利用を減少させる累積的な効果 を更に有する。これは、サーバの少なくとも1つが新しいコンテキストに望まし くないことがより適当であるからである。サーバがクライアントでもあるとき、 従属のウェブはプログラムのいたるところに生成される。 クライアントオブジェクトコードのこれらの従属の影響は、コールバックの使 用及び仮想関数を介して減少され得る。 コールバックは一般的なインターフェースを備える関数であり、何か関心事が 起こるとき、サーバのためにクライアントを戻すようにコールするボイド・ポイ ンタをしばしば含む。コールバックは、クライアントが従属をセットアップして から、クライアントの従属を発展させないようにする。 仮想関数により、クライアントがサブクラス・サーバの従属を生成することな く、サブクラス・サーバがベース・サーバの挙動を特殊化することを可能にする 。それにもかかわらず、クライアントはベース・クラス・サーバの従属を依然 として有する。コールバック及び仮想関数は、クラスの再利用を増加させること ができるが、大変な努力なしで従属の問題に完全に取り組むことはできない。ク ライアントが、それらのサービスにアクセスすることができるようにサーバを認 識するように要求されるので、最後の結果は、それらのオブジェクトの再利用が 消極的に影響する。 トレードオフ オブジェクトの独立を保持するための要請は、オブジェクト再利用を使用する ことを望む当業者にとって強い。今日、減少したほとんどのオブジェクトはサー バオブジェクトである。多くのオブジェクトはクライアントとサーバの両方であ る。これらのオブジェクトは、それらがクライアントとして従属する他のオブジ ェクトの全てと一緒に実行されることなしに、サーバとして再利用されることは ない。それゆえ、そのサーバがもたらされる要求なしに、別のコンテキストにサ ーバとしてクライアントオブジェクトを再利用するのが望ましい。 実際に、オブジェクトを一緒にリンクすることが、見込まれた不意の挙動を達 成するために共有されるので、再利用はより困難である。あいにく、C++のよ うな今日の最も人気のあるオブジェクト指向言語では、これらの全てのリンクは 、従属を生成するようにハード・コードされている。オブジェクト共同とオブジ ェクト再利用との間の緊張は、部分的に分解できるだけであり、次いで、高度な 技術を持ったオブジェクト指向プログラマによってだけ可能である。ほとんどの プログラマは、問題の存在を十分には知らず、より少数のプログラマだけがそれ を解明することができ、実質的には、毎日の基礎としてそれに取り組める人はい ない。大抵、このことによってプログラミング言語、及び、一般に使用され今日 教示されているパラダイムを制限している。 望ましいオブジェクト指向の特徴 C++は、単一及び多重承継、多相性、カプセル封じ、メッセージング及びデ ータ抽象化のような人気のあるオブジェクト指向の特徴をサポートしている。こ れらの特徴は、これらの特徴は、ここでそれらを再評価する必要がないほど他 で良く示されている。ここでリファレンスとして組み込む、Bjarne Stroustrup 著「The C++ Programming Language(2ndedition)」(Addison Wesley - ISBN 0-2 01-53992-6)、又は、Lippman,Stanley B.著「C++ Primer(2ndedition)」(Addi son Wesley − ISBN 0-201-54848-8)を参照のこと。これらのオブジェクト指向 言語の特徴は、プログラマに直面している共通の問題の大きなクラスを解くため に有用であるが、しかし、前述のクラスの間のハード・コード化したリンクを防 ぐ際には役立たない。 C++で一般に入手可能でない4つの特徴であり、他のオブジェクト指向言語 (及び、本発明に関する前提条件として要求される他のオブジェクト指向言語) のいくつかで実行される特徴は: ・メタデータ(内観、反射、又は、ランタイム・タイプ情報(RTTI)をも指 す) ・十分な動的結合(ランタイム又はダイナリンク結合をも指す) ・調査(残りを監視する変数又は書き込み障害をも指す) ・クラス名によるデフォルトオブジェクトの例示(一般的なファクトリメソッド をも指す) である。 オブジェクト指向プログラマの夢のリストを完成させる必要はないが、これら のオブジェクト指向言語の改良によって、それらを実行することなしに強力なプ ログラミング技術を適用することができる。これらの改良は、それらの独立を犠 牲にすること、オブジェクトの再利用を容易にすること、及び、プログラムの複 雑性を低減することなく、オブジェクトを共同させることができる、ここに記載 されたようなシステムと一緒に使用される。 メタデータは、プログラムを作るのに使用されるクラスを記述するランタイム (プログラム実行中)で利用可能なデータベースである。それによって、オブジ ェクトはランタイムで「自己記述」されることができる。メタデータが拡張可能 であるとき、これは、アプリケーションに特化したワイド・リード・オンリー・ データのクラスを有するための機会を生成する。このアプリケーションに特化し たメタデータは、プロパティと呼ばれ、本発明で十分に利用される重要な言 語の特徴である。しかしながら、拡張可能なめたデータを欠く言語システムでは 、プロパティ情報は他のデータ構造に容易にストアされ得ることができる。 十分な動的結合は、オブジェクトがそのメンバの名前だけを使用してランタイ ムで操作され得ることを意味する。例えば、(フィールド又はメンバがC++に おいて守る)属性は設定され得ることができ、照会され、関数は名前によってコ ールされ得ることができる。通常のリンクはマシーンアドレスに対する名前を減 少させ、該名前はプログラムの使用から無くされる。 調査は、データ(典型的にはオブジェクトの属性)が変更するとき、呼び出さ れるコールバック関数である。 名前によってオブジェクトをインスタンス生成する能力はまた、本発明の実施 を完成させるために必要であるけれども、これは、組み込みの特徴としてそれを サポートしない言語で容易に実行される。付録A,B,C及びDは、これら4つ のオブジェクト指向言語の特徴のより長い議論を含む。特許出願 08/421,400は 、言語の定義を変更することなしにこれらの特徴を欠く(C++のような)エン ハンス言語に関するメソッドを記載し、ここにリファレンスとして組み込む。 これらの言語の特徴は、オブジェクト自身の一部の特別な挙動を要求すること なく、プログラム実行中に動的に再構成可能な入力及び出力を有するための能力 を一緒に備えるオブジェクトを提供する。用語「動的な言語」は、メタデータ、 十分動的な結合、及び、調査をサポートし、又は、サポートするために改良され た言語を意味するように定義される。 オブジェクト・システム 動的「オブジェクト」を生成するための多くのシステムがある。これらのシス テムは、「コンポーネント・ベース」システムと呼ばれる。デスクトップに関して は、(MicrosoftのCOM及びOLE Automationを含む)OLE及び(IBMのSOM及び AppleのOpen Scripting Architectureを同様に含む)OpenDoc、及び、分 離されたアプリケーションに関しては、Hewlett Packard のORB+、IonaのOR BIX、NeXTのPDO及びSunのDOEのようなプラットフォーム・オブジェクト・システ ムがある。ViewSoft のエンハンスド・オブジェクト・システム (EOS)、StepStoneのObjective C、及び、種々のSmallTalkインプリメンテー ションのようなシステムに基づいた言語である。Microsoft の DLL 及び UNIX共 用ライブラリの種々のフレーバーズのような動的リンクシステムがある。専用の 要求(例えば、グループウェアに関するロータス・ノーツ及びデータベースに関 するSQL3オブジェクトモデル)のために設計された動的オブジェクトシステ ムもある。最後に、Microsoft のVBXオブジェクトシステム、Powersoft のPo werBuilder オブジェクトシステム、Novell AppWare Bus などのようなアプリケ ーションに組み込むオブジェクトシステムがある。 これらの全てのシステムにおいて、「コンポーネント」は、プログラム実行中に 、動的インターフェースを介してアクセス可能であるサーバオブジェクトである 。これらのシステムのほとんどにおいて、クライアントは、意図しているコンポ ーネントシステムで特別に書かれる必要があるけれども、それらのうちの幾つか (EOS、SmallTalk、PDO、DLL)では、クライアント・コード は、オブジェクトに基づいた別の通常の言語にアクセスするときより異なってお らず、かかるシステムはオブジェクトとの動的なリンクを大切にする。しばしば 動的のリンクは、言語独立の方法で実行されるけれども、それらは、オブジェク ト指向言語の世界として物事を処理する傾向がある。 幾らかのコンポーネントシステムは、クライアントがコンポーネントに関する サーバとしてそれ自身をインストールすることができるように、コールバック・ アーキテクチャを許し、この方法では、典型的には、クライアントがコールバッ ク機能、コールバックを備えるサーバを初期化するためのコード、及び、ある場 合においては、クライアントによってディスパッチされるサーバからのメッセー ジを提供しなければならないけれども、双方向通信が確立されうる。それにもか かわらず、システムに基づいたこれらの動的コンポーネントの人気の上昇は、コ ンポーネントに対する動的なリンクの基本的なアプローチを証明する。 人がこれらのシステムにおいてクライアント及びコンポーネント(サーバ・オ ブジェクト)を生成することができることの容易さは、自明なものから本当に困 難なものまで及ぶ。 2つのピュア・サーバ・コンポーネントの間の同期するリンクを生成するこ と(即ち、あるサーバから別のサーバへの通信)は、両サーバオブジェクトにつ いて知っているクライアントコードを生成することを要求する。サーバオブジェ クト間の通信が双方向であるならば、それはクライアントが、サーバを定期的に ポーリングするために両サーバ又はより少ないエレガントなコードからのコール バックを確立することを要求する。このクライアントコードは、手によるタスク に対して非常に固有であり、ほとんど再利用可能でない。クライアントが、情報 を両サーバオブジェクトに適用させるために、情報を順番に変換する必要がある ならば、追加のコードを書き出す必要がある。 これらのコンポーネントシステムにおいて全体的に欠けていることは、サーバ が互いに従属を生成することなく同期するような方法において、2つのサーバオ ブジェクトに対して動的にアタッチすることができる一般的なクライアントを生 成することに関して無矛盾な方法であることである。 クライアント/サーバ ネットワーク ットワーク(LAN)、若しくは、インターネットのようなワイド・エリア・ネッ トワーク(WAN)のようなハードウェア及びソフトウェアネットワーキングを 介して接続された個々のPC又はワークステーションは、現在普通に入手するこ とができる。多くのプログラムはより効率的に作られ、ネットワークを介して配 布されることによって有用である。即ち、プログラムにおけるオブジェクトのい くつかが1つのマシーン上のものであり、他のオブジェクトが複数の別のマシー ン上のものであるならば、そのとき、ネットワークのパワーを処理することはよ り有効でありうる。 しばしば、プログラムは、クライアントとサーバの2つに分けられる。クライ アントプログラムは、典型的には、例えばデータベース・サーバである、サーバ で走るプログラムに関してGUI(グラフィカル・ユーザ・インターフェース) フロント・エンドである。多くのかかるシステムは、複数の同時のクライアント をサポートする。ネットワーク・クライアント/サーバは、単一のプログラム内 でのオブジェクト間のクライアント/サーバ関係で混乱すべきではない。ネ ットワーク・クライアント/サーバ関係は、オブジェクトではなく、通常は、プ ログラム間の通信に基づくAPI(アプリケーション・プログラミング・インタ ーフェース)である。これらの接続は、RPC(遠隔手順呼び出し)、ソケット 、又は、他の一般的に入手可能なAPIを介して作られうる。RPCは、あるマ シーンのコードに関して別のマシーンの関数を呼び出させる。このアプローチは 、制御のフローに関して良いが、データ共有能力は幾分制限される。対照的に、 ソケットはデータを良く転送するが、プログラムフロー制御において制限される 。 X-Windows システムは、ネットワークを超えて双方向イベントストリームを自 動的に送信することによって、プロセッシング・サーバからGUIクライアント の分離を自動化する。このことは制限されているが、分散ユーザ・インターフェ ースに関するアーキテクチャについて有効であり、非常に大きなネットワーク・ バンド幅を要求する。依然として、このレベルのネットワーク自動化はエミュレ ーションの価値がある。 ネットワーキング・オブジェクト 典型的な複数クライアント/単一サーバ・アーキテクチャを超えた更なるディ ビジョンはまた、多くの場合に有用である。あいにく、現在のAPIアプローチ を備えたプログラムを配布することは、開発環境又は言語に普通に集積されない 事実のために、プログラマに関してうんざりである。しっかりしたクライアント /サーバ・プログラムを生成するためのプログラマの学習曲線は、典型的には、 非常に大きい。 分散オブジェクトシステムの現在の技術水準は、Corba,DSOM,OR B+,ORBIX,PDO及びDOEによって現されている。これらのオブジェ クトシステムは、データ共有及び制御のフローで優れているが、高度にAPIベ ースである。あるシステムから別のシステムへのオブジェクトのスイッチングは 、プログラマのオブジェクトとオブジェクトシステムとの間に生成された従属に よって非常に困難である。即ち、オブジェクトシステムに対する特定のコードは 、ネットワークを超えたオブジェクトと接続し且つ同期するように書く必要があ る。これらのシステムのほとんどは、また、プログラマに極端な学習曲線を上 ることを強いる。 幾つかのオブジェクトシステム(特にPDO)は、動的な結合に基づく名前を 直接的に介して互いにプログラムアドレスに個々のオブジェクトを有する点で達 している。即ち、マシーンAのオブジェクトが、属性にアクセスすることができ 、若しくは、マシーンBの名前による動的な結合を介して別のオブジェクトの関 数を呼び出す。オブジェクト間に接続を直接的に生成することは、あるマシーン のプログラミングと分散環境のプログラミングとの間のインピーダンス・ミスマ ッチを減らす。言い換えれば、プログラムのオブジェクトがネットワークを超え て直接通信するとき、プロキシ・オブジェクトがオブジェクト自身内のコードに 影響を及ぼすことなくネットワークの態様を取り扱うので、ネットワークAPI が採用される必要はない。ネットワークを超えてアプリケーションを配布するほ とんどの努力からプログラマを開放するので、それは分散プログラミングにおい て著しい進歩である。しかしながら、この場合において、クライアントオブジェ クトがサーバオブジェクトのパブリック・インターフェース(API)を知って いなければならず、従って、従属は、同じプログラムのオブジェクト間のクライ アント/サーバ関係と同じように生成されることに注意すべきである。 発明の概要 目的 本発明の明確な目的は、依存し、又は、お互いの知識を有するためにそれらの オブジェクトを要求することなく、ランタイムでオブジェクト間に(転送を備え る)動的で再構成可能なリンクを一般的に設けるための方法及びシステムを提供 することである。 更なる目的は、生成されたクラスの実行に最小の影響を有するこれを行うこと である。シークされるアーキテクチャは、単一のプログラム内のオブジェクト間 と、同じマシンで走るプログラム及び/又はプロセス間と、ネットワークを超え て接続されたマシーンで走るプログラム及び/又はプロセス間とのサーバ/サー バ・アーキテクチャである。 本発明の更なる目的は、言語がメタデータと、十分な動的結合と、プロービン グと、一般的なファクトリ・メソッド能力とを支持する(又は、支持を強化する )オブジェクトの動的リンク(結合)の仕様を支持するビジュアル・プログラミ ング環境を提供することである。 本発明の別の目的は、オブジェクトを生成するのに使用されるプログラミング 言語に対する修正なしにこれらの改良を提供することである。 本発明の別の目的は、リンク自身が、1つのデータ・タイプ又はスケールから 別のものに転送するような追加のプログラミング・ロジックを提供することがで きることである。 本発明の別の目的は、プログラム実行中に、インスタンス生成し、オブジェク ト間のこれらの結合を破壊するための方法を提供することである。 本発明の別の目的は、プログラマが、絶対に必要なもの以上に馴染んでいるプ ログラミング環境を修正することなくこれを達成することである。しかしながら 、プログラマが使用する設計技法は、本発明によって提供される機構の適当なア プリケーションを介して、かなり変更すべきである。 本発明の別の目的は、同じワークステーションで走らないオブジェクトを接続 するための能力を備える動的リンクを提供することである。 最後に、本発明は、ユーザ・インターフェースを構築する舞台の問題を解決す るのに適用される。本目的は、それらのユーザ・インターフェースから独立した アプリケーション・オブジェクトを生成するために、本発明を使用するためのも のである。 これらの目的は、以下に記載された発明によって満たされる。 意味論 はじめに、ワードに関するワードである。一般的に、意味論は意味についての 研究である。オブジェクト指向プログラミングのコンテキストではクラスの意味 論はクラスが何を表現するのかを意味する。クラスの意味は発行インターフェー スを通じて最も明確な証拠となる。即ち、オブジェクトが保全する属性及びオ ブジェクトが行う機能である。 理想的には、クラスは実際のオブジェクト又は実際のシステムを設計する。実 際の世界のオブジェクトの純粋モデルを作成する能力によって減じられたプログ ラミングシステムにより課された要求は、オブジェクトが真の意味を見失うもと となるため、あまり意味論的でない。例えば、もしオブジェクトが犬を表すとす ると、本物の犬は自己を描き直さないため、描き直す機能を有する必要がない。 犬オブジェクトが孤立して機能すると言うのではない。犬は猫やドッグフードや ボールと交流する。コンピュータプログラムの犬オブジェクトは、後の使用のた めに保管する手段としてそれ自体又はデータベースシステムに表示させるために ユーザインターフェースシステムと相互作用を行う。 犬は飼い主と関わるが、犬は己の内でデータベースと関わりを持たない。デー タベースとの関わりは犬オブジェクト自体に外部的に管理される。 意味論的リンク 意味論的リンクは、リンクの追加に拠る実際の世界のモデルにおける正確さを いずれのオブジェクトも失わないような方法で作られた、2つのパトロンオブジ ェクトの間のリンクである。パトロンオブジェクトを実現するコードはリンクを 認識するべきでない。 更に具体的には、本発明の意味論的リンクはサーバ間の総称クライアントをつ くることにより2つのサーバオブジェクトを同期化させるシステムである。サー バオブジェクトは動的結合を経由して発行インターフェースを通して総称クライ アントによりアクセスされる。同期化は、サーバにおいて興味の属性が変化する 時、あるいはパトロンオブジェクトの1つが全ての興味のある集まりに明確に信 号を送る時に起きる。犬は吠えるが、犬の属性を変えない。しかしながら、もし その特定の犬の吠え声に関心があれば、注意を引くかもしれない。 本発明の主要機能は、動的オブジェクト指向言語において明確となったオブジ ェクト間の意味論的リンクを指定し、次いでインスタンス生成することである。 本発明では、動的オブジェクト指向言語は、メタデータ、動的結合、及びプロー ブを支持、あるいは支持するように強められたオブジェクト指向言語に関する。 それは、1つのクラスの1以上のメンバ(属性、機能、及びプロパティー)を拡 張可能メタデータ、完全動的結合、及びプローブを支持する言語における他のク ラスの1以上のメンバと動的にリンクさせることである。これは、再帰的に属性 のメンバのメンバに動的に結合させる、かつ/又は調査させることを含む。 意味論的リンクはマッパと呼ばれる代用オブジェクトのインスタンス生成を通 して作られ、それはパトロンオブジェクトの両者に接続させるために調査及び動 的結合させるのに使用する。マッパはクライアントであり、両パトロンオブジェ クトはマッパに対するサーバーである。各種のマッパは固有の方法で2つのパト ロンオブジェクトを接続させる。資源ファイルは各マッパの性質を更にリファイ ンさせるために情報を有する。マッパは、数から列までのような変換を行い、あ るいはメーターからフィートまでのようにあるシステムから別のシステムまでを 測り、若しくはいっそう複雑なプログラミングタスクを行っても良い。マッパク ラスは一般目的プログラミング言語(定まった言語条件とともに)を使用して書 かれるため、多様性に対してほぼ無限の潜在性を有する。 リンクインスタンスの性質は各タイプのマッパ特有のユーザ構成可能プロパテ ィーの利用を通して更にリファインされる。マッパプロパティーはあるマッパク ラスがいくつかの関連機能を行うようにする。例えば、全てのマッパは、結合が 左から右へ、又は右から左へ、若しくは双方向に同期化されるかのプロパティー 指定を有する。 マッパ、及び要するに意味論的リンクは形式において包括的であり、機能にお いて非常に柔軟である。意味論的リンク(問題の言語条件を超えて)におけるパ トロンオブジェクトのための唯一の一般的条件は、結合されているパトロンオブ ジェクトの少なくとも1つの少なくとも1つのメンバがプローブをセット可能に なっている必要があるということである。これは公的属性、あるいは Signal(S Ignalについての情報に関する付録Cを見よ)の使用を通して備えられる。 オブジェクトは属性がその価値を変え、プローブが呼び出された時、マッパを 通して同期化される(それはあるオブジェクトから他のオブジェクトへ渡された「 メッセージ」である)。プローブが呼び出されずにいたら、リンクはパトロンオブ ジェクトを決して同期化させない。プロパティーはこのルールにおいて例外で あり、プロパティーからの同期化はリンクの初期設定中に1度だけ起きる。 プローブが同期化のもととなるため、システムはポーリングよりも割り込み又 は需要駆動される。もし適切であれば、複数の属性がプローブされ、1 つ又は全 てが変わってプローブが呼び出された時、マッピングが同期化する。マッパは、 意味論的リンクのインスタンス生成の1部としてパトロンオブジェクトにプロー ブをセットする。 換言すれば、最初の2つのオブジェクトがクライアントにならずに、第3オブ ジェクトによってオブジェクトが2つ互いに接続可能であり、このようにして 2 つのオブジェクト間のサーバ/サーバ体系をつくりあげる。両オブジェクトがサ ーバである時、不必要な従属から解放され、再利用の機会は増す。これら拡張オ ブジェクトの動的再構成はプログラミング又はスクリプト若しくは資源情報の解 釈によって得られる。ここに説明した方法はこれら方法の全てを伴ったハイブリ ッドアプローチを組み入れる。 我々のシステムの殆どの要求は、述べられた言語改良を介して入手可能である 。このことの結果は、我々のシステムに書かれたコンポーネントに関するソース コードが、一般的に、動的に再構成可能なオブジェクトを生成するための非常に 浅い学習曲線であることと実際には見分けがつかないことである。 例 単純な例として、クラスBの整数yと同じ値を通常有する、クラスAの整数x を有するのが望ましいと仮定する。意味論的リンクは、yが変化するときはいつ でもxを更新し、逆も同様である、x及びyの間に生成される。2つの属性の間 のこの簡単なフィールド−フィールド同期は、意味論的リンクの最も簡単なタイ プの一つである。その簡単さにもかかわらず、それは、実際には非常に有用であ ると見られていた。このリンクは、後で詳細に検討する。 別のタイプの意味論的リンクは、他のパトロン・オブジェクトの関数に対する 1つのパトロン・オブジェクトに1又はそれ以上の属性を関係付ける。第1のパ トロン・オブジェクトの関数が、2つのパラメータをとるならば、次いで、2つ の属性は他のパトロン・オブジェクトから選択される。「トリガ」属性(ユーザ によって選択されたマッパのプロパティ)が変化するときはいつでも、値は意味 論的リンクによって集められ、第2のオブジェクトの関数に対するパラメータと して使用される。即ち、第2のオブジェクトの関数は呼び出され、第1のオブジ ェクトのトリガ値が変化するときはいつでも、パラメータとして第1のオブジェ クトから属性を通す。 更に複雑な意味論的リンクが、パブリック属性(又は信号)とオブジェクトの アレイとの間に作られる。属性のプローブが呼び出されるときはいつでも、アレ イの次のオブジェクトは、それに呼び出された関数を有する。オブジェクトが異 なるマシーンに物理的に配置されているので、このマッパはディストリビュータ として作用し、ネットワークを横切って雑用を処理することを広める。 実際には、多くの意味論的リンクは、これらのような一般的な特徴のものであ り、それらのアプリケーションの特定の知識を有さない。もちろん、これは必要 条件ではなく、本発明の現在の利用に基づく単なる観測である。 単一の意味論的リンクは、リンクされている2つのパトロン・オブジェクトと 第3のオブジェクトである、3つのオブジェクトを含み、セットアップの際に含 まれる作業をするマッパは、意味論的リンクを維持し、編集する。マッパは、決 して参照されず、若しくは、パトロン・オブジェクトのプログラム・コードに対 して可視的である。それは、メタデータ・リソースファイルにストアされた使用 から動的に作られる。これらの意味論的リンクが、リソースに完全にストアされ 、ランタイムで動的にインスタンス生成されるので、リンクは、パトロン・クラ スを実行するのに使用されるコードを変更することなく、変更され得る。マッパ が、一般的な発行を処理する上で呼び出すヘルパー・オブジェクトが更にある。 新しいタイプのマッパが容易に生成され、それらが任意のセットのクラス・メ ンバを互いにリンクすることができるので、可能な意味論的リンク・タイプのメ ンバは無限であるが、100以下のマッパの慎重に作られたセットで達成される 。 接続 接続は、意味論的リンクの名前を表示した収集である。所定の接続の意味論的 リンクの全ては、同じパトロン・クラスのメンバをリンクする。それゆえ、接続 は、オブジェクト同期の特定のアプリケーションの特定なタスクを実行するため に調整する意味論的リンクの集約である。集約は、それがデータ構造内にあるよ りも、接続のアリーナにおいて少なくとも強力でなくはない。接続はまた、他の 接続の集約の目的に関して、意味論的リンクのタイプを考慮すべきである。 接続は、APIコール「edit」を介してランタイムでインスタンス生成される 。編集するためのパラメータは、(それがデフォルト接続名を暗に意味すること が道理にかなっているならば)接続の名前を少なくとも含む。エディット関数は 、接続のメタ記述を検索するために接続の名前を使用し、次いで、ファクトリ・ メソッドを使用する名前によって要求されるマッパ・クラスをインスタンス生成 し、接続されるオブジェクト・インスタンス並びにプロパティにマッパを通し、 マッパはそれら自身を初期化するために使用されるべきである。いったん、エデ ィットがオブジェクトを接続して完了したならば、制御のプログラムフローは続 く。エディットが返された後、パトロンオブジェクトのうちの一つの属性が変化 するので、プローブが呼び出されるとき、マッパは単にアクティブになるだけで ある。 好ましい実施形態では、各接続は、生成され、特定のクラスに属し、そのクラ ス(又は関連するクラス)のインスタンスで使用され得るだけである。ある意味 では、接続はクラスのメタ「メンバ」である。それにもかかわらず、クラスのメ タデータから幾つかの接続を別々にストアする幾つかの利点がまたありうる。 接続の種類 もしかすると何千もの有用なタイプのマッパがある一方、比較的少ない種類の 接続がある。接続の種類は、オブジェクトを接続する基本的な技術によって区別 されないが、むしろ、オブジェクトのソートが接続されることによって、ユーザ ・インターフェースは接続を構築するために使用され、「edit」関数の詳細はそれ らのインスタンス生成をするのに使用される。接続の種類の相違は、一般的なク ラスの問題を解決する。 最も一般的且つ柔軟な接続の種類は、外部オブジェクト接続である。外部オブ ジェクト接続は、意味論的リンクのリストと一緒に2つの異なるオブジェクト・ インスタンスをリンクする。各意味論的リンクは、異なる属性と、包含される2 つのクラスの関数とを一緒に関係付けることができるが、名前を表示した接続の 意味論的リンクの全ては、同じ2つのパトロン・クラス・タイプ(又は、それら の同じ2つのパトロン・オブジェクトの2次属性)と一緒に関係付ける。外部オ ブジェクト接続は集約され得る。人が、「A−B」と呼ばれる接続を有する2つの クラスA及びBを有するならば、次いで、人はクラスXとYとの間に接続を生成 することができ、XはタイプAのフィールドaFieldを有し、YはタイプB のフィールドbFieldを有し、次いで、X及びYの間の接続は、aFiel dとbFieldとを関係付けるための「A−B」接続を使用することができる 。「A−B」はまた、Aと、YのbFieldにA自身を接続するYとの間の接続 に使用することができる。他の全ての接続タイプは、外部オブジェクト接続の特 殊化である。追加のプロパティ情報は、他のタイプの接続に関する特定の機能性 の問題を提供する。 内部オブジェクト接続は、両パトロン・オブジェクトが同じインスタンスであ ることを除いて、外部オブジェクト・マッピングと正確に同じである。即ち、内 部オブジェクト接続は、単一のオブジェクト・インスタンス内で互いにエレメン トと関係する。単一のオブジェクトの2つの複雑な属性は一緒に接続されること ができることを覚えているとき、内部オブジェクト接続はより意味をなす。パブ リック属性のパブリック・メンバが、機能的に開けられ、互いにリンクされ売る ことを記憶する。即ち、クラスAのメンバは、クラスA又はクラスBのいずれか の実行の影響なしに、(両方が、接続を有する第3のクラスのフィールドとして 使用されることを仮定する)クラスBのメンバに接続されることができる。同じ クラス・タイプの2つの別のオブジェクト・インスタンスを一緒に接続すること が所望されるならば、外部オブジェクト接続は、そのように行われるのに使用さ れ得る。 特注のビュー接続は、特別の問題領域に特有である接続タイプの例であり、こ の場合はユーザ・インターフェースを構築することである。特注のビュー接続の 場合では、接続されているクラスのうちの一つは、ユーザ・インターフェース・ システムのビジュアル・コンポーネントであるベース・インタラクタ・クラスを サブクラスする。インタラクタは、ダイアログ、又は、メニュー・アイテム、又 は、ユーザ・インターフェース・ライブラリからの他の幾つかのオブジェクトの ウィジェットでありうる。特注ビュー接続は、接続するためのオブジェクトのリ ストがインタラクタ・ベース・クラスのサブクラスに制限されており、プロパテ ィがビュー・オブジェクトのデフォルト設定に関して設定されることができるこ とを除いて、外部オブジェクト・マッピングと同じである。ビジュアル・オブジ ェクトに関するデフォルト設定であるこの手段が、マッピングと一緒にストアさ れる。 特注ビュー接続は、複合ビュー接続を生成する際に使用され得る資格がある。 複合ビュー接続は、特注ビュー接続の集約器である。それは、ユーザ・インター フェースのビジュアル外観の仕様を考慮に入れるプロパティを追加する。複合ビ ュー接続は、アプリケーション・オブジェクトをビジュアル・インタラクタ・ク ラスのグループに接続する。各ビュー・クラスは、以前に生成された特注ビュー 接続を介して、アプリケーション・クラスのエレメントに接続される。複合ビュ ー接続を生成するためのユーザ・インターフェースは、ユーザ・インタフェース ・ビルダのように見え、且つ、ユーザ・インターフェース・ビルダのように作用 し、その上、それは、ユーザ・インターフェース・アプリケーションに関する幾 つかの追加のプロパティを備える一般的な接続技術の簡単な別のインターフェー スである。 当業者は、これが接続の種類の包括的なリストではなく、単なる代表のリスト であることをが分かるであろう。他の一般的な問題の領域は、接続の異なる種類 でアプローチされうる。例えば、データベース接続は、プログラム中のクラスの 構造に適合するスキーマを備えるデータベースの使用を考慮するプロパティを有 する。活動がオブジェクトで生じるとき、それらはデータベースに接続される。 データベースのエレメントが変更するとき、オブジェクトは従って同期される。 同様に、ハードウェアであれ、ソフトウェアであれ、又は、ネットワーク・リソ ースであれ、どんなリソースでも要求されるときはいつでも、接続の新しいタイ プが、ドメインの特定の仕方のリソースをアセンブリするように工夫され得る。 これらの接続コンポーザは、根本的に異なるインターフェースを備える多数の形 態をとることができる。 Edit 殆どのオブジェクト指向言語では、接続モデルは仕様を例示から分離する。仕 様は、ビルダとして以下に記載する対話型環境で行われる。例示は、「edit」と呼 ばれる関数に対してAPIコールを介して達成される。この関数は、2つのオブ ジェクト間の接続のインスタンスを生成するために、プログラム実行中に呼び出 される。一般的な種類の接続の各々は、少なくとも1つの関連するオーバーロー ド・エディット関数を有する。接続の名前は、(デフォルト接続が適切でなけれ ば)通常はエディット内に通される。他のパラメータは、各タイプの接続に関し て異なる。好ましい実施形態では、エディットは、共通のベース・クラスのメン バ関数であり、グローバル関数はまた、別の実施において十分である。 エディット関数は接続を記述するメタデータ情報を読み込み、プローブを配置 し、必要なパトロン・オブジェクトの動的結合をあらかじめ計算することによっ て接続に各意味論的リンクをインスタンス生成する。プロパティに対するどんな 意味論的リンクも、この時に同様に同期される。プログラムの制御のフローは、 エディットが接続にインスタンス生成した後に、復帰する。接続は、パトロン・ オブジェクトのうちの一つのプローブのうちの一つが発射するまで、決して活性 化しない。この受動的アプローチは、ポーリングよりもより効果的である。 コードの構造が、従属を本当に防止するように、幾分慎重に構成されなければ ならないことに注意し、本発明は防止するように努めている。第1のパトロン・ オブジェクトが属性として第2のパトロン・オブジェクトに対してポインタを有 し、単にそれを外部オブジェクト・マッピングを備えるエディット内に通すなら ば、次いで、依存の複雑性は小さくなるが、コードのオブジェクト間の同じ基本 的な相互依存性は依然として存在し、第1のパトロン・オブジェクトのモジュー ル性は強調されていない。幸運にも、オブジェクト自身のコードを修正すること なくエディットを呼び出すコードを書き出すことは当業者にとって非常に容易で ある。外部オブジェクト接続に関するエディット関数は、接続の名前と、マップ するためのパトロン・オブジェクトとをとる。C++インプリメンテーションで は、パトロン・オブジェクトのうちの一つは、典型的には、「この」ポインタで ある。2つのオブジェクトポインタと、接続の名前とをとる、エディットの非メ ンバ・バージョンがまた存在する。内部オブジェクト・マッピングに関するエデ ィット関数は、接続の名前だけを必要とする。静的バージョンはまた、オブジェ クトに対するポインタをとる。これは、最も簡単なエディット関数プロトタイプ である。特注ビュー接続に関するエディット関数はユーザによって直接呼び出さ れることは決してないが、むしろ、複合ビュー接続によって内面的に使用される 。複合ビュー接続に関するエディット関数は、接続の名前と、それが現れる場所 のように、上げられるインターフェースに関する情報を特定するパラメータとを とる。ビュー・クラスは、プログラマのコードには現れないように、一般的なフ ァクトリ・メソッドを介して常にインスタンス生成される。データベース接続に 関するエディットは、接続名に加えてデータベース名をとる。 システムのコンポーネント 本発明は1組の共同システムから構成される。プログラマは、ビルダに利用可 能となるメタデータのオブジェクト間の接続を特定する視覚対話型ビルダプログ ラムを使用する。好ましい実施形態において、リンクされるクラスは、該クラス 間の接続を特定するために使用される同じビルダを用いても生み出される。プロ グラマが、クラスを組立て接続し終えると、接続の特定化を含めクラスのメタデ ータを情報ファイルに蓄える。プログラムが実行されている間、該情報ファイル は“エディット”によってメモリーに読取られ、該リンクは、力学的な巻き付け や、情報ファイルの青写真に従って動くオブジェクトを取り付けるための調査を 使用することによって力学的に確立される。 ビルダ 本発明に関する相互作用ビルダの主な目的は、互いにマップされ、指名された 接続を生み出すクラスを選択することである。異なるクラスの接続があるため、 マッピングを作り出すインターフェイスは根本的に異なる。使用者の行いが接続 を生み出しているということが明らかであるときがある。他には、使用者は全く 無関係なこと、例えば使用者のインターフェイス又はデータベースを生み出して いることが明確であるときもある。優れたビルダは、特別な接続タイプのために 手近に機能させる必要な詳細レベルを提示するだけである。例えばマッパの特性 を制御することは必ずしも必要ではない。マッパを直接使用する複雑さは、ある 目的のために隠されている。 接続を作り出すインターフェイスは、接続の所有者としてクラスを選ぶことで ある。次に新しい接続指示を選択する。以上が達成されると、使用者に様々なオ ブジェクトの機能、属性、プロパティ、補助機能、補助プロパティ、補助属性間 のリンクリストを作り出せるようにダイアログが表示される。該クラスは、その 属性、プロパティ、機能を階層的視点で示される。属性はクラス自体であるとき 、該階層は拡大する。かつ、全ての要素はプロパティを有し、これらのプロパテ ィが特定の整数分野に存在する場合、整数分野は“最小価値”及び“最大価値” プロパティを示すために拡大される。機能及びクラス自体もプロパティを有する 。所定部材を一緒にマップするようにマッパが組立られる場合、プロパティ及び 又は属性及び又は機能は、他の1組にマップされる。1組の部材が、マッピング ダイアログの両サイドに選択されると、これら2組の部材をマップするために使 用される全ての接続リストが生じる。各マッパは、実証機能を使用して所定のセ ットに接続するか否かを決定する。特定のマッパが選択されると、接続を構成す るリンクのリストに加えられる。マッパは、マッピングの動きを改良するように エディットされる属性を備える。これらの属性は各マッパタイプに特定されるが 、引き出されたマッパの属性が、上鋼から受け継ぐ属性を必ず有する。全てのマ ッパが共通の基本クラスを共有するので、それらは全て少なくとも基本クラスを 備えている。 リソース・ファイル 好ましい実施形態では、ビルダによって作り出されたリソース・ファイルは、 ビルダに特定されるクラスを定義する各プログラマに関するエントリを備えたメ タデータのデータベースを包含する。接続は、それらが異なるインプリメンテー ションに別々にストアされているとしても、接続に含まれているクラスのうちの 1 つとともにストアされる。リソース・ファイルは、テーブルとして知られる階 層構造の属性を持ったデータ構造である。テーブルは、容易に拡張可能な仕方で 、(データベースと同様に)一般的な情報をストアする能力がある。クラスに関 してストアされた情報の一部は、それ自身内のそのクラス及び他のクラスを接続 するためにビルダに接続された全ての接続のリストである。情報は、(特定のク ラスに関する各接続が一意的な名前を有する必要がある)マッピングの名前と、 このマッピングがリンクするクラスと、接続を作る(プロパティと)リンクする 個々のリストとからなる。各意味論的リンクに関するメタデータは、属性と、プ ロパティと、2つのクラスに接続されている関数名と、マッパが要求するいなか るプロパティ情報とをストアする。 ランタイム・ライブラリ 本発明は、コンパイラ自身を修正することなく、オフザシェルフ・コンパイラ をサポートする。接続は、ランタイム・ライブラリの関数を呼び出すことを介し て、完全にサポートされる。ランタイム・ライブラリは、実行可能なプログラム 内にリンクされている。このライブラリは、オブジェクト間のインスタンス生成 (edit)及び破壊(stopEdit)接続に関するルーチンにアクセスを提供するクラ スを包含する。また、これを援助するランタイム・ライブラリの他のクラスがあ る。この開示に関するクラスの最も顕著なファミリはEosMapElemen tのサブクラスである。このベース・クラスは、選択された2つのクラスのセッ ト間の単一なリンクを生成する基本的な機能性を提供する。それは、適当なマッ パのリストのメンバーシップを判断するためのルーチンと、マップされているク ラスに対してストアされたそのプロパティを介して、それ自身を取り付けるため のルーチンと、マッピングのランタイム挙動を判断するのに使用されるプロパテ ィを得、設定するためのルーチンとを包含する。 実行可能なプログラム ライブラリが、プログラマのコードとリンクされるとき、実行可能なイメージ が生じる。実行可能なプログラムは、プログラマノクラスと、(リソース・フォ ークに実行可能に結び付けられ得る)リソース・ファイルとからなる。プログラ ムが走るとき、メタデータがアクセスされ得るように、プログラムはリソース情 報をメモリ内にロードする。接続は、接続されているクラスのメタデータにスト アされる。プログラマノクラスは、メタデータを翻訳させることができるランタ イム・ライブラリからのエディット関数にアクセスし、接続は、この実行可能な イメージの実行中に動的に確立される。 図面の簡単な説明 図1は、簡単なフィールド−フィールド意味論的リンクの詳細な図である。 図2は、ネットワークを超えて接続された別々のマシーンの一つのパトロン・ オブジェクトを備える、図1のような同じ簡単な意味論的リンクを示す。 図3は、タイプ・エレメントに関するクラス階層構造を示す。 図4は、接続を特定するための好ましい実施形態に対するインターフェースを 示す。 発明の詳細な説明 序論 次に、本発明の好ましい実施形態が示されている添付図面を十分に参照して本 発明を説明する。しかしながら、本発明は多くの異なる形態で実施され、ここで 説明する実施形態に限定して構成される必要はないが、この実施形態は完全に完 了しており、本発明の範囲を当業者に十分に伝え得るように提供されている。 本発明は、一般にパーソナル・コンピュータ(PC)又はワークステーション と呼ばれる汎用コンピュータで実施される。本発明の幾つかの態様は、コンピュ ータがネットワークに接続されていることを要求する。 明細書のこの部分は、最初に、例示され接続された後の接続の構造及び管理を 、次いで、記述子データからの接続の例示、最後に、ビルダ・プログラム内の対 話式のそれらの接続の使用に関する方法を説明する。 付録としてここに添付したものは、本発明の要素の例示的な実施形態である。 本発明の実施に適当な変形実施形態があることは当業者には明らかであろう。 単純な意味論的リンク 図1は、2つのオブジェクト間に単純な意味論的リンクを備える接続に含まれ るオブジェクトを示す。以下に記載するような機構を介して接続が既に生成され ていると仮定すると、このことによってオブジェクトの構成が生じる。EosMapFi eldToField オブジェクト(103)は、好ましくは各パトロン・オブジェクトの フィールド(101)、(105)にプローブを設定する。これらのフィールドのう ちの1つを変更することは、マッパを介して同期を開始する。以下のステップは 、左のフィールド(101)が変更されたときに生じる。 1.左側のフィールド(101)が変更されたとき、そのプローブ・コールバッ クの全ては呼び出される。 2.EosMapElement::leftHandSideCallback 即ち、EosMapFieldToField(103 )のメンバが呼び出される(これは生のプローブ・コールバックである)。変形実 施形態では、このコールバックは EosFieldElement(107)になされることに 注意すべきである。 3.フラグは、マッパが稼動中である指示を設定する。(フラグは、leftHandSid eChangedが復帰した後、消される) 4.次いで、leftHandSideCallback は、leftHandSideChanged と呼ばれるマッ パ・クラスの仮想関数を呼び出す。 5.leftHandSideChangedのベース・クラスの実行は、valueChangedと呼ばれる マッパの仮想関数を呼び出す。殆どのマッパが、方向にかまわずに変形を行うた めに、leftHandSideChanged の代わりに valueChanged を置き換える。パラメー タは、変更するフィールド、変更するタイプ・エレメント(この場合は左側(10 7))、及び、別の側の(104)に関するタイプ・エレメントである。タイプ・ エレメントは、フィールド、関数、プロパティ、又は、メンバのリストを表し得 る。 void EosMapElement::valueChange(EosProbeObject *scr,EosTypeElement *scrEl,EosTypeElement *destEl); フィールド・マッパに対するフィールドの単純な場合では、valueChangedは 単純に、(変更される)ソース側パラメータから値を得て、宛先側の値を右タイプ ・エレメント(104)を介してこの新しい値に設定する。 6.右タイプ・エレメント(104)は、フィールド(105)を動的結合機構 を介して右側オブジェクト(106)に設定する。できる限り効率的に行われる ように、タイプ・エレメントは既に、フィールド名からフィールドのインデック スをあらかじめ計算してある。 7.次に、プローブは、マッパのrightHandSideCallbackを呼び出させうる右側 フィールド(105)に発射する。(また、変形実施形態では、これはマッパに 直接なされるのではなく、フィールド・エレメント(104)になされうる。) このコールバックは再び、マッパ・アクティブ・フラグが設定されているか否か 見るために検査し、それまで、プロセッシングは停止し、即ち、値は左側フィー ルド(101)に転送されない。この検査は、マッピング機械内の無限ループを 避けるのを助ける。(プローブ機構はまた、循環整理編集機構を有するが、それ をマッパに加えることはより有効であり、より安全である。)もちろん、この挙 動は、そのように行うことが道理に適う場合に置き換えられる。 他のオブジェクトはこの値に配置されたプローブを有し、プローブが発射され ていないならば、それらは同期され得ないので、プローブはフィールド(105 )に発射されなければならない。まず右側フィールド(105)が変更し、次い で、rightHandSideCallback が情報を valueChanged に転送しうるが、パラメー タは方向の変更を反映するように反転される。 valueChanged、leftHandSideChanged 及び rightHandSideChanged の実施の正 確な詳細は、もちろん、各マッパ・サブクラスのために変更しうる。一般的な機 構は、殆どの重要な場合を取り扱うのに十分柔軟である。この単純な場合では、 マッパは値に沿って変更されずに、左側パトロン・オブジェクトから右側パトロ ン・オブジェクトに通される。しかしながら、マッパが、値を備えるどんなもの も行うことができることに注意すべきである。それを韻律ユニットから英語ユニ ットに変換することができ、数をデータベース内のインデックスとして使用する ことができ、フィールドをレコードNから第2のパトロン・オブジェクトに通す ことができる。強健なブログラミング言語でなされるどんなことも、マッパの内 部でなされ得る。しかしながら、マッパが双方向ならば、変形はいつも推移され るべきである。即ち、変形は両方向であり得る。さもなければ、循環整理編集機 構は、幾つかの場合に生ずる偽物を作り出し得る。一般的に得られるものの多く は、マッパに関するベース・クラスEosMapElementのAPIからきており、また 、意味論的リンクの各側を備えて包含するメンバを表すタイプ・エレメントから もくる。図1に示したように、接続されている各オブジェクトに関する単一のタ イプ・エレメントがある。複数のメンバがマップされるならば、タイプ・エレメ ントは他のタイプ・エレメントのリストを保持する。 ネットワーク考察 図2は、第2のマシーンの右側パトロン・オブジェクト(206)を備える図 1 と同じ意味論的リンクを示す。図1(101)又は(105)のパトロン・オ ブジェクトのフィールドのいずれか又は両方が、ネットワーク・プロキシ・オブ ジェクトによって置換され得ることに注意すべきである。パトロン・オブジェク ト(106)が実際にネットワーク・プロキシ・オブジェクト(206)である とき、細部はわずかに変更する。本質的に、プロキシ・オブジェクトは、それが あらわすオブジェクトであるように装う。このような一般的なプロキシは、オブ ジェクトを直接オフにする関数を含むような、通常の非動的言語構文を取り扱う ことができないが、それがパトロン・オブジェクトであるかのように、検査及び 動的結合のサービスを提供する。これは、動的結合及び検査が、言語において全 てのクラスに関して同じだからである。 タイプ・エレメントは、データを動的結合を介して通常の方法でプロキシ・オ ブジェクトに設定するが、プロキシ・オブジェクトは、ネットワークを超えて実 在のオブジェクトへのメッセージをパッケージ化し且つ送信する面倒を見る。好 ましい実施形態では、ネットワークプロトコルは、一般に入手可能なRPCベー ス・ネットワーク・ライブラリを使用して実行され、それらはメッセージ、変更 されたデータ、及び、設定されるエレメントのフィールドに対するパスを送信す るためのオブジェクトに関する識別子を有する。それがネットワークの他の側に 対するRPCコールを作り上げるとき、プロキシ・オブジェクトが情報の3つの 形態を取り扱うことができるように、動的結合は、インデックスによってフィー ルドを得て、且つ、設定し、若しくは、インデックスによって関数を呼び出す。 異なるマッパが全て標準形態に入れられるように、異なるマッパはこれらの異な るタイプの情報を生成する。RPC実行の詳細は、この明細書の範囲を超えてい るが、一般に入手可能である。 EosProxy プロキシ・オブジェクトは、接続オブジェクトと、接続に含まれるルート・オ ブジェクトをポイントするためのオブジェクトと、(以下に説明する)サブフィー ルドを得るためのパスと、それが示すフィールドの名前とを備えて構成されてい る。 EosProxyProbeObject(EosConnection *connection,EosObject *object,const EosObjectPath &path,const EosAtom &name); 各プロキシがセットアップされるとき、一意的な識別子はネットワークの両側の オブジェクト・インスタンスのために生成される。セットアップ中にidが他の マシーンに通されるように、各マシーンのidは異なっていても良く、この場合 、オブジェクトは後でアクセス可能であり得る。両マシーンは、IDをそのマシ ーンのアドレス空間の実際のポインタに変形するのに使用されるルックアップ・ テーブルを有する。プロキシ・オブジェクトはまた、サブクラス・パスのエレメ ントが変更するときはいつでも、それ自身をリセットしなければならない。プロ キシ・オブジェクトの例示的な実施形態を付録Iに与える。プローブ・オブジェ クト・クライアントとプローブ・オブジェクト・サーバがあることに注意すべき である。クライアントがリンクを初期化することだけが異なる。例示した後、双 方向通信リンクが確立される。クライアントは、クライアントID番号を通すサ ーバのsetupServer関数を呼び出すためにRPCを使用し、次いで、サーバID 番号バックを通すクライアント・バックを呼び出す。ネットワークを超えてオブ ジ ェクトをはじめに分散することの詳細は、この明細書の範囲を超えている。 EosConnection EosConnection クラスは、ネットワーク接続に使用されるRPCコールのまわ りの単純なラッパである。しかしながら、同じマシーンのオブジェクトと通信す る種々のプロキシ・サーバ・オブジェクトがあるならば、各 EosProxy は接続に 対するポインタを有し、次いで、それらの全てのサービスに対して1つのEosCon nection インスタンスである必要がある。(付録Iで分かるような)接続は、それ が一緒に通ることができる種々のタイプのメッセージを有する。それは、正しい インスタンスに対する正しいメッセージを得るために、前述したオブジェクトi dを使用する。それは、データを変更するよりプローブを発射するために、わず かに異なるプロトコルを使用する。ある違いは、プローブが発射のプロセスにあ るならば、接続は、(マッパそれ自身が無限ループを減少させることと同じよう に)第2のプローブ発射が交換をはじめるのではなくマッパに戻らないことがわ かることである。この場合、マッパ・オブジェクトが第3のマシーンにあるなら ば、それは第3のマシーンによってネットワーク・トラフィックを低減させる。 パス・オブジェクト パス・オブジェクトは、オブジェクトに動的結合を介して接続するタイプ・エ レメントのパスである。本発明の重要な特徴の1つは、パトロン・オブジェクト のサブメンバのサブメンバのサブメンバが、必要な限り下方へ接続され得ること である。パス・オブジェクトは、重要なメンバを得るためにオブジェクトをトラ ンスバースするための情報を包含する。複数のメンバ・マッピングの場合では、 各メンバは、それ自身のパスを有し、サブ・メンバと異なり得る。パス・オブジ ェクトは、実際のメンバを得るためのこのパスのメンテナンスの処理をする。こ のことは、マッパが、プローブを配置し、若しくは、それと動的に結合する実際 のフィールドにアクセスすることができるようにすることが重要である。インデ ックスによってフィールドの値を設定するために動的結合機構を使用することが できるように、メンバ(親オブジェクト)を含むオブジェクトを見つけることは 、タイプ・エレメントによってまた使用される。(これは、メンバとの動的結合 が、メンバを包含するオブジェクトに関する指標付けされたメンバとして実行さ れるので、必要である。)もちろん、これは関数に適用できるが、関数は、プロ パティを有しないならば、サブ・メンバを有さず、関数は通常パスの葉ノードで あり得る。プロパティに関して、親オブジェクトが、プロパティを備えるメンバ を包含するオブジェクトであることに注意すべきである。プロパティは、理論的 にはサブ・プロパティを有し得るけれども、パスの葉ノードでもある。整数のよ うな基本フィールドは、(プロパティではなく)サブ・メンバのいずれも有さない 。それゆえ、サブ・メンバは、それら自身のクラスであるフィールドに関しての み存在する。 ルート・オブジェクト自身に関する特別な場合が存在する。即ち、意味論的接 続が、そのオブジェクトのメンバ又はサブ・メンバではないマッピングを有する オブジェクトに対して生成されるならば、次いで、パスは空である。この場合、 親オブジェクトは無く、タイプ・エレメントは、オブジェクトそれ自身に対する その意味論的リンクと単に接続する。 パス・オブジェクトはまた、作動中のプログラムにおけるオブジェクトの動的 特性に関連する幾つかの本当に困難な状況を解く。例えば、意味論的リンクがポ インタ・フィールドの内部のフィールドに作られ、ポインタ・フィールドが新し いオブジェクトをポイントするために返還されるならば、次いで、マッパは、第 1のオブジェクトに対してそのプローブを分離しなければならず、そして、新し いオブジェクトに対して再接続しなければならない。サブ・フィールドのサブ・ フィールドに対する添付は、フィールド名のパスを保持することによってトラッ クを保持する、例えば、fieldA.fieldB.fieldCは、fieldCが、fieldAのメンバで あるfieldBのメンバであることを意味する。パス・オブジェクトは、これらの中 間レベルの各々にプローブを配置し、中間レベルが変化するとき、それはそれら のプローブをリセットするためにマッパの関数を呼び出す。マッパは古いオブジ ェクトから切り離すことができなければならず、それらがランタイムで変更する ときに、それら自身を新しいオブジェクトに再び取り付けるが、パス・オブジェ クトは複雑な簿記を全て行う。生のプローブ機械は、プローブに対する個々のイ ンスタンスに気づいているだけであり、マッパ及びパスが行うような必要がある ので、切り離し及び再取り付けをする文脈上の能力を有していない。プローブが 手によって配置されるならば、この関数は自動的には得られない。動的結合及び メタ・データは、プローブを配置するための新しいアイテムを見つけるのに使用 される。 パス内の中間ポインタ・フィールドの値が、NULLに設定されるならば、次 いで、プローブは古いオブジェクトから除去されるが、もはや接続されるオブジ ェクトがないので、再び接続されることはない。また、パスを更に下げるパス・ メンバのどんなプローブ・セットも除去され得る。同様に、NULLポインタが 、有効なオブジェクト・ポインタに割り当てられているならば、プローブは除去 されないが、単純に加えられる。プローブは、オブジェクトのマッパによって、 及び、更なる中間パス・エレメントのパス・オブジェクトによって配置され得る 。 同様に、接続に含まれたオブジェクトのうちの1つが、ある理由で削除される ならば、接続は自動的に切断される。パス・オブジェクトは、この発生を判断す る際に、役立ち得る。 リファレンス・カウント・ポインタ リファレンス・カウント・ポインタとは、このシステムにおける全てのポイン タの好ましい実施形態の事実の全ての実行を大いに簡単にするものであり、即ち 、あなたは他人によってポイントされるかもしれないアイテムを直接削除できず 、それに対するあなたのリファレンスを移動させることができるだけであり、そ れがそのリファレンス・カウントを減少させる。リファレンス・カウントがゼロ に向かうならば、それはそれ自身を壊す。パスを変更することの例では、ポイン タをNULLに対して設定し、次いで、それが他のオブジェクトに対する最後の リファレンスならば、それを削除し得る。しかしながら、パス・オブジェクトが 、ポインタを再び割り当てることの部分として、オブジェクトのプローブを移動 させるためにマッパを知らせる。次いで、パス・オブジェクトは、削除する前の プ ローブの移動を管理する際に、非常に重要である。このことが正しいオーダーで 行われるならば、次いで、あなたは既に自由になっているリファレンス・メモリ であってよく、そこで、リファレンス・カウント・ポインタとパス・オブジェク トとの組合せは、含まれた発行の全てを十分にアドレッシングするのに基本であ る。パスはまた、早まって壊されないように、リファレンスをオブジェクトに保 持する。リファレンス・カウント・ポインタは、不要部分の整理と呼ばれる技術 の実施である。 タイプ・エレメント システムの設計の目標の一つは、できるだけ容易な新しいマッパ・クラスを構 築させることである。単純なマッパを要求することは、メタ・データの発行を直 接配り、動的な結合はそれらの実行を過度に複雑にする。タイプ・エレメントは 、できるだけ一般的に、(マッパの観点から)パトロン・オブジェクトにアクセス させるように導入される。各マッパ・クラスは、左側に関するものと、右側に関 するものとの2つのタイプ・エレメントを有する。もちろん、左及び右という名 前は、コンピュータに対して特別な意味を有しておらず、(後で説明するユーザ ・インターフェースに関連するものであるが)人の消費に関するものである。タ イプ・エレメントの一つの主要な関数は、関数、プロパティ、及び、可能な限り フィールドのようにみえるメンバのリストを作る標準的なインターフェースを有 することである。マッパと可能な限り同じように見えるこれらの言語エレメント の全てを有することは、マッパが、特別な目的コードに共通の一般的なケースを 取り扱わせないことを意味する。 図3は、タイプ・エレメントの階層構造を示す。 EosTypeElement EosTypeElement(301)は、他の全てのタイプ・エレメント に関するベース・クラスである。それは、他のタイプ・エレメント・サブクラス に関する共通のベース・レベルAPIを提供する。それは、他の全てのタイプに 関する同様なサービスを提供するよう努力するが、それはフィールドに最も良く 似ている。特に、そのようにするのを検知させる多くの場合と同じようなフィー ルドのように作用する、関数及びプロパティを作ることを試みる。例えば、リス ト・エレメントを除く全てのタイプ・エレメントは、データを設定するための関 数と、データを得るための関数とを有する。EosTypeElements( 並びにマッパ)は、それらが名前などで生成されることができるように、パトロ ン・オブジェクトとして同じ言語要求(プローブ、メタ・データ、動的結合及び 一般的ファクトリ方法)を言語でプログラムされるべきである。実際に、タイプ ・エレメント及びマッパは、それらが同じ言語ならば、最も便利であるように、 同じ実行可能なプログラムでなければならない。 全てのタイプ・エレメントの殆どの機能性は、EosTypeElement とのインターフェースを介してアクセスされる。即ち、機能性は、アクセスされ 、EosTypeElementの共通APIを介してアクセスされる殆どの部 分であるサブクラスの仮想関数に曝される。これは、そのようにすることを検知 するとき、同様な仕方で各タイプの仕事を作る。 動的結合は、クラスレベルで行われ、フィールドレベルでは行われないので、 メンバ自身に加えて、メンバを保持するオブジェクト・インスタンスに気づいて いるべきであることは各タイプ・エレメントに関して重要である。親ポインタは 、タイプ・エレメントにとっての関心事のメンバを包含するオブジェクトをポイ ントすることによってこのタスクを成し遂げる。また、これはリファレンス・カ ウント・ポインタであり、親オブジェクトが自由になることができる前に、タイ プ・エレメントが自由にならなければならないことを意味する。タイプ・エレメ ントはこれを(タイプ・エレメントのメンバである)パス・オブジェクトから得 る。 タイプ・エレメントはまたプロパティを有するが、これらのプロパティは、タ イプ・エレメントの状態をストアするのに簡単に使用される。ユーザは、これら のプロパティに決して曝されず、持続性機構として使用されるだけである。これ らのプロパティをユーザに曝すことによって得られ得る更なる機能性はなく、そ れはシステムを理解するのをより困難にさせ得る。マッパは、必要ならばそれが 所有するタイプ・エレメントのプロパティを設定し、得る。最も重要なタイプ・ エレメント・プロパティは、情報が流れることができる方向に関する。 タイプ・エレメントはまた、タイプ・エレメントの種類を報告することができ る。 EosFieldElement マップされるべき言語エレメントがパトロン・オブジェクトのデータ・フィー ルド・メンバ(属性)であるとき、EosFieldElementが使用され る。 EosFieldElement(302)に対するインターフェースは、実 質的に全く同じEosTypeElementのものであり、即ち、ベース・ク ラスである。フィールド・エレメント(及び他のエレメント・タイプ)は、情報 が流れ得る方向を判断するためにマッパと相互作用する。殆どの現実のフィール ドに関して、情報はフィールドへ及びフィールドから流すことができる。マッパ は、一方向に情報を転送することを決定するだけであるが、それはフィールドの 情報に限られない。これに関する必要性は、種々のタイプ・エレメント・サブク ラスがフィールドの挙動をどのようにエミュレートするか議論されるので、明ら かになるはずである。それは、マッピングが、いずれか若しくは両方の方向に情 報の流れを有し得ることを説明するのに十分である。 EosFunctionElement マップされるべき言語エレメントがパトロン・オブジェクトのメンバ関数であ るとき、EosFunctionElementは使用される。このエレメント は、関数パラメータ・リスト・メタデータ情報にアクセスするための追加の能力 を有する。関数は、これらの形に続く: void func(Type); Type func(void); は、クラスTypeのフィールドとして処理される。Typeは、一般的な形の 損失を除いて、定数、&、*等によって修正され得る。この抽象化は、データを 得るか又は設定するための関数を呼び出すことを意味するようにデータを設定し 及び得ることを無効にするEosFunctionElementによって提供 される。タイプ・エレメントを読み且つ書き込む方向を決定する関数は重要なも のであり、一つは、値を返す関数に値を書き込まず、又は、パラメータを得る関 数から読み込む。言い換えれば、タイプを返す関数は読み込み専用フィールドの タイプとして処理され、パラメータを得る関数は、書き込まれることだけが可能 なフィールドとして処理される。この特別な場合は、特別なケース・コードを要 求する各マッパなしで、フィールド(又は他の関数)に対して関数を関係付ける ように、フィールドを一緒に関係付けるように書き出されたマッパに関してそれ を可能にさせる。このことは、方向を決定する仮想関数のアクセス、値を返すg etRealProbeObject、値を設定するsetProbeObje ctValueを介して達成される。もちろんアクセスに依存するので、get 又はset関数は、呼び出すのに有効でないかもしれず、マッパはそれを呼び出 さないかもしれない。 関数が上の形に適合しない多くの場合では、関数エレメントは、関数パラメー タにアクセスし、関数パラメータを作るために関係付けるためのマッパに関する 追加のAPIインターフェースを提供する。マッパに関して、より一般的な関数 インターフェースとインターフェースするために、それが関数を扱うことを知ら なければならず、従って、作動する。これがしばしば使用されないかもしれない ので、十分な関数インターフェースにアクセスすることは、より柔軟且つ強力で ある。 Get/Set関数ペア Get/Set関数は、それらと互いに関連する特別なプロパティを備える関 数である。get/set関数ペアを包含する3つのエンティティがある。ge t関数については、 Type getFunc(void); の形態の関数であり、 set関数の形態は、 void setFunc(Type); であり、プローブは、利害関係があるサード・パーティが、get関数を呼び出 すとき知るのに使用するフィールド(可能ならば信号)を使用可能にする。Eo sFunctionElementの助けと一緒に、計算されたフィールドとし て3つのエンティティ関数がある。get関数は、プロパティとしてプローブ使 用可能なフィールドの名前を有し、set関数は、プロパティとしてget関数 の名前を有する。set関数はオプションであり、この場合、get/prob eの組合せは、オブジェクトの読み込み専用フィールドとして作用する。 EosFunctionElementはEosTypeElementのサ ブクラスなので、マッパは、それらが取り付ける(フィールドではなく)関数で ある知識なしで、関数エレメントに接続することができる。ベース・クラス・マ ッパは、マッピングが生じうる方向について知っているので、タイプ・エレメン トは、情報に関するソース又は宛先であり得るその能力として、マッパにフィー ドバックを与えなければならない。EosFunctionElementがg et/set関数ペアを取り扱うとき、次いで、それは双方向情報フローを備え るフィールドとして正確に作用する。 get関数に関して、フィールドのようなものを見る際に参加するために、そ れらは関連するプローブ・フィールドを有しなければならない。get関数及び (set関数を除く)信号があるならば、次いで、それはインフォレーションの ソースのみとなるであろう。 EosPropertyElement EosPropertyElementは、クラス、フィールド又は関数のプ ロパティにマッピングするとき、使用される。同様に、値が、フィールドを取り 扱うことにだけ気づいているマッパによって、プロパティから他の言語エレメン トにマップされ得るように、EosPropertyElementは、フィー ルドとして処理される。言い換えれば、EosMapFieldToField マッパは、たとえマッパがプロパティに気づいていないとしても、別のパトロン ・オブジェクトの整数に対するプロパティをマップすることができる。 タイプ・エレメントの各クラスはまた、マッパが知るのに必要な場合、仮想関 数を介するそのタイプに対してそれ自身を識別することができる。プロパティは プローブを有しておらず、それゆえ、それらは、初期化中、紹介されるだけであ る。好ましい実施形態では、プロパティはランタイムで変化しない。ランタイム での変化が要求されるならば、フィールドはこの役割を十分に果たす。また、プ ロパティ情報がインスタンス・ベースではなく広いクラスなので、マッパがラン タイムでのプロパティ値を変更することができることは、所望しない影響を導く かもしれない。静的フィールドは、要求されたとき、データに基づいたクラスの 役割を果たすことができる。次いで、プロパティは、マップされるオブジェクト のフィールドを初期化する(又は関数を呼び出す)ためのソース情報として使用 される。 例として、整数値が、GUIシステムのスクロールバー・オブジェクトにマッ プされることを想定する。スクロールバーは、最大値、最小値及び現在の値を有 する。この場合、一つは、スクロールバーの最小値に対するintの最小プロパ ティをマップし、最大プロパティを最大値に、整数自身をスクロールバーの現在 の値にマップする。プロパティがソースだけであるので、初期化の方向は、プロ パティからスクロールバーに暗に示されている。しかしながら、インテジャに関 する初期化の方向は、両方に流れることができるので暗に示されない。インテジ ャに関するこの場合では、スクロールバーを初期化することは重要であり、スク ロールバー・オブジェクトが、アプリケーションの意味論としてのアイデアを有 さないので逆もまた同様である。従って、ちょうどそのような場合における初期 の初期化の方向を決定するベース・マッパ・オブジェクトの追加のプロパティが ある。 EosTypeElementList EosTypeElementListは、1以上のメンバにマッピングする ときに使用される。それは他のタイプ・エレメントのリストを取り扱うために追 加の機能性を包含し、エレメント自身のアレイと、インデックス機構を介してエ レメントにアクセスするための関数とを包含する。マッパが(妥当性検査を備え て)指定される仕方のために、複数のタイプ・エレメントを取り扱う仕方は、ラ ンタイムで取り扱うEosTypeElementListを決して有さず、こ れを取り扱うための特別のケース・コードが最も簡単なマッパに関して必要では ない。マッパ・クラスの好ましい実施形態では、単一のメンバに対するメンバの リストを取り扱うための別の仮想関数である。ことことにより、単一のメンバを 互いに関係付けるマッパ・クラスの実行を大いに簡単にする。複数のメンバを関 係付ける必要があるこれらのマッパに関して、直接結合すること、及び/又は、 適当なフィールドを調べることを要求する全てのエレメントにアクセスするため の関数がある。 これらのタイプのマッパは、更なる知識を備えることが要求されるそれらに関 して適当であるので、単一のフィールドを単一のフィールドにマップする簡単な マッパよりもより特別である。 タイプ・エレメント タイプ・エレメントは多くのケースに及び、単一のマッパはマッパクラスの実 行を更に複雑にすることなく適用され得る。マッパがフィールドをフィールドに マップするならば、次いで、タイプ・エレメントを備えるそれはまた、単一のパ ラメータを得る関数にプロパティをマップするのに使用され得る。この汎化は、 それらの実行を複雑にさせることなく、マッパの使用を増加させる。 EosMapElement EosMapElementは、全てのマッパ・クラスに関するベース・クラ スである。付録Eは、EosMapElementの具体的なC++インプリメ ンテーションに関するヘッダ・ファイルであり、付録Hは、EosTypeEl ementに関する具体的なヘッダ・ファイルを含む。ベース・マッパは、2つ の重要なプロパティを有する。1つ目は、同期が左から右へ、右から左へ、若し くは、双方向に生じるかどうか判断するfMap Typeフィールドである。 2つめは、初期化の場合における情報のフローを指示するプロパティである。マ ッパは、リンクを含む、左及び右Typeエレメントを有する。それは、ループ を低減させるためのフラグを有する。関数typeElementChange dは、パスが変更され、マッパがそのプローブをリセットする必要があるとき、 呼び出される。各マッパ・クラスは、それらの挙動に特有の追加のプロパティを 加えるために、getProperties及びsetPropertiesを 置き換えることができる。マッパ・クラスはまた、その上含まれるベース・プロ パティを得るために、それらのスーパークラス・プロパティを呼び出さなければ ならない。マッパはまた、ビルダにのみ使用される、検査、アクセス、及び、g etPrintnameのような関数を有する。 スクリプトからの接続のセットアップ 意味論的リンクは、タイプ・エレメントと結合するマッパ・クラスと、パス・ エレメントとを実行することができる関係のどんなタイプも生成することができ る。しかしながら、そのサービスを実行するために、意味論的リンクを構成する オブジェクトは、インスタンス生成され、初期化され、且つ、パトロン・オブジ ェクトを参照するためにセットアップされなければならない。それが各時間にプ ログラム的にこれらのリンクをセットアップすることが可能でありうるが、人が 要求され、このアプローチはエラーの傾向があり、単調で飽き飽きする。 一つの解は、スクリプトがランタイムで読み込まれるように接続とそれらの個 々の意味論的リンクとを記述する翻訳スクリプトと、パトロン・オブジェクトの インスタンス生成を超えるどんなコードをも有することなく形成される接続と、 スクリプトを読み込むためのコールとを有する。 かなり多くのスクリプト言語は、接続を記述するために工夫され得る。それら は、人間が容易に読むことができるフォーマットに特定されるが、これは、以下 に示すように自動的に作り出すのがより困難である。好ましい実施形態では、接 続は、データ構造として完全に特定され得る。即ち、スクリプト言語を選択する 必要性はデータを提供するだけであり、ステートメント等ならば、ループのよう な命令をプログラミングしない。それは、典型的なオブジェクト指向又はリレー ショナル・データベースに更にストアされ得る。実際に、持続性モデルは、該モ デルの部分が個々にインスタンス生成されるならば、十分であり得る。公開され た本発明は、クラス及びクラス間の接続を記述するメタデータをストアするため のテーブルとして知られる階層化属性データ構造を使用する。使用されているデ ータ構造は、そこにストアされていることとおなじくらい重要ではない。データ が、2つの比較的簡単な接続に関するメタデータを含む付録F及びGの例から要 求されることに関して、多くを学ぶことができる。 エディット関数は、接続がストアされるクラスをはじめに見つけるために、テ ーブルに情報を翻訳し、次いで、各クラスの接続のテーブルにそれを見ることに よって、名前を表示した接続を見つけ、次いで、テーブルの外の接続に関する仕 様を読み込み、以前に示したリンクに記載したような個々の意味論的リンクをセ ットアップするために適当なデータ構造を生成し、初期化する。 外部オブジェクト・マッピングがNULLパトロン・オブジェクトに生成され るならば、次いで、第2のパトロン・オブジェクトはまた、一般的なファクトリ ・メソッドを介して動的に構築される。 記述子からの接続のセットアップ 接続の記述からの接続をセットアップする仕事は、エディット関数の仕事であ る。 外部オブジェクト・マッピングに関するエディット関数は、典型的にはプログ ラム的に呼び出され、通常は、(メタデータをストアする)プライマリ・パトロン ・オブジェクトによって呼び出される。好ましい実施形態では、エディットはベ ースクラスからの承継された関数である。C++では、編集するためのコールを 以下のようにあらわす。 myjob.edit(“connectionName”,connectedObj); 編集するためのこのコールに関して、以下のようなことが生じる: 1.エディット関数が呼び出されるオブジェクトに関するメタデータ情報は、ク ラスの名前を使用してリソース・テーブルから検索される。このことは、ランタ イムで「自己記述」であるオブジェクトの能力を利用する。 2.EosObjectViewMapperの新しいインスタンスが生成され る。このオブジェクトは、メタデータを読み込み、翻訳することと、個々の意味 論的リンクを構築することとを統合するために応答可能である。 3.通された右側パトロン・オブジェクトがNULLならば、次いで、このオブ ジェクトは、一般的なファクトリ・メソッドを介して名前によって生成される。 4.接続記述子を包含するテーブル(この場合「connectionName」 )は、メタデータ・データベースから得られ、EosObjectViewMa pperの新しいインスタンスに設定される。接続記述子が、呼び出されるクラ ス・エディットに関するメタデータで入手可能ならば、次いで、そのクラスのス ーパークラスのメタデータは検索され、記述子はそこで探索される。これは、ベ ース・クラスが達成され、若しくは、名前を表示した接続が見つけられるまで、 繰り返し起こる。これは、仮想関数として同じ挙動を接続に与えるので、重要な オペレーションである。接続が複合ビュー接続であるとき、これは、「仮想ビュ ー」として知られている一意的な技術を可能にし、ここでビューが使用されるこ とは、ビューに対してマップされたアプリケーション・クラス・インスタンスの タイプに依存して変化する。コールがメタデータを得るか、又は、メタデータか ら無効な条件をエディット故障に返す接続記述子を得るかのいずれかならば、N ULLは返される。 5.マッパ・オブジェクトを見るオブジェクトは、いま、接続記述子を包含する テーブルをトラバースする。各意味論的リンクに関するエントリがある。各意味 論的リンクの記述に関して、個々のマッパは、一般的なファクトリ・メソッドを 介して名前によって生成され、各意味論的リンクに関するテーブルにストアされ たプロパティ情報を使用して初期化される。これは、EosTypeEleme ntメンバ(fLeftSide及びfRightSide)の生成及び初期化 と、それらのそれぞれのパス・オブジェクトとを含む。マッパのようなこれらは 、記述子情報にストアされた情報によるタイプ名によって生成される。setP ropertiesコールによって、この接続に関する個々のマッパは、ビルダ にセットアップされるように接続を実行する適切なプロパティ情報を得ることが できる。 全てのマッパに関して、少なくとも以下のものがある。 A.プローブが発射するとき、更新され得る側を定義する方向情報。 B.初期値であり得る側を定義する初期化情報。 C.左及び右側EosTypeElementを初期化するプロパティ情報 。 D.マッパに関するタイプ情報。(これは、EosMapElementイ ンスタンス・サブクラスが構築されるか判断する。) E.特定のマッパ・クラスに関する任意のプロパティ。 全てのタイプ・エレメントに関しては、以下のとおりである。 A.タイプ情報(これは、どんな種類のタイプのエレメントが構築されてい るか判断する。) B.メンバへのパスを含む(属性、プロパティ、若しくは、このエレメント を表すメソッドの名前を定義する)メンバ名。 C.メンバ・タイプ情報(メンバのタイプ。例えば、int、float、 EosString。)この情報は主に妥当性検査のために使用される。 D.メンバの親のタイプ 6.次に、マッパ・オブジェクトがインスタンス生成され、初期化され、接続に おける全てのマッパオブジェクトは、パトロン・オブジェクトの適当なメンバに プローブを配置するためにオブジェクト・ビュー・マッパによって命令される。 このプロセスでは、2つのトップレベル・オブジェクトは、insertPro besと呼ばれるEosObjectViewMapperの関数に通される。 このメソッドは、insertRightHandSide及びinsertL eftHandSideと呼ばれる各マッパに2つの関数を呼び出す。これらの 関数は、個々のマッパ、又は、それらと関連するそれぞれのタイプ・エレメント によって定義された関係のオブジェクトにプローブを設定する。プローブを挿入 するプロセスでは、マッパは、それらが現すオブジェクトに関係するそのタイプ ・エレメント・メンバの各々をセットアップする。各タイプ・エレメントは、こ の時に親オブジェクトを分離し、関数、若しくは、関心事のメンバに対するフィ ールド・インデックスをあらかじめ計算する。プローブされる必要があるオブジ ェクトを得るために、マッパは、EosTypeElement::getPr obeObjectを呼び出す。この関数は、マッパが、それを見つけるための パスを使用してプローブを設定するオブジェクトを返す。フィールドの場合では 、返されたオブジェクトは、その名前フィー ルドによって参照されているフィールドでありうる。メソッドの場合では、関連 したプローブ・フィールドは、返される。メソッド又は属性が情報のソースでな く、宛先だけであったならば、次いで、プローブはそのために設定されないであ ろう。 マッパのプロパティにストアされる方向属性を使用して、コードは、どちら の側にプローブが必要であるか判断する。両方の方向が許されるならば、次いで 、プローブは、両パトロン・オブジェクトに設定される。右又は左側だけがモニ タされるのが許容されるならば、次いで、特定の側だけがプローブされ得る。 7.各マッパが次いで、適当なプロパティ・テーブルをそのタイプ・エレメント の両方に通す。 8.オブジェクト初期化が生じる。このプロセスでは、マッパは、はじめに同期 される。これは、まるでプローブが発射されたかのように、同じ効果を有する。 これは、テーブルにストアされた定義によって制御される。(以下に列挙する)4 つの可能性がある。これらの可能性の各々は、ランタイムで数値を有するが、人 間が読むことが可能な形式でユーザに提示される。初期化は、有効なマッピング のEosObjectViewMapperのリストに定義された全ての子に適 用する。 非初期化―立ち上げ時の非同期。(オブジェクト値が明らかに変更すると き、接続がただ有効であれば、有用である) 左初期化―左側が最初に右側を更新する。(ビュー・ウィジェット初期状 態を設定することが必要なアプリケーション・オブジェクトに最初にストアされ たデータ値を現すならば、有用である) 右初期化―右側が左側に向かって最初に同期する。 両初期化―最初に右側を初期化し、次いで左を初期化する。(一方の側の 初期値が、反対側のコンテキストにおいて無効と考えられるが、逆は真でないな らば、有用である) エディットの他のバージョン 接続の各々の大きな種類は、それ自身のバージョンのエディットを有する。こ れらのバージョンは、この一つのものから僅かに変化している。内部オブジェク ト・マッピングは、左及び右側に同じオブジェクトを通すこの一つのものを呼び 出す。カスタム・ビュー接続はまた、右側が常に相互作用するサブクラスであり 、殆ど全てNULLであることを除いて、非常に似ている。また、ビュー・クラ スを初期化するのに使用される追加のプロパティがある。複合ビュー接続は、こ れらのバージョンから最も異なる。複合ビューに関するエディット関数が、ウィ ンドウをいつも持ち上げるので、差の殆どは、ウィンドウのセットアップ、その 挙動、位置、幾何学構造の制御を含む。エディットのこのバージョンは、ポイン タをウィンドゥに返し、一方、他のバージョンはオブジェクト・ビュー・マッパ を返す。他の種類の接続は、データベース・ポインタ、又は、接続に対して適当 な他の情報を返す。 StopEdit エディット・プロセスを介して動的接続を生成することは、オブジェクト間に リンクを生成し、包含されたオブジェクトの独立を妥協することなく不意の挙動 を生成する。しかしながら、接続を生成することができることは、それらが必要 とされるとき、接続がまた破壊され得るならば、より有用とされ得る。stop Edit関数は、プローブを取り除き、接続を構成するマッパ・オブジェクトを 解放する。エディットするためのコールは、新しく構築された接続(EosOb jectViewMapperの例)にポインタを返し得る。オブジェクト接続 がもはや必要でないとき、このポインタは削除され得る。このことにより、接続 は、その接続リストに含まれている全てのマッピングにremoveProbe sを呼び出させることができうる。各マッパは、それを設定するプローブを取り 除くために呼び出される。このプロセスは、プローブを取り除くために、2つの 関数canMapleftとcanMapRightに再び頼る。 また、リンクされるオブジェクトのいずれかが破壊されるならば、次いで、リ ンクは、オブジェクトが削除される際に、安全に下げられ得る。 記述子の相互作用の特定 手によってオブジェクトを互いに関係付けるためにスクリプトを書くことは、 接続を生成するために、オブジェクトをインスタンス生成するためのコードを上 書きすることを改良することである。しかしながら、記述されたスクリプトが、 接続を特定する情報で満たされた簡単なデータ構造であるので、それは、ユーザ がこの情報を相互作用的に特定することができるプログラムを生成するために、 適切で簡単なプロセスである。 ビルダは、プログラマがクラスの間の名前を表示した接続の宣言を特定するの に使用する、対話型GUIプログラムである。好ましい実施形態では、このプロ グラムはまた、クラス自身を生成するのに使用されるクラス・ブラウザである。 これらの関数の組合せが厳密に要求されていない間、それは、使用するのにより やさしいプログラムを作らせる。この情報を編集するのに選択されたインターフ ェースは、簡単なものである。改良は、殆ど確かになされうる。幾つかに関して は、たぶんノードを備えたより高度なグラフィカル・インターフェースであり、 動作はより直感的であるが、開示されたインターフェースはより直接的である。 ビルダにおける結合を生成する上でのユーザ・ビュー リンクの仕様はユーザの観点からすると、実に非常に容易なものである。これ は、以下のステップを含む。 (1)結合が属することになる主要クラスを選択せよ。このクラスは、結合にお いて伴われる主要パトロンオブジェクトとなり、結合を記述するメタデータが格 納されるクラスとなる。 (2)被選択クラスのための新結合を生成するコマンドを選択せよ。これは、情 報収集ダイアログをポップアップさせる。 (3)結合(後に結合をインスタンス生成するように編集するためのパラメタと して使用される)の名前を入力せよ。 (4)結合のタイプを選択せよ。好ましい実施形態においては4タイプの結合が ある。 外部オブジェクト結合 内部オブジェクト結合 カスタムビュー結合 複合ビュー 選択された結合のタイプに拠れば、結合を生成するためのインターフェースは かなり異なる。外部オブジェクト結合のためのインターフェースは、基本的なデ ータ構造をもっとも綿密に反映するため、最も代表的なインターフェースである 。内部オブジェクト結合及びカスタムビュー結合のためのインターフェースは、 外部オブジェクト結合のためのものとほぼ同一である。複合ビューのためのもの はかなり異なり、簡単に説明することにする。 外部オブジェクト結合 ユーザが外部オブジェクト結合を生成することを選んだ場合、結合させるため のオブジェクトの他のタイプを指定しなければならない。この簡単なタスクは、 システム内の全てのタイプのリストからタイプを選択することに達成される。存 在しないクラスがタイプされ得ないように、これは選択のためのリストにおいて 提示される。両サイドにおいて同じタイプが選択されることに注意すべきである が、2つのインスタンスを結合させるため、内部で結合させるというよりも、む しろ内部オブジェクトマッピングと依然として異なる。 今度は、図4のダイアログをユーザに提示する。これは4panes を有する。ボ トム panes(404)はこの結合を作り上げる意味論的リンクのリストを示す。 このリストを築くのがダイアログの目的である。トップ左の panes(401)は 第1パトロンクラスの階層ツリービューを示す。機能、基本属性、及び各タイプ を表現するビットマップの使用を通したクラスである属性の間で明確に識別する 。ツリーにおけるデータメンバは、機能及び属性を帰納的に示すのに拡張可能で ある。右の panes(403)は第2パトロンクラスを示す。ユーザのタスクは各 パトロンクラスから1以上のメンバを選択することである。 好ましい実施形態においては、マッパはオブジェクト自体のための内部オブ ジェクトマッピングのコンテキストにおける私的メンバに結合させるだけで良い 。保護されているメンバは導出クラスにおける内部オブジェクトマッピングのコ ン テキストにおいて使用されても良い。公的メンバのみが外部オブジェクトマッピ ングにおいてマッパによりアクセスされる。例えば、マルチパラメタ機能のため のトリガは、結合された入手機能のプロパティを通してアクセスされるために、 公的である必要はないといった例外もある。現行のインプリメンテーションは私 的かつ保護されたメンバへのリミティッドアクセスを強要せず、全てのメンバが マップされるようにするが、好ましい方法で再実行することを意図している。 ユーザがいずれかのパトロンクラスのメンバを選択、又は選択解除する度に、 ミドルリスト(402)は再構築される。メンバの被選択セットを互いにリンク させることができるマッパタイプの全てを含む。全てのマッパが、いかにして任 意要素を一緒にリンクさせるかを知っているわけではない。例えば、もし多重パ ラメタ機能が選択されたとしたら、フィールドマッパにとってのフィールドは適 切でないであろう。マッパは、列が1つのクラスにおいて選択され、他でintが 選択されることを要求しても良い。マッパが要求するように明確又は一般的であ って良い。使用可能マッパのリストは列の単純リストとして、又は階層編成ツリ ーとして、若しくは別の様式でみなされても良いことに注意すべきである。多く の特定用途向けマッパがシステムに加えられる時、単純線形列リストと可能であ るよりも編成するのに更に有効である。例えば、複合ビュー結合を構築する時、 ユーザにビットマップのパレットが提示され、インターフェース要素がどのよう にみえるものかを理解させるようにする。ビットマップはカスタムビュー結合の 属性である。 一旦マッパタイプがミドルpanesに表れたら、ユーザは選択しても良い。一度 選択されたら、この結合のために意味論的リンクのリストに加えられる。これが 加えられたために、このコンテキストにおいて使用された時、ユーザがその特定 のマッパのための属性をセットするようにダイアログがポップアップする(十分 興味深いことには、各マッパタイプのために異なるビューをつくるのに仮想ビュ ーが用いられる)。各マッパタイプは、その属性を表示するための独自の固有の ダイアログを有する。 ユーザは複合結合を構築するのに要するだけ多く、結合のための意味論的リン クを加えても良い。個別の意味論的リンクはまた、容易に抹消される。 全ての結合宣言ダイアログもまた、随意閉じられ、再編集される。結合自体も 、それ以上必要でない場合、抹消される。 ユーザの観点によると、結合を宣言するのは単純にポイントとシュートの問題 である。当然、個々のマッパが何を行うのかを知るべきであり、そのマッパのた めの属性がどのように働くかを知るべきである。新たなマッパクラスがこれほど に容易に構成される事実のために、唯一の現実解は各属性のためのドキュメンテ ーションを含む各マッパクラスに使用可能なオンラインヘルプを有することであ る。 複合ビュー結合 複合ビュー結合をつくるためのインターフェースは開示される他の種類の結合 に比べてはるかに異なる。この種の結合においては、ユーザの主要目的はアプリ ケーションオブジェクトの言語要素に縛られる要素を有するユーザインターフェ ースを構築することにある。複合ビュー結合をつくるために、新たな結合をつく ることを選択し、次いで複合ビュー結合をつくることを選択する。この後、結合 のための名前を入力し、ウィンドウ又はメニュー結合をつくるか否かを選択する 。ウィンドウ結合が選択された場合、デフォルトビューがつくられる。それから ユーザは、ビューオブジェクトを結合するところのビジネスオブジェクトにおけ るフィールド又は機能のいずれかを選択する。選択されたフィールド又は機能の タイプに拠れば、ユーザがそこから選べるように構成要素(現実的カスタムビュ ー結合)のリストが構築される。ビューが選ばれると、構築されたダイアログの どこに置くかを選び、それに視覚的プロパティーをセットしても良い(これらプ ロパティーは拡張可能メタデータフォーマットに保管される)。ユーザはこの時 点でマッパプロパティーに直接アクセスできないが、それを行うために新たなカ スタムビュー結合をつくっても良い。 マッパ仕様の実施の詳細 結合仕様のためのビルダをつくることは、図的表現の生産におけるエクササイ ズを伴う。近代プログラムの共通の要求事項であるため、当業者がGUI プログラ ミングの要求事項に熟知しており、従ってGUI実施の詳細は当開示から除外され る。極めて適切なマッパに関する建築上の事由も当然にしてある。これらは十分 に開示されている。 基本的情報収集 上記ステップ2に説明されるダイアログはダイアログを集めた単純な情報であ る。収集された情報は、(1)結合をインスタンス生成するためにみるのに後に使 用される、意味論的リンクの集まりに与えられた名前、(2)これが内部あるいは 外部オブジェクトマッピング(若しくはその他のタイプのマッピング)のいずれ であるか、を含む。内部オブジェクトマッピングの場合、要求される追加的情報 のみがマッピングあることのクラスの名前である。これはダイアログが提示され るコンテキストから集められている。主要クラスは、内部に結合のメタデータが 格納されるクラスである。当然、ダイアログのフィールドにこのクラスタイプを 単純に入れ、この文脈上の事由からインターフェースを開放することも可能であ る。 外部オブジェクトマッピングの場合、ユーザには結合したいと思うシステム内 に他の全てのクラスの選択を提示される。他のクラスタイプは、その内1つが選 択されるように結合をつくることを要する。第2のタイプは、ユーザにより明示 して選択される。もしユーザが主要タイプを再度選択したら、同一のオブジェク トの2つのインスタンスが実行時に結合されることを暗示する。内部オブジェク ト結合は、2つのインスタンスを結合するよりもむしろ、オブジェクトの単一の インスタンスの要素を一緒に結合させる。 内部オブジェクトマッピングは、他のオブジェクトが第1オブジェクトの結合 される同一のインスタンス(及び、当然それと同一のタイプの)である外部オブ ジェクトマッピングの特別の場合として考えられる。 結合の他の結合タイプは、もちろん可能である。好ましい実施形態において、 メニューやダイアログのような構成されたユーザインターフェース、並びにスク ロールバー等のようなウィジェットに対するカスタム結合もまた結合タイプのよ うに選択可能である。これら結合のタイプはインターフェースの見た目と感覚を 説明するメタデータのプロパティーを更に有するが、オブジェクトの基本的結合 が全く同一である。この特別の場合においてはオブジェクト結合の一面は常にユ ーザインターフェースクラスであるというだけである。 この情報の全てはダイアログを持ち出すコードによってメタデータ内に格納さ れる。メタデータの正確なフォーマットはその中に含まれる情報に比べて重要で ない。 意味論的リンクの仕様 基本の新結合ダイアログから収集された情報を使用すると、図4のダイアログ は情報で満載である。第1ステップは結合に伴うクラスの階層ビューを構築する ことである。伴われるクラスタイプは第1ダイアログから決定される。内部オブ ジェクト結合の場合、両サイドは同一のクラスのビューである。即ち、この結合 が構築されたことのタイプである。 メタデータのデータベースにアクセスすると、属性、プロパティー、及び機能 において各オブジェクトが決定可能である。これら要素はユーザが拡張可能ノー ドを拡張させるに従って加えられる。機能又はフィールドが属性を有しない限り 、クラス属性ノードのみが拡張可能である。各ノードが拡張されるに従い、メタ データデータベースはアクセスされ、適切なサブツリーがビューに加えられる。 ユーザに回線がプロパティー、機能、基本属性あるいはクラス属性のいずれを表 現するかに関する情報を与えるために、アイコンがツリーの各回線に置かれてい る。 単純な例がこれを明確にする。クラスAがその他のクラスに結合していると仮 定する。クラスAの定義は以下の通りである。 クラスAの完全に拡張されたビューはツリーに のように表れる。 このツリーのビューにおいて、行が選択される。実際は複数の行が選択されう る。この選択は「マッパ」のリストの構築をトリガする。いずれのツリーの選択 、あるいは切断において、マッパのリストは完全にスクラッチから再構築される 。リストを構築するアルゴリズムは以下の疑似コードに開示される。 要点は検査機能である。これは、ほぼどのマッパクラスもオーバーライドする 仮想の機能である。これは各サイドの被選択要素のリストを見て、もし2セット のメンバを一緒にマップすることのみができたとしたら、真に戻る。例えば、機 能にフィールドを接続させるマッパは、どちらのサイドにおいても機能が選択さ れない場合、偽に戻る。一方のサイドに複数のアイテムが選択された場合、タイ プ要素のリストを扱うためのパラメタタイプを有する、異なる検査機能が呼び出 される。この方が、どのサイドにも複数のアイテムを扱わない場合、更に複雑な 検査を暗示する必要がない。 マッパクラスはビルダ内におけるクラスの指定中に使用される機能や、エグゼ キューション初期設定、プローブ再配置、及び結合の破壊の間、使用される他の 機能を有する。 各マッパクラスはまた、マッパリスト(402)に入れる名前の「人間可読」バー ジョンを備える。 全てのマッパクラスはベースEosMapElementクラスを下位に分類する。このク ラスはほとんどのマッパがオーバーライドする仮想の機能の多くのデフォルト実 施を構成する。検査のデフォルト実施は、ベースクラスが何もマッピングできな いために単純に偽に戻る。マルチパラメタ検査のベースクラス実行はまた、ベー スクラス内において偽に戻る。目標は単純なマッパを単純にすることであり、こ れら単純な事柄から各サイドの複数のメンバと複雑なマッピングの実施詳細を隠 すことである。機能マッピングへの複数の引数フィールドのような更に複雑なマ ッパは、検査の第2形態に密接に精通していなければならない。 ユーザが特定のマッパを選択し、リストに加えること(これはダブルクリック 、又は加算マッパボタンの選択によってなしうる)を選ぶと、マッパのプロパテ ィーへの編集する機会を有する。これは多くの仕方でなしえるが、好ましい実施 形態においては、各マッパクラスと対応する名前付きダイアログビューがある。 このビューは選択された特定のマッパのために持ち出され、ユーザはそれと相互 に作用しても良い。新たなマッパがシステムに加えられると、プロパティーを編 集するためのダイアログをも加えなければならない。幸いにも、仮想ビューとし て知られるユーザインターフェース技法の使用により、かなりトリビアルである 。 ビルダプログラムは、最終的に、プログラムを実行することにより読まれるテ ーブルを含む資源ファイルへの結合の仕様を保管する。テーブルは結合の圧縮記 憶装置及び高速ローディングのための2進フォーマットを有する。 結論 ユーザはここに開示されるものの反対の順序で本発明と相互作用を行う。ビル ダと相互に作用し合い、資源ファイルを生成し、結合を設定するのに編集を呼び 出す。 マッピングは固有の技法である。これは、オブジェクトが言語レベルで違いに 独立して動作するようにし、要求されるだけプログラムレベルで相互作用を行う 。これは、再利用言語レベルのオブジェクトを標準オブジェクト指向言語では達 成不可能な程度に作成する能力を備える。 図面及び詳細な説明において、本発明の種々の好ましい実施形態が開示され、 特定の用語が用いられているが、これは例示であり、これに限定されない。従っ て、本発明の精神及び領域は上に説明した実施形態に限定するものではなく、添 付の請求の範囲によってのみ明確となる。 付録A メタデータ メタデータとはデータ構造を説明するデータである。実施につき、メタデータ はプログラム実行中、クラスデータタイプ、構造、及び機能性に関してオブジェ クトが照会されるようにする。例えば、オブジェクトについて、名前は何である か、機能はどれだけ有するか、若しくは第3分野の名前及びタイプは何であるか を尋ねることができる。メタデータを支持するオブジェクト指向の言語は、再考 、内省、又はランタイムタイプインフォメーション(RTTI)を有すると言われてい る。C++は提案された RTTI 拡張を有するが、最も広く利用できるコンパイラー において依然として実行されていない。 メタデータ自体は新たな概念ではない。コンパイラーがコードをスキャンし、 編集プロセスの一部としてシンボルテーブルを作成する時は常に、シンボルテー ブルはメタデータのデータベースである。このメタデータは、通常、プログラム の実行可能イメージに編集プロセスを通して送られ、一般にプログラムの開発中 、デバッガにより使用される。しかしながら、多くの言語において、プログラム 実行の間、プログラムに基づいてこのインフォメーションにアクセスする標準的 なやり方はない。事実、プログラムが最終搬出のために準備されるにつれ、この デバッガメタデータインフォメーションは、最終生産プログラムにおいて機能し ないため、実行可能にプログラムから取り除かれる。 スモールトーク、LISP、及び他の解釈言語は、備えたメタデータの量及びタイ プが広く変化するけれども、典型的に言語の統一部分としてメタデータアクセス を支持する。パスカル、モデュラ、C 及び C++のようなもっともコンパイルされ た言語はメタデータを備えない。当然、一般的規則の両サイドに顕著な例外はあ る。 メタデータは広域のクラスにわたって実行されている。それは、データは物か ら物へ瞬時に変容しないからである。従って、メタデータは1つの場所に効率良 く格納することができる。また、メタデータは、普通、読み出し専用のものとし て扱われ、プログラムの実行中は変化しない。新たなコードが発生した時、イン タープリターは興味深い例外を与え、それから止まらずに同じプログラムにより 実行される。これに対して、動的結合及びプローブは典型的にクラス原理よりも むしろ実証原理に基づいて実行される。 備えられたメタデータモデルは伸縮自在である。メタデータへの拡張はプロパ ティーと呼ばれる。プロパティーはクラス、フィールド、機能、マッパー、及び 他のメタデータ要素に応用できる。プロパティーの設備はシステムの使用者が種 々のタイプのための言語水準で新しい機能を加えられるようにする。マッパーク ラスは種々の手段によってプロパティーに応答可能である。これは、使用者が種 々のデータタイプにプロパティーを加え、次いで作成した種々のマッパー内のプ ロパティーに応答することができるということである。これはプログラマーが別 の自由の度合いでマッパーモデルを拡張することができるようにする。性質を設 けるためにマッパーにプロパティーを加えるほかに、それは、プロパティーがマ ッパーに接続されている要素に加えることができるということである。 付録B 完全動的結合 動的結合とは、プログラムの実行中、オブジェクトはそのメンバーの名前を使 用することにより操縦可能である。例えば、フィールドはセットされて照会され 、機能は名前で呼ばれる。プログラムのいかなる部分も、クラス及び機能の名前 以外は何も知らずにXの例に基づいてプログラム実行中func of class Xのメンバ ー機能を引き起こす。メタデータはオブジェクト自体から名前を得るのに有効で ある。 C++は、クラス又は機能の名前を知らずにプログラム実行中正確なコードを引 き起こすように、機能の静的結合を行うためのリンカーを使用する。多くの場合 、このアプローチは効果的であり、常に僅かにいっそう効果的である。しかしな がら、ライブラリーにないものをライブラリーコードによって機能と呼びたいの であれば、動的結合によって容易に行うことができる。 動的結合はコンピューター言語においてかなり一般的な特徴である。また、こ れはインタープリター言語において更に一般的であり、しばしばメタデータを支 持する同一の言語において見出される。 C++は実際上の機能を通じて「動的結合」を有する。実際上の動的結合は実際 上の機能を有する各クラスのための機能ポインタのアレーを作成する。この「V テーブル」へのポインタは構築されるに従って各オブジェクトインスタンスに格 納される。このVテーブルポインタはVテーブルを通したインデックスにより機能 を引き起こすのに使用される。各サブクラスは、異なる機能を実行するために、 実際上の機能(異なる機能を局部的なvテーブルに挿し込むようにする)を「オ ーバーライド」可能である。従って、どの機能が呼ばれたかを決定するにはオブ ジェクトの例のタイプに基づく。米国特許第5,327,562号及び第5,3 71,891号は実際上の機能及びC++タイプ言語におけるその実行について明 示的に詳しく論じている。ここに論じられた動的結合はクラスメンバーの名前を 使用して実行時に解決される。メタデータは、C++タイプの動的結合を行う必要 がない一方で、ここに論じた動的結合の形を行う必要がある。全ての拡張された 機能(実際上の機能を含む)が本発明により動的に結合可能である一方で、C++ クラスの特定の機能のみが事実上のものである。 最近、機能のための動的な結合のいくつかの形態をコンピューターシステムを 操作させる作動システムソフトウェアに合体させることもかなり一般的になって いる。マイクロソフトウィンドウズ Dynamic Link Libraries(DLLs)は非言語ベ ースの動的リンキングの1形態の顕著な例である。このタイプの OS 水準の動的 リンキングは言語ベースの動的リンキングから見るとかなり異なる。米国特許第 5,369,766号は動的リンキングがプログラム実行のインターラプション なしに達成、かつ再リンクすることができる追加の特徴とともに動的このタイプ のリンキングの興味深い概観を提供する。動的リンキングの別のタイプは、連続 的に作動するシステムにおいてでバッギングするためのオブジェクトの例におい て機能が呼ばれる変化させる能力のために与えられた米国特許第5,339,4 30号に説明される。再び、このタイプの動的リンキングは特徴を支持する言語 において利用できるものから本質的に異なる。 付録C プローブ 興味の第3オブジェクト指向エンハンスはプローブである。プローブはデータ (オブジェクトフィールドにおいて典型的に)が変更する時に呼び出されたコー ルバック機能である。メンバーそのものにクラスによってセットされもするが、 プローブは他のオブジェクトによってしばしばプラントされる。プローブは、興 味深いオブジェクトが観察されるオブジェクトの前行掛かり合いなしにプローブ されたデータ価値を監督するようにする。換言すれば、プローブされたオブジェ クトは、オブジェクトのデータにおいて起きる変更について興味深いパーティー に知らせるために性質を変更する必要はない。これは、プローブされたオブジェ クトからの他のオブジェクトとともにオブジェクトの性質を同期化させるための 責任をシフトし、そうしてプローブされたオブジェクトの実施を簡易化する。 メタデータ及び動的結合はスモールトークにおいて実施されるけれども、プロ ーブはそうではない。本発明は当業者によってプローブを支持するためにスモー ルトークのエンハンスに適用されうる。同様に、プローブを支持しない他の言語 も本発明を使用しながら拡張される。 プローブはプログラム言語においてはかなり珍しい特徴である。大変役立つが 、ほんの僅かな調査言語が内臓された直接の完全な支持を有することで知られて いる。プローブの他の実施もここに説明されるものほど完全ではない。 プローブは、効率目的のためにプログラム遂行中付けたり消したりすることが できる。これは、もしプローブされた価値が複合計算中に中間価値を含む場合に しばしば必要である。 SIMULA プログラム言語は「左モニターされた変数」を有し、それは、単一の 機能がそのフィールドと結合し、機能がオブジェクトの例示機関のための変数に 接続するのを除いてプローブに関して似たように機能する。SIMULA におけるプ ログラム遂行中コールバックを消す方法はない。 エッフェルのいくつかのスタンダードでないバージョンは、プローブに類似の 「書込みバリア」という特徴を有する。これは、変数に対する割り当てを制御さ せる。しかしながら、エッフェルは上記メタデータ及び動的結合の特徴のいくつ かを欠く。 プログラム遂行中クラスのメンバーでない基本フィールドのプローブのリスト に追加のコールバックを加える能力は本発明には固有のものと思われる。換言す れば、いくつかの言語はこの特徴を有するが、これほどの動的流儀で問題に取り 組むことはないように思われるということである。 信号と呼ばれる特殊なフィールドは使用されるシステム内に備えられている。 信号はプローブをプラントするためのポートを備えるが、データを有しない。オ ブジェクトは明示的に信号(変更するデータがないため)においてファイヤされ るためのプローブを起こすべきであるが、どのオブジェクト(もしあるならば) が信号上にプラントされたプローブを有するかについての知識がなく、このよう にしてオブジェクトの独立性が維持される。A 信号は、オブジェクトのコールバ ックのシリーズをプラントする便利な方法を簡易化する。 付録D 名前によるインスタンス生成 動的結合に関する他の特徴は、名前によってデフォルトオブジェクトを創る能 力である。それは、クラスの名前が通過するためのオブジェクトの新たに作られ たインスタンスの戻ると言われる機能があることである。例えば、ユーザーに箱 の中のタイプにあるクラスの名前をタイプするように言って、名前のみを使用し てそのオブジェクトのインスタンスを築きあげる。 通常、コードは特有のタイプを創るために書かれ、1つの特別のクラスタイプ のみがそのコードによって構築される。 動的結合及び名前によるインスタンスによって備えられた利点は、電話帳を使 用することによって得るものに似ている。コンパイル言語の普通の仕組みは、親 友の電話番号を暗記する時の方法に似ている。これは、この僅かな番号には非常 に有効であるが、必要性を感じた場合にのみ盤お愚を覚えることができるのであ ろう。しかしながら、電話帳があれば、電話をかけられる人の潜在的な数はさら に大きい。かける前に電話番号を「知る」必要はない。 付録E 付録F フィールドーフィールド接続に関するメタデータ このメタデータは、内部オブジェクトマッピングとして一緒に「one」及び 「two」と名付けられた、クラスProjectFrameの2つのEosI ntフィールドをマップするように要求された情報を含む。2つのフィールドを 接続するマッパは、EosMapFieldToFieldである。 付録G 関数リンクに関するメタデータ これは、「Example Function Connection」からのEosMapMultiAr gFunctionを特定するメタデータである。 付録H 付録I ネットワーキング・オブジェクト
───────────────────────────────────────────────────── フロントページの続き (72)発明者 オズマン アンドリュー ヴィー アメリカ合衆国 ユタ州 84606 プロヴ ォ サウス 100 イースト 231 (72)発明者 ミッチェル デイル ケイ アメリカ合衆国 ユタ州 84601 プロヴ ォ ノース 300 ウェスト 361−#303

Claims (1)

  1. 【特許請求の範囲】 1.動的オブジェクト指向言語を使用して書かれた第1のオブジェクト・インス タンスと第2のオブジェクト・インスタンスとを動的にリンクするためのシステ ムであって、動的結合と、前記第1のオブジェクト及び前記第2のオブジェクト のプローブ能力とを使用して前記第1のオブジェクト及び前記第2のオブジェク トのクラス・インターフェースを介して前記第1のオブジェクト及び前記第2の オブジェクトを関連させる少なくとも1つの意味論的リンクを有する。 2.前記第1及び第2のオブジェクトが同じオブジェクト・インスタンスである 、請求の範囲第1項に記載のシステム。 3.複数の意味論的リンクと、前記複数のリンクの名前を表示したリストを備え る接続を生成するための手段とを更に有する、請求の範囲第1項に記載のシステ ム。 4.前記接続の仕様をストアするためのリソースを更に有する、請求の範囲第3 項に記載のシステム。 5.前記仕様に従ってプログラム実行中に前記接続を生成し、初期化するための 手段を更に有する、請求の範囲第4項に記載のシステム。 6.第3のオブジェクトと、前記第1のオブジェクト及び前記第2のオブジェク トのうちの一つの特性が変化するとき、前記第1及び前記第3のオブジェクトに 関連するように前記一つのリンクを変化させることによってプログラムを実行中 に、前記接続を保持するための手段とを更に有する、請求の範囲第3項に記載の システム。 7.プログラム実行中に、前記接続を破壊するための手段を更に有する、請求の 範囲第3項に記載のシステム。 8.前記リンクが、前期第1及び前記第2のオブジェクト間に通された情報の転 送を行う、請求の範囲第1項に記載のシステム。
JP9516726A 1995-10-26 1996-10-22 動的オブジェクト指向言語のオブジェクトの間の動的関係を管理するための方法 Ceased JPH11514114A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/548,536 US5872973A (en) 1995-10-26 1995-10-26 Method for managing dynamic relations between objects in dynamic object-oriented languages
US08/548,536 1995-10-26
PCT/US1996/016927 WO1997015883A1 (en) 1995-10-26 1996-10-22 Method for managing dynamic relations between objects in dynamic object-oriented languages

Publications (1)

Publication Number Publication Date
JPH11514114A true JPH11514114A (ja) 1999-11-30

Family

ID=24189272

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9516726A Ceased JPH11514114A (ja) 1995-10-26 1996-10-22 動的オブジェクト指向言語のオブジェクトの間の動的関係を管理するための方法

Country Status (6)

Country Link
US (1) US5872973A (ja)
EP (1) EP0857331B1 (ja)
JP (1) JPH11514114A (ja)
AT (1) ATE195028T1 (ja)
DE (1) DE69609516T2 (ja)
WO (1) WO1997015883A1 (ja)

Families Citing this family (505)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3660366B2 (ja) * 1993-12-28 2005-06-15 富士通株式会社 図形を用いたプログラミングシステム
US6038395A (en) * 1994-12-16 2000-03-14 International Business Machines Corporation System and method for implementing proxy objects in a visual application builder framework
SE506535C2 (sv) * 1995-06-16 1998-01-12 Ericsson Telefon Ab L M Metod och anordning för att härleda instansinformation i ett informationshanterande system
US6088515A (en) 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6374308B1 (en) * 1996-04-23 2002-04-16 Sun Microsystems, Inc. Method and apparatus for interactively connecting distributed objects to a graphic user interface
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6272559B1 (en) * 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6009458A (en) 1996-05-09 1999-12-28 3Do Company Networked computer game system with persistent playing objects
US6260078B1 (en) * 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US6347342B1 (en) * 1996-07-15 2002-02-12 Next Software, Inc. Method and apparatus for dynamically brokering object messages among object models
EP0825506B1 (en) * 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
JPH10171701A (ja) * 1996-12-10 1998-06-26 Fuji Xerox Co Ltd 手続実行装置及び方法
EP0951775A1 (en) * 1997-01-13 1999-10-27 John Overton Automated system for image archiving
US6253228B1 (en) * 1997-03-31 2001-06-26 Apple Computer, Inc. Method and apparatus for updating and synchronizing information between a client and a server
US6230309B1 (en) * 1997-04-25 2001-05-08 Sterling Software, Inc Method and system for assembling and utilizing components in component object systems
US6023578A (en) * 1997-05-09 2000-02-08 International Business Macines Corporation Systems, methods and computer program products for generating an object oriented application for an object oriented environment
US5987247A (en) * 1997-05-09 1999-11-16 International Business Machines Corporation Systems, methods and computer program products for building frameworks in an object oriented environment
US6209125B1 (en) * 1997-06-03 2001-03-27 Sun Microsystems, Inc. Method and apparatus for software component analysis
US6253257B1 (en) * 1997-07-31 2001-06-26 Bea Systems, Inc. Software Interface for dynamic API mapping
US6581203B1 (en) * 1997-08-21 2003-06-17 International Business Machines Corporation Technique for visually creating and adding members to a class
US6173297B1 (en) * 1997-09-12 2001-01-09 Ericsson Inc. Dynamic object linking interface
US6314429B1 (en) * 1997-10-08 2001-11-06 Mitel Corporation Bi-directional conversion library
US6003094A (en) * 1997-10-09 1999-12-14 International Business Machines Corporation Generic Java Gateway for connecting a client to a transaction processing system
US6694506B1 (en) * 1997-10-16 2004-02-17 International Business Machines Corporation Object oriented programming system with objects for dynamically connecting functioning programming objects with objects for general purpose operations
US5956725A (en) * 1997-11-26 1999-09-21 Interanational Business Machines Corporation Schema mapping to a legacy table with primary and foreign key support
US6243088B1 (en) * 1997-12-30 2001-06-05 Cisco Technology, Inc. User defined extensible visual integration
US6003040A (en) * 1998-01-23 1999-12-14 Mital; Vijay Apparatus and method for storing, navigating among and adding links between data items in computer databases
US6345382B1 (en) * 1998-02-12 2002-02-05 International Business Machines Corporation Run-time customization in object-oriented design
US6591250B1 (en) 1998-02-23 2003-07-08 Genetic Anomalies, Inc. System and method for managing virtual property
KR20010034514A (ko) 1998-02-26 2001-04-25 케네쓰 올센 원격 메소드를 식별하는 해시 판정 방법 및 시스템
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US6466973B2 (en) * 1998-03-06 2002-10-15 Adaptec, Inc. Method and system for managing storage devices over a network
US6289500B1 (en) * 1998-03-11 2001-09-11 International Business Machines Corporation Object mechanism and method that creates domain-neutral objects with domain-specific run-time extensions in an appropriate collection
US6321249B1 (en) * 1998-04-28 2001-11-20 Xerox Corporation Dynamic system configuration using an object-based client-server system
US6330006B1 (en) * 1998-05-12 2001-12-11 Silverstream Software, Inc. Method and apparatus for synchronizing an application's interface and data
US6138269A (en) * 1998-05-20 2000-10-24 Sun Microsystems, Inc. Determining the actual class of an object at run time
US5983021A (en) * 1998-05-27 1999-11-09 Sun Microsystems Dynamically switching statically bound function calls to dynamically bound function calls without recompilation
US6023271A (en) * 1998-06-11 2000-02-08 Sun Microsystems, Inc. Framework for binding data viewers/data manipulation with one to many objects through introspection
US6208994B1 (en) * 1998-06-11 2001-03-27 Sun Microsystems, Inc. Supporters providing extensible classes without recoding for object-oriented applications
EP0967546A3 (en) * 1998-06-25 2001-05-02 Intellution Inc. System and method for storing and retrieving objects
US7103640B1 (en) 1999-09-14 2006-09-05 Econnectix, Llc Network distributed tracking wire transfer protocol
US7233978B2 (en) * 1998-07-08 2007-06-19 Econnectix, Llc Method and apparatus for managing location information in a network separate from the data to which the location information pertains
US6434740B1 (en) * 1998-07-15 2002-08-13 International Business Machines Corporation Apparatus and method for visual construction simplification
US6397203B1 (en) * 1998-09-30 2002-05-28 International Business Machines Corporation Defining object classes to match corresponding specialized data types in a relational database
US6366964B1 (en) * 1998-10-22 2002-04-02 Sony Corporation Method of and apparatus for dynamically enumerating objects representing devices within an IEEE 1394 serial bus networking
US6446142B1 (en) * 1998-10-22 2002-09-03 Sony Corporation Method of and apparatus for dynamically binding subobjects into objects to represent functions and characteristics of a device within an IEEE 1394 serial bus network
CA2255017A1 (en) * 1998-11-30 2000-05-30 Christina P. Lau Method and mechanism for a task oriented xml data model
US6460015B1 (en) 1998-12-15 2002-10-01 International Business Machines Corporation Method, system and computer program product for automatic character transliteration in a text string object
US7099876B1 (en) 1998-12-15 2006-08-29 International Business Machines Corporation Method, system and computer program product for storing transliteration and/or phonetic spelling information in a text string class
US6407754B1 (en) * 1998-12-15 2002-06-18 International Business Machines Corporation Method, system and computer program product for controlling the graphical display of multi-field text string objects
US6389386B1 (en) 1998-12-15 2002-05-14 International Business Machines Corporation Method, system and computer program product for sorting text strings
US6496844B1 (en) 1998-12-15 2002-12-17 International Business Machines Corporation Method, system and computer program product for providing a user interface with alternative display language choices
US6757747B1 (en) * 1998-12-17 2004-06-29 International Business Machines Corporation Proxy object for managing an application instance on a dataless client machine
US6397384B1 (en) * 1998-12-18 2002-05-28 Adobe Systems Incorporated Run-time addition of interfaces
US6609153B1 (en) 1998-12-24 2003-08-19 Redback Networks Inc. Domain isolation through virtual network machines
US6505343B1 (en) * 1998-12-31 2003-01-07 Intel Corporation Document/view application development architecture applied to ActiveX technology for web based application delivery
US7526468B2 (en) * 1999-01-08 2009-04-28 Computer Associates Think, Inc. System and method for recursive path analysis of DBMS procedures
US6658450B1 (en) * 1999-01-29 2003-12-02 Avaya Technology Corp. Method and system for memory resident transient storage of data associated with a plurality of collaborating computer processes
US6684246B1 (en) * 1999-02-03 2004-01-27 William H. Gates, III Method and system for tracking clients
US6192371B1 (en) * 1999-04-28 2001-02-20 Lucent Technologies, Inc Object morphing in an object oriented computing environment using relational database query procedure
US6341289B1 (en) * 1999-05-06 2002-01-22 International Business Machines Corporation Object identity and partitioning for user defined extents
US6563503B1 (en) 1999-05-07 2003-05-13 Nintendo Co., Ltd. Object modeling for computer simulation and animation
US6430576B1 (en) * 1999-05-10 2002-08-06 Patrick Gates Distributing and synchronizing objects
AU5025600A (en) * 1999-05-17 2000-12-05 Foxboro Company, The Process control configuration system with parameterized objects
US7089530B1 (en) * 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
CA2272739C (en) * 1999-05-25 2003-10-07 Suhayya Abu-Hakima Apparatus and method for interpreting and intelligently managing electronic messages
US6782541B1 (en) 1999-05-28 2004-08-24 Avaya Technology Corp. System and method of exchanging information between software modules
US6678745B1 (en) * 1999-06-01 2004-01-13 Bruce Hodge Dynamic object synthesis with automatic late binding
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6418447B1 (en) * 1999-06-14 2002-07-09 International Business Machines Corporation Registration of object factories under multiple interface names
AU6361800A (en) * 1999-07-23 2001-02-13 Concorde Solutions Inc. Computer programming object externalization
US7100195B1 (en) 1999-07-30 2006-08-29 Accenture Llp Managing user information on an e-commerce system
US6718535B1 (en) * 1999-07-30 2004-04-06 Accenture Llp System, method and article of manufacture for an activity framework design in an e-commerce based environment
US6704873B1 (en) 1999-07-30 2004-03-09 Accenture Llp Secure gateway interconnection in an e-commerce based environment
US6601233B1 (en) 1999-07-30 2003-07-29 Accenture Llp Business components framework
US7150000B1 (en) * 1999-08-17 2006-12-12 Nash Controlware, Inc. Component development with autonomous and compiled components to implement and consume services with components operate in edit and run mode
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US7289964B1 (en) 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6842906B1 (en) 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6954220B1 (en) 1999-08-31 2005-10-11 Accenture Llp User context component in environment services patterns
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6760902B1 (en) * 1999-08-31 2004-07-06 James Alan Ott Method and apparatus for implicitly generating and supporting a user interface
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6549949B1 (en) 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6546551B1 (en) * 1999-09-28 2003-04-08 International Business Machines Corporation Method for accurately extracting library-based object-oriented applications
US6571232B1 (en) * 1999-11-01 2003-05-27 Sun Microsystems, Inc. System and method for browsing database schema information
US6700590B1 (en) * 1999-11-01 2004-03-02 Indx Software Corporation System and method for retrieving and presenting data using class-based component and view model
US6598220B1 (en) * 1999-12-17 2003-07-22 Dell Products L.P. System and method for allowing registerable runtime modification of object behaviors
US6473765B1 (en) * 1999-12-23 2002-10-29 Ncr Corporation Matching/merging two data warehouse physical data models
KR20010082938A (ko) * 2000-02-22 2001-08-31 박종섭 차세대 이동통신 시스템에서 원격 프로세스 호를 이용한운용 보전 방법
US7988559B2 (en) 2001-03-08 2011-08-02 Igt Computerized gaming system, method and apparatus
US7043641B1 (en) * 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
CA2402389A1 (en) * 2000-03-08 2002-09-19 Shuffle Master, Inc. Computerized gaming system, method and apparatus
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6753885B2 (en) * 2000-04-06 2004-06-22 Microsoft Corporation System and theme file format for creating visual styles
US20010048448A1 (en) * 2000-04-06 2001-12-06 Raiz Gregory L. Focus state themeing
US6873337B1 (en) * 2000-04-06 2005-03-29 Microsoft Corporation Application programming interface for changing the visual style
US6618733B1 (en) * 2000-04-11 2003-09-09 Revelink Inc. View navigation for creation, update and querying of data objects and textual annotations of relations between data objects
US6609132B1 (en) * 2000-04-11 2003-08-19 Revelink, Inc. Object data model for a framework for creation, update and view navigation of data objects and textual annotations of relations between data objects
AU2001251527A1 (en) * 2000-04-11 2001-10-23 Revelink, Inc. Framework for creation, update, query, and view navigation of data objects and textual annotations of relations between data objects
US6618732B1 (en) * 2000-04-11 2003-09-09 Revelink, Inc. Database query handler supporting querying of textual annotations of relations between data objects
US6901588B1 (en) * 2000-04-17 2005-05-31 Codemesh, Inc. Sharing components between programming languages by use of polymorphic proxy
US6981249B1 (en) * 2000-05-02 2005-12-27 Microsoft Corporation Methods for enhancing type reconstruction
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US7188251B1 (en) 2000-05-09 2007-03-06 Sun Microsystems, Inc. System and method for secure message-based leasing of resources in a distributed computing environment
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US7010573B1 (en) 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
US7243356B1 (en) 2000-05-09 2007-07-10 Sun Microsystems, Inc. Remote method invocation with secure messaging in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US6973493B1 (en) 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
US7200848B1 (en) 2000-05-09 2007-04-03 Sun Microsystems, Inc. Migrating processes using data representation language representations of the processes in a distributed computing environment
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US20080005275A1 (en) * 2000-06-02 2008-01-03 Econnectix, Llc Method and apparatus for managing location information in a network separate from the data to which the location information pertains
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US7716163B2 (en) 2000-06-06 2010-05-11 Microsoft Corporation Method and system for defining semantic categories and actions
US7788602B2 (en) * 2000-06-06 2010-08-31 Microsoft Corporation Method and system for providing restricted actions for recognized semantic categories
US7770102B1 (en) 2000-06-06 2010-08-03 Microsoft Corporation Method and system for semantically labeling strings and providing actions based on semantically labeled strings
US7712024B2 (en) 2000-06-06 2010-05-04 Microsoft Corporation Application program interfaces for semantically labeling strings and providing actions based on semantically labeled strings
US7421645B2 (en) 2000-06-06 2008-09-02 Microsoft Corporation Method and system for providing electronic commerce actions based on semantically labeled strings
US6877159B1 (en) 2000-07-27 2005-04-05 International Business Machines Corporation Apparatus and method for maintaining object associations in an object oriented environment
AU7606601A (en) * 2000-09-29 2002-04-11 International Business Machines Corporation Isolating UI design from business object design using java interface concepts
US7346842B1 (en) * 2000-11-02 2008-03-18 Citrix Systems, Inc. Methods and apparatus for incorporating a partial page on a client
US20020105548A1 (en) * 2000-12-12 2002-08-08 Richard Hayton Methods and apparatus for creating a user interface using property paths
US20020124236A1 (en) * 2000-12-27 2002-09-05 Ruths Derek Augustus Samuel Method of manipulating a distributed system of computer-implemented objects
US7296275B2 (en) * 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20040205692A1 (en) * 2001-01-12 2004-10-14 Robinson Marck R. Method and system for creating reusable software components through a uniform interface
US7386792B1 (en) * 2001-03-07 2008-06-10 Thomas Layne Bascom System and method for collecting, storing, managing and providing categorized information related to a document object
US7203841B2 (en) * 2001-03-08 2007-04-10 Igt Encryption in a secure computerized gaming system
US6948133B2 (en) * 2001-03-23 2005-09-20 Siemens Medical Solutions Health Services Corporation System for dynamically configuring a user interface display
US6950831B2 (en) * 2001-03-23 2005-09-27 Siemens Medical Solutions Health Services Corporation Processing system for use with a user interface display
DE60122671T2 (de) * 2001-03-26 2007-08-23 Sun Microsystems, Inc., Palo Alto Anforderungsbedingte dynamische Schnittstellengenerierung
US7246345B1 (en) * 2001-04-02 2007-07-17 Sun Microsystems, Inc. Method and apparatus for partitioning of managed state for a Java based application
US7778816B2 (en) * 2001-04-24 2010-08-17 Microsoft Corporation Method and system for applying input mode bias
US7007281B2 (en) * 2001-05-22 2006-02-28 Sun Microsystems, Inc. Heuristic for generating opposite information for inclusion in focus events
US7428752B2 (en) * 2001-06-01 2008-09-23 Applications In Internet Time, Llc Secure data accessing system and method
JP2003006401A (ja) * 2001-06-26 2003-01-10 Hitachi Ltd 企業情報流処理方法と設計帳票作成方法
US6826729B1 (en) * 2001-06-29 2004-11-30 Microsoft Corporation Gallery user interface controls
US20030001894A1 (en) * 2001-06-29 2003-01-02 International Business Machines Corporation Method and apparatus for dynamically determining actions to perform for an object
US7054853B2 (en) * 2001-07-02 2006-05-30 Sun Microsystems, Inc. Methods and system for efficient association traversals
US6981250B1 (en) * 2001-07-05 2005-12-27 Microsoft Corporation System and methods for providing versioning of software components in a computer programming language
US8001523B1 (en) 2001-07-05 2011-08-16 Microsoft Corporation System and methods for implementing an explicit interface member in a computer programming language
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7618317B2 (en) * 2001-09-10 2009-11-17 Jackson Mark D Method for developing gaming programs compatible with a computerized gaming operating system and apparatus
US20030079032A1 (en) * 2001-09-10 2003-04-24 John Orsolits Enterprise software gateway
US8708828B2 (en) * 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
US6902481B2 (en) * 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
US7931533B2 (en) * 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
EP1433108A2 (en) * 2001-09-28 2004-06-30 Sap Ag Portable business information content and management system
US20030131347A1 (en) * 2001-10-12 2003-07-10 Allison David S. Method and apparatus for runtime binding of object members
FR2832577B1 (fr) * 2001-11-16 2005-03-18 Cit Alcatel Acquisition adaptative de donnees pour systeme de gestion de reseaux ou de services
EP1463569A4 (en) * 2001-11-26 2010-06-02 Igt Reno Nev DEVICE AND METHOD FOR ACTIVE INTERCONNECTION VALIDATION
US20030131144A1 (en) * 2002-01-10 2003-07-10 Ncr Corporation Data wedge
US7281241B2 (en) * 2002-01-15 2007-10-09 Cadence Design (Israel) Ii Ltd. System and method for visual debugging of constraint systems
US7069509B2 (en) * 2002-01-18 2006-06-27 International Business Machines Corporation Using introspection for access of class resource bundle information for messages
US8527620B2 (en) * 2003-03-06 2013-09-03 International Business Machines Corporation E-business competitive measurements
US7043549B2 (en) * 2002-01-31 2006-05-09 International Business Machines Corporation Method and system for probing in a network environment
US7412502B2 (en) * 2002-04-18 2008-08-12 International Business Machines Corporation Graphics for end to end component mapping and problem-solving in a network environment
US8086720B2 (en) * 2002-01-31 2011-12-27 International Business Machines Corporation Performance reporting in a network environment
US7047291B2 (en) * 2002-04-11 2006-05-16 International Business Machines Corporation System for correlating events generated by application and component probes when performance problems are identified
US7269651B2 (en) * 2002-09-26 2007-09-11 International Business Machines Corporation E-business operations measurements
DE10206903A1 (de) * 2002-02-19 2003-09-04 Siemens Ag Softwareapplikation, Softwarearchitektur und Verfahren zur Erstellung von Softwareapplikationen, insbesondere für MES-Systeme
US6691370B2 (en) * 2002-04-15 2004-02-17 Markar Aritectural Products, Inc. Continuous door hinge with multi-plastic bearings
US20030203755A1 (en) * 2002-04-25 2003-10-30 Shuffle Master, Inc. Encryption in a secure computerized gaming system
US7325194B2 (en) 2002-05-07 2008-01-29 Microsoft Corporation Method, system, and apparatus for converting numbers between measurement systems based upon semantically labeled strings
US7707496B1 (en) 2002-05-09 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting dates between calendars and languages based upon semantically labeled strings
US7742048B1 (en) 2002-05-23 2010-06-22 Microsoft Corporation Method, system, and apparatus for converting numbers based upon semantically labeled strings
US7707024B2 (en) * 2002-05-23 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting currency values based upon semantically labeled strings
US7827546B1 (en) 2002-06-05 2010-11-02 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US7281245B2 (en) * 2002-06-05 2007-10-09 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US7356537B2 (en) * 2002-06-06 2008-04-08 Microsoft Corporation Providing contextually sensitive tools and help content in computer-generated documents
US7716676B2 (en) 2002-06-25 2010-05-11 Microsoft Corporation System and method for issuing a message to a program
US7392479B2 (en) 2002-06-27 2008-06-24 Microsoft Corporation System and method for providing namespace related information
US7209915B1 (en) 2002-06-28 2007-04-24 Microsoft Corporation Method, system and apparatus for routing a query to one or more providers
US7191431B2 (en) * 2002-12-20 2007-03-13 International Business Machines Corporation System and method for selecting a translator to translate a component request using semantic typing
US7783614B2 (en) * 2003-02-13 2010-08-24 Microsoft Corporation Linking elements of a document to corresponding fields, queries and/or procedures in a database
US20040172584A1 (en) * 2003-02-28 2004-09-02 Microsoft Corporation Method and system for enhancing paste functionality of a computer software application
US20040205184A1 (en) * 2003-03-06 2004-10-14 International Business Machines Corporation E-business operations measurements reporting
US7577934B2 (en) * 2003-03-12 2009-08-18 Microsoft Corporation Framework for modeling and providing runtime behavior for business software applications
US7730446B2 (en) * 2003-03-12 2010-06-01 Microsoft Corporation Software business process model
US7313619B2 (en) 2003-03-21 2007-12-25 Intel Corporation System and method for managing distributed objects as a single representation
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7558841B2 (en) 2003-05-14 2009-07-07 Microsoft Corporation Method, system, and computer-readable medium for communicating results to a data query in a computer network
US7756691B2 (en) * 2003-05-30 2010-07-13 International Business Machines Corporation Establishing relationships between components in simulation systems
US9715678B2 (en) 2003-06-26 2017-07-25 Microsoft Technology Licensing, Llc Side-by-side shared calendars
US7739588B2 (en) 2003-06-27 2010-06-15 Microsoft Corporation Leveraging markup language data for semantically labeling text strings and data and for providing actions based on semantically labeled text strings and data
US8799808B2 (en) * 2003-07-01 2014-08-05 Microsoft Corporation Adaptive multi-line view user interface
US20050005249A1 (en) * 2003-07-01 2005-01-06 Microsoft Corporation Combined content selection and display user interface
US7392249B1 (en) * 2003-07-01 2008-06-24 Microsoft Corporation Methods, systems, and computer-readable mediums for providing persisting and continuously updating search folders
US7716593B2 (en) * 2003-07-01 2010-05-11 Microsoft Corporation Conversation grouping of electronic mail records
US7707255B2 (en) 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
US7293254B2 (en) * 2003-09-18 2007-11-06 Microsoft Corporation Extensibility application programming interface and framework for meta-model objects
US7308679B2 (en) * 2003-09-26 2007-12-11 International Business Machines Corporation Method and computer program product for providing a meta-data programming language level interface
US7519951B2 (en) * 2003-09-30 2009-04-14 International Business Machines Corporation Multi-attribute dynamic link library packaging
US8255888B2 (en) * 2003-09-30 2012-08-28 Sap Ag API derivation and XML schema derivation for developing applications
US7543268B2 (en) * 2003-09-30 2009-06-02 Sap Ag Development environment for developing applications using a metamodel and a metadata API
US7721254B2 (en) * 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7404195B1 (en) 2003-12-09 2008-07-22 Microsoft Corporation Programmable object model for extensible markup language markup in an application
US7178102B1 (en) 2003-12-09 2007-02-13 Microsoft Corporation Representing latent data in an extensible markup language document
US7434157B2 (en) 2003-12-09 2008-10-07 Microsoft Corporation Programmable object model for namespace or schema library support in a software application
US7487515B1 (en) 2003-12-09 2009-02-03 Microsoft Corporation Programmable object model for extensible markup language schema validation
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US20050182617A1 (en) * 2004-02-17 2005-08-18 Microsoft Corporation Methods and systems for providing automated actions on recognized text strings in a computer-generated document
US7509573B1 (en) 2004-02-17 2009-03-24 Microsoft Corporation Anti-virus security information in an extensible markup language document
US7836428B2 (en) * 2004-03-15 2010-11-16 Bungee Labs, Inc. Declarative computer programming language method and system
US7805523B2 (en) * 2004-03-15 2010-09-28 Mitchell David C Method and apparatus for partial updating of client interfaces
US7543019B1 (en) * 2004-03-31 2009-06-02 Emc Corporation Methods and apparatus providing backward compatibility for applications that access a changing object model
US7653880B2 (en) * 2004-04-13 2010-01-26 Microsoft Corporation Application of data-binding mechanism to perform command binding
US7590969B2 (en) * 2004-04-14 2009-09-15 Microsoft Corporation Type system
US20060031469A1 (en) * 2004-06-29 2006-02-09 International Business Machines Corporation Measurement, reporting, and management of quality of service for a real-time communication application in a network environment
US7617501B2 (en) 2004-07-09 2009-11-10 Quest Software, Inc. Apparatus, system, and method for managing policies on a computer having a foreign operating system
US8547380B2 (en) * 2004-08-05 2013-10-01 Elite Avatars, Llc Persistent, immersible and extractable avatars
US7675519B2 (en) * 2004-08-05 2010-03-09 Elite Avatars, Inc. Persistent, immersible and extractable avatars
US7703036B2 (en) * 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US8117542B2 (en) * 2004-08-16 2012-02-14 Microsoft Corporation User interface for displaying selectable software functionality controls that are contextually relevant to a selected object
US7895531B2 (en) * 2004-08-16 2011-02-22 Microsoft Corporation Floating command object
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US8255828B2 (en) * 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US7747966B2 (en) * 2004-09-30 2010-06-29 Microsoft Corporation User interface for providing task management and calendar information
US7543032B2 (en) * 2004-10-22 2009-06-02 Canyonbridge, Inc. Method and apparatus for associating messages with data elements
US7814462B2 (en) * 2004-10-29 2010-10-12 Massachusetts Institute Of Technology Methods and apparatus for parallel execution of a process
US7409677B1 (en) * 2004-11-16 2008-08-05 Sun Microsystems, Inc. Method and system for creation and use of embedded trace description
US20060116864A1 (en) * 2004-12-01 2006-06-01 Microsoft Corporation Safe, secure resource editing for application localization with automatic adjustment of application user interface for translated resources
US7617092B2 (en) 2004-12-01 2009-11-10 Microsoft Corporation Safe, secure resource editing for application localization
US7716641B2 (en) * 2004-12-01 2010-05-11 Microsoft Corporation Method and system for automatically identifying and marking subsets of localizable resources
US9766953B2 (en) * 2004-12-16 2017-09-19 Openspan, Inc. System and method for non-programmatically constructing software solutions
US7421715B1 (en) * 2005-02-09 2008-09-02 Cerylion, Inc. System and method for dynamic late-binding of persistent object implementations in software-based systems
US7421716B1 (en) * 2005-02-09 2008-09-02 Cerylion, Inc. System and method for providing composite applications
US8799855B2 (en) * 2005-03-15 2014-08-05 International Business Machines Corporation Resource management method and system enabling identity mapping between resources and objects
JP4517923B2 (ja) * 2005-03-31 2010-08-04 沖電気工業株式会社 オブジェクト救済システム及び方法
US7849165B2 (en) 2005-04-21 2010-12-07 Fiducci Thomas E Data backup, storage, transfer, and retrieval system, method and computer program product
US8126990B2 (en) 2005-04-21 2012-02-28 Fiducci Thomas E Data backup and transfer system, method and computer program product
US7587705B2 (en) * 2005-04-29 2009-09-08 Sap (Ag) Calls and return calls using client interfaces
US7634771B2 (en) * 2005-04-29 2009-12-15 Sap (Ag) Object generation in packages
US7669181B2 (en) * 2005-04-29 2010-02-23 Sap (Ag) Client interfaces for packages
US20060281553A1 (en) * 2005-05-19 2006-12-14 Digital Chocolate, Inc. Creation of game elements using location information
US9256407B2 (en) 2005-08-04 2016-02-09 International Business Machines Corporation Interleaving the XForms processing model with java server faces request processing
US8239882B2 (en) * 2005-08-30 2012-08-07 Microsoft Corporation Markup based extensibility for user interfaces
US8473971B2 (en) 2005-09-06 2013-06-25 Microsoft Corporation Type inference and type-directed late binding
US8689137B2 (en) * 2005-09-07 2014-04-01 Microsoft Corporation Command user interface for displaying selectable functionality controls in a database application
US9542667B2 (en) * 2005-09-09 2017-01-10 Microsoft Technology Licensing, Llc Navigating messages within a thread
US8627222B2 (en) * 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US7788590B2 (en) * 2005-09-26 2010-08-31 Microsoft Corporation Lightweight reference user interface
US7992085B2 (en) 2005-09-26 2011-08-02 Microsoft Corporation Lightweight reference user interface
US8365135B2 (en) * 2005-10-27 2013-01-29 International Business Machines Corporation Computer method and apparatus for connection creation in a software modeling system
US7904949B2 (en) 2005-12-19 2011-03-08 Quest Software, Inc. Apparatus, systems and methods to provide authentication services to a legacy application
US20070174454A1 (en) * 2006-01-23 2007-07-26 Mitchell David C Method and apparatus for accessing Web services and URL resources for both primary and shared users over a reverse tunnel mechanism
US8087075B2 (en) 2006-02-13 2011-12-27 Quest Software, Inc. Disconnected credential validation using pre-fetched service tickets
US7757177B1 (en) * 2006-03-21 2010-07-13 Oracle America, Inc. Virtual forms
US8605090B2 (en) * 2006-06-01 2013-12-10 Microsoft Corporation Modifying and formatting a chart using pictorially provided chart elements
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
US8429712B2 (en) 2006-06-08 2013-04-23 Quest Software, Inc. Centralized user authentication system apparatus and method
US8332818B1 (en) * 2006-06-26 2012-12-11 Versata Development Group, Inc. Flash testing framework
US7895332B2 (en) * 2006-10-30 2011-02-22 Quest Software, Inc. Identity migration system apparatus and method
US8086710B2 (en) 2006-10-30 2011-12-27 Quest Software, Inc. Identity migration apparatus and method
US8578334B2 (en) * 2006-12-04 2013-11-05 Microsoft Corporation Dynamic language-based integrated development environment
US8930331B2 (en) 2007-02-21 2015-01-06 Palantir Technologies Providing unique views of data based on changes or rules
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US7853679B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US20100174692A1 (en) * 2007-03-15 2010-07-08 Scott Meyer Graph store
US20100121839A1 (en) * 2007-03-15 2010-05-13 Scott Meyer Query optimization
US8204856B2 (en) * 2007-03-15 2012-06-19 Google Inc. Database replication
US20090024590A1 (en) * 2007-03-15 2009-01-22 Sturge Timothy User contributed knowledge database
US7865868B2 (en) 2007-03-28 2011-01-04 Microsoft Corporation .NET ribbon model for a ribbon user interface
US8069438B2 (en) * 2007-06-08 2011-11-29 Apple Inc. Class declaration in a non-class-based programming environment
US8079025B2 (en) * 2007-06-08 2011-12-13 Apple Inc. Asynchronous load of source dependencies
US8132152B2 (en) * 2007-06-08 2012-03-06 Apple Inc. Extending a scripting language to provide an object hierarchy
US7950027B2 (en) * 2007-06-15 2011-05-24 Microsoft Corporation Mutable application experience and user interface
US20080320453A1 (en) * 2007-06-21 2008-12-25 Microsoft Corporation Type inference and late binding
US8321836B2 (en) * 2007-06-21 2012-11-27 Microsoft Corporation Late bound programmatic assistance
US8762880B2 (en) * 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
US8201103B2 (en) * 2007-06-29 2012-06-12 Microsoft Corporation Accessing an out-space user interface for a document editor program
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US9361129B2 (en) 2007-08-01 2016-06-07 Microsoft Technology Licensing, Llc Instance interfaces and mix-ins for dynamic languages
US10120733B2 (en) * 2007-08-30 2018-11-06 Red Hat, Inc. Remote procedure call supporting multiple versions
US20090064208A1 (en) * 2007-08-30 2009-03-05 Thomas Mitchell Elrod SSL socket builder
US8281283B2 (en) * 2007-09-13 2012-10-02 Sap Ag Model-based integration of business logic implemented in enterprise javabeans into a UI framework
US8484115B2 (en) 2007-10-03 2013-07-09 Palantir Technologies, Inc. Object-oriented time series generator
US9588781B2 (en) 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US9665850B2 (en) * 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
EP2304536A4 (en) 2008-06-20 2012-08-15 Invensys Sys Inc SYSTEMS AND METHOD FOR IMMERSIBLE INTERACTION WITH ACTUAL AND / OR SIMULATED DEVICES FOR PROCESS, ENVIRONMENTAL AND INDUSTRIAL CONTROL
US8402096B2 (en) 2008-06-24 2013-03-19 Microsoft Corporation Automatic conversation techniques
US9639375B2 (en) * 2008-08-28 2017-05-02 Red Hat, Inc. Generation of language bindings for libraries using data from compiler generated debug information
US20100070426A1 (en) * 2008-09-15 2010-03-18 Palantir Technologies, Inc. Object modeling for exploring large data sets
US10747952B2 (en) 2008-09-15 2020-08-18 Palantir Technologies, Inc. Automatic creation and server push of multiple distinct drafts
US9466037B2 (en) * 2008-11-13 2016-10-11 Oracle International Corporation Versioning and effectivity dates for orchestration business process design
US9031998B2 (en) * 2008-12-30 2015-05-12 Sap Se Analytics enablement objects
US20110093500A1 (en) * 2009-01-21 2011-04-21 Google Inc. Query Optimization
WO2010107476A1 (en) * 2009-03-19 2010-09-23 Duke University Inhibiting gsnor
US9046983B2 (en) 2009-05-12 2015-06-02 Microsoft Technology Licensing, Llc Hierarchically-organized control galleries
US8127060B2 (en) * 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8463964B2 (en) * 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8312390B2 (en) * 2009-06-10 2012-11-13 Microsoft Corporation Dynamic screentip language translation
US8255984B1 (en) 2009-07-01 2012-08-28 Quest Software, Inc. Single sign-on system for shared resource environments
US9710355B2 (en) * 2010-01-14 2017-07-18 Microsoft Technology Licensing, Llc Selective loading of code elements for code analysis
US8572591B2 (en) 2010-06-15 2013-10-29 Microsoft Corporation Dynamic adaptive programming
CA2831135A1 (en) * 2011-03-31 2012-10-04 Coral Networks, Inc. System and method for the structuring and interpretation of organic computer programs
US9256401B2 (en) 2011-05-31 2016-02-09 Microsoft Technology Licensing, Llc Editor visualization of symbolic relationships
US8799240B2 (en) 2011-06-23 2014-08-05 Palantir Technologies, Inc. System and method for investigating large amounts of data
US9547693B1 (en) 2011-06-23 2017-01-17 Palantir Technologies Inc. Periodic database search manager for multiple data sources
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US9280532B2 (en) 2011-08-02 2016-03-08 Palantir Technologies, Inc. System and method for accessing rich objects via spreadsheets
US8732574B2 (en) 2011-08-25 2014-05-20 Palantir Technologies, Inc. System and method for parameterizing documents for automatic workflow generation
US11526366B2 (en) * 2011-08-30 2022-12-13 Embarcadero Technologies, Inc. Dynamically binding data in an application
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US8954475B2 (en) * 2011-11-10 2015-02-10 Microsoft Technology Licensing, Llc Deep cloning of objects using binary format
US9454588B2 (en) * 2012-08-14 2016-09-27 International Business Machines Corporation Custom object-in-memory format in data grid network appliance
US9122490B2 (en) 2012-10-17 2015-09-01 Microsoft Technology Licensing, Llc Code dependency calculation
US9348677B2 (en) 2012-10-22 2016-05-24 Palantir Technologies Inc. System and method for batch evaluation programs
US8732674B1 (en) 2012-11-14 2014-05-20 Microsoft Corporation Revertable managed execution image instrumentation
US10101988B2 (en) * 2013-01-15 2018-10-16 Hewlett Packard Enterprise Development Lp Dynamic firmware updating
US8930897B2 (en) 2013-03-15 2015-01-06 Palantir Technologies Inc. Data integration tool
US10275778B1 (en) 2013-03-15 2019-04-30 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive investigation based on automatic malfeasance clustering of related data in various data structures
US8855999B1 (en) 2013-03-15 2014-10-07 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8909656B2 (en) 2013-03-15 2014-12-09 Palantir Technologies Inc. Filter chains with associated multipath views for exploring large data sets
US9230280B1 (en) 2013-03-15 2016-01-05 Palantir Technologies Inc. Clustering data based on indications of financial malfeasance
US8903717B2 (en) 2013-03-15 2014-12-02 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8868486B2 (en) 2013-03-15 2014-10-21 Palantir Technologies Inc. Time-sensitive cube
US10223637B1 (en) 2013-05-30 2019-03-05 Google Llc Predicting accuracy of submitted data
DE102013108309A1 (de) * 2013-08-01 2015-02-05 OMS Software GMBH Verfahren zum Konnektieren von Objekten in einer Softwareanwendung
US8938686B1 (en) 2013-10-03 2015-01-20 Palantir Technologies Inc. Systems and methods for analyzing performance of an entity
US9116975B2 (en) 2013-10-18 2015-08-25 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores
US9105000B1 (en) 2013-12-10 2015-08-11 Palantir Technologies Inc. Aggregating data from a plurality of data sources
US9043696B1 (en) 2014-01-03 2015-05-26 Palantir Technologies Inc. Systems and methods for visual definition of data associations
US8935201B1 (en) 2014-03-18 2015-01-13 Palantir Technologies Inc. Determining and extracting changed data from a data source
US9619557B2 (en) 2014-06-30 2017-04-11 Palantir Technologies, Inc. Systems and methods for key phrase characterization of documents
US9535974B1 (en) 2014-06-30 2017-01-03 Palantir Technologies Inc. Systems and methods for identifying key phrase clusters within documents
US9419992B2 (en) 2014-08-13 2016-08-16 Palantir Technologies Inc. Unwanted tunneling alert system
US9454281B2 (en) 2014-09-03 2016-09-27 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
US10362133B1 (en) 2014-12-22 2019-07-23 Palantir Technologies Inc. Communication data processing architecture
US9348920B1 (en) 2014-12-22 2016-05-24 Palantir Technologies Inc. Concept indexing among database of documents using machine learning techniques
US10552994B2 (en) 2014-12-22 2020-02-04 Palantir Technologies Inc. Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items
US10452651B1 (en) 2014-12-23 2019-10-22 Palantir Technologies Inc. Searching charts
US9817563B1 (en) 2014-12-29 2017-11-14 Palantir Technologies Inc. System and method of generating data points from one or more data stores of data items for chart creation and manipulation
US9672257B2 (en) 2015-06-05 2017-06-06 Palantir Technologies Inc. Time-series data storage and processing database system
US9384203B1 (en) 2015-06-09 2016-07-05 Palantir Technologies Inc. Systems and methods for indexing and aggregating data records
US9407652B1 (en) 2015-06-26 2016-08-02 Palantir Technologies Inc. Network anomaly detection
US9537880B1 (en) 2015-08-19 2017-01-03 Palantir Technologies Inc. Anomalous network monitoring, user behavior detection and database system
US10402385B1 (en) 2015-08-27 2019-09-03 Palantir Technologies Inc. Database live reindex
US9454564B1 (en) 2015-09-09 2016-09-27 Palantir Technologies Inc. Data integrity checks
US10044745B1 (en) 2015-10-12 2018-08-07 Palantir Technologies, Inc. Systems for computer network security risk assessment including user compromise analysis associated with a network of devices
US10102282B2 (en) * 2015-11-18 2018-10-16 University-Industry Cooperation Foundation Of Kyung Hee University Apparatus for mediation bridge ontology based on ontology alignment pattern
US9542446B1 (en) 2015-12-17 2017-01-10 Palantir Technologies, Inc. Automatic generation of composite datasets based on hierarchical fields
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US20220164840A1 (en) 2016-04-01 2022-05-26 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10606916B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10909265B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Application privacy scanning systems and related methods
US10678945B2 (en) 2016-06-10 2020-06-09 OneTrust, LLC Consent receipt management systems and related methods
US10909488B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US10685140B2 (en) 2016-06-10 2020-06-16 OneTrust, LLC Consent receipt management systems and related methods
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US10949565B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US10284604B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US10878127B2 (en) 2016-06-10 2020-12-29 OneTrust, LLC Data subject access request processing systems and related methods
US10846433B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing consent management systems and related methods
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US10592648B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Consent receipt management systems and related methods
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US10944725B2 (en) 2016-06-10 2021-03-09 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US10282559B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US10839102B2 (en) 2016-06-10 2020-11-17 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10467432B2 (en) 2016-06-10 2019-11-05 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US10896394B2 (en) 2016-06-10 2021-01-19 OneTrust, LLC Privacy management systems and methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US11138242B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10510031B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11228620B2 (en) * 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10740487B2 (en) 2016-06-10 2020-08-11 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US10997318B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US10783256B2 (en) 2016-06-10 2020-09-22 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US11134086B2 (en) 2016-06-10 2021-09-28 OneTrust, LLC Consent conversion optimization systems and related methods
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11144622B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Privacy management systems and methods
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US10169609B1 (en) 2016-06-10 2019-01-01 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10318761B2 (en) 2016-06-10 2019-06-11 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US9753935B1 (en) 2016-08-02 2017-09-05 Palantir Technologies Inc. Time-series data storage and processing database system
US10133588B1 (en) 2016-10-20 2018-11-20 Palantir Technologies Inc. Transforming instructions for collaborative updates
US10318630B1 (en) 2016-11-21 2019-06-11 Palantir Technologies Inc. Analysis of large bodies of textual data
CN108089879B (zh) * 2016-11-21 2021-11-26 阿里巴巴(中国)有限公司 增量更新方法、设备及可编程设备
US10884875B2 (en) 2016-12-15 2021-01-05 Palantir Technologies Inc. Incremental backup of computer data files
US10223099B2 (en) 2016-12-21 2019-03-05 Palantir Technologies Inc. Systems and methods for peer-to-peer build sharing
US10896097B1 (en) 2017-05-25 2021-01-19 Palantir Technologies Inc. Approaches for backup and restoration of integrated databases
GB201708818D0 (en) 2017-06-02 2017-07-19 Palantir Technologies Inc Systems and methods for retrieving and processing data
US10013577B1 (en) 2017-06-16 2018-07-03 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
US11334552B2 (en) 2017-07-31 2022-05-17 Palantir Technologies Inc. Lightweight redundancy tool for performing transactions
US10417224B2 (en) 2017-08-14 2019-09-17 Palantir Technologies Inc. Time series database processing system
US10521223B1 (en) * 2017-08-22 2019-12-31 Wells Fargo Bank, N.A. Systems and methods of a metadata orchestrator augmenting application development
US10216695B1 (en) 2017-09-21 2019-02-26 Palantir Technologies Inc. Database system for time series data storage, processing, and analysis
US11281726B2 (en) 2017-12-01 2022-03-22 Palantir Technologies Inc. System and methods for faster processor comparisons of visual graph features
US10614069B2 (en) 2017-12-01 2020-04-07 Palantir Technologies Inc. Workflow driven database partitioning
US11016986B2 (en) 2017-12-04 2021-05-25 Palantir Technologies Inc. Query-based time-series data display and processing system
GB201807534D0 (en) 2018-05-09 2018-06-20 Palantir Technologies Inc Systems and methods for indexing and searching
US10803202B2 (en) 2018-09-07 2020-10-13 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
FR3087026A1 (fr) * 2018-10-04 2020-04-10 Movida Production Procede pour generer une liaison (binding) entre une bibliotheque c/c++ et un langage interprete, et mise en œuvre de ce procede pour la transformation d’un modele tridimensionnel (3d)
US11048485B2 (en) 2018-12-07 2021-06-29 International Business Machines Corporation User interface code re-use based upon machine learning of design documents
CN110874213B (zh) * 2019-11-12 2021-02-12 广州银汉科技有限公司 一种静态强类型语言的运行时类型扩展与反射方法
US11379188B2 (en) * 2019-11-15 2022-07-05 Foresight Data Systems LLC Plugin-oriented functional programming system configured with software components
EP4179435A1 (en) 2020-07-08 2023-05-17 OneTrust LLC Systems and methods for targeted data discovery
WO2022026564A1 (en) 2020-07-28 2022-02-03 OneTrust, LLC Systems and methods for automatically blocking the use of tracking tools
US11475165B2 (en) 2020-08-06 2022-10-18 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
WO2022060860A1 (en) 2020-09-15 2022-03-24 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
WO2022061270A1 (en) 2020-09-21 2022-03-24 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US11397819B2 (en) 2020-11-06 2022-07-26 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
WO2022159901A1 (en) 2021-01-25 2022-07-28 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
WO2022170254A1 (en) 2021-02-08 2022-08-11 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11601464B2 (en) 2021-02-10 2023-03-07 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
WO2022178219A1 (en) 2021-02-18 2022-08-25 OneTrust, LLC Selective redaction of media content
EP4305539A1 (en) 2021-03-08 2024-01-17 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments
US20240004616A1 (en) * 2022-06-29 2024-01-04 Microsoft Technology Licensing, Llc Runtime support for role types that extend underlying types

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619638A (en) * 1989-07-31 1997-04-08 Hewlett-Packard Company Object based computer system having representation objects for providing interpretative views onto a data object
EP0546682A3 (en) * 1991-12-12 1993-12-08 Ibm Parent class shadowing
US5359721A (en) * 1991-12-18 1994-10-25 Sun Microsystems, Inc. Non-supervisor mode cross address space dynamic linking
US5371891A (en) * 1992-04-09 1994-12-06 Microsoft Corporation Method for object construction in a compiler for an object-oriented programming language
US5327562A (en) * 1992-05-06 1994-07-05 Microsoft Corporation Method for implementing virtual function tables in a compiler for an object-oriented programming language
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
US5515536A (en) * 1992-11-13 1996-05-07 Microsoft Corporation Method and system for invoking methods of an object through a dispatching interface
US5315703A (en) * 1992-12-23 1994-05-24 Taligent, Inc. Object-oriented notification framework system
US5437025A (en) * 1993-01-26 1995-07-25 International Business Machines Corporation System and method for run time configuration of objects in an object oriented computing environment
US5369766A (en) * 1993-03-25 1994-11-29 Taligent, Inc. Object-oriented loader system with support for different load formats
US5485671A (en) * 1993-09-10 1996-01-23 Aavid Laboratories, Inc. Method of making a two-phase thermal bag component cooler
US5423841A (en) * 1994-03-15 1995-06-13 Kornefeld; Michael S. Intraocular knife

Also Published As

Publication number Publication date
ATE195028T1 (de) 2000-08-15
WO1997015883A1 (en) 1997-05-01
EP0857331B1 (en) 2000-07-26
DE69609516D1 (de) 2000-08-31
US5872973A (en) 1999-02-16
EP0857331A1 (en) 1998-08-12
DE69609516T2 (de) 2001-03-29

Similar Documents

Publication Publication Date Title
JPH11514114A (ja) 動的オブジェクト指向言語のオブジェクトの間の動的関係を管理するための方法
Meliá et al. A model-driven development for GWT-based rich internet applications with OOH4RIA
US6189138B1 (en) Visual composition tool for constructing application programs using distributed objects on a distributed object network
US6023271A (en) Framework for binding data viewers/data manipulation with one to many objects through introspection
US7240328B2 (en) System and method for visual application development without programming
EP1474753B1 (en) Component model for real time system control
US7562347B2 (en) Reusable software components
US6889379B1 (en) Transporting objects between a client and a server
US20050273758A1 (en) System and method for building a component base architecture
CA2711274C (en) Compositional modeling of integrated systems using event-based legacy applications
IL124916A (en) Method and system for constructing software components
KR20060087999A (ko) 확장가능 워크플로 모델에 관한 선언적 표현
US20120166977A1 (en) User programming access to data model in user interface design
Ferguson et al. MetaMOOSE—an object-oriented framework for the construction of CASE tools
Schattkowsky et al. Uml model mappings for platform independent user interface design
Samir et al. Swing2script: Migration of java-swing applications to ajax web applications
Holvoet et al. Behaviour specification of parallel active objects
Fuhrer et al. The MaDViWorld software framework for massively distributed virtual worlds: Concepts, examples and implementation solutions
Pirchheim Visual programming of user interfaces for distributed graphics applications
Ying et al. A reflection mechanism for reusing software architecture
Zhou et al. An Object‐Oriented View of the User Interface
Bekker et al. Reflective architectures: requirements for future distributed environments
Weisenburger A Programming Language for Distributed Systems
Hackenyos et al. Oregon State University
Xu Analysis and Implementation of an Asynchronous Component Model

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070116

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20070606

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070717