This invention relates to incrementally transforming and rendering hierarchical data files.
Extensible markup language (XML) is increasingly becoming the preferred format for transferring information. XML is a tag-based hierarchical language that is extremely rich in terms of the information that it can be used to represent. For example, XML can be used to represent information spanning the spectrum from semi-structured information (such as one would find in a word processing document) to generally structured information (such as that which is contained in a table). XML is well-suited for many types of communication including business-to-business and client-to-server communication. For more information on XML, XSLT, and XSD (schemas), the reader is referred to the following documents which are the work of, and available from the W3C (World Wide Web consortium): XML 1.0 second edition specification; XSL Transformations (XSLT) Version 1.0; XML Schema Part 1: Structures; and XML Schema Part 2: Datatypes.
Before information can be transferred, however, it must first be collected. To collect information from a user, an XML data file usually is transformed into a viewable, editable form. This form, called a rendered form, is created by applying a transformation file on the XML data file. This rendered form is typically written in HTML (HyperText Machine Language) or eXtensible HTML (XHTML), and is designed to allow a user to enter data into data-entry fields that map to locations in the XML data file. Thus, the user can enter data into a particular data-entry field and that data will be stored in a particular part (or “node”) of the XML data file.
A transformation file used to transform the XML data file into a rendered form is typically written in XSLT. Applying an XSLT transformation file on an XML data file generates an XHTML rendering file, which, when executed, generates a rendered form.
One of the problems with rendered forms is that, as a user edits the XML data file by editing the XHTML rendered form, the form does not reflect all changes to the data file. Even though the data entered into a data-entry field in the form may appear in that data-entry field (though this is typically done through means other than transforming the data file by applying a transformation file), this to input often affects other parts of the data file and how that data file should be rendered in a rendered form.
By way of example, a XSLT transformation file can be applied on the XML data file and, by so doing, change nodes of the data file other than the node into which data was input. Applying an XSLT transformation file on an XML data file can even change the structure of the data file. Also, by applying the transformation file on the data file, the transformation file may need to access databases to find data to use in computations or to input into a node of the data file, such as a function whereby when a zip code is entered into a data-entry field. Here, transforming the data file by applying the transformation file fills in other nodes of the data file (and thus also the data-entry fields of the rendered form) for the city and state corresponding to the zip code.
The rendered form does not reflect these changes to the data file because XSLT transformations are one-way. In other words, applying an XSLT transformation file to an XML data file creates a rendered form, but as the XML data file changes, the rendered form does not. Thus, the rendered form can be out-of-date with how the data file should be when the data file receives a new input.
To give the user an up-to-date rendered form, the XSLT transformation can be reapplied to the XML data file after each change made to the data file. The result of such a full transformation is a full rendering file, from which a new rendered form can be created. By so doing, the user sees an accurate rendering (sometimes called a “view”) of the current state of the XML data file.
One problem with this, however, is that applying an XSLT transformation to an XML data file can be slow and require extensive computer resources.
Further, while this full transformation can be slow, executing the result of this transformation (a full rendering file), can also take extensive time and resources.
Because of the amount of time and resources required to transform the XML data file and render a full rendering file into a rendered form, a user often cannot efficiently view changes to an XML data file in the rendered form while editing the rendered form. With each edit made by the user, the user has to wait for a new rendered form to be created. Transforming an XML data file to create a new rendering file and then executing the rendering file into a rendered form can take many seconds. Having to wait this long each time the user makes a change inhibits the user from quickly and easily editing an XML data file through a rendered form of that XML data file.
The following description and figures describe a hierarchical data processing engine for faster and more efficient transformation and rendering of data files. This hierarchical data processing engine enables a user to more quickly and easily edit data files by performing less than a full transformation of a full data file and by reducing the quantity of rendering used to render a change to a rendered form. The hierarchical data processing engine selects among multiple subprocesses, picking among them to transform and render the data file more quickly. In one implementation, the hierarchical data processing engine selects among four subprocesses, picking the subprocess that will accurately and most quickly render a change in a data file.
The same numbers are used throughout the disclosure and figures to reference like components and features.
The following disclosure describes a faster and less resource-intensive way to transform and render data files. If a user enters data into a data file through its rendered form, a system will receive the data and store the data. Once this is done, a hierarchical data processing engine will accurately reflect how this received data changes the data file and a rendered form for the data file. This hierarchical data processing engine can, in a fraction of the time and resources that would be used in transforming the entire data file and rendering the entire result, transform and render the data file to reflect a change. It does so by performing a partial (or no) transformation and/or a partial rendering. How the hierarchical data processing engine is able to do so, and in what circumstances, will be discussed below.
For discussion purposes, the system and method described herein are described in the context of a single computer, a user-input device, and a single display screen. These devices will be described first, followed by a discussion of the techniques in which these and other devices can be used.
The system 100 includes a display 102 having a screen 104, user-input device 106, and a computer 108. The user-input device 106 can include any device allowing a computer to receive a user's input, such as a keyboard 110, other devices 112 (such as a touch screen, a voice-activated input device, a track ball, and the like), and a mouse 114. With the user-input device 106, a user can edit a data file by adding or deleting information within a data-entry field on a rendered form, for instance. The user can use the display 102 and its screen 104 to view rendered forms of the data files.
The computer 108 includes a processing unit 116 to execute applications and/or files, and a memory 118 containing applications and files. The memory 118 includes volatile and non-volatile memory, and applications and files, such as an operating system 120 and a hierarchical data processing engine application 122, including a user interface 124. The memory 118 also includes a data file 126, a transformation file 128, a rendering file 130.
A rendered form provides a view and way through which to edit the data file 126 and is depicted on screen 104 through execution of the data file's rendering file 130. To edit the data file 126 in a user-friendly way, the rendered form gives the user a graphical, visual representation of data-entry fields showing previously entered data or blank data-entry fields into which the user can enter data.
Data Files, Transformation Files, Rendering Files, and Rendered Forms
The data file 126, transformation file 128, rendering file 130, and a rendered form work together to allow a user to edit the data file 126. A user can input data into and view data in the data file 126 through the rendered form of the data file. This rendered form is the result of executing the rendering file 130, which is created by applying the transformation file 128 on the data file 126.
Data input into a particular data-entry field of the rendered form is stored in a particular node of the data file 126. Data-entry fields of the rendered form correlate to nodes of the data file 126 in part because the rendered form is the result of the transformation file 128 being applied on the data file 126. The system 100 can use various ways to detect which data-entry fields correlate to which nodes of the data file 126, including through mapping with XPath expressions.
Also in
The transformation file 128 also correlates to the data file 126. Nodes of the data file 126 correlate to particular parts of the transformation file 128, also called nodes for the purposes of this description. Thus, nodes of the transformation file 128 correlate to nodes of the data file 126. This correlation can arise from nodes of the transformation file 128 being mapped to the nodes of the data file 126, including through XPath expressions, or otherwise.
That certain nodes of the transformation file 128 correlate to certain nodes of the data file 126 is often not enough, however, for the system 100 to accurately reflect a change in a particular node of the data file 126 by simply applying only a particular node of the transformation file 128 on a particular node of the data file 126. A node of the transformation file 128, when applied on a node of the data file 126, may affect many nodes of the data file 126. A node of the transformation file 128 could, for instance, be one that, as part of being applied on a node of the data file 126, is also applied on previously filled-in or as-yet-unfilled-in nodes of the data file 126. This concept is illustrated in
Further, the node of the transformation file 128 may direct the system to perform computations or other operations using other resources, like a database. For these and other reasons, the hierarchical data processing engine 122 analyzes the results of nodes of the transformation file 128 being applied on nodes of the data file 126 or nodes of some hypothetical data file, which will be discussed in greater detail below.
In some implementations, the transformation file 128 is an XSLT (eXtensible Style-sheet Language Transformation) file, which, when applied to an XML data file, generates a XHTML (eXtensible Hyper-Text Machine Language) or HTML (Hyper-Text Machine Language) rendering file (such as the rendering file 130). The transformation file 128 can also be an arbitrary XSLT file, such as a custom-made file or some other W3C-compliant file. XHTML and HTML files can be used to show a view on the screen 104, such as the travel itinerary rendered form 200 of
Like transformation files, data files can come in various types and styles. Hierarchical data files can be written in XML or some other mark-up language, or can be written in other hierarchical languages. Hierarchical data files also are typically concise and data-centered so that the data they contain can be more easily accessed or manipulated by multiple software applications, including software not typically used in a solution, such as an application that searches for a particular type of data and compiles that data into a report. A non-typical application, for example, could be one that compiles a report of all of the travel itineraries performed by a certain person by searching through and compiling the data entered in travel itinerary data files for a particular person.
The above devices and applications are merely representative, and other known devices and applications may be substituted for or added to those shown in
Overview
The hierarchical data processing engine 122 can make more efficient application of many different types of transformation files, including those not intended to produce rendering files. Thus, the hierarchical data processing engine's 122 ability to more quickly and with fewer resources transform a data file makes it useful beyond transforming a data file to create a partial or full rendering file.
For clarity, however, the below description discusses the hierarchical data processing engine 122 in the context of rendering the data file 126.
Analyzing a Transformation File
At block 402, the system 100, through the hierarchical data processing engine 122, analyzes the transformation file 128 for isolatable nodes and subtrees. An isolatable node is one in which data input into that node affects the rendering file 130 only by changing its corresponding data-entry field(s) by replacing the data within that data-entry field(s) with the data input. An isolatable subtree of nodes depends only on nodes within the subtree. Isolatable nodes and subtrees will be further defined and discussed below.
By analyzing the transformation file 128, the hierarchical data processing engine 122 is attempting to determine how little, if any, of the transformation file 128 can be applied to accurately transform and render a change to a node of a data file. This analysis can be performed later in the process 400, but when performed here can be quicker and more efficient because doing it later may slow down the process of rendering the rendering file 130, thereby possibly bogging down the user's editing experience. The result of this analysis (nodes and subtrees being recorded as isolatable and to what extent) is used by the hierarchical data processing engine 122 in blocks 412, 414, and 418, which will be discussed below.
The transformation file 128 can be analyzed independently of the particular data file on which it will be applied. This independent analysis is useful because the transformation file 128 could be applied on data files containing many different sets of data. Further, when performed at this stage, the hierarchical data processing engine 122 may not know what data will be input into any of the nodes of the data file (such as when it is blank of data). So analyzing the transformation file 128 as if a user input any type of data possible into each node of a data file makes the result of the analysis more robust and more accurate. For purposes of this discussion, a blank version of the data file 126 will be analyzed.
If a particular node or subtree of the transformation file 128 is determined to be isolatable, then its corresponding data file node or subtree is also isolatable. Through this determination, the hierarchical data processing engine 122 will have determined how changing the node of the data file 126 could affect the rendering file 130. In some cases, a node of the data file 126 (and its corresponding node in the transformation file 128) will be isolatable in that changing that node will, once the transformation file 128 is applied, result in only that data file node and its corresponding data-entry field in the rendered form being changed, such as with just the data input in the data-entry field. This isolation from affecting other nodes of the data file 126 means that to accurately transform the data file 126, partial or none of the transformation file 128 need be applied.
In other cases, only nodes within a subtree of the changed node will be affected by changing that particular node, which may allow the hierarchical data processing engine 122 to determine that only a particular subtree of the transformation file 128 need by applied to that particular subtree of nodes of the data file 126 in order for the transformation and resulting rendering file 130 to be accurate.
By so isolating nodes of the data file 126 and nodes of the transformation file 128, the hierarchical data processing engine 122 can reduce the time and resources needed to accurately transform the rendering file 130 for a change made to the data file 126. This increase in speed and efficiency helps the user experience a faster, more pleasant way to edit the data file 126.
How the hierarchical data processing engine 122 determines whether or not a node or subtree of the transformation file 128 and the data file 126 is isolatable is set forth in greater detail in
Generating a Rendered Form for a User to View and Edit
In block 404 of
In block 406, the user interface 124 renders the rendering file 130 to display a rendered form having data-entry fields. The rendered form may appear with a page-like appearance, such as the rendered form 200 of
In block 408, the user interface 124 enables a user to input data into the data-entry fields of a rendered form, such as the blank rendered form 200 of
Once the user inputs data into a data-entry field, the system 100 retains or stores the data input into the data file node through its corresponding data-entry field (block 410). The data-entry field is mapped to a particular node of the data file 126, and so this data is either retained or stored in that node of the data file 126 or in another location that can later be accessed and associated with that node. In the ongoing example, the user inputs a date in the trip start date data-entry field 206, which is mapped to the trip start date node 204. The characters for this input, “03/13/2002”, may be shown in the rendered form prior to the rendered form being updated to reflect the input. This data may be altered by the transformation file 128 once it is applied on this node of the data file 126, however, as will be discussed below.
Once the user has input the data and wishes either to go on to input data into another data-entry field (indicated by tabbing to the next data-entry field, for instance), wants the rendered form 200 to be updated to reflect the input (by request, for instance), or otherwise, the system 100 updates the rendered form 200.
Before updating the rendered form 200, the system 100 decides how to more efficiently update the rendered form 200.
Efficiently Transforming and/or Rendering a Change to a Data File
In block 412, the system 100 determines whether or not the node or its subtree corresponding to the data-entry field is isolatable. The system can do so simply by checking the result of block 402, where the hierarchical data processing engine determined this. If the data file node or its subtree is isolatable, the system proceeds along the “Yes” route to block 414 and then to block 416. If the data file node (or its subtree) is not isolatable, the system proceeds along the “No” route to block 418 and then to block 416.
In block 414, the system 100 (through the hierarchical data processing engine 122), having determined that the data file node or its subtree is isolatable, will run less than the entire transformation file on less than the entire data file. How much (if any) it will run is based on whether the node, when transformed by the transformation file 128, produces an isolatable change to the rendered form 200 or not, which will be discussed in greater detail below in
The result of this partial or zero transformation produces a partial rendering file that takes less time and resources for the system 100 to render (discussed in block 416 below) than a full rendering file to update a change to the data file 126. This further improves the user's editing experience because it often significantly reduces the amount of time that the system 100 needs to update the rendered form 200.
To implement the partial rendering file to update the rendered form 200 to reflect the change to the data file 126, the system 100 replaces the out-of-date parts of the current rendering file used to implement the current (out-of-date) rendered form 200 with the new, up-to-date partial rendering file.
If the system 100 has to execute an entirely new rendering file, the system 100 may take too long, thereby inhibiting the user's editing experience. Using a partial rendering file increases the speed and reduces the quantity of resources needed by the system 100, thereby improving the user's editing experience.
With a partial or no transformation and only a partial rendering file to execute, the system 100 often will be able to transform the data file 126 and render the change due to the transformation so fast that the user will not be aware that any process has been performed (except perhaps seeing an update to the rendered form). This enables the user to be able see an accurate depiction of the state of the data file 126 as the user is editing the data file 126.
In block 416, the system 100 performs a subprocess rendering the partial rendering file or another subprocess rendering a full rendering file (created in block 418). It does so to show change(s) made to the data file 126 caused by the user inputting data into data-entry fields and thus, nodes of the data file 126.
In discussion of block 414 above, the hierarchical data processing engine 122 produces a partial rendering file, which the system 100 executes instead of a part of the current rendering file that the system 100 is executing to produce the current rendered form 200. Using the ongoing example, assume a partial rendering file is produced by the hierarchical data processing engine 122 for data input into the trip start date data-entry field 206 (and thus the start date node 204). In this case, the system 100 may only need to execute a small piece of new rendering file-a part that produces the text “03/13/2002” in the trip start date data-entry field 206 and the event start date data-entry field 304, both of
In one implementation, the system 100 ensures that the rendered form 200 is in complete sync or “live” with the current state of the data file 126. Thus, the user has an accurate depiction of the state of the data file 126, even when the user is continuing to edit the data file 126. In this implementation, the rendered form 200 is maintained in a state that it would be in just as if the rendered form 200 were recreated from scratch with a full transformation of the transformation file 128 on the full (updated) data file 126 and execution of the full (updated) rendering file 130. While this full reapplication of the transformation file 128 and a new rendering file would often be prohibitively time-consuming and resource-intensive, the above processes for speeding up transformations and rendering often is not. The hierarchical data processing engine 122 acts to so speed up the process of accurately viewing a changing data file 126, that the user can experience, in most cases, a instantaneous updating of the rendered form.
In some cases, as will be discussed in block 418 below, the system executes a full, new rendering file. This is done when the complexity of the rendering or the transformation is such that the hierarchical data processing engine 122 does so in order to ensure complete accuracy of the rendered form 200. It is done infrequently, however, so that the user's editing experience is as user-friendly as possible.
In block 418, the system performs one or two subprocesses if the node or its subtree is not isolatable In the first subprocess, it creates only a portion of a rendering file that reflects a particular change in the data file 126. In the second subprocess, it creates a new rendering file. The system can determine if the node or its subtree is isolatable simply by checking the result of block 412, where the hierarchical data processing engine 122 determined this.
Thus, in block 418 the system 100 executes a full transformation subprocess, producing either a full or partial rendering file. When the node of the data file 126 corresponding to the current data-entry field is not isolated (or partially isolated) by the hierarchical data processing engine 122, the system executes a full transformation. This full transformation involves applying the full transformation file 128 on the full data file 126 (which contains the new data). The interim result is a full rendering file 130, which may or may not be the final result.
The system 100 (with the hierarchical data processing engine 122) attempts to reduce the amount of the interim full (new) rendering file 130 needed to be executed by the user interface 124 in block 416. It does so in order to speed up the updating process for the user, as rendering a partial rendering file takes less time and resources than rendering a full rendering file. For clarity and ease of discussion, how it does so is set forth in
The process 400 involves the hierarchical data processing engine 122 in the context of transforming the data file 126 to produce the rendering file 130. Transformations performed by the hierarchical data processing engine 122, however, can also perform other actions and create other results. The hierarchical data processing engine 122 can, for instance, perform computations that make substantial changes to the data file 126.
Exemplary Technique for Determining if a Node or its Subtree is Isolatable
Determining if a particular node or subtree of the date file 126 is isolatable can be difficult. When a user inputs data into a node of the data file 126, for instance, the transformation file 128 may add new data-entry fields, change current data-entry fields, present options to the user, access an outside source for information (like a database), perform complex computations, and the like. In so doing, the nodes of the transformation file 128 correlating to the node of the data file 126 may have to access outside sources. These outside sources can be accessed by the transformation file 128 during the process of transforming the node of the data file 126. This accessing of outside sources may directly or indirectly cause other parts of the transformation file 128 to be executed that do not appear to correlate to the node of the data file 126. Thus, isolating particular parts of the transformation file 128 includes ensuring that the isolated parts are all that is needed to transform the node of the data file 126.
In block 502, the hierarchical data processing engine 122 determines, for a node of the data file 126, if possible inputs into that node require only a simple change to the rendered form. In this block the hierarchical data processing engine 122 assesses if the node is isolatable. Here the hierarchical data processing engine 122 extrapolates what will happen for possible inputs into the node in question. The node is question is isolatable if possible inputs into the node cause only a simple change to data-entry fields when the transformation file 128 is applied on the data file 126. A simple change, for example, is one in which data rendered in one data-entry field is the data input into the node.
An example of an isolatable node is the event start date node 204 of
Also, because no other node of the data file 126 is affected by the input into the event start date node 204, no transformation is needed (if the data input is stored in the data file 126 when entered). In this way the hierarchical data processing engine 122 increases the speed and efficiency of rendering changes to the data file 126 in the rendered form 200 because it alleviates the system 100 from needing to apply even a part of the transformation file 128 on the data file 126. The system 100 also does not need to create a full rendering file. The amount of rendering file used is that amount that will allow the system 100 to show the characters “03/13/2002” in those two data-entry fields.
In one implementation, the hierarchical data processing engine 122 determines if a node is isolatable by determining that 1) for parts of the transformation file 128 that are executed for the node in question, there are no non-predictable variables; 2) there is no need to include or import operations or code from outside these parts of the transformation file 128; and 3) mapping expressions between the parts of the transformation file 128 and the node of the data file 126 do not include complex functions or expressions.
In block 504, the hierarchical data processing engine 122 proceeds along the “Yes” path to block 506 if the node is isolatable, and along the “No” path to block 508 if it is not isolatable.
In block 506 the hierarchical data processing engine 122 records that the node in question is isolatable. This record of the status of the node can be used by the hierarchical data processing engine 122 or the system 100 to determine how to render a change to this node. This record can also include information instructing the hierarchical data processing engine 122 as to which element(s) of a potential rendering file should be changed for an input to this node.
In block 508, the hierarchical data processing engine 122 determines whether the subtree is isolatable. The hierarchical data processing engine 122 does so by determining if a subtree of the transformation file 128 is sufficient to accurately transform and render a change to the data file node.
The hierarchical data processing engine 122 can do so by comparing rendering files for potential changes to the node. These compared rendering files include those created by performing a full transformation 128 on the full data file 126 and a subtree of the transformation file 128 on a subtree of the data file 126. If the result of this comparison shows that applying the subtree of the transformation file 128 on the subtree of the data file 126 produces the same change in the rendering file 130 as a full transformation does versus the version without the node changed, it may be isolatable.
For example, assume that data input into the event start date data-entry field 304 is stored in the event start date node 302. Assume also that another piece of the hierarchical data processing engine 122 modifies the data file 126 such that an event end date node 310 is transformed to include the next calendar day following the date input into the event start date node 302. Also, that the full rendering file 130 shows this change to the event end date node 310 in an event end date data-entry field 312. Thus, in this example the full application of the transformation file 128 on the full data file 126 produces a change to the rendered form 200 of
Continuing the example, the question remains whether or not a subtree of the transformation file 128 when applied to a subtree including the node in question will produce the same change in the data file 126 and the rendering file 130. Here the hierarchical data processing engine 122 analyzes the event subtree 308 and a subtree in the transformation file 128 correlating to the event subtree 308. In this case assume that the hierarchical data processing engine 122 determines that the only change made to the data file 126 was rendering the date input into the event start date node 302 and adding the next day to the event end date node 310 and its corresponding rendering. The renderings in this example comprise the “03/13/2002” in the event start date data-entry field 304 and the “03/14/2002” in the event end date data-entry field 312.
To test the accuracy of the partial transformation file 128 applied to the partial data file 126 (both subtrees), the hierarchical data processing engine 122 applies the transformation file 128 to the data file 126. The hierarchical data processing engine 122, if it determines that the resulting change to the data file 126 is the same, as is the change to the rendering file 130, the hierarchical data processing engine 122 will consider it isolatable for those subtrees.
Applying a part of the transformation file 128 on a part of the data file 126 is quicker and more efficient than apply the whole transformation file 128 on the whole data file 126. In this example, the event subtree 308 could include applying many nodes of the transformation file 128 on many nodes of the data file 126, but this would still take less time and resources than a full reapply. Also, the result of this partial reapply is a much smaller rendering file to be rendered. Executing a part of the rendering file 130 (the new part) can take significantly less time and resources than executing the entire rendering file 130.
In one implementation, determining whether the subtree of each of the data file 126 and the transformation file 128 is isolatable includes determining that there are no references in the transformation file 128 subtree to nodes of the data file 126 outside of the data file 126's subtree for the node in question.
In this implementation, the hierarchical data processing engine 122 records the subtree in question as isolatable if no mapping expressions (such as XPaths) in the subtrees of the transformation file 128 and the data file 126 refer to nodes outside of these subtrees.
Also in this implementation, the hierarchical data processing engine 122 records the subtree in question as isolatable if also there are no calls to apply templates inside the subtrees and the data file 126 subtree does not contain any nested subtrees.
In another implementation, the hierarchical data processing engine 122 determines if a subtree is isolatable by determining that 1) for parts of the transformation file 128 that are executed for the node in question, there are no non-predictable variables; 2) there is no need to include or import operations or code from outside these parts of the transformation file 128; and 3) mapping expressions between the parts of the transformation file 128 and the node of the data file 126 do not include complex functions or expressions.
The hierarchical data processing engine 122 can continue to test the transformation file 128 subtrees (smaller ones if the current subtree is isolatable, larger if it is not) to determine a subtree that is isolatable for the data file 126 node in question. Once the hierarchical data processing engine 122 determines whether there are subtrees in the data file 126 and the transformation file 128 for the node in question (and what they are), the hierarchical data processing engine 122 can proceed to the next block, block 510.
In block 510, the hierarchical data processing engine 122 proceeds along the “Yes” path to block 512 if the subtree is isolatable, and along the “No” path to block 514 if it is not.
In block 512 the hierarchical data processing engine 122 records that the subtree in question is isolatable. In so doing, it can also record the location of the subtrees for the transformation file 128 and the data file 126. Also, it can record how a partial rendering file created with this partial transformation maps to parts of a rendering file that the new partial rendering file is to replace. This record of the status (and other information therein) of the node can be used by the hierarchical data processing engine 122 or the system 100 to determine how to transform and render a change to this node.
In block 514 the hierarchical data processing engine 122 records that the node in question is not isolatable. In one implementation, the hierarchical data processing engine 122 records that the node in question is not suitable for a partial rendering due to the complexity of the rendering needed. This information can be used by the hierarchical data processing engine 122 or the system 100 when deciding whether or not to analyze whether or not a change to the node can be partially rendered.
Exemplary Technique for Executing an Isolation Subprocess
In block 602, the hierarchical data processing engine 122 accesses a record for the node receiving the input. This record is one created by the hierarchical data processing engine 122 as part of block 402. This record shows that the node is isolatable or its subtree is isolatable. If the node is isolatable, the hierarchical data processing engine 122 proceeds along the “Node Isolatable” path to blocks 604 and 606. If the node is not isolatable but the subtree is, it proceeds along the “Subtree Isolatable” path to block 608.
In block 604, the hierarchical data processing engine 122 determines which elements of the current rendering file correspond to changes made to the node of the data file 126. In the isolatable-node case, application of the transformation file 128 is not needed. Rather, the hierarchical data processing engine 122 simply determines which areas (elements), such as data-entry fields, of the current rendered form are to be altered with the characters input into the node in question. To do so, the hierarchical data processing engine 122 determines which particular elements of the current rendering file 130 need to be changed. This information can be accessed from the record for the node created by the hierarchical data processing engine 122 in block 402, or determined in a like manner as that set forth in block 402.
For each node causing an isolatable change to the rendering file 130 by the node changing, the hierarchical data processing engine 122 maps to it those elements of the rendering file 130 that render the input made to that node.
The characters, text, rich text, and the like that are input into the node are built into a partial rendering file (block 606). This partial rendering file, when executed by the user interface 124, replaces the elements of the current rendered form that are out-of-date with the data input into the node.
In one implementation, another application shows text as it is typed into the data-entry field. In this case, the system 100 verifies that this text shown in the data-entry field matches what would be rendered from a partial rendering file, rather than executing the partial rendering file.
The elements changed can be simple, such as a very small (and partial) rendering file containing rendering code indicating, for instance, that the characters “03/13/2002” should be rendered in two data-entry fields of the current rendered form (such as the rendered form 200 of
Because of the speed and resource savings of not having to perform a full transformation (or any transformation) and rendering just a small, partial rendering file, the user's editing experience is sped up and made more user friendly. The user experiences an incremental, accurate, and quick updating of the rendered form for the data file 126.
At block 608, the hierarchical data processing engine 122 applies a subtree of the transformation file 128 on a subtree of the data file 126. The location of these subtrees (within the full files) is set forth in a record previously made by the hierarchical data processing engine 122 in block 402. This record maps subtrees of the transformation file 128, the data file 126, and the rendering file 130 to each other. With this information, the hierarchical data processing engine 122 applies the subtree of the transformation file 128 on the subtree of the data file 126 for the node that was changed. The result of this application is a partial rendering file, which maps to a subtree of the current rendering file 130, allowing the user interface 124 to replace the subtree of the current rendering file 130 with this partial rendering file.
Thus, the result of this partial reapply is a partial rendering file. This partial rendering file is later executed by the user interface in place of the out-of-date rendering portion of the current rendering file 130.
Technique for Producing a Partial Rendering File from a Full Transformation
At block 702, the hierarchical data processing engine 122 applies a full transformation file on a full, changed data file (the data file 126 after a transformation is applied to the data file 126 with a node changed) to produce a new rendering file. This new rendering file is an interim file, which may or may not be executed. It is also up-to-date, containing change(s) caused by the input into the node. The system 100 could simply execute this new, up-to-date rendering file to create an up-to-date rendered form. Doing so, however, is often prohibitively slow. Executing that part of the up-to-date rendering file that is different from the current, out-of-date rendering file requires less time and fewer resources.
To reduce the amount of a new rendering file that is executed to view a change to the data file 126, the hierarchical data processing engine 122 determines the difference between the current rendering file and the new rendering file (block 704). This difference is a part(s) of the new rendering file that, when executed, will present a rendering of the change to the current data file 126.
This difference can be determined by performing a hierarchical differential analysis, which though correct, is less efficient than a linear analysis. This analysis compares the new and current rendering files and produces a result showing the difference. This can also be determined by a linear analysis, which is set forth in greater detail in the exemplary process set forth in
At block 706, the hierarchical data processing engine 122 attempts to map the difference on the current rendering file 130. By so doing, the hierarchical data processing engine 122 attempts to map up-to-date parts of the new rendering file to those parts of the current rendering file 130 that are to be replaced by the new parts. That way, when the system 100 attempts to reflect the change to the data file 126, the system 100 will have less new code to render. This reduction can speed up the process of rendering changes to the data file 126, improving the editing experience of the user.
This mapping can include instructions describing what parts of the current, out-of-date rendering file 130 are to be replaced with the difference. These mapping instructions can be included with the difference within a partial rendering file.
To ensure that the difference is properly mapped to the out-of-date parts of the rendering file 130, the hierarchical data processing engine 122 tests the mapping instructions (block 708). If the mapping instructions accurately describe what parts of the current rendering file 130 are to be replaced to accurately render the change to the data file 126, the hierarchical data processing engine 122 proceeds along the “Yes” path to block 710. If they do not, the hierarchical data processing engine 122 proceeds along the “No” path to block 712.
If the mapping is successful, the hierarchical data processing engine 122 produces a partial rendering file based on the difference (block 710). This partial rendering file includes the new, up-to-date part of the new rendering file that the system 100 (through the user interface 124) can execute to render the change to the data file 126. This partial rendering file can also include mapping instructions showing those parts of the current data file 126 that are inaccurate or not necessary to execute. With these mapping instructions, the current rendered form can be made up-to-date through execution of a partial, rather than full, rendering file (block 416 of
If the mapping is not successful, the hierarchical data processing engine 122 simply produces the new, full rendering file (block 712). Executing this new, full rendering file often takes substantially more time and resources to execute than a partial rendering file. This operation is included, however, as a fail-safe to insure that the rendered form accurately reflects the change in the data file 126.
Exemplary Technique for Determining a Difference between Two Rendering Files
In block 802, the hierarchical data processing engine 122 creates linear text files for the new and current rendering files. By creating a linear, rather than hierarchical or otherwise structured file, the hierarchical data processing engine 122 can more easily compare the new and current rendering files.
In block 804, the hierarchical data processing engine 122 determines the linear difference between the linear text files for the new and current rendering files. This determination can be much quicker to execute and require fewer resources than a non-linear analysis, thereby further speeding up and improving the user's editing experience. This linear difference is a linear text file which is not, on its own, executable in the same way as the original, non-linear rendering file (such as the rendering file 130).
In block 806, the hierarchical data processing engine 122 converts this linear difference file into a non-linear difference, possibly increasing the scope of the difference. This difference is a hierarchical file of a structure similar to the structure of the new and current rendering files. In one implementation this difference represents differences between rendering files that are arranged into a tree structure.
While the hierarchical data processing engine 122 creates linear files and then converts another linear difference file to a structured file, the time and resources to do so is often more than compensated for by the reduced time of executing a linear, rather than non-linear comparison, thereby more quickly updating a change to the rendered form.
Computer 942 further includes a hard disk drive 956 for reading from and writing to a hard disk (not shown), a magnetic disk drive 958 for reading from and writing to a removable magnetic disk 960, and an optical disk drive 962 for reading from or writing to a removable optical disk 964 such as a CD ROM or other optical media. The hard disk drive 956, magnetic disk drive 958, and optical disk drive 962 are connected to the bus 948 by an SCSI interface 966 or some other appropriate interface. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for computer 942. Although the exemplary environment described herein employs a hard disk, a removable magnetic disk 960 and a removable optical disk 964, it should be appreciated by those skilled in the art that other types of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the exemplary operating environment.
A number of program modules may be stored on the hard disk 956, magnetic disk 960, optical disk 964, ROM 950, or RAM 952, including an operating system 970, one or more application programs 972 (such as the hierarchical data processing engine application 122), other program modules 974, and program data 976. A user may enter commands and information into computer 942 through input devices such as a keyboard 978 and a pointing device 980. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are connected to the processing unit 944 through an interface 982 that is coupled to the bus 948. A monitor 984 or other type of display device is also connected to the bus 948 via an interface, such as a video adapter 986. In addition to the monitor, personal computers typically include other peripheral output devices (not shown) such as speakers and printers.
Computer 942 commonly operates in a networked environment using logical connections to one or more remote computers, such as a remote computer 988. The remote computer 988 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 942. The logical connections depicted in
When used in a LAN networking environment, computer 942 is connected to the local network through a network interface or adapter 994. When used in a WAN networking environment, computer 942 typically includes a modem 996 or other means for establishing communications over the wide area network 992, such as the Internet. The modem 996, which may be internal or external, is connected to the bus 948 via a serial port interface 968. In a networked environment, program modules depicted relative to the personal computer 942, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Generally, the data processors of computer 942 are programmed by means of instructions stored at different times in the various computer-readable storage media of the computer. Programs and operating systems are typically distributed, for example, on floppy disks or CD-ROMs. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory. The invention described herein includes these and other various types of computer-readable storage media when such media contain instructions or programs for implementing the blocks described below in conjunction with a microprocessor or other data processor. The invention also includes the computer itself when programmed according to the methods and techniques described herein.
For purposes of illustration, programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
The above-described system and method incrementally transforms and/or renders hierarchical data files. In so doing, it improves the editing experience for a user editing a hierarchical data file by more quickly and with less resources rendering incremental changes made to the data file. Although the system and method have been described in language specific to structural features and/or methodological acts, it is to be understood that the system and method defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claimed invention.
Number | Name | Date | Kind |
---|---|---|---|
4201978 | Nally | May 1980 | A |
4498147 | Agnew et al. | Feb 1985 | A |
4514800 | Gruner et al. | Apr 1985 | A |
4564752 | Lepic et al. | Jan 1986 | A |
4641274 | Swank | Feb 1987 | A |
4674040 | Barker et al. | Jun 1987 | A |
4723211 | Barker et al. | Feb 1988 | A |
4739477 | Barker et al. | Apr 1988 | A |
4815029 | Barker et al. | Mar 1989 | A |
4847749 | Collins et al. | Jul 1989 | A |
4910663 | Bailey | Mar 1990 | A |
4933880 | Borgendale et al. | Jun 1990 | A |
4962475 | Hernandez et al. | Oct 1990 | A |
5025484 | Yamanari et al. | Jun 1991 | A |
5072412 | Henderson, Jr. et al. | Dec 1991 | A |
5179703 | Evans | Jan 1993 | A |
5182709 | Makus | Jan 1993 | A |
5187786 | Densmore et al. | Feb 1993 | A |
5191645 | Carlucci et al. | Mar 1993 | A |
5195183 | Miller et al. | Mar 1993 | A |
5204947 | Bernstein et al. | Apr 1993 | A |
5206951 | Khoyi et al. | Apr 1993 | A |
5218672 | Morgan et al. | Jun 1993 | A |
5220649 | Forcier | Jun 1993 | A |
5222160 | Sakai et al. | Jun 1993 | A |
5228100 | Takeda et al. | Jul 1993 | A |
5237680 | Adams et al. | Aug 1993 | A |
5249275 | Srivastava | Sep 1993 | A |
5274803 | Dubin et al. | Dec 1993 | A |
5297249 | Bernstein et al. | Mar 1994 | A |
5297283 | Kelly, Jr. et al. | Mar 1994 | A |
5313631 | Kao | May 1994 | A |
5313646 | Hendricks et al. | May 1994 | A |
5317686 | Salas et al. | May 1994 | A |
5333317 | Dann | Jul 1994 | A |
5339423 | Beitel et al. | Aug 1994 | A |
5339424 | Fushimi | Aug 1994 | A |
5341478 | Travis, Jr. et al. | Aug 1994 | A |
5369766 | Nakano et al. | Nov 1994 | A |
5369778 | San Soucie et al. | Nov 1994 | A |
5371675 | Greif et al. | Dec 1994 | A |
5377323 | Vasudevan | Dec 1994 | A |
5379419 | Heffeman et al. | Jan 1995 | A |
5381547 | Flug et al. | Jan 1995 | A |
5390325 | Miller | Feb 1995 | A |
5396623 | McCall et al. | Mar 1995 | A |
5408665 | Fitzgerald | Apr 1995 | A |
5410646 | Tondevold et al. | Apr 1995 | A |
5410688 | Williams et al. | Apr 1995 | A |
5412772 | Monson | May 1995 | A |
5434975 | Allen | Jul 1995 | A |
5436637 | Gayraud et al. | Jul 1995 | A |
5438659 | Notess et al. | Aug 1995 | A |
5440744 | Jacobson et al. | Aug 1995 | A |
5446842 | Schaeffer et al. | Aug 1995 | A |
5455875 | Chevion et al. | Oct 1995 | A |
5459865 | Heninger et al. | Oct 1995 | A |
5481722 | Skinner | Jan 1996 | A |
5497489 | Menne | Mar 1996 | A |
5504898 | Klein | Apr 1996 | A |
5517655 | Collins et al. | May 1996 | A |
5535389 | Elder et al. | Jul 1996 | A |
5542070 | LeBlanc et al. | Jul 1996 | A |
5550976 | Henderson et al. | Aug 1996 | A |
5551035 | Arnold et al. | Aug 1996 | A |
5555325 | Burger | Sep 1996 | A |
5566330 | Sheffield | Oct 1996 | A |
5572643 | Judson | Nov 1996 | A |
5572648 | Bibayan | Nov 1996 | A |
5577252 | Nelson et al. | Nov 1996 | A |
5581686 | Koppolu et al. | Dec 1996 | A |
5581760 | Atkinson et al. | Dec 1996 | A |
5600789 | Parker et al. | Feb 1997 | A |
5602996 | Powers, III et al. | Feb 1997 | A |
5608720 | Biegel et al. | Mar 1997 | A |
5625783 | Ezekiel et al. | Apr 1997 | A |
5627979 | Chang et al. | May 1997 | A |
5630126 | Redpath | May 1997 | A |
5634121 | Tracz et al. | May 1997 | A |
5634124 | Khoyi et al. | May 1997 | A |
5640544 | Onodera et al. | Jun 1997 | A |
5644738 | Goldman et al. | Jul 1997 | A |
5649099 | Theimer et al. | Jul 1997 | A |
5659729 | Nielsen | Aug 1997 | A |
5664178 | Sinofsky | Sep 1997 | A |
5668966 | Ono et al. | Sep 1997 | A |
5669005 | Curbow et al. | Sep 1997 | A |
5682536 | Atkinson et al. | Oct 1997 | A |
5689667 | Kurtenbach | Nov 1997 | A |
5689703 | Atkinson et al. | Nov 1997 | A |
5704029 | Wright, Jr. | Dec 1997 | A |
5706501 | Horikiri et al. | Jan 1998 | A |
5717939 | Bricklin et al. | Feb 1998 | A |
5721824 | Taylor | Feb 1998 | A |
5740439 | Atkinson et al. | Apr 1998 | A |
5742504 | Meyer et al. | Apr 1998 | A |
5745683 | Lee et al. | Apr 1998 | A |
5745712 | Turpin et al. | Apr 1998 | A |
5748807 | Lopresti et al. | May 1998 | A |
5758184 | Lucovsky et al. | May 1998 | A |
5758358 | Ebbo | May 1998 | A |
5761408 | Kolawa et al. | Jun 1998 | A |
5761683 | Logan et al. | Jun 1998 | A |
5764984 | Loucks | Jun 1998 | A |
5764985 | Smale | Jun 1998 | A |
5778372 | Cordell et al. | Jul 1998 | A |
5778402 | Gipson | Jul 1998 | A |
5784555 | Stone | Jul 1998 | A |
5790796 | Sadowsky | Aug 1998 | A |
5798757 | Smith | Aug 1998 | A |
5801701 | Koppolu et al. | Sep 1998 | A |
5802304 | Stone | Sep 1998 | A |
5806079 | Rivette et al. | Sep 1998 | A |
5815830 | Anthony | Sep 1998 | A |
5826265 | Van Huben et al. | Oct 1998 | A |
5835777 | Staelin | Nov 1998 | A |
5838906 | Doyle et al. | Nov 1998 | A |
5842018 | Atkinson et al. | Nov 1998 | A |
5845077 | Fawcett | Dec 1998 | A |
5845090 | Collins, III et al. | Dec 1998 | A |
5854630 | Nielsen | Dec 1998 | A |
5859973 | Carpenter et al. | Jan 1999 | A |
5862372 | Morris et al. | Jan 1999 | A |
5862379 | Rubin et al. | Jan 1999 | A |
5864819 | De Armas et al. | Jan 1999 | A |
5907704 | Gudmundson et al. | May 1999 | A |
5910895 | Proskauer et al. | Jun 1999 | A |
5911776 | Guck | Jun 1999 | A |
5915112 | Boutcher | Jun 1999 | A |
5922072 | Hutchinson et al. | Jul 1999 | A |
5928363 | Ruvolo | Jul 1999 | A |
5929858 | Shibata et al. | Jul 1999 | A |
5940075 | Mutschler, III et al. | Aug 1999 | A |
5950010 | Hesse et al. | Sep 1999 | A |
5956481 | Walsh et al. | Sep 1999 | A |
5960199 | Brodsky et al. | Sep 1999 | A |
5963964 | Nielsen | Oct 1999 | A |
5973696 | Agranat et al. | Oct 1999 | A |
5974454 | Apfel et al. | Oct 1999 | A |
5982370 | Kamper | Nov 1999 | A |
5983348 | Ji | Nov 1999 | A |
5987480 | Donohue et al. | Nov 1999 | A |
5991710 | Papineni et al. | Nov 1999 | A |
5991731 | Colon et al. | Nov 1999 | A |
5991877 | Luckenbaugh | Nov 1999 | A |
5995103 | Ashe | Nov 1999 | A |
5999740 | Rowley | Dec 1999 | A |
6005570 | Gayraud et al. | Dec 1999 | A |
6014135 | Fernandes | Jan 2000 | A |
6016520 | Facq et al. | Jan 2000 | A |
6018743 | Xu | Jan 2000 | A |
6026379 | Haller et al. | Feb 2000 | A |
6026416 | Kanerva et al. | Feb 2000 | A |
6031989 | Cordell | Feb 2000 | A |
6035297 | Van Huben et al. | Mar 2000 | A |
6035309 | Dauerer et al. | Mar 2000 | A |
6044205 | Reed et al. | Mar 2000 | A |
6052531 | Waldin et al. | Apr 2000 | A |
6052710 | Saliba et al. | Apr 2000 | A |
6054987 | Richardson | Apr 2000 | A |
6070184 | Blount et al. | May 2000 | A |
6072870 | Nguyen et al. | Jun 2000 | A |
6078326 | Kilmer et al. | Jun 2000 | A |
6078327 | Liman et al. | Jun 2000 | A |
6078924 | Ainsbury et al. | Jun 2000 | A |
6081610 | Dwork et al. | Jun 2000 | A |
6084585 | Kraft et al. | Jul 2000 | A |
6088708 | Burch et al. | Jul 2000 | A |
6091417 | Lefkowitz | Jul 2000 | A |
6094657 | Hailpern et al. | Jul 2000 | A |
6097382 | Rosen et al. | Aug 2000 | A |
6098081 | Heidorn et al. | Aug 2000 | A |
6108637 | Blumenau | Aug 2000 | A |
6108783 | Krawczyk et al. | Aug 2000 | A |
6115646 | Fiszman et al. | Sep 2000 | A |
6121965 | Kenney et al. | Sep 2000 | A |
6122647 | Horowitz et al. | Sep 2000 | A |
6144969 | Inokuchi et al. | Nov 2000 | A |
6151624 | Teare et al. | Nov 2000 | A |
6154128 | Wookey et al. | Nov 2000 | A |
6163772 | Kramer et al. | Dec 2000 | A |
6167521 | Smith et al. | Dec 2000 | A |
6167523 | Strong | Dec 2000 | A |
6182094 | Humpleman et al. | Jan 2001 | B1 |
6182095 | Leymaster et al. | Jan 2001 | B1 |
6188401 | Peyer | Feb 2001 | B1 |
6191797 | Politis | Feb 2001 | B1 |
6192367 | Hawley et al. | Feb 2001 | B1 |
6195661 | Filepp et al. | Feb 2001 | B1 |
6199204 | Donohue | Mar 2001 | B1 |
6209128 | Gerard et al. | Mar 2001 | B1 |
6216152 | Wong et al. | Apr 2001 | B1 |
6219698 | Iannucci et al. | Apr 2001 | B1 |
6225996 | Gibb et al. | May 2001 | B1 |
6235027 | Herzon | May 2001 | B1 |
6253366 | Mutschler, III | Jun 2001 | B1 |
6253374 | Dresevic et al. | Jun 2001 | B1 |
6263313 | Milsted et al. | Jul 2001 | B1 |
6266810 | Tanaka et al. | Jul 2001 | B1 |
6268852 | Lindhorst et al. | Jul 2001 | B1 |
6272506 | Bell | Aug 2001 | B1 |
6275227 | DeStefano | Aug 2001 | B1 |
6275599 | Adler et al. | Aug 2001 | B1 |
6279042 | Ouchi | Aug 2001 | B1 |
6281896 | Alimpich et al. | Aug 2001 | B1 |
6282711 | Halpern et al. | Aug 2001 | B1 |
6286033 | Kishinsky et al. | Sep 2001 | B1 |
6292897 | Gennaro et al. | Sep 2001 | B1 |
6297819 | Furst | Oct 2001 | B1 |
6300948 | Geller et al. | Oct 2001 | B1 |
6307955 | Zank et al. | Oct 2001 | B1 |
6308179 | Petersen et al. | Oct 2001 | B1 |
6308273 | Goertzel et al. | Oct 2001 | B1 |
6311271 | Gennaro et al. | Oct 2001 | B1 |
6314415 | Mukherjee | Nov 2001 | B1 |
6321259 | Ouellette et al. | Nov 2001 | B1 |
6321334 | Jerger et al. | Nov 2001 | B1 |
6327628 | Anuff et al. | Dec 2001 | B1 |
6331864 | Coco et al. | Dec 2001 | B1 |
6343149 | Motoiwa | Jan 2002 | B1 |
6343302 | Graham | Jan 2002 | B1 |
6345256 | Milsted et al. | Feb 2002 | B1 |
6345278 | Hitchcock et al. | Feb 2002 | B1 |
6345361 | Jerger et al. | Feb 2002 | B1 |
6347323 | Garber et al. | Feb 2002 | B1 |
6349408 | Smith | Feb 2002 | B1 |
6351574 | Yair et al. | Feb 2002 | B1 |
6353851 | Anupam et al. | Mar 2002 | B1 |
6353926 | Parthesarathy et al. | Mar 2002 | B1 |
6356906 | Lippert et al. | Mar 2002 | B1 |
6357038 | Scouten | Mar 2002 | B1 |
6366907 | Fanning et al. | Apr 2002 | B1 |
6366912 | Wallent et al. | Apr 2002 | B1 |
6367013 | Bisbee et al. | Apr 2002 | B1 |
6369840 | Barnett et al. | Apr 2002 | B1 |
6374402 | Schmeidler et al. | Apr 2002 | B1 |
6381742 | Forbes et al. | Apr 2002 | B2 |
6381743 | Mutschler, III | Apr 2002 | B1 |
6389434 | Rivette et al. | May 2002 | B1 |
6393456 | Ambler et al. | May 2002 | B1 |
6396488 | Simmons et al. | May 2002 | B1 |
6405221 | Levine et al. | Jun 2002 | B1 |
6405238 | Votipka | Jun 2002 | B1 |
6408311 | Baisley et al. | Jun 2002 | B1 |
6414700 | Kurtenbach et al. | Jul 2002 | B1 |
6421070 | Ramos et al. | Jul 2002 | B1 |
6421656 | Cheng et al. | Jul 2002 | B1 |
6425125 | Fries et al. | Jul 2002 | B1 |
6429885 | Saib et al. | Aug 2002 | B1 |
6434563 | Pasquali et al. | Aug 2002 | B1 |
6434564 | Ebert | Aug 2002 | B2 |
6442563 | Bacon et al. | Aug 2002 | B1 |
6442755 | Lemmons et al. | Aug 2002 | B1 |
6446110 | Lection et al. | Sep 2002 | B1 |
6449617 | Quinn et al. | Sep 2002 | B1 |
6457009 | Bollay | Sep 2002 | B1 |
6460058 | Koppolu et al. | Oct 2002 | B2 |
6463419 | Kluss | Oct 2002 | B1 |
6470349 | Heninger et al. | Oct 2002 | B1 |
6473800 | Jerger et al. | Oct 2002 | B1 |
6476828 | Burkett et al. | Nov 2002 | B1 |
6476833 | Moshfeghi | Nov 2002 | B1 |
6477544 | Bolosky et al. | Nov 2002 | B1 |
6480860 | Monday | Nov 2002 | B1 |
6487566 | Sundaresan | Nov 2002 | B1 |
6490601 | Markus et al. | Dec 2002 | B1 |
6493702 | Adar et al. | Dec 2002 | B1 |
6501864 | Eguchi et al. | Dec 2002 | B1 |
6502101 | Verprauskus et al. | Dec 2002 | B1 |
6502103 | Frey et al. | Dec 2002 | B1 |
6505200 | Ims et al. | Jan 2003 | B1 |
6505230 | Mohan et al. | Jan 2003 | B1 |
6505300 | Chan et al. | Jan 2003 | B2 |
6507856 | Chen et al. | Jan 2003 | B1 |
6516322 | Meredith | Feb 2003 | B1 |
6519617 | Wanderski et al. | Feb 2003 | B1 |
RE38070 | Spies et al. | Apr 2003 | E |
6546546 | Van Doorn | Apr 2003 | B1 |
6549221 | Brown et al. | Apr 2003 | B1 |
6549878 | Lowry et al. | Apr 2003 | B1 |
6549922 | Srivastava et al. | Apr 2003 | B1 |
6553402 | Makarios et al. | Apr 2003 | B1 |
6560616 | Garber | May 2003 | B1 |
6560620 | Ching | May 2003 | B1 |
6560640 | Smethers | May 2003 | B2 |
6563514 | Samar | May 2003 | B1 |
6571253 | Thompson et al. | May 2003 | B1 |
6578144 | Gennaro et al. | Jun 2003 | B1 |
6581061 | Graham | Jun 2003 | B2 |
6584469 | Chiang et al. | Jun 2003 | B1 |
6584548 | Bourne et al. | Jun 2003 | B1 |
6585778 | Hind et al. | Jul 2003 | B1 |
6589290 | Maxwell et al. | Jul 2003 | B1 |
6594686 | Edwards et al. | Jul 2003 | B1 |
6598219 | Lau | Jul 2003 | B1 |
6603489 | Edlund et al. | Aug 2003 | B1 |
6604099 | Chung et al. | Aug 2003 | B1 |
6606606 | Starr | Aug 2003 | B2 |
6609200 | Anderson et al. | Aug 2003 | B2 |
6611822 | Beams et al. | Aug 2003 | B1 |
6611840 | Baer et al. | Aug 2003 | B1 |
6611843 | Jacobs | Aug 2003 | B1 |
6613098 | Sorge et al. | Sep 2003 | B1 |
6615276 | Mastrianni et al. | Sep 2003 | B1 |
6629109 | Koshisaka | Sep 2003 | B1 |
6631357 | Perkowski | Oct 2003 | B1 |
6631379 | Cox | Oct 2003 | B2 |
6631497 | Jamshidi et al. | Oct 2003 | B1 |
6631519 | Nicholson et al. | Oct 2003 | B1 |
6632251 | Rutten et al. | Oct 2003 | B1 |
6635089 | Burkett et al. | Oct 2003 | B1 |
6636845 | Chau et al. | Oct 2003 | B2 |
6643633 | Chau et al. | Nov 2003 | B2 |
6643652 | Helgeson et al. | Nov 2003 | B2 |
6643684 | Malkin et al. | Nov 2003 | B1 |
6651217 | Kennedy et al. | Nov 2003 | B1 |
6654737 | Nunez | Nov 2003 | B1 |
6654932 | Bahrs et al. | Nov 2003 | B1 |
6658417 | Stakutis et al. | Dec 2003 | B1 |
6658622 | Aiken et al. | Dec 2003 | B1 |
6661920 | Skinner | Dec 2003 | B1 |
6668369 | Krebs et al. | Dec 2003 | B1 |
6671805 | Brown et al. | Dec 2003 | B1 |
6675202 | Perttunen | Jan 2004 | B1 |
6678717 | Schneider | Jan 2004 | B1 |
6681370 | Gounares et al. | Jan 2004 | B2 |
6691230 | Bardon | Feb 2004 | B1 |
6691281 | Sorge et al. | Feb 2004 | B1 |
6697944 | Jones et al. | Feb 2004 | B1 |
6701434 | Rohatgi | Mar 2004 | B1 |
6701486 | Weber et al. | Mar 2004 | B1 |
6704906 | Yankovich et al. | Mar 2004 | B1 |
6711679 | Guski et al. | Mar 2004 | B1 |
6720985 | Lapstun et al. | Apr 2004 | B1 |
6725426 | Pavlov | Apr 2004 | B1 |
6728755 | de Ment | Apr 2004 | B1 |
6735721 | Morrow et al. | May 2004 | B1 |
6745367 | Bates et al. | Jun 2004 | B1 |
6748385 | Rodkin et al. | Jun 2004 | B1 |
6751777 | Bates et al. | Jun 2004 | B2 |
6754874 | Richman | Jun 2004 | B1 |
6757826 | Paltenghe | Jun 2004 | B1 |
6757868 | Glaser et al. | Jun 2004 | B1 |
6760723 | Oshinsky et al. | Jul 2004 | B2 |
6763343 | Brooke et al. | Jul 2004 | B1 |
6772139 | Smith, III | Aug 2004 | B1 |
6772165 | O'Carroll | Aug 2004 | B2 |
6774926 | Ellis et al. | Aug 2004 | B1 |
6779154 | Nussbaum et al. | Aug 2004 | B1 |
6781609 | Barker et al. | Aug 2004 | B1 |
6782144 | Bellavita et al. | Aug 2004 | B2 |
6799299 | Li et al. | Sep 2004 | B1 |
6801929 | Donoho et al. | Oct 2004 | B1 |
6816849 | Halt, Jr. | Nov 2004 | B1 |
6828992 | Freeman et al. | Dec 2004 | B1 |
6845380 | Su et al. | Jan 2005 | B2 |
6847387 | Roth | Jan 2005 | B2 |
6848078 | Birsan et al. | Jan 2005 | B1 |
6850895 | Brodersen et al. | Feb 2005 | B2 |
6871220 | Rajan et al. | Mar 2005 | B1 |
6874130 | Baweja et al. | Mar 2005 | B1 |
6876996 | Czajkowski et al. | Apr 2005 | B2 |
6889359 | Conner et al. | May 2005 | B1 |
6901403 | Bata et al. | May 2005 | B1 |
6915454 | Moore et al. | Jul 2005 | B1 |
6931532 | Davis et al. | Aug 2005 | B1 |
6941510 | Ozzie et al. | Sep 2005 | B1 |
6941511 | Hind et al. | Sep 2005 | B1 |
6941521 | Lin et al. | Sep 2005 | B2 |
6948129 | Loghmani | Sep 2005 | B1 |
6948133 | Haley | Sep 2005 | B2 |
6948135 | Ruthfield et al. | Sep 2005 | B1 |
6950980 | Malcolm | Sep 2005 | B1 |
6961897 | Peel, Jr. et al. | Nov 2005 | B1 |
6963875 | Moore | Nov 2005 | B2 |
6968503 | Chang et al. | Nov 2005 | B1 |
6968505 | Stoll et al. | Nov 2005 | B2 |
6993714 | Kaler et al. | Jan 2006 | B2 |
6996776 | Makely et al. | Feb 2006 | B1 |
6996781 | Myers et al. | Feb 2006 | B1 |
7000179 | Yankovich et al. | Feb 2006 | B2 |
7002560 | Graham | Feb 2006 | B2 |
7003722 | Rothchiller et al. | Feb 2006 | B2 |
7010580 | Fu et al. | Mar 2006 | B1 |
7020869 | Abriari et al. | Mar 2006 | B2 |
7024417 | Russakovsky et al. | Apr 2006 | B1 |
7032170 | Poulose et al. | Apr 2006 | B2 |
7036072 | Sulistio et al. | Apr 2006 | B1 |
7039875 | Khalfay et al. | May 2006 | B2 |
7043687 | Knauss et al. | May 2006 | B2 |
7051273 | Holt et al. | May 2006 | B1 |
7058663 | Johnston et al. | Jun 2006 | B2 |
7062764 | Cohen et al. | Jun 2006 | B2 |
7065493 | Homsi | Jun 2006 | B1 |
7076728 | Davis et al. | Jul 2006 | B2 |
7080083 | Kim et al. | Jul 2006 | B2 |
7080325 | Treibach-Heck et al. | Jul 2006 | B2 |
7086009 | Resnick et al. | Aug 2006 | B2 |
7086042 | Abe et al. | Aug 2006 | B2 |
7088374 | David et al. | Aug 2006 | B2 |
7100147 | Miller et al. | Aug 2006 | B2 |
7103611 | Murthy et al. | Sep 2006 | B2 |
7106888 | Silverbrook et al. | Sep 2006 | B1 |
7107282 | Yalamanchi | Sep 2006 | B1 |
7107521 | Santos | Sep 2006 | B2 |
7120863 | Wang | Oct 2006 | B1 |
7130885 | Chandra et al. | Oct 2006 | B2 |
7143341 | Kohli | Nov 2006 | B1 |
7146564 | Kim et al. | Dec 2006 | B2 |
7152205 | Day et al. | Dec 2006 | B2 |
7168035 | Bell et al. | Jan 2007 | B1 |
7178166 | Taylor et al. | Feb 2007 | B1 |
7190376 | Tonisson | Mar 2007 | B1 |
7191394 | Ardeleanu et al. | Mar 2007 | B1 |
7200816 | Falk et al. | Apr 2007 | B2 |
7213200 | Abe et al. | May 2007 | B2 |
7236982 | Zlatanov et al. | Jun 2007 | B2 |
7249328 | Davis | Jul 2007 | B1 |
7272789 | O'Brien | Sep 2007 | B2 |
7281018 | Begun et al. | Oct 2007 | B1 |
7284208 | Matthews | Oct 2007 | B2 |
7287218 | Knotz et al. | Oct 2007 | B1 |
7296017 | Larcheveque et al. | Nov 2007 | B2 |
7313758 | Kozlov | Dec 2007 | B2 |
7316003 | Dulepet et al. | Jan 2008 | B1 |
7318237 | Moriconi et al. | Jan 2008 | B2 |
7334178 | Stanciu et al. | Feb 2008 | B1 |
7337391 | Clarke et al. | Feb 2008 | B2 |
7337392 | Lue | Feb 2008 | B2 |
7346610 | Ruthfield et al. | Mar 2008 | B2 |
7346840 | Ravishankar et al. | Mar 2008 | B1 |
7346848 | Ruthfield et al. | Mar 2008 | B1 |
7350141 | Kotler et al. | Mar 2008 | B2 |
7373595 | Jones et al. | May 2008 | B2 |
7412649 | Emek et al. | Aug 2008 | B2 |
7424671 | Elza et al. | Sep 2008 | B2 |
7428699 | Kane et al. | Sep 2008 | B1 |
20010007109 | Lange | Jul 2001 | A1 |
20010022592 | Alimpich et al. | Sep 2001 | A1 |
20010024195 | Hayakawa | Sep 2001 | A1 |
20010037345 | Kiernan | Nov 2001 | A1 |
20010054004 | Powers | Dec 2001 | A1 |
20010056429 | Moore et al. | Dec 2001 | A1 |
20010056460 | Sahota et al. | Dec 2001 | A1 |
20020010700 | Wotring et al. | Jan 2002 | A1 |
20020010743 | Ryan et al. | Jan 2002 | A1 |
20020010746 | Jilk et al. | Jan 2002 | A1 |
20020010855 | Reshef et al. | Jan 2002 | A1 |
20020013788 | Pennell et al. | Jan 2002 | A1 |
20020019941 | Chan et al. | Feb 2002 | A1 |
20020023113 | Hsing et al. | Feb 2002 | A1 |
20020026441 | Kutay | Feb 2002 | A1 |
20020026461 | Kutay et al. | Feb 2002 | A1 |
20020032590 | Anand et al. | Mar 2002 | A1 |
20020032692 | Suzuki et al. | Mar 2002 | A1 |
20020032706 | Perla et al. | Mar 2002 | A1 |
20020032768 | Voskuil | Mar 2002 | A1 |
20020035579 | Wang et al. | Mar 2002 | A1 |
20020035581 | Reynar et al. | Mar 2002 | A1 |
20020040469 | Pramberger | Apr 2002 | A1 |
20020054126 | Gamon | May 2002 | A1 |
20020057297 | Grimes et al. | May 2002 | A1 |
20020065798 | Bostleman et al. | May 2002 | A1 |
20020065847 | Furukawa et al. | May 2002 | A1 |
20020070973 | Croley | Jun 2002 | A1 |
20020078074 | Cho et al. | Jun 2002 | A1 |
20020078103 | Gorman et al. | Jun 2002 | A1 |
20020083318 | Larose | Jun 2002 | A1 |
20020099952 | Lambert et al. | Jul 2002 | A1 |
20020100027 | Binding et al. | Jul 2002 | A1 |
20020112224 | Cox | Aug 2002 | A1 |
20020129056 | Conant et al. | Sep 2002 | A1 |
20020133484 | Chau et al. | Sep 2002 | A1 |
20020152222 | Holbrook | Oct 2002 | A1 |
20020152244 | Dean et al. | Oct 2002 | A1 |
20020156772 | Chau et al. | Oct 2002 | A1 |
20020156846 | Rawat et al. | Oct 2002 | A1 |
20020156929 | Hekmatpour | Oct 2002 | A1 |
20020169752 | Kusama et al. | Nov 2002 | A1 |
20020169789 | Kutay | Nov 2002 | A1 |
20020174147 | Wang et al. | Nov 2002 | A1 |
20020174417 | Sijacic et al. | Nov 2002 | A1 |
20020178380 | Wolf et al. | Nov 2002 | A1 |
20020184219 | Preisig et al. | Dec 2002 | A1 |
20020188597 | Kern et al. | Dec 2002 | A1 |
20020188613 | Chakraborty et al. | Dec 2002 | A1 |
20020194219 | Bradley et al. | Dec 2002 | A1 |
20020196281 | Audleman et al. | Dec 2002 | A1 |
20020196288 | Emrani | Dec 2002 | A1 |
20020198891 | Li et al. | Dec 2002 | A1 |
20020198935 | Crandall, Sr. et al. | Dec 2002 | A1 |
20030004951 | Chokshi | Jan 2003 | A1 |
20030007000 | Carlson et al. | Jan 2003 | A1 |
20030014397 | Chau et al. | Jan 2003 | A1 |
20030018668 | Britton et al. | Jan 2003 | A1 |
20030020746 | Chen et al. | Jan 2003 | A1 |
20030023641 | Gorman et al. | Jan 2003 | A1 |
20030025732 | Prichard | Feb 2003 | A1 |
20030026507 | Zlotnick | Feb 2003 | A1 |
20030028550 | Lee et al. | Feb 2003 | A1 |
20030037303 | Bodlaender et al. | Feb 2003 | A1 |
20030043986 | Creamer | Mar 2003 | A1 |
20030046665 | Ilin | Mar 2003 | A1 |
20030048301 | Menninger | Mar 2003 | A1 |
20030051243 | Lemmons et al. | Mar 2003 | A1 |
20030055811 | Stork et al. | Mar 2003 | A1 |
20030055828 | Koch et al. | Mar 2003 | A1 |
20030056198 | Al-Azzawe | Mar 2003 | A1 |
20030061386 | Brown | Mar 2003 | A1 |
20030061567 | Brown et al. | Mar 2003 | A1 |
20030084424 | Reddy et al. | May 2003 | A1 |
20030093755 | O'Carroll | May 2003 | A1 |
20030110443 | Yankovich et al. | Jun 2003 | A1 |
20030120578 | Newman | Jun 2003 | A1 |
20030120651 | Bernstein et al. | Jun 2003 | A1 |
20030120659 | Sridhar | Jun 2003 | A1 |
20030120671 | Kim et al. | Jun 2003 | A1 |
20030120686 | Kim et al. | Jun 2003 | A1 |
20030126555 | Aggarwal et al. | Jul 2003 | A1 |
20030128196 | Lapstun et al. | Jul 2003 | A1 |
20030135825 | Gertner et al. | Jul 2003 | A1 |
20030140132 | Champagne et al. | Jul 2003 | A1 |
20030142072 | Lapstun et al. | Jul 2003 | A1 |
20030149934 | Worden | Aug 2003 | A1 |
20030158897 | Ben-Natan et al. | Aug 2003 | A1 |
20030163285 | Nakamura et al. | Aug 2003 | A1 |
20030167277 | Hejlsberg et al. | Sep 2003 | A1 |
20030182268 | Lal | Sep 2003 | A1 |
20030182327 | Ramanujam et al. | Sep 2003 | A1 |
20030187756 | Klivington et al. | Oct 2003 | A1 |
20030187930 | Ghaffar et al. | Oct 2003 | A1 |
20030188260 | Jensen et al. | Oct 2003 | A1 |
20030189593 | Yarvin | Oct 2003 | A1 |
20030192008 | Lee | Oct 2003 | A1 |
20030200506 | Abe et al. | Oct 2003 | A1 |
20030204511 | Brundage | Oct 2003 | A1 |
20030204814 | Elo et al. | Oct 2003 | A1 |
20030205615 | Marappan | Nov 2003 | A1 |
20030212664 | Breining et al. | Nov 2003 | A1 |
20030212902 | van der Made | Nov 2003 | A1 |
20030217053 | Bachman et al. | Nov 2003 | A1 |
20030220930 | Milleker et al. | Nov 2003 | A1 |
20030225469 | DeRemer et al. | Dec 2003 | A1 |
20030225768 | Chaudhuri | Dec 2003 | A1 |
20030225829 | Pena et al. | Dec 2003 | A1 |
20030226111 | Wirts et al. | Dec 2003 | A1 |
20030226132 | Tondreau et al. | Dec 2003 | A1 |
20030233374 | Spinola et al. | Dec 2003 | A1 |
20030233644 | Cohen et al. | Dec 2003 | A1 |
20030236859 | Vaschillo et al. | Dec 2003 | A1 |
20030236903 | Piotrowski | Dec 2003 | A1 |
20030237046 | Parker et al. | Dec 2003 | A1 |
20030237047 | Borson | Dec 2003 | A1 |
20040002939 | Arora | Jan 2004 | A1 |
20040002950 | Brennan et al. | Jan 2004 | A1 |
20040003031 | Brown et al. | Jan 2004 | A1 |
20040003353 | Rivera et al. | Jan 2004 | A1 |
20040003389 | Reynar et al. | Jan 2004 | A1 |
20040010752 | Chan et al. | Jan 2004 | A1 |
20040024842 | Witt | Feb 2004 | A1 |
20040030991 | Hepworth et al. | Feb 2004 | A1 |
20040039990 | Bakar et al. | Feb 2004 | A1 |
20040039993 | Kougiouris et al. | Feb 2004 | A1 |
20040044961 | Pesenson | Mar 2004 | A1 |
20040044965 | Toyama et al. | Mar 2004 | A1 |
20040054966 | Busch et al. | Mar 2004 | A1 |
20040059754 | Barghout et al. | Mar 2004 | A1 |
20040073565 | Kaufman et al. | Apr 2004 | A1 |
20040073868 | Easter et al. | Apr 2004 | A1 |
20040078756 | Napper et al. | Apr 2004 | A1 |
20040083426 | Sahu | Apr 2004 | A1 |
20040088647 | Miller et al. | May 2004 | A1 |
20040088652 | Abe et al. | May 2004 | A1 |
20040093596 | Koyano | May 2004 | A1 |
20040107367 | Kisters | Jun 2004 | A1 |
20040117769 | Lauzon et al. | Jun 2004 | A1 |
20040123277 | Schrader et al. | Jun 2004 | A1 |
20040146199 | Berkner et al. | Jul 2004 | A1 |
20040148178 | Brain | Jul 2004 | A1 |
20040163041 | Engel | Aug 2004 | A1 |
20040172442 | Ripley | Sep 2004 | A1 |
20040181711 | Johnson et al. | Sep 2004 | A1 |
20040186762 | Beaven et al. | Sep 2004 | A1 |
20040189708 | Larcheveque et al. | Sep 2004 | A1 |
20040189716 | Paoli et al. | Sep 2004 | A1 |
20040194035 | Chakraborty | Sep 2004 | A1 |
20040205473 | Fisher et al. | Oct 2004 | A1 |
20040205525 | Murren et al. | Oct 2004 | A1 |
20040205534 | Koelle | Oct 2004 | A1 |
20040205571 | Adler et al. | Oct 2004 | A1 |
20040205592 | Huang | Oct 2004 | A1 |
20040205605 | Adler et al. | Oct 2004 | A1 |
20040205653 | Hadfield et al. | Oct 2004 | A1 |
20040205671 | Sukehiro et al. | Oct 2004 | A1 |
20040210599 | Friedman et al. | Oct 2004 | A1 |
20040210645 | Kouznetsov et al. | Oct 2004 | A1 |
20040221238 | Cifra et al. | Nov 2004 | A1 |
20040221245 | Chickles et al. | Nov 2004 | A1 |
20040237030 | Malkin | Nov 2004 | A1 |
20040260593 | Abraham-Fuchs et al. | Dec 2004 | A1 |
20040261019 | Imamura et al. | Dec 2004 | A1 |
20040268229 | Paoli et al. | Dec 2004 | A1 |
20050004893 | Sangroniz | Jan 2005 | A1 |
20050005248 | Rockey et al. | Jan 2005 | A1 |
20050015279 | Rucker | Jan 2005 | A1 |
20050015732 | Vedula et al. | Jan 2005 | A1 |
20050022115 | Baumgartner et al. | Jan 2005 | A1 |
20050027757 | Kiessig et al. | Feb 2005 | A1 |
20050028073 | Henry et al. | Feb 2005 | A1 |
20050033728 | James | Feb 2005 | A1 |
20050038711 | Marlelo | Feb 2005 | A1 |
20050055627 | Lloyd et al. | Mar 2005 | A1 |
20050060324 | Johnson et al. | Mar 2005 | A1 |
20050060721 | Choudhary et al. | Mar 2005 | A1 |
20050065933 | Goering | Mar 2005 | A1 |
20050065936 | Goering | Mar 2005 | A1 |
20050066287 | Tattrie et al. | Mar 2005 | A1 |
20050071752 | Marlatt | Mar 2005 | A1 |
20050076049 | Qubti et al. | Apr 2005 | A1 |
20050091285 | Krishnan et al. | Apr 2005 | A1 |
20050091305 | Lange et al. | Apr 2005 | A1 |
20050097536 | Bernstein et al. | May 2005 | A1 |
20050102370 | Lin et al. | May 2005 | A1 |
20050102612 | Allan et al. | May 2005 | A1 |
20050108104 | Woo | May 2005 | A1 |
20050108624 | Carrier | May 2005 | A1 |
20050114757 | Sahota et al. | May 2005 | A1 |
20050132043 | Wang et al. | Jun 2005 | A1 |
20050132196 | Dietl | Jun 2005 | A1 |
20050138031 | Wefers | Jun 2005 | A1 |
20050138086 | Pecht-Seibert | Jun 2005 | A1 |
20050138539 | Bravery et al. | Jun 2005 | A1 |
20050149375 | Wefers | Jul 2005 | A1 |
20050160398 | Bjornson et al. | Jul 2005 | A1 |
20050171746 | Thalhammer-Reyero | Aug 2005 | A1 |
20050198086 | Moore | Sep 2005 | A1 |
20050198125 | Beck et al. | Sep 2005 | A1 |
20050198247 | Perry et al. | Sep 2005 | A1 |
20050210263 | Levas et al. | Sep 2005 | A1 |
20050223063 | Chang et al. | Oct 2005 | A1 |
20050223320 | Brintzenhofe et al. | Oct 2005 | A1 |
20050246304 | Knight et al. | Nov 2005 | A1 |
20050262112 | Moore | Nov 2005 | A1 |
20050268222 | Cheng | Dec 2005 | A1 |
20060020586 | Prompt et al. | Jan 2006 | A1 |
20060026534 | Ruthfield et al. | Feb 2006 | A1 |
20060031757 | Vincent, III | Feb 2006 | A9 |
20060036995 | Chickles et al. | Feb 2006 | A1 |
20060041838 | Khan | Feb 2006 | A1 |
20060059107 | Elmore et al. | Mar 2006 | A1 |
20060059434 | Boss et al. | Mar 2006 | A1 |
20060069605 | Hatoun | Mar 2006 | A1 |
20060069985 | Friedman et al. | Mar 2006 | A1 |
20060080657 | Goodman | Apr 2006 | A1 |
20060085409 | Rys et al. | Apr 2006 | A1 |
20060101037 | Brill et al. | May 2006 | A1 |
20060101051 | Carr et al. | May 2006 | A1 |
20060129583 | Catorcini et al. | Jun 2006 | A1 |
20060129978 | Abriani et al. | Jun 2006 | A1 |
20060143220 | Spencer | Jun 2006 | A1 |
20060161559 | Bordawekar et al. | Jul 2006 | A1 |
20060173865 | Fong | Aug 2006 | A1 |
20060200754 | Kablesh et al. | Sep 2006 | A1 |
20070036433 | Teutsch et al. | Feb 2007 | A1 |
20070050719 | Lui et al. | Mar 2007 | A1 |
20070061467 | Essey et al. | Mar 2007 | A1 |
20070061706 | Cupala et al. | Mar 2007 | A1 |
20070074106 | Ardeleanu et al. | Mar 2007 | A1 |
20070094589 | Paoli et al. | Apr 2007 | A1 |
20070100877 | Paoli et al. | May 2007 | A1 |
20070101280 | Paoli et al. | May 2007 | A1 |
20070118803 | Walker et al. | May 2007 | A1 |
20070130504 | Betancourt et al. | Jun 2007 | A1 |
20070186157 | Walker et al. | Aug 2007 | A1 |
20070208606 | MacKay et al. | Sep 2007 | A1 |
20070208769 | Boehm et al. | Sep 2007 | A1 |
20080028340 | Davis | Jan 2008 | A1 |
Number | Date | Country |
---|---|---|
0 841 615 | May 1998 | EP |
0 961 197 | Dec 1999 | EP |
1 076 290 | Feb 2001 | EP |
1221661 | Jul 2002 | EP |
63085960 | Apr 1988 | JP |
401173140 | Jul 1989 | JP |
3191429 | Aug 1991 | JP |
4225466 | Aug 1992 | JP |
5314152 | Nov 1993 | JP |
406014105 | Jan 1994 | JP |
6139241 | May 1994 | JP |
6180697 | Jun 1994 | JP |
6180698 | Jun 1994 | JP |
2000132436 | May 2000 | JP |
2002183652 | Jun 2002 | JP |
2003173288 | Jun 2003 | JP |
WO 9924945 | May 1999 | WO |
WO 9956207 | Nov 1999 | WO |
WO 0144934 | Jun 2001 | WO |
WO0157720 | Sep 2006 | WO |
Number | Date | Country | |
---|---|---|---|
20040193661 A1 | Sep 2004 | US |