Abstract:
A form representation of a form is created including an arrangement of form elements with possible data selections from which a form user will make actual selections. A grid representation is automatically created based on the form representation, including an array of cells corresponding to the form elements and the selections and being organized in a first dimension per the arrangement of the form elements and in a second dimension per the possible data selections. Subsequently, (i) properties are identified and property values are assigned to array cells, the property values being user-visible in respective cells in a properties view, and (ii) functions are created for performing calculations using the actual data selections and the property values to yield derived values during use of the form. Events may also be triggered that are defined in the form object.

Description:
BACKGROUND 
       [0001]    The invention is related to the field of data collection and analysis. 
         [0002]    A variety of software programs (tools) are known for collecting data and providing aspects of analysis to collected data. 
         [0003]    Enterprise resource planning (ERP) systems are generally large-scale systems that provide interfaces for consuming input data as well as interfaces for performing analytical processes and/or reporting on collected data. A typical ERP system is deployed in an organization and becomes tailored for the types of data and analysis needed by the organization. When suitably matched to its organizational environment, an ERP system can provide very powerful data processing. 
         [0004]    It is also known to use smaller-scale tools, such as spreadsheet applications, for data collection and analysis. Smaller-scale tools are good candidates in a variety of environments, for example in collaborative environments where a larger-scale system focused on the needs of one organization may not be suitable for capturing the needs of the collaboration. Smaller-scale tools also capture data that is more fluidly defined—spreadsheets can be revised fairly easily to add columns or sheets and incorporate additional data. 
       SUMMARY 
       [0005]    While existing data collection and analysis tools have certain strengths, they also have limitations or drawbacks that may be problematic for some uses. ERP systems, for example, can be very powerful and efficient especially for large-scale data collection and analysis, but they require tuning and a certain regularization of the input data—they are generally not sufficiently flexible for use with more informal or ad-hoc data collections. Spreadsheets address those needs, being easily tailorable, but in some applications this very strength can become a weakness. For example, in applications requiring the use of many instances of a spreadsheet (such as across a large set of suppliers or vendors), different instances may be modified in some undisciplined manner that negatively affects the quality of the data and/or analysis based on it. This could be as simple as renaming a field in one instance to make it easier for one user to enter data, at the expense of losing the consistency of a uniformly named field. Of course bigger problems can also be created. 
         [0006]    It would be desirable to achieve a data collection and analysis tool that achieves both flexibility and ease of deployment in a variety of applications, with provision for greater centralized control as necessary to maintain consistency and integrity of data and analysis even when a large number of diverse parties may be involved. 
         [0007]    Techniques are disclosed for capturing and analyzing data that include design, creation and use of custom form objects. In one aspect, a method is disclosed for creating a form object usable by a form user to capture and analyze data. In a first design operation, a tool responds to input from a form designer to create a form representation of a form and save the form representation as part of the form object, the form representation being displayable to a form user and including an arrangement of form elements selected by the designer and having sets of possible data selections from which the form user will select to create actual data selections. Subsequently, a grid representation of the form is automatically created based on the form representation and the grid representation is saved as part of the form object. The grid representation includes an array of cells corresponding to the form elements and sets of possible data selections. The array of cells is organized in a first dimension according to the arrangement of the form elements and in a second dimension according to the possible data selections in the sets of possible data selections. In a second design operation, the tool responds to input from the form designer to (i) identify properties and assign respective property values to selected cells of the array, the property values being user-visible with the respective cells in a properties view of the grid representation, and (ii) create functions for performing calculations using actual data selections and corresponding property values to yield derived values. The property values and functions are saved in the form object so as to automatically generate the derived values at a later time when the actual selections are provided by the form user. 
         [0008]    One key feature of the disclosed technique is the multi-dimensional aspect that can be realized using the properties, each of which defines a corresponding array of additional property data layered with the selection data provided during form use. This provides great flexibility and power. Because the properties are under control of the form designer, however, there can be greater control over any revisions. A form can be protected in a way that only permits data to be entered. If the form structure is to be modified, such as by modifying or adding properties or changing the calculations performed by formulas embedded in the form, it is necessary to go through the design operations. Thus, changes cannot be made casually. Thus, the disclosed technique provides power and flexibility along with a level of designer control to promote consistency and integrity in a variety of applications. 
         [0009]    In one embodiment, after the form being created in the designer, it is saved to an encrypted format and can be imported, exported, or transported via email or other means as a regular file. The saved form file contains meta data such as timestamps of creation time, modification, users info, and revision info. Such an interchange format separates the form object creation from the form object use and facilitates the management of the form objects. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    The foregoing and other objects, features and advantages will be apparent from the following description of particular embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of various embodiments of the invention. 
           [0011]      FIG. 1  is a high level flow diagram of a method of data collection and analysis using form objects; 
           [0012]      FIG. 2  is a flow diagram of form object creation; 
           [0013]      FIGS. 3 through 8  are example user interface screens for a form design process; 
           [0014]      FIG. 9  is a flow diagram of one type of application of the form object design and use process; and 
           [0015]      FIG. 10  is a block diagram of a computer from a hardware perspective. 
       
    
    
     DETAILED DESCRIPTION 
       [0016]      FIG. 1  illustrates a method of data collection and analysis using form objects at a high level. At  10 , a form object is created, and at  12  the form object is used for its intended purpose. Generally, the form object is a complex data object including graphical elements, data elements, and executable code. Specific attributes and examples are described below. During creation  10 , a form designer identifies data to be collected and information for analyzing the data, including property values and functions. During use  12 , a form user enters data into the form object, and the form object both stores the data and applies the properties and functions to the entered data. Once the form object is created, there may be one or multiple instances of the form object used in the use step  12 . In one example application discussed below, the form object may be used to audit a number of vendors for compliance with certain contractual or industry standards, and in this application one instance of the form object may be used for each such vendor. 
         [0017]    The approach of  FIG. 1  provides for collection and analysis of data in ways that are both flexible and powerful. Because of the custom nature of the form object, the exact content and organization of the data can be user-defined, and it can also be changed as needs evolve. At the same time, by separating form creation and use, the scheme supports a variety of applications and goals including revision enforcement, ensuring integrity in the data capture and analysis processes. Again, specific examples are discussed below. 
         [0018]      FIG. 2  is a high-level flow diagram for the form object creation process  10  of  FIG. 1 . At  20  is a first design operation in which a “form representation” part of the form object is created. This is done by a design program or tool under control of a human form designer. The form representation includes user-specified controls, input objects and fields, etc. according to a user-specified layout, similar to online web forms. Examples are described below. At  22 , the form representation is used to automatically create a “grid representation” part of the form object. The grid representation presents all user input selection options (as defined by the form controls etc. from the form representation) in an array form, having a grid layout that follows the organization of the form representation. At  24 , the form designer engages in a second design operation using the grid representation, specifically to assign property values to selection options and to specify functions to be calculated based on actual user data selections (made later during use  12 ) and the property values. The function results are a form of derived data and may take a variety of forms and be used for a variety of purposes based on application. For example, one powerful type of function is a scoring calculation that assigns a numerical score based on data provided as input to the form and the property values assigned during design. Other examples are mentioned below. 
         [0019]    As mentioned, the disclosed techniques may be embodied in part by a software program or tool. Aspects of such a program or tool are now described with reference to example screens of a graphical user interface (GUI) of the program or tool. Both the layout and use of these screens reflect the structure and function of the underlying software program. 
         [0020]      FIG. 3  shows a screen used in the first design operation  20  in which the form representation of the form object is created. The screen is divided into two main areas, a form element selection pane  30  at left and a form view pane  32  at right. The selection pane  30  contains predefined form elements that can be used in designing the form, such as “Heading”, “Text Box”, “Text Area”, and so on. These can be dragged and dropped from the selection pane  30  to the form view pane  32  during creation of a form. As shown, the elements may be organized into different classes or groups, such as Quick Tools, Survey Tools, Power Tools (tools for administrative/power users), etc. The form view pane  32  presents the appearance of the form as it is designed. In the illustrated example a designer has created three vertically separated sections (1, 2 and 3), and has added certain radio-button controls in each section. At the bottom is a “Submit” button. In this simplified example, Section 1 might include a question at the position of the text “Line 1” that can be answered either Yes, No, or Not Applicable by selection of the corresponding radio button. Similar questions might appear at Line 2 of Section 1 as well as at Line 3 and Line 4 of Sections 2 and 3 respectively. 
         [0021]    The form data will contain two parts:
       Form elements (such as controls, etc.), and   Collected data (actual user input/selections received during later use of the form)       
 
         [0024]    In the example of  FIG. 3 , a form element is a “Radio Button” which reads like: 
       Line 1 
       [0000]    
       
         
           
             Yes 
             No 
             Not Applicable 
           
         
       
     
         [0028]    and the “collected data” refers to an actual selection (Yes or No or Not Applicable) made by a user at a future time. The user can be the same user (designer) who created the form, or a different user, and is referred to as the “form user.” 
         [0029]    The order of form elements within the layout of the form is captured as part of the meta data of the form. This is important information for additional logic and calculation to be performed on both the form element and collected data (described below). 
         [0030]      FIG. 4  illustrates the grid representation that is automatically created by the tool at  22  based on the form view created by the form designer (e.g.,  FIG. 3 ). The two-dimensional grid contains multiple lines with each line corresponding to a physical line in the form view. Each line has variable length with one or multiple cells, the cells representing corresponding parts of a form element. 
         [0031]    For example, “Line 1” of the form which looks like the following in the form view: 
       Line 1:  
       [0000]    
       
         
           
             Yes 
             No 
             Not Applicable 
           
         
       
     
         [0035]    is transformed into a row of five (5) cells in the grid view:
       Cell 1: “2” (the row number)   Cell 2: “Line 1”   Cell 3: “Yes”   Cell 4: “No”   Cell 5: “Not Applicable”       
 
         [0041]    Similarly, the line for “Section 2” is transformed to contain two (2) cells:
       Cell 1: “4” (row number)   Cell 2: “Section 2”       
 
         [0044]    As described above, this 2-D grid contains lines of generally non-uniform cells of different length. Each cell is addressable in the 2-D grid by its X-Y coordinates (like a Cartesian coordinate system). For example, the text “Line 1” is at address/location “A2”, and the “Yes” selection for the radio button is at “B2”, and so on. 
         [0045]    Once the grid view is created as illustrated in  FIG. 4 , the form designer adds properties and functions to give the form desired functionality depending on the application. Properties are defined for use in the form, and specific property values are assigned to the cells. Each property can be viewed as an additional dimension of data in the grid. Thus, the technique readily captures multi-dimensional data and analysis in a compact and easily usable manner. 
         [0046]    In general, any number of additional dimensions of data can be added to the 2-D grid. Properties may be predefined and packaged with the software program, and/or the software program may enable custom properties to be created and used in a designer-specified way. In the illustrated embodiment, predefined properties “weight”, “criticality” and “value” are defined. These are represented by corresponding selection buttons  40 ,  42 ,  44  on a property toolbar as shown, and examples of their use are now described. 
         [0047]    For example, it may be desired to assign different “weight” to each section as follows:
       Section 1: 30%   Section 2: 40%   Section 3: 30%       
 
         [0051]    As shown in  FIG. 5 , the above “Weight” values are assigned to corresponding cells to achieve this goal. The weight values appear in highlighted sections of the cells when the weight button  40  is selected. 
         [0052]    A dimension of data may be sparse, i.e., applicable to only a subset of cells. For example, the “Weight” property may only apply to certain cells, and for the rest of the cells, “Weight” is not defined. 
         [0053]      FIG. 6  shows an additional dimension of data named “Value”, used to translate non-numerical selections into numerical values that are usable for score calculations. In this example, values are assigned as follows:
       Line 1: Yes (20) No (−20) Not Applicable (0)   Line 2: Yes (10) No (−10) Not Applicable (0)   Line 3: Yes (5) No (−5) Not Applicable (0)   Line 4: Yes (10) No (−10) Not Applicable (0)       
 
         [0058]    For other cells, “Value” is not defined. 
         [0059]    The following describes how properties may be added to a form object: 
         [0060]    1. When the form is translated from the designer view, the individual questions and potential answers (selections) are placed on a grid. Each heading is on a separate row. Each question along with its answers/selections is on one row. 
         [0061]    2. The designer selects a cell, and in the property toolbar can toggle through all of the properties of the cell. Prior to any values being assigned, none of the properties will be filled out yet. 
         [0062]    3. To add “value” to a question, a cell with an answer option is selected, and the property toolbar button “value” is selected. The value displayed should be empty. Next, the designer can click in the grid area and type in a desired value (e.g., number of points) for that answer option. 
         [0063]    Below is a list of properties that may be provided by default in one embodiment: 
         [0064]    Text: This is the text of the question or answer option, reproduced exactly from what was written in the designer. This cannot be edited. This is saved on the back-end and not displayed to the user. 
         [0065]    Type: This is the type of the question, which comes from what the user selected in the designer. This cannot be edited. This is saved on the back-end and not displayed to the user. 
         [0066]    Weight: This is used to put percentage weights on questions or sections. The weights may be entered in decimal form. The collection of weights across a set of sections should add up to 1.00, or 100% in total. 
         [0067]    Value: This is used to assign the points received for choosing that answer choice. This can also be used to create a weighted scoring system. The values can be any number, and can add up to any total. 
         [0068]    Color: To assign a question, section, or answer option a color. The set of colors to choose from may be set up by an administrator. 
         [0069]    Grade: To assign an answer option a grade. For example, if a multiple choice question has answer choices 1, 2, 3, 4, and 5, grades such as the following can be assigned “A” for 1, “B” for 2, “C” for 3, “D” for 4, and “F” for 5. 
         [0070]    Criticality: This can designate the priority of a question or section. For example, question 1 may be more important to answer correctly than question 2. Question 1 may be designated “Critical,” and question 2 may be designated “Medium.” The set of criticality options to choose from may be set up by an administrator. 
         [0071]    Other: A user can set up other properties for their forms for grading purposes. Examples include a string property called “Section”, and all of the questions belonging to that section carry the section name as a property. 
         [0072]    A user can add or delete properties on a form. A form may have a set of default properties or no properties to start out with. Generally, properties may be form-wide, i.e., when a property is added, it is available to all cells on the form. 
         [0073]    To add properties, the user clicks the “Plus-Minus” button  50  ( FIG. 6 ) on the property toolbar. This brings a window (e.g., pop-up) in which the user can add properties from a property library to be included as a form property or take away form properties and put them back in the property library. A user can also change the order of the properties in the list by clicking on up and down arrows next to the property name, and this will change the order as the properties appear on the property toolbar. The properties on the property library will be listed in alphabetical order. When a user removes a property, the property and all of the inputted values for that property are removed and deleted. 
         [0074]    Property Views 
         [0075]    The views allow the designer to see one particular property for all cells in the grid area. The views appear automatically when a particular property is selected in the property toolbar. 
         [0076]    The view changes the grid area to display the property&#39;s value in an area (e.g., top right hand corner) of every cell. The text in the cell may be grayed out to aid in viewing the property&#39;s text or value. In general, there is a view for every property.
       Weight View   Value View   Color View   Grade View   Criticality View       
 
         [0082]    The program may be designed to only allow editing a property when that particular property&#39;s view is active. 
         [0083]    Formula View 
         [0084]    The formula view is where designers create formulas to achieve desired functionality of the form, such as scoring a user submission. Logic and calculation can be defined via formulas and performed on the form. There may be one or multiple formulas, and they may act on a subsection of the form or the entire form. 
         [0085]    As described above, a Form contains both form elements and collected data. A formula is a form element that can be defined to reference the following data as input:
       Properties on the form element   Collected data   Output of another formula       
 
         [0089]    In another words, a Formula can reference not only “Properties” of the form, but also data collected or output of another Formula which is calculated at a later time. 
       Examples of Formula 
       [0090]      FIG. 7  shows an example formula view, which is essentially the grid view with a formula sub-window  70  partially overlaid on the grid. For this sample form, the logic to calculate a “Total Score” is to add the maximum “Value” for all four (4) lines, and apply the “Weight” for each section. In another words, the “Total Score” is calculated as follows: 
         [0000]        F 1( x )=( B 2+ B 3)* A 1[weight]+( B 5)* A 4[weight]+( B 7)* A 6[weight] 
         [0091]    Also, an “Earned Raw Score” is defined: 
         [0000]        F 2( x )=( SR 2+ SR 3)* A 1[weight]+( SR 5)* A 4[weight]+( SR 7)* A 6[weight] 
         [0092]    And a normalized “Score” is defined: 
         [0000]        F 3( x )= F 2( x )/ F 1( x )*100 
         [0093]    It should be noted that formulas may include logical operations as well, as shown below: 
         [0000]        F 4( x )=if ( F 3&gt;95){‘ A ’} else if ( F 3&lt;=95&amp;&amp; F 3&gt;=80){‘B’} else if ( F 3&lt;80&amp;&amp; F 3&gt;=65){‘ C ’} else {‘ F’} 
 
         [0094]    The grid area is different in the “Formula View” from the “Property View.” For the formula view, a new “Submissions Results” (SR) column appears which represents the user submissions. All control types have a “Result” cell except the “Heading” control. If a question has multiple answer options to choose from but only one answer is allowed, the actual answer is represented as one cell. This assumes that when a user actually fills out the form, the user chooses one of the options. Alternatively, if a user can choose more than one option, the form object may by default either add the values or keep them in a list. The one result cell represents what the user has chosen upon filling out the form. The result cell is a shortcut way to quickly tabulate a final score for a form. 
         [0095]    The result cell is found in different ways from the different controls: 
         [0096]    Radio Button: (represents one choice selection given a bunch of options) the result cell is the score received for that answer response. The form captures the coordinate of the user choice and then looks up the corresponding value. 
         [0097]    Check Box: (represents one or more user choices based on a bunch of options) the result cell will be the score added up from each response. The form captures the coordinate(s) of the user choice, looks up the corresponding values, and then adds up the none, one or multiple values. 
         [0098]    For generating submission results, the form controls can be divided into three types: 
         [0099]    Category 1 
         [0100]    Text Box—[Control Label] [User Input] 
         [0101]    Text Area 
         [0102]    File Upload 
         [0103]    Taking “Text Box” for example, and defining A1=[Control Label], and B1=[User Input]; 
         [0104]    If user fills in B1, SR1 [value]=B1 [value], SR1 [weight]=B1 [weight]; 
         [0105]    Else SR1 [value]=0, SR1 [weight]=0. 
         [0106]    Category 2 
         [0107]    Drop Down—[Control Label] [Option1] [Option2] [Option3] 
         [0108]    Radio Button 
         [0109]    Check Box 
         [0110]    Star Rating 
         [0111]    Scale Rating 
         [0112]    Taking “Drop Down” for example, and defining A2=[Control Label], B2=[Option1], C2=[Option2], D2=[Option3]; 
         [0113]    If user selects one option (ex: Option2), SR2 [value]=C2 [value], SR2 [weight]=C2 [weight]; 
         [0114]    Else SR2 [value]=0, SR2 [weight]=0. 
         [0115]    Category 3 
         [0116]    Number—[Control Label] [User Input] 
         [0117]    Sliding 
         [0118]    Spinner 
         [0119]    Compared to Category 1, the controls in Category 3 have one more available property (Literal) for calculating. “Literal” represents the number a user inputs. 
         [0120]    Taking “Number” for example, and defining A3=[Control Label], B3=[User Input]; 
         [0121]    If user inputs a number in B3, SR3 [literal]=B3 [literal]; 
         [0122]    Else SR3=0. 
         [0123]    Events 
         [0124]    Beyond properties and formulas, in some embodiments a form object may also be designed to include Form Events, which refers to a “Condition” based on Form data and properties, and an “Action” that will happen if the condition(s) are met. The condition(s) can be defined based on form element properties, collected data or formula results. Action(s) can be defined to kick of a task or workflow. 
         [0125]      FIG. 8  shows an example of an event view, which is similar to the formula view except that the overlaid window  80  is an event definition window rather than a formula definition window. 
         [0126]      FIG. 9  shows a flow of one type of application of the disclosed techniques, namely one in which multiple instances of a form object are completed for separate subjects of collection/analysis (e.g., different vendors as mentioned above) and then submitted for use by a higher-level analysis and/or reporting process. As shown, the process includes form design  90 , form completion and submission  92 , and back-end analysis and/or reporting  94 . As mentioned, the design process  90  may include operations of a form designer who is a separate individual from the form users who attend to form completion and submission at  92 . 
         [0127]    As mentioned, the processes herein may be realized in part by software, more particularly by software executing on one or more physical computers.  FIG. 10  shows an example configuration of a physical computer from a computer hardware perspective. The hardware includes one or more processors  100 , memory  102 , and interface circuitry  104  interconnected by data interconnections  106  such as one or more high-speed data buses. The interface circuitry  104  provides a hardware connection to separate network interconnect (not shown) and perhaps other external devices/connections (EXT DEVs). The processor(s)  100  with connected memory  102  may also be referred to as “processing circuitry” herein. As mentioned, there may also be local storage  108  such as a local-attached disk drive or Flash drive. In operation, the memory  102  stores data and instructions of system software (e.g., operating system) and one or more application programs which are executed by the processor(s)  100  to cause the hardware to function in a software-defined manner. Thus the computer hardware executing instructions of a form designer application, such as described herein, can be referred to as a form designer circuit or component, and it will be understood that a collection of such circuits or components can all be realized and interact with each other as one or more sets of computer processing hardware executing different computer programs as generally known in the art. 
         [0128]    While various embodiments of the invention have been particularly shown and described, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims.