US20060130047A1 - System and apparatus for software versioning - Google Patents
System and apparatus for software versioning Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version 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
Description
- This patent relates generally to computer languages and more particularly to a markup language used to exchange information.
- 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.
- 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 ofFIG. 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 ofFIG. 3 ; -
FIGS. 5A-5C illustrate a flowchart of a merging program used by the XML versioning program ofFIG. 3 ; and -
FIGS. 6A-6D illustrate various application forms generated by XML applications illustrating use of the XML versioning program ofFIG. 3 . - 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 anetwork 10 that may be used to implement an XML versioning system described herein. Thenetwork 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. Thenetwork 10 may be connected to a personal computer 12 and acomputer terminal 14 via an Ethernet 16 and arouter 18, and alandline 20. On the other hand, thenetwork 10 may wirelessly connected to alaptop computer 22 and apersonal data assistant 24 via awireless communication station 26 and awireless link 28. Similarly, aserver 30 may be connected to thenetwork 10 using acommunication link 32 and amainframe 34 may be connected to thenetwork 10 using anothercommunication 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 thenetwork 10. - Computer
-
FIG. 2 illustrates a computing device in the form of acomputer 110 that may be connected to thenetwork 10 and used to implement one or more components of the dynamic software provisioning system. Components of thecomputer 110 may include, but are not limited to aprocessing unit 120, asystem memory 130, and asystem bus 121 that couples various system components including the system memory to theprocessing unit 120. Thesystem 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 bycomputer 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 bycomputer 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 withincomputer 110, such as during start-up, is typically stored inROM 131.RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on byprocessing unit 120. By way of example, and not limitation,FIG. 1 illustratesoperating system 134, application programs 135,other program modules 136, andprogram 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 ahard disk drive 140 that reads from or writes to non-removable, nonvolatile magnetic media, amagnetic disk drive 151 that reads from or writes to a removable, nonvolatilemagnetic disk 152, and anoptical disk drive 155 that reads from or writes to a removable, nonvolatileoptical 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 thesystem bus 121 through a non-removable memory interface such asinterface 140, andmagnetic disk drive 151 andoptical disk drive 155 are typically connected to thesystem bus 121 by a removable memory interface, such asinterface 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 thecomputer 110. InFIG. 1 , for example, hard disk drive 141 is illustrated as storingoperating system 144,application programs 145,other program modules 146, andprogram data 147. Note that these components can either be the same as or different fromoperating system 134, application programs 135,other program modules 136, andprogram data 137.Operating system 144,application programs 145,other program modules 146, andprogram 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 thecomputer 20 through input devices such as akeyboard 162 andpointing 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 theprocessing unit 120 through auser 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). Amonitor 191 or other type of display device is also connected to thesystem bus 121 via an interface, such as avideo interface 190. In addition to the monitor, computers may also include other peripheral output devices such asspeakers 197 andprinter 196, which may be connected through an outputperipheral interface 190. - The
computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as aremote computer 180. Theremote 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 thecomputer 110, although only a memory storage device 181 has been illustrated inFIG. 1 . The logical connections depicted inFIG. 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 oradapter 170. When used in a WAN networking environment, thecomputer 110 typically includes amodem 172 or other means for establishing communications over theWAN 173, such as the Internet. Themodem 172, which may be internal or external, may be connected to thesystem bus 121 via theuser input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to thecomputer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 1 illustratesremote 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 thecomputer 110 ofFIG. 2 . Generally, theSVP 200 may be used to version a software used on any ofvarious computing devices 12, 14, etc., connected to thenetwork 10 ofFIG. 1 . At ablock 202, theSVP 200 analyzes an XML software application running on thecomputer 110 to determine if there is any customization metadata that exists in the software application. To determine the existence of any customization metadata, theSVP 200 may apply an “XML diff” utility program on a particular software application running on thecomputer 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, theSVP 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 ablock 206, no versioning may be required. However, if there has been any customization to the XML software application, at ablock 208 theSVP 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, theSVP 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 theSVP 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 inFIGS. 5A-5C . - Finally, at a
block 214, theSVP 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, inFIG. 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 thedifference 228 between theoriginal XML application 222 and the customizedXML application 226, whereas the versioning diff file provides thedifference 230 between theoriginal XML application 222 and thelater version 224 of the XML application. As specified in the block diagram 235, theVSP 200 merges thedifferences differences 232 specified by the merged file to theoriginal XML application 222 may result in generating the customized later version of theXML 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, inFIG. 4C , assume that once the customized second version of theXML application 234 is obtained, a third version of theXML application 237 is developed. At the same time assume that the user has further customized the customized second version of theXML application 234 to get a customizedXML application 238. In this case, to obtain a third version of customized XML application, one can generate a secondcustomization diff file 239, a secondversioning diff file 240, and merge these two diff files to generate amerged diff file 241, wherein the application of the mergeddiff file 241 on the customized second version of theXML application 234 will provide us a customized third version of theXML 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 theXML application 243. Specifically, the n-1th version of theXML application 243 is further customized to generate a customized n-1th version of theXML application 244, whereas the later version of the XML application is denoted by anXML application file 245. One can generate acustomization diff file 246 and aversioning diff file 247 as well as amerged diff file 248 as specified above. Subsequently, application of the mergeddiff file 248 on the n-1th version of theXML application 243 may generate the customized nth version of theXML application 249. - Now referring to
FIGS. 5A-5C , a mergingprogram 250 illustrates combining the customization diff file and the versioning diff file to generate a merged file with the combineddifferences 232. At ablock 252, the mergingprogram 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 mergingprogram 250 may identify the diff operations in the versioning diff file by looking for nodes having the prefix xd. At ablock 254, the mergingprogram 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 mergingprogram 20 determines the operation specified by the current versioning diff file node to be an add operation, at ablock 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 mergingprogram 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 ablock 260 the mergingprogram 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 mergingprogram 250 ends. However, if an additional node is found in the versioning diff file, ablock 262 may replace the current node with the additional node, analyze the operation specified by the current node and transfer control back to thenode 254. - If the
merging program 250 finds a matching customization diff file node, at ablock 264, the mergingprogram 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 theblock 264 that the operation specified by the matching customization diff file node is an add operation, at ablock 266, the mergingprogram 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 mergingprogram 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 ofblocks - 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, ablock 276 may merge various operations specified by each of the child node of the versioning diff file node into the merge file. Theblock 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, ablock 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, ablock 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 ablock 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 , theblock 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, ablock 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, ablock 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, ablock 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 ablock 294, the mergingprogram 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 ablock 296, the mergingprogram 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 ablock 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 , theblock 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, ablock 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 ablock 310, the mergingprogram 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 ablock 312, the mergingprogram 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 ablock 314, the mergingprogram 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 mergingprogram 250 is described below in further detail with respect to an XML form application. Specifically,FIG. 6A illustrates anoriginal 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 customizedversion form 352 of theoriginal 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 asecond 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 customizedversion 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 theoriginal form 350 and a second version XML application file that generates thesecond version form 354 to generate a versioning diff file. Subsequently the mergingprogram 250 may be used to generate a merged diff file that can be used to generate amerged form 356, as specified inFIG. 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 themerged form 356. Similarly, the changes introduced in thesecond 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 themerged 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)
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)
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 |
US20090144726A1 (en) * | 2007-12-04 | 2009-06-04 | Bea Systems, Inc. | Use of aliasing in an installer |
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 |
US20090204567A1 (en) * | 2008-02-12 | 2009-08-13 | Oracle International Corporation | Customization syntax for multi-layer xml customization |
US20090204943A1 (en) * | 2008-02-12 | 2009-08-13 | Oracle International Corporation | Customization creation and update 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)
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 |
US7970892B2 (en) | 2007-06-29 | 2011-06-28 | Microsoft Corporation | Tuning and optimizing distributed systems with declarative models |
US8239505B2 (en) | 2007-06-29 | 2012-08-07 | Microsoft Corporation | Progressively implementing declarative models in distributed systems |
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 |
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 |
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 |
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 |
US11017342B2 (en) * | 2015-08-31 | 2021-05-25 | Micro Focus Llc | 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)
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 |
US7127705B2 (en) * | 2000-09-06 | 2006-10-24 | Oracle International Corporation | Developing applications online |
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 |
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)
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 |
JP2005537538A (en) * | 2002-07-19 | 2005-12-08 | シンクロロジック インコーポレイテッド | System and method for using 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 |
-
2004
- 2004-11-30 US US10/999,312 patent/US20060130047A1/en not_active Abandoned
-
2006
- 2006-08-29 US US11/511,637 patent/US7984424B2/en not_active Expired - Fee Related
Patent Citations (9)
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)
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 |
US20090144716A1 (en) * | 2007-12-04 | 2009-06-04 | Bea Systems, Inc. | Patch attachment facility |
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 |
US20090144727A1 (en) * | 2007-12-04 | 2009-06-04 | Bea Systems, Inc. | Interpreted multiple product installation |
US20090144726A1 (en) * | 2007-12-04 | 2009-06-04 | Bea Systems, Inc. | Use of aliasing in an installer |
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 |
US20090204567A1 (en) * | 2008-02-12 | 2009-08-13 | Oracle International Corporation | Customization syntax 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 |
US20090204943A1 (en) * | 2008-02-12 | 2009-08-13 | Oracle International Corporation | Customization creation and update for multi-layer XML customization |
US8560938B2 (en) | 2008-02-12 | 2013-10-15 | Oracle International Corporation | Multi-layer XML customization |
US20090205013A1 (en) * | 2008-02-12 | 2009-08-13 | Oracle International Corporation | Customization restrictions 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 | |
US11573949B2 (en) | Semantic diff and automerge | |
Lindholm | A three-way merge for XML documents | |
US7774300B2 (en) | System and method for data model and content migration in content management applications | |
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 | |
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 | |
KR101311123B1 (en) | Programmability for xml data store for documents | |
KR20090088901A (en) | Automatically collecting and compressing style attributes within a web document | |
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 | |
US7716653B2 (en) | Configurable importers and resource writers for converting data into another format | |
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 | |
US20050120299A1 (en) | System and method for creation of a network server application page | |
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 |