Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberUS20100125778 A1
Publication typeApplication
Application numberUS 12/694,836
Publication dateMay 20, 2010
Filing dateJan 27, 2010
Priority dateMar 30, 2005
Also published asCA2535131A1, CA2535131C, CN1841376A, CN1841376B, EP1732017A2, EP1732017A3, US7673228, US20060230338
Publication number12694836, 694836, US 2010/0125778 A1, US 2010/125778 A1, US 20100125778 A1, US 20100125778A1, US 2010125778 A1, US 2010125778A1, US-A1-20100125778, US-A1-2010125778, US2010/0125778A1, US2010/125778A1, US20100125778 A1, US20100125778A1, US2010125778 A1, US2010125778A1
InventorsAmol S. Kelkar, Danny van Velzen, David Airapetyan, Jonathan E. Rivers-Moore, Ranjan Aggarwal
Original AssigneeMicrosoft Corporation
Export CitationBiBTeX, EndNote, RefMan
External Links: USPTO, USPTO Assignment, Espacenet
Data-Driven Actions For Network Forms
US 20100125778 A1
Abstract
Systems and/or methods are described that enable a data-driven action associated with altering a data instance of a network form without altering and/or having access to the data instance. These systems and/or methods, in one embodiment, render a result of a data-driven action for a network form without transforming the network form's data instance. In another embodiment, the systems and/or methods map a data-driven action to a view-centric logical representation of the electronic form.
Images(7)
Previous page
Next page
Claims(20)
1. One or more computer-readable media having computer-readable instructions therein that, when executed by a network computing device, cause the network computing device to perform acts comprising:
obtaining a first relation for a data-driven action that maps the data-driven action to a data instance of a network form maintained by the network computing device;
acquiring a second relation to map the data-driven action to a view-centric logical representation of the electronic form;
sending the view-centric logical representation of the network form to a client device to enable the client device to render a result of the data-driven action
2. One or more computer-readable media as recited in claim 1, further having computer-readable instructions therein that, when executed by the network computing device, cause the network computing device to perform acts comprising generating the view-centric logical representation based on the first relation and the second relation.
3. One or more computer-readable media as recited in claim 2, wherein the view-centric logical representation is configured to enable the client device to render a result of the data-driven action without accessing or altering the network form's data instance that is maintained by the network computing device.
4. One or more computer-readable media as recited in claim 1, further having computer-readable instructions therein that, when executed by the network computing device, cause the network computing device to perform acts comprising:
receiving an event log that records the result of the data-driven action, the event log received by the network computing device from the client device subsequent to rendering of the result of the data-driven action by the client device; and
updating the network form's data instance to reflect changes based on the result of data-driven action recorded in the event log.
5. One or more computer-readable media as recited in claim 1, further having computer-readable instructions therein that, when executed by a network computing device, cause the network computing device to perform acts comprising:
receiving the result of a data-driven action that is rendered at the client device using the view-centric logical representation of the network form; and
modifying the network form's data instance to reflect the result of the data-driven action that is rendered at the client device using the view-centric logical representation.
6. One or more computer-readable media as recited in claim 1, further having computer-readable instructions therein that, when executed by the network computing device, cause the network computing device to perform acts comprising causing replacement of the first relation with the second relation to generate the view centric logical representation of the network form.
7. One or more computer-readable media as recited in claim 1, wherein the first relation comprises an eXtensible Markup Language (XML) path language (XPath) navigation path mapping the data-driven action to a node of the network form's data instance.
8. One or more computer-readable media as recited in claim 1, further having computer-readable instructions therein that, when executed by the network computing device, cause the network computing device to perform acts comprising annotating the view-centric logical representation of the network form with the data-driven action based on the second relation.
9. One or more computer-readable media as recited in claim 1, further having computer-readable instructions therein that, when executed by the network computing device, cause the network computing device to perform acts comprising extracting the first relation from the data-driven action.
10. A method comprising using a network computing device configured to serve electronic forms to a client device to perform acts including:
obtaining a first relation for a data-driven action that maps the data-driven action to an electronic form's data instance;
identifying a second relation to replace the first relation in a view-centric logical representation of the electronic form thereby mapping the data-driven action to the view-centric logical representation;
causing communication of the view-centric logical representation of the electronic form to a client device, the client device configured to enable the data-driven action locally using the view centric logical representation in lieu of accessing the data instance over a network.
11. A method as recited in claim 10, wherein access to the electronic form's data instance is controlled by the network computing device.
12. A method as recited in claim 10, wherein the network computing device is configured to replace the first relation with the second relation to generate the view-centric logical representation.
13. A method as recited in claim 10, wherein the network computing device is configured to cause communication of data describing the second relation to the client device in conjunction with the view-centric logical representation to enable mapping of the data driven action to the view-centric logical representation by the client device.
14. A method as recited in claim 10, further comprising:
receiving an event log that records a result of the data-driven action, the event log received by the network computing device from the client device subsequent to rendering of the result of the data-driven action by the client device; and
updating the electronic form's data instance to reflect changes based on the result of data-driven action recorded in the event log.
15. A method as recited in claim 10, further comprising:
receiving a result of a data-driven action that is rendered at the client device using the view-centric logical representation of the electronic form; and
modifying the electronic form's data instance to reflect the result of the data-driven action that is rendered a the client device using the view-centric logical representation.
16. A network computing device comprising:
one or more processors; and
memory storing instructions that, when executed by the one or more processors, cause the network computing device to perform acts including:
obtaining a view-centric logical representation of an electronic form having a data instance that is controlled under the influence of the network computing;
ascertaining a navigation path expression for a data-driven action that maps the data-driven action to the data instance of the electronic form;
causing replacement of the navigation path expression in the view-centric logical representation of the electronic form with a transformed path configured to map the data-driven action to the view-centric logical representation;
sending the view-centric logical representation of the electronic form having the transformed path to a client device, the client device configured to perform the data-driven action using the view-centric logical representation in lieu of accessing the data instance over a network.
17. A network computing device as recited in claim 16, further comprising instructions stored in the memory that, when executed by the one or more processors, cause the network computing device to perform acts including:
updating the data instance to reflect a result of the data-driven action responsive to a communication of the result from the client device at a time subsequent to rendering of the result of the data driven action at the client device.
18. A network computing device as recited in claim 16, further comprising instructions stored in the memory that, when executed by the one or more processors, cause the network computing device to perform acts including:
receiving a data log from the client device that describes multiple data-driven actions performed at the client device using the view-centric logical representation in lieu of accessing the data instance over a network; and
updating the data instance based on the received data log to reflect results of the multiple data-driven actions.
19. A network computing device as recited in claim 16, wherein the transformed path maps the data-driven action to a node of the view-centric logical representation into which the result of the data-driven action is rendered.
20. A network computing device as recited in claim 16, further comprising instructions stored in the memory that, when executed by the one or more processors, cause the network computing device to perform acts including:
annotating a node of the view-centric logical representation of the electronic form to indicate that a change to the node triggers the data-driven action.
Description
    PRIORITY
  • [0001]
    This application is a divisional of and claims priority under 35 U.S.C. 121 to U.S. patent application Ser. No. 11/095,254 filed Mar. 30, 2005, the disclosure of which is incorporated by reference herein in its entirety.
  • BACKGROUND
  • [0002]
    Electronic forms are commonly used to collect information. Electronic forms may be used locally or over a communication network, such as an intranet or the Internet. For electronic forms used locally, a user's computer locally accesses view information and data information about an electronic form. With this view information, the user's computer may enable the user to view and enter data into the electronic form. With this data information, the user's computer may enable data actions for the electronic form, like validating data entered into a field, adding data from multiple fields and populating the result into another field, and the like.
  • [0003]
    For electronic forms used with a network, a user's computer communicates with a network computer to enable use of the electronic form. In so doing, often the user's network browser receives view information but not data information from the network computer. This view information may be used by the user's network browser to permit the user to view and enter information into the electronic form.
  • [0004]
    To enable data actions for the electronic form, the user's network browser often needs to communicate with the network computer for each data action. A user may, for instance, enter a price for a product in one data-entry field of a network form and a quantity of these products into another data-entry field. A data action may calculate a total price by multiplying the product's price by its quantity. To present this total price in the form, often the user's network browser sends the price and the quantity to the network computer and waits for the network computer to calculate the total, create new view information for the entire form but now including this total, and send it to the network browser. The network browser may then present the total to the user based on this new view information.
  • [0005]
    Communicating with the network computer, however, may slow the user's network browser enough to negatively affect the user's editing experience. In some cases, the network computer may take an appreciable amount of time to receive the request from the browser, perform the data action, and send new view information to the browser. Also, communicating with the network computer may be slow because of the network or how the browser communicates with it (e.g., with a dial-up modem), thereby potentially affecting a user's editing experience.
  • [0006]
    In addition, having the network computer perform data actions expends some of the network computer's resources. Expending these resources may slow or inhibit the network computer's ability to service other users.
  • [0007]
    Accordingly, this invention arose out of concerns associated with performing data actions for network forms.
  • SUMMARY
  • [0008]
    Systems and/or methods (“tools”) are described that enable a data-driven action associated with altering a data instance of a network form without altering and/or having access to the data instance.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • [0009]
    FIG. 1 illustrates an exemplary operating environment in which various embodiments can operate.
  • [0010]
    FIG. 2 is a flow diagram of an exemplary process for creating a view-centric data-driven action.
  • [0011]
    FIG. 3 illustrates an exemplary view of a network form.
  • [0012]
    FIG. 4 is a flow diagram of an exemplary process for performing a data-driven action associated with altering a data instance of a network form and/or rendering a result of a data-driven action.
  • [0013]
    FIG. 5 illustrates the view of FIG. 3 with edits.
  • [0014]
    FIG. 6 illustrates the view of FIG. 5 with an additional edit and results from performing a data-driven action.
  • [0015]
    The same numbers are used throughout the disclosure and figures to reference like components and features.
  • DETAILED DESCRIPTION Overview
  • [0016]
    The following disclosure describes one or more tools enabling a data-driven action associated with altering a data instance of a network form without altering and/or having access to the data instance. In one embodiment, a tool performs a data-driven action without local access to a network form's data instance and without communicating non-locally to access the data instance, such as by a roundtrip with a network computer having the data instance.
  • [0017]
    In another embodiment, a tool renders a result of a data-driven action for a network form without transforming the network form's data instance. The tool may do so without necessitating access to and/or an alteration of the data instance. This may permit a user to edit a control in a network form and view the results of a data-driven action driven by the user's edit without requiring that the tool access or alter the network form's data instance. This may permit a user to edit the form and view the result of the action driven by that edit without waiting for a roundtrip to a network computer having the data instance. Not having to perform a roundtrip may improve a user's editing experience by making it smoother, faster, and/or more seamless. Not having to perform a roundtrip to view an action's result may also reduce the resources needed by the network computer servicing the network form.
  • [0018]
    In still another embodiment, a tool builds a relation mapping a data-driven action to an electronic form's view template. The tool may do so by transforming an action's data-centric map of an electronic form's data instance to a view-centric map of the electronic form's view template. This view-centric map may be used, for example, to enable a tool to perform the data-driven action without needing access to the network form's data instance.
  • Exemplary Operating Environment
  • [0019]
    Before describing the tools in detail, the following discussion of an exemplary operating environment is provided to assist the reader in understanding where and how the tools may be employed. The description provided below constitutes but one example and is not intended to limit application of the tools to any one particular operating environment.
  • [0020]
    FIG. 1 illustrates one such operating environment generally at 100 comprising a computer 102, a communication network 104, and a network computer 106. The computer is shown comprising one or more processor(s) 108 and computer-readable media 110. The processor(s) are capable of accessing and/or executing the computer-readable media. The computer-readable media comprises a network browser 112, an event log 114, and received media 116. The dashed lines between the received media and media of the network computer show that these indicated media may be downloaded by the computer from the network computer.
  • [0021]
    The communication network enables communication between the computer and the network computer and may comprise one or more of an intranet, like a company's internal network, the Internet, and the like.
  • [0022]
    The network computer is shown comprising computer-readable media 118. This computer-readable media comprises a network form 120 comprising a data instance 122, a schema 124 governing the network form, and data-centric data-driven actions 126. The network form's data instance is a particular data instance of the network form; thus, if the structure or data of the network form is changed (such as by a user entering information into a view of the network form), the network form's data instance is altered at some point in time to reflect the change. The data-centric data-driven actions are actions driven by data changes in the data instance and are mapped to the data instance.
  • [0023]
    The network computer's computer-readable media is also shown comprising view information 128, a view template 130, view-centric actions 132, an actor application 134, and initial data 136. The view information, view template, view-centric actions, actor application, and initial data may be combined or separate.
  • [0024]
    The view information is information sufficient for the network browser to display an editable view of the network form. This view information may also be sufficient for the network browser and/or the actor application to display an alteration to the editable view resulting from execution of an action. In one embodiment, the view information comprises HyperText Machine Language (HTML) resulting from a transformation declared in XML Stylesheet Language Transformation (XSLT) of an eXtensible Markup Language (XML) embodiment of the data instance. This HTML is usable by the network browser to display the network form. Also in this embodiment, the network form's schema comprises XML Schema (XSD). This schema may comprise data-centric actions to validate the network form.
  • [0025]
    The view template comprises a view-centric logical representation of the network form. The view template's structure is, in one embodiment, one in which view information may be mapped sufficient for the actor application and/or the browser to build a view of the network form. The view template's structure may also, in another embodiment, be one in which actions are related sufficient for the actor application to perform actions in response to a user's interaction with a portion of the view template.
  • [0026]
    The view-centric actions comprise data-driven actions, which may be identified with or mapped to a position or node in the view template.
  • [0027]
    The actor application, in conjunction with or separate from the network browser, is capable of performing data-driven actions without altering and/or accessing the network form's data instance 122.
  • [0028]
    The initial data comprises stored data, such as default data. Default data may comprise, for example, values for simple fields (like date, currency, and name fields), and a number of repetitions for lists, tables, and rows. Other stored data may comprise data previously entered into the network form, such as when a form is altered, submitted, and later re-opened for viewing or further editing.
  • [0029]
    Various embodiments of these elements, and particularly an exemplary process for creating view-centric data-driven actions, are set forth in greater detail below. After describing this process, exemplary tools enabling these and other actions are described.
  • Data-Driven Actions
  • [0030]
    Many data-driven actions for electronic forms are related to a form's data instance, such as by being mapped to the form's data instance. But this relation may require accessing the data instance, which may be undesirable for electronic forms accessed over a network.
  • [0031]
    An exemplary process 200 for creating a view-centric data-driven action is shown in FIG. 2 and described below. This process creates a view-centric data-driven action by transforming an existing data-centric data-driven action having a relation to a network form's data instance to a data-driven action having a relation to the network form's view template. Process 200 is illustrated as a series of blocks representing individual operations or acts performed by elements of the operating environment 100 of FIG. 1, such as actor application 134. This and other processes described herein may be implemented in any suitable hardware, software, firmware, or combination thereof; in the case of software and firmware, these processes may represent a set of operations implemented as computer-executable instructions stored in computer-readable media 118 and executable by processor(s) of network computer 106 and/or in computer-readable media 110 and executable by processors 108.
  • [0032]
    To illustrate the process 200 a purchase order 300 showing an example of network form 120 is set forth in FIG. 3. In the purchase order, a view of controls are shown, here for a name field 302, a phone field 304, item fields 306 a and 306 b, quantity fields 308 a and 308 b, unit price fields 310 a and 310 b, total fields 312 a and 312 b, and a grand total field 314. The purchase order's schema, data instance, and view template are helpful in describing the process and so are set forth below.
  • [0033]
    The schema governing the data instance of the network form may be represented as:
  • [0000]
    root
    name
    phone
    orders
    order
    itemid
    quantity
    unitPrice
    total
    total
  • [0034]
    The data instance governed by this schema may be represented as:
  • [0000]
    <root>
    <name></name>
    <phone></phone>
    <orders>
    <order>
    <itemid></itemid>
    <quantity></quantity>
    <unitPrice></unitPrice>
    <total></total>
    </order>
    <order>
    <itemid></itemid>
    <quantity></quantity>
    <unitPrice></unitPrice>
    <total></total>
    </order>
    </orders>
    <total></total>
    </root>
  • [0035]
    And, the view template for this form may be represented as:
  • [0000]
    V1 - /root
    T1 - name
    T2 - phone
    R1 - orders/order
    T1 - itemid
    T2 - quantity
    T3 - price
    T4 - total
    T3 - total
  • [0036]
    Returning to FIG. 2, at block 202 a tool (e.g., actor application 134) finds a relation mapping a data-driven action (e.g., one of the data-centric data-driven actions 126 of FIG. 1) to data instance 122. This relation may comprise a navigation path, such as an XML path language (XPath) expression.
  • [0037]
    Continuing the illustrated embodiment, assume that the data instance has two data-centric data-driven actions. These actions may be represented as:
  • [0000]
    target=“/root/orders/order/total”
    expression=“../quantity *../unitPrice”
  • [0038]
    and
  • [0000]
    target=“/root/total”
    expression=“sum(../orders/order/total)”
  • [0039]
    The first action is structured to multiply the data in the data instance's quantity node by the data in the data instance's unit price node. The second action is structured to sum all of the data in the data instance's total nodes that are child nodes to the orders node.
  • [0040]
    The navigation paths may be extracted from these data-centric data-driven actions, which in this case are XPath expressions. The tools extract the following XPaths:
  • [0041]
    /root/orders/order/total
  • [0042]
    and
  • [0043]
    /root/total
  • [0044]
    As shown, these XPaths map to the data instance. The first maps to the two total nodes that are children to the “orders” node (rendered as the total fields 312 a and 312 b in FIG. 3). The second maps to the total node that is a child of just the root node (rendered as the grand total field 314 in FIG. 3).
  • [0045]
    At block 204, the tool builds a view template path corresponding to the navigation path. The tool may correlate the navigation path to the view template to transform the navigation path into the view template path. The tool may also compare the portion of the data instance mapped by the navigation path to the structure of the view template. If the tool finds a node of the view template that corresponds to the mapped portion of the data instance, the tool may build a view template path mapping this node.
  • [0046]
    Continuing the illustrated embodiment, the tool determines which view template node corresponds to the data instance node mapped by the navigation path. The view template may be represented as:
  • [0000]
    V1 - /root
    T1 - name
    T2 - phone
    R1 - orders/order
    T1 - itemid
    T2 - quantity
    T3 - price
    T4 - total
    T3 - total
  • [0047]
    The tool determines that the data instance node mapped by the navigation path of: “/root/orders/order/total”, which is:
  • [0000]
    <root><orders><order><total></total>
    </order></orders></root>
  • [0048]
    corresponds in the view template to:
  • [0049]
    V1/R1/T4
  • [0050]
    Similarly, the tool determines that the data instance node for the second data-driven action corresponds to:
  • [0051]
    V1/T3
  • [0052]
    Alternatively, the tool transforms the navigation path by determining the node of the view template corresponding to the schema node mapped by the navigation path. In some cases the structure of the schema governing the electronic form is more easily or accurately parsed, thereby making the tool's determination easier or more accurate. As shown above, correlating the schema node of “/root/orders/order/total” may be correlated to:
  • [0000]
    V1 - /root
    R1 - orders/order
    T4 - total

    to find “V1/R1/T4” of the view template.
  • [0053]
    In some cases, no view template node corresponds with the data instance node mapped by the navigation path. One such case is where a data instance node to which an action is mapped is not capable of affecting the form's view. If a node of a data instance (or schema) has a related action that alters data in a node that is not viewable, for instance, then that action may not have a corresponding node in the view template.
  • [0054]
    If the tool determines that the mapped-to portion of the data instance does not have a corresponding node in the view template, the tool does not proceed. If it determines otherwise, it proceeds to block 206. In the illustrated embodiment, both of the data-centric data-driven actions are capable of affecting the view and have a corresponding node in the view template. The tool builds view template paths to these corresponding nodes.
  • [0055]
    At block 206, the tool replaces the navigation path mapping the data-driven action to the data instance with a view template path mapping the data-driven action to the view template.
  • [0056]
    Continuing the illustrated embodiment, the navigation paths for the data-driven actions are:
  • [0057]
    /root/orders/order/total
  • [0058]
    and
  • [0059]
    /root/total
  • [0060]
    The tools replace these navigation paths with view template paths. Thus, the data-centric data-driven actions are transformed to view-centric data-driven actions, such as:
  • [0000]
    target=“V1/R1/T4”
    expression=“../T2 *../T3”
  • [0061]
    and
  • [0062]
    target=“V1/T3” expression=“sum ( . . . /R1/T4)”
  • [0063]
    At block 208, the tool may, in some embodiments, annotate the view template with the data-driven action. The view template paths indicate a node or nodes of the view template to which an action is mapped. The tool may annotate these nodes to indicate that the action may be triggered by a change to these nodes. The view template may also be annotated with the action itself, thereby combining the action and the view template.
  • [0064]
    Continuing the illustrated embodiment, the tools annotate the view template with the view-centric actions:
  • [0000]
    V1 - /root
    T1 - name
    T2 - phone
    R1 - orders/order
    T1 - itemid
    T2 - quantity
    data_action =
    {
    target =
    ../T4
    expression
    = Multiply(Select(../T2), Select(../T3))
    }
    T3 - price
    data_action =
    {
    target =
    ../T4
    expression
    = Multiply(Select(../T2), Select(../T3))
    }
    T4 - total
    data_action =
    {
    target =
    ../../T3
    expression
    = Sum(Select(../R1/T4))
    }
    T3 - total
  • [0065]
    This annotated view template indicates that data for the node “V1/R1/T2” (shown with the quantity field 308 a) and “V1/R1/T3” (shown with the quantity field 310 b) may be multiplied and the result placed in the “V1/R1/T4” node (shown with the total field 312 a). The view template also indicates the same for each iteration of these nodes (e.g., fields 308 b, 310 b, and 312 b).
  • [0066]
    The view template also indicates that data for each of nodes “V1/R1/T4” (shown as total fields 312 a and 312 b) may be summed and the result placed in another node, that of “V1/T3” (shown with grand total field 314).
  • Performing a Data-Driven Action For a Network Form
  • [0067]
    As part of an exemplary process 400 shown in FIG. 4, the tools perform data-driven actions associated with altering a data instance of a network form without altering and/or having access to the data instance. Also in this process, a tool renders a result of a data-driven action for a network form without transforming the network form's data instance. Process 400 is illustrated as a series of blocks representing individual operations or acts performed by elements of the operating environment 100 of FIG. 1, such as actor application 134.
  • [0068]
    At block 402, network browser 112 receives a user's choice to edit a network form. Assume, by way of example, that the user is browsing forms available over a network and selects to edit purchase order 300 of FIG. 3.
  • [0069]
    At block 404, the network browser receives information sufficient to enable computer 102 to display and receive edits to the network form. This information may comprise computer-readable media from network computer 106 of FIG. 1, such as view information 128, view template 130, view-centric actions 132, actor application 134, and initial data 136. With the view information and view template, the actor application and/or the network browser displays an editable view of the form.
  • [0070]
    In one embodiment, the actor application builds an editable view of the form by mapping pieces of the view information to the view template. These pieces are viewable pieces, such as HTML, which the actor application may concatenate into an overall view of the form. These view pieces may comprise, for instance, renderable HTML for data-entry fields, buttons, and other controls.
  • [0071]
    At block 406, the computer renders the network form chosen by the user. In the illustrated embodiment, the actor application renders the purchase order of FIG. 3.
  • [0072]
    At block 408, the network browser receives an edit to a control of the network form. The user may edit the form by entering data into a field, selecting a button, and the like.
  • [0073]
    Continuing the illustrated embodiment, the network browser receives data entered into name field 302. This data is pushed into the view, shown in FIG. 5.
  • [0074]
    At block 410, the actor application determines if an action is associated with the edit. In one embodiment, the actor application analyzes actions to determine if any are associated with (e.g., map to) the node edited by the user. In another embodiment, the actor application navigates the view template to find actions associated with the edit (if there are any). If there are no data-driven actions associated with the edit, the actor application returns to block 408 to receive additional edits from the user. If there are data-driven actions, the actor application proceeds to block 412 (or skips to block 414).
  • [0075]
    Continuing the illustrated embodiment, the actor application navigates the view template annotated with actions (shown above) to determine if any action is associated with “V1/T1” node (the “name node”), rendered as the name field 302 in FIGS. 3 and 5. This node does not have an action associated with it. The actor application then returns to block 408. The network browser receives other edits from the user; entry of the user's phone number into the phone field 304, shown in FIG. 5, and an item identifier into item node 306 a, also shown in FIG. 5. These entries are also not associated with a data-driven action.
  • [0076]
    The user next enters a quantity into the quantity field 308 a, received at block 408, and shown in FIG. 5. The actor application determines if an action is associated with this edit at block 410.
  • [0077]
    Continuing the illustrated embodiment, the actor application navigates the view template to determine if an action is associated with the received edit. The annotated view template may be represented as:
  • [0000]
    V1 - /root
    T1 - name
    T2 - phone
    R1 - orders/order
    T1 - itemid
    T2 - quantity
    data_action =
    {
    target =
    ../T4
    expression
    = Multiply(Select(../T2), Select(../T3))
    }
    T3 - price
    data_action =
    {
    target =
    ../T4
    expression
    = Multiply(Select(../T2), Select(../T3))
    }
    T4 - total
    data_action =
    {
    target =
    ../../T3
    expression
    = Sum(Select(../R1/T4))
    }
    T3 - total
  • [0078]
    The actor application navigates this view template and determines that the following data-driven action is associated with the user's edit to the quantity node:
  • [0000]
    data_action =
    {
    target =
    ../T4
    expression
    = Multiply(Select(../T2), Select(../T3))
    }
  • [0079]
    At block 412, the actor application determines whether or not performing the associated action will affect the view. Alternatively, the actor application may skip block 412 to block 414.
  • [0080]
    The actor application may determine if the action will affect the view by navigating the view template to determine which nodes of the view template may be changed by performing the action.
  • [0081]
    In the ongoing embodiment, the actor application determines that the data-driven action associated with the quantity node multiplies data in the “V1/R1/T2” node by the data in the “V1/R1/T3” node, and places this result in the target node “V1/R1/T4”. Thus, the data “17” in quantity field 308 a is multiplied by no data (zero) in the unit price field 310 a, the result of which (“0”) is to be placed in the total field 312 a. In this case, the result of performing the action does not change the view. The total field 312 a already has a zero. In this case the actor application may forgo performing the action associated with this quantity node and/or other actions, such as updating data for the form (i.e., do not perform block 416) and rendering the results of performing this action (i.e., do not perform block 418). If the actor application forgoes performing the action and/or these other actions, it returns to block 408.
  • [0082]
    Returning to block 408, the network browser receives another edit, this time entry of a unit price to the unit price field 310 a. The price is shown in FIG. 6 at field 310 a (“299.99”).
  • [0083]
    The actor application then determines at block 410 that the action is associated with the edit. Continuing the illustrated embodiment, the actor application navigates the view template annotated with actions (shown above) and determines that an action is associated with “V1/R1/T3” node (the “price” node).
  • [0084]
    Navigating the view template given above, the actor application determines that the following data-driven action is associated with the user's edit to the price node:
  • [0000]
    data_action =
    {
    target =
    ../T4
    expression
    = Multiply(Select(../T2), Select(../T3))
    }
  • [0085]
    The actor application then determines that the action will affect the view. It does so by navigating the view template to determine which nodes of the view template may be changed by performing the action.
  • [0086]
    In the ongoing embodiment, the actor application determines that the data-driven action associated with the quantity node multiplies data in the “V1/R1/T2” node by the data in the “V1/R1/T3” node, and places this result in the target node “V1/R1/T4”. Thus, the data “17” shown in quantity field 308 a is multiplied by “299.99” shown in unit price field 310 a, the result of which may be different that the zero currently rendered in the total field 312 a.
  • [0087]
    At block 414 the actor application performs the action without accessing and/or altering the form's data instance. In this exemplary process, the actor application uses the view template rather than a data instance, thereby freeing the actor application from having to access or alter the form's data instance. The actor application may perform the data-driven action, in some cases, without any non-local communication, thereby potentially improving the user's editing experience. In one embodiment, the actor application performs the action by executing an expression and locating a node of the view template into which the result may be rendered.
  • [0088]
    In the ongoing embodiment, the actor application multiplies the data entered into the quantity field, “17”, by the data entered into the unit price field “299.99”, for a result of “5099.83”.
  • [0089]
    At block 416, the actor application updates the data for the form. This data for the form may be locally stored, which may permit fewer roundtrips to the network computer. In the ongoing embodiment, the actor application updates the zero for the first total node (rendered as the total field 312 a) with the result “5099.83”. The actor application may proceed directly to block 418 to render this result in the view, but may also first determine if this data change triggers any other actions. If so, the actor application may perform all of the triggered actions (some actions may trigger another action, which triggers another action, and so forth) before rendering the different actions' results.
  • [0090]
    Similarly to block 408, 410, 412, and 414, the actor application may proceed to receive data (e.g., a result from a performed action), determine in the node into which the data is received is associated with an action, determine if that action may affect the view, and perform the action. Thus, the actor application in the ongoing embodiment receives the result of the action performed above to the total node. The actor application may then determine whether or not the node to which this “edit” is made (e.g., a result automatically received from performance of the action) has another action associated with it. If so, it may then determine whether or not performing that other action will affect the view, and if so, may then perform the other action.
  • [0091]
    In the ongoing embodiment, the actor application determines that the result for the total node has another associated action. This action may be represented as:
  • [0000]
    data_action =
    {
    target =
    ../../T3
    expression
    = Sum(Select(../R1/T4))
    }
  • [0092]
    Thus, the total node (“V1/R1/T4”) has an associated data-driven action. This action sums the data of the total node and all other total nodes. The result of this summation is then targeted for the “V1/T3” total node (rendered as the grand total field 314).
  • [0093]
    The actor application next determines that performing this summation action may affect the view. The actor application performs this action, summing the data of the first and second total nodes, which are “5099.83” and “0”, for a result of “5099.83”.
  • [0094]
    The actor application may record this data entered into and resulting from actions, such as in a locally stored hierarchically structured data tree or event log 114. The data tree, with the data and results of the ongoing embodiment, may be represented as:
  • [0000]
    (V1)
    (Dave, T1)
    (425-555-1234, T2)
    (R1_1)
    (1756, T1)
    (17, T2)
    (299.99, T3)
    (5099.83, T4)
    (R1_2)
    (, T1)
    (, T2)
    (, T3)
    (, T4)
    (5099.83, T3)
  • [0095]
    At block 418 the actor application and/or network browser renders the result of the data-driven action(s) performed without transforming the form's data instance. The actor application may also, in another embodiment, render changes to the view without accessing or altering the data instance.
  • [0096]
    The actor application may keep track of which controls in the view need to be updated by marking nodes associated with these controls, and then rendering each of these nodes for new data once all of the actions have been performed (but with results being rendered).
  • [0097]
    Alternatively, the actor application may re-render all of the form, though this may take additional time or resources compared with selective re-rendering.
  • [0098]
    To selectively re-render parts of the view, the actor application may determine which of the pieces of information from view information 128 of FIG. 1 are associated with the nodes of the view template that have been changed, such as by marking these nodes dirty. For the above view template, the marked nodes are “V1/R1_1/T4” and “V1/T3”. The actor application may then push the results into these pieces of the view or re-render each of these pieces with the results added.
  • [0099]
    As shown in FIG. 6, the view of the purchase order shows the user the results of data-driven actions. These results, shown in the total field 312 a and the grand total field 314, are accurate renderings of how the view may look if the data-driven actions were instead associated with the data instance. Thus, this view may be identical to the view shown by placing the results of these actions into a data instance, transforming the data instance, and rendering the transformation.
  • [0100]
    In some cases, however, a data-driven action may require communication across a network, such as to access a data instance for the form or a database having data needed to perform an action (e.g., validation of entered data against data in a database). In these cases, the actor application may access the network, thereby forgoing many of the blocks of process 400.
  • [0101]
    The actor application and/or network browser may record the user's edits and/or the results of performing various actions. This record of edits and/or results may be sent to network computer 106, such as when sending it will not appreciably hinder a user's editing experience, or on submittal by the user.
  • [0102]
    The network computer, responsive to receiving this event log, alters the data instance of the network form. It may do so infrequently, thereby potentially reducing the resources needed to service the network form.
  • [0103]
    For the ongoing illustration, the actor application records the user's edits to the view into event log 114 and communicates this event log to the network computer. The network computer updates data instance 122 with information from the event log. The data instance represented above at the beginning of the description relating to FIG. 2 may be changed by the network computer using the event log, in this case to:
  • [0000]
    <root>
    <name>Dave</name>
    <phone>425-555-1234</phone>
    <orders>
    <order>
    <itemid>1756</itemid>
    <quantity>17</quantity>
    <unitPrice>299.99</unitPrice>
    <total>5099.83</total>
    </order>
    <order>
    <itemid></itemid>
    <quantity></quantity>
    <unitPrice></unitPrice>
    <total></total>
    </order>
    </orders>
    <total>5099.83</total>
    </root>
  • CONCLUSION
  • [0104]
    Systems and/or methods are described that enable a data-driven action associated with altering a data instance of a network form without altering and/or having access to the data instance. Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.
