US20060130047A1 - System and apparatus for software versioning - Google Patents

System and apparatus for software versioning Download PDF

Info

Publication number
US20060130047A1
US20060130047A1 US10/999,312 US99931204A US2006130047A1 US 20060130047 A1 US20060130047 A1 US 20060130047A1 US 99931204 A US99931204 A US 99931204A US 2006130047 A1 US2006130047 A1 US 2006130047A1
Authority
US
United States
Prior art keywords
difference file
customization
versioning
xml
xml document
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.)
Abandoned
Application number
US10/999,312
Inventor
Srinivasa Burugapalli
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
Priority to US10/999,312 priority Critical patent/US20060130047A1/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BURUGAPALLI, SRINIVASA R.
Publication of US20060130047A1 publication Critical patent/US20060130047A1/en
Priority to US11/511,637 priority patent/US7984424B2/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DENGLER, PATRICK
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Definitions

  • This patent relates generally to computer languages and more particularly to a markup language used to exchange information.
  • the web uses various markup languages such as hypertext markup language (HTML), extensible markup language (XML), etc., to communicate information over the Internet.
  • HTML hypertext markup language
  • XML extensible markup language
  • the XML has become the de-facto metadata language for describing application components such as forms, flows, schemas, and the like.
  • XML is a simple, very flexible text format derived from standard generalized markup language (SGML) protocol. Originally designed to meet the challenges of large-scale electronic publishing, XML is also playing an especially important role in the exchange of a wide variety of data on the web and elsewhere. Unlike HTML, XML is meant for storing data, not just for displaying the data.
  • a number of software development companies provide a number of different application software using XML. Generally, software development companies provide the source code of the application software to users and the users often customize the application software to their own needs. On the other hand the software development companies continuously release updated versions of the application software with new features and capabilities. These simultaneous updating of application software, by the end users as well as by the software development company poses a problem in carrying the user updates from one version to next version of the application software release.
  • XML is a preferred markup language for designing electronic commerce
  • each of the various user companies have different needs in terms of forms, databases, etc., provided by the applications.
  • a generic restaurant management software provided by a software development company may be customized by a client restaurant in a particular market to conform more closely to its local business needs.
  • the software development company releases the next version of the generic restaurant management software
  • the customizations made by the client restaurant will generally not be incorporated in the new version, making it necessary for the client to again make modifications to the newer version of the restaurant management software. Therefore, there is a need to provide an XML versioning system that allows users of XML application software to carry customizations from one version of the application software to the next.
  • An XML versioning system allows versioning an extensible markup language (XML) based application software so that customizations made to an early version of the application software can be easily incorporated into the later version of the application software.
  • the XML versioning system identifies XML semantic blocks in a customized early version of an application software to determine areas including customization metadata, defines the differences between the customized early version of an application software and a later revision of the application software in the determined areas, and provides a procedure to integrate the customization metadata into the later version of the application software.
  • FIG. 1 is a block diagram of a network interconnecting a plurality of computing resources
  • FIG. 2 is a block diagram of a computer that may be connected to the network of FIG. 1 ;
  • FIG. 3 illustrates a flowchart of a software versioning program
  • FIGS. 4A-4C illustrate a method of using “XML diff” files during operation of the XML versioning program of FIG. 3 ;
  • FIGS. 5A-5C illustrate a flowchart of a merging program used by the XML versioning program of FIG. 3 ;
  • FIGS. 6A-6D illustrate various application forms generated by XML applications illustrating use of the XML versioning program of FIG. 3 .
  • FIG. 1 illustrates a network 10 that may be used to implement an XML versioning system described herein.
  • the network 10 may be the Internet, a virtual private network (VPN), or any other network that allows one or more computers, communication devices, databases, etc., to be communicatively connected to each other.
  • the network 10 may be connected to a personal computer 12 and a computer terminal 14 via an Ethernet 16 and a router 18 , and a landline 20 .
  • the network 10 may wirelessly connected to a laptop computer 22 and a personal data assistant 24 via a wireless communication station 26 and a wireless link 28 .
  • a server 30 may be connected to the network 10 using a communication link 32 and a mainframe 34 may be connected to the network 10 using another communication link 36 .
  • one or more components of the dynamic software provisioning system may be stored and operated on any of the various devices connected to the network 10 .
  • FIG. 2 illustrates a computing device in the form of a computer 110 that may be connected to the network 10 and used to implement one or more components of the dynamic software provisioning system.
  • Components of the computer 110 may include, but are not limited to a processing unit 120 , a system memory 130 , and a system bus 121 that couples various system components including the system memory to the processing unit 120 .
  • the system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
  • ISA Industry Standard Architecture
  • MCA Micro Channel Architecture
  • EISA Enhanced ISA
  • VESA Video Electronics Standards Association
  • PCI Peripheral Component Interconnect
  • Computer 110 typically includes a variety of computer readable media.
  • Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media.
  • Computer readable media may comprise computer storage media and communication media.
  • Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
  • Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110 .
  • Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
  • modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
  • communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
  • the system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132 .
  • ROM read only memory
  • RAM random access memory
  • BIOS basic input/output system
  • RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120 .
  • FIG. 1 illustrates operating system 134 , application programs 135 , other program modules 136 , and program data 137 .
  • the computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
  • FIG. 1 illustrates a hard disk drive 140 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 151 that reads from or writes to a removable, nonvolatile magnetic disk 152 , and an optical disk drive 155 that reads from or writes to a removable, nonvolatile optical disk 156 such as a CD ROM or other optical media.
  • removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
  • the hard disk drive 141 is typically connected to the system bus 121 through a non-removable memory interface such as interface 140
  • magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such as interface 150 .
  • hard disk drive 141 is illustrated as storing operating system 144 , application programs 145 , other program modules 146 , and program data 147 . Note that these components can either be the same as or different from operating system 134 , application programs 135 , other program modules 136 , and program data 137 . Operating system 144 , application programs 145 , other program modules 146 , and program data 147 are given different numbers here to illustrate that, at a minimum, they are different copies.
  • a user may enter commands and information into the computer 20 through input devices such as a keyboard 162 and pointing device 161 , commonly referred to as a mouse, trackball or touch pad.
  • Other input devices may includea microphone, joystick, game pad, satellite dish, scanner, or the like.
  • These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
  • a monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190 .
  • computers may also include other peripheral output devices such as speakers 197 and printer 196 , which may be connected through an output peripheral interface 190 .
  • the computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180 .
  • the remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110 , although only a memory storage device 181 has been illustrated in FIG. 1 .
  • the logical connections depicted in FIG. 1 include a local area network (LAN) 171 and a wide area network (WAN) 173 , but may also include other networks.
  • LAN local area network
  • WAN wide area network
  • Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
  • the computer 110 When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170 .
  • the computer 110 When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173 , such as the Internet.
  • the modem 172 which may be internal or external, may be connected to the system bus 121 via the user input interface 160 , or other appropriate mechanism.
  • program modules depicted relative to the computer 110 may be stored in the remote memory storage device.
  • FIG. 1 illustrates remote application programs 185 as residing on memory device 181 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
  • FIG. 3 illustrates a flowchart of a software versioning program (SVP) 200 that may be implemented using the computer 110 of FIG. 2 .
  • the SVP 200 may be used to version a software used on any of various computing devices 12 , 14 , etc., connected to the network 10 of FIG. 1 .
  • the SVP 200 analyzes an XML software application running on the computer 110 to determine if there is any customization metadata that exists in the software application. To determine the existence of any customization metadata, the SVP 200 may apply an “XML diff” utility program on a particular software application running on the computer 110 and the original version of the particular software application.
  • an XML diff utility determines difference between two XML documents by comparing an original XML document with a modified version of the XML document.
  • the XML diff utility generates an output that identifies differences in the modified XML document and the original version of the document at various nodes.
  • the output generated by applying the XML diff utility may be in XML diff language (XDL), which describes differences between two XML documents.
  • XDL diff language An output of XML diff utility is also known as XDL diffgram or just diffgram, and is a structured tree of changes that should be applied to various nodes of the original XML document in order to get the modified XML document.
  • the SVP 200 may determine if any customization has been made to the XML software application. If it is determined that no customization has been made to the XML software application, as illustrated by a block 206 , no versioning may be required. However, if there has been any customization to the XML software application, at a block 208 the SVP 200 may generate and save a customization diff file (CDF).
  • CDF customization diff file
  • the customization diff file may include an XDL namespace definition, a hash value of the original XML application, which can be used for verification that the original XML application has not been altered after a diff was performed, list of various options selected when the customization diff file was generated and various node operations specifying the changes that should be applied to various nodes of the original XML application in order to get the modified XML application.
  • Various nodes in the customization diff file may be identified by the prefix xd, and may represent operations including a node operation, a change operation, a remove operation and an add operation.
  • the functioning of an XML diff utility and the representation of an XDL file are well known to those of ordinary skill in the art and therefore are not described in further detail herein.
  • the SVP 200 may apply the XML diff utility to a later version of the XML application program to generate a versioning diff file (VDF), where the versioning diff file identifies various operations that should be performed on the original XML application to get the later version of the XML application.
  • VDF versioning diff file
  • the versioning diff file may include various xd nodes identifying operations including a node operation, a change operation, a remove operation and an add operation.
  • the SVP 200 analyzes the customization diff file and the versioning diff file to generate a merge file, which enumerates various operations that should be performed on the original XML application to generate a later version of the XML application including various modifications that may be made by a user on the original XML application.
  • a merge file which enumerates various operations that should be performed on the original XML application to generate a later version of the XML application including various modifications that may be made by a user on the original XML application.
  • a user may be have modified a particular element from the original XML application and the later version of the XML application may also have altered or moved that particular element, therefore, the merging operation may have to reconcile such multiple operations on various elements.
  • the merging of the customization diff file and the versioning diff file to obtain the merged element that may be used to generate a difference file between the original XML document and the later version of the XML documents with the customizations is illustrated in further detail in FIGS. 5A-5C .
  • the SVP 200 applies the merge file on the original XML application to generate a later version of the XML application including various modifications that may be made by a user on the original XML application.
  • FIGS. 4A and 4B illustrate block diagrams 220 and 235 describing an implementation algorithm used in merging the customization diff file and the versioning diff file.
  • 222 is the original XML application
  • 224 is the later version of the XML application
  • 226 is the customized version of the XML application.
  • the customization diff file provides the difference 228 between the original XML application 222 and the customized XML application 226
  • the versioning diff file provides the difference 230 between the original XML application 222 and the later version 224 of the XML application.
  • the VSP 200 merges the differences 228 and 230 to generate a merged file in a manner such that application of the differences 232 specified by the merged file to the original XML application 222 may result in generating the customized later version of the XML application 234 .
  • FIG. 4C illustrates block diagrams 236 describing how the algorithm used in merging a customization diff file and a versioning diff file described above may be extended to several versions and several layers of customization on an XML file.
  • FIG. 4C assume that once the customized second version of the XML application 234 is obtained, a third version of the XML application 237 is developed. At the same time assume that the user has further customized the customized second version of the XML application 234 to get a customized XML application 238 .
  • the above process of generating a customized later version of an XML application can be generalized as further shown in FIG. 4C by performing the above steps on an n-1 th version of the XML application 243 .
  • the n-1 th version of the XML application 243 is further customized to generate a customized n-1 th version of the XML application 244
  • the later version of the XML application is denoted by an XML application file 245 .
  • application of the merged diff file 248 on the n-1 th version of the XML application 243 may generate the customized nth version of the XML application 249 .
  • a merging program 250 illustrates combining the customization diff file and the versioning diff file to generate a merged file with the combined differences 232 .
  • the merging program 250 may analyze a current node in the versioning diff file.
  • a node in an XDL file may represent a diff operation by using a prefix of xd.
  • the merging program 250 may identify the diff operations in the versioning diff file by looking for nodes having the prefix xd.
  • the merging program 250 determines whether the diff operation specified by the current versioning diff file node is an add operation specifying addition of an element to the XML file.
  • an add operation in the versioning diff file represents newly added components of the later version of the XML application, these operations should also be included in generating the customized later version of the XML application. Therefore, if the merging program 20 determines the operation specified by the current versioning diff file node to be an add operation, at a block 256 , that add operation is added into the merge file.
  • the merging program 250 analyzes the customization diff file to find a matching customization diff file node with a sequence identification matching the current node in the versioning diff file. If no matching customization diff file node is found, at a block 260 the merging program 250 determines if there are any additional nodes in the versioning diff file that need to be processed. If no additional node is found, the merging program 250 ends. However, if an additional node is found in the versioning diff file, a block 262 may replace the current node with the additional node, analyze the operation specified by the current node and transfer control back to the node 254 .
  • the merging program 250 determines the operation type specified by that matching customization diff file node.
  • each node in the customization diff file may also specify any of various operations including a node operation, an add operation, a change operation or a remove operation. If it is determined at the block 264 that the operation specified by the matching customization diff file node is an add operation, at a block 266 , the merging program 150 may merge the customization diff file add operation into the merged file. Thus, any add operation specified by a user into the customized XML application will be preserved into the customized later version of the XML application.
  • the merging program 250 may determine if the operation specified by the current versioning diff file node is one of a node operation, a change operation and a remove operation, and based on the determination, transfers control to one of blocks 270 , 272 and 274 , respectively.
  • the block 270 which receives control if the current versioning diff file node specifies a node operation, may determine if the matching customization diff file node specifies one of a node operation, a change operation and a remove operation. If the matching customization diff file node specifies a change operation, a block 276 may merge various operations specified by each of the child node of the versioning diff file node into the merge file. The block 276 may ensure that if the matching customization diff file node specifies a change operation, that change operation is performed on each of the child node of that matching customization diff file node, thus ensuring that if any child nodes were added in the later version of the XML application, they carry the customization specified by the matching customization diff file node. Similarly, if the matching customization diff file node specifies a node operation, a block 278 may also merge various operations specified by each of the child node of the versioning diff file node into the merge file.
  • a block 280 may determine if the remove operation also specifies removing a sub-tree, meaning that the remove operation needs to be performed on each of the child nodes. This may be the case if, during customization, the user has decided to remove all the child nodes of a given node. In this situation, a block 282 may ignore the operation specified by the current versioning diff file node, in this case a node operation, for each of the child nodes, as these child nodes are to be removed according to the matching customization diff file node. If there is no specification for removing the sub-tree, at a block 284 , each of the child node operations of the matching customization diff file node may be merged into the merge file.
  • the block 272 which receives control if a versioning diff file node specifies a change operation, may determine if the matching customization diff file node specifies one of a node operation, a change operation and a remove operation. If the matching customization diff file node specifies a change operation, a block 286 may merge the change operation into the merge file. On the other hand if the matching customization diff file node specifies a node operation, a block 288 may convert that node operation to a change operation as specified by the current versioning diff file node. Changing each node operation of matching customization diff file node into a change operation as specified by the current versioning diff file node ensures that a change made in the later version. of the XML application is carried onto the later version of the customized XML application.
  • a block 290 may determine if the remove operation also specifies removing a sub-tree, meaning that the remove operation needs to be performed on each of the child nodes. This may be the case if, during customization, the user has decided to remove all the child nodes of a given node. In this situation, a block 292 may ignore the operation specified by the current versioning diff file node, in this case a node operation, for each of the child nodes, as these nodes are to be removed according to the matching customization diff file node.
  • the merging program 250 may determine if the matching customization diff file node has any children. If the matching customization diff file node does not have any children, as specified by a block 296 , the merging program 250 may ignore the operation specified by the versioning diff file node, as there are no child nodes to which the versioning diff file node operation needs to be applied to. If the matching customization diff file node has children, as specified by a block 298 , the operation specified by the current versioning diff file node, in this case a change operation, may be applied to each of the child nodes of the matching customization diff file node and the matching customization diff file nodes may be merged into the merge file.
  • the block 274 may determine if the matching customization diff file node specifies one of a node operation, a change operation and a remove operation. If it is determined that the matching customization diff file node is a node operation, a block 300 may convert the matching customization diff file node operation to a remove operation as specified by the current versioning diff file node and merge the converted customization diff file node into to the merge file. This ensures that any remove operation necessary to get the later version of the XML application is included in the merge file.
  • a block 302 may convert the matching customization diff file node operation to a remove operation as specified by the current versioning diff file node and merge the converted customization diff file node into to the merge file. Again, this ensures that any remove operation necessary to get the later version of the XML application is included in the merge file. Note that if, during customization, a user had performed a change operation on an element of the XML application and if the later version of the XML application removes that element, the change to that element will be lost in the customized later version of the XML application.
  • a block 304 may determine if the current versioning diff file node specifying the remove operation specifies removing a sub-tree and blocks 306 and 308 may determine if the matching customization diff file node remove operation also specifies removing a sub-tree. If both the current versioning diff file node and the matching customization diff file node specify removing a sub-tree, at a block 310 , the merging program 250 may remove all children nodes to the matching customization diff file node, thus removing the duplicate remove operations.
  • the merging program 250 may merge each of the child nodes of the matching customization diff file node without any change to the merge file. Finally, if only one of the current versioning diff file node and the matching customization diff file node specifies removing a sub-tree, as specified by a block 314 , the merging program 250 may ignore the operation specified by the versioning diff file node.
  • FIG. 6A illustrates an original form 350 used to receive certain customer data.
  • a person of ordinary skill in the art would recognize that various fields such as name, description, actual revenue, etc., may be specified by various elements in an original XML form application file.
  • FIG. 6B illustrates a customized version form 352 of the original form 350 , where the user has added two new fields, namely, status and priority, modified title of one of the fields from “actual close date” to “closed date,” and removed a field “stage.”
  • FIG. 6C illustrates a second version form 354 of the XML form application, where the stage and the probability fields have been removed, a new field called profit is added and the title of an “actual revenue” field has been changed to “revenue.”
  • the XML diff utility may be applied to the original XML application file that generated the original form 350 and a customized XML application file that generates the customized version form 352 to generate a customization diff file.
  • the XML diff utility may be also applied to the original XML application file that generated the original form 350 and a second version XML application file that generates the second version form 354 to generate a versioning diff file.
  • the merging program 250 may be used to generate a merged diff file that can be used to generate a merged form 356 , as specified in FIG. 6D .
  • the customizations made by the user namely addition of the “status” and “priority” fields, removal of “stage” filed, and change of “actual close date” to “closed date” are carried over onto the merged form 356 .
  • the changes introduced in the second version form 356 namely removing of the “stage” and “priority” fields, addition of the “profit” field and changing of “actual revenue” to “revenue” are also carried forward to the merged form 356 .

Abstract

An extensible markup language (XML) versioning system allows versioning an XML based application software so that customizations made to an early version of the application software can be easily incorporated into the later version of the application software. The XML versioning system identifies XML semantic blocks in a customized early version of an application software to determine areas including customization metadata, defines the differences between the customized early version of an application software and a later revision of the application software in the determined areas, and provides a procedure to integrate the customization metadata into the later version of the application software.

Description

    TECHNICAL FIELD
  • This patent relates generally to computer languages and more particularly to a markup language used to exchange information.
  • BACKGROUND
  • Over the past decade, the world wide web (web) has become an extremely popular vehicle for information exchange and electronic commerce over the Internet. The web uses various markup languages such as hypertext markup language (HTML), extensible markup language (XML), etc., to communicate information over the Internet. Among these languages, the XML has become the de-facto metadata language for describing application components such as forms, flows, schemas, and the like.
  • XML is a simple, very flexible text format derived from standard generalized markup language (SGML) protocol. Originally designed to meet the challenges of large-scale electronic publishing, XML is also playing an especially important role in the exchange of a wide variety of data on the web and elsewhere. Unlike HTML, XML is meant for storing data, not just for displaying the data. A number of software development companies provide a number of different application software using XML. Generally, software development companies provide the source code of the application software to users and the users often customize the application software to their own needs. On the other hand the software development companies continuously release updated versions of the application software with new features and capabilities. These simultaneous updating of application software, by the end users as well as by the software development company poses a problem in carrying the user updates from one version to next version of the application software release.
  • This is particularly true in the case of XML based applications. As XML is a preferred markup language for designing electronic commerce, each of the various user companies have different needs in terms of forms, databases, etc., provided by the applications. For example, a generic restaurant management software provided by a software development company may be customized by a client restaurant in a particular market to conform more closely to its local business needs. However, when the software development company releases the next version of the generic restaurant management software, the customizations made by the client restaurant will generally not be incorporated in the new version, making it necessary for the client to again make modifications to the newer version of the restaurant management software. Therefore, there is a need to provide an XML versioning system that allows users of XML application software to carry customizations from one version of the application software to the next.
  • For applications designed using XML, the customizations are generally described in the application file by metadata, which has to be separated from the XML semantic blocks. Current software versioning system that work with traditional programming languages work on text strings and analyze each text string at a time. However, for XML based applications, sometimes, the entire application may be stored in a single text line, which makes software versioning overly cumbersome and in some cases almost impossible.
  • SUMMARY
  • An XML versioning system allows versioning an extensible markup language (XML) based application software so that customizations made to an early version of the application software can be easily incorporated into the later version of the application software. The XML versioning system identifies XML semantic blocks in a customized early version of an application software to determine areas including customization metadata, defines the differences between the customized early version of an application software and a later revision of the application software in the determined areas, and provides a procedure to integrate the customization metadata into the later version of the application software.
  • BRIEF DESCRIPTION OF DRAWINGS
  • FIG. 1 is a block diagram of a network interconnecting a plurality of computing resources;
  • FIG. 2 is a block diagram of a computer that may be connected to the network of FIG. 1;
  • FIG. 3 illustrates a flowchart of a software versioning program;
  • FIGS. 4A-4C illustrate a method of using “XML diff” files during operation of the XML versioning program of FIG. 3;
  • FIGS. 5A-5C illustrate a flowchart of a merging program used by the XML versioning program of FIG. 3; and
  • FIGS. 6A-6D illustrate various application forms generated by XML applications illustrating use of the XML versioning program of FIG. 3.
  • DESCRIPTION
  • Although the following text sets forth a detailed description of numerous different embodiments, it should be understood that the legal scope of the description is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment since describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims defining the invention.
  • It should also be understood that, unless a term is expressly defined in this patent using the sentence “As used herein, the term ‘______’ is hereby defined to mean . . . ” or a similar sentence, there is no intent to limit the meaning of that term, either expressly or by implication, beyond its plain or ordinary meaning, and such term should not be interpreted to be limited in scope based on any statement made in any section of this patent (other than the language of the claims). To the extent that any term recited in the claims at the end of this patent is referred to in this patent in a manner consistent with a single meaning, that is done for sake of clarity only so as to not confuse the reader, and it is not intended that such claim term by limited, by implication or otherwise, to that single meaning. Finally, unless a claim element is defined by reciting the word “means” and a function without the recital of any structure, it is not intended that the scope of any claim element be interpreted based on the application of 35 U.S.C. § 112, sixth paragraph.
  • Network
  • FIG. 1 illustrates a network 10 that may be used to implement an XML versioning system described herein. The network 10 may be the Internet, a virtual private network (VPN), or any other network that allows one or more computers, communication devices, databases, etc., to be communicatively connected to each other. The network 10 may be connected to a personal computer 12 and a computer terminal 14 via an Ethernet 16 and a router 18, and a landline 20. On the other hand, the network 10 may wirelessly connected to a laptop computer 22 and a personal data assistant 24 via a wireless communication station 26 and a wireless link 28. Similarly, a server 30 may be connected to the network 10 using a communication link 32 and a mainframe 34 may be connected to the network 10 using another communication link 36. As it will be described below in further detail, one or more components of the dynamic software provisioning system may be stored and operated on any of the various devices connected to the network 10.
  • Computer
  • FIG. 2 illustrates a computing device in the form of a computer 110 that may be connected to the network 10 and used to implement one or more components of the dynamic software provisioning system. Components of the computer 110 may include, but are not limited to a processing unit 120, a system memory 130, and a system bus 121 that couples various system components including the system memory to the processing unit 120. The system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
  • Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
  • The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation, FIG. 1 illustrates operating system 134, application programs 135, other program modules 136, and program data 137.
  • The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, FIG. 1 illustrates a hard disk drive 140 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 151 that reads from or writes to a removable, nonvolatile magnetic disk 152, and an optical disk drive 155 that reads from or writes to a removable, nonvolatile optical disk 156 such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive 141 is typically connected to the system bus 121 through a non-removable memory interface such as interface 140, and magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such as interface 150.
  • The drives and their associated computer storage media discussed above and illustrated in FIG. 1, provide storage of computer readable instructions, data structures, program modules and other data for the computer 110. In FIG. 1, for example, hard disk drive 141 is illustrated as storing operating system 144, application programs 145, other program modules 146, and program data 147. Note that these components can either be the same as or different from operating system 134, application programs 135, other program modules 136, and program data 137. Operating system 144, application programs 145, other program modules 146, and program data 147 are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into the computer 20 through input devices such as a keyboard 162 and pointing device 161, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may includea microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 190.
  • The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in FIG. 1. The logical connections depicted in FIG. 1 include a local area network (LAN) 171 and a wide area network (WAN) 173, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
  • When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, FIG. 1 illustrates remote application programs 185 as residing on memory device 181. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
  • XML Versioning System
  • FIG. 3 illustrates a flowchart of a software versioning program (SVP) 200 that may be implemented using the computer 110 of FIG. 2. Generally, the SVP 200 may be used to version a software used on any of various computing devices 12, 14, etc., connected to the network 10 of FIG. 1. At a block 202, the SVP 200 analyzes an XML software application running on the computer 110 to determine if there is any customization metadata that exists in the software application. To determine the existence of any customization metadata, the SVP 200 may apply an “XML diff” utility program on a particular software application running on the computer 110 and the original version of the particular software application.
  • Generally an XML diff utility determines difference between two XML documents by comparing an original XML document with a modified version of the XML document. The XML diff utility generates an output that identifies differences in the modified XML document and the original version of the document at various nodes. The output generated by applying the XML diff utility may be in XML diff language (XDL), which describes differences between two XML documents. An output of XML diff utility is also known as XDL diffgram or just diffgram, and is a structured tree of changes that should be applied to various nodes of the original XML document in order to get the modified XML document.
  • After analyzing the XML software application, at a block 204, the SVP 200 may determine if any customization has been made to the XML software application. If it is determined that no customization has been made to the XML software application, as illustrated by a block 206, no versioning may be required. However, if there has been any customization to the XML software application, at a block 208 the SVP 200 may generate and save a customization diff file (CDF).
  • The customization diff file may include an XDL namespace definition, a hash value of the original XML application, which can be used for verification that the original XML application has not been altered after a diff was performed, list of various options selected when the customization diff file was generated and various node operations specifying the changes that should be applied to various nodes of the original XML application in order to get the modified XML application. Various nodes in the customization diff file may be identified by the prefix xd, and may represent operations including a node operation, a change operation, a remove operation and an add operation. The functioning of an XML diff utility and the representation of an XDL file are well known to those of ordinary skill in the art and therefore are not described in further detail herein.
  • After generating the customization diff file, at a block 210, the SVP 200 may apply the XML diff utility to a later version of the XML application program to generate a versioning diff file (VDF), where the versioning diff file identifies various operations that should be performed on the original XML application to get the later version of the XML application. Again the versioning diff file may include various xd nodes identifying operations including a node operation, a change operation, a remove operation and an add operation.
  • Subsequently, at a block 212 the SVP 200 analyzes the customization diff file and the versioning diff file to generate a merge file, which enumerates various operations that should be performed on the original XML application to generate a later version of the XML application including various modifications that may be made by a user on the original XML application. One of ordinary skill in the art would appreciate that the operation of merging the customization diff file and the versioning diff file can be highly complex due to numerous differences between the original XML application, the customized XML application and the later version of the XML application. For example, a user may be have modified a particular element from the original XML application and the later version of the XML application may also have altered or moved that particular element, therefore, the merging operation may have to reconcile such multiple operations on various elements. The merging of the customization diff file and the versioning diff file to obtain the merged element that may be used to generate a difference file between the original XML document and the later version of the XML documents with the customizations is illustrated in further detail in FIGS. 5A-5C.
  • Finally, at a block 214, the SVP 200 applies the merge file on the original XML application to generate a later version of the XML application including various modifications that may be made by a user on the original XML application.
  • FIGS. 4A and 4B illustrate block diagrams 220 and 235 describing an implementation algorithm used in merging the customization diff file and the versioning diff file. Specifically, in FIG. 4A, assume that 222 is the original XML application, 224 is the later version of the XML application and 226 is the customized version of the XML application. The customization diff file provides the difference 228 between the original XML application 222 and the customized XML application 226, whereas the versioning diff file provides the difference 230 between the original XML application 222 and the later version 224 of the XML application. As specified in the block diagram 235, the VSP 200 merges the differences 228 and 230 to generate a merged file in a manner such that application of the differences 232 specified by the merged file to the original XML application 222 may result in generating the customized later version of the XML application 234.
  • On the other hand, FIG. 4C illustrates block diagrams 236 describing how the algorithm used in merging a customization diff file and a versioning diff file described above may be extended to several versions and several layers of customization on an XML file. Specifically, in FIG. 4C, assume that once the customized second version of the XML application 234 is obtained, a third version of the XML application 237 is developed. At the same time assume that the user has further customized the customized second version of the XML application 234 to get a customized XML application 238. In this case, to obtain a third version of customized XML application, one can generate a second customization diff file 239, a second versioning diff file 240, and merge these two diff files to generate a merged diff file 241, wherein the application of the merged diff file 241 on the customized second version of the XML application 234 will provide us a customized third version of the XML application 242.
  • The above process of generating a customized later version of an XML application can be generalized as further shown in FIG. 4C by performing the above steps on an n-1th version of the XML application 243. Specifically, the n-1th version of the XML application 243 is further customized to generate a customized n-1th version of the XML application 244, whereas the later version of the XML application is denoted by an XML application file 245. One can generate a customization diff file 246 and a versioning diff file 247 as well as a merged diff file 248 as specified above. Subsequently, application of the merged diff file 248 on the n-1th version of the XML application 243 may generate the customized nth version of the XML application 249.
  • Now referring to FIGS. 5A-5C, a merging program 250 illustrates combining the customization diff file and the versioning diff file to generate a merged file with the combined differences 232. At a block 252, the merging program 250 may analyze a current node in the versioning diff file. According to XDL namespace definition a node in an XDL file may represent a diff operation by using a prefix of xd. Thus the merging program 250 may identify the diff operations in the versioning diff file by looking for nodes having the prefix xd. At a block 254, the merging program 250 determines whether the diff operation specified by the current versioning diff file node is an add operation specifying addition of an element to the XML file. Because an add operation in the versioning diff file represents newly added components of the later version of the XML application, these operations should also be included in generating the customized later version of the XML application. Therefore, if the merging program 20 determines the operation specified by the current versioning diff file node to be an add operation, at a block 256, that add operation is added into the merge file.
  • If the diff operation of the versioning diff file is not an add operation, at a block 258 the merging program 250 analyzes the customization diff file to find a matching customization diff file node with a sequence identification matching the current node in the versioning diff file. If no matching customization diff file node is found, at a block 260 the merging program 250 determines if there are any additional nodes in the versioning diff file that need to be processed. If no additional node is found, the merging program 250 ends. However, if an additional node is found in the versioning diff file, a block 262 may replace the current node with the additional node, analyze the operation specified by the current node and transfer control back to the node 254.
  • If the merging program 250 finds a matching customization diff file node, at a block 264, the merging program 250 determines the operation type specified by that matching customization diff file node. Just as in the case of the versioning diff file, each node in the customization diff file may also specify any of various operations including a node operation, an add operation, a change operation or a remove operation. If it is determined at the block 264 that the operation specified by the matching customization diff file node is an add operation, at a block 266, the merging program 150 may merge the customization diff file add operation into the merged file. Thus, any add operation specified by a user into the customized XML application will be preserved into the customized later version of the XML application.
  • Subsequently, at a block 268, the merging program 250 may determine if the operation specified by the current versioning diff file node is one of a node operation, a change operation and a remove operation, and based on the determination, transfers control to one of blocks 270, 272 and 274, respectively.
  • The block 270, which receives control if the current versioning diff file node specifies a node operation, may determine if the matching customization diff file node specifies one of a node operation, a change operation and a remove operation. If the matching customization diff file node specifies a change operation, a block 276 may merge various operations specified by each of the child node of the versioning diff file node into the merge file. The block 276 may ensure that if the matching customization diff file node specifies a change operation, that change operation is performed on each of the child node of that matching customization diff file node, thus ensuring that if any child nodes were added in the later version of the XML application, they carry the customization specified by the matching customization diff file node. Similarly, if the matching customization diff file node specifies a node operation, a block 278 may also merge various operations specified by each of the child node of the versioning diff file node into the merge file.
  • On the other hand, if the matching customization diff file node specifies a remove operation, a block 280 may determine if the remove operation also specifies removing a sub-tree, meaning that the remove operation needs to be performed on each of the child nodes. This may be the case if, during customization, the user has decided to remove all the child nodes of a given node. In this situation, a block 282 may ignore the operation specified by the current versioning diff file node, in this case a node operation, for each of the child nodes, as these child nodes are to be removed according to the matching customization diff file node. If there is no specification for removing the sub-tree, at a block 284, each of the child node operations of the matching customization diff file node may be merged into the merge file.
  • Now referring to the FIG. 5B, the block 272, which receives control if a versioning diff file node specifies a change operation, may determine if the matching customization diff file node specifies one of a node operation, a change operation and a remove operation. If the matching customization diff file node specifies a change operation, a block 286 may merge the change operation into the merge file. On the other hand if the matching customization diff file node specifies a node operation, a block 288 may convert that node operation to a change operation as specified by the current versioning diff file node. Changing each node operation of matching customization diff file node into a change operation as specified by the current versioning diff file node ensures that a change made in the later version. of the XML application is carried onto the later version of the customized XML application.
  • On the other hand, if it is determined that the matching customization diff file node specifies a remove operation, a block 290 may determine if the remove operation also specifies removing a sub-tree, meaning that the remove operation needs to be performed on each of the child nodes. This may be the case if, during customization, the user has decided to remove all the child nodes of a given node. In this situation, a block 292 may ignore the operation specified by the current versioning diff file node, in this case a node operation, for each of the child nodes, as these nodes are to be removed according to the matching customization diff file node. If there is no specification for removing the sub-tree, at a block 294, the merging program 250 may determine if the matching customization diff file node has any children. If the matching customization diff file node does not have any children, as specified by a block 296, the merging program 250 may ignore the operation specified by the versioning diff file node, as there are no child nodes to which the versioning diff file node operation needs to be applied to. If the matching customization diff file node has children, as specified by a block 298, the operation specified by the current versioning diff file node, in this case a change operation, may be applied to each of the child nodes of the matching customization diff file node and the matching customization diff file nodes may be merged into the merge file.
  • Now referring to the FIG. 5C, the block 274 may determine if the matching customization diff file node specifies one of a node operation, a change operation and a remove operation. If it is determined that the matching customization diff file node is a node operation, a block 300 may convert the matching customization diff file node operation to a remove operation as specified by the current versioning diff file node and merge the converted customization diff file node into to the merge file. This ensures that any remove operation necessary to get the later version of the XML application is included in the merge file.
  • If it is determined that the matching customization diff file node is a change operation, a block 302 may convert the matching customization diff file node operation to a remove operation as specified by the current versioning diff file node and merge the converted customization diff file node into to the merge file. Again, this ensures that any remove operation necessary to get the later version of the XML application is included in the merge file. Note that if, during customization, a user had performed a change operation on an element of the XML application and if the later version of the XML application removes that element, the change to that element will be lost in the customized later version of the XML application.
  • If it is determined that the matching customization diff file node is a remove operation, a block 304 may determine if the current versioning diff file node specifying the remove operation specifies removing a sub-tree and blocks 306 and 308 may determine if the matching customization diff file node remove operation also specifies removing a sub-tree. If both the current versioning diff file node and the matching customization diff file node specify removing a sub-tree, at a block 310, the merging program 250 may remove all children nodes to the matching customization diff file node, thus removing the duplicate remove operations. On the other hand, if neither of the versioning diff file node and the matching customization diff file node specifies removing a sub-tree, at a block 312, the merging program 250 may merge each of the child nodes of the matching customization diff file node without any change to the merge file. Finally, if only one of the current versioning diff file node and the matching customization diff file node specifies removing a sub-tree, as specified by a block 314, the merging program 250 may ignore the operation specified by the versioning diff file node.
  • Having described the operation of the merging program 250 above, application of the merging program 250 is described below in further detail with respect to an XML form application. Specifically, FIG. 6A illustrates an original form 350 used to receive certain customer data. A person of ordinary skill in the art would recognize that various fields such as name, description, actual revenue, etc., may be specified by various elements in an original XML form application file.
  • FIG. 6B illustrates a customized version form 352 of the original form 350, where the user has added two new fields, namely, status and priority, modified title of one of the fields from “actual close date” to “closed date,” and removed a field “stage.” FIG. 6C illustrates a second version form 354 of the XML form application, where the stage and the probability fields have been removed, a new field called profit is added and the title of an “actual revenue” field has been changed to “revenue.”
  • The XML diff utility may be applied to the original XML application file that generated the original form 350 and a customized XML application file that generates the customized version form 352 to generate a customization diff file. Similarly, the XML diff utility may be also applied to the original XML application file that generated the original form 350 and a second version XML application file that generates the second version form 354 to generate a versioning diff file. Subsequently the merging program 250 may be used to generate a merged diff file that can be used to generate a merged form 356, as specified in FIG. 6D.
  • As seen in the merged form 356, the customizations made by the user, namely addition of the “status” and “priority” fields, removal of “stage” filed, and change of “actual close date” to “closed date” are carried over onto the merged form 356. Similarly, the changes introduced in the second version form 356, namely removing of the “stage” and “priority” fields, addition of the “profit” field and changing of “actual revenue” to “revenue” are also carried forward to the merged form 356.
  • Although the forgoing text sets forth a detailed description of numerous different embodiments of the invention, it should be understood that the scope of the invention is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment of the invention because describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims defining the invention.
  • Thus, many modifications and variations may be made in the techniques and structures described and illustrated herein without departing from the spirit and scope of the present invention. Accordingly, it should be understood that the methods and apparatus described herein are illustrative only and are not limiting upon the scope of the invention.

Claims (23)

1. A method of versioning an XML document, comprising:
(a) generating a customization difference file specifying customization operations to be performed on an XML document;
(b) generating a versioning difference file specifying versioning operations to be performed on the XML document; and
(c) merging the customization difference file and the versioning difference file to generate a merged difference file.
2. A method of claim 1, further comprising operating a number of difference operations specified in the merged difference file on the XML document.
3. A method of claim 2, wherein the XML document is an XML source file for at least one of: (1) a business process; (2) a business application; and (3) a business form.
4. A method of claim 1, wherein each of the customization difference file, the versioning difference file and the merged difference file include a number of difference operations including at least one of: (1) a node operation; (2) an add operation; (3) a change operation and (4) a remove operation.
5. A method of claim 1, wherein merging the customization difference file and the versioning difference file further comprises reconciling a first difference operation in the customization difference file with a second difference operation in the versioning difference file.
6. A method of claim 1, wherein the XML document is an XML application for displaying a form.
7. A method of claim 1, wherein the XML document is stored in a single text line.
8. A method of claim 1, wherein the customization difference file and the versioning difference file are generated by an XML diff utility program.
9. A method of claim 1, wherein generating the customization difference file includes the steps of:
(a) identifying a semantic block in the XML document;
(b) determining a first section in the XML document using the semantic block, the first section having customization metadata;
(c) determining a second section in a customized XML document corresponding to the first section; and
(d) determining differences between the first section and the second section.
10. A method of claim 9, wherein the semantic block in the XML document is at least one of: (1) an element; (2) a processing instruction; (3) a CDATA section; (4) a comment and (5) a document type definition (DTD).
11. A method of claim 1, further comprising applying the merged difference file on the XML document using an XML patch program.
12. A computer-readable medium having computer-executable instructions for performing steps comprising:
(a) generating a customization difference file specifying customization operations to be performed on an XML document;
(b) generating a versioning difference file specifying versioning operations to be performed on the XML document; and
(c) merging the customization difference file and the versioning difference file to generate a merged difference file.
13. A computer readable medium of claim 12, further comprising computer-executable instructions for operating a number of difference operations specified in the merged difference file on the XML document.
14. A computer readable medium of claim 12, wherein each of the customization difference file, the versioning difference file and the merged difference file include a number of difference operations including at least one of: (1) a node operation; (2) an add operation; (3) a change operation and (4) a remove operation.
15. A computer readable medium of claim 12, wherein merging the customization difference file and the versioning difference file further comprises reconciling a first difference operation in the customization difference file with a second difference operation in the versioning difference file.
16. A computer readable medium of claim 12, wherein the XML document is an XML application for displaying a form.
17. A computer readable medium of claim 12, wherein the XML document is stored in a single text line.
18. A computer readable medium of claim 12, wherein the customization difference file and the versioning difference file are generated by an XML diff utility program.
19. A computer readable medium of claim 12, wherein generating the customization difference file includes the steps of:
(a) identifying a semantic block in the XML document;
(b) determining a first section in the XML document using the semantic block, the first section having customization metadata;
(c) determining a second section in a customized XML document corresponding to the first section; and
(d) determining differences between the first section and the second section.
20. A computer readable medium of claim 19, wherein the semantic block in the XML document is at least one of: (1) an element; (2) a processing instruction; (3) a CDATA section; (4) a comment and (5) a document type definition (DTD).
21. A computer readable medium of claim 12, further comprising computer-executable instructions for applying the merged difference file on the XML document using an XML patch program.
22. A system for versioning an XML document, comprising:
a first apparatus adapted to generate a customization difference file specifying customization operations to be performed on an XML document;
a second apparatus adapted to generate a versioning difference file specifying versioning operations to be performed on the XML document; and
a third apparatus adapted to merge the customization difference file and the versioning difference file to generate a merged difference file.
23. A system of claim 22, further comprising a fourth apparatus adapted to apply the merged difference file on the XML document using an XML patch program.
US10/999,312 2004-11-30 2004-11-30 System and apparatus for software versioning Abandoned US20060130047A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US10/999,312 US20060130047A1 (en) 2004-11-30 2004-11-30 System and apparatus for software versioning
US11/511,637 US7984424B2 (en) 2004-11-30 2006-08-29 Isolating declarative code to preserve customizations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/999,312 US20060130047A1 (en) 2004-11-30 2004-11-30 System and apparatus for software versioning

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/511,637 Continuation US7984424B2 (en) 2004-11-30 2006-08-29 Isolating declarative code to preserve customizations

