Method and system for animating graphical user interface elements via a manufacturing/process control portal server
Claim Score by NHIP
Abstract
A method and system are disclosed for rendering animated graphics on a browser client based upon a stream of runtime data from a manufacturing/process control system. The graphics animation is based upon an animated graphic display object specification and runtime data from a portal server affecting an appearance trait of the animated graphic display object. The client browser receives an animated graphics description from the portal server specifying an animation behavior for an identified graphical display object. The client creates a data exchange connection between an animated display object, corresponding to the animated graphics description, and a source of runtime data from the portal server affecting display of the animated display object. Thereafter, the client applies runtime data received from the source of runtime data to the animated display object to render an animated graphic display object.

Term
Term ended
Projected expiry passed 24 January 2023, 3.7 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
4 claims: 1 independent, 3 dependent
- 1Broadest claimClaim Score 51, average(NHIP)A method for generating and displaying animated graphics on a browser client based upon an animated graphic display object specification and runtime data from a portal server affecting an appearance trait of the animated graphic display object, the method comprising the steps of:receiving, by the browser client, an animated graphics description from the portal server, the description specifying an animation behavior for an identified graphical display object;creating a connection between an animated display object, corresponding to the animated graphics description, and a source of runtime data from the portal server affecting display of the animated display object;and applying runtime data received from the source of runtime data to the animated display object to render an animated graphic display object.
85 paragraphs in 6 sections, as filed
CROSS REFERENCE TO RELATED APPLICATION
[0001] This application claims priority of Forney et al. U.S. provisional application Serial No. 60/232,733 filed on Sep. 15, 2000, entitled “Extensible Manufacturing Portal Server,” the contents of which are expressly incorporated herein by reference in their entirety including the contents and teachings of any references contained therein.
FIELD OF THE INVENTION
[0002] The present invention generally relates to the field of computer graphics user interfaces. More particularly, the present invention relates to methods for graphically displaying plant floor information. The present invention concerns methods and systems for animating graphical user interface display elements in response to changing sensed conditions within a manufacturing/process control system as evidenced by data received via a network connected to the graphics animation system (e.g., Internet/intranet) portal server.
BACKGROUND OF THE INVENTION
[0003] Significant advances in industrial process control technology have vastly improved all aspects of factory and plant operation. Before the introduction of today's modern industrial process control systems, industrial processes were operated/controlled by humans and rudimentary mechanical controls. As a consequence, the complexity and degree of control over a process was limited by the speed with which one or more people could ascertain a present status of various process state variables, compare the current status to a desired operating level, calculate a corrective action (if needed), and implement a change to a control point to affect a change to a state variable.
[0004] Improvements to process control technology have enabled vastly larger and more complex industrial processes to be controlled via programmed control processors. Control processors execute control programs that read process status variables, execute control algorithms based upon the status variable data and desired set point information to render output values for the control points in industrial processes. Such control processors and programs support a substantially self-running industrial process (once set points are established).
[0005] Notwithstanding the ability of industrial processes to operate under the control of programmed process controllers at previously established set points without intervention, supervisory control and monitoring of control processors and their associated processes is desirable. Such oversight is provided by both humans and higher-level control programs at an application/human interface layer of a multilevel process control network. Such oversight is generally desired to verify proper execution of the controlled process under the lower-level process controllers and to configure the set points of the controlled process.
[0006] Various data input/output servers, including for example data access servers, facilitate placing process control data (both reading and writing) within reach of a variety of higher-level monitor/control client applications. During the course of operation, process controllers generate status and control information concerning associated processes. The controllers' process status and control information is stored within process control databases and/or distributed to a number of locations within the process control network. Other process information is generated/stored within field devices (e.g., intelligent transmitters) having digital data communication capabilities. The process information is retrieved from the process control databases and field devices by data access servers for further processing/use by the process control system. For example, the data access servers provide the retrieved information to a variety of client applications providing high-level control and monitoring (both human and computerized) services.
[0007] In systems containing data input/output servers, the high-level control and monitoring applications rely upon the proper operation of the servers to provide the data upon which such applications rely for decision-making. The information includes real-time process variable values, alarms, etc. Data input/output servers are implemented in a number of forms. In some systems, a single data access server operates upon a single node on a computer network from which higher level supervisory control is implemented. In other systems, multiple data access servers are located upon a local area network, and the multiple data access servers are accessed by supervisory-level applications running on other nodes on a local control network. In yet other systems, access to process control information/resources is achieved via temporary sessions established via a wide area network link. One particular example is data access provided via an Internet/intranet portal server.
[0008] A portal site is an Internet/intranet site that provides access to a variety of information from potentially many sources. Portal sites, referred to as vertical portals, are sometimes designed to provide access to a particular type of information. Portal servers handle user traffic at portal sites and provide user access over the Internet/intranet to the variety of data sources exposed by the portal site. Such users generally access the portal site via remote computers executing general browser software such as the well known MICROSOFT INTERNET EXPLORER. Through the browsers the users access the data sources exposed by the portal site/server.
[0009] Portal servers provide a wide variety of services. One example of such services is “content accessibility” that facilitates connectivity to information sources and/or content providers. Content includes: online documents, libraries, databases, and government documents. Such content can be located over a wide geographic area, but are connected via a network structure (e.g., the Internet). Another example of portal services is a search engine that enables users to locate particular information within a vast amount of available content. A portal server often maintains an index to enhance performance of searches. Another portal service is visualization of available services (e.g., displaying various features available to users). An aspect to visualization is displaying documents and information retrieved at the request of a user. Yet another portal server function is providing access to plant information for users from many parts of the world via the World Wide Web in the users' language. Such access includes both domestic and foreign users. A last example of a portal function is support for personalization. A portal is used by many different people for many purposes. Portal servers store user profile information to enhance user experiences.
[0010] An advantage of a portal server approach to accessing process control information/resources is the ability of users to gain access from virtually any location in the world. Such access enables specialists (both human and programmed) to obtain access to and provide supervisory services without having to be physically present on the manufacturing/industrial plant. Such accessibility can save an enterprise considerable time and costs, and avoid travel delays. Wide area network access of the type supported by a portal server also enables centralized, coordinated and highly integrated control of an enterprise spread over a relatively wide geographic area. Notwithstanding the significant benefits of providing Web access to a process control network, significant challenges are faced with regard to obtaining and displaying potentially large amounts of real-time manufacturing/process control information in a meaningful way for a user. The incorporation of portal servers into process control systems has greatly increased the reachability of process control/plant floor status information.
[0011] However, a challenge remains in portal server design for manufacturing/real-time process control applications to present the data, now available over the Worldwide Web in a manner that is useful and meaningful to the recipient. To this end, the portal must provide the data in near real-time, and the data must also be presented in a form such that potentially large amounts of status information can be taken in by the recipient to make quick decisions. Finally, the information must be readily processed by thin, browser-based clients.
SUMMARY OF THE INVENTION
[0012] The present invention offers a new display manufacturing/real-time process information in a manner that is readily digested by humans such as process control engineers and plant supervisors. In particular, a method and system are disclosed for rendering animated graphics on a browser client based upon a stream of runtime data from a manufacturing/process control system. The graphics animation is based upon an animated graphic display object specification and runtime data from a portal server affecting an appearance trait of the animated graphic display object. The client browser receives an animated graphics description from the portal server specifying an animation behavior for an identified graphical display object. The client creates a data exchange connection between an animated display object, corresponding to the animated graphics description, and a source of runtime data from the portal server affecting display of the animated display object. Thereafter, the client applies runtime data received from the source of runtime data to the animated display object to render an animated graphic display object.
[0013] In a particular embodiment of the invention, the graphics display behavior of an animated graphical display object is rendered in XML thereby providing a platform independent code base upon which the graphical animation components execute.
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] The appended claims set forth the features of the present invention with particularity. The invention, together with its objects and advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings of which:
[0015]FIG. 1 is a schematic drawing depicting an exemplary process control environment for the present invention wherein a manufacturing/process control network includes a portal server that provides a variety of portal services including displays of manufacturing processes enhanced by animated graphics to browser clients;
[0016]FIG. 2 is a schematic drawing depicting primary components of a client-side graphics animation engine that generates animated graphics images from a set of image items including an animation behavior definition and a stream of data for animating the set of image items provided by an Internet server;
[0017]FIG. 3 depicts a set of mapping components and their associated structures maintained by a data exchange component for animated graphical display objects in accordance with an embodiment of the present invention;
[0018]FIG. 4 is a flowchart summarizing a set of exemplary steps for setting up a runtime database graphics animation engine data exchange component to accept runtime data from a portal server and forward the data to an animation component to generate displayed graphical interface objects;
[0019]FIG. 5 is an exemplary simple binding table structure for representation of animation behaviors on graphical display objects;
[0020]FIG. 6 is a sequence diagram summarizing a set of steps performed by a system embodying the present invention to initialize and then execute animation in response to changes to tag values from a runtime system; and
[0021]FIGS. 7<i>a </i>and <b>7</b><i>b </i>are a chart summarizing a set of graphics animation behaviors supported by a system embodying the present invention.
DETAILED DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT
[0022] An exemplary manufacturing/process control information rendering system incorporating the present invention provides real-time animation of graphical interface objects representing the status of components within an automated process control system. The information rendering system facilitates visualization, publishing and management components for a manufacturing/process control portal accessed from a broad range of locations via an appropriately augmented browser.
[0023] The present invention is, by way of example, carried out using XML/XSL and VML programming languages. In the exemplary embodiment of the present invention, XML (extensible markup language) and XSL (extensible stylesheet language) are used to describe data transmitted from a portal server to a browser over the Internet or a corporate intranet and how the data should be displayed by the browser. VML (Vector Markup Language) is an open text-based language for describing renderable vector-graphics elements and primitives to a browser (e.g., Internet Explorer). The VML generates a set of instructions to a browser rendering engine to paint graphics based upon the input XML/XSL instructions.
[0024] The animated graphics are designed for satisfactory performance on Internet-connected browser based clients. In view of the potential bandwidth limitations of Internet connections, the graphics information is transmitted in a compact, encoded manner. While typical animated graphics comprise large files that are relatively slow to download, an embodiment of the present invention converts graphics windows and associated animation into extensible markup language (XML) definitions, applying an extensible style language (XSL) translation, and rendering vector markup language (VML) on the fly at the client (browser) machine. Structures are maintained on the client machine that attach animated graphics to data sources that control their animation. Client-side rendering of animated graphics from the above-described XML input substantially reduces the amount of information transmitted between the manufacturing/process control information portal and remotely connected browser clients.
[0025] The process of creating and displaying such animated graphics comprises, by way of example, the following general steps. First, process graphics are created having real time data sources and information connecting the real time data to an animation behavior of the graphics. A utility program converts the graphical images to an XML format and publishes them to a portal server coupled to a manufacturing/process control system. When a client-browser connects to the portal server, XML and XSL components are downloaded to the client. The client applies VML technology to the downloaded XML and XSL to render initial images and to make connections to sources of live manufacturing/process control data that will drive animation of the graphical images. Thereafter, the client-browser receives real-time process data relayed from the plant floor system by the portal server and applies the data to the XML and XSL graphical display object definitions to render animation that reflects the changing conditions/status of the manufacturing/process control system.
[0026] The above-described real-time data driven graphics animation scheme embodies a number of attractive features. One such feature is the ease with which graphical images can be changed by interface developers through addition and/or modification of XML/XSL descriptions. Another attractive feature is the ability to render real-time graphics animation for a manufacturing/process control system by means of data transmitted over wide-area network links having limited bandwidth capabilities. The present invention enables connection, via a client-browser program, to a portal server that provides access to real-time process data. The real-time process data is connected to particular animated graphical display objects and drives animation behaviors for the displayed objects. The rendering of the actual graphical display image data occurs at the client-browser. Thereby greatly reducing the volume of data flowing over the connection between the client-browser and the portal server. Yet another feature of the present invention is relatively small web page size which facilitate fast initial animated page load times.
[0027] Turning to FIG. 1, an exemplary portal server arrangement is schematically depicted. A portal server <b>10</b> provides portal services to a manufacturing/process control environment. That environment consists of a database server <b>20</b> and a data access server <b>30</b>. The data access server <b>30</b> in turn connects to process control equipment <b>40</b>. The portal server <b>10</b> provides its services to browser clients at locally connected workstations <b>50</b> and, via the Internet <b>60</b> or a proprietary network, at remote work stations <b>70</b>.
[0028] Turning to FIG. 2, an exemplary portal server to browser client animated graphics rendering scheme is depicted. A portal server <b>100</b> receives and provides process graphics <b>102</b> (the underlying XML/XSL files defining an animated graphical display) as well as real time data <b>104</b> representing process parameters. The real time data <b>104</b> drives the animation of the process graphics <b>102</b> according to behaviors defined in the process graphics <b>102</b>. Both the process graphics <b>102</b> and the real time data are discussed further herein below.
[0029] The portal server <b>100</b> stores the process graphics <b>102</b> within a file system in anticipation of requests from browser clients. A browser client <b>106</b> issues a request for access to a particular graphical process display that includes animated display objects. An example of such a display is a set of storage tanks and mixing bins in an automated baking/food preparation facility. The browser client <b>106</b> receives the above mentioned process graphics <b>102</b> and thereafter receives a stream of real-time data updates from the portal server based upon updates to the real time process data <b>104</b>.
[0030] A data exchange component <b>110</b> of the browser client <b>106</b> is responsible for receiving requested animated displays and maintaining a set of structures linking input real-time update information to the displayed animated objects to drive the animation of the displayed objects. In an embodiment of the invention, is a client side COM (common object model) object that interacts with a client-side runtime database (RDB) component and a set of associated user interface animation objects. The runtime database component notifies the data exchange component <b>110</b> about changes to tags associated with the user interface animation objects. The data exchange <b>110</b> then notifies the animation objects of the changes. Alternatively, animation objects receive changes based upon user input (e.g., selecting a graphical user interface button). Data entered by the user is passed through the data exchange component back to the runtime database component. The runtime database component then updates the appropriate tag on the data server with the new value.
[0031] Animated display code generated for an animated display window will contain information binding data from a runtime database component to an animation behaviors component of a display item. The data exchange component <b>110</b> executes the binding (or association) of the runtime data to the display item. To accomplish this task, the data exchange component <b>110</b> parses XML tables in an HTML file specifying data sources bound to particular animation behaviors. The data exchange uses this information to initialize internal structures (described herein below) that manage a process for notifying the runtime database and the animated display items in response to value changes tied to an animation display behavior. Display behaviors are bound directly to tags or, alternatively they can also be bound to expressions. The data exchange component <b>110</b> is responsible for recalculating expression values if any tag in an expression changes. Furthermore, the data exchange component <b>110</b> provides a visual indicator that a connection is still active, even if values are not changing. An example of such an indicator is a status bar with a simple progress indicator that updates every second.
[0032] Each animated display object has a corresponding animation component. In the basic example of a converted display window <b>118</b>, polygon <b>120</b> is linked to animation component <b>122</b>. A rectangle <b>124</b> is linked to animation component <b>126</b>. Each of the animation components <b>122</b> and <b>126</b> is linked to a display item maintained by the data exchange component for purposes of receiving display update information corresponding to real-time data received by the data exchange component <b>110</b> from the portal server <b>100</b>.
[0033] In an embodiment of the present invention the animation components <b>122</b> and <b>126</b> perform a role of supplying graphics animation commands (e.g., mimic InTouch animation and touch link behavior) within the context of a browser (e.g., Internet Explorer) web page. The animation component receive graphic display item tag updates from the data exchange component. As mentioned previously above, the data exchange component <b>110</b> receives user initiated data changes to the animated graphical interface display items.
[0034] Each animation component acts as an intermediary between an HTML/VML rendering object (representing some graphical display object) and the data exchange component <b>110</b>. The data exchange component <b>110</b> is notified, during initialization of a view containing animated display objects, with regard to associations between tag(s) and animation behaviors on particular graphical display objects. However, the data exchange component <b>110</b> is not capable of submitting the actual interface commands to execute animation behaviors on the display objects based on a tag changes. Therefore, the data exchange component <b>110</b> calls a method defined by the display object itself to carry out the desired animation behavior. Animation components expose the animation methods of animated display objects. Thus, when the data exchange component <b>110</b> receives notification that a tag value has changed, the data exchange component <b>110</b> calls an animation component established for the associated display object to invoke an animation behavior on the display object based upon the new tag value.
[0035] The following generally describes the creation and attachment of animation components to graphic displayed objects. Animation components are COM objects that implement the interfaces of a binary Internet Explorer HTML Component (HTC). Animation components also implement an event object to receive user input notifications. The animation components also implement an interface supporting script safety with Internet Explorer.
[0036] Each of the animation components is attached to a graphic display element (VML or HTML) by first being loaded as a standard ActiveX object using the <OBJECT> tag, then being referenced in a style named “wwAnim”. The wwAnim style is assigned to a graphical display element's class attribute. The wwAnim style, enables a graphical display element to have animation behavior capabilities, but the wwAnim style reference does not indicate to a graphical interface element the actual animation behaviors incorporated into the element, or the effect of tag changes upon the graphic display element.
[0037] The following describes how an animation behavior is bound and initiated with a graphical display element. First, the animation component is instantiated as a standard ActiveX object within the web page as shown below. <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="252PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry><BODY></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="168PT" align="left" /><tbody valign="top"><row><entry><OBJECT</entry><entry>ID</entry><entry>= wwAnimation</entry></row><row><entry /><entry>CLASSID</entry><entry>= “clsid:D84C9541-D993-11D3-8O2C-00A0C9723245”</entry></row><row><entry /><entry>CODEBASE</entry><entry>= “/SuiteVoyager/_library/bin/SuiteVoyager.cab”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry> </OBJECT></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0038] The above code section does not actually create an instance of the animation component. Rather, the code section creates an Animation Factory object used by the Internet Explorer browser to create an instance of an animation component. If an animation component is not already installed/registered on the web browser machine it will be automatically downloaded from the same web server that the web page came from. This is the purpose of the <OBJECT> element's “CODEBASE” attribute.
[0039] Next, the Animation Factory object is referenced within the wwanim style. <tables id="TABLE-US-00002" num="2"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry><HTML></entry></row><row><entry>...</entry></row><row><entry><style></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>v\:*</entry><entry>{ behavior:url(#default#VML); }</entry></row><row><entry /><entry>.wwanim</entry><entry>{ behavior:url(#default#VML) url (#wwAnimation); }</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry><style></entry></row><row><entry></head></entry></row><row><entry>...</entry></row><row><entry><BODY></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0040] Next, the wwanim style is assigned to each and every graphic display element's class attribute that is to have one or more animation behaviors. This assignment will implicitly make a request to the created Animation Factory object for an instance of an animation behavior object and will bind that animation object to the UI element.
[0041] Note that the animation object is bound to a VML <group> element that contains the graphic display element. This is depicted in the example below. The animation object is not only aware of this arrangement but expects it. <tables id="TABLE-US-00003" num="3"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><thead><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="84PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>...•</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="84PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="175PT" align="left" /><tbody valign="top"><row><entry /><entry> </v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry></V:group></entry></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0042] The first thing that every instance of an animation component object does during initialization is check it's associated element (the group element) for the “ww_behaviorlist” attribute to determine behavior(s) for which it is responsible when a new tag value comes in. For each animation behavior of a graphical display element, there is a separate <behavior> child-element containing the specific behavior attributes that the animation object uses to determine a course of action when a new tag data value is received by the browser. In the example below, the <behavior> element specifies a discrete pushbutton touch link animation behavior that is only for input. Therefore, the animation component will not allow the user to change the value. However, if the animation component is associated with a textbox (which in this instance is not the case), then the on and off messages, “good” and “bad,” are displayed depending on the current value of the associated discrete tag.
[0043] Associating a tag or tag expression with an associated graphic display element animation behavior is now depicted with reference to another example. <tables id="TABLE-US-00004" num="4"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="112PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry>ww_touchlink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="98PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="84PT" align="left" /><tbody valign="top"><row><entry /><entry> id</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry> ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘UserInputDiscrete’</entry></row><row><entry /><entry> ww_VirtKey</entry><entry>= ‘65’</entry></row><row><entry /><entry> ww_cKeyFlags</entry><entry>= ‘0’</entry></row><row><entry /><entry> ww_magToUser</entry><entry>= ‘Here is my message’</entry></row><row><entry /><entry> ww_onMessage</entry><entry>= ‘good’</entry></row><row><entry /><entry> ww_offMessage</entry><entry>= ‘bad’</entry></row><row><entry /><entry> ww_setPrompt</entry><entry>= ‘Open’</entry></row><row><entry /><entry> ww_resetPrompt</entry><entry>= ‘Close’</entry></row><row><entry /><entry> ww_inputOnly</entry><entry>= ‘true’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry></v:group> <!- - rect1 - - ></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0044] The final step for carrying out a defined animation on a graphic display element is to inform the animation component when an associated tag value changes. The mechanism for carrying out such notification is the data exchange component <b>110</b> that is described further herein below. Associations are created between animation components and tags by the data exchange component <b>110</b> by reading a data binding XML table to determine every behavior/tag expression combination as well as graphical display object elements that are to receive the tag change notifications. The following is an example of a binding expression within a binding table structure. A binding expression table contains multiple binding expressions tying various animation behaviors of display elements to tags. <tables id="TABLE-US-00005" num="5"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><thead><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="98PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “UserInputDiscrete”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Discrete_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="112PT" align="left" /><colspec colname="2" colwidth="77PT" align="left" /><tbody valign="top"><row><entry /><entry>ReadWrite</entry><entry> = “true”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="98PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><tbody valign="top"><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="175PT" align="left" /><tbody valign="top"><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="70PT" align="left" /><colspec colname="1" colwidth="56PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “discrete_tag”</entry></row><row><entry /><entry>VarName</entry><entry> = “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="175PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry></BindingExpression></entry></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0045] To facilitate animating graphics, XSL transformation is performed. When XSL transformation of graphical display elements occurs, two actions occur in the generated HTML output that pertains to an animation component. First, for each graphic display element that XSL outputs (e.g., an HTML/VML element) it must also output a separate <behavior> child element for each behavior bound to the graphic display object. The XSL code is aware of the behaviors a graphic display object incorporates because the behaviors are defined in a Window XML file transformed by the XSL code. Each <behavior> child element contains specific attributes that the animation component uses to determine how to process a tag value change. An exemplary set of animation behavior types is described below.
[0046] Second, XSL transformation adds entries to a “data binding table” XML table. In addition to specifying the target element and the tag expression used by the data exchange component, it specifies the correct method on the target display element to achieve the correct behavior when its associated tag expression changes. There is at least one method for each type of animation behavior. In the few cases related to animations based on tag alarms there are no multiple methods to support the alarm animation.
[0047] Having described an exemplary animated graphics architecture embodying the present invention as well as an example of creating and binding animation components to associated tags and display elements, attention is now directed to FIG. 3 that depicts a set of internal components associated with the data exchange component <b>110</b>. The data exchange component <b>110</b> creates an ItemManagerMap to maintain a list of ServerItem objects. Each animated display object tag that is to be monitored will have a ServerItem object in the ItemManagerMap. Another structure, called ExpressionMap, is created by the data exchange <b>110</b> to maintain a set of UIExpression objects. The UIExpression objects are responsible for resolving an expression down to its value and passing it on to an appropriate UIConnection object. (see sections below for details on how this mechanism works) Finally, the data exchange component <b>110</b> creates a ConnectionMap to maintain the above-mentioned UIConnection objects. Each user interface point of notification will have a UIConnection object in the ExpressionMap.
[0048] With reference now to FIG. 3, an ItemManager <b>200</b> provides an interface to a behavior class of the data exchange component <b>110</b>. The ItemManager <b>200</b> performs data-binding during initialization of the data exchange component for a user interface page containing animation behavior tied to runtime data. The ItemManager <b>200</b> wraps the details of populating data-binding structures within the data exchange component <b>110</b> as well as notifying the system of value changes received by runtime database handlers via the portal server <b>100</b>. The ItemManager <b>200</b> holds a mapping of (n) ServerItem objects <b>202</b>.
[0049] Each ServerItem object holds information for a corresponding tag connection to the runtime database component of the real-time graphics animation system. Each of the ServerItem objects <b>202</b> holds a list of one or more pointers to elements of a set of UI Expression objects <b>204</b>. Each of the UIExpression objects <b>204</b> represents an expression that has the particular ServerItem tag. The ServerItem objects <b>202</b>, in an embodiment of the present invention, have a direct link (e.g., a pointer) to a runtime database input/output interface. The direct link enables the ServerItem objects <b>202</b> to directly notify the runtime database of changes to animation behavior. The ServerItem objects <b>202</b> are notified when a change has occurred to a tag. The Server Item objects <b>202</b> store a new value internally and notify every item in their associated collection of UIExpression objects in the set of UIExpression objects <b>204</b> of the value change.
[0050] An ExpressionMgr <b>210</b>, during initialization, ensures that each UIExpression object of the set of UIExpression objects <b>204</b> is created and bound correctly. While ServerItem objects <b>202</b> only hold pointers to the relative expressions, the ExpressionMgr <b>210</b> holds the entire collection of UIExpression objects for the system.
[0051] Each of the set of UIExpression objects <b>204</b> is responsible for recalculating its expression as tags change. UIExpression objects <b>204</b> are notified of changes by ServerItem objects. Each UIExpression object has a list of tag identifiers (one for each tag in the expression). When an update is requested the UIExpression object goes to a ServerItem list and gets the values of all the tags in the expression. The expression is then evaluated and a result is obtained. The UIExpression objects <b>204</b> have a collection of pointers to UIConnection objects <b>212</b>. Each UIConnection object in a UIExpression object's list is notified of the new expression value. It is noted that the use of “n” to denote a set of pointers at several points in FIG. 3 does not indicate that all the object classes have the same number of pointers to the other classes.
[0052] A ConnectionMgr object <b>214</b>, during initialization, ensures that each of the UIConnection objects <b>212</b> is created and bound correctly. While the UIExpression objects <b>204</b> hold a collection of UIConnection object pointers that are interested in changes to expression values, the ConnectionMgr object <b>214</b> holds the entire collection of UIConnection objects for the system.
[0053] The UIConnection objects <b>212</b> are directly bound to an animation behavior interface between the data exchange component <b>110</b> and animation components. When a value or expression changes, a corresponding one of the UIExpression objects <b>204</b> will go through it's list of UIConnection objects and call directly into a dispatch interface to a corresponding animation behavior (component) for an animated display object.
[0054] Having described an exemplary internal structure for the data exchange component <b>110</b>, it is emphasized that the present invention is not intended to be limited to the disclosed structural arrangement. Those skilled in the art will readily appreciate that a variety of internal architectures, including alternative object class definitions, can be incorporated into a data exchange facility incorporated into a runtime graphics animation arrangement incorporating the present invention.
[0055] Turning to FIG. 4, a set of stages are summarized for setting up the data links to facilitate animation of displayed objects on a graphical user interface generated by a browser-client according to a stream of runtime data provided by a portal server to the browser-client. The order in which the stages are executed is merely exemplary. As those skilled in the art will readily appreciate, many of the stages can be reordered without affecting the ultimate state of the established connection information linking the data exchange to both the RDB component and the animation components in the above-described manufacturing/process control real time web-page animation system.
[0056] The actions described herein below are performed, for example, when a web page having animated graphic display objects embodying the present invention is loaded into a browser and the browser loads all COM based objects. At this point, the display objects are ready to be displayed in their initial form on the browser's graphical user interface. Thereafter, during stage <b>300</b> the loaded data exchange component <b>110</b> reads an XML data binding table containing the tag binding information for the user interface objects associated with the loaded page.
[0057] Turning briefly to FIG. 5, an exemplary XML data binding table definition for an animated display is depicted. In the present example, there are three BindingExpressions corresponding to three graphic animation behaviors defined for two different target elements (“rect1” and “rect2”). The information in each of the three BindingExpressions is used by the data exchange component <b>110</b> to establish connections between the data exchange component <b>110</b> structures depicted in FIG. 3 and the runtime database component and the user interface objects (via the animation behavior components). A BehaviorMethod describes a particular type of animation behavior method called to handle a change to a value to a tagged value (e.g., “TankLevel”) associated with a particular binding expression. The TargetElement attribute refers to the name of the HTML element that contains the graphic display element to be animated. The BehaviorMethod attribute refers to the name of the method that is called on the graphic display element when a tag expression is encountered. The TagExpression attribute refers to the tag or tag expression (i.e., programmatic expression) that is evaluated at runtime when a tag changes. The IsExpression attribute informs the data exchange component <b>110</b> whether the TagExpression value is a simple tag value or a tag expression.
[0058] With reference again to FIG. 4, during stage <b>302</b>, the data exchange component <b>110</b> notifies the runtime database component (RDB client object) of tags to watch on the portal server <b>100</b> for purposes of updating the graphical user interface display. This includes animated display objects, but also extends to any display element tag that affects the operation of the loaded web page. The RDB object provides an IRuntimeDB interface to the data exchange component. The IRuntimeDB interface includes an AddItem( ) method used to specify which tags to watch on the server. With regard to the example provided in FIG. 5, in the XML binding table example, each <BindingExpression> section includes a “TargetElement” representing the display interface object and a TagExpression. The TagExpression can be a Tagname or, alternatively, an expression that references one or more tags (or even other expressions).
[0059] During stage <b>302</b>, the Data exchange component <b>110</b> calls the AddItem( ) method on the IRuntimeDB interface, passing several parameters including the Tagname. One of the parameters accepted by the AddItem method is an output parameter allowing the RDB object to provide a pointer to an IOItem interface back to the Data exchange component <b>110</b>. The IOItem interface allows the data exchange component <b>110</b> to “push” values back to the RDB object. Each tag being listened on will have an associated IOItem interface. An ID for each interface is provided by its getID( ) method.
[0060] Also during stage <b>302</b>, the data exchange component <b>110</b> calls a SetItemListener( ) method on IOItem interface provided by the RDB object. The SetItemListener( ) method takes a dispatch interface called IRDBItemListener provided by the data exchange component <b>110</b> and is used by the RDB object to notify the data exchange component <b>110</b> of value changes.
[0061] The data exchange component <b>110</b> implements the IRDBItemListener interface. The RDB object calls the UpdateItem( ) method of the IRDBItemListener interface to notify the data exchange component <b>110</b> of tag changes received via the real-time process data <b>104</b>. An ID number (corresponding to the appropriate IOItem instance) and the new value will be passed in. (see the “New Value from RDB” walkthrough section below). At this point the RDB object is prepared to receive notification of updates made to one or more tag values.
[0062] Next, during stage <b>304</b> the data exchange component creates its connections to the animated user interface display objects via animation components. As mentioned previously herein above, the data exchange component <b>110</b> creates a private structure to maintain a list of ServerItem objects. This structure is referred to as an ItemManagerMap. Another private structure called ExpressionMap is created by the data exchange component <b>110</b> to maintain UIExpression objects. Finally, a ConnectionMap maintains UIConnection objects.
[0063] Each tag that is to be monitored has a ServerItem object in the ItemManagerMap. Each user interface object point of notification has a UIConnection object in the Expression Manager. The UIExpression objects are responsible for resolving an expression down to its value and passing it on to the appropriate UIConnection objects.
[0064] Next, during stage <b>306</b>, the data exchange component <b>110</b> populates its internal structures created during step <b>304</b>. In particular, for each tag to be listened on, there is a ServerItem object created in the ItemManagerMap. The RDB object provides a TagId value assigned to each ServerItem object. The XML data binding table provides information for one or more UIExpression and UIConnection objects added to their respective map structures. Each ServerItem object has at least one expression. An m_key within each UIconnection object contains a unique number generated by the data exchange component <b>110</b>. A *p_UpdateUIObject value for each UIconnection object is provided by a corresponding graphical display object. A *p_IOItem value for each ServerItem object is provided by the RDB object.
[0065] Next, during stage <b>308</b>, each animated graphical display behavior is wired to a corresponding runtime database tag. In particular, with regard to enabling a new RDB object value to affect an animation behavior of a display object, each UIConnection entry contains a reference to a UIObject as well as a behavior method. When the RDB object provides a new value to the data exchange component <b>110</b>, that value will be passed as a parameter to a call of the corresponding graphical display object's animation behavior method. Each UIConnection entry will contain an IDispatch pointer to a graphical interface object as well as a behavior method DispID (dispatch ID). When a new value comes from the RDB object that value will be passed as a parameter in the method call via a call to the graphical interface object's IDispatch.Invoke method using the cached behavior method's dispatch ID.
[0066] With regard to enabling a connection from a graphical interface object to a corresponding tag in the RDB object, at the same time that the UIConnection entry is setup a call to a method on the UIObject (SetDataExchange) is made so that a graphical display object to data exchange component <b>110</b> connection can be made. When a graphical display object changes a value the graphical display object to data exchange connection is used to communicate the change back to the RDB object. In particular, at the same time that the UIConnection entry is set up a call to a graphical display object's SetDataExchange method is made so that a graphical display object to data exchange component <b>110</b> connection can be made. The SetDataExchange method is passed a unique key value and an IUpdateServer interface that points back to the data exchange component <b>110</b>'s single instance of an IUpdateServer COM object. When a graphic display object changes a value, the IUpdateServer interface is used to communicate the change (ultimately) back to the RDB object using the unique key value cached from the call to the SetDataExchange.
[0067] Turning now to FIG. 6 a sequence diagram summarizes a set of steps for initializing and then executing a real-time graphics animation system embodying the present invention. The intention of this description is to provide a more generalized description of the systematic creation of objects supporting real-time animation of a manufacturing/process control view via a browser connection to a web server. This view helps to visualize the interdependence of various created objects that is less evident in the previous flowchart.
[0068] During step <b>400</b> a browser (e.g., Internet Explorer 5.0) client requests the portal server <b>100</b> to download a particular manufacturing/process control page containing animated graphical display objects whose animation behavior is determined by a set of tagged values maintained by a runtime database. During step <b>402</b> the portal server <b>100</b> passes the requested web page to the requesting browser client.
[0069] The browser, based upon the downloaded web page, creates an instance of an animation factory object during step <b>404</b>. The animation factory object is a COM object that includes interfaces known by MICROSOFT's INTERNET EXPLORER. Animation factory objects create instances of identified animation COM objects for performing specified animation methods. Next, at step <b>406</b> the browser creates an instance of a data exchange factory that is executed to create the data exchange COM object component. Next, at step <b>408</b> the browser calls the animation factory object to create animation COM objects for each graphical interface object of a class that supplies an animation behavior. Next, during step <b>410</b>, the newly created objects are bound and initialized on their corresponding graphical interface objects. Thereafter, at step <b>412</b> the animation objects read their corresponding animation behavior attributes to establish an initial animation display state.
[0070] Having initialized the graphic display object animation behavior components, at step <b>414</b> the browser calls upon the data exchange factory to build a data exchange component <b>110</b> and populate its structures based upon the animation component objects created and bound for the graphic display objects during the previous initialization steps. After creating the data exchange component <b>110</b>, during step <b>416</b> the browser executes a call on the data exchange component <b>110</b> to commence initializing its connection structures. However, before such connections can be created, the data exchange component <b>110</b> during step <b>418</b> issued a call to create an RDB client object that communicates with the portal server <b>100</b> to obtain updated tag values affecting graphic display object animation behavior. During steps <b>420</b> and <b>422</b> the data exchange component <b>110</b> reads the tag binding table and adds corresponding tag entries to the RDB client object. After initializing the RDB client object, the data exchange component issues a start call to the RDB client object to initiate its tracking of changes to data corresponding to the tags established during step <b>422</b>. Such changes are obtained, by way of example, during step <b>426</b> wherein the RDB client object queries a runtime database maintained by the portal server that contains real-time manufacturing/process control system operation information corresponding to the defined animation components.
[0071] If a tagged value has changed, then the portal server provides the new value to the RDB client object during step <b>428</b>. In turn, during step <b>430</b> the RDB client object issues a tag change notification to the data exchange component. More particularly, the RDB client object calls the UpdateItem( ) method of the IRDBItemListener interface that was provided to it by the data exchange component during the above-described wiring process between these two components. An ID (representing the specific tag) and the new value are passed as parameters. The implementation of the UpdateItem( ) method is in the data exchange. This method will add the item to the DataExchange queue. If a value for the same ID is already in the queue then it will be replaced with the new value. Alternatively, the values are sent sequentially to avoid violation of standard queue protocols.
[0072] Thereafter, during step <b>432</b> a thread in the data exchange component <b>110</b> pops an updated ID off the queue containing the changed value. The data exchange component searches the ItemManagerMap looking for a ServerItem with a matching ID value. The m_value data member will be set with the new value from the de-queued item. Thereafter, each affected UIExpression in the m_ExpressionMap will be passed the new value. The affected UIExpression objects will evaluate the expression once and call the NewValue( ) method of each UIConnection object associated with the particular UIExpression object during step <b>432</b>. The receiving graphical display object animation components will update their corresponding graphical display objects based upon the received values and an animation behavior definition.
[0073] The above example considers an expressions having a single tag. However, the XML data binding table may have an multi-part expression that consists of more then a simple Tagname. During the wiring process this expression is parsed and one ServerItem exists in the ItemManagerMap for each Tagname that is used in the expression. Furthermore, there is only one UIExpression object for the expression. The UIExpression object will have its m_isExpression data member set to true. The m_ExpressionMap for each ServerItem in the expression has a pointer to the same UIExpression point. By doing this the UIExpression object is notified if any part of the expression is changed. Before the NewValue( ) method is called the UIExpression passes the expression through an expression evaluation method to obtain the calculated value. This value will be passed as a NewValue parameter. No user updates will be allowed on expression based graphic display objects.
[0074] Alternatively to changes originating from the portal server, a human can change a value for a graphic display object via touch links (mouse click or keyboard). In response, the UI object calls the SetValue method of the IUpdateServer interface (provided to it by the data exchange component <b>110</b> during the wiring process). The UIConnection Key value (m_key) and the new value are passed in. The DataExchange searches the ExpressionMap for the UIConnection with the matching key. PokeValue is called on the IOItem interface reference in the UIConnection object. The RDB client object updates the portal server with the new value.
[0075] Turning to FIG. 7 an exemplary set of animation behaviors are depicted. The animation behaviors' corresponding XSL transformation output used by an animation component at runtime or during initialization are described herein below. <tables id="TABLE-US-00006" num="6"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>500 User Inputs - Discrete</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_touchlink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry> ww_type</entry><entry> = ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘UserInputDiscrete’</entry></row><row><entry /><entry> ww_VirtKey</entry><entry> = ‘65’</entry></row><row><entry /><entry> ww_cKeyFlags</entry><entry> = ‘0’</entry></row><row><entry /><entry> ww_msgToUser</entry><entry> = ‘Here is my message’</entry></row><row><entry /><entry> ww_onMessage</entry><entry> = ‘good’</entry></row><row><entry /><entry> ww_offMessage</entry><entry> = ‘bad’</entry></row><row><entry /><entry> ww_setPrompt</entry><entry> = ‘Open’</entry></row><row><entry /><entry> ww_resetPrompt</entry><entry> = ‘Close’</entry></row><row><entry /><entry> ww_inputOnly</entry><entry> = ‘true’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “UserInputDiscrete”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Discrete_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry>= “true”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><EspressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="70PT" align="left" /><colspec colname="1" colwidth="35PT" align="left" /><colspec colname="2" colwidth="175PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “discrete_tag”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>502 User Inputs - Analog</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_touchliink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry>ww_format</entry><entry>= ‘Value = ###.00.’ // Only appears for Text and Button objects</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘UserInputAnalog’</entry></row><row><entry /><entry>ww_VirtKey</entry><entry>= ‘65’</entry></row><row><entry /><entry>ww_cKeyFlags</entry><entry>= ‘0’</entry></row><row><entry /><entry>ww_msgToUser</entry><entry>= ‘Here is my message’</entry></row><row><entry /><entry>ww_inputOnly</entry><entry>= ‘true’</entry></row><row><entry /><entry>ww_minAnalogValue</entry><entry>= ‘—100.0’</entry></row><row><entry /><entry>ww_maxAnalogValue</entry><entry>= ‘100.0’</entry></row><row><entry /><entry>ww_keyPadEnabled</entry><entry>= ‘false’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “UserInputAnalog”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Analog_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry>= “true”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="203PT" align="left" /><tbody valign="top"><row><entry>IsEspression</entry><entry>= “false”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="35PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “TankLevel.LoStatus”</entry></row><row><entry /><entry>VarName</entry><entry> = “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>504 User Inputs - String</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object</entry></row><row><entry /><entry>ww_touchlink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘UserInputString’</entry></row><row><entry /><entry>ww_VirtKey</entry><entry>= ‘65’</entry></row><row><entry /><entry>ww_cKeyFlags</entry><entry>= ‘0’</entry></row><row><entry /><entry>ww_msgToUser</entry><entry>= ‘Here is my message’</entry></row><row><entry /><entry>ww_inputOnly</entry><entry>= ‘true’</entry></row><row><entry /><entry>ww_keyPadEnabled</entry><entry>= ‘false’</entry></row><row><entry /><entry>ww_charEchoEnabled</entry><entry>= ‘true’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “UserInputString”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “String_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry>= “true”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “string_tag”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>506 Slider - Vertical</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_SliderVertical</entry><entry>= ‘rect1_SliderVertical’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_SliderVertical”</entry></row><row><entry /><entry>title</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>style</entry><entry>= “position:absolute;...;margin-left:170px”></entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_SliderVertical’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘ww_SliderVertical’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘SliderVertical’</entry></row><row><entry /><entry>ww_anchor</entry><entry>= ‘top’</entry></row><row><entry /><entry>ww_atTop</entry><entry>= ‘200.000000’</entry></row><row><entry /><entry>ww_atBottom</entry><entry>= ‘100.000000’</entry></row><row><entry /><entry>ww_up</entry><entry>= ‘0.000000’</entry></row><row><entry /><entry>ww_down</entry><entry>= ‘125.000000’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “SliderVertical”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Analog_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry>= “true”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “Tank1_Level”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>508 Slider - Horizontal</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_SliderHorizontal</entry><entry>= ‘rect1_SliderHorizontal’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_SliderHorizontal”</entry></row><row><entry /><entry>style</entry><entry>= “position:absolute;..;margin-top;50px”></entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_SliderHorizontal’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘SliderHorizontal’</entry></row><row><entry /><entry>ww_anchor</entry><entry>= ‘left’</entry></row><row><entry /><entry>ww_atLeftEnd</entry><entry>= ‘0.000000’</entry></row><row><entry /><entry>ww_atRightEnd</entry><entry>= ‘100.000000’</entry></row><row><entry /><entry>ww_toLeft</entry><entry>= ‘0.000000’</entry></row><row><entry /><entry>ww_toRight</entry><entry>= ‘200.000000’</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “SliderHorizontal”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Analog_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry>= “true”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “Tank1_Temperature”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>510 Touch Pushbuttons - Discrete</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_touchlink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘PushbuttonDiscrete’</entry></row><row><entry /><entry>ww_VirtKey</entry><entry>= ‘65’</entry></row><row><entry /><entry>ww_cKeyFlags</entry><entry>= ‘0’</entry></row><row><entry /><entry>ww_DiscreteAction</entry><entry>= ‘toggle’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “PushbuttonDiscrete”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Discrete_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry>= “true”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “discrete_tag”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="center" /><tbody valign="top"><row><entry>512 Touch Pushbuttons - Action (Script)</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_touchlink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘PushbuttonAction’</entry></row><row><entry /><entry>ww_isOnKeyDown</entry><entry>= ‘true’</entry></row><row><entry /><entry>ww_stmtOnKeyDown</entry><entry>= ‘rect1_OnKeyDownScript( ) ;’</entry></row><row><entry /><entry>ww_isWhileDown</entry><entry>= ‘true’</entry></row><row><entry /><entry>ww_stmtWhileDown</entry><entry>= ‘rect1_OnWhileDownScript ( ) ;’</entry></row><row><entry /><entry>ww_whileFreq</entry><entry>= 0</entry></row><row><entry /><entry>ww_isOnKeyUp</entry><entry>= ‘false’</entry></row><row><entry /><entry>ww_stmtOnKeyUp</entry><entry>= ‘rect1_OnKeyUpScript ( ) ;’</entry></row><row><entry /><entry>ww_VirtKey</entry><entry>= ‘65’</entry></row><row><entry /><entry>ww_cKeyFlags</entry><entry>= ‘0’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="280PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry namest="1" nameend="1" align="left"><!--footnotes removed--></entry></row></tbody></tgroup></table></tables>
[0076]<tables id="TABLE-US-00007" num="7"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>514 Touch Pushbuttons - Show Window</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="126PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_touchlink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="98PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="84PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><tbody valign="top"><row><entry /><entry> id</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry> ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘PushbuttonShowWindow’</entry></row><row><entry /><entry> ww_windowName</entry><entry>= ‘Plant Floor 1’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0077] The affect of invoking this Show Window Touch Link is that a script will be created and executed that will contain a call to a global Show( ) function.
[0078] There will not be an entry in the Data Binding Table for this behavior. <tables id="TABLE-US-00008" num="8"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="301PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>516 Touch Pushbuttons - Hide Window</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="301PT" align="left" /><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="210PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_touchlink</entry><entry>= ‘rect1_touchlink’</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_touchlink”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="168PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="273PT" align="left" /><tbody valign="top"><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="168PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_touchlink’</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="70PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="168PT" align="left" /><tbody valign="top"><row><entry /><entry>ww_type</entry><entry>= ‘wwtouchlink’</entry></row><row><entry /><entry>ww_actionType</entry><entry>= ‘PushbuttonCloseWindow’</entry></row><row><entry /><entry>ww_windowName</entry><entry>= ‘www.webserver.com/windowset1/window001.htm’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="273PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="287PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="301PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0079] The affect of invoking this Hide Window Touch Link is that a script will be created and executed that will contain a call to a global Hide( ) function. The Hide( ) function closes the active popup window (dialog) or goes to the previous web page if its done in the active web page. In other words it ignores the window name. There will not be an entry in the Data Binding Table for this behavior. <tables id="TABLE-US-00009" num="9"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>518, 526, 534 Line, Text and Fill Color - Discrete</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry>*** Replace the XXX with Line, Text or Fill.</entry></row><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘WWRectangle’</entry></row><row><entry /><entry>ww_fill</entry><entry>= ‘rect1_fill’</entry></row><row><entry /><entry>ww_stroke</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_XXXcolor</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_XXXcolor”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="98PT" align="left" /><colspec colname="2" colwidth="140PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry> = ‘rect1_object’</entry></row><row><entry /><entry>stroke</entry><entry>= ‘true’</entry></row><row><entry /><entry>strokeweight</entry><entry> = ‘1px’</entry></row><row><entry /><entry>strokecolor</entry><entry> = ‘rgb (0,0,0)’</entry></row><row><entry /><entry>fill</entry><entry> = ‘true’</entry></row><row><entry /><entry>fillcolor</entry><entry> = ‘rgb (255,255,131)’></entry></row><row><entry /><entry><v:stroke</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="119PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>dashstyle</entry><entry>= ‘solid’/></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="105PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwXXXcolor’ ***</entry></row><row><entry /><entry>ww_actiontype</entry><entry>= ‘XXXColorDiscrete’ ***</entry></row><row><entry /><entry>ww_colorOn</entry><entry>= ‘rgb (255,0,0)’</entry></row><row><entry /><entry>ww_colorOff</entry><entry>= ‘rgb (0,255,0)’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry>>BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="119PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “XXXColorDiscrete” ***</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Discrete_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry> = “false”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “discrete_tag”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="center" /><tbody valign="top"><row><entry>520, 528, and 536 Line, Text and Fill Color - Analog</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry>*** Replace the XXX with Line, Text or Fill.</entry></row><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="119PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_fill</entry><entry>= ‘rect1_fill’</entry></row><row><entry /><entry>ww_stroke</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_XXXcolor</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_XXXcolor”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>stroke</entry><entry>= ‘true’</entry></row><row><entry /><entry>strokeweight</entry><entry>= ‘1px’</entry></row><row><entry /><entry>strokecolor</entry><entry>= ‘rgb (0,0,0)’</entry></row><row><entry /><entry>fill</entry><entry>= ‘true’</entry></row><row><entry /><entry>fillcolor</entry><entry>= ‘rgb (255,255,131)’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry><v:stroke</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="70PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="119PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>dashstyle</entry><entry>= ‘solid’/></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="84PT" align="left" /><colspec colname="1" colwidth="182PT" align="left" /><tbody valign="top"><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="98PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="105PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwXXXcolor’ ***</entry></row><row><entry /><entry>ww_actiontype</entry><entry>= ‘XXXColorAnalog’ ***</entry></row><row><entry /><entry>ww_breakpoint1</entry><entry>= 20</entry></row><row><entry /><entry>ww_breakpoint2</entry><entry>= 40</entry></row><row><entry /><entry>ww_breakpoint3</entry><entry>= 50</entry></row><row><entry /><entry>ww_breakpoint4</entry><entry>= 70</entry></row><row><entry /><entry>ww_color1</entry><entry>= ‘rgb (255,0,0)’</entry></row><row><entry /><entry>ww_color2</entry><entry>= ‘rgb (0,255,0)’</entry></row><row><entry /><entry>ww_color3</entry><entry>= ‘rgb (255,0,0)’</entry></row><row><entry /><entry>ww_color4</entry><entry>= ‘rgb (255,0,0)’</entry></row><row><entry /><entry>ww_color5</entry><entry>= ‘rgb (255,0,0)’></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “XXXColorAnalog” ***</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “Analog_tag”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry> = “false”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="210PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="84PT" align="left" /><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “TankLevel”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="210PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="center" /><tbody valign="top"><row><entry>522, 530 and 538 Line, Text and Fill Color - Discrete Alarm</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry>*** Replace the XXX with Line, Text or Fill.</entry></row><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="119PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘WWRectangle’</entry></row><row><entry /><entry>ww_fill</entry><entry>= ‘rect1_fill’</entry></row><row><entry /><entry>ww_stroke</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_XXXcolor</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_XXXcolor”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>stroke</entry><entry>= ‘true’</entry></row><row><entry /><entry>strokeweight</entry><entry>= ‘1px’</entry></row><row><entry /><entry>strokecolor</entry><entry>= ‘rgb (0,0,0)’</entry></row><row><entry /><entry>fill</entry><entry>= ‘true’</entry></row><row><entry /><entry>fillcolor</entry><entry>= ‘rgb (225,255,131)’></entry></row><row><entry /><entry><v:stroke</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="119PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>dashstyle</entry><entry>= ‘solid’/></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="105PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘wwXXXcolor’ ***</entry></row><row><entry /><entry>ww_actiontype</entry><entry>= ‘XXXColorDiscreteAlarm’ ***</entry></row><row><entry /><entry>ww_colorNormal</entry><entry>= ‘rgb (255,0,0)’</entry></row><row><entry /><entry>ww_colorAlarm</entry><entry>= ‘rgb (0,255,0)’ ></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="252PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="center" /><tbody valign="top"><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “rect1”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “XXXorDiscreteAlarm” ***</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “tagname”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var1”</entry></row><row><entry /><entry>ReadWrite</entry><entry>= “true”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “tagname.alarm”</entry></row><row><entry /><entry>VarName</entry><entry>= “var1”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="238PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0080] Tagname is any Discrete, Integer or Real tagname type, Indirect Analog or Group Variable. The XSL transformation will implicitly add the alarm dot field to the end of tagname in the Item attribute of the <tag> element. <tables id="TABLE-US-00010" num="10"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="322PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>524, 532, and 540 Line, Text and Fill Color - Analog Alarm</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="322PT" align="left" /><tbody valign="top"><row><entry>*** Replace the XXX with Line, Text or Fill.</entry></row><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="231PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= ‘wwanim’</entry></row><row><entry /><entry>id</entry><entry>= ‘rect1’</entry></row><row><entry /><entry>ww_type</entry><entry>= ‘WWRectangle’</entry></row><row><entry /><entry>ww_fill</entry><entry>= ‘rect1_fill’</entry></row><row><entry /><entry>ww_stroke</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>ww_object</entry><entry>= ‘rect1_object’</entry></row><row><entry /><entry>ww_XXXcolor</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww_XXXcolor”</entry></row><row><entry /><entry><v:rect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="56PT" align="left" /><colspec colname="2" colwidth="224PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry> = ‘rect1_object’</entry></row><row><entry /><entry>stroke</entry><entry>= ‘true’</entry></row><row><entry /><entry>strokeweight</entry><entry> = ‘1px’</entry></row><row><entry /><entry>strokecolor</entry><entry> = ‘rgb (0,0,0)’</entry></row><row><entry /><entry>fill</entry><entry> = ‘true’</entry></row><row><entry /><entry>fillcolor</entry><entry> = ‘rgb (255,255,131)’></entry></row><row><entry /><entry><v:stroke</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="70PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="210PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= ‘rect1_stroke’</entry></row><row><entry /><entry>dashstyle</entry><entry>= ‘solid’/></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="294PT" align="left" /><tbody valign="top"><row><entry /><entry><Behavior</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry> id</entry><entry>= ‘rect1_XXXcolor’ ***</entry></row><row><entry /><entry> ww_type</entry><entry> = ‘wwXXXcolor’ ***</entry></row><row><entry /><entry>ww_actiontype</entry><entry>= ‘XXXColorAnalogAlarm’ ***</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="77PT" align="left" /><colspec colname="3" colwidth="112PT" align="left" /><tbody valign="top"><row><entry /><entry> ww_alarmType</entry><entry> = “value”</entry><entry>// Types: value, deviation or ROC</entry></row><row><entry /><entry>ww_color1</entry><entry>= ‘rgb (255,0,0)’</entry><entry>// First or Normal color</entry></row><row><entry /><entry>ww_color2</entry><entry>= ‘rgb (0,255,0)’</entry><entry>// Second, ROC or Minor Dev. color</entry></row><row><entry /><entry>ww_color3</entry><entry>= ‘rgb (255,0,0)’</entry><entry>// Third or Major Dev. color</entry></row><row><entry /><entry>ww_color4</entry><entry>= ‘rgb (255,0,0)’</entry><entry>// Forth color</entry></row><row><entry /><entry>ww_color5</entry><entry>= ‘rgb (255,0,0)’</entry><entry>// Fifth color</entry></row><row><entry /><entry> ></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="294PT" align="left" /><tbody valign="top"><row><entry /><entry></Behavior></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="308PT" align="left" /><tbody valign="top"><row><entry /><entry></v:rect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="322PT" align="left" /><tbody valign="top"><row><entry></v:group> <!-- rect1 --></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0081] The Data Binding entries that the XSL transformation produces in its output change depending on what the ww_alarmType is set too.
[0082] Tagname (in the sections below) is any Discrete, Integer or Real tagname type, Indirect Analog or Group Variable. The XSL transformation will implicitly add the appropriate dot field to the end of the tagname in the Item attribute of the <tag> element for each data binding entry. <img file="US20020101431A1-20020801-P00001.TIF" id="EMI-00001" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00002.TIF" id="EMI-00002" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00003.TIF" id="EMI-00003" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00004.TIF" id="EMI-00004" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00005.TIF" id="EMI-00005" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00006.TIF" id="EMI-00006" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00007.TIF" id="EMI-00007" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00008.TIF" id="EMI-00008" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00009.TIF" id="EMI-00009" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00010.TIF" id="EMI-00010" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00011.TIF" id="EMI-00011" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00012.TIF" id="EMI-00012" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00013.TIF" id="EMI-00013" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00014.TIF" id="EMI-00014" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00015.TIF" id="EMI-00015" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00016.TIF" id="EMI-00016" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00017.TIF" id="EMI-00017" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00018.TIF" id="EMI-00018" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00019.TIF" id="EMI-00019" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00020.TIF" id="EMI-00020" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00021.TIF" id="EMI-00021" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00022.TIF" id="EMI-00022" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00023.TIF" id="EMI-00023" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00024.TIF" id="EMI-00024" img-format="tif" img-content="ui" /><img file="US20020101431A1-20020801-P00025.TIF" id="EMI-00025" img-format="tif" img-content="ui" />
[0083] Symbols with Animation Behavior
[0084] The XSL transformation for symbols is important to the Animation Component. The Animation Component checks to see if the “ww_type” attribute is equal to “ww_Symbol”. If it is then the Animation Component knows that it contains two or more child UI objects that must all be involved in the animation behavior(s) bound to the symbol. The XSL generated output below shows a symbol consisting of two round rectangle objects and having an analog fill color animation behavior attached to it. Notice that the animation behavior is referenced (ww_Fillcolor=“symbol7_Fillcolor”) in the symbol group, not on each UI object. This is because animation behaviors must be attributes of the element that has the animation behavior bound to it (class =wwanim). <tables id="TABLE-US-00011" num="11"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="56PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>class</entry><entry>= wwanim</entry></row><row><entry /><entry>id</entry><entry>= symbol7</entry></row><row><entry /><entry>ww_Fillcolor</entry><entry>= “symbol7_Fillcolor”</entry></row><row><entry /><entry>ww_behaviorlist</entry><entry>= “ww fillcolor”</entry></row><row><entry /><entry>ww_object</entry><entry>= “symbol7_object”</entry></row><row><entry /><entry>ww_type</entry><entry>= “WWSymbol”></entry></row><row><entry /><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= rrect1</entry></row><row><entry /><entry>style</entry><entry>= “MARGIN-LEFT: 1px; MARGIN-TOP:1px;”</entry></row><row><entry /><entry>ww_object</entry><entry>= “rrect1_object”</entry></row><row><entry /><entry>ww_type</entry><entry>= “WWRoundRectangle”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry><v:roundrect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="28PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= rrect1_object</entry></row><row><entry /><entry>Fill</entry><entry>= “true”</entry></row><row><entry /><entry>fillcolor</entry><entry>= “#83ffff”</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry></v:roundrect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry></v:group></entry></row><row><entry /><entry><v:group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= rrect2</entry></row><row><entry /><entry>style</entry><entry>= “MARGIN-LEFT: 21px;</entry></row><row><entry /><entry /><entry> MARGIN-TOP:21px;”</entry></row><row><entry /><entry>title</entry><entry>= rrect2</entry></row><row><entry /><entry>ww_object</entry><entry>= “rrect2_object”</entry></row><row><entry /><entry>ww_type</entry><entry>= “WWRoundRectangle”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry><v:roundrect</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="28PT" align="left" /><colspec colname="2" colwidth="147PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= rrect2_object</entry></row><row><entry /><entry>fillcolor</entry><entry>= “#83ffff”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry></v:roundrect></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry></v:group></entry></row><row><entry /><entry><BEHAVIOR</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="56PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry /><entry>id</entry><entry>= symbol7_Fillcolor</entry></row><row><entry /><entry>ww_type</entry><entry>= “wwFillcolor”</entry></row><row><entry /><entry>ww_color5</entry><entry>= “rgb( 191, 255, 191 )”</entry></row><row><entry /><entry>ww_color4</entry><entry>= “rgb( 186, 0, 186 )”</entry></row><row><entry /><entry>ww_color3</entry><entry>= “rgb( 0, 0, 255 )”</entry></row><row><entry /><entry>ww_color2</entry><entry>= “rgb( 255, 255, 255 )”</entry></row><row><entry /><entry>ww_color1</entry><entry>= “rgb( 186, 186, 0 )”</entry></row><row><entry /><entry>ww_breakpoint4</entry><entry>= “50.000000”</entry></row><row><entry /><entry>ww_breakpoint3</entry><entry>= “40.000000”</entry></row><row><entry /><entry>ww_breakpoint2</entry><entry>= “30.000000”</entry></row><row><entry /><entry>ww_breakpoint1</entry><entry>= “20.000000”</entry></row><row><entry /><entry>ww_actionType</entry><entry>= “FillColorAnalog”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry></BEHAVIOR></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry></v:group></entry></row><row><entry>Example binding expression in the Data Binding Table.</entry></row><row><entry><BindingExpression</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="140PT" align="left" /><tbody valign="top"><row><entry /><entry>TargetElement</entry><entry>= “symbol7”</entry></row><row><entry /><entry>BehaviorMethod</entry><entry>= “FillColorAnalog”</entry></row><row><entry /><entry>TagExpressionOrg</entry><entry>= “$Second”</entry></row><row><entry /><entry>TagExpression</entry><entry>= “var0”</entry></row><row><entry /><entry>IsExpression</entry><entry>= “false”></entry></row><row><entry /><entry><ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry><Tag</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="42PT" align="left" /><colspec colname="1" colwidth="35PT" align="left" /><colspec colname="2" colwidth="140PT" align="left" /><tbody valign="top"><row><entry /><entry>Item</entry><entry>= “$Second”</entry></row><row><entry /><entry>VarName</entry><entry>= “var0”</entry></row><row><entry /><entry>ConnID</entry><entry>= “1”></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><tbody valign="top"><row><entry /><entry></Tag></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry></ExpressionTags></entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry></BindingExpression></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0085] Illustrative embodiments of the present invention and certain variations thereof have been a, provided in the Figures and accompanying written description. The present invention is not intended to be limited to these embodiments. Rather the present invention is intended to cover the disclosed embodiments as well as others falling within the scope and spirit of the invention to the fullest extent permitted in view of this disclosure and the inventions defined by the claims appended herein below.
Contents6
34 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2019384267A1 | Cited by | United States of America | Search report |
| US2005154982A1 | Cited by | United States of America | Pre-grant |
| US2005108364A1 | Cited by | United States of America | Pre-grant |
| US2005193326A1 | Cited by | United States of America | Pre-grant |
| US2019102475A1 | Cited by | United States of America | Search report |
| US2013033497A1 | Cited by | United States of America | Pre-grant |
| US8819540B2 | Cited by | United States of America | Search report |
| US9195774B2 | Cited by | United States of America | Search report |
| US8570327B2 | Cited by | United States of America | Search report |
| US10956498B2 | Cited by | United States of America | Search report |
| US2008148169A1 | Cited by | United States of America | Pre-grant |
| US10878350B1 | Cited by | United States of America | Search report |
| US2012072547A1 | Cited by | United States of America | Pre-grant |
| US11455581B2 | Cited by | United States of America | Search report |
| US2006259870A1 | Cited by | United States of America | Pre-grant |
| US8878857B2 | Cited by | United States of America | Applicant |
| US9880540B2 | Cited by | United States of America | Search report |
| EP1868352A1 | Cited by | European Patent Office (EPO) | Search report |
| US7739611B2 | Cited by | United States of America | Applicant |
| US2008172601A1 | Cited by | United States of America | Pre-grant |
| US2008195626A1 | Cited by | United States of America | Pre-grant |
| US8291309B2 | Cited by | United States of America | Search report |
| US9182948B1 | Cited by | United States of America | Applicant |
| US2010023880A1 | Cited by | United States of America | Pre-grant |
| US10295976B2 | Cited by | United States of America | Search report |
| US2007168060A1 | Cited by | United States of America | Pre-grant |
| US7934008B2 | Cited by | United States of America | Search report |
| US8234392B2 | Cited by | United States of America | Search report |
| US2004051727A1 | Cited by | United States of America | Pre-grant |
| US10497086B2 | Cited by | United States of America | Applicant |
| US8745485B2 | Cited by | United States of America | Search report |
| US9467347B2 | Cited by | United States of America | Applicant |
| US2009079744A1 | Cited by | United States of America | Pre-grant |
| US2007006136A1 | Cited by | United States of America | Pre-grant |
| US2006259868A1 | Cited by | United States of America | Pre-grant |
| US9141402B2 | Cited by | United States of America | Search report |
| US2009024240A1 | Cited by | United States of America | Pre-grant |
| US2010123722A1 | Cited by | United States of America | Pre-grant |
| US9910567B2 | Cited by | United States of America | Applicant |
| US7769840B1 | Cited by | United States of America | Search report |
| US8909801B2 | Cited by | United States of America | Applicant |
| RU2488168C2 | Cited by | Russian Federation | Search report |
| US2019102475A1 | Cited by | United States of America | Search report |
| US10110672B2 | Cited by | United States of America | Applicant |
| US2008120626A1 | Cited by | United States of America | Pre-grant |
| US2006150081A1 | Cited by | United States of America | Pre-grant |
| US2009315894A1 | Cited by | United States of America | Pre-grant |
| EP1768005A3 | Cited by | European Patent Office (EPO) | Search report |
| US9953391B2 | Cited by | United States of America | Applicant |
| US2003106042A1 | Cited by | United States of America | Pre-grant |
| US8099677B2 | Cited by | United States of America | Search report |
| EP1768005A2 | Cited by | European Patent Office (EPO) | Search report |
| US2002159519A1 | Cited by | United States of America | Pre-grant |
| US10747207B2 | Cited by | United States of America | Search report |
| US2001032216A1 | Cites | United States of America | Pre-grant |
| US2001038392A1 | Cites | United States of America | Pre-grant |
| US2001044736A1 | Cites | United States of America | Pre-grant |
| US2002008703A1 | Cites | United States of America | Pre-grant |
| US2002015042A1 | Cites | United States of America | Pre-grant |
| US2002033844A1 | Cites | United States of America | Pre-grant |
| US2002036639A1 | Cites | United States of America | Pre-grant |
| US2002089530A1 | Cites | United States of America | Pre-grant |
| US2002120518A1 | Cites | United States of America | Pre-grant |
| US2003090712A1 | Cites | United States of America | Pre-grant |
| US5768133A | Cites | United States of America | Pre-grant |
| US5802255A | Cites | United States of America | Pre-grant |
| US5812394A | Cites | United States of America | Pre-grant |
| US5815683A | Cites | United States of America | Pre-grant |
| US5860068A | Cites | United States of America | Pre-grant |
| US5894310A | Cites | United States of America | Pre-grant |
| US5918054A | Cites | United States of America | Pre-grant |
| US5940504A | Cites | United States of America | Pre-grant |
| US5970490A | Cites | United States of America | Pre-grant |
| US5983190A | Cites | United States of America | Pre-grant |
| US6012098A | Cites | United States of America | Pre-grant |
| US6029145A | Cites | United States of America | Pre-grant |
| US6038668A | Cites | United States of America | Pre-grant |
| US6058395A | Cites | United States of America | Pre-grant |
| US6061603A | Cites | United States of America | Pre-grant |
| US6073055A | Cites | United States of America | Pre-grant |
| US6098068A | Cites | United States of America | Pre-grant |
| US6119149A | Cites | United States of America | Pre-grant |
| US6121963A | Cites | United States of America | Pre-grant |
| US6167383A | Cites | United States of America | Pre-grant |
| US6182094B1 | Cites | United States of America | Pre-grant |
| US6182125B1 | Cites | United States of America | Pre-grant |
| US6198479B1 | Cites | United States of America | Pre-grant |
| US6313835B1 | Cites | United States of America | Pre-grant |
| US6362817B1 | Cites | United States of America | Pre-grant |
| US6449634B1 | Cites | United States of America | Pre-grant |
| US6480191B1 | Cites | United States of America | Pre-grant |
| US6505242B2 | Cites | United States of America | Pre-grant |
| US6603488B2 | Cites | United States of America | Pre-grant |
| US6687737B2 | Cites | United States of America | Pre-grant |
| US6741242B1 | Cites | United States of America | Pre-grant |
| US6785659B1 | Cites | United States of America | Pre-grant |
25 members in 5 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 23273300 | United States of America | P | |
| 23273300 | United States of America | P | |
| 95442501 | United States of America | A | |
| 60232733 | – | – | – |
| US20000232733P | – | – | – |
| US20010954425 | – | – | – |
Members25
| Document | Office | Kind | |
|---|---|---|---|
| WO0223368A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO0223454A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO0223478A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU9269201A | Australia | A | |
| AU9270301A | Australia | A | |
| AU9280901A | Australia | A | |
| US2002067370A1 | United States of America | A1 | |
| US2002069172A1 | United States of America | A1 | |
| US2002101431A1 | United States of America | A1 | |
| WO0223478A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1325469A2 | European Patent Office (EPO) | A2 | |
| EP1330748A1 | European Patent Office (EPO) | A1 | |
| CN1596409A | China | A | |
| EP1325469A4 | European Patent Office (EPO) | A4 | |
| EP1330748A4 | European Patent Office (EPO) | A4 | |
| US2008097622A1 | United States of America | A1 | |
| AU2001292809B2 | Australia | B2 | |
| CN100468384C | China | C | |
| US7647407B2 | United States of America | B2 | |
| US7728838B2 | United States of America | B2 | |
| US2010228865A1 | United States of America | A1 | |
| US2010238181A1 | United States of America | A1 | |
| US7925979B2 | United States of America | B2 | |
| US7973794B2 | United States of America | B2 | |
| US8015299B2 | United States of America | B2 |
115 transactions on the USPTO file
Allowed after 5 non-final rejections, 1 final rejection, 1 RCE and 2 appeals.
- Non-final rejections
- 5
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 2
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Maintenance Fee Reminder Mailed | |
| Payment of Maintenance Fee, 8th Year, Large Entity | |
| Recordation of Patent Grant Mailed | |
| Patent Issue Date Used in PTA CalculationAllowed | |
| Email Notification | |
| Issue Notification MailedAllowed | |
| Dispatch to FDC | |
| Application Is Considered Ready for Issue | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Received | |
| Printer Rush- No mailing | |
| Pubs Case Remand to TC | |
| Response to Reasons for Allowance | |
| Electronic Review | |
| Email Notification | |
| Email Notification | |
| Email Notification | |
| Mail Examiner's Amendment | |
| Mail Examiner Interview Summary (PTOL - 413) | |
| Mail Notice of AllowanceAllowed | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Case Docketed to Examiner in GAU | |
| Examiner's Amendment Communication | |
| Interview Summary Record | |
| Electronic Review | |
| Email Notification | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Date Forwarded to Examiner | |
| Response after Non-Final Action | |
| Request for Extension of Time - Granted | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Date Forwarded to Examiner | |
| Date Forwarded to Examiner | |
| Disposal for a RCE / CPA / R129 | |
| Request for Continued Examination (RCE) | |
| Workflow - Request for RCE - Begin | |
| Mail PTAB Decision on Reconsideration - Denied | |
| Dec on Reconsideration - Denied | |
| Request for Reconsideration of Appeal Dec | |
| Mail PTAB miscellaneous communication to applicant | |
| PTAB miscellaneous communication to applicant | |
| Mail PTAB Decision on Appeal - Affirmed | |
| PTAB Decision - Examiner Affirmed | |
| Miscellaneous Incoming Letter | |
| Miscellaneous Incoming Letter | |
| Notification of Appeal Hearing | |
| Docketing Notice Mailed to Appellant | |
| Assignment of Appeal Number | |
| Appeal Awaiting PTAB Docketing | |
| Mail Reply Brief Noted by Examiner | |
| Reply Brief Noted by Examiner | |
| Date Forwarded to Examiner | |
| Request for Oral Hearing | |
| Reply Brief Filed | |
| Exam. Ans. Review Complete | |
| Mail Examiner's Answer | |
| Examiner's Answer to Appeal Brief | |
| Appeal Brief Review Complete | |
| Date Forwarded to Examiner | |
| Appeal Brief Filed | |
| Request for Extension of Time - Granted | |
| Miscellaneous Incoming Letter | |
| Information Disclosure Statement considered | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Notice of Appeal Filed | |
| Request for Extension of Time - Granted | |
| Case Docketed to Examiner in GAU | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Mail Miscellaneous Communication to Applicant | |
| Miscellaneous Communication to Applicant - No Action Count | |
| Request for Pre-Appeal Conference Filed | |
| Notice of Appeal Filed | |
| Request for Extension of Time - Granted | |
| Mail Final Rejection (PTOL - 326)Final rejection | |
| Final RejectionFinal rejection | |
| IFW TSS Processing by Tech Center Complete | |
| Date Forwarded to Examiner | |
| Response after Non-Final Action | |
| Request for Extension of Time - Granted | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Date Forwarded to Examiner | |
| Fee Payment Recorded (fees filed separately e.g. not with original papers, etc). | |
| Date Forwarded to Examiner | |
| Response after Non-Final Action | |
| Request for Extension of Time - Granted | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU |
15 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 2002101431
- Publication, EPODOC
- US2002101431
- Application
- 9954425
- Application, DOCDB
- 95442501
- Application, EPODOC
- US20010954425
Titles
- English
- Method and system for animating graphical user interface elements via a manufacturing/process control portal server
Patent term adjustment
- A delay
- +382 daysthe office missed an examination deadline
- B delay
- +540 dayspendency past three years
- Applicant delay
- −425 days
- Net adjustment
- 497 days
Classification
- CPC, 4
- G06Q10/06
- G06F17/30873
- G06F16/954
- G06F21/105
- IPC, 9
- G06F15 16
- G06F15 173
- G06F17 30
- G06F21 00
- G06G7 48
- G06Q10 06
- G06T
- G06T1 00
- G09G5 00
- USPC, 1
- 345582000