CN100543737C - 将原始数据从一个数据结构转移到另一结构的机制 - Google Patents

将原始数据从一个数据结构转移到另一结构的机制 Download PDF

Info

Publication number
CN100543737C
CN100543737C CNB2005101381872A CN200510138187A CN100543737C CN 100543737 C CN100543737 C CN 100543737C CN B2005101381872 A CNB2005101381872 A CN B2005101381872A CN 200510138187 A CN200510138187 A CN 200510138187A CN 100543737 C CN100543737 C CN 100543737C
Authority
CN
China
Prior art keywords
data
data structure
field
source data
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.)
Active
Application number
CNB2005101381872A
Other languages
English (en)
Other versions
CN1815474A (zh
Inventor
D·F·伯克斯
D·M·普荻
G·K·R·卡基瓦亚
N·H·杰莎纳德达尼
S·K·斯里尼瓦桑
S·H·菲瑞斯
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 Technology Licensing LLC
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 CN1815474A publication Critical patent/CN1815474A/zh
Application granted granted Critical
Publication of CN100543737C publication Critical patent/CN100543737C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

将原始数据从源数据结构转移到表示同一项的目标数据结构。在数据转移期间,如果在目标数据结构中有不对应于源数据结构提供的字段的给定字段,则转移机制确定是否强制源数据结构必须提供该字段。如果是强制的,则转移失败。否则,转移继续。如果在源数据结构中有不对应于目标数据结构的字段的字段,则转移机制确定是否强制目标数据结构必须具有该字段。如果是强制的,则转移失败。否则,对应的数据可被提供给目标数据结构中专用于未知数据剩余字段。

Description

将原始数据从一个数据结构转移到另一结构的机制
技术领域
本发明涉及计算技术,尤其涉及用于将原始数据从一个数据结构转移到表示同一项的另一数据结构的机制。
背景技术
计算技术转变了人们工作和娱乐的方式。计算***现在采用各种各样的形式,包括台式计算机、膝上型计算机、图形输入板PC、个人数字助理(PDA)、家用设备等等。计算***的功能是由软件来指导的。软件是计算机可执行指令的序列,当执行这些指令示,使计算机执行功能。
面向对象的编程作为一种机制来开发,以使用被称为对象的彼此交互的逻辑单元来组织软件的创作。对象包括代表对象属性的一个或多个数据字段、以及包括涉及对象行为的计算机可执行代码的零个或多个方法(或指向方法的指针)。对象可通过调用由另一对象展示的方法来交互。这类对象也被称为“数据对象”或“数据结构”。
当在存储器中时,数据结构是相关联的数据字段和方法的集合。然而,通常有必要将原始数据从数据结构转移至表示同一项的另一种数据结构。如果在源数据结构中有目标数据结构中不存在的数据字段的原始数据,或者如果在目标数据结构中有源数据结构中未提供的数据字段的原始数据时,则这将成为问题。在这一情况下,转移通常会失败。
即使在两个数据结构中未包括可被理想地转移的所有字段的情况下,也能用于将原始数据从一个数据结构转移到另一数据结构的机制将是有利的。
发明内容
现有技术的上述问题由本发明的原理来克服,本发明针对将原始数据从源数据结构转移到目标数据结构。数据结构可各自表示同一核心项(例如,人),但是可表示数据结构的不同版本。
在数据转移期间,如果在目标数据结构中有不对应于由源数据结构提供的字段的给定字段,则转移机制确定是否强制源数据结构必须提供该字段。例如,对应于该字段的数据合约可指定的“可任选性”字段,它指定了这是否是强制的。如果强制源数据结构必须提供对应于给定字段的字段,则转移失败。另一方面,如果不强制源数据结构提供该字段,则转移在没有数据的情况下继续。
同样,如果在源数据结构中有不对应于目标数据结构中的字段的字段,则转移机制确定是否强制目标数据结构具有该字段。数据字段本身可指定一“必须理解”字段,它指定了目标数据结构是否必须具有对应的字段。如果强制目标数据结构具有这一对应的字段,则转移失败。另一方面,如果不强制目标数据结构具有这一对应的字段,则可将数据作为未知数据提供到目标数据结构中专用于未知数据的剩余字段。
因此,通过为每一字段设置“可任选性”以及“必须理解”字段,转移可在需要时跨数据结构的不同版本而实现,或者如果适当,可禁用版本兼容性。以下描述中将陈述本发明的其它特征和优点,且部分地将从该描述中变得明显,或可通过对本发明的实践而学到。本发明的特征和优点可通过所附权利要求书中特别指出的手段和组合来实现和获得。本发明的这些和其它特征将从以下描述和所附权利要求书中变得完全清楚,或者可通过如下所述的对本发明的实践而学到。
附图说明
为描述可获得本发明的上述和其它优点和特征的方式,将参考附图中所示的其特定实施例来呈现上文简要描述的本发明的更具体描述。要理解,这些附图仅描绘了本发明的典型实施例,因此不被认为是限制其范围,本发明将通过使用附图以附加的特殊性和细节来描述和解释,附图中:
图1示出了可实现本发明的特征的合适的计算***;
图2示出了依照本发明的原理使用转移机制将原始数据从源数据结构转移到目标数据结构;
图3示意性地示出了包括数据字段类型、可任选性字段以及“必须理解”字段的标识的数据字段模板;
图4示出了依照本发明的原理用于将原始数据从源数据结构转移到目标数据结构的方法的流程图;
图5A示出了用于根据是否要求相关联的目标字段来处理源字段的方法的流程图;
图5B示出了用于根据是否要求相关联的源字段来处理目标字段的方法的流程图;
图6示意性地示出了依照本发明的原理使用串行化机制的串行化过程;
图7示出了依照本发明的原理的串行化方法的流程图;
图8示意性地示出了依照本发明的原理使用反串行化机制的反串行化过程;
图9示出了依照本发明的原理的反串行化方法的流程图;以及
图10示出了依照本发明的原理用于表达服务能力的方法的流程图。
具体实施方式
本发明的原理涉及将原始数据从源数据结构转移到表示该项的目标数据结构。数据结构可各自表示同一核心项,但可表示数据结构的不同版本。在数据转移期间,如果在目标数据结构中有不对应于源数据结构提供的字段的给定字段,则转移机制确定是否强制源数据结构必须提供该字段。如果是强制的,则转移失败。否则,转移继续。如果源数据结构中有不对应于目标数据结构的字段的字段,则转移机制确定是否强制目标数据结构必须具有该字段。如果是强制的,则转移失败。否则,对应的数据可被提供给目标数据结构中专用于未知数据的剩余字段。
转向附图,本发明被示出为在一合适的计算环境中实现,附图中,相同的参考标号指相同的元素。以下描述基于所示的本发明的实施例,并且不应被认为是相对于此处未明确描述的替换实施例而限制本发明。
在以下描述中,本发明是参考由一个或多个计算机执行的动作和操作的符号表示来描述的,除非另外指明。由此,可以理解,这类动作和操作,有时称为计算机执行的,包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器***中的位置上维护它,从而以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是存储器的物理位置,具有数据的格式所定义的具体特性。然而,如本领域的技术人员所理解的,尽管在上述的上下文环境中描述本发明,它并不意味着限制,后文所描述的动作和操作的各方面也可用硬件实现。图1示出了可用于这些设备的示例计算机体系结构的示意图。
为描述起见,所描绘的体系结构仅是合适的环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应将计算***解释为对图1所示的任一组件或其组合具有任何依赖或需求。
本发明可以使用众多其它通用或专用计算***环境或配置来操作。适用于本发明的众所周知的计算***、环境和配置包括但不限于,移动电话、袖珍计算机、个人计算机、服务器、多处理器***、基于微处理器的***、小型机、大型机、包括任一上述***或设备的分布式计算环境等等。
在其最基本的配置中,计算***100通常包括至少一个处理单元102和存储器104。存储器104可以是易失性(如RAM)、非易失性(如ROM、闪存等)或两者的某一组合。这一最基本配置在图1中由虚线106示出。
存储介质设备可具有另外的特征或功能。例如,它们可包括另外的存储(可移动和/或不可移动),包括但不限于PCMCIA卡、磁盘和光盘、以及磁带。这类另外的存储在图1中由可移动存储108和不可移动存储110示出。计算机存储介质可包括以用于储存如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法和技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘、其它光存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存期望的信息并可由计算***访问的任一其它介质。
如此处所使用的,术语“模块”或“组件”可以指在计算***上执行的软件对象或例程。此处所描述的不同组件、模块、引擎和服务可以被实现为在计算***上执行的对象或进程(例如,作为单独的线程)。尽管此处所描述的***和方法较佳地以软件来实现,然而软件和硬件以及硬件的实现也是可能的,且是被构想的。
计算***100也可包含允许主机通过网络120与其它***和设备进行通信的通信信道112。通信信道112是通信介质的一个示例。通信介质通常可以具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。本发明使用的术语计算机可读介质包括存储介质和通信介质两者。
计算***100也可具有输入组件114,如键盘、鼠标、输入笔、语音输入组件、触摸输入设备等等。也可包括输出组件116,包括屏幕显示器、扬声器、打印机等等,以及用于驱动它们的呈现模块(通常称为“适配器”)。计算***100具有电源118。所有这些组件在本领域中都是公知的,且无需在此详细描述。
图2示出了环境200,其中来自源数据结构201的一个或多个字段使用转移机制203被转移到目标数据结构202。源数据结构201和目标数据结构202可表示同一项,但是以不同的方式来表示。例如,数据结构可各自表示特定的人、组织、航班保留或可具有相关联的数据的任何其它可想到的对象或实体。源数据结构201和目标数据结构202可被包含在任何介质上(甚至是诸如无线通信等无形介质),并且甚至可以是又一数据结构的串行化表示,尽管这不是所要求的。
数据结构的某些数据字段可以是相同的。例如,如图2所示,源数据结构201包括数据字段201A,它包含与目标数据结构202中的数据字段202A相同的数据。例如,假定数据结构的每一个都表示与特定的人相关联的数据。源数据结构201的数据字段201A可表示人名,而数据字段202A是要由转移机制203来填充的名字字段。
另一方面,源数据结构201可具有目标数据结构202中不存在的字段(例如,字段201B)。例如,在目标数据结构202中没有字段202B。在一个特定示例中,假定字段201B表示代表相关联的该人是否活着的布尔值,而目标数据结构202没有这一字段。
在下文进一步描述的一个示例实现中,当表示特定的实体(例如,人)时,使用“数据合约”来描述数据结构中要包括什么字段。源数据结构201和目标数据结构202可遵循“人”数据合约的不同版本,其中源数据结构201遵循的版本指定了表示人是否活着的字段要包括在该数据结构中。相反,目标数据结构遵循的人数据合约的版本未指定表示该人是否活着的字段要包括在该数据结构中。数据合约的不同版本可为随时间改变的特定实体的不同数据字段按需开发。
在关于图2、3、4、5A和5B描述本发明的通用原理时,这一数据合约将以通用术语来描述,因为本发明的最宽泛原理涉及数据从源数据结构到目标数据结构的通用转移,而无论数据结构所遵循的数据合约是什么。然而,为完整性目的,数据合约的概念将在图6到10中更详细地描述。
如上所述,源数据结构201可包含与目标数据结构202不同的字段,因为该数据结构遵循数据合约的不同版本。数据合约的不同版本可使目标数据结构202包含与源数据结构201不同的字段。例如,目标数据结构被示出为包括数据字段202C,而源数据结构不包含对应的数据字段201C。在人数据合约的示例中,数据字段202C可表示社会保障号,它在遵循目标数据结构202的人数据合约的版本中表示,但不在遵循源数据结构201的人数据合约的版本中表示。
源数据结构201和目标数据结构202被示出为包括数据结构之间公共的一个字段(源数据结构202中的字段201A,目标数据结构202中的字段202A)(后文称为“公共数据字段”)。另外,源数据结构201被示出为包括目标数据结构202中不包括的数据字段(例如,数据字段201B)(后文称为“源排除数据字段”)。最后,目标数据结构202被示出为包括源数据结构201中不包括的数据字段(例如,数据字段202C)(后文称为“目标排除数据字段”)。
然而,源数据结构201在适当时(例如,遵循给定数据结构201和202的每一个的数据合约版本的差异)可包含任意数量(零个或多个)公共数据字段,以及任意数量(零个或多个)的源排除数据字段。此外,目标数据结构202可在适当时(例如,如由合约版本差异所描绘的)包含任意数量(零个或多个)的公共数据字段,以及任意数量(零个或多个)的目标排除数据字段。垂直省略号201D和202D仅仅被示出以表示源和目标数据结构201和202在适当时分别可包含更多数据字段。目标数据结构202也被示出为包括剩余字段202E。该剩余字段202E的目的将相对于图5A来进一步描述。
图4示出了依照本发明的原理用于将数据从源数据结构转移到目标数据结构的计算机实现的方法400的流程图。作为方法400的一部分,访问源和目标数据结构(动作401)。术语“数据结构”在此被宽泛地定义以包括具有一个或多个字段的任何结构化的数据(甚至是串行化数据),而不论包含该数据结构的介质是什么。例如,计算***可通过网络访问源数据结构,在这一情况下,方法400在目标计算***上执行。例如,如果目标计算***是图1的计算***100,则目标计算***可通过网络120访问数据结构。然而,计算***也可从诸如易失性或非易失性存储器等其它数据存储中访问源数据结构。在图1的情况下,目标数据结构可从***存储器104和/或存储108或110中访问。
对于任何公共数据字段,计算***将数据简单地从源数据字段复制到对应的目标字段。当然,复制可涉及编码格式的某种转换。计算***也标识源数据结构中不包括在目标数据结构中的任何源排除数据字段(动作402A)。对于任何这样的源排除字段,计算***执行图5A的方法500A(结合图5A的动作403A)。计算***也标识目标数据结构中不包括在源数据结构中的任何目标排除数据字段(动作402B)。对于任何这样的目标排除字段,计算***执行图5B的方法500B(结合图5B的动作403B)。
参考图5A的方法500A,对于任何标识的源排除数据字段,计算***确定是否强制目标数据结构必须具有对应于源数据结构中的源排除数据字段的字段,以使转移成功(判别框501A)。如果是强制的(判别框501A中的“强制”),则计算***使转移失败(动作502A)。如果不是强制的(判别框501A中的“非强制”),则计算***将来自源排除数据字段的数据提供给剩余字段(动作503A)。剩余字段(例如,图2的剩余字段220E)是持有源数据结构中不能被目标数据结构理解的所有数据的逻辑容器。剩余字段中的数据可以被标记,使得从其中导出每一数据的字段类型可在稍后被标识。如果数据结构被重新发送至由一目标数据结构,则剩余字段中的数据可以被重新转移,由此保存了来自前一数据合约版本的数据。
图3示出了可用作数据合约的一部分的数据字段模板300,该数据字段模板定义了数据字段类型301(例如,在人数据合约的情况下的名字)、定义源数据结构是否必须具有包括在目标数据结构中的特定字段以使转移成功的可任选性字段302、以及定义目标数据结构是否必须具有源数据结构中包括的特定字段以使转移成功的必须理解字段303。当源数据结构被发送或储存在包括由模板300定义的同一数据类型的数据字段的数据结构时,与数据类型301相关联的原始数据连同由该模板定义的相关联的必须理解指示303一起发送或储存。因此,可从与源排除数据字段本身相关联的必须理解字段中理解源排除数据字段是否是强制的。
参考图5B的方法500B,对于任何标识的目标排除数据字段,计算***确定是否强制源数据结构必须提供对应于目标排除字段的字段,以使转移成功(判别框501B)。如果是强制的(判别框501B)中的“强制”,则计算***使转移失败(动作502B)。如果不是强制的(判别框501B中的“非强制”),则计算***继续转移(动作503B)。例如,计算***评估下一字段,如果所有源和目标字段都已被评估,则成功地完成整个转移。
目标排除数据字段是否强制可以从与目标排除数据字段本身相关联的元数据中理解。例如,假定目标排除数据字段如对于图3的数据字段300所示那样地结构化。目标排除数据字段(或与目标排除数据字段相关联的结构(例如,数据合约))可包括可任选性字段302,它可以是对源数据结构是否必须提供相关联的字段的表达式。判别框501B中的确定可基于可任选性字段302来作出。
描述了本发明的通用原理之后,现在将参考图6到10来描述本发明的一个具体实施例,其中,数据合约用于在串行化和反串行化期间定义数据结构的形式。
图6示意性地示出了使用串行化机制的串行化过程。串行化机制600包括串行化引擎601和格式化器602。串行化引擎601和格式化器602可以集成在同一例程内,或可以由单独的例程实现而不影响本发明的原理。串行化引擎601和格式化器602可以是在图1的计算***100的环境内执行的组件。然而,本发明的原理独立于任何特定的硬件环境,且不限于任何特定的硬件环境。图6所示的余留的结构将参考图7来描述,图7示出了依照本发明的原理的串行化方法的流程图。
在该实施例中,仅通过串行化从数据对象中提取的抽象数据,而不串行化包围该抽象数据的结构来串行化数据对象。因此,访问串行化数据的实体无需理解从其中提取数据的数据对象的结构。同样,串行化也不揭示关于数据对象格式的可能敏感的信息。
参考图7,访问要经受串行化的数据对象(动作701)。例如,图6中的串行化引擎601可访问数据对象631。数据对象631可以是任何数据对象类型。为说明起见,数据对象631被示出为包括数据字段631A到631C,以及由垂直省略号631D标识的可能的其它数据字段。
然后确定数据对象是否与“数据合约”相关联(动作702)。在本描述和所附权利要求书中,“数据合约”被定义为对应于要串行化的数据字段的一个或多个数据字段类型的标识。
例如,串行化引擎601能够访问可包括任意数量的数据合约的数据合约集合611。如图所示,数据合约611包括数据合约611A到611D,以及由省略号611E标识的可能的其它数据合约。数据合约可对应于特定逻辑实体类型。例如,数据合约611A可对应于人数据类型。然而,对于可具有对应数据合约的数据对象的类型没有任何限制。
图6在分解的视图中示出数据合约611A包括多个数据字段类型611。每一数据字段类型可包括数据字段类型标识622,以及涉及该数据类型的一个或多个其它标志符623。例如,假定数据合约611A一般对应于人数据对象。例如,数据字段类型621A可以是名字数据类型,数据字段类型621B可以是年龄数据类型,数据字段类型621C可以是性别数据类型,数据字段类型621D可以是地址数据类型,等等。所示的标志符包括用于上述“必须理解”的“MU”以及用于“可任选性”的O。标志符也可包括指示不被目标理解的数据是否应当被放置在剩余字段(例如,图2的剩余字段202E)中的“RT”标志符。
回头参考图7,然后确定数据对象是否具有对应于数据合约中所标识的数据字段类型的数据字段(判别框703)。例如,假定图6的串行化引擎601将数据合约611A标识为与所访问的数据对象631相关联。串行化引擎601可评估数据字段类型621A,以确定在数据对象631的数据字段631A到数据字段631D的任一个中是否有对应于数据字段类型621A的任何相关联的数据字段。例如,假定数据字段类型631A是名字数据类型。串行化引擎601可评估数据对象631的所有数据字段,以确定是否有“名字”字段。
如果确定数据对象有对应于数据字段类型的数据字段(判别框703中的“是”),则从数据对象中提取对应的数据(动作704)。例如,数据提取器组件641可从数据对象中提取对应于数据字段类型(例如,名字数据类型)的适当的数据字段(例如,特定的一个或多个名字)。作为这一提取过程的一部分,也提取每一提取的数据字段的相关联的必须理解字段。
如果在数据合约中没有指定更多的数据字段类型(判别框705中的“否”),则串行化任何提取的数据字段(及其相关联的必须理解字段)(动作706)。例如,串行化(动作706)可在提取(动作704)之后立即发生,而非等到所有的数据字段都已被提取(判别框705中的“否”)。所提取的数据由图6中的抽象数据642表示。该数据独立于数据对象,且仅包括所提取的数据,而非整个数据对象。格式化器602然后确定应当串行化为什么串行化格式,并从转换器库612中选择对应于该串行化格式的适当转换器。例如,转换器库612被示出为包括对应的转换器612A、612B、612C、612D,以及由省略号612E表示的其它转换器。串行化格式的示例包括,例如二进制代码、可扩展标记语言(XML)、以及任何其它串行化格式,无论是否方便,也无论是否尚不存在。格式化器602然后使用适当的转换器组件(例如,转换器组件612A)以将抽象数据642串行化成适当的串行化格式。
返回到图7,如果数据合约中还有更多的数据字段类型要评估(判别框705中的“是”),则流程继续返回到判别框703,对数据合约中的下一数据字段类型确定数据对象中是否有对应于该数据字段类型的任何数据字段(动作703),并且该过程重复。
如果在任一点处,数据对象中没有对应于数据合约中找到的数据字段类型的数据字段(判别框703中的“否”),则确定数据字段类型是强制的还是可任选的(判别框707)。这一确定可通过参考数据合约中对应的数据字段类型中的标志符623来作出。
如果数据字段类型是可任选的(判别框707中的“是”),则流程继续返回到判别框705,如果数据合约中没有更多的数据字段类型要评估则指定串行化(动作706),或者如果还有更多的数据字段类型要评估则评估下一数据字段类型(判别框703)。
另一方面,如果数据字段类型从发送者观点来看不是可任选的而是强制的(判别框707中的“否”),则可在对应于数据对象的补充数据结构中搜索相关联的数据字段的存在(动作708)。例如,图6的串行化引擎601可在与数据对象631相关联的补充数据结构644中搜索对应于数据合约中的当前数据字段类型的数据字段的存在。如果在补充数据结构中找到这一数据字段(判别框709中的“是”),则提取该数据字段(动作704),并将其添加到抽象数据集合。如果补充数据结构中未找到这一数据字段(判别框709中的“否”),则串行化引擎601指示串行化失败(动作710)。当然,如果串行化机制保证数据字段总是能够在补充数据结构中找到,则永远不会发生动作710的串行化出错。这一补充数据结构的一个示例是图2的剩余字段202E。当前一数据转移尝试期间先前已无法识别要接收到对象中的数据时,要发送的对象可将未知数据放置在该剩余字段202E中。或者,串行化过程可简单地串行化所有的数据字段,而无论其可任选性状态,并将对转移是否会失败的正式评估留给接收端。
可任选地,如果数据字段类型被确定为可任选的(判别框707中的“可任选”),则也可搜索补充数据结构644。在这一情况下,如果在补充数据结构中未找到对应的数据字段,则流程仅仅继续到判别框705,确定在数据合约中是否还有更多的数据字段类型要评估。
图7中的虚线框711表示对要从数据合约中评估的每一数据类型的评估过程。该过程可被重复,直到遇到没有对应的数据字段的强制数据字段类型(判别框709中的“否”),或直到评估了所有的数据字段类型(判别框705中的“否”)。
因此,方法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行),它仅包括一个数据字段(见第5行)。该数据字段是具有名字“FullNameOfThisPerson”(这个人的全名)的串。然而,前一行(第4行)指示为评估数据合约的目的,则该串数据字段应当被认为是“_name”类型。因此,当评估数据字段类型“string_name”时,它可以被解释为串“FullNameOfThidPerson”对应于该数据字段类型。该串然后可作为要串行化的抽象数据来提取。
以下示出了另一示例数据对象:
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)。这一标识可通过评估与串行化的文档相关联的元数据来执行。该标识可以是基于规则的。例如,规则可指定从特定的发送者接收串行化的文档,且具有对应于特定数据合约的特定文档名。这些规则可以由管理员设置,或可以由软件开发者硬编码,或者可以用某一其它方式来设置。
另外,反串行化机制从串行化的数据结构中恢复由数据合约标识的一个或多个数据字段类型的一个或多个数据字段(动作903)。格式化器802可通过选择对应于串行化的数据843的串行化格式的一个适当的转换器612来实现这一过程。格式化器802因此恢复抽象数据842。
对于对应于数据合约中标识的数据字段类型的每一提取的数据字段,反串行化引擎确定数据字段是否可被填充到数据对象中(判别框904)。这可由数据填充器841来确定。如果数据字段可被填充到对应的数据对象中(判别框904中的“是”),则数据填充器841将该数据字段添加到要填充到数据对象的数据项集合中(动作905),或者立即用该数据字段来填充数据对象。如果没有更多的数据字段要填充到数据对象中(判别框906中的“否”),则填充数据对象(动作907)。否则(判别框906中的“是”),评估下一恢复的数据字段(判别框904),重复该过程。
如果在任何时刻确定恢复的数据字段不能被填充到数据对象中(判别框904中的“否”),则确定数据字段是强制的还是可任选的(判别框908)。这可通过审查对应的数据合约中的对应数据字段类型来确定。如果设置了“必须理解”标志“MU”,则数据字段类型必须被数据对象理解,且数据字段被确定为强制的。如果未设置必须理解字段,则数据字段类型在接收端是可任选的。
如果数据字段是可任选的(判别框908中的“可任选”),则数据字段被填充到补充数据结构中(例如,图2的剩余字段202E)而非数据对象中。例如,数据填充器841可将数据字段提供给补充数据结构844。在一个实施例中,动作909仅在数据合约的对应数据字段类型中设置了往返标志符(RT)时才执行。在任何情况下,流程然后继续到判别框906,确定是否还有更多的数据字段要填充(判别框906)。另一方面,如果数据字段是强制的(判别框908中的“强制”),则指示反串行化失败(动作910)。
包括在虚线框911中的这一过程可以对所有恢复的数据字段重复,直到没有更多的数据字段要评估(判别框906中的“否”),或直到反串行化失败(动作910)。虚线框911内的过程也可对没有为数据对象检索到对应的数据字段的数据字段类型重复,尽管流程的特性将有些许改变,现在将描述这一点。具体地,由于数据字段不存在,数据字段不能被填充到数据对象中(判别框904中的“否”)。如果数据字段类型是可任选的(判别框908中的“可任选”),则流程直接前进到判别框906,确定是否还有更多的检索到的数据字段要评估,或者是否还有对其没有对应的检索到的数据字段的数据字段类型。如果数据字段类型是强制的(判别框908中的“强制”),则反串行化失败(动作910)。
方法900可对任何接收到的串行化的文档重复,而不论串行化的文档的格式是什么,也不论哪一数据合约与串行化的文档相关联。
因此,本发明的原理提供了从数据对象提取抽象数据并串行化该数据而非串行化整个数据对象的串行化机制。类似地,反串行化机制恢复抽象数据,并将抽象数据填充到数据对象中,而非反串行化整个数据对象。因此,串行化和反串行化机制与多种串行化格式和数据对象类型兼容,而不会展示在存储器内处理的数据对象类型的特性。
图10示出了依照本发明的原理用于表达服务能力的方法的流程图。该过程可以在上述串行化和反串行化之前执行。方法1000可以在接收到对服务能力的表达的请求时执行,尽管这不是所要求的。
首先,评估服务对象,以标识由服务对象提供的一个或多个方法(动作1001)。这一服务对象可以是例如,整个web服务。然后评估方法的参数,以确定哪一方法具有与其相关联的数据合约(动作1002)。然后对于每一数据合约,转换成参数的模式化描述(动作1003)。例如,串行化机制600可被配置成基于相关联的数据合约为每一参数生成XML模式描述(XSD)文档。该服务然后可提供方法的模式化描述(例如,以web服务描述语言(WSDL)的形式)以及相关联的所接受参数的模式化描述(例如,按每一参数的XSD文档的形式)。
本发明可以用其它具体形式来实施,而不脱离其精神或本质特征。所描述的实施例被认为在所有方面是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非以上描述来指示。落入所附权利要求书的等效技术方案的意义和范围之内的所有改变都包含在其范围之内。

Claims (6)

1.一种用于将数据从源数据结构转移到目标数据结构的计算机化的方法,所述方法包括:
对于对应于所述目标数据结构的给定字段,确定所述给定字段没有所述源数据结构中相关联的字段的动作,以及作为响应,执行以下:
确定是否强制所述源数据结构必须提供对应于所述给定字段的字段以使所述转移成功的动作;
如果强制所述源数据结构必须提供对应于所述给定字段的字段,使所述转移失败的动作;以及
如果不强制所述源数据结构必须提供对应于所述给定字段的字段,继续所述转移的动作;
对于所述源数据结构的给定字段,确定在所述目标数据结构中没有对应的字段的动作,以及作为响应,执行以下:
确定是否强制所述目标数据结构必须具有对应于所述源数据结构中的给定字段的字段以使所述转移成功的动作;
如果强制所述目标数据结构必须具有对应于所述源数据结构中的给定字段的字段,使所述转移失败的动作;以及
如果不强制所述目标数据结构必须具有对应于所述源数据结构中的给定字段的字段,将来自所述源数据结构的其它字段的数据提供给所述目标数据结构的剩余字段的动作。
2.如权利要求1所述的用于将数据从源数据结构转移到目标数据结构的计算机化的方法,其特征在于,所述源数据结构是通过网络从源计算***提供的,且所述目标数据结构存在于目标计算***上,其中,所述计算机化的方法是在所述目标计算***上执行的。
3.如权利要求1所述的用于将数据从源数据结构转移到目标数据结构的计算机化的方法,其特征在于,所述源数据结构由计算***从数据存储中读取,而所述目标数据结构在所述计算***的存储器中表示。
4.如权利要求1所述的用于将数据从源数据结构转移到目标数据结构的计算机化的方法,其特征在于,对应于所述目标数据结构的给定字段表示对应于所述目标数据结构的给定字段是否必须由所述源数据结构提供以使所述转移成功。
5.如权利要求1所述的用于将数据从源数据结构转移到目标数据结构的计算机化的方法,其特征在于,所述源数据结构的给定字段指定是否强制所述目标数据结构必须具有对应于所述源数据结构中的给定字段的字段以使所述转移成功。
6.如权利要求1所述的用于将数据从源数据结构转移到目标数据结构的计算机化的方法,其特征在于,确定强制所述源数据结构必须提供对应于所述目标数据结构的给定字段的字段以使所述转移成功。
CNB2005101381872A 2005-02-01 2005-12-30 将原始数据从一个数据结构转移到另一结构的机制 Active CN100543737C (zh)

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 (2)

Publication Number Publication Date
CN1815474A CN1815474A (zh) 2006-08-09
CN100543737C true CN100543737C (zh) 2009-09-23

Family

ID=36384426

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101381872A Active CN100543737C (zh) 2005-02-01 2005-12-30 将原始数据从一个数据结构转移到另一结构的机制

Country Status (5)

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

Families Citing this family (9)

* 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
JP5810719B2 (ja) * 2011-07-29 2015-11-11 富士通株式会社 データ配置変更プログラム、データ配置変更方法およびデータ配置変更装置
US10042871B2 (en) 2014-05-30 2018-08-07 Amadeaus S.A.S. Content management in a travel management system
FR3021787B1 (fr) * 2014-05-30 2023-08-18 Amadeus Sas Systeme de gestion de contenu
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
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
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
US11157341B1 (en) 2020-07-01 2021-10-26 Adp, Llc Data contracts

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0454303A3 (en) * 1990-04-02 1991-11-13 Texas Instruments Incorporated Electronic data format conversion system and method
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 キネテック インコーポレイテッド データ処理システムにおけるデータの識別
US5857194A (en) 1996-11-07 1999-01-05 General Electric Company Automatic transmission of legacy system data
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
DE10035955A1 (de) 2000-07-21 2002-01-31 Thomson Brandt Gmbh Verfahren zum Identifizieren eines reservierten Datenbereichs sowie entsprechendes Gerät
US7257820B2 (en) 2001-04-14 2007-08-14 Siebel Systems, Inc. Method and system for using integration objects with enterprise business applications
US6912549B2 (en) 2001-09-05 2005-06-28 Siemens Medical Solutions Health Services Corporation System for processing and consolidating records
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