Publications (1)

Publication Number Publication Date
US20060130047A1 true US20060130047A1 (en) 2006-06-15

Family

ID=36585590

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/999,312 Abandoned US20060130047A1 (en) 2004-11-30 2004-11-30 System and apparatus for software versioning
US11/511,637 Expired - Fee Related US7984424B2 (en) 2004-11-30 2006-08-29 Isolating declarative code to preserve customizations

Family Applications After (1)

Application Number Title Priority Date Filing Date
US11/511,637 Expired - Fee Related US7984424B2 (en) 2004-11-30 2006-08-29 Isolating declarative code to preserve customizations

Country Status (1)

Country Link
US (2) US20060130047A1 (en)

Cited By (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022383A1 (en) * 2005-07-22 2007-01-25 International Business Machines Corporation Mechanism for converting after image data to a delta level change
US20070157073A1 (en) * 2005-12-29 2007-07-05 International Business Machines Corporation Software weaving and merging
US20070203956A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Metadata Customization Using Diffgrams
US20070226244A1 (en) * 2006-03-21 2007-09-27 International Business Machines Corporation Apparatus, system, and method for modifying an integration software template
US20080028003A1 (en) * 2006-07-28 2008-01-31 Thomas Brueggemann Structured object model merge tool with static integrity constraint observance
US7392471B1 (en) * 2004-07-28 2008-06-24 Jp Morgan Chase Bank System and method for comparing extensible markup language (XML) documents
US20080163192A1 (en) * 2006-12-29 2008-07-03 Sanjeev Jha Patch management automation tool for unix, aparxml
WO2008092989A1 (en) * 2007-02-02 2008-08-07 Medixine Oy Method and system for customizing an application using xml configuration files
US20080189680A1 (en) * 2007-02-01 2008-08-07 Microsoft Corporation User experience customization framework
US20090144727A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Interpreted multiple product installation
US20090183150A1 (en) * 2008-01-16 2009-07-16 Bea Systems, Inc. System and method for software product versioning packaging, distribution, and patching
US20090204943A1 (en) * 2008-02-12 2009-08-13 Oracle International Corporation Customization creation and update for multi-layer XML customization
US20090205013A1 (en) * 2008-02-12 2009-08-13 Oracle International Corporation Customization restrictions for multi-layer XML customization
US20090204567A1 (en) * 2008-02-12 2009-08-13 Oracle International Corporation Customization syntax for multi-layer xml customization
US20090259993A1 (en) * 2008-04-11 2009-10-15 Oracle International Corporation Sandbox Support for Metadata in Running Applications
US20090313256A1 (en) * 2008-06-13 2009-12-17 Oracle International Corporation Reuse of shared metadata across applications via url protocol
US20100031262A1 (en) * 2008-07-31 2010-02-04 Baird-Gent Jill M Program Schedule Sub-Project Network and Calendar Merge
US20100057836A1 (en) * 2008-09-03 2010-03-04 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US20100070973A1 (en) * 2008-09-17 2010-03-18 Oracle International Corporation Generic wait service: pausing a bpel process
US20100082556A1 (en) * 2008-09-19 2010-04-01 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US20100146291A1 (en) * 2008-12-08 2010-06-10 Oracle International Corporation Secure framework for invoking server-side apis using ajax
US20110107326A1 (en) * 2009-10-30 2011-05-05 Dehaan Michael Paul Systems and methods for space efficient software package management
US20110173601A1 (en) * 2010-01-12 2011-07-14 Google Inc. Operating system auto-update procedure
US8078956B1 (en) * 2007-10-11 2011-12-13 Amdocs Software Systems Limited System, method, and computer program product for creating a second XML form based on a first XML form
US20120066669A1 (en) * 2010-09-14 2012-03-15 International Business Machines Corporation Creating a superseding software release
US20120109905A1 (en) * 2010-11-01 2012-05-03 Architecture Technology Corporation Identifying and representing changes between extensible markup language (xml) files
US20130086095A1 (en) * 2005-07-05 2013-04-04 Oracle International Corporation Making and using abstract xml representations of data dictionary metadata
US8538998B2 (en) 2008-02-12 2013-09-17 Oracle International Corporation Caching and memory optimizations for multi-layer XML customization
US8560938B2 (en) 2008-02-12 2013-10-15 Oracle International Corporation Multi-layer XML customization
US8856737B2 (en) 2009-11-18 2014-10-07 Oracle International Corporation Techniques for displaying customizations for composite applications
US8954942B2 (en) 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
US8993943B2 (en) 2010-10-20 2015-03-31 Trumpf Huettinger Gmbh + Co. Kg Systems for operating multiple plasma and/or induction heating systems and related methods
US20160274889A1 (en) * 2015-03-16 2016-09-22 Microsoft Technology Licensing, Llc Model driven customization framework
US9503006B2 (en) 2010-10-20 2016-11-22 Trumpf Huettinger Gmbh + Co. Kg Plasma and induction heating power supply systems and related methods
JP2017045354A (en) * 2015-08-28 2017-03-02 富士通株式会社 Software development support program, software development support apparatus, and software development support method
CN107430515A (en) * 2015-03-16 2017-12-01 微软技术许可有限责任公司 The Visualization Framework of customizable type in development environment
US20170364701A1 (en) * 2015-06-02 2017-12-21 ALTR Solutions, Inc. Storing differentials of files in a distributed blockchain
US9959114B2 (en) 2015-03-16 2018-05-01 Microsoft Technology Licensing, Llc Representation of customizable types in a development environment
US10078501B2 (en) 2015-03-16 2018-09-18 Microsoft Technology Licensing, Llc Domain specific language modeling framework in a development environment
US10331460B2 (en) * 2016-09-29 2019-06-25 Vmware, Inc. Upgrading customized configuration files
US10503787B2 (en) 2015-09-30 2019-12-10 Oracle International Corporation Sharing common metadata in multi-tenant environment
CN111638903A (en) * 2020-05-08 2020-09-08 北京达佳互联信息技术有限公司 Method and device for generating difference information of different software versions
US10826783B2 (en) * 2016-04-20 2020-11-03 Servicenow, Inc. System and method for custom graph generation
US10970413B2 (en) 2015-06-02 2021-04-06 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US11314807B2 (en) 2018-05-18 2022-04-26 Xcential Corporation Methods and systems for comparison of structured documents

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814198B2 (en) * 2007-10-26 2010-10-12 Microsoft Corporation Model-driven, repository-based application monitoring system
US8255901B2 (en) * 2005-12-16 2012-08-28 Sap Ag Methods and systems for configuring software applications
US8601467B2 (en) * 2006-10-03 2013-12-03 Salesforce.Com, Inc. Methods and systems for upgrading and installing application packages to an application platform
US20080148284A1 (en) * 2006-12-15 2008-06-19 Maui Media Lab Llc Apparatus and method for developing and executing applications with declarative objects
US8024396B2 (en) 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US20080282150A1 (en) * 2007-05-10 2008-11-13 Anthony Wayne Erwin Finding important elements in pages that have changed
US8239505B2 (en) 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US7970892B2 (en) 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US8230386B2 (en) 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
US20090064090A1 (en) * 2007-09-05 2009-03-05 Microsoft Corporation Merged view of application customizations
US8099720B2 (en) 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US8181151B2 (en) 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US8225308B2 (en) 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US7974939B2 (en) 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US7926070B2 (en) 2007-10-26 2011-04-12 Microsoft Corporation Performing requested commands for model-based applications
US8479148B2 (en) * 2007-12-05 2013-07-02 International Business Machines Corporation Computer method and apparatus for model transformation reapply
US9298684B2 (en) * 2008-06-18 2016-03-29 Microsoft Technology Licensing, Llc Implementing custom user interface forms in a personal information manager
US20100070535A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Data schema transformation using declarative transformations
US8732662B1 (en) * 2010-07-21 2014-05-20 Symantec Corporation Adaptive user interface and application features based on user experience level
EP2485143A1 (en) * 2011-02-04 2012-08-08 Siemens Aktiengesellschaft Updating a web package within a manufacturing execution system
GB2503486A (en) * 2012-06-28 2014-01-01 Ibm Managing changes to files
US9075683B2 (en) * 2012-11-29 2015-07-07 Sap Se Memory database complex object deployment
EP3186708A4 (en) 2014-08-28 2018-02-21 EntIT Software LLC Workflow customization
WO2017039623A1 (en) * 2015-08-31 2017-03-09 Hewlett Packard Enterprise Development Lp Generating a combined entity workflow
US10365914B2 (en) 2016-05-03 2019-07-30 Microsoft Technology Licensing, Llc Providing automatic detection and optimization of user experience upgrades based on detected customization
US20200210210A1 (en) * 2018-12-26 2020-07-02 Servicenow, Inc. Systems and methods for enabling widget customization via extension points
JP7279497B2 (en) * 2019-04-26 2023-05-23 日本電気株式会社 TEST CODE GENERATOR, TEST CODE GENERATION METHOD AND PROGRAM
US11954070B2 (en) * 2020-12-18 2024-04-09 The Boeing Company Generation and distribution of technical model viewpoints

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US5822771A (en) * 1993-05-14 1998-10-13 Fujitsu Limited System for management of software employing memory for processing unit with regulatory information, for limiting amount of use and number of backup copies of software
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
US6904588B2 (en) * 2001-07-26 2005-06-07 Tat Consultancy Services Limited Pattern-based comparison and merging of model versions
US7127320B1 (en) * 2004-12-01 2006-10-24 Advanced Micro Devices, Inc. Render-resolve method of obtaining configurations and formatting it for use by semiconductor equipment interfaces
US7127705B2 (en) * 2000-09-06 2006-10-24 Oracle International Corporation Developing applications online
US7188332B2 (en) * 1999-10-05 2007-03-06 Borland Software Corporation Methods and systems for relating a data definition file and a data model for distributed computing
US7194730B2 (en) * 2000-06-03 2007-03-20 International Business Machines Corporation System and method for the configuration of software products

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089588B2 (en) * 2000-01-19 2006-08-08 Reynolds And Reynolds Holdings, Inc. Performance path method and apparatus for exchanging data among systems using different data formats
US7499948B2 (en) * 2001-04-16 2009-03-03 Bea Systems, Inc. System and method for web-based personalization and ecommerce management
US20030188160A1 (en) * 2001-08-02 2003-10-02 Singam Sunder Method and system to securely update files via a network
US20030204425A1 (en) * 2002-04-30 2003-10-30 Kennedy David V. Method and apparatus for creating and processing applications
EP1543423A4 (en) * 2002-07-19 2010-03-31 Synchrologic Inc System and method for utilizing profile information
US7409538B2 (en) * 2003-12-18 2008-08-05 International Business Machines Corporation Update in-use flash memory without external interfaces
US7676790B1 (en) * 2006-08-04 2010-03-09 Lam Research Corporation Plasma processing system component analysis software and methods and systems for creating the same

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US5822771A (en) * 1993-05-14 1998-10-13 Fujitsu Limited System for management of software employing memory for processing unit with regulatory information, for limiting amount of use and number of backup copies of software
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US7188332B2 (en) * 1999-10-05 2007-03-06 Borland Software Corporation Methods and systems for relating a data definition file and a data model for distributed computing
US7194730B2 (en) * 2000-06-03 2007-03-20 International Business Machines Corporation System and method for the configuration of software products
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
US7127705B2 (en) * 2000-09-06 2006-10-24 Oracle International Corporation Developing applications online
US6904588B2 (en) * 2001-07-26 2005-06-07 Tat Consultancy Services Limited Pattern-based comparison and merging of model versions
US7127320B1 (en) * 2004-12-01 2006-10-24 Advanced Micro Devices, Inc. Render-resolve method of obtaining configurations and formatting it for use by semiconductor equipment interfaces

Cited By (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392471B1 (en) * 2004-07-28 2008-06-24 Jp Morgan Chase Bank System and method for comparing extensible markup language (XML) documents
US8886686B2 (en) * 2005-07-05 2014-11-11 Oracle International Corporation Making and using abstract XML representations of data dictionary metadata
US20130086095A1 (en) * 2005-07-05 2013-04-04 Oracle International Corporation Making and using abstract xml representations of data dictionary metadata
US20070022383A1 (en) * 2005-07-22 2007-01-25 International Business Machines Corporation Mechanism for converting after image data to a delta level change
US8266166B2 (en) 2005-07-22 2012-09-11 International Business Machines Corporation Mechanism for converting after image data to a delta level change
US20090157719A1 (en) * 2005-07-22 2009-06-18 International Business Machines Corporation Mechanism for Converting After Image Data to a Delta Level Change
US7499947B2 (en) * 2005-07-22 2009-03-03 International Business Machines Corporation Mechanism for converting after image data to a delta level change
US20070157073A1 (en) * 2005-12-29 2007-07-05 International Business Machines Corporation Software weaving and merging
US20070203956A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Metadata Customization Using Diffgrams
US20070226244A1 (en) * 2006-03-21 2007-09-27 International Business Machines Corporation Apparatus, system, and method for modifying an integration software template
US7958487B2 (en) * 2006-03-21 2011-06-07 International Business Machines Corporation Apparatus, system, and method for modifying an integration software template
US20080028003A1 (en) * 2006-07-28 2008-01-31 Thomas Brueggemann Structured object model merge tool with static integrity constraint observance
US9563417B2 (en) * 2006-12-29 2017-02-07 International Business Machines Corporation Patch management automation tool for UNIX, APARXML
US20080163192A1 (en) * 2006-12-29 2008-07-03 Sanjeev Jha Patch management automation tool for unix, aparxml
US20080189680A1 (en) * 2007-02-01 2008-08-07 Microsoft Corporation User experience customization framework
US8732661B2 (en) * 2007-02-01 2014-05-20 Microsoft Corporation User experience customization framework
WO2008092989A1 (en) * 2007-02-02 2008-08-07 Medixine Oy Method and system for customizing an application using xml configuration files
US8078956B1 (en) * 2007-10-11 2011-12-13 Amdocs Software Systems Limited System, method, and computer program product for creating a second XML form based on a first XML form
US20090144726A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Use of aliasing in an installer
US8645939B2 (en) 2007-12-04 2014-02-04 Oracle International Corporation Use of aliasing in an installer
US8589903B2 (en) 2007-12-04 2013-11-19 Oracle International Corporation Patch attachment facility
US20090144716A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Patch attachment facility
US20090144727A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Interpreted multiple product installation
US9477462B2 (en) 2008-01-16 2016-10-25 Oracle International Corporation System and method for software product versioning packaging, distribution, and patching
US20090183150A1 (en) * 2008-01-16 2009-07-16 Bea Systems, Inc. System and method for software product versioning packaging, distribution, and patching
US20090205013A1 (en) * 2008-02-12 2009-08-13 Oracle International Corporation Customization restrictions for multi-layer XML customization
US8788542B2 (en) * 2008-02-12 2014-07-22 Oracle International Corporation Customization syntax for multi-layer XML customization
US8875306B2 (en) * 2008-02-12 2014-10-28 Oracle International Corporation Customization restrictions for multi-layer XML customization
US8966465B2 (en) * 2008-02-12 2015-02-24 Oracle International Corporation Customization creation and update for multi-layer XML customization
US20090204567A1 (en) * 2008-02-12 2009-08-13 Oracle International Corporation Customization syntax for multi-layer xml customization
US8560938B2 (en) 2008-02-12 2013-10-15 Oracle International Corporation Multi-layer XML customization
US20090204943A1 (en) * 2008-02-12 2009-08-13 Oracle International Corporation Customization creation and update for multi-layer XML customization
US8538998B2 (en) 2008-02-12 2013-09-17 Oracle International Corporation Caching and memory optimizations for multi-layer XML customization
US8782604B2 (en) 2008-04-11 2014-07-15 Oracle International Corporation Sandbox support for metadata in running applications
US20090259993A1 (en) * 2008-04-11 2009-10-15 Oracle International Corporation Sandbox Support for Metadata in Running Applications
US20090313256A1 (en) * 2008-06-13 2009-12-17 Oracle International Corporation Reuse of shared metadata across applications via url protocol
US8667031B2 (en) 2008-06-13 2014-03-04 Oracle International Corporation Reuse of shared metadata across applications via URL protocol
US20100031262A1 (en) * 2008-07-31 2010-02-04 Baird-Gent Jill M Program Schedule Sub-Project Network and Calendar Merge
US9606778B2 (en) 2008-09-03 2017-03-28 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US20100057836A1 (en) * 2008-09-03 2010-03-04 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US8996658B2 (en) 2008-09-03 2015-03-31 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US10296373B2 (en) 2008-09-17 2019-05-21 Oracle International Corporation Generic wait service: pausing and resuming a plurality of BPEL processes arranged in correlation sets by a central generic wait server
US9122520B2 (en) 2008-09-17 2015-09-01 Oracle International Corporation Generic wait service: pausing a BPEL process
US20100070973A1 (en) * 2008-09-17 2010-03-18 Oracle International Corporation Generic wait service: pausing a bpel process
US20100082556A1 (en) * 2008-09-19 2010-04-01 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US8799319B2 (en) 2008-09-19 2014-08-05 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US20100146291A1 (en) * 2008-12-08 2010-06-10 Oracle International Corporation Secure framework for invoking server-side apis using ajax
US8332654B2 (en) 2008-12-08 2012-12-11 Oracle International Corporation Secure framework for invoking server-side APIs using AJAX
US8806477B2 (en) * 2009-10-30 2014-08-12 Red Hat, Inc. Space efficient software package management
US20110107326A1 (en) * 2009-10-30 2011-05-05 Dehaan Michael Paul Systems and methods for space efficient software package management
US8869108B2 (en) 2009-11-18 2014-10-21 Oracle International Corporation Techniques related to customizations for composite applications
US8856737B2 (en) 2009-11-18 2014-10-07 Oracle International Corporation Techniques for displaying customizations for composite applications
US20110173601A1 (en) * 2010-01-12 2011-07-14 Google Inc. Operating system auto-update procedure
US20120066669A1 (en) * 2010-09-14 2012-03-15 International Business Machines Corporation Creating a superseding software release
US8993943B2 (en) 2010-10-20 2015-03-31 Trumpf Huettinger Gmbh + Co. Kg Systems for operating multiple plasma and/or induction heating systems and related methods
US9503006B2 (en) 2010-10-20 2016-11-22 Trumpf Huettinger Gmbh + Co. Kg Plasma and induction heating power supply systems and related methods
US8984396B2 (en) * 2010-11-01 2015-03-17 Architecture Technology Corporation Identifying and representing changes between extensible markup language (XML) files using symbols with data element indication and direction indication
US20120109905A1 (en) * 2010-11-01 2012-05-03 Architecture Technology Corporation Identifying and representing changes between extensible markup language (xml) files
US8954942B2 (en) 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
US10379847B2 (en) 2015-03-16 2019-08-13 Microsoft Technology Licensing, Llc Representation of customizable types in a development environment
US20160274889A1 (en) * 2015-03-16 2016-09-22 Microsoft Technology Licensing, Llc Model driven customization framework
CN107430515A (en) * 2015-03-16 2017-12-01 微软技术许可有限责任公司 The Visualization Framework of customizable type in development environment
US9959114B2 (en) 2015-03-16 2018-05-01 Microsoft Technology Licensing, Llc Representation of customizable types in a development environment
US10067755B2 (en) * 2015-03-16 2018-09-04 Microsoft Technology Licensing, Llc Model driven customization framework
US10078501B2 (en) 2015-03-16 2018-09-18 Microsoft Technology Licensing, Llc Domain specific language modeling framework in a development environment
US10121019B2 (en) * 2015-06-02 2018-11-06 ALTR Solutions, Inc. Storing differentials of files in a distributed blockchain
US20170364701A1 (en) * 2015-06-02 2017-12-21 ALTR Solutions, Inc. Storing differentials of files in a distributed blockchain
US10970413B2 (en) 2015-06-02 2021-04-06 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
JP2017045354A (en) * 2015-08-28 2017-03-02 富士通株式会社 Software development support program, software development support apparatus, and software development support method
US10503787B2 (en) 2015-09-30 2019-12-10 Oracle International Corporation Sharing common metadata in multi-tenant environment
US10909186B2 (en) 2015-09-30 2021-02-02 Oracle International Corporation Multi-tenant customizable composites
US11429677B2 (en) 2015-09-30 2022-08-30 Oracle International Corporation Sharing common metadata in multi-tenant environment
US10826783B2 (en) * 2016-04-20 2020-11-03 Servicenow, Inc. System and method for custom graph generation
US10331460B2 (en) * 2016-09-29 2019-06-25 Vmware, Inc. Upgrading customized configuration files
US11314807B2 (en) 2018-05-18 2022-04-26 Xcential Corporation Methods and systems for comparison of structured documents
CN111638903A (en) * 2020-05-08 2020-09-08 北京达佳互联信息技术有限公司 Method and device for generating difference information of different software versions

Also Published As

Publication number Publication date
US20060294506A1 (en) 2006-12-28
US7984424B2 (en) 2011-07-19

Similar Documents

Publication Publication Date Title
US20060130047A1 (en) System and apparatus for software versioning
Lindholm A three-way merge for XML documents
US7774300B2 (en) System and method for data model and content migration in content management applications
US20210200944A1 (en) Semantic diff and automerge
US7899820B2 (en) Apparatus and method for transporting business intelligence objects between business intelligence systems
US7469262B2 (en) Customizable metadata merging framework
US6487566B1 (en) Transforming documents using pattern matching and a replacement language
EP1271339B1 (en) Method for generic object oriented description of structured data (GDL)
US7634515B2 (en) Data model and schema evolution
US7836396B2 (en) Automatically collecting and compressing style attributes within a web document
US9104740B2 (en) Enhanced attribute synchronization in a content management system
US7644095B2 (en) Method and system for compound document assembly with domain-specific rules processing and generic schema mapping
US7725454B2 (en) Indexing and searching of information including handler chaining
US20030110472A1 (en) Method and system for generating program source code of a computer application from an information model
US20080028302A1 (en) Method and apparatus for incrementally updating a web page
KR20080043813A (en) Programmability for xml data store for documents
US20080276230A1 (en) Processing bundle file using virtual xml document
US7131066B1 (en) XML based system for updating a domain model and generating a formatted output
US20110238633A1 (en) Electronic file comparator
US20080222183A1 (en) Autonomic rule generation in a content management system
KR20060046015A (en) Xparts-schematized data wrapper
US20070236369A1 (en) Configurable importers and resource writers
US7895155B2 (en) Method and system for updating document content and metadata via plug-in chaining in a content management system
Sinchuk et al. Verified operational transformation for trees
JP4410005B2 (en) Structured document structure conversion device and program

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BURUGAPALLI, SRINIVASA R.;REEL/FRAME:015522/0789

Effective date: 20041129

AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DENGLER, PATRICK;REEL/FRAME:019531/0278

Effective date: 20070411

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001

Effective date: 20141014