(57)【要約】【課題】エンタープライズデータオブジェクトのための改善システムおよび方法を提供すること。【解決手段】データオブジェクトフレームワークインターフェースにアクセスして、内部データ構造にエンタープライズデータを記憶するデータオブジェクトを定義し、データオブジェクトフレームワークインターフェースに少なくとも部分的に基づいて、データオブジェクトについてのデータ型を指定し、データオブジェクトにデータソースからデータを書き込む。【選択図】図９
2006221614.tif 000002
【特許請求の範囲】
【請求項１】
データオブジェクトフレームワークインターフェースにアクセスして、内部データ構造にエンタープライズデータを記憶するデータオブジェクトを定義するステップと、
前記データオブジェクトフレームワークインターフェースに少なくとも部分的に基づいて、前記データオブジェクトについてのデータ型を指定するステップと、
前記データオブジェクトにデータソースからデータを書き込むステップと
を含むことを特徴とするコンピュータ実行方法。
【請求項２】
前記データ型を指定するステップは、前記データ型が、
原子、
バリアント、
構造体、および
テーブル
のうちの少なくとも１つであることを指定するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記データ型は、１つまたは複数のフィールドを有する構造体であり、
フィールド名に少なくとも部分的に基づいて、フィールドにアクセスするステップ、
インデックスに少なくとも部分的に基づいて、前記フィールドにアクセスするステップ、および
反復子に少なくとも部分的に基づいて、前記フィールドにアクセスするステップ
のうちの少なくとも１つをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記データ型は、１つまたは複数のレコードを有するテーブルであり、
キーフィールドに少なくとも部分的に基づいて、レコードにアクセスするステップ、
インデックスに少なくとも部分的に基づいて、前記レコードにアクセスするステップ、および
反復子に少なくとも部分的に基づいて、前記レコードにアクセスするステップ
のうちの少なくとも１つをさらに含むことを特徴とする請求項２に記載の方法。
【請求項５】
テーブルの少なくとも一部分をデータソースから前記データオブジェクトの前記内部データ構造にコピーするステップを
さらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記データソースは、
リレーショナルデータベース、
拡張マークアップ言語データソース、
オブジェクト指向データベース、および
エンタープライズ情報システム
のうちの少なくとも１つであることを特徴とする請求項１に記載の方法。
【請求項７】
メタデータインターフェースにアクセスして、前記データオブジェクトに対応するメタデータを取得するステップと、
前記メタデータインターフェースが提供するファンクションを使用して前記メタデータを取得するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
実行時にデータオブジェクトフレームワークに関連するメタデータを動的に修正するステップを
さらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
実行時にデータオブジェクトフレームワークに関連するメタデータを動的に修正するステップは、
データ型に関連するメタデータを修正するステップ、および
データ型の１つまたは複数のインスタンスに関連するメタデータを修正するステップ
のうちの少なくとも１つを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
データオブジェクトフレームワークインターフェースにアクセスするアプリケーションと、
その上で、
前記データオブジェクトフレームワークインターフェースにアクセスして、内部データ構造にエンタープライズデータを記憶するデータオブジェクトを定義し、
前記データオブジェクトフレームワークインターフェースに少なくとも部分的に基づいて、前記データオブジェクトについてのデータ型を指定し、
前記データオブジェクトに対してデータソースからデータを書き込むことが実行可能なプロセッサおよびロジックと
を含むことを特徴とする装置。
【請求項１１】
その上で、前記データ型を指定することが実行可能な前記ロジックは、前記データ型が、
原子、
バリアント、
構造体、および
テーブル
のうちの少なくとも１つであることを指定するロジックを含むことを特徴とする請求項１０に記載の装置。
【請求項１２】
前記データ型は、１つまたは複数のフィールドを有する構造体であり、その上で実行可能な前記ロジックは、以下の
フィールド名に少なくとも部分的に基づいてフィールドにアクセスするステップ、
インデックスに少なくとも部分的に基づいて前記フィールドにアクセスするステップ、および
反復子に少なくとも部分的に基づいて前記フィールドにアクセスするステップ
のうちの少なくとも１つを実施するロジックをさらに含むことを特徴とする請求項１１に記載の装置。
【請求項１３】
前記データ型は、１つまたは複数のレコードを有するテーブルであり、その上で実行可能な前記ロジックは、以下の
キーフィールドに少なくとも部分的に基づいてレコードにアクセスするステップ、
インデックスに少なくとも部分的に基づいて前記レコードにアクセスするステップ、および
反復子に少なくとも部分的に基づいて前記レコードにアクセスするステップ
のうちの少なくとも１つを実施するロジックをさらに含むことを特徴とする請求項１１に記載の装置。
【請求項１４】
装置によって実行される場合に、前記装置に、
データオブジェクトフレームワークインターフェースにアクセスして、内部データ構造にエンタープライズデータを記憶するデータオブジェクトを定義し、
前記データオブジェクトフレームワークインターフェースに少なくとも部分的に基づいて前記データオブジェクトについてのデータ型を指定し、
前記データオブジェクトに対してデータソースからデータを書き込む
ようにさせる命令を提供する電子的にアクセス可能な媒体を
備えることを特徴とする製品。
【請求項１５】
前記装置によって実行される場合に、前記装置に前記データ型を指定するようにさせる前記命令は、前記装置に、前記データ型が、
原子、
バリアント、
構造体、および
テーブル
のうちの少なくとも１つであることを指定するようにさせることを特徴とする請求項１４に記載の製品。
【請求項１６】
前記データ型は、１つまたは複数のフィールドを有する構造体であり、前記電子的にアクセス可能な媒体は、前記装置によって実行される場合に、前記装置に、
フィールド名に少なくとも部分的に基づいてフィールドにアクセスするステップ、
インデックスに少なくとも部分的に基づいて前記フィールドにアクセスするステップ、および
反復子に少なくとも部分的に基づいて前記フィールドにアクセスするステップ
のうちの少なくとも１つを実施するようにさせるさらなる命令を含むことを特徴とする請求項１５に記載の製品。
【請求項１７】
前記データ型は、１つまたは複数のレコードを有するテーブルであり、前記電子的にアクセス可能な媒体は、前記装置によって実行される場合に、前記装置に、
キーフィールドに少なくとも部分的に基づいてレコードにアクセスするステップ、
インデックスに少なくとも部分的に基づいて前記レコードにアクセスするステップ、および
反復子に少なくとも部分的に基づいて前記レコードにアクセスするステップ
のうちの少なくとも１つを実施するようにさせるさらなる命令を含むことを特徴とする請求項１５に記載の製品。
【請求項１８】
前記電子的にアクセス可能な媒体は、前記装置によって実行される場合に、前記装置に、
メタデータインターフェースにアクセスして、前記データオブジェクトに対応するメタデータを取得し、
前記メタデータインターフェースが提供するファンクションを使用して前記メタデータを取得する
ようにさせるさらなる命令を含むことを特徴とする請求項１４に記載の製品。
【請求項１９】
前記電子的にアクセス可能な媒体は、前記装置によって実行される場合に、前記装置に、
実行時に前記データオブジェクトフレームワークに関連するメタデータを動的に修正するようにさせるさらなる命令を含むことを特徴とする請求項１４に記載の製品。
【請求項２０】
前記装置によって実行される場合に、前記装置に、実行時に前記データオブジェクトフレームワークに関連するメタデータを動的に修正するようにさせる前記命令は、前記装置に、
データ型に関連するメタデータを修正するステップ、および
データ型の１つまたは複数のインスタンスに関連するメタデータを修正するステップ
のうちの少なくとも１つを実施するようにさせることを特徴とする請求項１９に記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般にデータ処理の分野に関し、より詳細にはエンタープライズデータオブジェクト（ｅｎｔｅｒｐｒｉｓｅ  ｄａｔａ  ｏｂｊｅｃｔ）のためのシステムおよび方法に関する。
【背景技術】
【０００２】
ＩＴ（ｉｎｆｏｒｍａｔｉｏｎ  ｔｅｃｈｎｏｌｏｇｙ情報技術）の複雑さは、長い間に増大し続けている。例えば、エンタープライズアプリケーション（ｅｎｔｅｒｐｒｉｓｅ  ａｐｐｌｉｃａｔｉｏｎ）は、進化しており、データソースは、より多様化したものになりつつある。さらに、ＩＴインフラストラクチャは、ますますパッケージ化されたエンタープライズソフトウェアスイート（ｅｎｔｅｒｐｒｉｓｅ  ｓｏｆｔｗａｒｅ  ｓｕｉｔｅ）、アプリケーション、およびレガシシステム（ｌｅｇａｃｙ  ｓｙｓｔｅｍ）の異質な組合せを含むようになっている。大企業においては、この異質性は、多くの場合に複数の買収および売却によってさらに複雑にされることもあり、これらの買収および売却はこれらの企業の変化から引き継がれた異なるスタンドアロンシステムを有するＩＴインフラストラクチャを創り出している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
企業がＩＴインフラストラクチャに対して寄せる要求も、長い間に増大し続けている。例えば、多数の企業は、インターネットなどのコンピュータネットワーク上で送付されるアプリケーションを介して、これらの企業の製品およびサービスに対するアクセスを提供する。しかし、各ビジネストランザクションは、一般的に異なるシステムによって提供されるいくつかの異なるサービスにアクセスすることを必要とする。例えば、注文をキャンセルするプロセスについて考察してみる。ビジネスの観点からは、注文をキャンセルするプロセスは、この顧客に対して確認状を送ること、その生産計画からこの注文を取り除くこと、この注文に割り付けられた材料を解除すること、送り状作成部門（ｉｎｖｏｉｃｉｎｇ  ｄｅｐａｒｔｍｅｎｔ）に通知することなどいくつかの機能間およびアプリケーション間のアクティビティを含んでいる。これらのアクティビティのそれぞれは、一般的に異なるシステムによって提供されるサービスにアクセスすることを含んでいる。
【０００４】
これらのサービスを提供するＩＴインフラストラクチャについての、複雑さの増大と、サービスについての増大する要求のこの組合せは、エンタープライズデータが、ますます複雑化するシステムによってさらに頻繁に使用されていることを示唆している。注文をキャンセルするプロセスは、例えば、多かれ少なかれ実質上同じエンタープライズデータを処理する複数のシステムを必要とすることもある。これらのシステムでは、それぞれこのエンタープライズデータを処理する異なるデータソースを有する可能性がある様々なアプリケーションを使用する。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、一般にエンタープライズデータオブジェクトのためのシステムおよび方法を対象としている。
【０００６】
エンタープライズデータオブジェクトは、ビジネスシステム内の技術レイヤおよび意味レイヤの広い範囲内で使用することができるデータのコンテナ（ｃｏｎｔａｉｎｅｒ）である。特に、エンタープライズデータオブジェクトは、複雑な構造化されたデータにアクセスし、それを操作するために使用することができるハイレベルインターフェースを提供する。一実施形態において、エンタープライズデータオブジェクトはまた、型記述、パターン、値セット（ｖａｌｕｅ  ｓｅｔ）、言語依存ラベルなどのメタデータにアクセスし、それを操作するハイレベルインターフェースも含んでいる。
【０００７】
本発明の実施形態は、添付図面のこれらの図中に実施例として、非限定的に示されている。同様な参照番号は、同様な要素を意味している。
【発明を実施するための最良の形態】
【０００８】
本発明の実施形態は、一般にエンタープライズデータオブジェクトのためのシステムおよび方法を対象としている。エンタープライズデータオブジェクトは、ビジネスシステム内の技術レイヤおよび意味レイヤの広い範囲内で使用することができるデータのコンテナである。特に、エンタープライズデータオブジェクトは、複雑な構造化されたデータにアクセスし、それを操作するために使用することができるハイレベルインターフェースを提供する。以下でさらに説明しているように、エンタープライズデータオブジェクトはまた、型記述、パターン、値セット、言語依存ラベルなどのメタデータにアクセスし、それを操作するハイレベルインターフェースも含むことができる。一実施形態においては、このメタデータは、実行時に動的に作成し修正することができる。動的に作成し修正するメタデータは、例えば、データ型全体および／またはデータ型の個々のインスタンスについてのメタデータを作成および／または修正することを含むことができる。
【０００９】
図１は、サービス指向アーキテクチャ１００の選択されたエレメントのブロック図である。用語「サービス指向アーキテクチャ」は、サービス（または他の機能）が記述言語を使用して定義されるアーキテクチャのことを意味する。これらのサービスは、ビジネスプロセスを実施するために呼び出すことができるインターフェースを有することができる。このインターフェースは、プラットフォームに独立にすることができ、規格化された通信プロトコルを使用するように設計することができる。
【００１０】
サービス指向アーキテクチャ１００の例示の実施形態は、サービスコンシューマ（ｓｅｒｖｉｃｅ  ｃｏｎｓｕｍｅｒ）１０２、エンタープライズサービス（ｅｎｔｅｒｐｒｉｓｅ  ｓｅｒｖｉｃｅ）１０４、およびエンタープライズシステム（ｅｎｔｅｒｐｒｉｓｅ  ｓｙｓｔｅｍ）１０６を含んでいる。サービスコンシューマ１０２は、サービス指向アーキテクチャ１００によって提供されるビジネスサービスを呼び出すインターフェース、アプリケーション、プロセスなどである。サービスコンシューマの実施例は、ユーザインターフェース１１０、アプリケーション１１２、インタラクティブフォーム（ｉｎｔｅｒａｃｔｉｖｅ  ｆｏｒｍ）１１４、およびビジネスツービジネスプロセス（ｂｕｓｉｎｅｓｓ  ｔｏ  ｂｕｓｉｎｅｓｓ  ｐｒｏｃｅｓｓ）１１６を含んでいる。
【００１１】
エンタープライズサービス１０４は、エンタープライズシステム１０６が提供する機能を抽出したもの（ａｂｓｔｒａｃｔｉｏｎ）である。すなわち、これらのエンタープライズサービスは、エンタープライズシステム１０６が提供するグラニュラーサービス（ｇｒａｎｕｌａｒ  ｓｅｒｖｉｃｅ）をビジネスレベルのエンタープライズサービスへと集約して、エンタープライズスケールのビジネスシナリオを自動化するためのビルディングブロックを提供する。サービスコンシューマ１０２は、インターフェース１２０〜１２８を呼び出して、エンタープライズサービス１０４にアクセスする。一実施形態において、エンタープライズサービス１０４は、少なくとも部分的にＳＡＰ  ＡＧが提供するＮｅｔＷｅａｖｅｒ（商標）プラットフォームに基づいている。
【００１２】
エンタープライズシステム１０６は、サービス指向アーキテクチャ１００についてのエンタープライズアプリケーションを提供する。エンタープライズシステム１０６の実施例は、給与支払簿１３０、財務（ｆｉｎａｎｃｉａｌ）１３２、顧客関係管理（ｃｕｓｔｏｍｅｒ  ｒｅｌａｔｉｏｎｓ  ｍａｎａｇｅｍｅｎｔ）１３４、サプライチェーン管理（ｓｕｐｐｌｙ  ｃｈａｉｎ  ｍａｎａｇｅｍｅｎｔ）１３６、および統合基幹業務システム（ｅｎｔｅｒｐｒｉｓｅ  ｒｅｓｏｕｒｃｅ  ｐｌａｎｎｉｎｇ）１３８を含んでいる。一実施形態においては、これらのエンタープライズシステムは、インターフェース１４０〜１４８を呼び出すことによってアクセスされる。
【００１３】
サービス指向アーキテクチャ１００は、エンタープライズデータオブジェクト１５０〜１５４を含んでいる。エンタープライズデータオブジェクト１５０〜１５４は、システム間で（例えば、サービスコンシューマ１０２とエンタープライズシステム１０６の間、および／またはエンタープライズシステム１０６内のこれらのアプリケーション間などで）移送することができるデータのコンテナである。一実施形態においては、エンタープライズデータオブジェクト１５０〜１５４は、コピーされることなく、サービス指向アーキテクチャ１００のレイヤ間にまたがって流れる。
【００１４】
エンタープライズデータオブジェクト１５０〜１５４は、ビジネスシステムの技術レイヤおよび意味レイヤの広い範囲内で使用するように設計されたデータのコンテナである。特に、エンタープライズデータオブジェクト１５０〜１５４は、ビジネスアプリケーション開発業者がデータにアクセスし、データを操作するために使用することができるハイレベルインターフェースを提供する。以下でさらに説明しているように、これらのエンタープライズデータオブジェクトインターフェースは、原子（ａｔｏｍｉｃ，原始とよばれることもあるデータ型の一種）、構造体（ｓｔｒｕｃｔｕｒｅ）、およびテーブルを含めて様々なデータ型を記述する。一実施形態において、これらのデータ型のデスクリプタ（ｄｅｓｃｒｉｐｔｏｒ）は、実行時に動的に作成し、機能を拡張することができる。一実施形態においては、これらの構造体のフィールドには、フィールド名、インデックス、および／または反復子（ｉｔｅｒａｔｏｒ）を介してアクセスすることができる。同様に、テーブルのレコードには、キーフィールド、インデックス、および／または反復子を介してアクセスすることができる。
【００１５】
一実施形態において、エンタープライズデータオブジェクトは、内部データ構造（例えば、内部データ構造１６０）を含んでいる。この内部データ構造は、システム間でデータを移送するためのメカニズムを提供する。一実施形態においては、この内部データ構造のサイズは、実行時にプログラムによって動的に決定される（もちろん、このサイズは、システムのメモリ容量または他のファクタによって制限されることもある）。この内部データ構造は、定義されたデータ型を有することができる。一実施形態においては、このデータ型は、単純データ型または複合データ型のどちらかにすることができる。単純データ型とは、１つの値を記述し、追加の構造体を含まないデータ型のことを意味する。表１は、本発明の一実施形態におけるエンタープライズデータオブジェクトがサポートする単純データ型のリストを示している。代替実施形態においては、エンタープライズデータオブジェクトは、さらに多くの単純データ型、さらに少ない単純データ型、および／または異なる単純データ型をサポートすることもできる。
【００１６】
【表１】
2006221614.tif 000003
【００１７】
複合データ型とは、他のデータ型に基づいたデータ型のことを意味する。表２は、本発明の一実施形態におけるエンタープライズデータオブジェクトがサポートする複合データ型のリストを示している。代替実施形態においては、エンタープライズデータオブジェクトは、さらに多くの複合データ型、さらに少ない複合データ型、および／または異なる複合データ型をサポートすることもできる。
【００１８】
【表２】
2006221614.tif 000004
【００１９】
一実施形態においては、サービス指向アーキテクチャ１００は、多層ネットワークの一部分とすることができる。この多層ネットワークは、「Ｊ２ＥＥ」（Ｊａｖａ（登録商標）２  Ｅｎｔｅｒｐｒｉｓｅ  ＥｄｉｔｉｏｎＪａｖａ（登録商標）２エンタープライズエディション）（商標）プラットフォーム、Ｍｉｃｒｏｓｏｆｔ  ．ＮＥＴプラットフォーム、ＩＢＭ社が開発したＷｅｂｓｐｈｅｒｅプラットフォーム、および／またはＳＡＰ  ＡＧが開発した「ＡＢＡＰ」（Ａｄｖａｎｃｅｄ  Ｂｕｓｉｎｅｓｓ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ高度ビジネスアプリケーションプログラミング）プラットフォームに基づいたアプリケーション技術を含めて、多層アーキテクチャの各レイヤにおける様々な異なるアプリケーション技術を使用して実施することができる。さらに、本発明の実施形態は、サービス指向アーキテクチャ１００だけに限定されるものではない。代替実施形態においては、エンタープライズデータオブジェクトは、広範なクライアントサーバアーキテクチャおよびピアツーピアアーキテクチャにおいて使用することもできる。
【００２０】
図２は、本発明の一実施形態によるエンタープライズデータオブジェクトフレームワーク２００の選択された態様を示すブロック図である。この例示の実施形態においては、エンタープライズデータオブジェクトフレームワーク２００は、Descriptorインターフェース２１０、EdoElementインターフェース２２０、EdoAtomicElementインターフェース２３０、EdoVariantインターフェース２４０、EdoStructureインターフェース２５０、およびEdoTableインターフェース２６０を含んでいる。以下でさらに説明しているように、インターフェース２１０〜２６０は、エンタープライズデータオブジェクトの作成および修正を可能にする。さらに、インターフェース２１０〜２６０は、これらのエンタープライズデータオブジェクトが含むデータの作成および修正も可能にする。代替実施形態においては、エンタープライズデータオブジェクトフレームワーク２００は、さらに多くのインターフェース、さらに少ないインターフェース、および／または異なるインターフェースを含むことができる。
【００２１】
図３は、IDescriptorインターフェース３００の選択された態様を示すブロック図である。一実施形態においては、IDescriptorインターフェース３００は、エンタープライズデータオブジェクトメタデータに対するアクセスを提供する。したがって、IDescriptorインターフェース３００は、このオブジェクトメタデータにアクセスする機能を提供することにより、エンタープライズデータオブジェクトの内観（ｉｎｔｒｏｓｐｅｃｔｉｏｎ）を可能にする。IDescriptorインターフェース３００の例示の実施形態は、以下のメソッド、すなわちString getName()３０２、IDataType getType()３０４、Meta getMeta()３０６、int size()３０８、IDescriptor３１０、getElement(int index)３１２、およびIterator iterator()３１４を含んでいる。代替実施形態においては、Descriptorインターフェース２１０は、さらに多くのメソッド、さらに少ないメソッド、および／または異なるメソッドを含むことができる。
【００２２】
メソッドString getName()３０２は、メタデータのエレメント名を戻す。例えば、このエンタープライズデータオブジェクトが１つまたは複数のフィールドを有する構造体を含む場合、String getName()３０２は、フィールド名を戻すことができる。メソッドIDataType getType()３０４は、メタデータのエレメントについての型を戻す。一実施形態においては、メソッドMeta getMeta()３０６は、メタデータのエレメントについてのメタフラグを戻す。この「メタフラグ」は、エレメントが、構造体エレメントか、テーブルエレメントか、バリアントエレメントか、それとも原子エレメントであるかを示すフラグを意味する。メソッドint size()３０８は、このエレメントが有する子の数を戻す。メソッドIterator iterator()３１４は、このエレメントの子の上の反復子を戻す。
【００２３】
メソッドIDescriptor３１０は、指定されたインデックスにおけるエレメントについてのデスクリプタを戻す。この「デスクリプタ」は、このエレメントのデータ型の記述を意味する。一実施形態においては、これらのデスクリプタは、実行時に動的に作成および／または機能拡張を行うことができる。メソッドgetElement(int index)３１２は、この指定されたインデックスにおけるこのエレメントについてのデスクリプタを戻す。
【００２４】
図４は、IEdoElementインターフェース４００の選択された態様を示すブロック図である。一実施形態においては、IEdoElementインターフェース４００は、すべての型のエンタープライズデータオブジェクトについての共通のインターフェースを提供する。IEdoElementインターフェース４００は、エンタープライズデータオブジェクトを用いて動作させるための基本的なメソッドを提供する。IEdoElementインターフェース４００の例示の実施形態は、以下のメソッド、すなわちIDescriptor getDescriptor()４０５、Meta getMeta()４１０、int size()４１５、EdoElement getElement(int index)４２０、Iterator iterator()４２５、void copyFrom(IEdoElement value)４３０、void copyCorrespondingFrom(IEdoElement value)４３５、void clear()４４０、boolean existsSlot(String name)４４５、void setInitial(boolean initial)４５０、void writeTo(IEdoWriteStream stream)４５５、およびvoid readFrom(IEdoReadStream stream)４６０を含んでいる。代替実施形態においては、IEdoElementインターフェース４００は、さらに多くのメソッド、さらに少ないメソッド、および／または異なるメソッドを含むこともできる。
【００２５】
一実施形態においては、以下のメソッドは、IDescriptorインターフェース３００中の同じ名前を有するメソッド、すなわちMeta getMeta()４１０、int size()４１５、EdoElement getElement(int index)４２０、Iterator iterator()４２５と実質的に同様である。メソッドIDescriptor getDescriptor()４０５は、エンタープライズデータオブジェクトエレメントについてのメタデータデスクリプタを戻す。メソッドvoid copyFrom(IEdoElement value)４３０は、異なるエレメントからこのエレメントに値をコピーする。一実施形態においては、これら２つのエレメントは、実質的に同じデスクリプタおよびメタフラグを有するはずである。これらのエレメントが実質的に同じデスクリプタをもたないこれらの場合には、メソッドvoid copyCorrespondingFrom(IEdoElement value)４３５を使用することができる。メソッドvoid clear()４４０は、このエレメントの内容をクリアする。
【００２６】
この用語「スロット」は、データまたはコードのどちらかを含むことができるオブジェクト中の予約された場所を意味する。一実施形態においては、IEdoElement４００は、エンタープライズデータオブジェクトについてのスロットを作成および／または操作する１つまたは複数のメソッドを含んでいる。例えば、この例示の実施形態は、指定された名前を有するスロットが終了するかどうかを決定するメソッドboolean existsSlot(String name)４４５を含んでいる。一実施形態においては、IEdoElement４００は、スロットを作成し、名前を付け、削除するメソッドを含んでいる。
【００２７】
一実施形態においては、エンタープライズデータオブジェクトエレメントは、ホロー状態（ｈｏｌｌｏｗ  ｓｔａｔｅ）になることができる。この用語「ホロー状態」は、表現されたデータの値が、このエンタープライズデータオブジェクトの内部データ構造にまだロードされていない状態を意味する。エンタープライズデータオブジェクトがホロー状態にある場合、次いでこのオブジェクト上で呼び出される任意のオペレーションが例外をもたらす。このエンタープライズデータオブジェクトの状態は、リスナが監視することができる。一実施形態においては、トップレベルエレメントしか、ホロー状態になることはできない。この用語「トップレベル」は、ネストされたエレメントのグループのうちの最も外側のエレメントを意味する。
【００２８】
IEdoElement４００インターフェースは、ホロー状態におけるエレメントを動作させるいくつかのメソッドを含んでいる。例えば、メソッドvoid setInitial(boolean initial)４５０は、これらのパラメータの（セットについての）真および（リセットについての）偽に少なくとも部分的に基づいてエレメントをホロー状態にセットまたはリセットする。さらに、IEdoElement４００インターフェースは、このエレメントがホロー状態にあるかどうかを決定するメソッド、および／またはこのエレメントの状態を監視するリスナを追加し削除するメソッドなど、ホロー処理についての他のメソッドを含むこともできる。
【００２９】
一実施形態においては、エンタープライズデータオブジェクトエレメントは、ストリームへの直列化、および／またはストリームからの非直列化を行うことができる。用語「マーシャリング（ｍａｒｓｈａｌｌｉｎｇ）およびアンマーシャリング（ｕｎ−ｍａｒｓｈａｌｌｉｎｇ）は、それぞれデータを直列化すること、および非直列化することを意味する。一実施形態においては、このデータのマーシャリングおよびアンマーシャリングは、このデータストリームフォーマットとは独立した方法で実施される。エンタープライズデータオブジェクトは、このストリーム全体をメモリに保持することなく、データをストリームに書き込み、データをストリームから読み取ることをサポートすることができる。一実施形態においては、このデータストリームフォーマットは、少なくとも部分的にＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ拡張マークアップ言語）に基づいている。かかる実施形態においては、ＳＡＸ（Ｓｉｍｐｌｅ  ＡＰＩ  ｆｏｒ  ＸＭＬＸＭＬ用単純ＡＰＩ）パーサを使用して、このストリームからこのデータをアンマーシャリングする。一実施形態においては、メソッドvoid writeTo(IEdoWriteStream stream)４５０およびvoid readFrom(IEdoReadStream stream)４５５は、それぞれストリームにデータを書き込み、ストリームからデータを読み取る。
【００３０】
図５は、IEdoAtomicElementインターフェース５００の選択された態様を示すブロック図である。一実施形態においては、IEdoAtomicElementインターフェース５００は、単純データ型を含むＥＤＯエレメントに対するインターフェースを提供する。このようにして、原子エレメントは、値を含んでおり、どのような子エレメント（または、単に、子）も有さないエレメントである。IEdoAtomicElementインターフェース５００の例示の実施形態は、以下のメソッド、すなわちObject getValue()５１０、void setValue(Object value)５２０、get<type>Value()５３０、およびset<typed>Value()５４０を含んでいる。代替実施形態においては、IEdoAtomicElementインターフェース５００は、さらに多くのメソッド、さらに少ないメソッド、および／または異なるメソッドを含むこともできる。
【００３１】
メソッドObject getValue()５１０およびvoid setValue(Object value)５２０は、それぞれこのエレメントの値を獲得し設定するメソッドである。この値のデータ型は、少なくとも部分的にこのエレメントの宣言されたデータ型に基づいている。一実施形態においては、IEdoAtomicElementインターフェース５００はまた、この値に対する型付けされたアクセスも含んでいる。この用語「型付けされたアクセス」は、この要求された変換が可能である場合に、get（獲得）メソッドを用いて、この値のデータ型を変換することを意味する。メソッドget<type>Value()５３０の実施例は、int getIntValue()、double getDoubleValue()、String getStringValue()、Data getDateValue()、Time getTimeValue()、TimeStamp getTimeStampValue()、BigDecimal getDecimalValue()などを含んでいる。メソッドset<typed>Value()５４０は、この要求された変換が可能である場合に、set（セット）オペレーション中にこの値のデータ型を変換する。set<typed>Value()５４０の実施例は、void setIntValue(int value)、void setDoubleValue(double value)、void setStringValue(String value)、void setDateValue(Date value)、void setTimeValue(Time Value)、void setTimeStampValue(TimeStamp Value)、void setDecimalValue(BigDecimal value)などを含んでいる。
【００３２】
図６は、IEdoVariantインターフェース６００の選択された態様を示すブロック図である。「バリアント（ｖａｒｉａｎｔ）」は、多くの異なるデータ型をサポートすることができるが、これらのうちの１つしか一時にアクティブになることができないエレメントを意味する。一実施形態においては、バリアントエレメントは、子を有していない。IEdoVariantインターフェース６００の例示の実施形態は、以下のメソッド、すなわちString getActiveName()６１０およびIEdoStructure getValue()６２０を含んでいる。メソッドString getActiveName()６１０は、このアクティブな構造体の名前を戻す。メソッドIEdoStructure getValue()６２０は、このアクティブな構造体を戻す。構造体がアクティブでない場合には、次いでこのメソッドはヌル（ｎｕｌｌ）を戻す。代替実施形態においては、IEdoVariantインターフェース６００は、さらに多くのメソッド、さらに少ないメソッド、および／または異なるメソッドを含むこともできる。
【００３３】
図７は、IEdoStructureインターフェース７００の選択された態様を示すブロック図である。「構造体（ｓｔｒｕｃｔｕｒｅ）」は、１つまたは複数のフィールドを有するデータ型を意味する。一実施形態においては、これらのフィールドは、フィールドデスクリプタ中に与えられるフィールド名および／またはインデックスによってアドレス指定することができる。IEdoStructureインターフェース７００の例示の実施形態は、以下のメソッド、すなわちObject getValue(String fieldName)７０５、Object getValue(int fieldIndex)７１０、Object getValue(String fieldName, boolean createIfNull)７１５、Object getValue(int fieldIndex, boolean createIfNull)７２０、void setValue(String name, Object value)７２５、void setValue(int index, Object value)７３０、get<type>Value()７３５、set<type>Value()７４０、void clear(String fieldName)７４５、およびvoid clear(int fieldIndex)７５０を含んでいる。代替実施形態においては、IEdoStructureインターフェース７００は、さらに多くのメソッド、さらに少ないメソッド、および／または異なるメソッドを含むこともできる。
【００３４】
メソッド７０５〜７２０は、フィールドの値に対する包括的なアクセスを実現する。戻された値のデータ型は、このエレメントの宣言されたデータ型に少なくとも部分的に依存する。例えば、メソッドObject getValue(String fieldName)７０５は、ストリングのデータ型を有する値を戻す。同様に、メソッドObject getValue(int fieledIndex)７１０は、整数のデータ型を有する値を戻す。
【００３５】
メソッド７２５および７３０は、このエレメントの値を変更する包括的な方法を実現する。メソッド７２５および７３０が提供する値のデータ型は、このエレメントの宣言されたデータ型と互換性があるはずである。メソッドvoid setValue(String name, Object value)７２５は、フィールド名を使用してこのフィールドをアドレス指定する。同様に、メソッドvoid setValue(int index, Object Value)７３０は、デスクリプタによって指定されるフィールドのインデックスを使用してこのフィールドをアドレス指定する。
【００３６】
一実施形態においては、メソッドget<type>Value()７３５は、フィールドの値に対する型付けされたアクセスを実現する。この用語「型付けされたアクセス」は、この変換が可能である場合に、この値のデータ型をそれにアクセスする際に変換することを意味する。メソッドget<type>Value()７３５の実施例は、int getIntValue(String name)、double getDoubleValue(String name)、String getStringValue(String name)、Date getDateValue(String name)、Time getTimeValue(String name)、TimeStamp getTimeStampValue(String name)、BigDecimal getDecimalValue(String name)、IEdoStructure getStructureValue(String name)、IEdoTable getTableValue(String name)、IEdoVariant getVariantValue(String name)、IEdoStructure getStructureValue(String name, boolean createIfNull)、IEdoTable getTableValue(String name, boolean createIfNull)、IEdoVariant getVariantValue(String name, boolean createIfNull)、int getIntValue(int fieldIndex)、double getDoubleValue(int fieldIndex)、String getStringValue(int fieldIndex)、Date getDateValue(int fieldIndex)、Time getTimeValue(int fieldIndex)、TimeStamp getTimeStampValue(int fieldIndex)、BigDecimal getDecimalValue(int fieldIndex)、IEdoStructure getStructureValue(int fieldIndex)、IEdoTable getTableValue(int fieldIndex)、IEdoVariant getVariantValue(int fieldIndex)、IEdoStructure getStructureValue(int fieldIndex, boolean createIfNull)、IEdoTable getTableValue(int fieldIndex, boolean createIfNull)、およびIEdoVariant getVariantValue(int fieldIndex, boolean createIfNull)を含んでいる。
【００３７】
一実施形態においては、メソッドset<type>Value()７４０は、フィールドの値を変更するための型付けされたメソッドである。「型付けされたメソッド」は、この指定された変換が可能である場合に、この値のデータ型を変換するメソッドを意味する。一実施形態においては、メソッドset<type>Value()７４０は、複合データ型に対して適用可能ではない。メソッドset<type>Value()７４０の実施例は、void setIntValue(String name, int value)、void setDoubleValue(String name, double value)、void setStringValue(String name, String value)、void setDateValue(String name, Date Value)、void setTimeValue(String name, Time Value)、void setTimeStampValue(String name, TimeStamp Value)、void setDecimalValue(String name, BigDecimal value)、void setIntValue(int index, int value)、void setDoubleValue(int index, double value)、void setStringValue(int index, String value)、void setDateValue(int index, Date value)、void setTimeValue(int index, Time Value)、void setTimeStampValue(int index, TimeStamp Value)、およびvoid setDecimalValue(int index, BigDecimal value)を含んでいる。
【００３８】
図８は、IEdoTableインターフェース８００の選択された態様を示すブロック図である。「テーブル（ｔａｂｌｅ）」は、構造体の順序付けされたリストを意味する。一実施形態においては、テーブルのレコードは、フィールドデスクリプタ中に与えられるキーおよび／またはインデックスによってアクセスすることができる。以下でさらに説明しているように、IEdoTableインターフェース８００は、テーブル、およびこのテーブルのレコードにアクセスし、それを操作する様々なメソッドを含んでいる。代替実施形態においては、IEdoTableインターフェース８００は、図８に示すこれらのメソッドに比べてさらに多くのメソッド、さらに少ないメソッド、および／または異なるメソッドを含むこともできる。
【００３９】
メソッドIEdoStructure createKey()８０２は、テーブルについてのキーとして使用することができる構造体を作成する。一実施形態においては、このメソッドは、このテーブルの行にアクセスしながらキーとして使用することができるキーを戻す。メソッドIEdoStructure getRow８０４〜８０８は、このテーブルの行を検索する。行の検索は、行のインデックス（例えば、メソッド８０４）および／またはこの行のキー（例えば、メソッド８０６）に基づいたものにすることができる。メソッドint getRowIndex８１０〜８１２は、このテーブル中の行のインデックスを提供する。一実施形態においては、キーを使用して、この行を指定する。
【００４０】
メソッドgetValue８１４〜８２４は、このテーブル内の行のフィールドの値に対する包括的なアクセスを実現する。この戻される値のデータ型は、このエレメントの宣言されたデータ型に依存する。これらのフィールドは、（例えば、デスクリプタ中で指定されるような）フィールド名および／またはフィールドインデックスに少なくとも部分的に基づいてアドレス指定することができる。（例えば、メソッド８１８中の）パラメータ「パス」を使用して、深く構造化されたテーブル中のフィールドを指定することができる。（例えば、メソッド８２０中の）この「ｃｒｅａｔｅＩｆＮｕｌｌ」パラメータは、例えばフィールドが値をもたない場合に、値を作成すべきかどうかを指定する。一実施形態においては、メソッドgetValue８１４〜８２４は、このフィールドの現在の値を戻す。この戻されるオブジェクトのデータ型は、このエレメントの宣言されたデータ型に依存する。
【００４１】
メソッドsetValue８２６〜８３０は、行中のフィールドの値を変更するための包括的な方法を実現する。このオブジェクトのデータ型は、このエレメントの宣言されたデータ型と互換性があることが予想される。一実施形態においては、setValue８２６〜８３０は、複合データ型のフィールドについては適用可能ではない。
【００４２】
メソッドget<Type>Value()８３２は、フィールドの値に対する型付けされたアクセスを実現する。変換が可能な場合に、この値のデータ型は、この指定されたデータ型に変換される。get<Type>Value()８３２の実施例は、int getIntValue(int rowIndex, String name)、double getDoubleValue(int rowIndex, String name)、String getStringValue(int rowIndex, String name)、Date getDateValue(int rowIndex, String name)、Time getTimeValue(int rowIndex, String name)、TimeStamp getTimeStampValue(int rowIndex, String name)、BigDecimal getDecimalValue(int rowIndex, String name)、IEdoStructure getStructureValue(int rowIndex, String name)、IEdoTable getTableValue(int rowIndex, String name)、IEdoVariant getVariantValue(int rowIndex, String name)、IEdoStructure getStructureValue(int rowIndex, String name, boolean createIfNull)、IEdoTable getTableValue(int rowIndex, String name, boolean createIfNull)、IEdoVariant getVariantValue(int rowIndex, String name, boolean createIfNull)、int getIntValue(int rowIndex, int fieldIndex)、double getDoubleValue(int rowIndex, int fieldIndex)、String getStringValue(int rowIndex, int fieldIndex)、Date getDateValue(int rowIndex, int fieldIndex)、Time getTimeValue(int rowIndex, int fieldIndex)、TimeStamp getTimeStampValue(int rowIndex, int fieldIndex)、BigDecimal getDecimalValue(int rowIndex, int fieldIndex)、IEdoStructure getStructureValue(int rowIndex, int fieldIndex)、IEdoTable getTableValue(int rowIndex, int fieldIndex)、IEdoVariant getVariantValue(int rowIndex, int fieldIndex)、IEdoStructure getStructureValue(int rowIndex, int fieldIndex, boolean createIfNull)、IEdoTable getTableValue(int rowIndex, int fieldIndex, boolean createIfNull)、IEdoVariant getVariantValue(int rowIndex, int fieldIndex, boolean createIfNull)、int getIntValue(int[] path)、double getDoubleValue(int[] path)、String getStringValue(int[] path)、Date getDateValue(int[] path)、Time getTimeValue(int[] path)、TimeStamp getTimeStampValue(int[] path)、BigDecimal getDecimalValue(int[] path)、IEdoStructure getStructureValue(int[] path)、IEdoTable getTableValue(int[] path)、IEdoVariant getVariantValue(int[] path)、IEdoStructure getStructureValue(int[] path, boolean createIfNull)、IEdoTable getTableValue(int[] path, boolean createIfNull)、およびIEdoVariant getVariantValue(int[] path, boolean createIfNull)を含んでいる。
【００４３】
メソッドset<Type>Value()８３４は、フィールドの値を変更するための型付けされた方法を実現する。変換が可能な場合に、この値のデータ型は、この指定されたデータ型に変換される。set<Type>Value()８３４の実施例は、void setIntValue(int rowIndex, String name, int value)、void setDoubleValue(int rowIndex, String name, double value)、void setStringValue(int rowIndex, String name, String value)、void setDateValue(int rowIndex, String name, Date value)、void setTimeValue(int rowIndex, String name, Time Value)、void setTimeStampValue(int rowIndex, String name, TimeStamp Value)、void setDecimalValue(int rowIndex, String name, BigDecimal value)、void setIntValue(int rowIndex, int fieldIndex, int value)、void setDoubleValue(int rowIndex, int fieldIndex, double value)、void setStringValue(int rowIndex, int fieldIndex, String value)、void setDateValue(int rowIndex, int fieldIndex, Date value)、void setTimeValue(int rowIndex, int fieldIndex, Time Value)、void setTimeStampValue(int rowIndex, int fieldIndex, TimeStamp Value)、void setDecimalValue(int rowIndex, int fieldIndex, BigDecimal value)、void setIntValue(int[] path, int value)、void setDoubleValue(int[] path, double value)、void setStringValue(int[] path, String value)、void setDateValue(int[] path, Date value)、void setTimeValue(int[] path, Time Value)、void setTimeStampValue(int[] path, TimeStamp Value)、およびvoid setDecimalValue(int[] path, BigDecimal value)を含んでいる。
【００４４】
メソッドclear８３６は、フィールドの値をクリアする。一実施形態においては、このフィールドは、フィールド名および／またはフィールドインデックスによって識別することができる。また、パスパラメータを使用して、深く構造化されたテーブル中のフィールドを指定することができる。
【００４５】
「範囲（ｒａｎｇｅ）」は、１組のレコードを表す。一実施形態においては、getRangeメソッド８３８は、指定されたレコードについての範囲を提供する。これらのレコードは、キーおよび／またはインデックスによって指定することができる。メソッドcopy８４０は、別のテーブルからレコードの範囲をコピーして、指定されたテーブル中のレコードをアップデートする。メソッドIterator８４２は、この範囲のエレメント上での反復子を戻す。
【００４６】
メソッドappend８４４は、１つまたは複数のレコードをこのテーブルに追加する。同様に、メソッドinsert８４６は、このテーブルの指定されたインデックスの所に１つまたは複数のレコードを追加する。メソッドremove８４８は、指定されたキーおよび／またはインデックス、ならびに除去すべきレコードを表す範囲に少なくとも部分的に基づいてこのテーブルから１つまたは複数のレコードを除去する。
【００４７】
一実施形態においては、テーブルに対して行われる変更を監視することができる。これらの監視された変更のレコードは、記憶し、その後に検索することができる。メソッドchange monitoring８５０は、変更監視を操作（例えば、オン、オフ、リセットなど）するメソッドを示している。
【００４８】
次に図９を参照すると、本発明の実施形態に関連する個々のメソッドが、フローチャートを参照して、コンピュータのソフトウェアおよびハードウェアの観点から説明されている。コンピューティングデバイス（例えば、アプリケーションサーバ）で実施すべきメソッドは、状態機械、またはコンピュータ実行可能命令から構成されたコンピュータプログラムを構成することができる。コンピュータ実行可能命令は、コンピュータプログラミング言語で書くこともでき、またファームウェアロジックで実施することもできる。承認されている規格に準拠したプログラミング言語で書かれる場合には、かかる命令は、様々なハードウェアプラットフォーム上で、様々なオペレーティングシステムに対するインターフェースについて実行することができる。さらに、本発明の実施形態は、特定のどのようなプログラミング言語に関連しても説明してはいない。様々なプログラミング言語を使用して、本発明の実施形態を本明細書中で説明しているように実施することができることが理解されよう。さらに、１つまたは他の形態（例えば、プログラム、プロシージャ、プロセス、アプリケーションなど）でアクションを起こし、または結果を引き起こすものとしてソフトウェアのことを話すことが当技術分野においては一般的である。かかる表現は、コンピューティングデバイスによるこのソフトウェアの実行が、このデバイスに、アクションを実施させ、または結果を引き起こさせることを述べる単に手短な方法にすぎない。
【００４９】
図９は、本発明の一実施形態による、エンタープライズデータオブジェクトにアクセスし、それを操作するための方法のある種の態様を示す流れ図である。プロセスブロック９１０を参照すると、データオブジェクトフレームワーク（例えば、図２に示すフレームワーク２００）がアクセスされる。一実施形態においては、このフレームワークの１つまたは複数のインターフェースの機能を呼び出して、データオブジェクト（例えば、エンタープライズデータオブジェクト）を定義する。このデータオブジェクトは、データを含む内部データ構造（例えば、図１に示す内部データ構造１６０）を含んでいる。
【００５０】
プロセスブロック９２０を参照すると、このデータオブジェクトについてのデータ型が指定される。一実施形態においては、このデータオブジェクトについての「データ型」は、この内部データ構造中の値のデータ型によって定義される。一実施形態においては、このデータオブジェクトフレームワークの１つまたは複数のインターフェースは、このデータ型を指定する機能を提供する。このデータ型は、単純でも複雑でもどちらでもよい。一実施形態においては、サポートされる複雑なデータ型は、バリアント、構造体、およびテーブルを含んでいる。
【００５１】
プロセスブロック９３０を参照すると、データが、データソースからこのデータオブジェクトに書き込まれる。一実施形態においては、このデータオブジェクトフレームワークの１つまたは複数のインターフェースは、データソースからのデータストリームをマーシャリングし、アンマーシャリングする機能を提供する。このデータソースは、例えば、リレーショナルデータベース、ＸＭＬデータソース、オブジェクト指向データソース、エンタープライズ情報システム、他のデータオブジェクトなどとすることができる。このプロセスは９４０において反復することができる。
【００５２】
本発明の実施形態のエレメントは、機械実行可能命令を記憶するための機械読取り可能媒体として提供することもできる。この機械読取り可能媒体は、それだけには限定されないが、フラッシュメモリ、光ディスク、ＣＤ−ＲＯＭ（ｃｏｍｐａｃｔ  ｄｉｓｋｓ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙコンパクトディスク読取り専用メモリ）、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ／ｖｉｄｅｏ  ｄｉｓｋデジタル多用途／ビデオディスク）ＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙランダムアクセスメモリ）、ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ消去可能プログラマブル読取り専用メモリ）、ＥＥＰＲＯＭ（electrically erasable programmable read-only memory電気的消去可能プログラマブル読取り専用メモリ）、磁気カードまたは光カード、伝搬媒体、あるいは電子命令を記憶するのに適した、他のタイプの機械読取り可能媒体を含むことができる。例えば、本発明の実施形態は、リモートコンピュータ（例えば、サーバ）から要求するコンピュータ（例えば、クライアント）に対して、通信リンク（例えば、モデムまたはネットワーク接続）を介して、搬送波または他の伝搬媒体の形で実施されるデータ信号として転送することができるコンピュータプログラムとしてダウンロードすることができる。
【００５３】
この明細書全体を通した「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」または「一実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」に対する言及は、この実施形態に関連して説明している特定の機能、構造、または特徴が、本発明の少なくとも１つの実施形態に含まれることを意味している。したがって、この明細書の様々な部分における「一実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」または「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」、あるいは「代替実施形態（ａｎ  ａｌｔｅｒｎａｔｉｖｅ  ｅｍｂｏｄｉｍｅｎｔ）」に対する複数回の言及は、必ずしもすべてがこの同じ実施形態について言及しているとは限らないことが強調されており、またこれについて理解されたい。さらに、この特定の特徴、構造、または特性は、本発明の１つまたは複数の実施形態において適切に組み合わせることができる。
【００５４】
同様に、本発明の実施形態の前述の説明においては、開示を簡素化し、様々な発明の態様のうちの１つまたは複数の態様についての理解を助ける目的で、様々な特徴が、時に１つの実施形態、図、またはその説明中に一緒にグループ化されていることがあることを理解されたい。しかし、開示についてのこの方法は、この請求している主題が、各請求項中で明白に列挙しているよりも多数の特徴を必要とする意図を示すものとは解釈すべきではない。もっと正確に言えば、添付の特許請求の範囲が示すように、発明の態様は、１つの前述の開示された実施形態のすべての特徴よりも少ない中に存在している。したがって、この詳細な説明に添付される特許請求の範囲は、各請求項が本発明の別の実施形態としてそれ自体に基づいており、これによりこの詳細な説明中に明白に組み込まれるものである。
【図面の簡単な説明】
【００５５】
【図１】サービス指向アーキテクチャの選択されたエレメントのブロック図である。
【図２】本発明の一実施形態によるエンタープライズデータオブジェクトフレームワークの選択された態様を示すブロック図である。
【図３】Descriptorインターフェースの選択された態様を示すブロック図である。
【図４】IEdoElementインターフェースの選択された態様を示すブロック図である。
【図５】IEdoAtomicElementインターフェースの選択された態様を示すブロック図である。
【図６】IEdoVariantインターフェースの選択された態様を示すブロック図である。
【図７】IEdoStructureインターフェースの選択された態様を示すブロック図である。
【図８】IEdoTableインターフェースの選択された態様を示すブロック図である。
【図９】本発明の一実施形態による、エンタープライズデータオブジェクトにアクセスし、それを操作するための方法のある種の態様を示す流れ図である。
【符号の説明】
【００５６】
１０４  エンタープライズサービス
１１０  ユーザインターフェース
１１２  アプリケーション
１１４  インタラクティブフォーム
１１６  ＢツーＢプロセス
１３０  給与支払簿
１３２  財務（ＦＩ）
１３４  顧客関係管理（ＣＲＭ）
１３６  サプライチェーン管理（ＳＣＭ）
１３８  統合基幹業務システム（ＥＲＰ）
【図１】
2006221614.tif 000005
【図２】
2006221614.tif 000006
【図３】
2006221614.tif 000007
【図４】
2006221614.tif 000008
【図５】
2006221614.tif 000009
【図６】
2006221614.tif 000010
【図７】
2006221614.tif 000011
【図８】
2006221614.tif 000012
【図９】
2006221614.tif 000013
【外国語明細書】
2006221614000001.pdf