The present disclosure relates generally to computer applications, and more particularly to platform-independent, script-based application generation for spreadsheet software.
Spreadsheet applications such as Microsoft Excel™, Lotus 1-2-3™, Google™ Spreadsheets, and Open Office Calc™ are widely employed, and especially, their use in the financial industry is prevalent. Those applications often provide a natural programming platform for the users with simple user interface (UI) programming and programming interface including built-in languages like VBA (Visual Basic for Application) and external development interface like Microsoft VSTO (Visual Studio Tools for Office). Despite such utilities, however, in order to integrate complex data models and associated user interfaces (UIs) requiring data input, transformation, validation, and management functionalities, additional programming or integrating effort must be expanded, which to a non-professional programmer may pose a daunting task. Moreover, spreadsheet extension development environment (e.g., Visual Studio Tool for Office) are platform and product dependent, which means that a user programming on such environments must learn and be familiar not only with one but also several different ways of programming. For example, VBA program written for Excel™ and stored in a separate program workspace cannot work for Lotus 1-2-3™ or Google™ Spreadsheets.
Accordingly, it would be desirable to provide a user interface, data model, and/or process description language that is spreadsheet-friendly and support process, and data management, and also are easy to use and understand. It would be also desirable to provide an interpreter of the language, which is independent of the platform, spreadsheet product and programming language.
A method and system for platform-independent, script-based application generation for spreadsheet software are provided. The method in one aspect may comprise reading from one or more spreadsheets rendered by a spreadsheet program, description written in the text-based language. The text-based language has constructs for describing user interfaces, data models and/or workflow models, or combinations thereof The text-based language is written independently of the spreadsheet program. The method may also include parsing the description, and generating one or more user interfaces, data model or workflow model or combinations thereof from the parsed description. The user interfaces, data model or workflow model or combinations thereof are generated in the spreadsheet program.
A method for platform-independent, script-based application generation for spreadsheet software, in another aspect, may comprise providing a text-based language for describing user interfaces, data models and/or workflow models, or combinations thereof, text of the text-based language being enterable in one or more spreadsheets of a spreadsheet program. The text-based language is written independent of the spreadsheet program. The method may also include providing an interpreter that parses the text and translates the text into programming instructions in a language native to the spreadsheet program. The programming instructions are for generating one or more user interfaces, data models or workflow models or combination thereof specified by the text. The one or more user interfaces, data models or workflow models or combination thereof are generated and presented in the spreadsheet program.
A system for platform-independent, script-based application generation for spreadsheet software, in one aspect, may comprise a text-based language for describing user interfaces, data models and/or workflow models, or combinations thereof, text of the text-based language being enterable in one or more spreadsheets of a spreadsheet program. The text-based language is written independently of the spreadsheet program. An interpreter parses the text and translates the text into programming instructions in a language native to the spreadsheet program. The programming instructions are for generating one or more user interfaces, data models or workflow models or combination thereof specified by the text. The one or more user interfaces, data models or workflow models or combination thereof are generated and presented in or by the spreadsheet program.
A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform the above methods may be also provided.
Further features as well as the structure and operation of various embodiments are described in detail below with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.
An interpreter 104 is provided that loads the spreadsheet file and parse the data in the sheets. The interpreter 104 parses the description stored in one or more spreadsheets and generates user interfaces 106 with data accordingly, which enforce prescribed processes defined in spreadsheets, e.g., questionnaire. The interpreter 104 generates the UI as defined or commanded by the user via the set of text in the spreadsheet. The data defined in the spreadsheet is loaded to fill the UI components as defined in data binding mechanism. An example of data binding is shown in
In one embodiment, Interpreter 104 of the present disclosure runs or functions independently of the specific spreadsheet program. The interpreter 104 may be written in Java™ or other languages such as VisualBasic™, JavaScript™, Python™, Perl™, C++, C, or other language. The interpreter 104 can be used for different spreadsheet programs as long as they have columns and rows, which is given by definition of spreadsheets.
The interpreter 104 understands the script language constructs described in the examples shown in the figures. Also, the interpreter 104 understands the structure of the script programs stored in spreadsheets. When a script program 102 is submitted to the interpreter 104, the interpreter 104 understands the commands in the program and translates them into language constructs that the spreadsheet software where the program is run understands, e.g., the interpreter 104 may translate the text program into VBA™ for Excel™ spreadsheet software. Then the spreadsheet generates the UI, data, and workflow with widgets as the script commands. In one aspect, the interpreter 104 may function on top of languages native to spreadsheet software. So, it is possible to write an interpreter, which understands a script program for each spreadsheet software, i.e., one for Excel™, another for Lotus™, and another for Google Spreadsheets. Once the interpreter is installed, the same script program can run on different spreadsheet software, e.g., Excel™, Lotus™, Google Spreadsheets and Open Office Suite.
Working results may be saved back to one or more spreadsheets, and the user can view them and manually modify the values as necessary directly on the spreadsheets. For instance, user input in the application may be stored back to spreadsheet so the user can open the spreadsheet in native product and continue with the work. For example, the data input to the forms, for instance, a specific Scenario name typed in by a user, a selection of radio button, a selection of check box, etc. may be saved in a worksheet, for example as a script text in another worksheet. Saving the scripts in worksheets helps the independence of the script programs from the spreadsheet programs.
The interpreter 104 understands the script language constructs and the structure of the script programs stored in spreadsheets. When a script program 102 is submitted to the interpreter 104, it understands the commands in the program and translates them into languages constructs that the spreadsheet software where the program is run understands, e.g., VBA™ in case of Excel™. Then the spreadsheet generates the UI, data, and workflow with as the script commands. In a sense, the interpreter sits on top of languages native to spreadsheet software. An interpreter that understands the script program may be written for each spreadsheet software program, e.g., one for Excel™, another for Lotus™, and another for Google™ Spreadsheets. Once the interpreter is installed, the same script program can run on different spreadsheet software, e.g., Excel™, Lotus™, Google Spreadsheets and Open Office Suite.
For example, the language construct at 202 generates the graphical widgets shown at 204 in
In the example shown at 202, the group element in column C, row 3 is labeled “Scenario Info.” It contains a text space labeled “Scenario Name” as shown at column D, row 4, and a default text, “Type a scenario name.” In column C, row 5, another group element labeled “Extra Info” has two group element children, one labeled “Project Info” and the other labeled “Question.” The Project Info contains three text entering spaces labeled “Customer Name,” “Project Name,” and “Project Start Date.” The other text group element, “Question” has three questions. The first two questions provide radio buttons for the user's selection. The last one provides check boxes for the user's selection. The graphical widgets in the UI corresponding the commands in the script 202 are displayed in 204. Examples of graphical widgets and UI components are shown at 206.
In one embodiment, there are two types of UI components that are used to construct the UI. One type is called container widget, another other type is called non-container widget. Examples of container widgets include but are not limited to, Group, Composite, etc. The non-container widgets include but are not limited to, Label, Text, Button, etc.
As an example, the system and method may be built on or utilizing the existing Eclipse SWT widgets technology (Java™ based), and use Group and Composite in Eclipse SWT widgets as container widgets, and many of the widgets provided by Eclipse SWT, like Label, Text, Button, Tree, Table, Browser, etc. An interpreter may be built on Eclipse in Java™ programming language and run on Excel™, for example. The interpreter may be programmed to understand the Eclipse SWT widgets such as those shown in
The description or text language of the present disclosure supports sequence based workflow. The sequence-based workflow defines the steps that users follow to complete a task. In a sequence-based workflow, one or more steps may need to be taken before other steps, e.g., so one or more prerequisites can be determined along with the workflow. The workflow can be used to organize the sequence of user interfaces which could make the tool more user-friendly. In the script spreadsheet, users can follow the standard of the script language to define the steps of each workflow. The first column could be used to define different tasks users can take, and then the second column could be used to define the steps of each task.
Referring to
Referring to
Once the script program (e.g., shown in
As in ordinary task execution in any computer program, the user now goes through the generated user interfaces, reviewing questions and data shown in the user interfaces, entering data input requested by the user interfaces and following the steps guided by the user interfaces at 530. All the views and activities provided in the user interfaces are those that are specified in the script program. Once all the steps specified in the generated user interfaces are followed, output of the script program is generated and stored in one or more worksheets in the spreadsheet software at 532. For instance, the generated program that is native to the spreadsheet software can include program instructions to save or store the outputs of the script program in one or more separate worksheets.
The user may review the output as written out to the worksheet to check that it is satisfactory. If the output is not satisfactory to the user, there may be possible actions that can be taken. First, the user can review the output in worksheets and directly make changes in the worksheets at 536. The other action is, instead of editing the results; the user can edit the script program at 538. It is as easy as editing the output worksheets, because the script program is also stored in one or more worksheets. Once the script program is modified, it is resubmitted to the interpreter and the user follows the steps again from step 524.
An output written to the worksheet comprises data. Depending on the input and logic of the script program 102, the output may be in the form of anything that can be shown in worksheets in the spreadsheet program.
Developing the interpreter and script constructs as described in this disclosure is well within the skills of a person having ordinary skill in computer languages, compiler and interpreter technology. Therefore, details are not provided herein. For example, “Compilers: Principles, Techniques, and Tools” by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman provides a comprehensive description of programming language compilers and constructs.
Various aspects of the present disclosure may be embodied as a program, software, or computer instructions embodied in a computer or machine usable or readable medium, which causes the computer or machine to perform the steps of the method when executed on the computer, processor, and/or machine.
The system and method of the present disclosure may be implemented and run on a general-purpose computer or special-purpose computer system. The computer system may be any type of known or will be known systems and may typically include a processor, memory device, a storage device, input/output devices, internal buses, and/or a communications interface for communicating with other computer systems in conjunction with communication hardware and software, etc.
The terms “computer system” and “computer network” as may be used in the present application may include a variety of combinations of fixed and/or portable computer hardware, software, peripherals, and storage devices. The computer system may include a plurality of individual components that are networked or otherwise linked to perform collaboratively, or may include one or more stand-alone components. The hardware and software components of the computer system of the present application may include and may be included within fixed and portable devices such as desktop, laptop, server. A module may be a component of a device, software, program, or system that implements some “functionality”, which can be embodied as software, hardware, firmware, electronic circuitry, or etc.
The embodiments described above are illustrative examples and it should not be construed that the present invention is limited to these particular embodiments. Thus, various changes and modifications may be effected by one skilled in the art without departing from the spirit or scope of the invention as defined in the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5737494 | Guinta et al. | Apr 1998 | A |
5918232 | Pouschine et al. | Jun 1999 | A |
5946694 | Copeland et al. | Aug 1999 | A |
6011559 | Gangopadhyay et al. | Jan 2000 | A |
6023578 | Birsan et al. | Feb 2000 | A |
6119149 | Notani | Sep 2000 | A |
6161101 | Guinta et al. | Dec 2000 | A |
6212530 | Kadlec | Apr 2001 | B1 |
6292830 | Taylor et al. | Sep 2001 | B1 |
6332130 | Notani et al. | Dec 2001 | B1 |
6339838 | Weinman, Jr. | Jan 2002 | B1 |
6411936 | Sanders | Jun 2002 | B1 |
6556974 | D'Alessandro | Apr 2003 | B1 |
6601233 | Underwood | Jul 2003 | B1 |
6789252 | Burke et al. | Sep 2004 | B1 |
6919910 | Chang | Jul 2005 | B2 |
6928436 | Baudel | Aug 2005 | B2 |
6954758 | O'Flaherty | Oct 2005 | B1 |
6965868 | Bednarek et al. | Nov 2005 | B1 |
7117161 | Bruce | Oct 2006 | B2 |
7136827 | Eicher | Nov 2006 | B2 |
7162427 | Myrick et al. | Jan 2007 | B1 |
7206751 | Hack et al. | Apr 2007 | B2 |
7246128 | Jordahl | Jul 2007 | B2 |
7251613 | Flores et al. | Jul 2007 | B2 |
7283986 | Okunseinde et al. | Oct 2007 | B2 |
7308414 | Parker et al. | Dec 2007 | B2 |
7415437 | Marvin et al. | Aug 2008 | B2 |
7503032 | Bhaskaran et al. | Mar 2009 | B2 |
7506302 | Bahrami et al. | Mar 2009 | B2 |
7574694 | Mangan et al. | Aug 2009 | B2 |
7584117 | Bubner | Sep 2009 | B2 |
7593012 | Ikehata et al. | Sep 2009 | B2 |
7605813 | Uthe | Oct 2009 | B2 |
7617177 | Bukary et al. | Nov 2009 | B2 |
7668855 | Hodgson et al. | Feb 2010 | B2 |
7693738 | Guinta et al. | Apr 2010 | B2 |
7885841 | King | Feb 2011 | B2 |
7925594 | Jaligama et al. | Apr 2011 | B2 |
7933762 | Pinto et al. | Apr 2011 | B2 |
20010034628 | Eder | Oct 2001 | A1 |
20010049615 | Wong et al. | Dec 2001 | A1 |
20020099563 | Adendorff et al. | Jul 2002 | A1 |
20030004746 | Kheirolomoom et al. | Jan 2003 | A1 |
20030120372 | Ruth et al. | Jun 2003 | A1 |
20040059611 | Kananghinis et al. | Mar 2004 | A1 |
20040064436 | Breslin et al. | Apr 2004 | A1 |
20040078378 | Bala | Apr 2004 | A1 |
20040078777 | Bahrami | Apr 2004 | A1 |
20040143470 | Myrick et al. | Jul 2004 | A1 |
20050055677 | Nanja et al. | Mar 2005 | A1 |
20050065831 | Keay et al. | Mar 2005 | A1 |
20050119922 | Eder | Jun 2005 | A1 |
20050154769 | Eckart et al. | Jul 2005 | A1 |
20050171980 | Fernandez et al. | Aug 2005 | A1 |
20050203784 | Rackham | Sep 2005 | A1 |
20050246215 | Rackham | Nov 2005 | A1 |
20060015424 | Esposito et al. | Jan 2006 | A1 |
20060090129 | Collie et al. | Apr 2006 | A1 |
20060100947 | Cimral et al. | May 2006 | A1 |
20060129419 | Flaxer et al. | Jun 2006 | A1 |
20060178920 | Muell | Aug 2006 | A1 |
20060184412 | Kagan et al. | Aug 2006 | A1 |
20060190544 | Chikirivao et al. | Aug 2006 | A1 |
20060195373 | Flaxer et al. | Aug 2006 | A1 |
20060229926 | Homann et al. | Oct 2006 | A1 |
20060241956 | Levy et al. | Oct 2006 | A1 |
20070021993 | Chandra et al. | Jan 2007 | A1 |
20070022410 | Ban et al. | Jan 2007 | A1 |
20070027701 | Cohn et al. | Feb 2007 | A1 |
20070033211 | Berman et al. | Feb 2007 | A1 |
20070038465 | Jang et al. | Feb 2007 | A1 |
20070038501 | Lee et al. | Feb 2007 | A1 |
20070038502 | Kagan et al. | Feb 2007 | A1 |
20070038627 | Cohn et al. | Feb 2007 | A1 |
20070050232 | Chang et al. | Mar 2007 | A1 |
20070106520 | Akkiraju et al. | May 2007 | A1 |
20070118551 | Akkiraju et al. | May 2007 | A1 |
20070136115 | Doganaksoy et al. | Jun 2007 | A1 |
20070162482 | Flaxer et al. | Jul 2007 | A1 |
20070174109 | Cohn et al. | Jul 2007 | A1 |
20070179822 | Benayon et al. | Aug 2007 | A1 |
20070179825 | Dreiling et al. | Aug 2007 | A1 |
20070203766 | Adler et al. | Aug 2007 | A1 |
20070214025 | Jang et al. | Sep 2007 | A1 |
20070245297 | Kuester et al. | Oct 2007 | A1 |
20070250373 | Ernest et al. | Oct 2007 | A1 |
20070265864 | Chess et al. | Nov 2007 | A1 |
20070271277 | Ivan et al. | Nov 2007 | A1 |
20070279416 | Cobb et al. | Dec 2007 | A1 |
20080004924 | Cao et al. | Jan 2008 | A1 |
20080033888 | Flaxer et al. | Feb 2008 | A1 |
20080172273 | Rackham | Jul 2008 | A1 |
20080177622 | Akkiraju et al. | Jul 2008 | A1 |
20080313596 | Kreamer et al. | Dec 2008 | A1 |
20090006150 | Prigge et al. | Jan 2009 | A1 |
Entry |
---|
Visual Studio Tools for Office: Using Visual Basic 2005 with Excel, Word, Outlook, and InfoPath, by Eric Carter et al., Pub. Date: Apr. 26, 2006, Publisher: Addison-Wesley Professional, ISBN: 0-321-41175-7. |
Microsoft Office Excel 2007 Visual Basic for Applications Step by Step, by Reed Jacobson, Pub. Date: May 16, 2007, Publisher: Microsoft Press, ISBN: 0-7356-2402-X, pp. 303-333. |
U.S. Office Action mailed Dec. 16, 2011 received in related U.S. Appl. No. 12/243,898. |
U.S. Office Action mailed Dec. 22, 2011 in related U.S. Appl. No. 12/243,811. |
Merino et al., Task-at-hand interface for change detection in stock market data, ACM, 1-59593-353-0-06-005, AVI 06, Venezia, Italy, May 23-26, 2006. |
Chintalapani et al., Extending the Utility of Treemaps with Flexible Hierarchy, Archives-org, 2005. |
Shneiderman, Treemaps for space-constrained visualization of hierarchies, archives-org, Mar. 21, 2007. |
U.S. Official Action mailed Mar. 13, 2012 in related U.S. Appl. No. 12/243,872. |
Ernest et al., Adding value to the IT organization with the Component Business Model, IBM Systems Journal, 2007, vol. 46, No. 3. |
Lee et al., Value-Centric, Model-Driven Business Transformation, CEC-EEE '06 Proceedings of the 8th IEEE International Conference on E-Commerce Technology and the 3rd International Conference on Enterprise Computing, E-Commerce and E-Services, IEEE Computer Society Washington DC, ISBN 0-7695-2511-3. |
Li et al., Continual Business Transformation Technology, International Federation for Information Processing, vol. 205, Research and Practical Issues of Enterprise Information Systems, eds. Tjoa, A.M., Xu, L., Chaudhry, S., (Boston: Springer), pp. 85-95. |
Office Action dated Jun. 29, 2011 received in related U.S. Appl. No. 12/243,891. |
Office Action dated Jul. 19, 2011 received in related U.S. Appl. No. 12/243,851. |
Office Action dated Jul. 5, 2011 received in related U.S. Appl. No. 12/243,811. |
Office Action dated May 20, 2011 received in related U.S. Appl. No. 12/243,872. |
Microsoft Office Project Server 2007, 2006 Microsoft Corporation, http://download.microsoft.com/download/e/b/9/eb9e67aa-ae8c-4cc4-aad8-9e352f92c28c/ProjectPortfolioServer2007ProductGuide.doc. |
Microsoft Office Project Portfolio Server 2007 Optimizer, https://www.am.ohio.gov/PortfolioServer/Manuals/MOPPSOptimizer.pdf. |
Balzer et al., Voroni Treemaps for the Visualization of Software Metrics, Association for Computing Machinery Inc., 2005. |
Bederson et al., Ordered and Quantum Treemaps Making Effective use of 2D Space to Display Hierarchies, Institute of Advanced Computer Studies, College Park, MD, ACM, 2002. |
Bladh, Step Tree, A File System Visualizer, Thesis No. MSC-2002-3, Department of Software Engineering and Computer Science, Blekinge Institute of Technology, Sweden, 2002. |
Hodgson, Squarified Treemaps in XAML and C sing Microsoft Longhorne, the Code Project, 2002. |
Heat Map, http://en.wikipedia.org/wiki/Heat—map. |
Office Action dated Jun. 23, 2011 received in related U.S. Appl. No. 12/243,898. |
Pentapalli, A Comparative Study of Roth-Erev and Modified Roth-Erev Reinforcement Learning Algorithms for Uniform-Price Double Actions, Iowa State University, 2008. |
Brown et al., Treemap 97, 1997, Retrieved from http://otal.umd.edu/Olive/Class/Trees. |
Cable et al., Project Portfolio Earned Value Management Using Treemaps, Project Management Institute Research Conference, Jul. 2004. |
Johnson et al., Tree-Maps a Space-Filling Approach to the Visualization of Hierarchical Information Structures, IEEE CH3046-09100000284, 1991. |
Jungmeister et al., Adapting Treemaps to Stock Portfolio Visualization, University of Maryland, Institute for System Research, Nov. 1992. |
North et al., Snap-Together Visualization—Coordinating Multiple Views to Explore Information, HCIL Technical Report 99-10, May 1999. |
Shneiderman, Discovering Business Intelligence Using Treemap Visualizations, Beyey Network, Apr. 2006. |
Shneiderman, Tree Visualization with Tree-Maps—A 2-D Space-Filling Approach, University of Maryland, 1991. |
Songer, Multidimensional Visualization of Project Control Data, Construction Innovation, 4, 173-190, 2004. |
Office Action dated Oct. 11, 2011 received in related U.S. Appl. No. 12/243,872. |
U.S. Office Action mailed Aug. 17, 2012 received in related U.S. Appl. No. 12/243,872. |
Number | Date | Country | |
---|---|---|---|
20090328010 A1 | Dec 2009 | US |