WO2001042910A1 - System, method and article of manufacture for embedding extension codes in data files for later use - Google Patents

System, method and article of manufacture for embedding extension codes in data files for later use Download PDF

Info

Publication number
WO2001042910A1
WO2001042910A1 PCT/US2000/033448 US0033448W WO0142910A1 WO 2001042910 A1 WO2001042910 A1 WO 2001042910A1 US 0033448 W US0033448 W US 0033448W WO 0142910 A1 WO0142910 A1 WO 0142910A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
extension code
data file
code
extension
Prior art date
Application number
PCT/US2000/033448
Other languages
French (fr)
Inventor
Ross P. Nelson
Scott Posey
David C. Smith
Original Assignee
Stagecast Software, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Stagecast Software, Inc. filed Critical Stagecast Software, Inc.
Priority to AU19574/01A priority Critical patent/AU1957401A/en
Publication of WO2001042910A1 publication Critical patent/WO2001042910A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented

Definitions

  • the present invention relates to extensions and more particularly to transferring extension code from a first application to a second application via a data file.
  • An application may be a program designed to perform a specific function for a user or another application. Examples of applications include word processors, database programs, Web browsers, development tools, drawing, paint, and image editing programs, and communication programs. Typically, an application may be a self-contained entity. An application operates on a body of data and saves and loads that data between invocations. For example, a word processor application saves a document and is able to load that document at a later time. The documents that an application operates on are also called data files.
  • An application may also define a platform that allows third party extensions to contribute additional functionality beyond that implemented by the application's developer.
  • An extension may be defined as additional code that is loaded into the application, enhancing its capabilities, and often appearing to the end user as if it was part of the original program.
  • These extensions e -g- > plug-ins for Photoshop or Visual Basic extensions
  • a data file e.g., a Basic program, in the case of Visual Basic
  • an application developer In order to bundle the extension with the data, an application developer must go through some sort of external packaging process.
  • some prior art applications 102 such as word processors (e.g., Microsoft Word) have defined macro languages 104 that allow user-level extension of a system. These macros are commonly embedded 106 in the data of a document 108 created by the application. When the document 108 is passed to a second user, the second user must have the same application with the particular macro interpreter included with it in order to read the document. If the second user does not have the particular macro interpreter, then the second application is unable to read the macros 106 embedded in the document 108. Note that macros are actually data which is interpreted by a pre-existing macro language already embedded in the application. In our invention, we are packaging code that directly extends the application and did not exist prior to the loading of the extension.
  • word processors e.g., Microsoft Word
  • a system, method and article of manufacture are provided for transferring extension code from a first application to a second application via a data file.
  • a data file is used on a first application that has extension code associated therewith.
  • the extension code includes logic for enhancing the application. At least a portion of the extension code is saved with the data file.
  • the data file is opened on a second application, the data file is manipulated using the second application and the logic of the extension code stored with the data file.
  • the extension code may manipulate the applications as well and may also be written in a programming language similar to that in which the applications are written.
  • the portion of the extension code that is stored with the data file may include a name of the extension code, attributes of the extension code and even a list of contents of the extension code.
  • the portion of the extension code may be saved with the data file only if permission is indicated by the first application, the extension code, or an object that exists in the data file that requires the extension code.
  • the first and second application may also be separate instances of the same application.
  • the applications may comprise graphics-based rule driven applications.
  • extension code existent in the second application may be merged in a database with the extension code that is stored with the data file when the data file is opened on the second application.
  • the extension code may be merged in the database by replacing extension code of an earlier version with extension code of a later version or, when the extension code is not existent in the second application, by adding the extension code stored with the data file to the database.
  • the extension code may also only be merged upon the receipt of permission from a user.
  • extension code associated with a first application may be used on a second application by opening a data file on an application and then retrieving extension code from the data file.
  • This extension code is stored with the data file by another application.
  • the extension code includes logic for enhancing the application and is used to manipulate the data file on the application.
  • information may be provided on how to obtain the extension code if the extension code is non- existent on the data file at least in part. This information may be provided via a link to a site on a network.
  • a data file may be used on an application having extension code associated therewith which includes logic for enhancing the application.
  • the data file may be manipulated using the application and the logic of the extension code. A portion of the extension code may then be saved with the data file for enhancing the application when using another application. As a further option to this embodiment, information may also be provided on how to obtain the extension code if the extension code is not permitted to be stored with the data file.
  • Figure 1 is a schematic diagram of a prior application with macro capability to allow user-level extension of a system.
  • Figure 2 is a high level schematic diagram of an embodiment of the present invention for transferring extension code from a first application to a second application via a data file in accordance with an embodiment of the present invention.
  • FIG. 3 is a schematic diagram of one possible hardware implementation by which the present invention may be carried out in accordance with an embodiment of the present invention.
  • Figure 4 illustrates a flowchart for a method 400 for reading a data file having extensions with an application in accordance with an embodiment of the present invention.
  • Figure 5 illustrates in more detail a flowchart for a method for checking the plug-in folder for extensions in operation 404 of Figure 4 and also for checking the data file for extensions in operation 408 in accordance with an embodiment of the present invention.
  • Figure 6 illustrates a flowchart for a method for merging sets of extensions in operation
  • Figure 7 illustrates a flowchart for a method for loading and running the data file in operation 414 of Figure 4 in accordance with an embodiment of the present invention.
  • Figure 8 illustrates a flowchart for a method 800 for writing extensions with a data file in accordance with an embodiment of the present invention.
  • Figure 9 illustrates a flowchart of a method for writing the required extensions to the file in operation 812 in accordance with an embodiment of the present invention.
  • Figure 10 illustrates a flowchart for a method for writing non-authoring components of a required extension to the file in operation 912 in accordance with an embodiment of the present invention.
  • FIG. 2 is a high level schematic diagram of an embodiment of the present invention which provides for a method for transferring extension code from a first application to a second application via a data file.
  • a data file 202 is used on a first application 204 (of User
  • extension code 206 Associated with the first application is extension code 206 that has logic for enhancing the application 208.
  • Some illustrative types of extensions include extensions that draw graphs, extensions that play movies, extensions that read raw data, and extensions that execute tight loop subroutines.
  • extensions with respect to the present invention allow the addition of a new control structure to an application. User A has acquire the extension as a separate entity and made it available to the application.
  • extension code 212 When the data file is saved to a database 210, a portion 212 of the extension code is also saved with the data file but only if the items represented in the data file require the extension's presence in the application in order to operate correctly. If a data file has no dependence on an extension, no extensions will be written.
  • the stored data file 208 is opened by second application 214 (see User B)
  • the data file may be manipulated using the second application 214 and the logic of the extension code 212 stored with the data file.
  • Extension code 216 existent in the second application 214 may be merged with the extension code 212 that is stored with the data file 202 when the data file is opened on the second application.
  • extension code 212 may also replace the existent extension code 216 of the second application if the extension code 216 of the second application is of an earlier version. Also, if there is no existent extension code in the second application 214, then the stored extension code may be added to the second application.
  • FIG 3 is a schematic diagram of one possible hardware implementation by which the present invention may be carried out. As shown, the present invention may be practiced in the context of a personal computer such as an IBM compatible personal computer, Apple Macintosh computer or UNIX based workstation.
  • a personal computer such as an IBM compatible personal computer, Apple Macintosh computer or UNIX based workstation.
  • FIG. 3 illustrates a typical hardware configuration of a workstation in accordance with one embodiment having a central processing unit 310, such as a microprocessor, and a number of other units interconnected via a system bus 312.
  • the workstation shown in Figure 3 includes a Random Access Memory (RAM) 314, Read Only Memory (ROM) 316, an I/O adapter 318 for connecting peripheral devices such as disk storage units 320 to the bus 312, a user interface adapter 322 for connecting a keyboard 324, a mouse 326, a speaker 328, a microphone 332, and/or other user interface devices such as a touch screen (not shown) to the bus 312, communication adapter 334 for connecting the workstation to a communication network 335 (e.g., a data processing network) and a display adapter 336 for connecting the bus 312 to a display device 338.
  • the workstation typically has resident thereon an operating system such as the Microsoft Windows NT or Windows/95
  • OS Operating System
  • IBM OS/2 operating system
  • MAC OS UNIX operating system
  • Figure 4 illustrates a flowchart for a method 400 for reading a data file having extensions with an application.
  • an application is first launched.
  • a plug-in folder where extensions are stored is checked for extensions in operation 404.
  • operations 406 and 408 a data file is opened and read to check for extensions.
  • operation 410 the extensions from the plug-in folder and the data file are merged and the extension code is loaded into the application.
  • the extensions are then initialized in operation 412 and the data file is loaded and run in operation 414.
  • Figure 5 illustrates in more detail a flowchart for a method for checking the plug-in folder for extensions in operation 404 of Figure 4 and also for checking the data file for extensions in operation 408.
  • an extension is obtained from the plug-in folder in operation 502. If the extension is determined to be legal (or allowed) in decision 504, then a manifest of the extension is read in operation 506. With this manifest, a database entry is made in operation 508 that may include: (1) the extension name, (2) attributes of the extension obtained from the manifest, and (3) a list of the contents of the extension. This process is then repeated for each extension in the plug-in folder. If in decision 504, it is determined that the extension obtained in operation 502 is not legal, then that particular extension is ignored (see operation 510) and the process repeated with the next extension in the plug in folder.
  • a record (or entry) in a database of the data file is pulled in operation 602 and then compared to a plug-in database in decision 604 to determine whether the record exists in the database of the extension.
  • the comparison is based on the extensions' name and version information.
  • the plug-in database contains a series of records describing the extensions.
  • the data file data base is compared to the plug-in database.
  • the record is added to the plug-in data base and the next record from the data file database is pulled.
  • the pulled record does exist in the plug-in database (i.e., the pulled record matches a record in the plug-in database)
  • decision 608 it must be determined whether the same or earlier with respect to plug-in is in the data file database. If it is determined that the same or earlier with respect to plug-in is in fact in the data file database, then the next record is pulled from the data file database. If it is determined that the same or earlier with respect to plug-in is not in the data file database, then in operation 610, the entry in the plug-in database is replaced with the data file database record.
  • a user may be queried in decision 612 whether the plug-in folder should be updated. If the user decides that the plug-in folder should not be updated, then another record may be pulled from the data file database. If, the user decides that the plug-in folder should be updated, then in operation 614 the extension is copied to the plug-in folder and then the next record is pulled from the data file database.
  • Figure 7 illustrates a flowchart for a method for loading and running the data file in operation 414 of Figure 4.
  • operation 702 an object is read from the data file. If the system finds that code already exists in the system required for that particular object (see decision 704), then the next object is read from the data file. In contrast, if the system does not find the required code, then the system looks for the correct entry in the plug-in database in operation
  • FIG. 8 illustrates a flowchart for a method 800 for writing extensions with a data file.
  • an object to be saved Upon receipt of a save command, an object to be saved is obtained by the system in operations 802 and 804. If there are more objects to be saved (see decision 806), then it must be determined in decision 808 whether the object to be saved relies on an extension. If the object to be saved does rely on an extension, then the required extension is added to the database in operation 810 and the next object to be saved is then obtained. If the object to be saved does not rely on an extension, then the next object to be saved is obtained (see decision 808). Once all of the objects to be saved have been obtained (see decision 806), then in operation 812 the required extensions are written to the file.
  • Figure 9 illustrates a flowchart of a method for writing the required extensions to the file in operation 812.
  • operation 902 an empty manifest is created. If an extension is required (see operation 904) then the extension's record is obtained from the plug-in database in operation 906 and the extension's attributes are written to the manifest in operation 908.
  • decision 910 a test is executed to determine whether the extension is allowed to be saved in the file (in other words, does the extension permit itself to be filed). If the required extension is allowed to be saved in the file, then in operation 912 non-authoring components of the required extension are written to the file and then it is determined whether there exists another required extension (see decision 904).
  • the user is then notified of this in operation 914.
  • This notification is designed to notify the user that the data file is incomplete and that the user needs to obtain this extension in order for the data file to work.
  • it is determined whether there exists another required extension see decision 904. If in decision 904 (after operation 902, operation 912, or operation 914) it is determined that no other extension is required, then in operation 916 the created manifest is written to the file.
  • Figure 10 illustrates a flowchart for a method for writing non-authoring components of a required extension to the file in operation 912.
  • operation 1002 a component of the required extension is obtained.
  • decision 1004 if it is determined that there are no more components of the required extension, then the process is completed. If, on the other hand, it is determined in decision 1004 that there are more components of the required extension, then it is be determined in decision 1006 whether the obtained component includes an authoring authority attribute set. If it is determined that the obtained component does include an authoring authority attribute set, then the next component of the required extension is obtained in operation 1002. In contrast, if it is determined that the obtained component does include an authoring authority attribute set, then the obtained component is written to the file.
  • Each extension includes attributes. Table 1 provides an illustrative list of possible attributes for an extension:
  • the Extension Name attribute includes information about the name of the extension and the Version attribute includes information regarding the version of the particular extension.
  • Embeddable attribute includes information as to whether the extension is embeddable or not in an application.
  • the Authoring attribute includes information regarding which components of the extension are authoring-only and which components of the extension are not authoring-only. An extension component may be called authoring-only if it is not required for a user to view the data file, but would be required if the user were to modify the data file.
  • the URL attribute includes information about an Internet Site that may be accessed by a user if a particular component of the extent is authoring only and where the user may access the particular extension (or component of the extension).
  • the "About" Text attribute includes information about the particular extension.
  • the Base Class attribute of an extension include information regarding which components of the particular extension should be told to do the initialization for that extension.

Abstract

A system and method are provided for transferring extension code (206) from a first application (204) to a second application (214) via a data file (202). A data file is used on a first application that has extension code associated therewith. The extension code includes logic for enhancing the application. At least a portion of the extension code is saved (210) with the data file. When the data file is opened on a second application, the data file is manipulated using the second application and the logic of the extension code stored with the data file.

Description

SYSTEM. METHOD AND ARTICLE OF MANUFACTURE FOR EMBEDDING EXTENSION CODES IN DATA FILES FOR LATER USE
FIELD OF THE INVENTION
The present invention relates to extensions and more particularly to transferring extension code from a first application to a second application via a data file.
BACKGROUND OF THE INVENTION
An application may be a program designed to perform a specific function for a user or another application. Examples of applications include word processors, database programs, Web browsers, development tools, drawing, paint, and image editing programs, and communication programs. Typically, an application may be a self-contained entity. An application operates on a body of data and saves and loads that data between invocations. For example, a word processor application saves a document and is able to load that document at a later time. The documents that an application operates on are also called data files.
An application may also define a platform that allows third party extensions to contribute additional functionality beyond that implemented by the application's developer. An extension may be defined as additional code that is loaded into the application, enhancing its capabilities, and often appearing to the end user as if it was part of the original program. These extensions (e-g-> plug-ins for Photoshop or Visual Basic extensions) appear as though they were part of the original application. However, a data file (e.g., a Basic program, in the case of Visual Basic) will not be useable in a version of the application that does not include the extension. In order to bundle the extension with the data, an application developer must go through some sort of external packaging process.
With reference to Figure 1, some prior art applications 102 such as word processors (e.g., Microsoft Word) have defined macro languages 104 that allow user-level extension of a system. These macros are commonly embedded 106 in the data of a document 108 created by the application. When the document 108 is passed to a second user, the second user must have the same application with the particular macro interpreter included with it in order to read the document. If the second user does not have the particular macro interpreter, then the second application is unable to read the macros 106 embedded in the document 108. Note that macros are actually data which is interpreted by a pre-existing macro language already embedded in the application. In our invention, we are packaging code that directly extends the application and did not exist prior to the loading of the extension. Another form of prior art are the so-called 'virus programs', which attach code maliciously to applications and data files for the purpose of self-propagation. Unlike a destructive virus, the present invention attaches extensions only to data files for which it is appropriate, and behave in a predicable manner.
SUMMARY OF THE INVENTION
A system, method and article of manufacture are provided for transferring extension code from a first application to a second application via a data file. A data file is used on a first application that has extension code associated therewith. The extension code includes logic for enhancing the application. At least a portion of the extension code is saved with the data file. When the data file is opened on a second application, the data file is manipulated using the second application and the logic of the extension code stored with the data file.
In an aspect of the present invention, the extension code may manipulate the applications as well and may also be written in a programming language similar to that in which the applications are written. In another aspect of the present invention, the portion of the extension code that is stored with the data file may include a name of the extension code, attributes of the extension code and even a list of contents of the extension code.
As an option, the portion of the extension code may be saved with the data file only if permission is indicated by the first application, the extension code, or an object that exists in the data file that requires the extension code. As another option, the first and second application may also be separate instances of the same application. Also, the applications may comprise graphics-based rule driven applications.
In an embodiment of the present invention, extension code existent in the second application may be merged in a database with the extension code that is stored with the data file when the data file is opened on the second application. The extension code may be merged in the database by replacing extension code of an earlier version with extension code of a later version or, when the extension code is not existent in the second application, by adding the extension code stored with the data file to the database. As a further option, the extension code may also only be merged upon the receipt of permission from a user.
In another embodiment of the present invention, extension code associated with a first application may be used on a second application by opening a data file on an application and then retrieving extension code from the data file. This extension code is stored with the data file by another application. In such an embodiment, the extension code includes logic for enhancing the application and is used to manipulate the data file on the application. As an option, information may be provided on how to obtain the extension code if the extension code is non- existent on the data file at least in part. This information may be provided via a link to a site on a network.
With an embodiment of the present invention, a data file may be used on an application having extension code associated therewith which includes logic for enhancing the application.
The data file may be manipulated using the application and the logic of the extension code. A portion of the extension code may then be saved with the data file for enhancing the application when using another application. As a further option to this embodiment, information may also be provided on how to obtain the extension code if the extension code is not permitted to be stored with the data file.
These and other advantages of the present invention will become apparent to those skilled in the art upon a reading of the following descriptions of the invention and a study of the several figures of the drawing.
BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 is a schematic diagram of a prior application with macro capability to allow user-level extension of a system.
Figure 2 is a high level schematic diagram of an embodiment of the present invention for transferring extension code from a first application to a second application via a data file in accordance with an embodiment of the present invention.
Figure 3 is a schematic diagram of one possible hardware implementation by which the present invention may be carried out in accordance with an embodiment of the present invention.
Figure 4 illustrates a flowchart for a method 400 for reading a data file having extensions with an application in accordance with an embodiment of the present invention.
Figure 5 illustrates in more detail a flowchart for a method for checking the plug-in folder for extensions in operation 404 of Figure 4 and also for checking the data file for extensions in operation 408 in accordance with an embodiment of the present invention.
Figure 6 illustrates a flowchart for a method for merging sets of extensions in operation
410 of Figure 4 in accordance with an embodiment of the present invention.
Figure 7 illustrates a flowchart for a method for loading and running the data file in operation 414 of Figure 4 in accordance with an embodiment of the present invention.
Figure 8 illustrates a flowchart for a method 800 for writing extensions with a data file in accordance with an embodiment of the present invention.
Figure 9 illustrates a flowchart of a method for writing the required extensions to the file in operation 812 in accordance with an embodiment of the present invention.
Figure 10 illustrates a flowchart for a method for writing non-authoring components of a required extension to the file in operation 912 in accordance with an embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION
Figure 2 is a high level schematic diagram of an embodiment of the present invention which provides for a method for transferring extension code from a first application to a second application via a data file. In general, a data file 202 is used on a first application 204 (of User
A). Associated with the first application is extension code 206 that has logic for enhancing the application 208. Some illustrative types of extensions include extensions that draw graphs, extensions that play movies, extensions that read raw data, and extensions that execute tight loop subroutines. Basically, extensions with respect to the present invention allow the addition of a new control structure to an application. User A has acquire the extension as a separate entity and made it available to the application.
When the data file is saved to a database 210, a portion 212 of the extension code is also saved with the data file but only if the items represented in the data file require the extension's presence in the application in order to operate correctly. If a data file has no dependence on an extension, no extensions will be written. When the stored data file 208 is opened by second application 214 (see User B), the data file may be manipulated using the second application 214 and the logic of the extension code 212 stored with the data file. Extension code 216 existent in the second application 214 may be merged with the extension code 212 that is stored with the data file 202 when the data file is opened on the second application. The stored extension code
212 may also replace the existent extension code 216 of the second application if the extension code 216 of the second application is of an earlier version. Also, if there is no existent extension code in the second application 214, then the stored extension code may be added to the second application.
Figure 3 is a schematic diagram of one possible hardware implementation by which the present invention may be carried out. As shown, the present invention may be practiced in the context of a personal computer such as an IBM compatible personal computer, Apple Macintosh computer or UNIX based workstation.
A representative hardware environment is depicted in Figure 3, which illustrates a typical hardware configuration of a workstation in accordance with one embodiment having a central processing unit 310, such as a microprocessor, and a number of other units interconnected via a system bus 312. The workstation shown in Figure 3 includes a Random Access Memory (RAM) 314, Read Only Memory (ROM) 316, an I/O adapter 318 for connecting peripheral devices such as disk storage units 320 to the bus 312, a user interface adapter 322 for connecting a keyboard 324, a mouse 326, a speaker 328, a microphone 332, and/or other user interface devices such as a touch screen (not shown) to the bus 312, communication adapter 334 for connecting the workstation to a communication network 335 (e.g., a data processing network) and a display adapter 336 for connecting the bus 312 to a display device 338. The workstation typically has resident thereon an operating system such as the Microsoft Windows NT or Windows/95
Operating System (OS), the IBM OS/2 operating system, the MAC OS, or UNIX operating system. Those skilled in the art will appreciate that the present invention may also be implemented on other platforms and operating systems.
Figure 4 illustrates a flowchart for a method 400 for reading a data file having extensions with an application. In operation 402, an application is first launched. A plug-in folder where extensions are stored is checked for extensions in operation 404. In operations 406 and 408, a data file is opened and read to check for extensions. In operation 410, the extensions from the plug-in folder and the data file are merged and the extension code is loaded into the application. The extensions are then initialized in operation 412 and the data file is loaded and run in operation 414.
Figure 5 illustrates in more detail a flowchart for a method for checking the plug-in folder for extensions in operation 404 of Figure 4 and also for checking the data file for extensions in operation 408. With particular regards to operation 404, an extension is obtained from the plug-in folder in operation 502. If the extension is determined to be legal (or allowed) in decision 504, then a manifest of the extension is read in operation 506. With this manifest, a database entry is made in operation 508 that may include: (1) the extension name, (2) attributes of the extension obtained from the manifest, and (3) a list of the contents of the extension. This process is then repeated for each extension in the plug-in folder. If in decision 504, it is determined that the extension obtained in operation 502 is not legal, then that particular extension is ignored (see operation 510) and the process repeated with the next extension in the plug in folder.
With continuing reference to Figure 5, with regards to operation 408 ("Check data file for extension") the method illustrated by the flowchart in Figure 5 is followed with the data file replacing the plug-in folder in operation 502. In other words, for operation 408 an extension is obtained in operation 502 from the opened data file of operation 406 (see Figure 4). Operations 504 through 510 are then followed for this extension. This process is repeated for each of the extensions in the data file. Figure 6 illustrates a flowchart for a method for merging sets of extensions in operation
410 of Figure 4. A record (or entry) in a database of the data file is pulled in operation 602 and then compared to a plug-in database in decision 604 to determine whether the record exists in the database of the extension. The comparison is based on the extensions' name and version information. The plug-in database contains a series of records describing the extensions. The data file data base is compared to the plug-in database. When an extension with the same name is found, their version information is compared so that the earlier versioned record is discarded in favor of which ever database contains the record whose version is more recent.
Specifically, if the record does not exist in the plug-in database, then in operation 606 the record is added to the plug-in data base and the next record from the data file database is pulled. On the other hand, if the pulled record does exist in the plug-in database (i.e., the pulled record matches a record in the plug-in database), then in decision 608 it must be determined whether the same or earlier with respect to plug-in is in the data file database. If it is determined that the same or earlier with respect to plug-in is in fact in the data file database, then the next record is pulled from the data file database. If it is determined that the same or earlier with respect to plug-in is not in the data file database, then in operation 610, the entry in the plug-in database is replaced with the data file database record.
As a further option, a user may be queried in decision 612 whether the plug-in folder should be updated. If the user decides that the plug-in folder should not be updated, then another record may be pulled from the data file database. If, the user decides that the plug-in folder should be updated, then in operation 614 the extension is copied to the plug-in folder and then the next record is pulled from the data file database.
Figure 7 illustrates a flowchart for a method for loading and running the data file in operation 414 of Figure 4. In operation 702, an object is read from the data file. If the system finds that code already exists in the system required for that particular object (see decision 704), then the next object is read from the data file. In contrast, if the system does not find the required code, then the system looks for the correct entry in the plug-in database in operation
706. If the correct entry is found in the plug-in database (see decision 708), then the code is loaded from the matching plug-in in operation 710 and the next object from the data file is read. If the correct entry is not found in the plug-in database, then in operation 712 an error occurs. The loading and running the data file is completed after it is determined in decision 714 that the last object from the data has been read. Figure 8 illustrates a flowchart for a method 800 for writing extensions with a data file.
Upon receipt of a save command, an object to be saved is obtained by the system in operations 802 and 804. If there are more objects to be saved (see decision 806), then it must be determined in decision 808 whether the object to be saved relies on an extension. If the object to be saved does rely on an extension, then the required extension is added to the database in operation 810 and the next object to be saved is then obtained. If the object to be saved does not rely on an extension, then the next object to be saved is obtained (see decision 808). Once all of the objects to be saved have been obtained (see decision 806), then in operation 812 the required extensions are written to the file.
Figure 9 illustrates a flowchart of a method for writing the required extensions to the file in operation 812. In operation 902, an empty manifest is created. If an extension is required (see operation 904) then the extension's record is obtained from the plug-in database in operation 906 and the extension's attributes are written to the manifest in operation 908. Next, in decision 910 a test is executed to determine whether the extension is allowed to be saved in the file (in other words, does the extension permit itself to be filed). If the required extension is allowed to be saved in the file, then in operation 912 non-authoring components of the required extension are written to the file and then it is determined whether there exists another required extension (see decision 904). If, on the other hand, the required extension is not allowed to be saved into the file, the user is then notified of this in operation 914. This notification is designed to notify the user that the data file is incomplete and that the user needs to obtain this extension in order for the data file to work. After the user is notified in operation 914, it is determined whether there exists another required extension (see decision 904). If in decision 904 (after operation 902, operation 912, or operation 914) it is determined that no other extension is required, then in operation 916 the created manifest is written to the file.
Figure 10 illustrates a flowchart for a method for writing non-authoring components of a required extension to the file in operation 912. In operation 1002, a component of the required extension is obtained. In decision 1004, if it is determined that there are no more components of the required extension, then the process is completed. If, on the other hand, it is determined in decision 1004 that there are more components of the required extension, then it is be determined in decision 1006 whether the obtained component includes an authoring authority attribute set. If it is determined that the obtained component does include an authoring authority attribute set, then the next component of the required extension is obtained in operation 1002. In contrast, if it is determined that the obtained component does include an authoring authority attribute set, then the obtained component is written to the file. Each extension includes attributes. Table 1 provides an illustrative list of possible attributes for an extension:
Table 1 - Attributes
• Extension Name
• Version of the Extension
• Embeddable
• Authoring (which components) • URL
• "About" Text
• Base Class
The Extension Name attribute includes information about the name of the extension and the Version attribute includes information regarding the version of the particular extension. The
Embeddable attribute includes information as to whether the extension is embeddable or not in an application. The Authoring attribute includes information regarding which components of the extension are authoring-only and which components of the extension are not authoring-only. An extension component may be called authoring-only if it is not required for a user to view the data file, but would be required if the user were to modify the data file. The URL attribute includes information about an Internet Site that may be accessed by a user if a particular component of the extent is authoring only and where the user may access the particular extension (or component of the extension). The "About" Text attribute includes information about the particular extension. The Base Class attribute of an extension include information regarding which components of the particular extension should be told to do the initialization for that extension.
While only a few embodiments of the present invention have been described in detail herein, it should be understood that the present invention may be embodied in many other specific forms without departing from the spirit or scope of the invention. Therefore, the present examples and embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope of the appended claims.

Claims

CLAIMSWhat is claimed:
1. A method for transferring extension code from a first application to a second application via a data file, comprising: using a data file on a first application, the first application having extension code associated therewith which includes logic for enhancing the application, the logic including code segments for manipulating objects of the data file; wherein the extension code enhances the applications and is written in a programming language similar to that in which the applications are written; wherein the portion of the extension code that is stored with the data file includes a name of the extension code, attributes of the extension code and a list of contents of the extension code; saving at least a portion of the extension code with the data file only if: permission is indicated by the first application or the extension code and an object exists in the data file that requires the extension code; opening the data file on a second application, the first and second application being separate instances of the same application, and wherein the applications are graphics-based rule driven applications; wherein upon opening the data file on the second application, extension code existent in the second application is merged in a database with the extension code that is stored with the data file, the extension code being merged in the database by replacing extension code of an earlier version with extension code of a later version, the extension code being merged in the database by adding the extension code stored with the data file to the database if the extension code is not existent in the second application, and wherein the extension code is merged only upon receiving permission from a user; and enhancing the application using the second application and the logic of the extension code stored with the data file.
2. A method for transferring extension code from a first application to a second application via a data file, comprising: using a data file on a first application, the first application having extension code associated therewith which includes logic for enhancing the application; saving at least a portion of the extension code with the data file; opening the data file on a second application; and enhancing the application using the second application and the logic of the extension code stored with the data file.
3. The method as recited in claim 2, wherein the logic includes code segments for manipulating objects of the data file.
4. The method as recited in claim 2, wherein upon opening the data file on the second application, extension code existent in the second application is merged in a database with the extension code that is stored with the data file.
5. The method as recited in claim 4, wherein the extension code is merged in the database by adding the extension code stored with the data file to the database if the extension code is not existent in the second application.
6. The method as recited in claim 4, wherein the extension code is merged in the database by replacing extension code of an earlier version with extension code of a later version.
7. The method as recited in claim 4, wherein the extension code is merged only upon receiving permission from a user.
8. The method as recited in claim 2, wherein the portion of the extension code that is stored with the data file includes a name of the extension code.
9. The method as recited in claim 2, wherein the portion of the extension code that is stored with the data file includes attributes of the extension code.
10. The method as recited in claim 2, wherein the portion of the extension code that is stored with the data file includes a list of contents of the extension code.
11. The method as recited in claim 2, wherein the extension code is saved with the data file only if permission is indicated by the first application or the extension code.
12. The method as recited in claim 2, wherein the extension code is saved with the data file only if an object exists in the data file that requires the extension code.
13. The method as recited in claim 2, wherein the extension code is written in a programming language similar to that in which the applications are written.
14. The method as recited in claim 2, wherein the extension code manipulates the applications.
15. The method as recited in claim 2, wherein the first and second application are separate instances of the same application.
16. The method as recited in claim 2, wherein the applications are graphics-based rule driven applications.
17. A method for using extension code associated with a first application on a second application, comprising: opening a data file on an application; retrieving extension code from the data file, wherein the extension code includes logic for enhancing the application and was stored with the data file by another application; enhancing the application on the application using the retrieved extension code.
18. The method as recited in claim 17, and further comprising providing information on how to obtain the extension code if the extension code is non-existent on the data file at least in part.
19. The method as recited in claim 18, wherein the information is provided with a link to a site on a network.
20. A method for storing extension code associated with a first application with a data file for use with a second application, comprising: using a data file on an application having extension code associated therewith which includes logic for enhancing the application; enhancing the application using the application and the logic of the extension code; and saving at least a portion of the extension code with the data file for enhancing the application using another application.
21. The method as recited in claim 20, and further comprising providing information on how to obtain the extension code if the extension code is not permitted to be stored with the data file.
22. A computer program embodied on a computer readable medium for transferring extension code from a first application to a second application via a data file, comprising: a code segment that uses a data file on a first application, the first application having extension code associated therewith which includes logic for enhancing the application; a code segment that saving at least a portion of the extension code with the data file; a code segment that opens the data file on a second application; and a code segment that manipulates the data file using the second application and the logic of the extension code stored with the data file.
23. The computer program as recited in claim 22, wherein the logic includes code segments for manipulating objects of the data file.
24. The computer program as recited in claim 22, wherein upon opening the data file on the second application, extension code existent in the second application is merged in a database with the extension code that is stored with the data file.
25. The computer program as recited in claim 24, wherein the extension code is merged in the database by adding the extension code stored with the data file to the database if the extension code is not existent in the second application.
26. The computer program as recited in claim 24, wherein the extension code is merged in the database by replacing extension code of an earlier version with extension code of a later version.
27. The computer program as recited in claim 24, wherein the extension code is merged only upon receiving permission from a user.
28. The computer program as recited in claim 22, wherein the portion of the extension code that is stored with the data file includes a name of the extension code.
29. The computer program as recited in claim 22, wherein the portion of the extension code that is stored with the data file includes attributes of the extension code.
30. The computer program as recited in claim 22, wherein the portion of the extension code that is stored with the data file includes a list of contents of the extension code.
31. The computer program as recited in claim 22, wherein the extension code is saved with the data file only if permission is indicated by the first application or the extension code.
32. The computer program as recited in claim 22, wherein the extension code is saved with the data file only if an object exists in the data file that requires the extension code.
33. The computer program as recited in claim 22, wherein the extension code is written in a programming language similar to that in which the applications are written.
34. The computer program as recited in claim 22, wherein the extension code manipulates the applications.
35. The computer program as recited in claim 22, wherein the first and second application are separate instances of the same application.
36. The computer program as recited in claim 22, wherein the applications are graphics-based rule driven applications.
37. A computer program embodied on a computer readable medium for using extension code associated with a first application on a second application, comprising: a code segment that opens a data file on an application; a code segment that retrieves extension code from the data file, wherein the extension code includes logic for enhancing the application and was stored with the data file by another application; a code segment that manipulates the data file on the application using the retrieved extension code.
38. The computer program as recited in claim 37, and further comprising a code segment that provides information on how to obtain the extension code if the extension code is non-existent on the data file at least in part.
39. The computer program as recited in claim 38, wherein the information is provided with a link to a site on a network.
40. A computer program embodied on a computer readable medium for storing extension code associated with a first application with a data file for use with a second application, comprising: a code segment that uses a data file on an application having extension code associated therewith which includes logic for enhancing the application; a code segment that manipulates the data file using the application and the logic of the extension code; and a code segment that saves at least a portion of the extension code with the data file for enhancing the application using another application.
41. The computer program as recited in claim 40, and further comprising a code segment that provides information on how to obtain the extension code if the extension code is not permitted to be stored with the data file.
42. A system for transferring extension code from a first application to a second application via a data file, comprising: a processor adapted to use a data file on a first application, the first application having extension code associated therewith which includes logic for enhancing the application; memory coupled to the processor, wherein the memory is adapted to save therein at least a portion of the extension code with the data file; and wherein the processor is adapted to open the data file on a second application and to manipulate the data file using the second application and the logic of the extension code stored with the data file in memory.
PCT/US2000/033448 1999-12-08 2000-12-07 System, method and article of manufacture for embedding extension codes in data files for later use WO2001042910A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU19574/01A AU1957401A (en) 1999-12-08 2000-12-07 System, method and article of manufacture for embedding extension codes in data files for later use

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US45793499A 1999-12-08 1999-12-08
US09/457,934 1999-12-08

Publications (1)

Publication Number Publication Date
WO2001042910A1 true WO2001042910A1 (en) 2001-06-14

Family

ID=23818651

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/033448 WO2001042910A1 (en) 1999-12-08 2000-12-07 System, method and article of manufacture for embedding extension codes in data files for later use

Country Status (2)

Country Link
AU (1) AU1957401A (en)
WO (1) WO2001042910A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666501A (en) * 1995-03-30 1997-09-09 International Business Machines Corporation Method and apparatus for installing software
US5845090A (en) * 1994-02-14 1998-12-01 Platinium Technology, Inc. System for software distribution in a digital computer network
US5896533A (en) * 1995-07-06 1999-04-20 Intel Corporation Accessing internets world-wide web through object linking and embedding technology

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845090A (en) * 1994-02-14 1998-12-01 Platinium Technology, Inc. System for software distribution in a digital computer network
US5666501A (en) * 1995-03-30 1997-09-09 International Business Machines Corporation Method and apparatus for installing software
US5896533A (en) * 1995-07-06 1999-04-20 Intel Corporation Accessing internets world-wide web through object linking and embedding technology

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NOTKIN D.: "Extension and Software Development", IEEE SECTION 2, 1988, pages 274 - 283, XP002939248 *

Also Published As

Publication number Publication date
AU1957401A (en) 2001-06-18

Similar Documents

Publication Publication Date Title
US7617451B2 (en) Structuring data for word processing documents
US5845128A (en) Automatically preserving application customizations during installation of a new software release
US6662186B1 (en) System and method for a data propagation file format
US5740405A (en) Method and system for providing data compatibility between different versions of a software program
US8813031B2 (en) System and method for automatically resolving dependencies of Java Archive files for use with Maven
US7610298B2 (en) Difference-based database upgrade
US6585777B1 (en) Method for managing embedded files for a document saved in HTML format
US8255790B2 (en) XML based form modification with import/export capability
EP0938050A2 (en) Modular storage method and apparatus for use with software applications
US20060277452A1 (en) Structuring data for presentation documents
US20130263089A1 (en) Generating test cases for functional testing of a software application
US20060075041A1 (en) Systems and methods for detection and removal of metadata and hidden information in files
WO2006133053A2 (en) Structuring data for spreadsheet documents
US8220007B1 (en) Systems and methods for extension of software features without changing the host software binary code
JPH1097449A (en) Multivalued localized string
AU2005225140A1 (en) File formats, methods, and computer program products for representing documents
US20100037209A1 (en) Source program review program, source program review method, and source program review device
US7761924B2 (en) Manipulation of information embedded in content
EP1600860A2 (en) Method and system for embedding context information in a document
US7814328B1 (en) Digital signatures for embedded code
US20080184103A1 (en) Generation of Application Specific XML Parsers Using Jar Files with Package Paths that Match the SML XPaths
US6592628B1 (en) Modular storage method and apparatus for use with software applications
US20060212848A1 (en) Apparatus for managing configuration of application software
US9038018B2 (en) Integrating software components
US20050114827A1 (en) System and method for registering and deploying stored procedures and triggers into a device database

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM HR HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: COMMUNICATION UNDER RULE 69 EPC (EPO FORM 1205 OF 15.01.2003)

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP