Source: http://www.google.com/patents/US20090327321?ie=ISO-8859-1
Timestamp: 2015-05-28 04:44:10
Document Index: 544564918

Matched Legal Cases: ['art 1300', 'art 1900', 'art 1900', 'art 1900', 'art 1900', 'art 2000', 'art 2000', 'art 2000', 'art 2000', 'art 2200', 'art 2200', 'art 2200', 'art 2200', 'art 2200']

Patent US20090327321 - Document templates for schema-based data transfer into and out of a data ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsSystems and methods are described for using templates associated with a document application to facilitate schema-based data transfers into and out of a database associated with a database application. Such templates may be made available to a user so that the user can easily export various data entities...http://www.google.com/patents/US20090327321?utm_source=gb-gplus-sharePatent US20090327321 - Document templates for schema-based data transfer into and out of a data-based applicationAdvanced Patent SearchPublication numberUS20090327321 A1Publication typeApplicationApplication numberUS 12/146,614Publication dateDec 31, 2009Filing dateJun 26, 2008Priority dateJun 26, 2008Also published asUS8799251Publication number12146614, 146614, US 2009/0327321 A1, US 2009/327321 A1, US 20090327321 A1, US 20090327321A1, US 2009327321 A1, US 2009327321A1, US-A1-20090327321, US-A1-2009327321, US2009/0327321A1, US2009/327321A1, US20090327321 A1, US20090327321A1, US2009327321 A1, US2009327321A1InventorsMichael J. McCormack, Joern L. Mortensen, Marc V. El Haddad, Michelle A. Watkins, Rutuja V. KhanzodeOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManReferenced by (13), Classifications (8), Legal Events (2) External Links: USPTO, USPTO Assignment, EspacenetDocument templates for schema-based data transfer into and out of a data-based application
US 20090327321 A1Abstract
1. A method for importing data into a database associated with a data-based application based on a template associated with a document application comprising:
transferring data entities entered into fields of the template by a user to a structured data document in accordance with a map associated with the template; and providing the structured data document and connection information associated with the template to a database integration engine; wherein the connection information identifies a schema definition to be used by the database integration engine to extract the data entities from the structured data document and further identifies a data set within the database within which the extracted data entities are to be inserted by the database integration engine. 2. The method of claim 1, wherein the template associated with the document application comprises:
a spreadsheet associated with a spreadsheet application. 3. The method of claim 1, wherein the template associated with the document application comprises:
a word processing document associated with a word processing application. 4. The method of claim 1, wherein transferring the data entities entered into fields of the template by a user to a structured data document comprises transferring the data entities into an Extensible Markup Language (XML) document and wherein the schema definition identified by the connection information comprises an XML schema definition.
obtaining a portion of the connection information that identifies the data set within the database from the user. 7. The method of claim 1, further comprising:
providing access to a plurality of templates to the user, wherein each template is associated with a corresponding map and connection information; and identifying the template to be used for importing data into the database based on user input. 8. A method for populating fields within a template associated with a document application based on data stored in a database associated with a data-based application, comprising:
providing connection information associated with the template to a database integration engine, wherein the connection information identifies a data set within the database from which data entities are to be extracted and further identifies a schema definition to be used by the database integration engine to generate a structured data document that includes the extracted data entities; receiving the structured data document from the database integration engine; and transferring the extracted data entities from the structured data document to the template fields in accordance with a map associated with the template. 9. The method of claim 8, wherein the template associated with the document application comprises:
a spreadsheet associated with a spreadsheet application. 10. The method of claim 8, wherein the template associated with the document application comprises:
a word processing document associated with a word processing application. 11. The method of claim 8, wherein transferring the extracted data entities from the structured data document comprises transferring the extracted data entities from an Extensible Markup Language (XML) document and wherein the schema definition identified by the connection information comprises an XML schema definition.
obtaining a portion of the connection information that identifies the data set within the database from a user. 14. The method of claim 8, further comprising:
providing access to a plurality of templates to a user, wherein each template is associated with a corresponding map and connection information; and identifying the template for which fields are to be populated based on user input. 15. The method of claim 8, further comprising:
providing a means by which a user can customize content and/or a format of the template. 16. The method of claim 15, wherein providing a means by which a user can customize content of the template comprises:
providing a means by which a user can add or remove one or more of the fields to be populated within the template. 17. A method for providing a template for transferring data into or out of database associated with a data-based application comprising:
saving a map that maps fields of a first document associated with a document application to a schema definition, wherein the map was used to insert data entities into or extract data entities from a structured data document used for transferring the data entities between the fields of the first document and a data set within the database; saving connection information used to identify the data set within the database into which the data entities were transferred or from which the data entities were transferred and to identify the schema definition; and making the saved map and connection information available to a user for association with a second document associated with the document application. 18. The method of claim 17, wherein the first document associated with the document application and the second document associated with the document application each comprise a spreadsheet associated with a spreadsheet application.
associating the saved map and connection information with the second document associated with the document application responsive to user input. Description
A method for importing data into a database associated with a data-based application based on a template associated with a document application is described herein. In accordance with one implementation of the method, data entities entered into fields of the template by a user are transferred to a structured data document in accordance with a map associated with the template. The structured data document and connection information associated with the template are then provided to a database integration engine. The connection information identifies a schema definition to be used by the database integration engine to extract the data entities from the structured data document. The connection information also identifies a data set within the database within which the extracted data entities are to be inserted by the database integration engine.
A method for populating fields within a template associated with a document application based on data stored in a database associated with a data-based application is also described herein. In accordance with one implementation of the method, connection information associated with the template is provided to a database integration engine. The connection information identifies a data set within the database from which data entities are to be extracted. The connection information also identifies a schema definition to be used by the database integration engine to generate a structured data document that includes the extracted data entities. The structured data document is received from the database integration engine. The extracted data entities are transferred from the structured data document to the template fields in accordance with a map associated with the template.
A method for providing a template for transferring data into or out of database associated with a data-based application is also described herein. In accordance with one implementation of the method, a map is saved that maps fields of a first document associated with a document application to a schema definition. The map was used to insert data entities into or extract data entities from a structured data document used for transferring the data entities between the fields of the first document and a data set within the database. Connection information is also saved. The connection information was used to identify the data set within the database into which the data entities were transferred or from which the data entities were transferred and to identify the schema definition. The saved map and connection information are them made available to a user for association with a second document associated with the document application.
FIG. 15 is a block diagram of an example template associated with a document application that may be used to facilitate a schema-based data transfer into or out of a database associated with a data-based application in accordance with one embodiment of the present invention.
FIG. 16 is a block diagram of a library of templates that may be made available to a user in accordance with an embodiment of the present invention.
FIG. 17 is a block diagram of a system configured to import data into or export data out of a database associated with a data-based application using a template associated with a document application in accordance with an embodiment of the present invention.
FIG. 18 is a block diagram of an alternate system configured to import data into or export data out of a database associated with a data-based application using a template associated with a document application in accordance with an embodiment of the present invention.
FIG. 19 depicts a flowchart of a method for importing data into a database associated with a data-based application based on a template associated with a document application in accordance with an embodiment of the present invention.
FIG. 20 depicts a flowchart of a method for populating fields within a template associated with a document application based on data stored in a database associated with a data-based application in accordance with an embodiment of the present invention.
FIG. 21 is a block diagram of a data-based application that is configured to save and re-apply import/export templates in accordance with an embodiment of the present invention.
FIG. 22 depicts a flowchart of a method for saving and re-applying import/export templates in accordance with an embodiment of the present invention.
FIG. 23 depicts an example processor-based computer that may be used to implement various aspects of the present invention.
FIG. 1 is a block diagram of an example system 100 for performing schema-based data transfers between a data-based application and a document application in accordance with an embodiment of the present invention. As shown in FIG. 1, system 100 includes a data-based application 102 and a document application 104. Data-based application 102 is intended to broadly represent any software application that is configured to manage, populate and/or access a database in performing functions for or delivering services to a user. In one embodiment, data-based application 102 comprises a version of MICROSOFT OFFICE ACCOUNTING, published by Microsoft Corporation of Redmond, Wash. Document application 104 is intended to broadly represent any software application that is configured to facilitate the generation of customized documents, such as spreadsheets or word processing documents, by or for a user. In one embodiment, document application 104 comprises a version of MICROSOFT EXCEL, a spreadsheet application published by Microsoft Corporation of Redmond, Wash., although the invention is not so limited. In another embodiment, document application 104 comprises a version of MICROSOFT WORD, a word processing application published by Microsoft Corporation of Redmond, Wash. In a further embodiment, document application 104 comprises a version of MICROSOFT OFFICE INFOPATH, an application that may be used to develop XML-based data entry forms published by Microsoft Corporation of Redmond, Wash.
An example computer system upon which either or both of data-based application 102 and document application 104 may be installed and executed will be described below in reference to FIG. 23.
Database integration engine 124 comprises logic that is configured to enable data stored within database 122 to be transferred to document application 104 for insertion within or updating of a document associated with document application 104. Database integration engine 124 is also configured to enable data stored within a document associated with document application 104 to be received by data-based application 102 for insertion within or updating of database 122. The manner in which database integration engine 124 operates to perform these functions will be described in more detail herein.
Document integration engine 144 comprises logic that is configured to enable data stored within document 142 to be transferred to data-based application 102 for insertion within or updating of a database associated with data-based application 102.
Document integration engine 144 is also configured to enable data stored within a database associated with data-based application 102 to be received by document application 104 for insertion within or updating of document 142. The manner in which document integration engine 144 operates to perform these functions will be described in more detail herein.
Section B below will describe a manner by which data entities are initially transferred between a database associated with data-based application 102 and a document associated with document application 104 and how the aforementioned connection information is established during the performance of such a data transfer.
Section C below will then describe how this connection information may be used to facilitate easy updating of the document based on information currently residing in the database as well as easy updating of the database based on information currently residing in the document.
In one embodiment in which data-based application 102 is an accounting application such as MICROSOFT OFFICE ACCOUNTING, the user may select the source data set by providing or selecting (1) a company, (2) a master record, document or report list associated with a company, and one/or (3) or more query parameters to be applied. A master record, document or report list may comprise a table or view in database 122. The user may also select the source data set by specifying certain database fields that are to be included in the import.
Content; Purpose/Description
MOA Namespace, a unique identification for all of
the elements belonging to
Root node representing this connection.
Linked to a specific EXCEL Schema via ID
Unique identifier for the Company
Name of the Company that the query applies
The ID/Name of the schema that this
connection block applies to. This allows for
accurate identification of the schema, and
refreshing of the appropriate data blocks
Schema version number following standard
1.0.0.0 format
Name of a server that the data resides upon
downloadDateTime
Date and time that the download occurred
An optional, unbounded list that contains
name value pairs used to describe a set of
predefined parameters for a query. All
POSSIBLE parameters are sent into EXCEL,
and they are all sent back to MICROSOFT
OFFICE ACCOUNTING. However nilled
parameters are ignored (treated as clear).
Element containing the filter details
The name of the filter field in question,
provided by MOA.
The type of the parameter that is expected
Min value of a possible filter range
Max value of a possible filter range
Collection of fields that are being returned
Name of the field that is being returned
rowsChecksum
Validation mechanism for verifying row data
Repeating element that contains the row
Integer primary key of the row
Checksum value for the row and columns
At step 712, document integration engine 144 obtains schema definition 112 associated with structured data document 114. An identifier of the appropriate schema definition may be included within structured data document 114. Alternatively, an identifier of the appropriate schema definition may be communicated from database integration engine 124 to document integration engine 144 over communication link 604. Still further, the identity of the appropriate schema definition may be determined by document integration engine 144 based upon the data set identification information provided in step 708, or based upon the identification of a particular template as the export target document in step 708. At step 714, document integration engine 144 obtains or generates a map 606 between the target document fields identified in step 708 and elements or attributes of schema definition 112. Map 606 may be generated by a user through interaction with export UI logic 602 in a similar manner to that described in U.S. Pat. No. 7,249,316. Alternatively, map 606 may be dynamically generated by document integration engine 144 during the export process. Once generated, map 606 is stored in association with document 142. In the embodiment shown in FIG. 6, map 606 is embedded within document 142.
In an alternate embodiment, the target document fields may be “pre-mapped” to the elements and attributes of schema definition 112 in an instance where a template is designated as the target document for the export. In this instance, map 606 exists in association with document 142 prior to execution of the export process. At step 716, document integration engine 144 extracts data entities from structured data document 114 and inserts the extracted data entities within the target document fields in accordance with map 606 obtained or generated in step 714 and schema definition 112. At step 718, document integration engine 144 stores connection information 608 used during the export process in association with document 142. In the embodiment shown in FIG. 6, connection information 608 is embedded within document 142. In an embodiment in which document 142 is an EXCEL spreadsheet, the embedding of connection information 608 within document 142 may be achieved, for example, by storing connection information 608 in a very hidden worksheet within document 142.
In an embodiment, connection information 608 includes information sufficient to identify database 122 from which data was exported, the data set within database 122 from which data was exported, and schema definition 112 used to generate structured data document 114. As noted above, the information used to identify the data set within database 122 from which data was exported may include (1) a company, (2) a master record, document or report list associated with the company, and/or (3) one or more query parameters that were applied. As also noted above, the information used to identify the data set may also include certain database fields that were included in the export. An example of elements that may be included in connection information 608 was previously described with reference to Table 1.
At step 920, document integration engine 144 stores connection information 808 used during the import process in association with document 142. In the embodiment shown in FIG. 8, connection information 808is embedded within document 142. In an embodiment in which document 142 is an EXCEL spreadsheet, the embedding of connection information 808 within document 142 may be achieved, for example, by storing connection information 808 in a very hidden worksheet within document 142.
Note that in one embodiment, database integration engine 124 may also be configured to detect a schema definition mismatch during an import process such as that described above in Sections B.2 and B.4 above. This may be useful for example, if the document from which data is being imported is a template and thus is already associated with a particular schema definition that may or may not match the schema definition being used for the import. Another check that may be performed by database integration engine 124 prior to performing the update of step 1118 involves matching primary keys associated with database rows being transferred from document 142 with primary keys stored as part of connection information 1008. In one embodiment of the present invention, a primary key associated with each database row previously transferred between data set 1010 and mapped document fields 1004 is stored as part of connection information 1008. Prior to update, the primary keys associated with the database rows being transferred from document 142 may be compared to the primary keys stored in connection information 1008 for the purpose of performing error checking and facilitating the update operation.
As shown in FIG. 13, the method of flowchart 1300begins at step 1302 in which refresh functionality of document integration engine 144 is invoked by a user with respect to a particular document, wherein the particular document is a document into which data from a database associated with data-based application 102 was previously transferred or from which data was previously transferred to a database associated with data-based application 102. The transfer may have occurred in accordance with any of the import/export scenarios described above in Section B. For the remainder of the description of this method, it will be assumed that the document for which the refresh functionality is invoked is document 142.
D. Use of Templates for Schema-Based Data Transfer Between Data-based Application and Document Application
As previously noted, the term “template” refers to a document associated with a document application that has been specially designed for inputting, editing or viewing data to be transferred to/from a database associated with a data-based application. As will be described in this section, such templates may be made available to a user so that the user can easily export various data entities out of the database for display, editing, or report generation as well as to import new or edited data entities into the database. In one embodiment, the templates may comprise fixed or user-customizable reports that are easily populated with data entities exported from the database and/or that present data and graphics derived from such data entities. As will also be described in this section, in a further embodiment, the templates may be created during an initial data transfer between a first document and the database and then saved for use in performing subsequent data transfers between other documents and the database.
FIG. 15 is a block diagram of an example template 1500 that may be made available to a user in accordance with one embodiment of the present invention. Template 1500 may comprise a type of document associated with a document application, including but not limited to MICROSOFT WORD, MICROSOFT EXCEL, or MICROSOFT OFFICE INFOPATH, although these examples are not intended to be limiting. As shown in FIG. 15, template 1500 includes a number of elements including plurality of template fields 1502, a map 1504 and connection information 1506.
Template fields 1502 are fields that may be populated with data entities by a user for import into a database associated with a data-based application and/or that may be populated with data entities by virtue of an export of data from such a database. In an embodiment in which template 1500 is a spreadsheet associated with a spreadsheet application, template fields 1502 may comprise for example, certain cells within the spreadsheet. In an embodiment in which template 1500 is a word-processing document associated with a word processing application, template fields 1502 may comprise certain predefined fields within the document. In an export scenario, template fields 1502 may actually be hidden from a user but nevertheless used to derive data or graphics that are presented to the user within the context of template 1500.
Depending upon the implementation of template 1500, template fields 1502 may be used to import data into a database associated with a data-based application only, to export data from a database associated with a data-based application only, or to either import or export data into or out of a database associated with a data-based application depending upon the functionality invoked by the user. In an embodiment in which imports are supported, a user is able to enter data entities into template fields 1502 and to edit such data entities. In an embodiment in which only exports or supported, a user may be barred from entering or editing data exported into template fields 1502.
Map 1504 is a set of information that maps each of template fields 1502 to elements or attributes of a schema definition that will be used for performing database import and/or export operations based on template 1500. As shown in FIG. 15, map 1504 is stored within template 1500. For example, in an embodiment in which template 1500 is a spreadsheet, map 1504 may be stored within the spreadsheet through the storage of markers known as XPATHs in the spreadsheet as described in U.S. Pat. No. 7,249,316 to Collie et al., although this example is not intended to be limiting. In an alternate implementation, map 1504 is not stored within template 1500 but is instead stored in association with template 1500.
Connection information 1506 includes information that identifies a data set within a database associated with a data-based application into which data entities entered into template fields 1502 can be imported and/or from which data entities can be exported for insertion into template fields 1502. In an embodiment in which the data-based application is an accounting application such as MICROSOFT OFFICE ACCOUNTING, such data set identification information may include an identification of a master record, document, or report list within a database, as well as one or more query parameters. Such data set identification information may include an identification of one or more database fields. In one embodiment, the data set identification includes more information than is necessary to identify the relevant data set and such irrelevant information is removed by error handling logic. Connection information 1506 also comprises information that identifies the schema definition that will be used for performing database import and/or export operations based on template 1500.
As shown in FIG. 15, connection information 1506 is stored within template 1500. For example, in one embodiment in which template 1500 comprises an EXCEL workbook, connection information 1506 may be stored within a “very hidden sheet” of the EXCEL workbook. In an alternate implementation, connection information 1506 is not stored within template 1500 but is instead stored in association with template 1500.
As will be made evident by the following description, the pre-existing association of map 1504 and connection information 1506 with template fields 1502 enables template 1500 to be used for performing highly-automated, reliable and user-friendly imports and/or exports of data into an out of a database associated with a data-based application. Furthermore, because template 1500 is associated with a document application, it may advantageously support certain data-entry, editing, formatting, printing, and display functions associated with the document application that may not be available to a user via the data-based application. Thus, template 1500 may be thought of as extending the functionality of the data-based application.
In one embodiment of the present invention, a number of different templates are made available to a user for performing database imports and/or exports. For example, as shown in FIG. 16, a plurality of different templates 1500 1, 1500 2, . . . , 1500 n may be made available to a user as part of a template library 1600, wherein each template includes a corresponding set of template fields, map and connection information. Such templates may vary, for example, in terms of the associated data set targeted for import or export, in terms of which data entities are represented by the template fields, and/or in terms of how such data entities or other information is displayed by the template.
Templates may be designed and made available by a publisher of the document application and/or the database application with which such templates are associated or by some other entity. These templates may be loaded into the memory of a user's computer system at the time the document application or database application are installed on the system (e.g., the templates may be bundled with the files used for application install) or may be subsequently downloaded to the computer system by a user over a network, such as a local area or wide area network. Still further, the templates may be stored on a remote server and accessed and manipulated by the user over a network using well-known network communication protocols.
The next sub-section will provide an example of how a template may be used to import data into a database associated with a data-based application. The following sub-section will provide an example of how a template may be used to export data from a database associated with a data-based application. Finally, a subsequent sub-section will provide an example of how a template may be created during an initial data transfer between a first document associated with a document application and a database associated with a data-based application and then saved by a user for use for performing subsequent data transfers between other documents and the database.
1. Use of Templates for Import into a Database associated with a Data-Based Application
A process by which a user uses a template associated with a document application to import data into a database associated with a data-based application will now be described. FIG. 17 is a block diagram of a system 1700 that may be used to perform such a process. As shown in FIG. 17, system 1700 includes a data-based application 1702 and a document application 1704, which are analogous to data-based application 102 and document application 104 as described above in reference to FIG. 1. FIG. 18 depicts an alternate system 1800 that also may be used to perform such a process.
The manner in which elements of system 1700 and system 1800 may be used in perform the import process will now be described in reference to flowchart 1900 of FIG. 19. The method of flowchart 1900 is described herein by way of example only and is not intended to limit the present invention. Furthermore, although the steps of flowchart 1900 may be described with reference to various logical and/or physical entities shown in FIGS. 17 and 18, persons skilled in the relevant art(s) will readily appreciate that the method need not be implemented using such entities.
As shown in FIG. 19, the method of flowchart 1900 begins at step 1902 in which a user opens a template 1742 associated with document application 1704. For example, the user may open template 1742 from within the context of document application 1704 by interacting with document application UI logic 1746 within document application 1704 as shown in FIG. 17. Alternatively, the user may open template 1742 from within the context of data-based application 1702 by interacting with template UI logic 1826 within data-based application 1702 as shown in FIG. 18. In the latter case, the opening of template 1742 may cause an instance of document application 1704 to be launched if one has not already been launched so that further interaction with template 1742 can occur from within the context of document application 1704. In a still further implementation, a user may open template 1742 by interacting with a representation of the template that is presented to the user by an operating system or file management system of the computer system upon which document application 1704 is installed.
Step 1902 may include user selection of template 1742 from among a plurality of templates made available to a user as part of a template library, such as template library 1600 described above in reference to 1600. For example, document application UI logic 1746 or template UI logic 1826 may identify template 1742 from among a plurality of templates based on input from a user.
At step 1904, the user populates template fields 1762 of template 1742 with data entities. This step may comprise, for example, interacting with document application UI logic 1746 of document application 1704 to enter data entities into template fields 1762.
At step 1906, the user initiates an import into database 1722 associated with data-based application 1702 based on template 1742. The initiation of the import may occur through user interaction with document application UI logic 1746 as shown in FIG. 17 or through user interaction with template UI logic 1826 as shown in FIG. 18.
Step 1906 may also include selecting database 1722 from among a plurality of databases accessible by or associated with data-based application 1702. This selection may be made explicitly through user interaction with document application UI logic 1746 as shown in FIG. 17 or through user interaction with template UI logic 1826 as shown in FIG. 18. This selection may also be made implicitly through some other user gesture. For example, in an embodiment in which template 1742 is opened from within the context of data-based application 1702, selected database 1722 may be a database the user opened or was viewing prior to opening template 1742 in step 1902.
At step 1908, document integration engine 1744 transfers data entities from template fields 1762 to a structured data document 1714 in accordance with map 1764 associated with template 1742. Map 1764 is a set of information that maps each of template fields 1762 to elements or attributes of a schema definition 1712 that is to be used for performing the database import based on template 1742. In one embodiment, structured data document 1714 comprises an XML document and schema definition 1712 comprises an XSD, although the invention is not so limited.
At step 1910, document integration engine 1744 provides structured data document 1714 and connection information 1766 associated with template 1742 to database integration engine 1724. Connection information 1766 includes predefined information that identifies a data set within a database associated with data-based application 1702 into which data entities entered into template fields 1762 are to be imported and also includes an identifier of database 1722 based on the selection of database 1722 as the import target during step 1906. Connection information 1766 further includes information that identifies schema definition 1712 that is to be used for performing the database import based on template 1742.
At step 1912, database integration engine receives structured data document 1714 and connection information 1766.
At step 1914, database integration engine 1724 identifies database 1722 as the target database for import based on the database identifier included in connection information 1766 and identifies a data set within database 1722 as the target data set for import based on the data set identification information included in connection information 1766.
At step 1916, database integration engine 1724 extracts the data entities from structured data document 1714 in accordance with schema definition 1712 identified by connection information 1766.
At step 1918, database integration engine 1724 inserts the extracted data entities into the target data set within target database 1722. Database integration engine 1724 performs this step by mapping between elements and attributes of schema definition 1712 and a database schema associated with database 122. After the extracted data entities have been inserted within the target data set within target database 1722, the import process ends.
The foregoing process illustrates one method by which a template may be used to perform highly-automated, reliable and user-friendly imports of data into a database associated with a data-based application. The ability to provide a variety of such templates to a user advantageously allows a publisher or other party to provide ready-made import templates by which a user can import data organized in accordance with any of a wide variety of formats into a database associated with a data-based application.
2. Use of Templates for Export from a Database associated with a Data-Based Application
A process by which a user populates template fields of a template associated with a document application based on data stored in a database associated with a data-based application will now be described. System 1700 of FIG. 17 and system 1800 of FIG. 18 may each be used to perform such a process. The manner in which elements of system 1700 and system 1800 may be used in perform the export process will now be described in reference to flowchart 2000 of FIG. 20. The method of flowchart 2000 is described herein by way of example only and is not intended to limit the present invention. Furthermore, although the steps of flowchart 2000 may be described with reference to various logical and/or physical entities shown in FIGS. 17 and 18, persons skilled in the relevant art(s) will readily appreciate that the method need not be implemented using such entities.
As shown in FIG. 20, the method of flowchart 2000 begins at step 2002 in which a user selects a template 1742 associated with document application 1704 as the export target. For example, the user may select template 1742 from within the context of document application 1704 by interacting with document application UI logic 1746 within document application 1704 as shown in FIG. 17. Alternatively, the user may select template 1742 from within the context of data-based application 1702 by interacting with template UI logic 1826 within data-based application 1702 as shown in FIG. 18. In the latter case, the selecting of template 1742 may cause an instance of document application 1704 to be launched if one has not already been launched so that further interaction with template 1742 can occur from within the context of document application 1704 after the export process has completed. In a still further implementation, a user may select template 1742 by interacting with a representation of the template that is presented to the user by an operating system or file management system of the computer system upon which document application 1704 is installed.
It should be noted that selection of template 1742 during step 2002 may or may not entail opening template 1742. For example, in one embodiment, template 1742 is not opened until the export process has completed.
Step 2002 may include user selection of template 1742 from among a plurality of templates made available to a user as part of a template library, such as template library 1600 described above in reference to 1600. For example, document application UI logic 1746 or template UI logic 1826 may identify template 1742 from among a plurality of templates based on input from a user.
At step 2004, the user initiates population of fields of template 1742 based upon data exported from database 1722 associated with data-based application 1702. The initiation of the export may occur through user interaction with document application UI logic 1746 as shown in FIG. 17 or through user interaction with template UI logic 1826 as shown in FIG. 18.
Step 2004 may also involve selecting database 1722 from among a plurality of databases accessible by or associated with data-based application 1702. This selection may be made explicitly through user interaction with document application UI logic 1746 as shown in FIG. 17 or through user interaction with template UI logic 1826 as shown in FIG. 18. This selection may also be made implicitly through some other user gesture. For example, in an embodiment in which template 1742 is selected from within the context of data-based application 1702, selected database 1722 may be a database the user opened or was viewing prior to selecting template 1742 in step 2002.
At step 2006, document integration engine 1744 provides connection information 1766 associated with template 1742 to database integration engine 1724. Connection information 1766 includes predefined information that identifies a data set within a database associated with data-based application 1702 from which data entities are to be exported and also includes an identifier of database 1722 based on the selection of database 1722 as the export source during step 2004. Connection information 1766 further includes information that identifies schema definition 1712 that is to be used for performing the database export into template 1742.
At step 2008, database integration engine 1724 receives connection information 1766.
At step 2010, database integration engine 1724 identifies database 1722 as the source database for export based on the database identifier included in connection information 1766 and identifies a data set within database 1722 as the source data set for export based on the data set identification information included in connection information 1766.
At step 2012, database integration engine 1724 extracts data entities from the source data set within database 1722 and inserts the extracted data entities into a structured data document 1714 in accordance with schema definition 1712 identified by connection information 1766. Database integration engine 1724 performs this step by mapping between elements and attributes of a database schema associated with database 1722 and elements and attributes of schema definition 1712 identified by connection information 1766. Based on this mapping, database integration engine 1724 inserts the extracted data entities into structured data document 1714. In one embodiment, structured data document 1714 comprises an XML document and schema definition 1712 comprises an XSD, although the invention is not so limited. At step 2014, database integration engine 1724 provides structured data document 1714 to document integration engine 1744. At step 2016, document integration engine 1744 receives structured data document 1714.
At step 2018, document integration engine 1744 transfers the extracted data entities from structured data document 1714 to template fields 1762 within template 1742 in accordance with map 1764 associated with template 1762. Map 1764 is a set of information that maps elements or attributes of a schema definition 1712 to each of template fields 1762. After template fields 1762 have been populated with the exported data entities, the export process ends.
The foregoing process illustrates one method by which a template may be used to perform highly-automated, reliable and user-friendly exports of data from a database associated with a data-based application into a template associated with a document application. The ability to provide a variety of such templates to a user advantageously allows a publisher or other party to provide ready-made export templates by which a user can export data from a database associated with data-based application into documents organized in accordance with any of a wide variety of formats.
The ability to provide a variety of such templates to a user also advantageously allows a publisher or other party to provide a variety of ready-made reports that can be used to present data stored in a database associated with a data-based application as well as data or graphics derived from such data. Depending upon the implementation, these reports may be fixed or customizable by a user. For example, in one implementation, a user may customize features, content and formatting associated with a report template to reflect personal preferences or to associate the report template with a particular business entity and then save the customized report template as a new template. In another implementation, a user may add or remove template fields to be used for import or export or to be used for deriving data or graphics displayed in the report template and then save the modified report template as a new template. These are just a few examples and are not intended to be limiting. The means for customizing or modifying the templates may comprise, for example, a GUI presented to the user by document application UI logic 1746.
3. Saving of Import/Export Templates
In accordance with one embodiment of the present invention, an import or export template may be created during an initial data transfer between a first document associated with a document application and a database associated with a data-based application and then advantageously saved and re-used by a user for performing subsequent data transfers between other documents and the database.
FIG. 21 depicts one implementation of data-based application 102 of FIG. 1 that includes such functionality for saving and re-using import or export templates. One manner in which the implementation of data-based application 102 of FIG. 21 may operate will now be described in reference to flowchart 2200 of FIG. 22. The method of flowchart 2200 is described herein by way of example only and is not intended to limit the present invention. Furthermore, although the steps of flowchart 2200 may be described with reference to various logical and/or physical entities shown in FIG. 21, persons skilled in the relevant art(s) will readily appreciate that the method need not be implemented using such entities.
For the purpose of describing the method of flowchart 2200, it is assumed that data has been imported into database 122 associated with data-based application 102 from document 142 associated with document application 104 by way of one of the scenarios described above in Sections B.2 or B.4 or that data has been exported from database 122 into document 142 by way of one of the scenarios described above in Sections B.1 or B.3.
As discussed in detail above, in each instance, the import or export process involves the generation or obtaining of a map and connection information associated with document 142. The map maps fields of document 142 to schema definition 112, and was used to insert data entities into or extract data entities from structured data document 114 used for transferring the data entities between the fields of document 142 and a data set within database 122. The connection information was used to identify the data set within database 122 into which the data entities were transferred or from which the data entities were transferred and to identify schema definition 112.
The method of flowchart 2200 begins at step 2202, in which import/export template management logic 2104 saves the map that was used during the import or export. At step 2204, import/export template management logic 2014 saves the connection information that was used during the import or export. Taken together, the saved map and connection information comprises an import or export template that may be re-used by a user to import or export data from other documents associated with document application 104. These templates may be stored in memory as part of a saved import/export template library 2106.
In one embodiment, steps 2202 and 2204 are performed automatically by import/export template management logic 2104 in a situation in which an import into or export out of a database associated with data-based application 102 has completed and a template has not already been saved. In another embodiment, steps 2202 and 2204 are only performed responsive to user input. For example, after an import or export process has completed, import/export UI logic 2104 may present a GUI to a user offering to save an import/export template if one has not been saved already. In this example, a template will only be saved if the user indicates through interaction with the GUI that the template should be saved.
At step 2206, import/export template management logic 2104 makes the saved map and connection information available to a user as a saved import or export template that can be applied to another document associated with the document application. This step may be performed by presenting information identifying the saved template to the user via a GUI presented by import/export UI logic 2104.
Re-application of an import/export template involves associating the saved map with a new document such that fields of the new document will map to elements and attributes of schema definition 112 in the same manner that the fields of document 142 were mapped to elements and attributes of schema definition 112. Re-application of an import/export template also involves associating the saved connection information with a new document such that same data set within a database associated with data-based application 102 can be targeted for import or export and such that the same schema definition 112 can be used for import/export. In an embodiment, the re-application of a saved import/export template is performed by import/export template management logic 2104 responsive to user input.
The foregoing process for saving and re-applying import/export templates advantageously allows a user to save map and connection information associated with a data transfer between a document having a particular format and a data set that stores a particular set of data entities so that such information can be re-used to facilitate highly-automated data transfers between like document types and like data set types. This is particularly beneficial in situations where a user anticipates transferring data between a series of like-formatted documents and a database or vice versa.
FIG. 23 depicts an exemplary implementation of a computer 2300 upon which various aspects of the present invention may be executed. Computer 2300 is intended to represent a general-purpose computing device in the form of a conventional personal computer.
As shown in FIG. 23, computer 2300 includes a processing unit 2302, a system memory 2304, and a bus 2306 that couples various system components including system memory 2304 to processing unit 2302. Bus 2306 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. System memory 2304 includes read only memory (ROM) 2308 and random access memory (RAM) 23 10. A basic input/output system 2312 (BIOS) is stored in ROM 2308.
Computer 2300 also has one or more of the following drives: a hard disk drive 2314 for reading from and writing to a hard disk, a magnetic disk drive 2316 for reading from or writing to a removable magnetic disk 2318, and an optical disk drive 2320 for reading from or writing to a removable optical disk 2322 such as a CD ROM, DVD ROM, or other optical media. Hard disk drive 2314, magnetic disk drive 2316, and optical disk drive 2320 are connected to bus 2306 by a hard disk drive interface 2324, a magnetic disk drive interface 2326, and an optical drive interface 2328, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the server computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of computer-readable media can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like.
A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These programs include an operating system 2330, one or more application programs 2332, other program modules 2334, and program data 2336. Application programs 2332 or program modules 2334 may include, for example, logic for implementing data-based application 102, document application 104, data-based application 1702, or document application 1704 as described herein. Application programs 2332 or program modules 2334 may also include, for example, logic for implementing one or more of the steps of the flowcharts depicted in FIGS. 3, 5, 7, 9, 11, 13, 14, 19, 20 or 22. Thus each step illustrated in those figures may also be thought of as program logic configured to perform the function described by that step.
A user may enter commands and information into computer 2300 through input devices such as keyboard 2338 and pointing device 2340. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 2302 through a serial port interface 2342 that is coupled to bus 2306, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB).
A monitor 2344 or other type of display device is also connected to bus 2306 via an interface, such as a video adapter 2346. Monitor 2344 is used to present a GUI that assists a user/operator in configuring and controlling computer 2300. In addition to the monitor, computer 2300 may include other peripheral output devices (not shown) such as speakers and printers.
Computer 2300 is connected to a network 2348 (e.g., the Internet) through a network interface 2350, a modem 2352 or other means for establishing communications over the network. Modem 2352, which may be internal or external, is connected to bus 2306 via serial port interface 2342.
As noted above, computer programs (including application programs 2332 and other program modules 2334) may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received via network interface 2350 or serial port interface 2342. Such computer programs, when executed, enable computer 2300 to implement features of the present invention discussed herein. Accordingly, such computer programs represent controllers of computer 2300.
Referenced byCiting PatentFiling datePublication dateApplicantTitleUS8095561 *Apr 23, 2009Jan 10, 2012Microsoft CorporationExtensible framework for data import and exportUS8661336 *Mar 30, 2011Feb 25, 2014Sap AgMapping an object type to a document typeUS8706779 *Sep 14, 2012Apr 22, 2014Rainstor LimitedSystem and method for data storageUS8972854 *Jun 14, 2011Mar 3, 2015Microsoft Technology Licensing, LlcGraphical creation of a document conversion templateUS20110107203 *Sep 22, 2010May 5, 2011Courtview Justice SolutionsSystem and method for providing judicial ordersUS20110283182 *Jun 14, 2011Nov 17, 2011Microsoft CorporationGraphical creation of a document conversion templateUS20120166928 *Dec 23, 2010Jun 28, 2012Sap AgField extensibility in service interfaces and forms message typesUS20120254719 *Mar 30, 2011Oct 4, 2012Herbert HackmannMapping an Object Type to a Document TypeUS20130013568 *Sep 14, 2012Jan 10, 2013Rainstor LimitedSystem and Method for Data StorageUS20140195891 *Mar 13, 2013Jul 10, 2014Cognizant Technology Solutions India Pvt. Ltd.System and method for automatically extracting multi-format data from documents and converting into xmlUS20150095244 *Nov 10, 2014Apr 2, 2015Raymond David Heine, IIISystem and method for transferring a timeshare propertyWO2013062796A1 *Oct 15, 2012May 2, 2013Microsoft CorporationSpreadsheet program-based data classification for source target mappingWO2014169161A3 *Apr 11, 2014Apr 23, 2015Microsoft CorporationBinding of data source to compound control* Cited by examinerClassifications U.S. Classification1/1, 707/E17.002, 707/999.101International ClassificationG06F17/30Cooperative ClassificationG06F17/248, G06F17/30569European ClassificationG06F17/30S5V, G06F17/24VLegal EventsDateCodeEventDescriptionDec 9, 2014ASAssignmentOwner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034564/0001Effective date: 20141014Jan 8, 2009ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MCCORMACK, MICHAEL J.;MORTENSEN, JORN L.;EL HADDAD, MARCV.;AND OTHERS;REEL/FRAME:022073/0738;SIGNING DATES FROM 20080910 TO 20080912Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MCCORMACK, MICHAEL J.;MORTENSEN, JORN L.;EL HADDAD, MARCV.;AND OTHERS;SIGNING DATES FROM 20080910 TO 20080912;REEL/FRAME:022073/0738Owner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MCCORMACK, MICHAEL J.;MORTENSEN, JORN L.;EL HADDAD, MARCV.;AND OTHERS;SIGNING DATES FROM 20080910 TO 20080912;REEL/FRAME:022073/0738RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services