Also Published As

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

Similar Documents

Publication Publication Date Title
CN100543737C (zh) 将原始数据从一个数据结构转移到另一结构的机制
EP2943859B1 (en) System, method, and computer-readable medium for managing edge devices
CN101221418B (zh) 利用共享资源的多语言开发环境
US8560854B2 (en) Device enabled verifiable stroke and image based workflows
JP5046881B2 (ja) 情報処理装置、表示制御方法ならびにプログラム
CN101366021A (zh) 经由软件应用用户界面将元数据应用于文档或文档对象
CN101366022A (zh) 经由操作***用户界面将元数据应用于文档或文档对象
Sørensen et al. Ontologies to support RFID‐Based link between virtual models and construction components
CN101061475B (zh) 用于同步的低保真度设备的时间-日期信息的维护
CN101582083A (zh) 基于万维网的图像内容的检测、提取以及识别
KR101366252B1 (ko) 블루투스 통신을 이용하여 단말 장치로부터의 소정 포맷의데이터를 인쇄하는 방법 및 장치, 템플릿 데이터저장 방법
JP5893825B2 (ja) ワークフローのための方法及びシステム
CN114594927A (zh) 低代码开发方法、装置、***、服务器及存储介质
CN113723926A (zh) 结合rpa和ai的银行流水处理方法、装置及电子设备
US20060173934A1 (en) Saving documents on multiple drives
CN111798178A (zh) 快递寄送方法、装置和电商服务器
CN101828374A (zh) 存储区域网络互通关系的获取和扩展
US11803688B2 (en) Secondary device for a sensor and/or information system and sensor and/or information system
JP4272653B2 (ja) 情報連携システム
CN101520861A (zh) 数据事件发送方法和装置以及事件处理***
CN106446611A (zh) 密级信息生成方法、读取方法及装置
JP2021140260A (ja) 情報処理装置及び情報処理プログラム
CN108664530B (zh) 基于编码识别的信息获取方法
CN104902449A (zh) 一种基于二维码处理业务的方法、装置、服务器、***
US20210334721A1 (en) Application environments for organizing information around spaces and goals

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.