Patent Citations
Cited PatentFiling datePublication dateApplicantTitle
US52287 *Jan 30, 1866 Improvement in motive powers
US134890 *Jan 14, 1873 Improvement in lubricating compounds
US159136 *Dec 12, 1874Jan 26, 1875 Improvement in nut-locks
US4498147 *Nov 18, 1982Feb 5, 1985International Business Machines CorporationMethodology for transforming a first editable document form prepared with a batch text processing system to a second editable document form usable by an interactive or batch text processing system
US4564752 *Dec 23, 1982Jan 14, 1986Ncr Canada LtdConcurrent, image-based, reject-re-entry system and method
US4641274 *Aug 19, 1985Feb 3, 1987International Business Machines CorporationMethod for communicating changes made to text form a text processor to a remote host
US4723211 *Aug 30, 1984Feb 2, 1988International Business Machines Corp.Editing of a superblock data structure
US5179703 *Apr 23, 1990Jan 12, 1993International Business Machines CorporationDynamically adaptive environment for computer programs
US5182709 *Feb 28, 1990Jan 26, 1993Wang Laboratories, Inc.System for parsing multidimensional and multidirectional text into encoded units and storing each encoded unit as a separate data structure
US5187786 *Apr 5, 1991Feb 16, 1993Sun Microsystems, Inc.Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system
US5287448 *Mar 24, 1993Feb 15, 1994Apple Computer, Inc.Method and apparatus for providing help information to users of computers
US5379419 *Dec 7, 1990Jan 3, 1995Digital Equipment CorporationMethods and apparatus for accesssing non-relational data files using relational queries
US5381547 *Oct 24, 1990Jan 10, 1995Siemens AktiengesellschaftMethod for dynamically linking definable program elements of an interactive data processing system
US5390325 *Dec 23, 1992Feb 14, 1995Taligent, Inc.Automated testing system
US5481722 *Nov 14, 1994Jan 2, 1996Sun Microsystems, Inc.Method and apparatus for merging change control delta structure files of a source module from a parent and a child development environment
US5600789 *Nov 19, 1992Feb 4, 1997Segue Software, Inc.Automated GUI interface testing
US5602996 *Jun 7, 1995Feb 11, 1997Apple Computer, Inc.Method and apparatus for determining window order when one of multiple displayed windows is selected
US5706501 *Oct 19, 1995Jan 6, 1998Fuji Xerox Co., Ltd.Apparatus and method for managing resources in a network combining operations with name resolution functions
US5717939 *Nov 17, 1995Feb 10, 1998Compaq Computer CorporationMethod and apparatus for entering and manipulating spreadsheet cell data
US5721824 *Apr 19, 1996Feb 24, 1998Sun Microsystems, Inc.Multiple-package installation with package dependencies
US5859973 *Aug 21, 1996Jan 12, 1999International Business Machines CorporationMethods, system and computer program products for delayed message generation and encoding in an intermittently connected data communication system
US5862372 *Nov 16, 1994Jan 19, 1999Morris; Robert M.Visually oriented computer implemented application development system utilizing standardized objects and multiple views
US5862379 *Mar 7, 1995Jan 19, 1999International Business Machines CorporationVisual programming tool for developing software applications
US5864819 *Nov 8, 1996Jan 26, 1999International Business Machines CorporationInternal window object tree method for representing graphical user interface applications for speech navigation
US5873088 *Nov 17, 1994Feb 16, 1999Fujitsu LimitedDerived data base processing system enabling one program to access a plurality of data basis
US6012066 *Oct 1, 1997Jan 4, 2000Vallon, Inc.Computerized work flow system
US6014135 *Apr 4, 1997Jan 11, 2000Netscape Communications Corp.Collaboration centric document processing environment using an information centric visual user interface and information presentation method
US6016520 *Jul 14, 1995Jan 18, 2000Microsoft CorporationMethod of viewing at a client viewing station a multiple media title stored at a server and containing a plurality of topics utilizing anticipatory caching
US6018743 *Oct 4, 1996Jan 25, 2000International Business Machines CorporationFramework for object-oriented interface to record file data
US6021403 *Jul 19, 1996Feb 1, 2000Microsoft CorporationIntelligent user assistance facility
US6026379 *Jun 17, 1996Feb 15, 2000Verifone, Inc.System, method and article of manufacture for managing transactions in a high availability system
US6026416 *May 30, 1996Feb 15, 2000Microsoft Corp.System and method for storing, viewing, editing, and processing ordered sections having different file formats
US6031989 *Feb 27, 1997Feb 29, 2000Microsoft CorporationMethod of formatting and displaying nested documents
US6178551 *Jul 1, 1998Jan 23, 2001Japan Airlines Co., Ltd.Method of and system for installing a computer program
US6182094 *Jun 24, 1998Jan 30, 2001Samsung Electronics Co., Ltd.Programming tool for home networks with an HTML page for a plurality of home devices
US6182095 *Apr 30, 1998Jan 30, 2001General Electric Capital CorporationDocument generator
US6188401 *Mar 25, 1998Feb 13, 2001Microsoft CorporationScript-based user interface implementation defining components using a text markup language
US6191797 *May 21, 1997Feb 20, 2001Canon Kabushiki KaishaExpression tree optimization for processing obscured graphical objects
US6192367 *Nov 23, 1998Feb 20, 2001International Business Machines CorporationData file editor presenting semi-formatted view
US6336214 *Nov 10, 1998Jan 1, 2002International Business Machines CorporationSystem and method for automatically generating browsable language grammars
US6342907 *Oct 19, 1998Jan 29, 2002International Business Machines CorporationSpecification language for defining user interface panels that are platform-independent
US6343149 *May 7, 1999Jan 29, 2002Oki Electric Industry Co, Ltd.Document character reading system
US6343302 *Feb 13, 1997Jan 29, 2002Yahoo! Inc.Remote web site authoring system and method
US6343377 *Dec 30, 1997Jan 29, 2002Netscape Communications Corp.System and method for rendering content received via the internet and world wide web via delegation of rendering processes
US6505200 *Jul 6, 2000Jan 7, 2003International Business Machines CorporationApplication-independent data synchronization technique
US6505230 *May 14, 1999Jan 7, 2003Pivia, Inc.Client-server independent intermediary mechanism
US6505300 *Jun 12, 1998Jan 7, 2003Microsoft CorporationMethod and system for secure running of untrusted content
US6507856 *Jan 5, 1999Jan 14, 2003International Business Machines CorporationDynamic business process automation system using XML documents
US6513154 *Oct 21, 1997Jan 28, 2003John R. PorterfieldSystem and method for testing of computer programs in programming effort
US6675202 *May 30, 2000Jan 6, 2004Cary D. PerttunenMethods, articles and apparatus for providing a browsing session
US6678717 *Jan 3, 2002Jan 13, 2004Eric SchneiderMethod, product, and apparatus for requesting a network resource
US6681370 *May 19, 1999Jan 20, 2004Microsoft CorporationHTML/XML tree synchronization
US6842175 *Dec 7, 1999Jan 11, 2005Fraunhofer Usa, Inc.Tools for interacting with virtual environments
US6845380 *Mar 4, 2002Jan 18, 2005Hewlett-Packard Development Company, L.P.Method and system of valuing transformation between extensible markup language (XML) documents
US6845499 *Jan 31, 2001Jan 18, 2005I2 Technologies Us, Inc.System and method for developing software applications using an extended XML-based framework
US6847387 *Mar 26, 2001Jan 25, 2005International Business Machines CorporationMenu management mechanism that displays menu items based on multiple heuristic factors
US6848078 *Nov 10, 1999Jan 25, 2005International Business Machines CorporationComparison of hierarchical structures and merging of differences
US6993714 *Oct 3, 2002Jan 31, 2006Microsoft CorporationGrouping and nesting hierarchical namespaces
US6993722 *Feb 7, 2000Jan 31, 2006Cirrus Logic, Inc.User interface system methods and computer program products for multi-function consumer entertainment appliances
US7159011 *Aug 16, 2004Jan 2, 2007Maquis Techtrix, LlcSystem and method for managing an online message board
US7168035 *Jun 11, 2003Jan 23, 2007Microsoft CorporationBuilding a view on markup language data through a set of components
US7313996 *Apr 7, 2005Jan 1, 2008Carl Walther GmbhHandheld firearm
US7316003 *Dec 18, 2002Jan 1, 2008Oracle International Corp.System and method for developing a dynamic web page
US7318237 *Jun 30, 2005Jan 8, 2008Bea Systems, Inc.System and method for maintaining security in a distributed computer network
US7516145 *Mar 31, 2003Apr 7, 2009Microsoft CorporationSystem and method for incrementally transforming and rendering hierarchical data files
US7653687 *Jun 8, 2007Jan 26, 2010Reisman Richard RMethod for distributing content to a user station
US20020010700 *Jun 28, 2001Jan 24, 2002Wotring Steven C.System and method for sharing data between relational and hierarchical databases
US20020010743 *Feb 10, 2001Jan 24, 2002Ryan Mark H.Method and system for distributing and collecting spreadsheet information
US20020010746 *Feb 9, 2001Jan 24, 2002Jilk David J.System, method, apparatus and computer program product for operating a web site by electronic mail
US20020010855 *Mar 5, 2001Jan 24, 2002Eran ReshefSystem for determining web application vulnerabilities
US20020013788 *May 18, 2001Jan 31, 2002Pennell Mark E.System and method for automatically learning information used for electronic form-filling
US20020194219 *Apr 15, 2002Dec 19, 2002Bradley George WesleyMethod and system for cross-platform form creation and deployment
US20030004951 *Jan 30, 2001Jan 2, 2003Sandip ChokshiAutomated client-server data validation
US20030007000 *Jun 12, 2002Jan 9, 2003Worldcom, Inc.Method, system and program product for viewing and manipulating graphical objects representing hierarchically arranged elements of a modeled environment
US20030014397 *Jan 31, 2002Jan 16, 2003International Business Machines CorporationGenerating one or more XML documents from a relational database using XPath data model
US20030018668 *Jul 20, 2001Jan 23, 2003International Business Machines CorporationEnhanced transcoding of structured documents through use of annotation techniques
US20030020746 *Jan 31, 2002Jan 30, 2003Computer Associates Think, Inc.System and method for dynamically generating a web page
US20030023641 *Jul 27, 2001Jan 30, 2003Gorman William PhillipWeb page authoring tool
US20030110443 *Feb 22, 2002Jun 12, 2003Steve YankovichMethod and apparatus for programmatic learned routing in an electronic form system
US20040002939 *Jun 28, 2002Jan 1, 2004Microsoft CorporationSchemaless dataflow within an XML storage solution
US20040002950 *Apr 15, 2003Jan 1, 2004Brennan Sean F.Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system using hierarchically enumerated data set
US20040003031 *Jun 26, 2002Jan 1, 2004International Business Machines CorporationRunning dynamic web pages off-line with a wizard
US20040003341 *Jun 20, 2002Jan 1, 2004Koninklijke Philips Electronics N.V.Method and apparatus for processing electronic forms for use with resource constrained devices
US20040003353 *May 12, 2003Jan 1, 2004Joey RiveraWorkflow integration system for automatic real time data management
US20040003389 *Jun 5, 2002Jan 1, 2004Microsoft CorporationMechanism for downloading software components from a remote source for use by a local software application
US20040006744 *Jun 27, 2002Jan 8, 2004Microsoft CorporationSystem and method for validating an XML document and reporting schema violations
US20040010752 *Jul 9, 2002Jan 15, 2004Lucent Technologies Inc.System and method for filtering XML documents with XPath expressions
US20040015778 *Mar 7, 2003Jan 22, 2004Catherine BrittonElectronic healthcare management form creation
US20040015783 *Jun 20, 2003Jan 22, 2004Canon Kabushiki KaishaMethods for interactively defining transforms and for generating queries by manipulating existing query data
US20050004893 *Jul 2, 2003Jan 6, 2005Sangroniz James M.Workflow management devices and systems, and workflow assignment and management methods
US20050005248 *Jul 23, 2004Jan 6, 2005Microsoft CorporationTask-sensitive methods and systems for displaying command sets
US20050015279 *Nov 7, 2003Jan 20, 2005Rucker Donald W.Service order system and user interface for use in healthcare and other fields
US20050015732 *Aug 18, 2004Jan 20, 2005Microsoft CorporationMapping tool graphical user interface
US20050022115 *May 28, 2002Jan 27, 2005Roberts BaumgartnerVisual and interactive wrapper generation, automated information extraction from web pages, and translation into xml
US20060004910 *Jun 22, 2005Jan 5, 2006Microsoft CorporationPostback input handling by server-side control objects
US20060010386 *Sep 9, 2005Jan 12, 2006Khan Emdadur RMicrobrowser using voice internet rendering
US20060020586 *Jul 12, 2005Jan 26, 2006Michel PromptSystem and method for providing access to databases via directories and other hierarchical structures and interfaces
US20060020883 *May 28, 2004Jan 26, 2006Microsoft CorporationWeb page personalization
US20070005611 *Mar 31, 2004Jan 4, 2007Mitsubishi Denki Kabushiki KaishaWork flow managing system
US20070005978 *Jun 29, 2005Jan 4, 2007Microsoft CorporationDigital signatures for network forms
US20080021916 *Aug 28, 2007Jan 24, 2008Timebase Pty LimitedMaintenance of a markup language document in a database
US20080027896 *Oct 8, 2007Jan 31, 2008Oracle International CorporationHierarchical triggers for database
Non-Patent Citations
Reference
1 *XForms 1.0, W3C Recommendation 14 October 2003, 35 pages provided
Referenced by
Citing PatentFiling datePublication dateApplicantTitle
US7913159Mar 22, 2011Microsoft CorporationSystem and method for real-time validation of structured data files
US7937651Jan 14, 2005May 3, 2011Microsoft CorporationStructural editing operations for network forms
US7971139Oct 31, 2007Jun 28, 2011Microsoft CorporationCorrelation, association, or correspondence of electronic forms
US7979856Sep 1, 2005Jul 12, 2011Microsoft CorporationNetwork-based software extensions
US8001459Dec 5, 2005Aug 16, 2011Microsoft CorporationEnabling electronic documents for limited-capability computing devices
US8010515Apr 15, 2005Aug 30, 2011Microsoft CorporationQuery to an electronic form
US8117552Dec 5, 2006Feb 14, 2012Microsoft CorporationIncrementally designing electronic forms and hierarchical schemas
US8429522Apr 23, 2013Microsoft CorporationCorrelation, association, or correspondence of electronic forms
US8487879Oct 29, 2004Jul 16, 2013Microsoft CorporationSystems and methods for interacting with a computer through handwriting to a screen
US8819072Feb 2, 2004Aug 26, 2014Microsoft CorporationPromoting data from structured data files
US8892993Feb 8, 2008Nov 18, 2014Microsoft CorporationTranslation file
US8918729Apr 2, 2008Dec 23, 2014Microsoft CorporationDesigning electronic forms
US9210234Jun 13, 2011Dec 8, 2015Microsoft Technology Licensing, LlcEnabling electronic documents for limited-capability computing devices
US9239821Oct 31, 2014Jan 19, 2016Microsoft Technology Licensing, LlcTranslation file
Classifications
U.S. Classification715/223, 715/221, 715/230
International ClassificationG06F17/21
Cooperative ClassificationH04L67/02, G06F17/243
European ClassificationH04L29/08N1, G06F17/24F
Legal Events
DateCodeEventDescription
Jun 21, 2013ASAssignment
Owner name: MICROSOFT CORPORATION, WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KELKAR, AMOL S.;VAN VELZEN, DANNY;AIRAPETYAN, DAVID;AND OTHERS;REEL/FRAME:030657/0946
Effective date: 20050323
Dec 9, 2014ASAssignment
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034564/0001
Effective date: 20141014