JP2006216027A - 同じアイテムを表すデータ構造間で生データを転送するメカニズム - Google Patents

同じアイテムを表すデータ構造間で生データを転送するメカニズム Download PDF

Info

Publication number
JP2006216027A
JP2006216027A JP2006010230A JP2006010230A JP2006216027A JP 2006216027 A JP2006216027 A JP 2006216027A JP 2006010230 A JP2006010230 A JP 2006010230A JP 2006010230 A JP2006010230 A JP 2006010230A JP 2006216027 A JP2006216027 A JP 2006216027A
Authority
JP
Japan
Prior art keywords
data structure
field
data
source
target
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.)
Granted
Application number
JP2006010230A
Other languages
English (en)
Other versions
JP2006216027A5 (ja
JP4890869B2 (ja
Inventor
Donald F Box
エフ.ボックス ドナルド
Douglas M Purdy
エム.パーディ ダグラス
Gopala Krishna R Kakivaya
クリシュナ アール.カキヴァヤ ゴパラ
Natasha H Jethanandani
エイチ.ジェサナンダニ ナターシャ
Sowmy K Srinivasan
ケイ.スリニヴァサン ソウミー
Stefan H Pharies
エイチ.ファリース ステファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006216027A publication Critical patent/JP2006216027A/ja
Publication of JP2006216027A5 publication Critical patent/JP2006216027A5/ja
Application granted granted Critical
Publication of JP4890869B2 publication Critical patent/JP4890869B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Abstract

【課題】ソースデータ構造から同一アイテムを表すターゲットデータ構造へ生データを転送する。
【解決手段】データ転送中に、ソースデータ構造によって提供されるフィールドに対応しないフィールドがターゲットデータ構造に存在する場合には、転送メカニズムは、ソースデータ構造がそのフィールドを提供することが必須であるかどうかを判断する。それが必須である場合には、転送は失敗する。それが必須でない場合には、転送は続行される。ターゲットデータ構造のフィールドに対応しないフィールドがソースデータ構造のフィールドにある場合には、転送メカニズムは、ターゲットデータ構造がそのフィールドを有することが必須であるかどうかを判断する。それが必須である場合には、転送は失敗する。それが必須でない場合には、その対応するデータを、ターゲットデータ構造の未知データ用の残余フィールドに提供することができる。
【選択図】図6

Description

本発明は、コンピュータ技術に関し、より詳細には、あるデータ構造から同じアイテムを表す別のデータ構造に生データを転送するメカニズムに関する。
コンピュータ技術はわれわれの仕事および娯楽のあり方を変えた。現在、コンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、タブレットPC、携帯情報端末(PDA)、家電製品等の多様な形態をとっている。コンピュータシステムの機能はソフトウェアによって支配される。ソフトウェアは、実行時にコンピュータシステムにその機能を実行させる一連のコンピュータ実行可能命令である。
相互作用するオブジェクトと呼ばれる論理的単位を用いてソフトウェアの作成を組織化するためのメカニズムとして、オブジェクト指向プログラミングが開発されている。オブジェクトは、そのオブジェクトのプロパティ(属性)を表す1つまたは複数のデータフィールドと、そのオブジェクトの挙動に関係するコンピュータ実行可能コードを含む0個以上のメソッド(操作命令)(またはメソッドへのポインタ)を含む。オブジェクトは、他のオブジェクトによって公開されているメソッドを呼び出すことによって相互作用することができる。このようなオブジェクトは、本明細書では、「データオブジェクト」あるいは「データ構造」(data structures)とも呼ばれる。
メモリ内にある時、データ構造は、関連するデータフィールドおよびメソッドのコレクション(収集体)である。しかし、あるデータ構造から、同じアイテム(項目)を表す別のデータ構造に生データを転送することが必要となる場合がある。これは、ソースデータ構造には存在するがターゲットデータ構造には存在しないデータフィールドに対して生データがある場合や、ターゲットデータ構造には存在するがソースデータ構造には設けられていないデータフィールドに対して生データがある場合には問題となることがある。その場合、転送は通常失敗する。
転送したいフィールドのすべてが両方のデータ構造に含まれるとは限らない場合でも、一方のデータ構造から他方のデータ構造に生データを転送するようなメカニズムがあれば都合が良いことである。
従来技術における上記の課題は本発明の原理によって解決される。本発明は、ソース(源の)データ構造からターゲット(対象の)データ構造に生データを転送することに関する。データ構造はそれぞれ同じコアアイテム(例えば個人)を表し得るが、そのデータ構造の異なるバージョンを表してもよい。
データ転送中に、ソースデータ構造によって提供されるフィールドに対応しないフィールドがターゲットデータ構造に存在する場合には、転送メカニズムは、ソースデータ構造がそのフィールドを提供することが必須のものであるかどうかを判断する。そのフィールドに対応するデータコントラクト(data contract)が、例えば、それが必須であるかどうかを指定する「任意性(optionality)」(または随意性)フィールドを指定できる。ソースデータ構造が当該フィールドに対応するフィールドを提供することが必須である場合、転送は失敗する。他方、ソースデータ構造が当該フィールドを提供することが必須でない場合、転送はデータなしで続行される。
また、ターゲットデータ構造のフィールドに対応しないソースデータ構造のフィールドがある場合には、転送メカニズムは、ターゲットデータ構造がそのフィールドを有することが必須であるかどうかを判断する。当該データフィールド自体が、対応フィールドをターゲットデータ構造が有しなければならないかどうかを指定する「要理解(must understand)」フィールドを指定してもよい。ターゲットデータ構造がこのような対応フィールドを有することが必須である場合には、転送は失敗する。他方、ターゲットデータ構造がこのような対応フィールドを有することが必須でない場合には、そのデータを、ターゲットデータ構造の未知データ用の残余フィールドに未知データとして提供することができる。
したがって、各フィールドについて「任意性」フィールドおよび「要理解」フィールドを設定することにより、データ構造の異なるバージョン間で転送を必要に応じて遂行することができ、あるいはバージョン互換性を適宜無効にすることができる。本発明のさらなる特徴および利点は、以下の説明に記載され、一部はその説明から明らかとなるであろうし、あるいは本発明の実施によって知られるであろう。本発明の特徴および利点は、特に添付の特許請求の範囲に記載の手段および組合せによって実現され達成され得る。本発明のこれらおよびその他の特徴は、以下の説明および添付の特許請求の範囲から十分に明らかとなるであろうし、あるいは以下に記載される本発明の実施によって知られるであろう。
本発明の上記およびその他の利点および特徴を実現し得る態様を説明するため、添付図面に示す本発明の具体的実施形態を参照して、上記で概説した本発明のより詳細な説明を行う。これらの図面が本発明の典型的実施形態を示すだけであり、したがってその範囲を限定するものとみなしてはならないとの了解の下に、本発明について、添付図面を用いてさらに具体的かつ詳細に記述し説明する。
本発明の原理は、ソースデータ構造からアイテムを表すターゲットデータ構造への生データの転送に関する。データ構造はそれぞれ同じコアアイテムを表してもよいが、そのデータ構造の異なるバージョンを表してもよい。データ転送中に、ソースデータ構造によって提供されるフィールドに対応しないフィールドがターゲットデータ構造に存在する場合、転送メカニズムは、ソースデータ構造がそのフィールドを提供することが必須であるかどうかを判断する。必須である場合、転送は失敗する。必須でない場合、転送は続行される。ターゲットデータ構造のフィールドに対応しないソースデータ構造のフィールドがある場合、転送メカニズムは、ターゲットデータ構造がそのフィールドを有することが必須であるかどうかを判断する。必須である場合、転送は失敗する。必須でない場合、対応するデータを、ターゲットデータ構造の未知データ用の残余フィールドに提供することができる。
図面において、同一参照番号は同一要素を指す。図面には、好適なコンピュータ環境において本発明が実施される状態が例示される。以下の説明は、例示された本発明の実施形態に基づくが、本明細書に明示的に記載されない代替実施形態に関して本発明を限定するものと解釈してはならない。
以下の説明では、特に断りのない限り、本発明は1つまたは複数のコンピュータによって実行されるアクト(行為)、およびオペレーションの記号的表現に関して説明される。したがって、理解されるように、このようなアクトおよびオペレーション(これらはコンピュータ実行可能である、と称されることがある)は、構造化された形態でデータを表現する電気信号に対する、コンピュータの処理ユニットによる操作を含む。この操作は、データを変換し、あるいはデータをコンピュータのメモリシステム内のさまざまな位置に保持する。コンピュータは、当業者に十分に理解されるやり方でコンピュータのオペレーションを再設定し、あるいは変更する。データが保持されるデータ構造は、データのフォーマットによって規定される特定の性質を有するメモリの物理的記憶場所である。ただし、本発明は以上の状況において説明されるが、これは限定的に解釈されてはならない。当業者には理解されるように、以下で説明するアクトおよびオペレーションのいくつかがハードウェアとして実施されてもよい。図1は、これらの装置で使用可能な例示的なコンピュータアーキテクチャの概略図である。
説明の目的上、記述されるアーキテクチャは好適な環境の単なる一例であり、本発明の用途や機能の範囲に関するいかなる限定を示唆することも意図していない。また、コンピュータシステムは、図1に例示されるコンポーネントのいずれかまたはその組合せに関するいかなる依存関係あるいは要件を有するものとも解釈してはならない。
本発明は、数多くの他の汎用または専用のコンピュータ用または通信用の環境あるいは構成とともに動作可能である。本発明とともに用いるのに好適な周知のコンピュータシステム、環境、および構成の例として、以下のものに限定されないが、携帯電話、ポケットコンピュータ、パーソナルコンピュータ、サーバ、マルチプロセッサシステム、マイクロプロセッサ方式のシステム、ミニコンピュータ、メインフレームコンピュータ、および上記のシステムまたは装置の任意のものを含む分散コンピュータ環境がある。
その最も基本的な構成において、コンピュータシステム100は一般に、少なくとも1つの処理ユニット102およびメモリ104を含む。メモリ104は揮発性(例えばRAM)でも、不揮発性(例えばROM、フラッシュメモリ等)でも、あるいはこれら2種の何らかの組合せでもよい。この最も基本的な構成は、図1において破線106で示されている。
記憶媒体装置は、付加的な特徴および機能を有してもよい。例えば付加的なストレージ(リムーバブル(取り外し可能)および非リムーバブル(取り外し不能))を含んでもよい。これには、以下のものに限定されないが、PCMCIAカード、磁気および光ディスク、ならびに磁気テープがある。このような付加的ストレージ(記憶装置)は、図1において、リムーバブルストレージ108および非リムーバブルストレージ110で示されている。コンピュータ記憶媒体には、揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体があり、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータのような情報の記憶のための任意の方法あるいは技術で実施される。メモリ104、リムーバブルストレージ108、および非リムーバブルストレージ110はすべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体としては、以下のものに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ等のメモリ技術、CD−ROM、ディジタル多用途ディスク等の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ等の磁気記憶装置、および、所望の情報を格納するために使用可能でありコンピュータシステムからアクセス可能な任意の他の媒体がある。
本明細書で用いる場合、「モジュール」あるいは「コンポーネント」という用語は、コンピュータシステム上で実行されるソフトウェアオブジェクトまたはルーチンを意味し得る。本明細書に記載されるさまざまなコンポーネント、モジュール、エンジン、およびサービスは、コンピュータシステム上で実行されるオブジェクトまたはプロセスとして(例えば別個のスレッドとして)実施可能である。本明細書に記載されるシステムおよび方法は好ましくはソフトウェアとして実施されるが、ソフトウェアおよびハードウェアによる実施態様、またはハードウェアによる実施態様も可能であり想定される。
また、コンピュータシステム100は、ホストがネットワーク120を通じて他のシステムおよび装置と通信することを可能にする通信チャネル112も含み得る。通信チャネル112は通信媒体の例である。通信媒体は一般に、搬送波またはその他のトランスポートメカニズムのような変調データ信号としてコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具現化し、任意の情報伝達媒体を含む。例として、限定ではないが、通信媒体には、有線ネットワークや直接線接続(direct-wired connections)のような有線媒体、音響、電波、赤外線、およびその他のワイヤレス媒体のような無線媒体がある。本明細書で用いられる場合、コンピュータ可読媒体という用語は、記憶媒体および通信媒体の両方を含む。
また、コンピュータシステム100は、キーボード、マウス、ペン、音声入力コンポーネント、タッチ入力装置等のような入力コンポーネント114も有し得る。出力コンポーネント116としては、スクリーンディスプレイ、スピーカ、プリンタ等と、それらを駆動するためのレンダリングモジュール(しばしば「アダプタ」と呼ばれる)がある。コンピュータシステム100は電源118を有する。これらすべてのコンポーネントは当技術分野で周知であり、ここで詳細に説明するには及ばない。
図2は、ソースデータ構造201の1つまたは複数のフィールドが転送メカニズム203を用いてターゲットデータ構造202に転送される環境200を例示している。ソースデータ構造201およびターゲットデータ構造202は、同一アイテムを表すことができるが、それらをさまざまな方法や様式で表してもよい。例えば、データ構造はそれぞれ特定の個人、組織、航空券予約、あるいはその他の、関連するデータを有し得る任意の想定されるオブジェクト(対象)またはエンティティ(実体)を表すことができる。ソースデータ構造201およびターゲットデータ構造202は、いかなる媒体(無線通信のような無形の媒体であってもよい)上に具現化されてもよく、さらに別のデータ構造のシリアライズされた表現であってもよいが、必ずしもそうである必要はない。
データ構造のいくつかのデータフィールドが同一であってもよい。例えば、図2に例示するように、ソースデータ構造201はデータフィールド201Aを有するが、これはターゲットデータ構造202のデータフィールド202Aと同じデータを含む。一例として、そのデータ構造がそれぞれ、特定の個人に関連するデータを表す場合を考える。ソースデータ構造201のデータフィールド201Aがその個人の名前を表すのに対して、データフィールド202Aは、転送メカニズム203が書き込みを行なう名前フィールドである。
他方、ソースデータ構造201は、ターゲットデータ構造202に存在しないフィールド(例えばフィールド201B)を有してもよい。例えば、ターゲットデータ構造202にはフィールド202Bがない。一具体例では、フィールド201Bは、関連する個人が存命中か否かを表すブール値(Boolean value)であるのに対して、ターゲットデータ構造202はそのようなフィールドを有しない。
以下でさらに説明する一例示的実施態様において、特定のエンティティ(例えば個人)を表す際にどのようなフィールドがデータ構造に含まれるべきかを記述するために、「データコントラクト」(data contract;データ規約)が用いられる。ソースデータ構造201およびターゲットデータ構造202は、「個人」データコントラクトの相異なるバージョンに準拠してもよい。ここで、ソースデータ構造201が準拠するバージョンは、当該個人が存命中かどうかを表すフィールドがデータ構造に含まれるべきことを指定する。これに対して、ターゲットデータ構造が準拠する個人データコントラクトのバージョンは、当該個人が存命中かどうかを表すフィールドがデータ構造に含まれるべきことを指定しない。特定のエンティティに対する異なるデータフィールドの必要性が時間とともに変化するのに応じて、データコントラクトの異なるバージョンが作成されることがあり得る。
このようなデータコントラクトは、図2、図3、図4、図5Aおよび図5Bに関して本発明の一般的原理を説明する際には、一般的用語で記述される。というのは、本発明の原理は、最広義において、データ構造がデータコントラクトに準拠するかどうかにかかわらず、ソースデータ構造からターゲットデータ構造へのデータの一般的転送に関するからである。しかし、その説明を完全にするため、データコントラクトの概念を、図6〜図10においてさらに詳細に説明する。
上記のように、データ構造がデータコントラクトの異なるバージョンに準拠するために、ソースデータ構造201はターゲットデータ構造202とは異なるフィールドを含むことがある。また、データコントラクトのバージョンが異なることにより、ターゲットデータ構造202がソースデータ構造201とは異なるフィールドを含むこともあり得る。例えば、ターゲットデータ構造はデータフィールド202Cを含むように示されているが、ソースデータ構造は対応するデータフィールド201Cを含んでいない。個人データコントラクトの例では、データフィールド202Cは社会保障番号を表してもよい。これは、ターゲットデータ構造202が準拠する個人データコントラクトのバージョンには表されているが、ソースデータ構造201が準拠する個人データコントラクトのバージョンには表されていない。
ソースデータ構造201およびターゲットデータ構造202は、データ構造の間で共通である1つのフィールド(ソースデータ構造201のフィールド201A、およびターゲットデータ構造202のフィールド202A)(以下「共通データフィールド」という)を含むとして示されている。また、ソースデータ構造201は、ターゲットデータ構造202に含まれないデータフィールド(例えばデータフィールド201B)(以下「ソース限定データフィールド」と称する)を含むように示されている。最後に、ターゲットデータ構造202は、ソースデータ構造201に含まれないデータフィールド(例えばデータフィールド202C)(以下「ターゲット限定データフィールド」と称する)を含むように示されている。
ただし、ソースデータ構造201は、適宜(例えば、データ構造201および202のそれぞれが準拠するデータコントラクトバージョンの相違に従って)、任意個数(0個以上)の共通データフィールド、および任意個数(0個以上)のソース限定データフィールドを含み得る。また、ターゲットデータ構造202は、適宜(例えばコントラクトバージョンの相違に従って)、任意個数(0個以上)の共通データフィールド、および任意個数(0個以上)のターゲット限定データフィールドを含み得る。縦の省略記号201Dおよび202Dは単に、ソースデータ構造201およびターゲットデータ構造202がそれぞれ適宜、さらに他のデータフィールドを含み得ることを表すために図示されているものである。また、ターゲットデータ構造202は、残余フィールド(residual field)202Eを含むように示されている。この残余フィールド202Eの目的については、図5Aを参照してさらに詳細に説明する。
図4は、本発明の原理による、ソースデータ構造からターゲットデータ構造にデータを転送するコンピュータ実施メッソード(操作命令)400のフローチャートを示している。メッソード400の一環として、ソースデータ構造およびターゲットデータ構造にアクセスする(アクト401)。本明細書において、「データ構造」という用語は、当該データ構造が具現化される媒体にかかわらず、1つまたは複数のフィールドを含む任意の構造化されたデータ(シリアライズされたデータでもよい)を含むものとして広義に定義される。例えば、コンピュータシステムはネットワークを通じてソースデータ構造にアクセスできる。この場合、メッソード400はターゲットコンピュータシステム上で実行される。例えば、ターゲットコンピュータシステムが図1のコンピュータシステム100である場合に、ターゲットコンピュータシステムはネットワーク120を通じてソースデータ構造にアクセスできる。しかし、そのコンピュータシステムは、例えば揮発性、または不揮発性のメモリのような他のデータ記憶媒体のソースデータ構造にもアクセス可能である。図1の場合に、ターゲットデータ構造は、システムメモリ104および/またはストレージ(記憶装置)108もしくは110においてアクセス可能としてもよい。
共通データフィールドがある場合、コンピュータシステムは単に、ソースフィールドから対応するターゲットフィールドにデータをコピーするだけである。もちろん、そのコピーは、符号化フォーマットの何らかの変換を伴う場合がある。また、コンピュータシステムは、ターゲットデータ構造には含まれていないソースデータ構造内のソース限定データフィールドを識別する(アクト402A)。このようなソース限定フィールドがある場合には、コンピュータシステムは、図5Aのメッソード500A(アクト403Aおよび図5A)を実行する。また、そのコンピュータシステムは、ソースデータ構造には含まれていないターゲットデータ構造内のターゲット限定データフィールドを識別する(アクト402B)。このようなターゲット限定フィールドがある場合には、コンピュータシステムは、図5Bのメッソード500B(アクト403Bおよび図5B)を実行する。
図5Aのメッソード500Aを参照すると、識別されたソース限定データフィールドがある場合に、コンピュータシステムは、転送が成功するために、そのソース限定データフィールドに対応するフィールドがターゲットデータ構造内にあることが必須であるかどうかを判断する(判断ブロック501A)。それが必須である場合には(判断ブロック501Aの「必須である」)、コンピュータシステムは、転送に失敗する(アクト502A)。それが必須でない場合には(判断ブロック501Aの「必須でない」)、コンピュータシステムはソース限定データフィールドから残余フィールドにデータを供給する(アクト503A)。残余フィールド(例えば図2の残余フィールド202E)は、ソースデータ構造からのデータのうち、ターゲットデータ構造によって理解されなかったすべてのデータを保持する論理的コンテナ(入れ物)である。残余フィールド内のデータは、各データの抽出元のフィールドタイプを後で識別できるようにタグづけされてもよい。残余フィールド内のデータは、データ構造がさらに別のターゲットデータ構造に再送される場合には再転送されることにより、データコントラクトの前のバージョンからのデータを保持することも可能である。
図3は、データコントラクトの一端として使用可能なデータフィールドテンプレート300を例示している。これは、データフィールドタイプ301(例えば、個人データコントラクトの場合には名前)と、転送が成功するためにソースデータ構造がターゲットデータ構造に含まれる特定のフィールドを有しなければならないかどうかを定義する任意性(随意性、選択性)フィールド302と、転送が成功するためにターゲットデータ構造がソースデータ構造に含まれる特定のフィールドを有しなければならないかどうかを定義する要理解フィールド303とを定義する。テンプレート300によって定義されるのと同じデータタイプのデータフィールドを含むソースデータ構造が、送信あるいは格納される場合には、データタイプ301に関連する生データ(raw data)が、そのテンプレートによって定義される対応する要理解の指示303とともに送信あるいは格納される。したがって、ソース限定データフィールドが必須であるかどうかは、ソース限定データフィールド自身に関連する要理解フィールドから知ることができる。
図5Bのメッソード500Bを参照すると、識別されたターゲット限定データフィールドがある場合には、コンピュータシステムは、転送が成功するために、ソースデータ構造がターゲット限定データフィールドに対応するフィールドを提供する(supply)ことが必須であるかどうかを判断する(判断ブロック501B)。それが必須である場合には(判断ブロック501Bの「必須である」)、コンピュータシステムは、転送に失敗する(アクト502B)。それが必須でない場合には(判断ブロック501Bの「必須でない」)、コンピュータシステムは、転送を続行する(アクト503B)。例えば、コンピュータシステムが次のフィールドを評価(検討)し、ソースおよびターゲットのフィールドがすべて評価された場合には、全転送が正しく完了する。
ターゲット限定データフィールドが必須であるかどうかは、ターゲット限定データフィールド自身に関連するメタデータから理解し得る。例えば、ターゲット限定データフィールドが、図3のデータフィールド300について例示したように構造化されているとする。ターゲット限定データフィールド(またはターゲット限定データフィールドに関連する構造(例えばデータコントラクト))は、任意性フィールド302を含み得る。任意性フィールド302は、ソースデータ構造が、ある関連するフィールドを提供しなければならないかどうかについてのブール表現とすることができる。判断ブロック501Bにおける判断は、任意性フィールド302に基づいてなされ得る。
本発明の基本原理を説明したので、次に、図6〜図10に関して、本発明の具体的実施形態を説明する。図6〜図10では、データコントラクトを用いて、シリアライゼーションおよびデシリアライゼーションの際にデータ構造の形式を定義する。
図6は、シリアライゼーションメカニズムを用いたシリアライゼーションのプロセス(処理過程)の概略図である。シリアライゼーションメカニズム600は、シリアライゼーションエンジン601およびフォーマッタ602を含む。シリアライゼーションエンジン601およびフォーマッタ602は、同一ルーチン内に統合されても、別個のルーチンによって実施されてもよく、いずれでも本発明の原理に影響を及ぼさない。シリアライゼーションエンジン601およびフォーマッタ602は、図1のコンピュータシステム100の環境内で実行されるコンポーネントであってもよい。しかし、本発明の原理は、いかなる特定のハードウェア環境に対しても独立であり、それには限定されない。図6に示した残りの構成は図7に関して説明する。図7は、本発明の原理によるシリアライズのメッソードのフローチャートを示している。
本実施形態において、データオブジェクトは、抽象データ(abstract data)を包囲する構造体をシリアライズするのではなく、データオブジェクトから抽出された抽象データのみをシリアライズすることによって、シリアライズされる。したがって、シリアライズされたデータにアクセスするエンティティは、データの抽出元のデータオブジェクトの構造を理解する必要がない。また、シリアライゼーションは、データオブジェクトの形式に関する、おそらくは機密性のある情報を開示しない。
図7を参照する。まず、シリアライゼーションの対象となるデータオブジェクトにアクセスする(アクト701)。例えば、図6のシリアライゼーションエンジン601がデータオブジェクト631にアクセスし得る。データオブジェクト631は任意のデータオブジェクトタイプでよい。説明の目的上、データオブジェクト631は、データフィールド631A〜631Cを含むものとして例示されているが、他のものがあってもよく、それらは縦の省略記号631Dで表されている。
次に、データオブジェクトが「データコントラクト」に関連するかどうかを判断する(アクト702)。本明細書および特許請求の範囲において、「データコントラクト」は、シリアライズされるべきデータフィールドに対応する1つまたは複数のデータフィールドタイプの識別情報として定義される。
例えば、シリアライゼーションエンジン601は、任意個数のデータコントラクトを含み得るデータコントラクト611のコレクションにアクセスできる。図示されているように、データコントラクト611はデータコントラクト611A〜611Dを含むが、他のものがあってもよく、それらは省略記号611Eで表されている。データコントラクトは、特定の論理エンティティタイプに対応してもよい。例えば、データコントラクト611Aは、個人データタイプに対応してもよい。ただし、対応するデータコントラクトを有し得るデータオブジェクトのタイプに制限はない。
図6は、データコントラクト611Aを拡大して、いくつかのデータフィールドタイプ621を含む様子を示している。各データフィールドタイプは、データフィールドタイプ識別情報622と、当該データタイプに関係する1つまたは複数の他の指示子(designator)623を含み得る。例えば、データコントラクト611Aは、個人データオブジェクト全般に対応すると想定する。例えば、データフィールドタイプ621Aは名前データタイプ、データフィールドタイプ621Bは年齢データタイプ、データフィールドタイプ621Cは性別データタイプ、データフィールドタイプ621Dは住所データタイプ、等とすることができる。図示されている指示子は、前述の「要理解(must understand)」に対する「MU」と、「任意性(optionality)」に対するOを含む。それら指示子には、ターゲットによって理解されないデータを残余フィールド(例えば図2の残余フィールド202E)に入れるべきかどうかを示す「RT」指示子を含んでもよい。
図7に戻って、次に、データオブジェクトが、データコントラクトに規定されているデータフィールドタイプに対応するデータフィールドを有するかどうかを判断する(判断ブロック703)。例えば、図6のシリアライゼーションエンジン601がデータコントラクト611Aを、アクセスしたデータオブジェクト631に関連するものと識別したと想定する。その場合には、シリアライゼーションエンジン601は、データフィールドタイプ621Aを評価(検討)して、そのデータフィールドタイプ621Aに対応するデータオブジェクト631の関連データフィールドがデータオブジェクト631のデータフィールド631A〜631Dのいずれかのうちにあるかどうかを判断する。例えば、データフィールドタイプ621Aが名前データタイプであると想定する。その場合には、シリアライゼーションエンジン601は、データオブジェクト631のすべてのデータフィールドを評価して、「名前」フィールドがあるかどうかを判断する。
データオブジェクトが、データフィールドタイプに対応するデータフィールドを有していると判断された場合には(判断ブロック703のYes)、その対応するデータをデータオブジェクトから抽出する(アクト704)。例えば、データエクストラクタコンポーネント641が、データオブジェクトからデータフィールドタイプ(例えば名前データタイプ)に対応する適切なデータフィールド(例えば特定の1つまたは複数の名前)を抽出できる。この抽出プロセスの一環として、抽出した各データフィールドごとに、関連する要理解フィールドも抽出される。
データコントラクトに指定されたデータフィールドタイプが他に存在しない場合(判断ブロック705のNo)、抽出されたデータフィールド(およびそれらの関連する要理解フィールド)があればそれをシリアライズする(アクト706)。別法として、データフィールドは、抽出した直後にシリアライズしてもよい。例えば、シリアライゼーション(アクト706)は、すべてのデータフィールドを抽出する(判断ブロック705のNo)まで待機するのではなく、抽出(アクト704)の直後に行われてもよい。抽出したデータは図6の抽象データ(abstract data)642で表されている。このデータは、データオブジェクトとは独立であって、データオブジェクト全体ではなく、抽出したデータのみを含む。次に、フォーマッタ602が、どのシリアライゼーションフォーマットにシリアライズすべきかを判断し、コンバータ612のライブラリから、そのシリアライゼーションフォーマットに対応する妥当なコンバータを選択する。例として、コンバータ612のライブラリは、対応するコンバータ612A、612B、612C、612Dを含むように図示されているが、他のものがあってもよく、それらは省略記号612Eで表されている。シリアライゼーションフォーマットの例としては、バイナリ(2値)、XML(eXtensible Markup Language;拡張マークアップ言語)が挙げられるが、従来のものかどうか、あるいはまだ存在していないかどうかを問わず、他のシリアライゼーションフォーマットであってもよい。次に、フォーマッタ602は、その適切なコンバータコンポーネント(例えばコンバータコンポーネント612A)を用いて、抽象データ642をその適切なシリアライゼーションフォーマットにシリアライズする。
図7に戻って、データコントラクト内に評価すべきデータフィールドタイプがまだ他にもある場合には(判断ブロック705のYes)、フローは判断ブロック703に戻り、データコントラクト内の次のデータフィールドタイプについて、データオブジェクト内にそのデータフィールドタイプに対応するデータフィールドがあるかどうかを判断し(アクト703)、プロセスは繰り返される。
データコントラクト内にあるデータフィールドタイプに対応するデータフィールドがデータオブジェクト内にない場合には(判断ブロック703のNo)、いつでも、そのデータフィールドタイプは必須であるか、それとも任意であるかを判断する(判断ブロック707)。この判断は、データコントラクト内の対応するデータフィールドタイプ内の指示子623を参照することによって行うことができる。
データフィールドタイプが任意である場合(判断ブロック707のYes)、フローは判断ブロック705に戻り、そこで、データコントラクト内に評価すべき他のデータフィールドタイプがなければ、シリアライゼーションを実行し(アクト706)、評価すべきデータフィールドタイプが他にもあれば、次のデータフィールドタイプを評価する(判断ブロック703)。
他方、データフィールドタイプが任意でなく、送信側から見て必須である場合(判断ブロック707のNo)、データオブジェクトに対応する補助データ構造において、関連するデータフィールドが存在するかどうかを検索することができる(アクト708)。例えば、図6のシリアライゼーションエンジン601は、データオブジェクト631に関連する補助データ構造644において、データコントラクト内の現在のデータフィールドタイプに対応するデータフィールドが存在するかどうかを検索できる。このようなデータフィールドが補助データ構造内に見つかった場合(判断ブロック709のYes)、そのデータフィールドを抽出し(アクト704)、抽象データのコレクションに追加する。このようなデータフィールドが補助データ構造内に見つからない場合には(判断ブロック709のNo)、シリアライゼーションエンジン601は、シリアライゼーションが失敗したことを指示する(アクト710)。もちろん、シリアライゼーションメカニズムにおいて、データフィールドが常に補助データ構造内に見つかることが保証されている場合には、アクト710のシリアライゼーションエラーは決して生じないこともある。このような補助データ構造の一例は、図2の残余フィールド202Eである。送信されるべきオブジェクトは、以前のデータ転送試行中にそのオブジェクトに受け入れるべきデータの認識に失敗したことがある場合には、残余フィールド202E内の未知データを含んでいてもよい。別法として、シリアライゼーションプロセスは、すべてのデータフィールドを、それらの任意性ステータスにかかわらずそのままシリアライズし、転送が失敗するかどうかの形式的評価を受信側に委ねることもできる。
オプションとして、データフィールドタイプが任意であると判断される場合(判断ブロック707で任意の場合)にも、補助データ構造644を検索してもよい。その場合、対応するデータフィールドが補助データ構造に見つからない場合には、フローはそのまま判断ブロック705に進み、データコントラクト内に評価すべきデータフィールドタイプが他にもあるかどうかを判断する。
図7の破線のボックス711は、データコントラクトから評価すべき各データタイプごとの評価プロセスを表す。このプロセスは、対応するデータフィールドがない必須データフィールドタイプに遭遇するまで(判断ブロック709のNo)、またはすべてのデータフィールドタイプを評価し終えるまで(判断ブロック705のNo)、繰り返すことができる。
このように、メッソード700は、データオブジェクトからデータコントラクトに対応する抽象データを抽出するように作動する。抽象データの性質はデータコントラクトによって定義される。また、メッソード700は、データオブジェクトフォーマットとは独立にこのような抽象データをシリアライズするように作動する。メッソード700は、多数のデータオブジェクトについて、異なるデータコントラクトがそれらの他のデータオブジェクトに関連しているかどうかにかかわらず、また、使用されるシリアライゼーションフォーマットにかかわらず、繰り返すことができる。このような抽象データは、ある与えられたフィールドが、転送が成功するために、ターゲットによって理解されなければならないかどうかに関する情報も含み得る。このような抽象データは、図2、図3、図4、図5Aおよび図5Bに関して上記で説明したソースデータ構造の一例である。
デシリアライゼーションの説明に進む前に、データオブジェクトの具体例を説明するとともに、データコントラクトがそのデータオブジェクトとどのように関連しているか、および対応するデータフィールドがデータオブジェクト内でどのように識別され得るかを具体的な適応に沿って記述する。下記は例示的データオブジェクトのC#ソースコードである。明確にするため行番号を付加してある。
1. namespace SomeOtherNamespace {
2. [DataContract(Namespace="Example", Name="Person")]
3. public class AnotherPersonThatSomeOneElseCreated {
4. [DataMember("_name")]
5. public string FullNameOfThisPerson;
6. }
7. }
データオブジェクトに関連するデータコントラクトは、そのデータコントラクトの名前空間(ネームスペース)と名前の組合せによって識別され得る。第2行は、データコントラクトを識別するために必要なすべての情報を含むメタデータを表している。具体的には、データコントラクトの名前空間は「Example」である。データコントラクトの名前は「Person」である。こうしてデータコントラクトが識別される。
データオブジェクトは、クラス「AnotherPersonThatSomeOneElseCreated」(第3行参照)のデータオブジェクトであり、ただ1つのデータフィールドを含む(第5行参照)。データフィールドは、「FullNameOfThisPerson」という名前の文字列(string)である。しかし、その前の行(第4行)は、この文字列データフィールドが、データコントラクトを評価する目的のために、タイプ「_name」とみなされるべきであることを示している。したがって、データフィールドタイプ「string _name」が評価される時、文字列FullNameOfThisPersonがそのデータフィールドタイプに対応すると解釈できる。そして、その文字列を、シリアライズされるべき抽象データとして抽出することができる。
下記は、もう1つの例示的データオブジェクトを示す。
1. namespace Example {
2. [DataContract]
3. class Person {
4. [DataMember]
5. private string _name;
6. }
7. }
この例では、データオブジェクト名前空間名とデータコントラクトの名前空間名が「Example」で同一である。したがって、第2行でデータコントラクト名前空間をさらに指示する必要がない。また、データコントラクトの名前とデータオブジェクトの名前が「Person」で同一である。したがって、第2行でデータコントラクト名をさらに指示する必要がない。最後に、データオブジェクトおよびデータフィールドタイプにおいて指定されるデータフィールドの名前が「string _name」で同一である。したがって、第4行でデータフィールドタイプをさらに指示する必要がない。
図8は、本発明の原理によるデシリアライゼーションメカニズムを用いたデシリアライゼーションのプロセスの概略図である。図8のデシリアライゼーションメカニズム800は、図6のシリアライゼーションメカニズム600と類似している。また、デシリアライゼーションメカニズム800はデシリアライゼーションエンジン801を含み、これは図6のシリアライゼーションエンジン601と類似したものであってもよい。フォーマッタ802は、図6のフォーマッタ602と同一でもよい。フォーマッタ802もまたコンバータライブラリ612にアクセスでき、一方、デシリアライゼーションエンジン801もまたデータコントラクト611にアクセスできる。図8の残りの部分については図9に関して説明する。図9は、本発明の原理によるデシリアライズメッソード900のフローチャートを示している。
まず、デシリアライゼーションメカニズム800(これは図2の転送メカニズム203の一例である)が、シリアライゼーションフォーマットを有するシリアライズされたデータ構造を受信する(アクト901)。例えば、フォーマッタ802が、シリアライズされたデータ843を受信し、このデータは特定のシリアライゼーションフォーマットを有する。
デシリアライゼーションメカニズム800は、シリアライズされたデータ構造に関連するデータコントラクトを識別する(アクト902)。この識別は、シリアライズされたドキュメントに関連するメタデータを評価することによって実行できる。この識別は、ルール(規定)に基づくものでもよい。例えば、ルールは、特定の送信者から受信され特定のドキュメント名を有するシリアライズされたドキュメントが、特定のデータコントラクトに対応することを指定できる。こうしたルールは、管理者によって設定されても、ソフトウェア開発者によってハードコードされても、あるいは他の何らかの方法で設定されてもよい。
さらに、デシリアライゼーションメカニズムは、シリアライズされたデータ構造から、データコントラクトによって規定されている1つまたは複数のデータフィールドタイプに属する1つまたは複数のデータフィールドを復元する(アクト903)。これを行うには、フォーマッタ802が、シリアライズされたデータ843のシリアライゼーションフォーマットに対応する適切なコンバータ612を選択するのでもよい。こうしてフォーマッタ802は抽象データ842を復元する。
データコントラクトに規定されているデータフィールドタイプに対応する、それぞれの抽出されたデータフィールドについて、デシリアライゼーションエンジンは、そのデータフィールドをデータオブジェクトに投入する(populate)ことができるかどうかを判断する(判断ブロック904)。これは、データポピュレータ841で判断できる。そのデータフィールドを対応するデータオブジェクトに入れることができる場合には(判断ブロック904のYes)、データポピュレータ841は、このデータフィールドを、データオブジェクトに入れるべきデータアイテムのコレクションに追加する(アクト905)。別法として、直ちにそのデータフィールドをデータオブジェクトに入れてもよい。データオブジェクトに入れるべきデータフィールドが他に存在しない場合には(判断ブロック906のNo)、データオブジェクトに投入する(アクト907)。そうでない場合(判断ブロック906のYes)、次の復元されたデータフィールドを評価し(判断ブロック904)、プロセスは繰り返される。
復元されたデータフィールドをデータオブジェクトに入れることができないと判断された場合には(判断ブロック904のNo)いつでも、そのデータフィールドが必須であるか、それとも任意であるかを判断する(判断ブロック908)。これは、対応するデータコントラクト内の対応するデータフィールドタイプを調べることで判断できる。「要理解」フラグ「MU」がセットされている場合には、データフィールドタイプはデータオブジェクトによって理解されなければならず、そのデータフィールドは必須であると判断される。要理解フィールドがセットされていない場合には、そのデータフィールドタイプは受信側で任意である。
そのデータフィールドが任意である場合(判断ブロック908の「任意」)、そのデータフィールドを、データオブジェクトではなく、補助データ構造(例えば図2の残余フィールド202E)に入れる。例えば、データポピュレータ841がそのデータフィールドを補助データ構造844に供給することができる。一実施形態では、アクト909は、ラウンドトリップ(往復切符)指示子(RT)がデータコントラクトの対応するデータフィールドタイプにセットされている場合にのみ実行される。いずれの場合でも、フローは次に判断ブロック906に進み、投入すべきデータフィールドが他にもあるかどうかを判断する(判断ブロック906)。他方、そのデータフィールドが必須である場合には(判断ブロック908の「必須」)、デシリアライゼーションが失敗したことを指示する(アクト910)。
破線のボックス911内に含まれるこのプロセスは、評価すべきデータフィールドがなくなるまで(判断ブロック906のNo)、またはデシリアライゼーションが失敗するまで(アクト910)、すべての復元されたデータフィールドについて繰り返すことができる。また、破線のボックス911内のプロセスは、データオブジェクトに対応するデータフィールドが取得されないようなデータフィールドタイプについても繰り返すことができる。ただしその場合にはフローの性質が以下で説明するように若干変わる。すなわち、データフィールドが存在しないので、データフィールドはデータオブジェクトに入れなくてよい(判断ブロック904のNo)。データフィールドタイプが任意である場合(判断ブロック908の「任意」)、フローは直接判断ブロック906に進み、評価すべきデータフィールドが他にも取得されているかどうか、あるいは取得されたデータフィールドに対応しないようなデータフィールドタイプが他にもあるかどうかを判断する。データフィールドタイプが必須である場合(判断ブロック908の「必須」)、デシリアライゼーションは失敗する(アクト910)。
メッソード900は、シリアライズされたドキュメントのフォーマットにかかわらず、またシリアライズされたドキュメントにどのデータコントラクトが関連しているかにかかわらず、受信した任意のシリアライズされたドキュメントについて繰り返すことができる。
このように、本発明の原理は、データオブジェクト全体をシリアライズするのではなく、抽象データをデータオブジェクトから抽出してシリアライズするシリアライゼーションメカニズムを提供する。同様に、デシリアライゼーションメカニズムは、データオブジェクト全体をデシリアライズするのではなく、抽象データを復元し、その抽象データをデータオブジェクトに入れる。したがって、シリアライゼーションおよびデシリアライゼーションのメカニズムは、メモリ内で処理されるデータオブジェクトタイプの性質を公開することを必要とせずに、多数のシリアライゼーションフォーマットおよびデータオブジェクトタイプに適合する。
図10は、本発明の原理によるサービスの機能を表示するメッソードのフローチャートを示している。このプロセスは、上述したシリアライゼーションおよびデシリアライゼーションの前に実行できる。メッソード1000は、サービスの機能の表示要求を受け取った場合に実行できるが、必ずしもそうである必要はない。
まず、サービスオブジェクトを評価することにより、サービスオブジェクトによって提供される1つまたは複数のメソッドを識別する(アクト1001)。このサービスオブジェクトは、例えばウェブサービス全体であってもよい。次に、メソッド(操作命令)のパラメータを評価することにより、どのパラメータがそれに関連するデータコントラクトを有するかを判断する(アクト1002)。次に、各データコントラクトについて、データコントラクトをパラメータのスキーマ化記述に変換する(アクト1003)。例えば、シリアライゼーションメカニズム600は、関連するデータコントラクトに基づいて各パラメータについてXMLスキーマ記述(XSD)を生成するように構成されていてもよい。次に、サービスは、メソッドのスキーマ化記述(例えばウェブサービス記述言語(WSDL)の形式で)を、受け入れたパラメータの関連するスキーマ化記述(例えば、各パラメータに対するXSDドキュメントの形式で)とともに提供することができる。
本発明は、その精神あるいは本質的特性から逸脱することなく他の具体的形態で実施されてもよい。記載した実施形態は、すべての点で、単なる例示とみなすべきであり、限定的とみなすべきではない。したがって、本発明の範囲は、上記の説明によってではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味および均等の範囲内に入るすべての変更は本発明の範囲内に包含されるものとする。
本発明の特徴を実施し得る好適なコンピュータシステムを示す図である。 本発明の原理による転送メカニズムを用いたソースデータ構造からターゲットデータ構造への生データの転送を示す図である。 データフィールドタイプの識別情報、任意性フィールド、および「要理解」フィールドを含むデータフィールドテンプレートの概略図である。 本発明の原理によるソースデータ構造からターゲットデータ構造に生データを転送するメッソードのフローチャートである。 関連するターゲットフィールドが要求されるかどうかに応じてソースフィールドを処理するメッソードのフローチャートである。 関連するソースフィールドが要求されるかどうかに応じてターゲットフィールドを処理するメッソードのフローチャートである。 本発明の原理によるシリアライゼーションメカニズムを用いたシリアライゼーションのプロセスの概略図である。 本発明の原理によるシリアライズメッソードのフローチャートである。 本発明の原理によるデシリアライゼーションメカニズムを用いたデシリアライゼーションのプロセスの概略図である。 本発明の原理によるデシリアライズメッソードのフローチャートである。 本発明の原理によるサービスの機能を表示するメッソードのフローチャートである。
符号の説明
102 処理ユニット
104 システムメモリ
108 リムーバブルストレージ
110 非リムーバブルストレージ
112 通信チャネル
114 入力コンポーネント
116 出力コンポーネント
118 電源
120 ネットワーク
201 ソースデータ構造
202 ターゲットデータ構造
202E 残余
203 転送メカニズム
300 データフィールドテンプレート
301 データタイプ
302 任意性
303 要理解
600 シリアライゼーションメカニズム
601 シリアライゼーションエンジン
602 フォーマッタ
611 データコントラクト
612 コンバータ
621 フィールドタイプ
631 データオブジェクト
641 データエクストラクタ
642 抽象データ
643 シリアライズされたデータ
644 補助構造
800 デシリアライゼーションメカニズム
801 デシリアライゼーションエンジン
802 フォーマッタ
831 データオブジェクト
841 データポピュレータ
842 抽象データ
843 シリアライズされたデータ
844 補助構造

Claims (20)

  1. ソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法において、
    前記ターゲットデータ構造に対応する所与のフィールドについて、該所与のフィールドが前記ソースデータ構造内に関連するフィールドを有していないと判断し、それに応じて以下のアクト、すなわち、
    転送が成功するために前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須であるかどうかを判断するアクト、
    前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須である場合には、転送に失敗するアクト、および
    前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須でない場合には、転送を続行するアクト
    を実行するアクトと、
    前記ソースデータ構造の所与のフィールドについて、前記ターゲットデータ構造内に対応するフィールドが存在しないと判断し、それに応じて以下のアクト、すなわち、
    転送が成功するために前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須であるかどうかを判断するアクト、
    前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須である場合には、転送に失敗するアクト、および
    前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須でない場合には、第1のデータ構造の他のフィールドからのデータを第2のデータ構造の残余フィールドに提供するアクト
    を実行するアクトと
    を含むことを特徴とするソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  2. 前記ソースデータ構造がネットワークを通じてソースコンピュータシステムから提供され、前記ターゲットデータ構造がターゲットコンピュータシステム上に存在し、前記コンピュータ化された方法が該ターゲットコンピュータシステム上で実行されることを特徴とする請求項1に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  3. 前記ソースデータ構造がコンピュータシステムによってデータストアから読み出され、前記ターゲットデータ構造が該コンピュータシステム上のメモリ内で表現されることを特徴とする請求項1に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  4. 前記ターゲットデータ構造がフォームテンプレートであることを特徴とする請求項1に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  5. 前記ターゲットデータ構造に対応する前記所与のフィールドが、転送が成功するために該所与のフィールドが前記ソースコンピュータシステムによって提供されなければならないかどうかを表すことを特徴とする請求項1に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  6. 前記ソースデータ構造の前記所与のフィールドが、転送が成功するために前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須であるかどうかを指定することを特徴とする請求項1に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  7. 転送が成功するために前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須であると判断されることを特徴とする請求項1に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  8. 前記ソースデータ構造の前記所与のフィールドについて、前記ターゲットデータ構造内に対応するフィールドが存在しないと判断されることを特徴とする請求項7に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  9. 前記ソースデータ構造の前記所与のフィールドについて、前記ターゲットデータ構造内に対応するフィールドが存在しないと判断されることを特徴とする請求項1に記載のソースデータ構造からターゲットデータ構造にデータを転送するためのコンピュータ化された方法。
  10. 1つまたは複数のコンピュータ可読媒体に備えたコンピュータプログラムにおいて、該コンピュータプログラムは、コンピュータシステムの1つまたは複数のプロセッサによって実行される時に、該コンピュータシステムに、ソースデータ構造からターゲットデータ構造にデータを転送する方法を実行させ、該方法が、
    前記ターゲットデータ構造に対応する所与のフィールドについて、該所与のフィールドが前記ソースデータ構造内に関連するフィールドを有していないと判断し、それに応じて以下のアクト、すなわち、
    転送が成功するために前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須であるかどうかを判断するアクト、
    前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須である場合には、転送に失敗するアクト、および
    前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須でない場合には、転送を続行するアクト
    を実行するアクトと、
    前記ソースデータ構造の所与のフィールドについて、前記ターゲットデータ構造内に対応するフィールドが存在しないと判断し、それに応じて以下のアクト、すなわち、
    転送が成功するために前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須であるかどうかを判断するアクト、
    前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須である場合には、転送に失敗するアクト、および
    前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須でない場合には、第1のデータ構造の他のフィールドからのデータを第2のデータ構造の残余フィールドに提供するアクト
    を実行するアクトと
    を含むことを特徴とするコンピュータプログラム。
  11. 前記ソースデータ構造がネットワークを通じてソースコンピュータシステムから提供され、前記ターゲットデータ構造がターゲットコンピュータシステム上に存在し、前記コンピュータ化された方法が該ターゲットコンピュータシステム上で実行されることを特徴とする請求項10に記載のコンピュータプログラム。
  12. 前記ソースデータ構造がコンピュータシステムによってデータストアから読み出され、前記ターゲットデータ構造が前記コンピュータシステム上のメモリ内に表現されることを特徴とする請求項10に記載のコンピュータプログラム。
  13. 前記ターゲットデータ構造がフォームテンプレートであることを特徴とする請求項10に記載のコンピュータプログラム。
  14. 前記ターゲットデータ構造に対応する前記所与のフィールドが、転送が成功するために該所与のフィールドが前記ソースコンピュータシステムによって提供されなければならないかどうかを表すことを特徴とする請求項10に記載のコンピュータプログラム。
  15. 前記ソースデータ構造の前記所与のフィールドが、転送が成功するために前記ターゲットデータ構造が前記ソースデータ構造内の前記所与のフィールドに対応するフィールドを有することが必須であるかどうかを指定することを特徴とする請求項10に記載のコンピュータプログラム。
  16. 転送が成功するために前記ソースデータ構造が前記所与のフィールドに対応するフィールドを提供することが必須であると判断されることを特徴とする請求項10に記載のコンピュータプログラム。
  17. 前記ソースデータ構造の前記所与のフィールドについて、前記ターゲットデータ構造内に対応するフィールドが存在しないと判断されることを特徴とする請求項16に記載のコンピュータプログラム。
  18. 前記ソースデータ構造の前記所与のフィールドについて、前記ターゲットデータ構造内に対応するフィールドが存在しないと判断されることを特徴とする請求項10に記載のコンピュータプログラム。
  19. 複数のフィールドを含むデータ構造を有する1つまたは複数のコンピュータ可読媒体において、該複数のフィールドが、
    第1のフィールドであって、該第1のフィールドがターゲットデータ構造に転送される時に該フィールドが該ターゲットデータ構造において必須であるかどうかを指定する属性を含む第1のフィールドと、
    前記データ構造への以前の転送中に認識されなかったデータを含む残余エリアを表す第2のフィールドと
    を含むことを特徴とする1つまたは複数のコンピュータ可読媒体。
  20. 前記1つまたは複数のコンピュータ可読媒体が物理媒体であることを特徴とする請求項19に記載の1つまたは複数のコンピュータ可読媒体。
JP2006010230A 2005-02-01 2006-01-18 同じアイテムを表すデータ構造間で生データを転送するメカニズム Expired - Fee Related JP4890869B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/049,108 US7574516B2 (en) 2005-02-01 2005-02-01 Mechanisms for transferring raw data from one data structure to another representing the same item
US11/049,108 2005-02-01

Publications (3)

Publication Number Publication Date
JP2006216027A true JP2006216027A (ja) 2006-08-17
JP2006216027A5 JP2006216027A5 (ja) 2009-03-05
JP4890869B2 JP4890869B2 (ja) 2012-03-07

Family

ID=36384426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006010230A Expired - Fee Related JP4890869B2 (ja) 2005-02-01 2006-01-18 同じアイテムを表すデータ構造間で生データを転送するメカニズム

Country Status (5)

Country Link
US (1) US7574516B2 (ja)
EP (1) EP1686487B1 (ja)
JP (1) JP4890869B2 (ja)
KR (1) KR101183296B1 (ja)
CN (1) CN100543737C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013033305A (ja) * 2011-07-29 2013-02-14 Fujitsu Ltd データ配置変更プログラム、データ配置変更方法およびデータ配置変更装置
JP2016006641A (ja) * 2014-05-30 2016-01-14 アマデウス エス.アー.エス.Amadeus S.A.S. コンテンツ管理システム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904491B2 (en) * 2007-07-18 2011-03-08 Sap Ag Data mapping and import system
US8949783B2 (en) 2010-06-30 2015-02-03 International Business Machines Corporation Method and system for lazy data serialization in computer communications
US10042871B2 (en) 2014-05-30 2018-08-07 Amadeaus S.A.S. Content management in a travel management system
US9672487B1 (en) 2016-01-15 2017-06-06 FinLocker LLC Systems and/or methods for providing enhanced control over and visibility into workflows where potentially sensitive data is processed by different operators, regardless of current workflow task owner
US10019588B2 (en) 2016-01-15 2018-07-10 FinLocker LLC Systems and/or methods for enabling cooperatively-completed rules-based data analytics of potentially sensitive data
US9904957B2 (en) * 2016-01-15 2018-02-27 FinLocker LLC Systems and/or methods for maintaining control over, and access to, sensitive data inclusive digital vaults and hierarchically-arranged information elements thereof
US11157341B1 (en) 2020-07-01 2021-10-26 Adp, Llc Data contracts

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612223A (ja) * 1990-04-02 1994-01-21 Texas Instr Inc <Ti> 電子データ変換装置及びその方法
JP2000505222A (ja) * 1996-11-07 2000-04-25 ゼネラル・エレクトリック・カンパニイ レガシー・システム・データの自動送信
JP2002149457A (ja) * 2000-07-21 2002-05-24 Thomson Licensing Sa 予約データ領域を識別する方法及び装置
JP2005502132A (ja) * 2001-09-05 2005-01-20 シーメンス メディカル ソルーションズ ヘルス サーヴィシズ コーポレイション レコード処理統合システム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2110243C (en) * 1992-12-31 1998-08-11 Philip Steven Winterbottom Apparatus and methods for making a portion of a first name space available as a portion of a second name space
JP3865775B2 (ja) * 1995-04-11 2007-01-10 キネテック インコーポレイテッド データ処理システムにおけるデータの識別
US6151608A (en) 1998-04-07 2000-11-21 Crystallize, Inc. Method and system for migrating data
US6381600B1 (en) * 1999-09-22 2002-04-30 International Business Machines Corporation Exporting and importing of data in object-relational databases
US7257820B2 (en) 2001-04-14 2007-08-14 Siebel Systems, Inc. Method and system for using integration objects with enterprise business applications
US7404186B2 (en) * 2003-05-28 2008-07-22 Microsoft Corporation Signature serialization
US7302678B2 (en) * 2003-09-10 2007-11-27 Sap Aktiengesellschaft Symmetric transformation processing system
US7409693B2 (en) * 2003-10-30 2008-08-05 International Business Machines Corporation Method and system for providing version control of parameters in a command-based API using Java serialization
US7349910B2 (en) * 2004-08-20 2008-03-25 International Business Machines Corporation Method for inserting records into a database

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612223A (ja) * 1990-04-02 1994-01-21 Texas Instr Inc <Ti> 電子データ変換装置及びその方法
JP2000505222A (ja) * 1996-11-07 2000-04-25 ゼネラル・エレクトリック・カンパニイ レガシー・システム・データの自動送信
JP2002149457A (ja) * 2000-07-21 2002-05-24 Thomson Licensing Sa 予約データ領域を識別する方法及び装置
JP2005502132A (ja) * 2001-09-05 2005-01-20 シーメンス メディカル ソルーションズ ヘルス サーヴィシズ コーポレイション レコード処理統合システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013033305A (ja) * 2011-07-29 2013-02-14 Fujitsu Ltd データ配置変更プログラム、データ配置変更方法およびデータ配置変更装置
JP2016006641A (ja) * 2014-05-30 2016-01-14 アマデウス エス.アー.エス.Amadeus S.A.S. コンテンツ管理システム

Also Published As

Publication number Publication date
EP1686487A3 (en) 2007-04-18
US7574516B2 (en) 2009-08-11
CN1815474A (zh) 2006-08-09
KR101183296B1 (ko) 2012-09-14
KR20060088473A (ko) 2006-08-04
EP1686487B1 (en) 2018-06-06
CN100543737C (zh) 2009-09-23
JP4890869B2 (ja) 2012-03-07
EP1686487A2 (en) 2006-08-02
US20060173933A1 (en) 2006-08-03

Similar Documents

Publication Publication Date Title
JP4890869B2 (ja) 同じアイテムを表すデータ構造間で生データを転送するメカニズム
US7877732B2 (en) Efficient stress testing of a service oriented architecture based application
US7483959B2 (en) Method and system for extensible data gathering
CN101611397B (zh) 基于应用程序的复制和粘贴操作
US7103885B2 (en) Comment driven processing
US9146735B2 (en) Associating workflows with code sections in a document control system
CN109375901A (zh) 接口信息管理方法、装置、计算机设备以及存储介质
US20130055291A1 (en) Describing native application programming interfaces of an operating system with metadata
JP2005135385A (ja) コンピュータプラットフォームのプログラミングインターフェース
US8458672B2 (en) Facilitating the utilization of complex data objects
AU2005200697B2 (en) Priority binding
US20050066315A1 (en) Localization tool
CN102203757B (zh) 用于冻结对象的类型描述符管理
CN111753140A (zh) Xml文件解析方法及相关设备
US7730041B2 (en) Data abstraction based serialization
CN110990346A (zh) 基于区块链的文件数据处理方法、装置、设备及存储介质
US8131728B2 (en) Processing large sized relationship-specifying markup language documents
US8386932B2 (en) Method for displaying document-based help with the help system for a processing application
US20060004836A1 (en) Dynamic forms generation
US20120136881A1 (en) Exchanging data using data transformation
US9275085B2 (en) Data processing system and method
US20060143593A1 (en) Runtime string population in help files
US9720660B2 (en) Binary interface instrumentation
US20120072201A1 (en) Language translation reuse in different systems
US7685188B2 (en) Automated generation of computer-executable compensation procedures for previously executed methods

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110826

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111209

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111215

R150 Certificate of patent or registration of utility model

Ref document number: 4890869

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees