A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the United States Patent and Trademarks Office patent or records, but otherwise reserves all copyright rights whatsoever.
Data analysis is a process involving the organization, examination, display, and analysis of collected data using narratives, figures, structures, charts, graphs and tables. Data analyses are aided by data-analysis processors, which are computational engines, either in hardware or software, which can execute the data analysis process. High-end data-analysis processor typically have a language component like the R, S, SAS, Mathlab®, Python, and Perl families of languages. The availability of a language component facilitates data analysis in numerous ways including the following: application of arbitrary data transformations; applying one analysis result to results form another; abstraction of repeated complex analysis steps; and development of new methodology.
A principal challenge of using data-analysis processors is communicating the results of data analysis to data owners. Generation of reports as part of a data analysis project typically employs two separate steps. First, the data are analyzed using a data-analysis application based on a data analysis processor. And two, data analysis results (tables, graphs, figures) are used as the basis for a report document using a word processor application. Although, many data analysis applications try to support this process by generating pre-formatted tables, graphs and figures that can be easily integrated into a report document using copy-and-paste from the data analysis application to the word processor application, the basic paradigm is to construct the report document around the results obtained from data analysis.
Another approach for integration of data analysis and report document generation is to embed the data analysis itself into the report document. The concept of “literate programming systems”, “literate statistical practice” and “literate data analysis” are big efforts in this area. Proponents of this approach advocate software systems for authoring and distributing these dynamic data-analysis documents that contain text, code, data, and any auxiliary content needed to recreate the computations. The documents are dynamic in that the contents, including figures, tables, etc., can be recalculated each time a view of the document is generated. The advantage of this integration is that it allows readers to both verify and adapt the data analysis process outlined in the document. A user can readily reproduce the data analysis at any time in the future and a user can present the data analysis results in a different medium.
Whatever the precise merits and features of the prior art in this field, the earlier art does not achieve or fulfill the purposes of the present invention. The prior art does not provide for the following:
Accordingly, a need exists for computer-implemented applications, methods and systems that enable users to integrate data analysis and data-analysis results generation using familiar software applications like a word processor application.
In accordance with the present invention, the above and other problems are solved by providing a computer-readable extensible markup language data structure, and a method for utilizing the computer-readable data structure, the data structure comprising structural elements for defining a data-analysis parts container in a data-analysis template comprising a word processor document. The extensible markup language data structure is comprised of at least one properties element for receiving properties associated with the data-analysis container and at least one data-analysis parts element for receiving data-analysis parts, wherein the at least one properties element and the at least one data-analysis parts element define the data-analysis parts container in the data-analysis template comprising a word processor document.
The extensible markup language schema may entail a properties element comprising an attribute identifying a data-analysis processor. In one embodiment, the computer-readable extensible markup language data structure may entail a data analysis parts element comprising an element comprising at least one attribute for defining a data-analysis part, wherein the part is selected from a group of data-analysis part types comprising: a data set; an object; an expression; a chemical structure; a chemical reaction structure; a reaction table; a process pathway; a spectrum; and a chromatogram. In another embodiment, the extensible markup language data structure may entail a data-analysis parts element comprising at least one element selected from a plurality of elements, the plurality of elements comprising: an element for defining the data-analysis part associated with a data set; an element for defining the data-analysis part associated with an object; an element for defining the data-analysis part associated with a code block; an element for defining the data-analysis part associated with an expression; an element for defining the data-analysis part associated with a chemical structure; an element for defining the data-analysis part associated with a chemical reaction structure; an element for defining the data-analysis part associated with a reaction table; an element for defining the data-analysis part associated with a formulations table; an element for defining the data-analysis part associated with a process pathway; an element for defining the data-analysis part associated with a spectrum; and an element for defining the data-analysis part associated with a chromatogram. The extensible markup language data structure is operative with a method of use and operative on a computer-readable medium.
Also in accordance with the present invention, the aforementioned computer-readable extensible markup language data structure for defining a data-analysis parts container is operative on a computer-readable medium comprising a data-analysis template for use in data analysis in a word processor application, the data-analysis template comprising: a serialized word processor document, wherein presentation content and data content may be separated; a serialized data-analysis parts container; and program modules for communicating a data-analysis part between the word processor document and the data-analysis parts container.
In one embodiment, the computer-readable medium may entail a word processor document generated using Word developed by Microsoft Corporation. In another embodiment, the computer-readable medium may entail a serialized data-analysis parts container selected from a group of file types comprising: an extensible markup language file; a binary file; and a text file. In other embodiments, the computer-readable medium may entail a serialized data-analysis parts container which is embedded in: the data content of the word processor document; a bookmark in the word processor document; and in a field in the word processor document. In further embodiments, the computer-readable medium may entail program modules generated using smart document technology and smart document technology implemented using Visual Studio Tools for Office developed by Microsoft Corporation.
Embodiments of the present invention also provide a programmable object model for accessing the resources of a data-analysis parts container comprising an extensible markup language data structure, the model comprising: an application programming interface for allowing a user to programmatically access resources defined in the computer-readable extensible markup language data structure defining a data-analysis parts container; said application programming interface comprising a message call for requesting association of one or more XML-defined resources to a data-analysis parts container object; and said application programming interface operative to receive a return value from the data-analysis parts container object responsive to association of the one or more XML-defined resources to the data-analysis parts container object. Further embodiments of the present invention additionally provide a computer-readable medium comprising a data-analysis template for use in data analysis in a word processor application, the data-analysis template comprising: a serialized word processor document, wherein presentation content and data content may be separated; a serialized data-analysis parts container; and program modules for communicating a data-analysis part between the word processor document and the data-analysis parts container.
Referring now to the drawings, in which like numerals represent like elements through several figures, aspects of the present invention and the exemplary operating environment will be described.
The steps of the claimed method and apparatus are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the methods or apparatus of the claims include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The steps of the claimed method and apparatus may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and other computer instructions or components that perform particular tasks or implement particular abstract data types. The methods and apparatus may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network, such as web services. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
As described below, embodiments of the present invention may be implemented through the interaction of software objects in conjunction with components of the Extensible Markup Language (XML).
One embodiment of the invention entails a data-analysis parts container for defining data-analysis parts comprising a computer-readable XML data structure. For example referring to
Those skilled in the art of XML will recognize that a user is free to create their own elements by assigning their choice of property-name and part-type to elements, and similarly to attributes. Furthermore, the user is free to add additional child nodes and attributes, thereby having complete control of the definition of the contents of the data-analysis parts container. Then, so long as any downstream consuming application or computing machinery is provided instructions as to the definitions of the named elements and attributes, that application or computing machine may utilize the data in accordance with the semantic meaning of the elements and attributes. For example, if the user assigns “PlatformKey” to property-name-1 with content “BlueRef.R”, an application program can recognize this as a data-analysis parts container that is part of a data-analysis template that is employing the BlueRef.R data-analysis processor.
According to embodiments of the present invention, the computer-readable XML data structure of the data-analysis container 260 may be saved according to a variety of different file formats and according to the native application with which the container is created. For example, a data-analysis template 220 comprising a data-analysis parts container 260 may be saved according to the word processor application 210. According to some embodiments, the data-analysis parts container 250 is embedded in the data content 250 of the word processor document 230 wherein the presentation content and the data content may be separated. For example, the XML data structure corresponding to the data-analysis parts may be maintained as a string within a field, bookmark or node in the word processor document. Alternatively, the XML data structure corresponding to the data-analysis parts container may be saved as an XML file and embedded in a collection of files packaged as a word processor file, such as a ZIP container. For a discussion of an illustrative file format which allows separation of content and data within a document associated with a word processor application see U.S. patent application entitled “Structuring Data for Word Processing Documents,” U.S. Ser. No. 11/398,339, filed Apr. 5, 2006, which is incorporated herein by reference as if fully set out herein. In such cases, the word processor document 230 is saved according to the word processor application 210, including but not limited to text, XML and binary formats. In another embodiment of the invention, the data-analysis parts container 260 comprising an XML data structure may be saved as a file in an XML format. Accordingly, downstream or third party applications capable of understanding data saved as XML may open and consume the contents of the data-analysis parts container or alternatively may be used to generate the XML data structure and the contents of the data-analysis container.
In order to provide a definitional framework for XML elements applied to the data-analysis parts container and data-analysis parts, XML schema files may be created, which contain information necessary for allowing users and consumers of marked up and stored data to understand the XML element (tag) definitions designed by the creator of the data-analysis container. Each schema file, also referred to in the art as a XSD file, preferably includes a listing of all the XML elements (tags) that may be applied to the data-analysis container according to a given schema file and may include rules for the use of the elements.
Referring now to
The Properties element 502 is a collection of zero or more Property elements 504 utilized to define properties associated with the DataAnalysisPart Container element 501. The Property element 504 is used to contain one instance of a property and may hold an attribute Name such as the name of the data-analysis processor associated with the DataAnalysisPartContainer or the Name of a reference to libraries or packages useful for performing data analysis. The Parts element 503 is a collection of zero or more Part elements 506 utilized to contain the attributes and content of data-analysis parts. A Part element 506 is used to contain one instance of a part and may have attributes including a globally unique ID (GUID) and may have a part type. The Part Type is utilized to define the data-analysis part and includes but is not limited to the mutually exclusive Part Types DataSet, EmbeddedObject, CodeBlock and Expression. Type elements that are children of Part are mutually exclusive in that only one of them may be defined for a particular Part. A Part element 506 is also used to contain the data associated with one instance of a part as a Part Data 508. A Part Data 508 has an attribute like Name, which can be utilized to contain part data including but not limited to the following: a label naming the part data, a file extension defining the file type containing the part data, an original file name defining the originating file containing the part data, an alias file name defining the file containing the part data, and the file contents comprising a serialized instance of the file contents.
Referring now to
Those skilled in the art will recognize that data analysis parts can be enumerated as named part type elements rather than as collections of Parts with associated Type attributes as illustrated in
The Properties element 820 is utilized to define and constrain the properties of its parent element MatrixData, 800. The Properties element 820 may have child elements PlatformKey 821, utilized to define the data-analysis platform associated with MatrixData, and References 822, utilized to define auxiliary entities needed to perform the data analysis such a libraries, packages and functions.
The DataSets element 830 is utilized to define and constrain the collection of data sets in the data-analysis parts container. A data set is typically associated with a specific data structure which has been saved to a file. DataSets 830 may contain zero or more DataSet 831, which may have child elements including but not limited the following: a Label 833 for defining the name of the data set; an Extension 834 for defining the file extension associated with the data set; an OriginalFileName 835 for defining the source file name associated with the data set; a FileName 836 for defining an alias for the source file associated with the data set; and FileContents 837 for defining the contents of the data set. Further, a DataSet 831 may have zero or more attributes including a globally unique ID (GUID) 832.
The EmbeddedObjects element 840 is used to define and constrain the collection of objects in the data-analysis container. An embedded object is typically serialized prior to use which corresponds to the process of saving an object onto a storage medium. EmbeddedObjects 840 may contain zero or more EmbeddedObject 841, which may have child elements including but not limited to the following: a Label 843 for defining the name of the embedded object; an Extension 844 for defining the file extension associated with the object; an OriginalFileName 845 for defining the source of the file associated with the object; a FileName 846 for defining an alias for the source file associated with the object; and FileContents 847 for defining the contents of the object. Further, an EmbeddedObject 841 may have zero or more attributes including a globally unique ID (GUID) 842.
It is to be understood that any type of non-textual data set or serialized object can be used within the present invention by appropriate binary to text encoding of the data set or serialized object to a text format consistent with XML use. Binary to text encoding approaches include but are not limited to the following: base64, uuencoding, quoted-printable, BinHex, Ascii85, yEnc, Radix-64, and Percent encoding.
The CodeBlocks element 850 is used to define and constrain the collection of code blocks in the data-analysis container. A code block typically consists of multiple lines of computer-readable code in the form of text. CodeBlocks 850 may contain zero or more CodeBlock elements, which may have child elements including but not limited to the following: a Label 853 for defining the name of the code block; a FigureSizePercentage 854 for defining the size of any graphic output resulting from executing the code block during data analysis; an OutputCode 855 for defining a Boolean value that determines whether display of the code block is suppressed during data analysis; an ExecuteCode 856 for defining a Boolean value that determines whether execution of the code block is suppressed during data analysis; and CodeText 857 for defining the contents of the code block. Further, a CodeBlock 851 may have zero or more attributes including a globally unique ID (GUID) 852.
The Expressions element 860 is used to define and constrain the collection of expressions in the data-analysis container. An expression typically consists of a single line of computer-readable code in the form of text. Expressions 860 may contain zero or more Expression 861, which may have child elements including but not limited to the following: a Label 863 for defining the name of the expression; and CodeText for defining the contents of the expression. Further, an Expression 861 may have zero or more attributes including a globally unique ID (GUID) 862.
The MatrixData element 800 and the CodeBlocks 850 and Expressions 860 elements are described in further detail in co-pending U.S. patent application entitled “Method and Apparatus for Data-Analysis in a Word Processor Application” which is expressly incorporated herein, in its entirety, by reference.
Referring now to
When reading the discussion of the routines presented herein, it should be appreciated that the logical operations of various embodiments of the present invention are implemented (1) as a sequence of computer implemented acts or program modules 270 running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operation illustrated in
Referring now to
The routine 900 continues from operation 910 to operation 915, wherein the Label element 853 receives insertion text for a name identifying the code block. In particular, a user may insert a text string within the placeholder element 853 to provide an identifying label on the code block data-analysis part. For instance, the label may read “ANOVA Analysis.” The routine 900 continues from operation 915 to operation 920, wherein the FigureSizePercentage element 854 receives a numerical value, which allows a user to insert a value between 0 and 100 to indicate to what percent of the word processing document margin to adjust the size of any graphics outputted as a result of executing the data analysis called for in the code block.
The routine 900 continues from operation 920 to operation 925, wherein the OutputCode element 855 Boolean value is selected in the schema for the content region. In particular, a user may select one of two mutually exclusive properties (true or false) to indicate whether the content of the CodeText element 857 should be suppressed in the output during performance of the data analysis. The routine 900 continues from operation 925 at operation 930, wherein the ExecuteCode element 856 Boolean value is selected in the schema for the content region. In particular, a user may select one of two mutually exclusive properties (true or false) to indicate whether the content of the CodeText element 857 should be suppressed in code block execution during data analysis.
The routine 900 continues from operation 930 to operation 935, wherein the CodeText element 857 receives insertion text corresponding to instructions used by the data-analysis platform for data analysis. In particular, a user may insert a text string within the placeholder element 857. It should be understood that insertion of a text string may be achieved through direct actions of the user or may be achieved through actions of an auxiliary application program. The routine 900 then ends.
Turning now to
In this illustrative example, the FileContents 10837 are inserted in an XML CDATA section as a serialized XML data structure in the form of a string in conformance with the Statistics Date Markup Language schema that may be found at http://www.omegahat.org/StatDataML. This schema provides a way to serialize many common data structures such as vectors, arrays, data frames, lists, etc. as XML data structures. It is to be understood that the invention may be used with any data structure, format or object, which may be serialized to text employing the many serialization and/or encoding techniques available to achieve such ends.
Turning now to
Exemplary embodiments of the present invention may be implemented by communications between different software objects in an object-oriented programming environment. For purposes of the following description of example embodiments, it is useful to briefly to describe components of an object-oriented programming environment.
Referring now to
A first object 1210 can communicate with a second object 1220 to obtain information or functionality from the second object 1220 by calling the second object 1220 via a message call 1230. As is well know to those skilled in the art of object-oriented programming environment, the first object 1210 can communicate with the second object 1220 via application programming interfaces (API) that allow two disparate software objects 1210, 1220 to communicate with each other in order to obtain information and functionality from each other.
For example, if the first object 1210 requires the functionality provided by a method contained in the second object 1220, the first object 1210 can pass a message call 1230 to the second object 1220 in which the first object identifies the required method and in which the first object passes any required parameters to the second object required by the second object for operating the identified method. Once the second object 1220 receives the call from the first object 1210, second object 1220 executes the called method based on the provided parameters and sends a return message 1240 containing a value obtained from the executed method back to the first object 1210.
Referring now to
Various data-analysis parts 262 can be included in the data-analysis parts container 260 using, for example, the word processor application 210 in conjunction with program modules 270. According to example embodiments, an object-oriented programming model is provided to allow program modules 270 to access and/or manipulate data-analysis parts 262 embedded in data-analysis parts container 260 and/or the data analysis parts container 260 embedded in the data content 250 via a set of application programming interfaces or object-oriented message calls either directly through one or more application programming interfaces or programmatically through other software application programs written according to a variety of programming languages such as, for example C, C++, C#, Visual Basic, and the like.
In some embodiments, program modules 270 may be plug-ins or add-ins to the word processor application 210, or a standalone application that can be used to access and/or manipulate data-analysis parts in a data-analysis template 220 or in a data-analysis parts container 260. For example, a program module 270 may be used to communicate a data-analysis parts container 260 in a word processor application to a data-analysis processor to generate a data-analysis results collection, or can be used to edit a data-analysis part 262 using a standalone application like MatrixStudio developed by Blue Reference Corporation. These and other embodiments of the programmable object model are described in further detail in co-pending U.S. patent applications “Object-Oriented Framework for Data-Analysis Having Pluggable Platform Runtimes and Export Services” and “Methods and Apparatus for Data Analysis in a Word Processor Application” which are expressly incorporated herein, in its entirety, by reference.
The following is a description of objects and associated properties comprising application programming interfaces (API) or object-oriented message calls that provide access to the resources in the data-analysis parts container. Following each of the objects set out below is a description of the operation, properties and methods of the object.
MatrixDocument Object—This object is used to encapsulate a disk file that comprises the MatrixData object. This object extends the MatrixData object and implements IDocument.
The following are properties and methods of the object.
MatrixData Object—Object used to encapsulate a data analysis parts container. This object has no public methods; all methods listed are protected, such that they can be used by objects that inherit MatrixData as its base.
The following are properties and methods of the object.
Properties Object—Object used to encapsulate the properties for the MatrixData object. It is to be noted that this is not a collection.
The following are properties and methods of the object.
References Object—Object used to encapsulate the collection of Reference objects contained in the properties of a MatrixData object. This object inherits from CollectionBase and comprises a collection of Reference objects.
The following are properties and methods of the object.
Reference Object—Object used to encapsulate a reference.
The following are properties and methods of the object.
The following are properties and methods of the object.
DataSet Object—Object used to encapsulate a data set. The data set contains an embedded file comprising a data set in SDML format; this embedded file can be an SDML file from disk or an SDML file extracted from a different source (such as a MatrixExcel document). Object implements IDataItem interface.
The following are properties and methods of the object.
EmbeddedObjects Object—Object used to encapsulate the collection of EmbeddedObject objects contained in a MatrixData object. This object inherits from DataObjectItems (which itself inherits from CollectionBase) and comprises a collection of EmbeddedObject objects.
The following are properties and methods of the object.
EmbeddedObject Object—Object used to encapsulate an embedded object. The embedded object contains an embedded file comprising a data file stored in binary format; this embedded file is loaded into the platform runtime engine prior to runtime execution. This object implements ICodeItem.
The following are properties and methods of the object.
CodeBlocks Object—Object used to encapsulate the collection of CodeBlock objects contained in a MatrixData object. This object inherits from CodeItems (which itself inherits from CollectionBase) and comprises a collection of CodeBlock objects.
The following are properties and methods of the object.
The following are properties and methods of the object.
Expressions Object—Object used to encapsulate the collection of Expression objects contained in a MatrixData object. This object inherits from CodeItems (which itself inherits from CollectionBase) and comprises a collection of Expression objects.
The following are properties and methods of the object.
Expression Object—Object used to encapsulate a single-line expression. This object implements ICodeItem.
The following are properties and methods of the object.
The example object model disclosed above allows users to access and manipulate the resources of a data-analysis parts container and to access and manipulate a data-analysis parts container. For example, an example code section, shown in pseudocode and C# code, illustrates the use of the programmable object model to access the resources of a data-analysis container as a component of a data-analysis template, serialized as a .matrixdata file, and add a new code block object using the following steps:
Psuedocode representation of the procedure:
Implementation as C# code:
In another example of the programmable object model, a new .matrixdata file is created and a data set is added using an existing .sdml file. Note that when the data set is added (using the specified data set file path), the contents of the data set file are embedded into the DataSet object.
Pseudocode representation of the procedure:
Implementation as C# code:
One embodiment of the present invention entails a computer-readable medium comprising a data-analysis template for use in data analysis in a word processor application, the data-analysis template comprising: a serialized word processor document, wherein presentation content and data content may be separated; a serialized data-analysis parts container; and program modules for communicating a data-analysis part between the word processor document and the data-analysis parts container. Referring to
As illustrated earlier, communicating a data-analysis part 262 between the word processor document 230 and the data-analysis parts container 260 is facilitated by the use of program modules 270. Implementation of such program modules may be through the use of smart document technology, which provides an architecture to build context-sensitive data-analysis templates. Smart document solutions associate an electronic document like a word processor document 230 with an XML schema, so that presentation content 240 like a paragraph of text may be distinguished from data content 250 like a string of text corresponding to a data-analysis part 262. It is important to note that the base functionality of the word processor application is retained in a smart document solution. Smart document solutions allows programmatic customization for searching within and operating on extensible markup language (XML) nodes within a data-analysis template, which is comprised of a data-analysis parts container. Data-analysis templates may be documents in a word processor application or may be files that can be opened by a word processor application such as Word developed by Microsoft Corporation.
Smart document solutions may be created using many modern programming systems such as Microsoft Visual BasicT™ 6.0, Microsoft Visual Basic .NET™, Microsoft Visual C#™.NET, Microsoft Visual J#™ or Microsoft Visual C++™ development systems. Creation of smart document solutions may be assisted by use of software development tools such as Visual Studio Tools for Office developed by Microsoft Corporation. Smart document solutions may be deployed over a corporate intranet, over the Internet, or through Web sites. Further descriptions and details for the creation of smart document solutions may be found in the book by Eric Carter and Eric Lippert entitled “Visual Studio Tools for Office: Using C# with Excel, Word, Outlook, and Infopath,” Addison Wesley Professional, Microsoft .NET Development Series, 2006.
A user may create a smart document solution as a dynamic linked library (DLL) or as an XML file. An example of the data-analysis template development cycle using the DLL approach may be as follows:
In some embodiments of the present invention, program modules 270 can be a plug-in to the word processor application 210.
Although the forgoing text sets forth a detailed description of numerous different embodiments, it should be understood that the scope of the patent is defined by the words in the claims set forth at the end of the patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment because describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after filing date of this patent, which would still fall within the scope of the claims.
Thus, many modifications and variations may be made in the techniques and structures described and illustrated herein without departing from the spirit and scope of the present claims. Accordingly, it should be understood that the methods and apparatus described herein are illustrative only and not limiting upon the scope of the claims.
U.S. patent application Attorney Docket No. BLUEREF-002, filed on Jan. 3, 2007 and entitled “Method and Apparatus for Managing Data-Analysis Parts in a Word Processor Application,” U.S. patent application Attorney Docket No. BLUEREF-003, filed on Jan. 3, 2007 and entitled “Object-Oriented Framework for Data-Analysis Having Pluggable Platform Runtimes and Export Services,” and U.S. patent application Attorney Docket No. BLUEREF-004, filed on Jan. 3, 2007 and entitled “Method and Apparatus for Data Analysis in a Word Processor Application,” which are assigned to the same assignee as the present invention, are hereby incorporated, in their entirety, by reference.