RTView® Core
Release Notes

Version 7.4.0 Release Notes

Caches

RE-36029: Fixed rows with duplicate index values in cache current table

A problem has been fixed which sometimes caused two rows with the same index values to appear in the current table of a cache. Typically this occurred if a row with an empty string in each of its index columns was added to the cache, and later that row expired and was deleted.

Customization

RE-35418: Enhanced cache schemaTable to take a string

The cache schemaTable property will now accept a string value containing column name;type pairs separated by semicolon, name1;type1;name2;type2 ... Note that a semicolon is expected between each name and type, and also between pairs. A column name may contain spaces and colons but not semicolons. The valid column types are: string, int, long, double, float, boolean, date For example: Employee ID;int;First Name;string;Last Name;string;Age;int;Offsite;boolean The schemaTable can still be attached to a data table, as in all prior releases. Existing caches that are configured in that manner will not be affected by this enhancement and do not need to be reconfigured.

Data Historian

RE-35634: Average is now default for condense/compact GroupBy calc on numeric columns

If primary compaction is enabled on a cache and the cache's condenseRowsGroupBy property omits any numeric data columns, the default calculation applied to those numeric columns is now "average". The same holds for secondary compaction and compactionGroupBy. In previous releases, the default GroupBy calculation for numeric columns was "sum", which was incorrect and caused confusing trace lines on trend charts.

Data Sources

RE-36285: Deprecate gmsjlog4jds and gmsjsplunkds.jar

The following Data Sources have deprecated, as they had dependencies on Log4j version 1, which has also been deprecated: Splunk Log4j

Demos and Simulators

RE-35220: RTV_HOME/demos/features/make_war.sh corrected

The make_war.sh script in RTView Core demos/features was not creating a correct war file. This has been fixed.

RE-35687: Removed superfluous ContentType text from top of four demos

Four of the demos were updated to remove the following error from the top of the demo: <%@ page contentType="text/html;charset=UTF-8"%> The demos that were updated were dstutorial, jmxmonitor, rvmonitor, and alertdemo. As part of this change, these demos no longer use a static html navigation list, but instead use a dynamic navigation tree.

Display Builder

RE-36260: Command line option to specify Display Builder's default Palette

The builder now supports a command-line option to specify the palette style at startup. If the command-line option is specified it overrides the out-of-the-box default style ("flat") or the style previously selected in the Builder Options dialog. To specify the classic palette style: -paletteStyle:classic To specify the flat palette style: -paletteStyle:flat If the -paletteStyle option is not specified, the style previously selected in the Builder Options dialog is used, and if no style was previously selected in the Builder Options dialog (i.e. a new rtview installation), the flat palette style is used.

RE-36309: Override Style Sheet no longer throws NPE if no style sheet configured

The Builder no longer throws a NullPointerException if the user selects Override Style Sheet from the context menu when no stylesheets are configured.

Display Server

RE-36295: Updated jQuery to v3.5.1 and Kendo UI to 2019.1.220 for Classic Displays

The version of jQuery deployed with RTView has been updated to 3.5.1. Note that this change may cause minor cosmetic differences in the appearance of the web grid object. In particular, the text position in column headers is shifted left a few pixels, because in this version the width of the column menu icon is considered when centering a column’s text label. Some PANELS features (nav tree / accordion / tabs, and resizable panels) may also exhibit minor cosmetic differences in font sizes, margins, etc.

RE-36318: Corrected unnecessary rebuild of table object on first update

In prior releases, the thin client would sometimes rebuild a table object unnecessarily, shortly after the display was loaded. This could cause the table's scrollbars, column sizes, etc to revert to their initial states if the user had changed them in the meantime. This problem has been fixed.

RE-36342: The obj_c1datechooser control no longer shows “undefined� for year

In prior releases, when using Java 9+ the obj_c1datechooser control shows “undefined� for the year part of the date string in the thin client, if the control's dateFormat property is left blank. This problem has been fixed.

Distribution

RE-36002: Deployment Wizard deprecated

The Deployment Wizard has been deprecated and removed from the product.

RE-36262: Update commons-fileupload.jar to v1.4

The external library commons-fileupload-1.2.jar has been replaced with commons-fileupload-1.4.jar to address a security vulnerability. This library is used by the rtvpost servlet.

RE-36265: Remove iText libraries from gmsjext.jar

The external libraries used for creating PDF reports from RTView displays have been removed from gmsjext.jar and ext_jars.zip. For products that still include Classic displays (RTView Core, RTView Enterprise, and some standalone monitors), these libraries are packaged in gmsjextpdf.jar and ext_jars_pdf.zip. The external libraries used for PDF export capability, iText and iTextAsian, can trigger security warnings due to a High Severity CVE (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9096) which "might allow remote attackers to conduct XML external entity attacks via a crafted PDF". These libraries do not pose a genuine security risk as they are used within RTView. The only PDFs that are handled by iText in RTView are those generated from customer displays, and therefor there is no mechanism to exploit the vulnerability with a "crafted PDF". Users who do not need to use the PDF export or reporting capability, and who would like to remove any library that raises alarms in a security scan, can remove gmsjextpdf.jar from the lib directory.

RE-36282: Upgraded log4j from 1.2 to 2.17.1

The version of Apache Log4j used by RTView has been upgraded from version 1.2 to 2.17.1. Although there were no known security issues in version 1.2 that affected RTView, it is no longer aupported by Apache. This upgrade does not affect how Log4j is used by RTView or any of its options related to Log4j. However, the syntax used in a Log4j properties file was changed extensively by Apache in version 2. The sl.log4j.properties file distributed with RTView has been changed to use the version 2 syntax. If, in previous RTView versions, you customized that file or specified your own custom log4j properties file (e.g. using the "log4jprops" option), you'll need to remake those customization using the version 2 syntax. If RTView detects that a log4j properties file with version 1 syntax, the properties file is ignored and RTView logs this message: Ignoring: [filename], log4j v1 syntax is no longer supported. An RTView Enterprise. Solace PubSub Monitor, or TIBCO RTView for X deployment will then attempt to use RTVAPM_HOME/common/conf/sl.log4j.properties. An RTVIew Core deployment will then attempt to use RTV_HOME/lib/sl.log4j.properties. If those files also contain Log4j version 1 syntax, logging will be disabled. ===================================== In an RTView Enterprise. Solace PubSub Monitor, or TIBCO RTView for X deployments: As mentioned above, the default Log4j properties file is sl.log4j.properties and is found in the projects folder and also in RTVAPM_HOME/common/conf. In addition, the default config behavior has been changed: In this release by default messages are appended to the existing logs/X.log file ((where X is "dataserver", or "historian", etc depending on the name of the server) until it reaches a size of 50MB. Then it is renamed to X.log.N (where N = 1 - 9) and a new empty X.log file is created. So at any time the logs directory may contain X.log (newest, up to 50MB in size), and X.log.N where N = 1 - 9, each approx 50 MB, where 1 is the oldest and 9 is the newest. Once N = 9 is reached, on the next rollover X.log.1 is deleted and each remaining X.log.N is renamed to X.log.N-1. As in previous releases, you may customize the sl.log4j.properties in the projects folder but should not change the version in RTVAPM_HOME/common/conf. However, note that the default Log4j properties described above is different and more sophisticated than the default in prior releases (which simply discarded the previous log file at startup, but put no limit on how large the log file could grow). The new default behavior is more likely to be useful in production deployments, so customization may not be needed. ==================== In an RTView Core deployment The default Log4j properties file is sl.log4j.properties and is found in RTV_HOME/lib. It enables a "Rolling File Appender" that logs messages to a file named rtview.log. When the file reaches 10MB in size it is renamed to [app].log.1 and a new [app].log file is opened. A "Console Appender" is also enabled that logs messages to the application's console window (stdout), if any. Note that log4j is disabled by default in rtview core, as in prior releases.

RE-36312: Added jakarta.activation-1.2.2.jar to support Send Email command with Java 9+

The jakarta.activation-1.2.2 libraries have been added to the distribution to replace functionality that was removed from Java 9 and later. This functionality is required for the Send Email command

RE-36341: Bundled Apache Tomcat updated to 8.5.81

The bundled Apache Tomcat has been updated to 8.5.81.

Objects

RE-36292: New option to limit number of cached images

An option named max_images_in_cache has been added to limit the number of images cached by RTView. Images used on display objects are stored in a cache to avoid reloading them on each display refresh. If an application uses many different large images, or if the image names change dynamically (e.g. because the image name property of an object is attached to a function) the image cache may use excessive memory. In such cases the new option can be used to limit it's size, for example: run_displayserver -max_images_in_cache:100 In this example the image cache will be limited the 100 most recently used images. Images loaded from RTView's Symbol Library (com/sl/gmsjmodels/symlib/*) are not counted toward the max_images_in_cache limit. If max_images_in_cache is not specified or if a value of zero or less is specified, then no limit is set on the number of cached images (as in all prior releases).

Objects - Charts and Graphs

RE-36336: Support the timeRangeBegin and timeRangeEnd properties in the web chart in thin client

The thin client now supports the timeRangeBegin and timeRangeEnd properties on an obj_trendgraph02 object (trend chart) if the webChartFlag option is checked. In prior releases those properties were ignored in that case.

Platform Support

RE-36263: Windows Server 2022 Support

Windows Server 2022 is now supported.

RE-36264: Windows 11 Support

Windows 11 is now supported

RE-36307: Java 17 now supported

Oracle Java 17 and OpenJDK 17 are now supported. Note that Java 17 can be used with the previous release with the following workarounds: - Users who wish to use the Send Email command must download and add to classpath jakarta.activation-1.2.2.jar - Before using the Display Builder, users must add the following to the RTV_JAVAOPTS environment variable: -Djide.defaultStyle=1

Service Model

RE-36271: Increased maxHttpHeaderSize in Tomcat

The maxHttpHeaderSize setting of the bundled Apache Tomcat has been increased to 32768 in apache-tomcat-*\conf\server.xml. This change will allow users of RTView Enterprise to add a larger number of CIs using multiselect in the CMDB Admin console.

Version 7.3.0 Release Notes

Commands

RE-27992: Update the system email command

The System email command has been updated to use the latest JavaMail jars.

Data Historian

RE-25317: Improved error reporting when persistence database doesn't have correct schema

The Alert Engine has been enhanced to provide expected column information in the case where the Alert Persistence database table does not contain the correct schema.

RE-26112: Historian now detects lost database connection when using prepared statements

Previously, under certain circumstances, the Historian would not detect lost database connections when using prepared statements. This is no longer the case.

RE-35671: Historian compaction no longer stops if database connection drops

A problem has been fixed in the historian where the compaction thread was terminated because of a NullPointerException thrown if the database connection was lost, preventing any subsequent compaction until the historian was restarted.

Data Sources

RE-28859: SQL scheduler no longer fails when used in cache definition file

A problem has been fixed which prevented use of the SQL scheduler feature in cache definition files.

RE-33476: New database ping feature added to SQL data source

An option named "dbping" has been added to the SQL data source. It can be used to specify a simple SQL query to be run periodically on a specified database connection. This is intended to keep the database connection alive on systems where idle connections are closed, for example by a firewall between the host running RTView and the database server's host. Typically a simple database vendor-specific query would be used for this purpose. For example: Oracle: SELECT 1 FROM DUAL SQL Server: SELECT COUNT(*) FROM SYSOBJECTS MySQL: SELECT 1 The dbping option can be enabled in the OPTIONS.ini file as follows: dbping name=N;interval=I;query=Q N = the database connection name (required) I = ping interval in seconds (optional, default = 300) Q = sql query for ping (required) For example: dbping name=MyOracleDB;interval=120;query=SELECT 1 FROM DUAL As with all periodic sql queries in RTView, the query is not guaranteed to be performed at the exact interval specified but within a few seconds. For deployments which use RTView properties files, the dbping option is specified as follows: sl.rtview.sql.dbping=name=N;interval=I;query=Q where: N = the database connection name (required) I = ping interval in seconds (optional, default = 300) Q = sql query for ping (required) For example: sl.rtview.sql.dbping name=MyOracleDB;interval=600;query=SELECT 1 FROM DUAL In RTView Enterprise, the dbping property can be added on the CUSTOM PROPERTIES tab of the Configuration Application. For example, the following could be specified for use on the RTView history database connection for an Oracle database: Name: sl.rtview.sql.dbping Value: name=RTVHISTORY;interval=600;query=select 1 from DUAL Filter: dataserver

Demos

RE-35195: Google Maps demo removed

The Google Maps Placeholder has been removed from the Graphs tab in the Display Builder, and the demos\google_maps demo has been removed.

Display Server

RE-29708: Support 'nosniff' header in thin client in IE11

A problem has been fixed which prevented the thin client Classic UI from rendering displays correctly in IE11 when the web server set the X-Content-Type-Options:nosniff response header. No other supported browsers were affected by this issue. Site administrators may configure a web server to send the X-Content-Type-Options:nosniff response header for security reasons. With this fix the thin client is not affected by the presence or absence of that header, which is the correct behavior. A related note for Tomcat users: In standalone Tomcat, the X-Content-Type-Options:nosniff response header is set by enabling the httpHeaderSecurity filter in tomcat's conf/web.xml file. By default, that filter also sets the X-Frame-Options:DENY response header. That setting will disable the thin client even with the fix described in this release note. To avoid that problem, tomcat should be configured to set the X-Frame-Options response header to SAMEORIGIN rather than DENY, to allow pages hosted by the same tomcat instance (only) to load thin client displays in iframes. So to set X-Content-Type-Options:nosniff and X-Frame-Options:SAMEORIGIN, the httpHeaderSecurity filter should be configured as follows intomcat's conf/web.xml file: <filter> <filter-name>httpHeaderSecurity</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <async-supported>true</async-supported> <init-param> <!-- allow use in iframe on pages with same origin --> <param-name>antiClickJackingOption</param-name> <param-value>SAMEORIGIN</param-value> </init-param> </filter>

RE-34014: obj_c1datechooser in scale mode and thin client now resizes correctly

Two problems affecting the date chooser control (obj_c1datechooser) in the thin client have been fixed: - The text portion and button portion of the control no longer become separated if the display is scaled. - If the visFlag or enabledFlag is changed on the control at runtime (e.g. by a variable attachment), the entire control is affected as expected, not just the text portion.

RE-35425: Drilldown with window name = main now works in thin client

In the thin client, a drilldown with Window Name = "main" is now performed in the main window as expected, rather than in a popup window. In prior releases the thin client worked correctly only if a panel layout was defined with a panel named "main". Now it works correctly without requiring a panel layout. This is consistent with the Builder/Viewer behavior.

RE-35675: Slice colors no longer wrong on html5 pie chart if wedgeProperties is set

A problem has been fixed in the thin client where a pie chart with webChartFlag and wedgeProperties both set would draw the wedges in unexpected colors, mostly white.

Distribution

RE-35465: Update Apache Tomcat to v8.5.61+

The bundled Apache Tomcat has been upgraded from v8.5.59 to v8.5.61

RE-36271: Increased maxHttpHeaderSize in Tomcat

The maxHttpHeaderSize setting of the bundled Apache Tomcat has been increased to 32768 in apache-tomcat-*\conf\server.xml. This change will allow users of RTView Enterprise to add a larger number of CIs using multiselect in the CMDB Admin console.

RE-35486: Third party software notices migrated to in-product file

Third Party Software notices and licenses have been made available from within the product download as LICENSES_party.txt.

RE-35540: Update HttpClient to 4.5.13

The HTTPClient jars have been upgraded to the latest version (4.5.13) to address known CVE issues

Objects

RE-35403: New object palettes with plain white style

The Builder now supports two sets of object palettes using different styles named "Classic" and "Flat". The classic style was available in all previous releases and features a gray background with gradient fills and other 3D effects. The flat style is new in this release and features a white background, no gradient fills or 3D effects, and fewer visible edges and borders around objects. It is intended to provide a simpler and cleaner look. The user can toggle between the two styles in the Builder by clicking Tools > Builder Options and then, on the radio button labeled Palette Object Style, clicking Flat or Classic. Clicking OK or Apply will save the selection permanently. Initially, Flat is selected. When the Builder is opened or when the user clicks File/New, the background model in the new display will have a white background with no gradient if the Flat palette style is selected, or a gray background with a gradient if Classic is selected. No new objects were added to the Object Palette for this enhancement. The same set of objects is available regardless of which palette style is selected, just with a different styling. Both palettes have the same set of tabs. The objects on the Controls and the Links tabs are not affected by this change, they have the same appearance in both flat and classic styles. Also, when an existing display is opened in the Builer the objects on that display are not affected by the currently selected palette style. Only newly added objects are affected. The classic palette is defined in a file named PALETTE.ini, as in prior releases. The flat palette is defined in PALETTE_flat.ini.

RE-35485: Deprecate support for Flash

Flex (flash) objects are no longer supported. The Flex objects have been removed from the features demo under demos/features.

Platform Support

RE-24530: Deprecate support for Java 1.7

RTView is now built with Java 1.8 Java 1.7 is no longer supported.

RE-31501: Deprecate support for Sybase database

RTView no longer supports Sybase database.

RE-33550: Added support for AdoptOpenJDK 8

RTView now supports AdoptOpenJDK 8

RE-33660: Support added for MS SQL Server 2019

MS SQL Server 2019 is now supported by the SQL Data Source, for storage of historical and alert data, and for the configuration database tables used by RTView Enterprise Central Servers. SQL Server 2008 and 2014 are no longer officially supported. The Solution Package for MS SQL Server now also supports monitoring MS SQL Server 2019. Note that the user account used in the connection string must have the View Server State permission assigned to them in the server properties. See your MS SQL Server documentation for more information on this setting.

RE-33743: Support added for PostgreSQL 12.1

RTView now supports PostgreSQL 12 with the SQL Data Source. Note that PostgreSQL will default to all lowercase table and column names, so if your database contains mixed-case objects, you need to ensure that RTView is submitting queries with the correct quotes and case. The easiest way to do this on the Builder's "Attach to SQL Data" dialog is to check the Enter SQL Query box that will allow you to enter a free format SQL query. Alternatively you can use the "-sqlquote" flag with all RTView applications.

RE-34576: Support added for MySQL 8.0

MySQL 8.0 is now supported by the SQL Data Source, for storage of historical and alert data, and for the configuration database tables used by RTView Enterprise Central Servers. Official support for MySQL 5.5 has been removed.

RE-34747: Support for Oracle 19

Oracle 19 is now supported by the SQL Data Source, for storage of historical and alert data, and for the configuration database tables used by RTView Enterprise Central Servers. Support for older versions of Oracle has been deprecated.

RE-34852: Drop support for Solaris 10

Solaris 10 is no longer supported

RE-34854: Drop support for Windows 8

Windows 8 is no longer supported.

RE-35426: Red Hat enterprise Linux 8.x supported

RTView now supports Red Hat Enterprise Linux 8.x. Support for 6.x has been deprecated.

RE-35506: Support Adopt OpenJDK 11

Adopt OpenJDK 11 64-bit is supported.

Servlets

RE-31179: Fix deadlock condition in rtvquery

A problem in the rtvquery servlet has been fixed which could cause the servlet to hang with a deadlock. However this was only observed during shutdown of the app server (tomcat).

RE-33475: Pinger feature added to rtvquery servlet

The rtvquery servlet will now ping the data server after 5 minutes of inactivity. (The connection is inactive when no web clients are actively sending queries to the servlet). The ping is intended to keep the servlet's connection to the data server alive on systems where idle connections are automatically closed, for example by a firewall between the host running tomcat and the data server's host. If the interval needs to be changed, add the following property to the rtvquery.properties file: PingerIntervalSec=N where N is the desired interval in seconds, or 0 (zero) to disable the ping feature.

Version 7.2.0 Release Notes

22551: Mouseover text no longer mispositioned on scrolled thin client displays

A problem has been fixed in the thin client that caused the mouseover (tooltip) text to be mispositioned for objects that needed to be scrolled into view.

23558: HTTP REST DS enhanced to support declarative values

The HTTP REST has been enhanced to allow the user to specify values in the attach to data dialog that can be passed to handlers that implement the appropriate interface. The interfaces permit the setting and getting of the values, allowing the runtime to set the values taken from the attach to data dialog, and the handlers to get (and use) the values. Thus rather than having to write multiple handlers, that differ only in values, a common handler can be written that takes a declarative argument, and allow for varying behaviour. There is an Interface ( and argument ) for each type of handler. Headers: This allows the user to specify a List of headers used by a HTTP client handler, (passed to a client handler that implements the Headers interface) Thus the user can vary the headers sent by a client request. Content: This allows the user to specify content (payload body) used by a HTTP request handler, (passed to a request handler that implements the Content interface) Thus the user can vary the content sent by a request. Mapping: This allows the user to specify mapping information used by a HTTP response handler, (passed to a response handler that implements the Mapping interface) Thus the user can vary the mapping used by a response handler There are examples of the use of these enhancements in in the custom/rtvhttprest directory of the RTView installation.

23598: RTView Core now supports Java 11

Java 11 is now supported.

Builder

23351: Applet references removed from function and command descriptions in builder

In the previous release, some function and system command descriptions referenced Applets, which are no longer supported. This has been fixed.

Commands

23311: Button command now run in chrome if commandCloseWindowOnSuccess is set

A bug has been fixed which sometimes prevented the thin client from executing a button's command if the button's commandCloseWindowOnSuccess property was checked. This was only observed in Chrome.

Data Historian

22195: RTView Historian now uses PreparedStatements

The Historian now uses PreparedStatements for repeated SQL Queries against the historian database - For raw data insert - For data compaction - For retention deletion Previously the historian used literal SQL queries with unique timestamps.

Data Server

22462: Float column values no longer garbled in rtvquery response

In the previous release, values for cache columns with type = float were garbled in query responses from the rtvquery (REST) servlet, so the response could not be parsed. This is fixed.

23491: Options added to rtvquery for how to output NaN

The rtvquery servlet has new options for specifying how values of NaN, Infinity, and -Infinity should appear in the response. The new options are infval, and neginfval, and nanval. infval: The value to use for +Infinity neginfval: The value to use for -Infinity nanval: The value to use for NaN, and for +Infinity if infval is not specified, and for -Infinity if neginf is not specified. These options are recognized only if the nanok option is set to true (nanok=true) and if the requested format is json (fmt=json). These options can be useful if the rtvquery response will be parsed by 3rd party apps that expect specific strings for those values. For example, if a parser expects the string "null" for values of NaN and +/-Infinity, the following options should be used: http://somehost/rtvquery/cache/MyCache/current?fmt=json&nanok=true&nanval="null" Note that the quotes around null are required to make it a valid JSON string. Or, for a parser that expects zero for NaN and +/-Infinity: http://somehost/rtvquery/cache/MyCache/current?fmt=json&nanok=true&nanval=0 Or, for a parser that expects zero for NaN, 99999 for +Infinity, and -99999 for -Infinity http://somehost/rtvquery/cache/MyCache/current?fmt=json&nanok=true&nanval=0&infval=99999&neginfval=-99999 If none of the new options is specified, then the behavior is the same as in previous releases: That is, if nanok = true, then NaN appears as "NaN" in the response, +Infinity appears as "Infinity", and -Infinity as "-Infinity". If nanok = false or is not specified, then NaN, +Infinity,and -Infinity all appear as "" (an empty string) in the response.

Data Sources

SQL Data Source

23500: Duplicate database connection errors no longer printed to log file

The error reporting for failed database connection attempts has been enhanced. Previously, an error was printed to the console for each failed connection attempt. Now, an error is reported for the first failed connection attempt and no more output is generated until a success message is printed when the connection succeeds. The connection error is only printed again the first time we fail to reconnect after a successful connection is lost. This change applies both to the GmsRtViewSqlDs connections and to the Historian connection to the RTVHISTORY database.

TIBCO Hawk Data Source

22482: GmsRtViewHawkCustomSSLHandler now called for HAWK 5.x ems connections by the TIBCO Hawk Data Source

Previously the GmsRtViewHawkCustomSSLHandler "MyHawkSSLHandler" was not called for TIBCO Hawk 5.x ems connections. This is no longer the case. Use of the GmsRtViewHawkCustomSSLHandler "MyHawkSSLHandler" to set Hawk SSL parameters is described in the "TIBCO Hawk SSL Parameters" Section of the TIBCO Hawk Data Source documentation.

Distribution

23226: Updated bundled Apache Tomcat 8.5.x to 8.5.35

The version of Apache Tomcat that is included with RTView has been upgraded from 8.5.24 to 8.5.35. Refer to apache-tomcat-8.5.35-sl\README_RTVIEW.txt for the configuration changes made to the distribution for user convenience.

Functions

23047: Combine Multi Data Server function now updates server list after initial instantiation

In previous releases, the Combine Multi Data Server function didn't include data servers that were added after the file containing the function was instanced. This has been fixed.

General

23146: Picking a label color for the obj_c1button when the object is disabled now supported

A property named fgDisabledColor has been added to obj_c1button, the button control. It specifies the color to use for the button text when the button is disabled. By default fgDisabledColor = -1 which indicates that gray is used for the disabled button text color, as in prior releases.

23186: New mechanism for encrypting/decrypting .rtv, .ini and .properties files

RTView has been enhanced to support a new Custom File Crypto Handler for encrypting and decrypting .rtv, .properties and .ini files. The Custom File Crypto Handler class extends the functionality of RTView by allowing you to write Java code that will get called when .rtv, .ini and .properties files are read, and when .rtv and .ini files are written. RTView does not write .properties files so the user is responsible for encrypting them in such a way that the can be decrypted by the Custom Crypto Handler. To implement your own Java Custom File Crypto Handler, create a Java class named MyFileCryptoHandler.java that extends GmsCustomFileCryptoHandler. In MyFileCryptoHandler.java, define the following methods: /** * Check if a file should be handled by the custom encoder. This is * called immediately before a call to <code>encryptString</code> * or <code>decryptString</code>. If <code>true</code> is returned, then * the custom handler will be used to invoke <code>encryptString</code> * or <code>decryptString</code>. * @param filename the name of the file to be checked * @return true if the custom handler will handle this file */ public boolean isFileHandled (String filename) /** * Encrypt the string before it is saved to the specified filename. This is only called if * isFileHandled returned true for the filename. * @param filename the name of the file being saved * @param stringToEncrypt the string value to encrypt. This will be the contents of the saved file. * @return the encrypted string value */ public String encryptString (String filename, String stringToEncrypt) /** * Decrypt the string after it is read in from the specified filename before it is processed by * RTView. This is only called if isFileHandled returned true for the filename. * @param filename the name of the file being opened * @param stringToDecrypt the string value to decrypt. This will be the contents of the file. * @return the decrypted string value */ public String decryptString (String filename, String stringToDecrypt) Every time a .rtv, .ini or .properties file is read or written by RTView, the isFileHandled method will be called. If it returns true for the specified file, the encryptString (if the file is being saved) or decryptString (if the file is being written) will be called. Add the gmsjrtview.jar file, located in the lib directory (found in your installation directory,) to your classpath when you compile your Custom File Crypto Handler. The compiled Custom File Crypto Handler class must be included in the RTView classpath by adding it to the definition for the RTV_USERPATH environment variable. To specify a different Custom File Crypto Handler class name, add the to RTV_JAVAOPTS: -Dcom.sl.rtview.customCryptoClassName=FullyQualifiedClassName. A sample Custom File Crypto Handler that uses the javax.crypto.Crypto class is included in the RTView installation under custom\rtvfilecrypto. To build it, run make_demo (.bat or .sh). When you run from that directory, all .rtv and .ini files will be saved using the encryption defined in the MyFileCryptoHandler class and all .rtv, .ini and .properties files will be decrypted using the same encryption. You can also encrypt and decrypt files in the command line using the encrypt_file (.bat or .sh) script. To encrypt: encrypt_file fileName To decrypt, run encrypt_file fileName -decrypt

Reporting

22541: Export to PDF in thin client no longer triggers server log error message

Previously, under certain circumstances, exporting a PDF, using the "Export to PDF" option would trigger a java.lang.IllegalStateException error message in the (display)server log (e.g. logs\displayserver.log). This is no longer the case.

22558: Ability to suppress headers and footers in generated PDF reports added

A capability to suppress headers and footers in generated PDF reports has been added to the report generator. This is achieved by means of adding new attributes to the report tag in the report config xml file The new attributes are: no_header no_footer which take a boolean value, and are false by default. Not adding the attributes will have the same behavior as previously. e.g. for a generated report with a header and footer <report name = "plant_status"> for a generated report with no header (but with a footer) <report name = "plant_status_no_header" no_header="true" > for a generated report with no footer (but with a header) <report name = "plant_status_no_footer" no_footer="true" > for a generated report with no header and no footer <report name = "plant_status_no_header_footer" no_header="true" no_footer="true">

Version 7.1.0 Release Notes

Data Sources

22387: OLAP and WMI data sources have been retired

The OLAP and WMI data sources have been retired from RTView.

HTTP Data Source

22327: Added support for additional JSON formats

The RTView HTTP Data Adapter JSON handlers have been enhanced to support additional JSON formats. The RTView HTTP Data Adapter comes with two default handlers that allow data to be sent to RTView applications by means of JSON data in specific formats as HTTP POST requests. This JSON data is mapped to GmsTabularData and can be used to update RTView function chains or write to RTView caches directly. The default handlers are contained in the gmsjhttpds.jar. Previously they expected JSON data in the same format as output by the rtvquery servlet when fmt=json. Now, they have been enhanced to support JSON same format as output by the rtvquery servlet when fmt=js, and fmt=json&arr=1. These new json formats are more compact and reduce the size of the htttp response, compared to the original fmt=json http response. fmt=js is the JavaScript Array Response Format The following is a JavaScript Array response format, where <DataType> is one of the following strings: string, int, long, double, or date. The first row in the array contains the column names, the second row contains the column data types, and the remaining rows are the data rows from the data table. This format is the most compact format. [ ["column 1 name", "column 2 name", ...], [DataType, DataType, ...], [value for column 1 in row 1, value for column 2 in row 1, ...], [row 2 values, ...] ... ] fmt=json&arr=1 is JSON Response Format, but the JavaScript array response will be used for data rows in the response, thus "metadata":[ {"name":"column 1 name","type":DataType}, ... metadata for other columns ... ], "data":[ [value for column 1 in row 1, value for column 2 in row 1, ...], [row 2 values, ...] ... ] }

JMX Data Source

22083: Jmx commands no longer fail silently when RTView isn't connected

In previous releases, if a jmx command failed because RTView wasn't connected, it failed silently. This has been fixed and the error is reported.

Demos

22395: WMI and OLAP have been removed from demos

WMI and OLAP references have been removed from the dstutorials demo.

Display Server

22117: Tomcat no longer throws an error if image path contains a backslash

A bug has been fixed in the thin client which would cause Tomcat 8.5+ to throw an IllegalArgumentException if the path to an image contained a backslash. The full exception is as follows: java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

Distribution

21999: Signed .jar files have been retired

The zip file of SL-signed libraries at lib\signed_jars.zip has been removed from the product, as Java applets are no longer supported by RTView.

22402: Bundled Apache Tomcat update to 8.5.24

The version of Apache Tomcat that is included with RTView has been upgraded from 7.0.72 to 8.5.24.

General

22080: Command line arguments with spaces now process properly on Unix

In previous releases, quoted command line arguments with spaces did not work on unix. This has been fixed.

Java Version Dependencies

22161: Java 1.9 is now officially supported

Java 1.9 is now officially supported. NOTES: Users of IBM DB2 may need to use the db2jcc.jar driver from DB2 11.1 for compatibility with Java 1.9

Object Library

22398: Fx Graphs now supported in 64 bit java on Windows

The Fx Graph objects are now supported in the Builder & Viewer in 64 bit versions of Java on Windows. Previously only 32 bit java was supported. This enhancement does not affect Linux or MacOS rtview installations. The Fx Graph objects are still not supported in the Builder/Viewer on those platforms.

Charts (General)

22114: webChartFlag can now be set in styles sheet for bar and trend graphs

In prior releases, the webChartFlag property could not be set on obj_bargraph and obj_trendgraph02 objects via an rtview stylesheet (.rts) file. This has been fixed, so the following stylesheet entries will now set webChartFlag on all such objects: obj_trendgraph02 { webChartFlag: 1; } obj_bargraph { webChartFlag: 1; }

Pie Charts

19863: Added support for HTML pie charts

BASICS: The thin client now supports a web pie chart. The web pie chart is a pure HTML implementation of an RTView pie chart object. In the RTView thin client, the web pie chart provides an interactive, high performance chart without requiring the Flash player or other browser plugin. There is no web pie chart in the Builder palette. Instead, a new property named webChartFlag has been added to the flex (obj_fxpie) and swing (obj_pie) pie charts. To enable the web pie chart the user simply sets the webChartFlag property to true (checked) on a flex or swing pie chart instance. Then, when the display is opened in the thin client in a web compatible browser, the web pie chart will appear in place of the flex or swing pie chart. This feature is similar to the webChartFlag property that has been available on the flex and swing trend graph and bar graph objects in several prior releases. PROPERTIES: The web pie chart supports all of the major properties available in the flex and swing pie charts. However several minor properties are not supported or have limited support in the web pie chart. These properties are listed at the end of this note. BEHAVIOR: In addition to the properties listed below, there are some behavioral differences between the web pie chart and the flex/swing pie chart as follows. 1) Stretching: Unlike the swing pie chart obj_pie, the web pie chart does not stretch to an oval shape to fill the available space. Instead the web pie chart remains round, with its diameter determined by the smaller dimension. (The flex pie chart is always round too). 2) Slice order: In the swing and flex pie charts the bottom edge of the first wedge/slice, corresponding to the first row in the valueTable, is drawn at 0 degrees (that is, its bottom edge is horizontal). The slices for subsequent rows follow in counter-clockwise order. In the web pie chart, the first slice is drawn at 90 degrees, so its left edge is vertical. The slices for subsequent rows follow in clockwise order. 3) Tooltip: The tooltip on the web pie chart shows the label and value for a wedge, but does not show its computed % 4) Wedge labels (on obj_fxpie only): On obj_fxpie, wedge labels are visible unless wedgeLabelPosition = None(0), as expected. However, the label shows only the wedge's label, not its value or %. Also the wedgeLabelPosition values of "Inside with Callout(3)" and "Outside(4)" give the same result as "Callout(1)" on the html5 chart. If wedgeLabelPosition = Inside(2), some wedge labels may spill outside of their wedge, depending on the size of the label and wedge. ENABLING / DISABLING: The web pie chart can be enabled for all obj_fxpie (flex) instances by adding the following rule to an rtview stylesheet (.rts) file loaded by the display server: obj_fxpie { webChartFlag : 1 } Similarly, the web pie chart can be enabled for all obj_pie (Swing) instances by the following rule: obj_pie { webChartFlag : 1 } See the documentation for more information on using RTView stylesheets. If a stylesheet is used note that the webChartFlag value can still be overridden and set to zero (false) on individual instances. UNSUPPORTED/IGNORED PROPERTIES: As mentioned earlier, some chart properties are hidden in the builder if webChartFlag is checked. These properties of obj_fxpie are hidden if webChartFlag is checked: bg3dFlag bgGradientFlag labelColumnFormat rowLabelVisFlag rowNameVisFlag legendBgGradientFlag legendWidthPercent legendValueVisFlag legendPercentVisFlag entranceDuration entranceTrigger entranceType exitDuration exitTrigger exitType wedgeExplodeRadiusPercent wedgeLabelTextColor wedgeLabelTextFont These properties of obj_pie are hidden if webChartFlag is checked: bgEdgeWidth bgGradientMode bgGradientColor2 bgRaisedFlag bgShadowFlag bgStyle borderPixels labelColumnFormat rowLabelVisFlag rowNameVisFlag labelMinTabWidth legendBgGradientMode legendBgGradientColor2 legendWidthPercent legendValueVisFlag legendPercentVisFlag outlineColor transparencyPercent

Version 7.0.0 Release Notes

Alerts

21795: Fixed an issue where the Cleared Reason for an alert was incorrect

In prevous releases, the Cleared Reason was sometimes incorrect after an alert was disabled and re-enabled. This has been fixed.

21915: New Alert Scheduler added to RTView

RTView Alerts have been enhanced to support enabling and disabling alerts via schedule. In previous releases, schedules could only be applied to sql queries. In this release, the same schedules can also be applied to alerts. See the release note for 20179 or the Core User Guide for information on defining schedules. Configuration In addition to the schedule definitions, a table with the following columns is required to apply the schedules to alerts: Alert Name - The name of the alert to which the schedule will be applied. Alert Index - The alert index to which the schedule will be applied. If the Index Type is Default, this values should also be Default. For scalar alerts, this must be set to Default. Index Type - The index type of the Alert Index. If the value is All, the Alert Index value is assumed to contain all indexes. If the value is Default, this schedule will be applied to all alert indexes on the specified alert that do not match another row in this table. For scalar alerts, this must be set to Default. For tabular alerts that do not define any index types, this must be set to Default or All. Schedule - The name of a schedule from the RtvScheduleTable. Enabled - If false, this alert map row is not used. Like the schedule and rule tables, this table can be xml, database or any other table that can be retrieved via an RTView data source. The user must make the RtvAlertScheduleMap table available to RTView by defining a global reference function named RtvAlertScheduleMap. For scalar alerts, the Alert Index and Index Type must both be set to Default. For tabular alerts, if an alert name and alert index matches more than one row of the RtvAlertScheduleMap, the row with the Index Type All takes precedence. For all other Index Type values, the order in which they are specified in the indexTypes property on the alert definition controls the order of precedence. If an alert index doesn't match any of the rows, the schedule for the Default Index Type for the matching Alert Name is used. If there is no Default Index Type for that Alert Name, no schedules are applied to the alert. Runtime Behavior Schedules are applied to scalar alerts as follows: - If the alertamp, schedule or rule is not Enabled, it is ignored. - If the Exception for the Rule is set to true, the alert will be disabled from the Start Time to the End Time at which point it will revert back to the alert's enabled property value. This will have no effect if the alert's enabledFlag property value was previously false. When an alert is cleared due to being disabled via a schedule event, the Cleared Reason will be SCHEDULE STARTED if the alert was disabled because a schedule rule became active. The Cleared Reason will be SCHEDULE ENDED if the alert was disabled because a schedule rule became inactive. - If the Exception for the Rule is set to false, the alert will be enabled from the Start Time to the End Time at which point it will revert back to the alert's enabled property value. This will have no effect if the alert's enabledFlag property value was previously true. - Note that the Rule Interval value is not used by the alerts. Schedules are applied to tabular alerts as follows: - If the alert's enabledFlag is false, the scheduler will be ignored. In order to use schedules for tabular alerts, the alert's enabledFlag must be turned on. - If the alertmap, schedule or rule is not Enabled, it is ignored. - If the Exception for the Rule is set to true, the alert index will be disabled from the Start Time to the End Time at which point it will revert back to the alert's rowEnabledTable property value. This will have no effect if the alert index's rowEnabledTable property value was previously false for the alert index. When an alert is cleared due to being disabled via a schedule event, the Cleared Reason will be SCHEDULE STARTED if the alert was disabled because a schedule rule became active. The Cleared Reason will be SCHEDULE ENDED if the alert was disabled because a schedule rule became inactive. - If the Exception for the Rule is set to false, the alert index will be enabled from the Start Time to the End Time at which point it will revert back to the alert index's rowEnabledTable property value. This will have no effect if the alert index's rowEnabledTable property value was previously true for the alert index. - Note that the Rule Interval value is not used by the alerts. Schedule Events Table A new table, Schedule Events, has been added to the Alert Data Source. This table allows visibility into schedule events. It is updated with a new row each time a schedule sets the enabled flag on an alert or alert index. New rows replace the previous table content. In order to see all schedule events, you will need to store this table in a cache. This table contains the following columns: - Timestamp - The timestamp of the schedule event. - Alert Name - The name of the alert on which the schedule event occurred. - Alert Index - The alert index on which the schedule event occurred. This will be blank scalar alerts. For tabular alerts, this will be either be * or the name of the alert index depending on how the alert is configured in the RtvAlertScheduleMap. If the same schedule was applied to all alert indexes by specifying "Default" for both the Alert Index and Index Type, this value will be *. Otherwise, it will be the alert index value. - Schedule - The name of the schedule that generated the event. - Rule - The name of the rule in the schedule that generated the event. - Rule State - This will be STARTED if a rule became active. It will be ENDED if a rule became inactive. - Enabled - The enabled value of the alert or alert index after this schedule event occurred. Note that the Schedule Events table will be updated any time a schedule event occurs regardless of whether it results in a change to the enabled state of the alert. For example, you have an alert configured with a schedule rule that sets the enabled to false. If the alert's enabled state is already false when the schedule rule becomes active, it will not result in a change to the enabled state of the alert. Limitations Event alerts that are not configured with an alert index are not currently supported by the scheduler. Additional Changes This task also fixed a bug in the SQL scheduler where if specific dates are specified (instead of days of the week), the scheduler always returned the last date in the list as the next scheduled query time even if it wasn't the soonest date.

21924: Fixed an issue with disabling event alerts

In previous releases, disabling event alerts was sometimes ignored due to a bug that was introduced in RTView Classic 6.7.0, RTView EM 3.2.0. This has been fixed.

Builder

21672: Builder enhanced to remember dialog window sizes and positions

The Display Builder has been enhanced to automatically save and restore the size and location of the following dialogs: - Open (File->Open) - Save (File->Save/Save-As) - Function Results (Function Dialog->Result Button) The Tools->Reset Window Layout menu option and the -resetlayout command line option restore the size and location of these windows in addition to the other windows that were previously reset.

Builder - Options Dialogs

18560: Fixed a typo in Application Options

A typo in the Application Options Alert Global Notifications tab has been fixed.

Builder - Property Dialogs

15582: Japanese label for "Update Mode" property now shown on certain dialogs

Previously, the Japanese label for "Update Mode" property was not shown on certain polled ds attach to data dialogs when running on a Japanese OS. The English label was used instead. This is no longer the case. Affected dialogs include the custom polledds and polledds2 example data sources, and the http rest data source

Data Historian

21921: Microsoft SQL Server 2014 and 2016 now supported

Microsoft SQL Server 2014 and 2016 are now supported as databases for use with the Data Historian, provided that the latest JDBC driver is used (sqljdbc41.jar with Java 1.7, sqljdbc42.jar with Java 1.8).

Data Server

21898: Fixed an issue with rtvquery returning errors on valid query strings

In previous releases, the rtvquery servlet would sometimes return an error of "No data received before timeout, query may be invalid" for a specific, valid cache query string, on every attempt. The servlet needed to be restarted to clear the error. This has been fixed.

Data Sources

Cache Data Source

21689: Fixed an issue with the "Extend with SQL" cache feature

In prior releases, the "Extend with SQL" feature of the cache data source could cause thread growth if the history database connection was undefined or unavailable. This is now fixed.

Display Server

21853: Fixed an issue with small numbers not updating to zero in the thin client

In previous releases, the value displayed in an obj_rect_ilv object would not change if the previous value was greater than zero and less than one, and a value of zero was applied. This problem occurred only in the thin client and is now fixed.

21906: Thin client enhanced to check user role access on each request

In prior releases, after a user had logged into the thin client, the user could manually enter a specific URL in the same browser instance and possibly view data from rtview displays to which the user's role should have denied access. This is fixed.

21908: Enhanced display server with option to limit access to specific panel files

The display server now supports a "permitpanel" option to specify the panel layout files that the server will read. A panel layout for the thin client is requested from the display server with a URL parameter as follows: panels.jsp?file=X where X is the name of the panel layout file that the server should read. By default, the display server will attempt to read any filename on the server that is specified by the URL parameter. If the file is a valid panel layout file, the thin client will use it. But if the file does not exist, a "no such file" error is displayed in the browser, and if the file exists but does not contain the expected layout information, a "no panels found" error is displayed in the browser. The permitpanel option allows you to specify the file(s) which the display server will read in response to a panels.jsp request. Requests from panels.jsp for any other files are rejected with a "Permission denied" error shown in the browser, regardless of whether the file exists or not, and the server will not attempt to read such files. The option may be specified multiple times to allow access to multiple panel files. Command-line example: run_displayserver -permitpanel:PANELS.ini -permitpanel:layout.xml DISPLAYSERVER.ini example: permitpanel PANELS.ini permitpanel layout.xml In addition, the display server supports another new option to prevent attempts to load remote files, as follows: -permitfile:LOCAL_ONLY If that option is specified any rtv or image files that are referenced by URL will not be read and the server will log a message similar to the following: non-local file read permission denied: http://host/somefile

21909: Tomcat logs no longer produce gratuitous rtvCleanup errors

In previous releases the following error message appeared in the Tomcat log at shutdown, for each deployed copy of the rtvdisplay servlet: "SEVERE: The web application [/rtvdisplay] appears to have started a thread named [rtvCleanup] but has failed to stop it. This is very likely to create a memory leak." Starting with this release, the error message should be seen less often in the log file, although it may still appear occasionally. In any case, there is no danger of a memory leak when tomcat is shutdown.

21912: Fixed phishing vulnerabilities in thin client

In prior releases, it was possible to create phishing URLs which appeared to be directed at the rtview thin client but would redirect the user to another site, or download and possibly execute a file. These vulnerabilities have been fixed.

21990: Fixed a vulnerability in the thin client

An XSS (cross-site scripting) vulnerability in the thin client login.jsp file has been fixed.

21996: Fixed an issue with thin client resizing

In previous releases, after a display is resized by the thin client to fit the browser window, the black border around the default button (if any) was drawn in the button's original position, rather than the button's new position. This is fixed.

Distribution

21794: Bundled Apache Tomcat updated to 7.0.72

The version of Apache Tomcat that is included with RTView has been upgraded from 6.0.18 to 7.0.72.

Object Library

Tables

21045: Misconfigured table objects no longer cause javascript exceptions in the thin client

A bug in the thin client has been fixed which could cause a javascript exception if the columnFormat on a table object was misconfigured to specify a format for a string column, and a backslash character appeared in the column.

Platform Support

21871: Support for Java 1.6 dropped

RTView is now built with Java 1.7. Java 1.6 is no longer supported.

Version 6.9.0 Release Notes

21524: Format Table Columns function enhanced to preserve numeric column types

The Format Table Columns function supports a new argument, described below, to control its treatment of numeric columns. Format Mode - If 0 then all numeric columns are converted to strings in the result, using the local default format for any numeric columns not specified in Column Format(s). If Format Mode is nonzero, then only the numeric columns specified in Column Format(s) are formatted, all other numeric columns in the table remain numeric. The default value of Format Mode is zero, which makes the function behave as it did prior to this enhancement.

21582: Thin Client now adds scrollbars at smaller resolutions

Displays in the thin client with a minimum size and resize mode = Layout now correctly display scrollbars at smaller resolutions.

21668: Enhanced caches with new initialization option

BACKGROUND: If a cache's schemaTable property is not specified, then the cache's schema (column names and types) is copied from the first data table applied to the cache that contains at least one data row. Data tables that contain columns but no rows are ignored. In some configurations that can delay cache initialization and cause undesired behavior in functions and displays attached to the cache. ENHANCEMENT: An option has been added to the cache data source to initialize a cache's schema from the first data table applied to the cache, even if the table contains zero data rows. The new option can be specified on the command-line as follows: -cacheds:storeempty Or in CACHEOPTIONS.ini as follows: storeempty true Or in an rtview properties file as follows: sl.rtview.cache.storeempty=true The new option is disabled by default. If the new option is not specified, the cache's schema is initialized by the first data table containing at least one data row that is applied to the cache, as in all prior releases. If a cache's schemaTable property is specified then the cache's schema is always initialized from that table, as in prior releases, regardless of the new property setting.

Alerts

21677: Enhanced Alert data source

The Alert data source has been enhanced to support a new table named Alert Definitions. This table contains a row for each alert with the following columns: Alert Name - the name of the alert File Name - the name of the file containing the alert definition Substitutions - the substitutions specified when the alert definition file was loaded.

Commands

21562: Open Browser command enhanced to open the url in a new browser tab

For an Open Browser command with Browser Window = Named and Window Name = _tab, the thin client will now open the URL in a new browser tab rather than in a popup browser window. In all other cases the command behaves as in prior versions. This feature requires the browser's settings to be configured to automatically open a new tab for popup windows. That is the default setting in all browsers. But if the settings are configured to open popups in a new window, then the Open Browser command will open the URL in a new window as in prior releases.

Data Historian

21683: Fixed a retention / compaction issue

When a mixture of simple retention and retention via advanced compaction was used, only the first table using simple retention was processed for retention. This has been corrected.

21699: Enhanced Historian compaction to avoid long delays

The Historian smooth compaction code no longer performs a row count. This prevents long delays during smoothing by avoiding Select Count(*) calls.

Data Server

21648: Enhanced rtvquery servlet to handle +/- infinity and NaN

In prior releases, the rtvquery servlet encoded the numeric values NaN (not a number), positive infinity, and negative infinity in a json or jsonp response as "" (an empty string). This makes it impossible for a client application to distinguish between those three values, when processing a json or jsonp response. In this release, the rtvquery servlet supports a URL parameter to encode NaN, positive infinity, and negative infinity in a json or jsonp response as the strings "NaN", "Infinity", and "-Infinity" respectively. The new parameter is named "nanok" and a value of true specifies the new behavior. The default value is false. For example, the following URL specifies the new option: http://somehost/rtvquery/cache/MyCache/current?fmt=json&nanok=true The other response formats (xml, xmlrtv, js, text) supported by the rtvquery servlet have always used NaN, Infinity, and -Infinity. That behavior has not been changed, so the nanok=true parameter is not needed to make those values appear in the response in those formats.

21684: Enhanced rtvquery servlet to support CORS

The rtvquery (REST) servlet has been enhanced to support CORS (Cross-Origin Resource Sharing). A new optional property named AllowOrigins may now be specified in rtvquery.properties. The property value is a string that specifies which domains are allowed to send requests to the servlet. By default AllowOrigins is blank, which indicates that requests are allowed only from the same domain that hosts the rtvquery servlet (as in all prior releases). Specify a value of * to indicate that requests are allowed from any domain: AllowOrigins=* Or, specify a comma-separated list of the domains which may make requests, in this format: protocol://hostname_or_address:port For example: AllowOrigins=http://192.168.20.11:3456,https://SomeHost:6789

Data Sources

21658: HTTP REST DS

The RTView HTTP REST Data Adapter, is an extensible data adapter that allows RTView to interact with REST APIs by means of HTTP Requests. The Data Adapter provides an extensible framework with RTView, using the Apache HTTP Client to Make HTTP requests. Handlers are used to abstract the process of making an HTTP request. The RTVHttpRest adapter supports data attachments which will execute an HTTP Request, to get an HTTP Response, which can then be processed to extract a data table for use within RTView. The data attachments specify the handlers used for the various parts of making and processing an HTTP Request and Response. Default Handlers are available, and the user can implement custom handlers to extend functionality.There are examples of custom handlers in the custom/rtvhttprest directory of the RTView installation. Abstracting the HTTP Request / Response sequence in RTView Consider the following simplified execution of an HTTP Request using the Apache HTTP Client library which handles the response and updates a data attachment with GmsTabularData: // Get a HTTP Client CloseableHttpClient httpClient = getHttpClient(dataObj); // Get a HTTP Request HttpUriRequest request = getRequest(dataObj); // Execute request using client to get response CloseableHttpResponse response = httpClient.execute(request); // Handle response to get Tablular Data GmsTabularData table = getTabularData(response, dataObj, ...) // Update the data attachment(s) ds.storeData(dataObj, table); The above code can be used to interact with any HTTP REST API. The processing that varies has been abstracted out and can be supplied by pluggable handlers (java classes) which implement the appropriate interface. These can then be specified in the data attachment for the given HTTP Request and must be on the classpath of the RTView application at run time. The Attatch to RTVHttpRestData dialog contains the following fields: - Client Handler: A text field used to specify the fully qualified name of the java class used to implement the ClientHandler interface (com.sl.gmsjhttprestds.ClientHandler). The ClientHandler returns a CloseableHttpClient (client) that is used to execute a request (returned by a RequestHandler implementation) to return a response that is processed by a ResponseHandler. The DefaultClientHandler (com.sl.com.sl.gmsjhttprestds.DefaultClientHandler) can be used to return a default client. For more sophisticated client interactions a custom ClientHandler implementation can be written and used. See the RTView javadocs for more details. There are examples of custom handlers in the custom/rtvhttprest directory of the RTView installation. Typical uses of a custom ClientHandler implementation would be to set header fields required to interact with a REST API, e.g. Authentication tokens - Request Handler: A text field used to specify the fully qualified name of the java class used to implement the RequestHandler interface (com.sl.gmsjhttprestds.RequestHandler). The RequestHandler returns a HttpUriRequest (request) that is executed by a client handler to return a response that is processed by a ResponseHandler. The DefaultGetRequestHandler (com.sl.com.sl.gmsjhttprestds.DefaultGetRequestHandler) can be used to return a default HTTP GET request. Default request handlers are provided for all the HTTP request operations. Typical uses of a custom RequestHandler implementation would be to set header fields required to interact with a REST API (e.g. Authentication tokens) or process information supplied in the request string argument to enhance the contents of a request if it cannot be specified by the request URI alone. For more sophisticated request handling, a custom RequestHandler implementation can be written and used. See the RTView javadocs for more details. - Request: A Text field used to specify the URI used to make the request executed by the request handler. The Request Handler may use the request as is, or process it to extract additional information used in the request. The format of a URI, used by an HTTP request:[//[user:password@]host[:port]][/]path[?query][#fragment] - ResponseHandler: A text field used to specify the fully qualified name of the java class used to implement the ResponseHandler interface (com.sl.gmsjhttprestds.ResponseHandler) The ResponseHandler returns a GmsTabularData that is extracted by the RequestHandler from the response as a result of a request obtained from a RequestHandler being executed by a client obtained from a ClientHandler. The DefaultResponseHandler (com.sl.com.sl.gmsjhttprestds.DefaultResponseHandler) can be used to obtain default GmsTabularData containing information from the response. Typical uses of a custom ResponseHandler implementation would be to extract GmsTabularData from a given response. For more sophisticated response handling a custom ResponseHandler implementation can be written and used. See the RTView javadocs for more details. - Column(s): A combo box for specifying the names of the table columns to include in the result, or * (the default) for all columns. - Filter Rows: A checkbox to enable the following 2 fields: - Filter Column: The name(s) of the columns(s) to which the Filter Value should be applied. - Filter Value: The filter value(s) to be applied to the filter columns. See the RTView documentation for details on the format to be used for specifying filter values. Note that wild cards and regular expressions are not supported in the Filter Value field. For that type of filtering, various standard RTView functions are available.

Cache Data Source

21669: Enhanced caches with new trim option

An option has been added to the cache data source to remove rows periodically from a cache's history table according to its historyTimeSpan property. By default, that operation is performed only when new data is applied to the cache. The new option is useful in rare cases where new data may be applied to the cache at time intervals (e.g. 1 hour) that are longer than the cache's historyTimeSpan (e.g. 30 minutes). The new option can be specified on the command-line as follows: -cacheds:trimhist Or in CACHEOPTIONS.ini as follows: trimhist true Or in an rtview properties file as follows: sl.rtview.cache.trimhist=true If the new option is specified, the historyTimeSpan limit is checked on all caches every 30 seconds, approximately. The new option is disabled by default. If the new option is not specified, then the historyTimeSpan limit is only checked when new data is applied to the cache as in all prior releases.

HTTP Data Source

21522: Added new HTTP Data Adapter

The RTView HTTP Data Adapter embeds a HTTP server in RTView to handle data sent as HTTP Requests. When enabled, the embedded HTTP server is opened on a specified port, and delegates requests to handlers on given URLs. The RTView HTTP Data Adapter comes with two default handlers that allow data to be sent to RTView applications by means of JSON data in a specific format as HTTP POST requests. This JSON data is mapped to GmsTabularData and can be used to update RTView function chains or write to RTView caches directly. RTView can be updated by clients that can send HTTP POST requests, containing JSON data. Handlers receive the data, map the data to GmsTabularData, and then perform actions with that data. The default handlers are contained in the gsmjhttpds.jar. They expect JSON data in the same format as output by the rtvquery servlet when fmt=json. If no metadata is present, all columns are defined as string type. The rtvquery JSON response format is defined as: { "metadata":[ {"name":"column 1 name","type":DataType}, ... metadata for other columns ... ], "data":[ {"column 1 name":"row1, column1 value", ... data for other columns in row 1}, ... data for other rows ... ] } The expected format is a JSON object that can be mapped to GmsTabularData. The JSON object has two named members: "metadata" describing the metadata (column names and types for the following data), and "data" containing the data values. The "metadata" member is a name:value pair where the value is a JSON array of JSON objects, one per column. The column metadata objects have two members: "name" and "type". The "name" member is a name:value pair with the column name as its value. The "type" member is a name:value pair with the column type as its value. Valid column types are GmsTabularData column types: "string", "long", "int", "double", "float", "date", "boolean". The metadata is used to define the column types for the mapped GmsTabularData. If the metadata member is not present, the mapped GmsTabularData will use "string" for all columns. The "data" member is a name:value pair where the value is a JSON array of JSON objects, one per row of data in the mapped GmsTabularData. Each row is a JSON object, with member name:value pairs, one per column. Each column member is a name:value pair, where the name is the name of the column, and the value is the value of that column for that row. When the RTView HTTP Data Adapter is enabled (using the default RTVHTTPOPTIONS.INI file, contained in custom\rtvhttp), it has the following options set: Enabled: true Port: 9099 Root Url: /rtview Use HTTPS: false And sets the following RTVHttp Handlers DEFAULT_CACHE_WRITER Handler Name:DEFAULT_CACHE_WRITER Java Class: com.sl.gmsjhttpds.DefaultJsonCacheWriter Handler URL: /write/cache/ DEFAULT_JSON_HANDLER Handler Name:DEFAULT_JSON_HANDLER Java Class: com.sl.gmsjhttpds.DefaultJsonHandler Handler URL: /json/data/ DEFAULT_JSON_HANDLER is the Default Handler. The default handlers are contained in the gsmjhttpds.jar. They expect JSON data in the same format as output by the rtvquery servlet. If no metadata is present, all columns are defined as string type. HTTP POST requests to /rtview/json/data/<table_name> will be handled by the DEFAULT_JSON_HANDLER, which will make the data available via rtvhttp data attachments using the supplied <table_name>. Data sent to /rtview/json/data/<table_name> will be output by RTView HTTP data attachments, where the "Handler Name:" is set to DEFAULT_JSON_HANDLER, and the "Table Name:" is specified as the <table name> in the URL. For Example: Data sent to /rtview/json/data/MyData1 would be output by RTView HTTP data attachments, where the "Handler Name:" is set to "DEFAULT_JSON_HANDLER", and the "Table Name:" is "MyData1". Likewise, data sent to /rtview/json/data/MyData2 would be output by RTView HTTP data attachments, where the "Handler Name:" is set to "DEFAULT_JSON_HANDLER", and the "Table Name:" is "MyData2". Different data can be input to different function chains by being sent to different URLs in this way. HTTP POST requests to /rtview/write/cache/<cache_name> will be handled by the DEFAULT_CACHE_WRITER, which will write the data to the current table of the named cache, <cache_name>. Since the data is written to the cache directly by the handler using the cache name in the URL, no data attachments need be configured in this case. For Example: Data sent to /rtview/write/cache/CACHE1 would be written to the current table in cache "CACHE1". Likewise, data sent to /rtview/write/cache/CACHE2 would be written to the current table in cache "CACHE2". Different data can be written to different caches by being sent to different URLs in this way.

21646: A new servlet has been added for use with the HTTP Data Source

A new RTVPost Servlet has been added to RTView. This is a proxy servlet for use with the HTTP Data Source. It is useful for cases where an application cannot post directly to the application running the HTTP Data Source due to security or post access limitations. For RTView Enterprise Monitor users, this is useful for the NODEMON and DOCKERMON solution packages in the case where your node or docker application is outside the firewall and is limited to posting to port 80. The RTVPost servlet is in RTV_HOME\servlets\rtvpost\rtvpost.war. The following properties are supported in rtvpost.properties: proxyHost: The http host to which to post. The default is localhost. proxyPort: The http port to which to post. The default is 3275. proxyPath: The path to which to post. This is commented out by default. RTView Core users can modify RTV_HOME\servlets\rtvpost\rtvpost.properties and run the make_war script to rebuild the rtvpost.war file. RTView Enterprise Monitor users can run RTVAPM_HOME\common\bin\make_rtvpost_war from their project\webapps directory as follows: make_rtvpost_war appname -host:somehost -port:someport Where appname is the name of your application. The host and port options are optional. If not specified, the defaults above will be used. The appname argument is used to name the war file, appname_rtvpost.war. To modify the proxyPath, copy RTV_HOME\servlets\rtvpost\rtvpost.properties to your webapps directory, modify the proxyPath value and then run make_rtvpost_war as described above. To use the rtvpost war file, deploy it to your application server. HTTP posts should use the URL for rtvpost and will be forwarded to the specified proxyHost and proxyPort.

IBMMQ - IBM WebSphere MQ

20881: Version Restriction Removed for MQ Client jars

Previously the IBM MQ data adapter checked for the presence of a class that was only in a version specific set of MQ client jars. This is no longer the case. Users can now use any version of MQ client jars (greater than or equal to MQ version 6.0) in their classpath when using the IBM MQ data adapter. Note: Since the actual set of required MQ client jars varies by version of MQ, it is suggested that the set of MQ Client jars be put in a directory so that the java classpath "wildcard" mechanism can be used to refer to all the jars in a directory, rather than having to enumerate every jar file on the classpath. The RTV_USERPATH environment variable can be used to set a user defined classpath. for example: SET RTV_USERPATH=".;.\lib_7.1\*" or SET RTV_USERPATH=".;.\lib_7.5\*" Note: for later versions of MQ (8.0, 9.0) a single relocatable jar com.ibm.mq.allclient.jar is available.

SQL Data Source

21680: Fixed an issue with encrypted database passwords

In version 6.7, a problem was introduced that caused an error to print to the console for sl.rtview.properties.databasePassword property if the property value was encrypted. In the error message, the databasePassword in the error was shown in plain text. This problem has been fixed.

TIBCO Hawk Data Source

21851: An issue with the handling of the onTermination event has been fixed

In a previous version, in task 21299, a bug was introduced to the onTermination() error handling. In some cases, it would cause all data from the microagent that sent the error to stop coming into RTView. This has been fixed.

Display Server

21525: Added support for removing items from thin client context menu

Items can now be removed from the thin client context menu. This is done by specifying the names of the items in a property named MenuItemsToHide in rtvdisplay.properties. Multiple names are separated by commas. For example, the following will remove the "Export Table To HTML", "Export Table to Excel", "Export PDF", and "Status" items from the menu: MenuItemsToHide=PDF,ExcelTable,HtmlTable,Stat After adding the MenuItemsToHide property to rtvdisplay.properties, the corresponding .war file must be rebuilt and redeployed. Here are the names of all of the menu items, with the English label string of the menu item in quotes if it differs from the item name: Refresh Back Next Command "Execute Command" Drill "Drill Down" ExcelTable "Export Table to Excel" (Internet Explorer only) HtmlTable "Export Table to HTML" PDF "Export PDF" CopyCell "Copy Cell Value" Stat "Status" Logoff "Log Off" Use the menu item name when configuring MenuItemsToHide, not the label string.

Functions

21647: ArrayIndexOutOfBoundsException has been fixed

In previous releases, it was possible to get an ArrayOutOfBoundsException when closing a display containing a composite that was configured with the substititons property. This has been fixed.

General

21638: Firefox now displays button states the same as other browsers

In the thin client in Firefox, a button control (obj_c1button) will now appear depressed when the user clicks on it, as it does in other browsers.

21772: Extra-bold font in Firefox fixed

In the previous release, objects using font index 7 (sans-serif bold) would appear extra bold in some versions of Firefox if the display server was configured to use the extended font feature with arimob.ttf assigned to font 7. This has been fixed.

Object Library

Bar Charts

19862: Added new web bar chart

BASICS: The thin client now supports a web bar chart. The web bar chart is a pure HTML implementation of an RTView bar chart object. In the RTView thin client, the web bar chart provides an interactive, high performance chart without requiring the Flash player or other browser plugin. There is no web bar chart in the Builder palette. Instead, a new property named webChartFlag has been added to the flex (obj_fxbar) and swing (obj_bargraph) bar charts. To enable the web bar chart the user simply sets the webChartFlag property to true (checked) on a flex or swing bar chart instance. Then, when the display is opened in the thin client in a web compatible browser, the web bar chart will appear in place of the flex or swing bar chart. This feature is similar to the webChartFlag property that has been available on the flex and swing trend graph objects in several prior releases. PROPERTIES: The web bar chart supports all of the major properties available in the flex and swing bar charts. However several minor properties are not supported or have limited support in the web bar chart. These properties are listed at the end of this note. BEHAVIOR: In addition to the properties listed above, there are some behavioral differences between the web bar chart and the flex/swing bar chart as follows. - Legend: The legend does not show bar or trace data (y) values. Data values are only shown in the mouseover tooltips (if mouseOverFlag = 1). Labels longer than 200 pixels are wrapped in the legend, and labels longer than 150 pixels are clipped in the tooltip. The width and height of the legend is different between the bar char implementations. - Bar width and spacing will differ slightly between the chart implementations. - Bar values: The web chart automatically selects a text color and shadow to contrast with the corresponding bar, ignoring barValueTextColor. - Y axis autoscaling: Given the same y data values, the web bar chart may choose a different value range for the y axes in autoscale mode as compared to the older charts. Also the format and number of y axis labels shown on the web chart are determined automatically, unlike the swing bar chart where various yAxis* properties are used. - X axis label rotation threshold, spacing, and count differ between implementations. Also the web chart may skip labels on some bar groups to avoid crowded or overlapping labels. - Zooming: The user can zoom in on the chart's X axis (Y axis if drawHorizontalFlag = 1) by dragging across the plot area. - Reset button: If the user changes the chart's visible range, via the scrollbar or by dragging the cursor to perform a zoom, then a button labeled Reset will appear in the upper left corner of the plot area. A click on this button will reset the x axis to its original settings. - Scrolling: If the mouse is moved below the bottom of the chart while dragging the scrollbar, the scrolling will stop. This is unlike the behavior of other rtview objects, which will continue to scroll until the mouse button is released. - The perspective in 3D mode differs (above-right perspective in swing chart, center perspective in web chart). - The waterfall total bar (if visible) is not labeled on the X axis of the web chart - The web chart plots each trace point in the center of the corresponding bar group, while the swing chart plots each trace point on the center of each corresponding bar. OTHER KNOWN ISSUES/DIFFERENCES: - The max zoom-in level is one bar group. For example if there are 2 bars in each bar group, there will usually be at least 2 bars visible regardless of how far you zoom in. But, if the user intentionally zooms in on blank space between bars it is possible to end up with no visible bars. - After zooming or scrolling, the y axis range (x axis in horizontal mode) may change to reflect the range of values of the visible bars. This is designed behavior. - If draw3dFlag is set, dragging the scrollbar will also initiate a zoom-in, as though the user dragged in the plot area. This can be avoided by scrolling via clicks on the scrollbar arrows, instead. - Scrolling performance on a chart with many bars may be sluggish, depending on the vintage of the browser & host. - The chart's tooltip may overlap the Reset button making it difficult to click the button. Moving the mouse a bit will correct this problem. - Performance is affected by the number of bars, traces, trace points, use of trace line shadows, bar/trace fill, and other properties. Performance is also affected by the browser and version, and the CPU speed of the client host system. - On a touch interface, a swipe will scroll the chart left or right. - On a touch interface, a pinch-open gesture in the plot area will zoom the chart's range *in* to the pinched range. A pinch-close gesture will zoom out to the pinched range. A left/right swipe (or an up/down swipe in horizontal mode) will scroll the chart. The scrollbar (if visible) cannot be dragged reliably on a touch device, but the scrollbar arrow keys can be tapped. ENABLING / DISABLING: The web bar chart can be enabled for all obj_fxbar (flex) instances by adding the following rule to an rtview stylesheet (.rts) file loaded by the display server: obj_fxbar { webChartFlag : 1 } Similarly, the web bar chart can be enabled for all obj_bargraph (Swing) instances by the following rule: obj_bargraph { webChartFlag : 1 } See the documentation for more information on using RTView stylesheets. If a stylesheet is used note that the webChartFlag value can still be overridden and set to zero (false) on individual instances. SUMMARY OF UNSUPPORTED/IGNORED PROPERTIES: As mentioned earlier, some chart properties are hidden in the builder if webChartFlag is checked. An "n/a" after the property means the feature is not supported, "auto" means the value is assigned automatically and is not configurable, otherwise the assumed value of the property is shown. traceValueAlarmStatusTable : n/a (alert coloring & styling of trace markers is not supported, only supported for bars) valueHighAlarmMarkColor : n/a valueHighAlarmMarkStyle : n/a valueHighWarningMarkColor : n/a valueHighWarningMarkStyle : n/a valueLowAlarmMarkColor : n/a valueLowAlarmMarkStyle : n/a valueLowWarningMarkColor : n/a valueLowWarningMarkStyle : n/a bgEdgeWidth : 1 bgGradientMode : n/a bgGradientColor2 : n/a bgRaisedFlag : false bgShadowFlag : false bgStyle : Rectangle borderPixels : n/a barImage : n/a barValueTextColor : auto barValueTextFont : auto barValueTextHeight : auto labelColumnFormat : auto traceYValueFormat : auto yValueFormat : auto rowLabelVisFlag : true rowNameVisFlag : false mouseOverHighlightFlag : true scrollbarSize : auto scrollbarStartAtMaxFlag : true labelMinTabWidth : n/a barCenterFlag : true barFitFlag : true horizAxisLabelRotationAngle : auto horizAxisMinLabelHeight : n/a vertAxisMinLabelWidth : n/a legendBgGradientMode : n/a legendBgGradientColor2 : None legendWidthPercent : auto legendValueVisFlag : false (bar value is shown in tooltip, not legend) outlineColor : n/a markDefaultSize : auto markScaleMode : No scale transparencyPercent : 0 gridBgGradientMode : None gridBgGradientColor2 : n/a gridBgImage : n/a traceYAxisFormat : auto traceYAxisMajorDivisions : auto traceYAxisMinorDivisions : auto yAxisFormat : auto yAxisGridMode : Bar Axis yAxisMajorDivisions : auto yAxisMinorDivisions : auto traceProperties.MarkerColor (uses trace color) OTHER PROPERTY DIFFERENCES: scrollbarMode: "As Needed" mode is treated the same as "Always". The scrollbar is always horizontal, even if bars are horizontal. traceFillStyle: solid, gradient, & transparent gradient are all treated as transparent. traceProperties.MarkerStyle: For any value other than "No Marker" the marker style is chosen automatically. drillDownSelectMode: ignored, always treated as Element Only. barValueTextPos: if "Center" (4) position is selected, the bar values are shown in the center of each bar, all other position settings are ignored and the value position is chosen automatically. minSpacePerBar: If the property is set to 1 (the default) or less the chart will display a bar for every data value, even if that makes bars overlap when there are more bars than can fit in the plot area. In the swing chart, if minSpacePerBar > 1 it specifies the minimum pixel width for each bar (or height, in horizontal mode) so if there are more bars than can fit in the plot area given that minimum bar width (plus space between the bars) then only a subset of the bars are visible, and the user must scroll to see the additional bars. But in the web chart, the minSpacePerBar is instead used to calculate the minimum number of bar groups that should always be visible regardless or the plot area width. The calculation attempts to match the swing chart behavior but results will vary. webChartVisBarGroups: This is a new property and is visible only if webChartFlag = 1. It specifies the maximum number of bar groups that should be visible in the plot area. This can be used as an alternative to minSpacePerBar to control the size and number of visible bars. Depending on the size of the plot area and other factors, there may sometimes be one more or one fewer bar group visible than expected. The default value is zero which means there is no limit on the number of visible bar groups.

Charts (General)

21675: Enhanced charts with properties for legend text

Properties named legendTextFont and legendTextSize have been added to obj_trendgraph02, obj_bargraph, and obj_pie to allow the user to choose the font and size for legend text. Previously the legends on those objects always used SansSerif at 9 pixels (trend) or 10 pixels (bar and pie) . Those are now the default values for the new properties.


Links

21564: New Link Path Types have been added

RTView links have been enhanced to support two new linkPathType property values: Horizontal Square - Links are drawn from the right/left side of the parent closest to the child to the right/left side of the child closest to the parent. The link is straight if the parent and child are aligned horizontally, otherwise the link line has two 90 degree angles. This linkPathType has a limitation when the right/left side of the parent and child nodes overlap. In this case, the link line will be clipped. Vertical Square - Links are drawn from the top/bottom side of the parent closest to the child to the top/bottom side of the child closest to the parent. The link is straight if the parent and child are aligned vertically, otherwise the link line has two 90 degree angles. This linkPathType has a limitation when the top/bottom side of the parent and child nodes overlap. In this case, the link line will be clipped. The links have also been enhanced with a new property, linkCrossBarSpacing, in the Link Line category. This property is only applied if the linkPathType is set to Horizontal Square or Vertical Square. If this property is set to -1, the perpendicular line between the parent and child nodes is positioned in the center of the space between the parent and child nodes. Otherwise, it is positioned the specified number of pixels from the parent node. If the value is greater than the space between the parent and child nodes, the perpendicular line will be drawn in the center of the available space. Links with these linkPathTypes have been added to the Links palette in the builder. The Horizontal Square and Orthogonal links look the same in the palette, but the linkPathType is shown in the status area to help differentiate them.

Object Grid

21629: Style sheets are now correctly applied

In previous releases, the style sheet was not applied correctly to the icons in the object grid. The behavior was different in the viewer and the thin client. In the thin client, the style sheet was never applied to the icons in the object grid. In the viewer, the stylesheet properties always overrode the property values specified in iconProperties. This has been fixed so that both the viewer and thin client behave as follows: If a property value is specified in iconProperties, this value takes precedence over the style sheet value. Properties for which no value was specified in iconProperties will use the style sheet values. If you have an object grid in a display from a previous release that counts on the previous behavior, you have 2 options: 1. Modify the iconProperties value for your object grid so that all properties that should override the style sheet are specified and no properties that should not override the style sheet are specified. 2. Use the following command line option to revert to the old behavior: -objgriduseoldss

Tables

21666: Tree Grid support added to Table objects

The table object (obj_table02) now supports a "Tree Grid" mode. In this mode, the first column of the table behaves as a tree, allowing table rows to be expanded/collapsed in groups according to a hierarchy defined by the index columns in the data table. The new mode can be configured in the builder, but the feature is only fully implemented in the thin client. Three properties have been added to obj_table02 to support the new mode. These are visible only if webGridFlag is checked: webTreeGridFlag: check this to enable the new mode webTreeLabelColumn: the name of the column to be added as the tree (first) column of the table webTreeAggregateColumns: a list of column names and calculations to be applied to data columns in parent rows INDEX COLUMNS: To use the new mode, the table object's indexColumnNames property must be specified. Each index column in the data table (attached to the valueTable property) defines a level in the tree -- the first index column specifies the values for the top level of the tree, the second index column specifies the values for the second level in the tree, and so on. For example, here is a portion of a data table containing Major League Baseball (MLB) standings. The index columns are named League, Division, and Team: League Division Team W L American East Red Sox 93 69 American East Blue Jays 89 73 American Central Indians 94 67 American Central Tigers 86 75 American West Rangers 95 67 American West Mariners 86 76 National East Phillies 95 67 National East Mets 87 75 National Central Cubs 103 58 National Central Cardinals 86 76 National West Dodgers 91 71 National West Giants 87 75 (Note: The full MLB table has 5 teams in each division). The index column values in the above data table can be used to create a 3 level tree, as follows: > American > East Red Sox Blue Jays > Central Indians Tigers ... etc ... > National > East Phillies Mets ... etc DATA TABLE FORMAT: When tree grid mode is enabled, the data table is automatically converted to the format required for the mode, as follows: 1) A row is added to the table for each parent level in the tree. For example, when the MLB table above displayed in tree grid mode, it will contain 8 additional "parent" rows which don't appear in the original table. These rows are added for the parent levels in the tree, one for the American League, one for the National League, and one for each of the 3 divisions in each league (American East, American Central, American West, National East, National Central, National West). The data columns (W, L) for each of the parent rows is assigned a value of zero. This is because there is no data in the original table for the parent rows. 2) A new column is added to the beginning of the table to display the tree levels. By default the column is named "Node Label" but a different name can be specified in the webTreeLabelColumn property. 3) Columns named Node ID and Parent ID are added to the table. These define the parent-child relationships in the table, and are used by the thin client to construct the tree. These columns are automatically hidden, via the columnsToHide property. AGGREGATION: As mentioned earlier, the parent rows added to the data table will contain a zero in each numeric data column. The webTreeAggregateColumns can be configured to show aggregated values (sum, min, max, or average) in those data columns. The property expects a list of column name, calculation pairs, with semicolons between the pairs. For example, to show the sum of the W and L columns of the child rows in each parent row of the MLB table above: webTreeAggregateColumns: W,sum;L,sum With that configuration each Division row will show the sum of its teams W and L columns, and each League will show the sum of its divisions W and L columns. FILTER & SORT: In the thin client, all of the web grid filter and sort features are available, by clicking on the column header. There are a few differences to note. The column filter menu can be used to hide rows in the table. However, this does not affect the aggregate calculations (if any), since they are always performed on all rows in the table, visible or not. Also, a parent row will be shown if any of its children pass the filter test, even if the parent row itself does not pass the filter. For example, if the filter Team = Phillies is applied to the MLB table, only one row passes that filter but the table will display both of that row's ancestor rows, for a total of 3 rows: > National > East Phillies The column sort feature in the thin client applies the sort within each level. That is, the sort will reorder rows within a tree level but won't move rows between levels of the tree, and parent rows will still appear above the rows of their children. Limitations on webTreeGrid mode: - The webTreeGridMode behavior only works in thin client, and only in desktop browsers that support the web (HTML5) grid. In all other cases the table will not display a tree column. - The webTreeGridMode does not support server-side paging, filtering & sorting. This means that webTreeGridMode mode does not perform well on large data tables, because the entire data table must be downloaded to the browser. For best results it should only be applied to data tables with 1000 rows or fewer. The intended use is to display the contents of an indexed cache table, with fewer than 1000 rows. - The export to html/excel/pdf feature does not recognize webTreeGridMode and instead exports the entire table. Advanced use: If the data table attached to valueTable already contains rows for the parent levels of the tree, with columns named exactly "Node ID" and "Parent ID" that uniquely identify each row and its parent row, then the table won't be converted as described above. In this case the column to be used as the tree column should be identified by the webTreeLabelColumn property.

Version 6.8.0 Release Notes

Builder - Property Dialogs

21074: Substitutions listbox in Builder no longer throws ArrayIndexOutOfBoundsException

In prior releases, the Builder would sometimes throw an ArrayIndexOutOfBoundsException while updating the list of substitutions shown in the property sheet. This is fixed.

Customization

18831: Implement a platform-agnostic font solution for display server

A file named rtvfonts.jar is now included with RTView. This jar file is intended to provide consistent text size on displays that are configured on Windows but are deployed in the thin client via the display server running on Linux. On some Linux installations, there can be significant sizing and spacing differences between the Windows and Linux versions of the "generic" font types (serif, sans-serif, monospaced). This jar contains open source fonts which can be used instead, for font indexes 1 - 12. Each of the open source fonts was designed to be equivalent in sizing and spacing to the corresponding Windows font. The rtvfonts.jar should be used in the following situation: 1) RTView displays were created on Windows, but are deployed in the thin client from a display server running on Linux. 2) In the thin client, there are visible problems with text alignment and sizing that are not seen when the same display is open in the builder/viewer on Windows. If this situation occurs, then the display server should be configured as follows: 1) Add rtvfonts.jar to the display server's classpath, for example: > set RTV_USERPATH=$RTV_HOME/lib/rtvfonts.jar 2) Add rtv_fonts.xml as a global file (rtv_fonts.xml is contained in rtvfonts.jar). For example, add this line to the display server's OPTIONS.ini file: global rtv_fonts.xml The open source fonts contained in rtvfonts.jar are: Arimo (sans-serif, equivalent to Arial) Cousine (monospace, equivalent to Courier) Tinos (serif, equivalent to Times New Roman) Each font is provided in regular (plain), bold, italic, and bold italic in .ttf format (for the display server) and .woff format(for the thin client) for a total of 24 font files. The .ttf files for each font were downloaded from https://www.google.com/fonts. Each is licensed by the Apache 2 license. The font files in this jar contain only the Latin character set, to reduce their size. This means that CJK (Asian) characters will appear as boxes in text strings that are rendered by the display server (e.g. a label object with webLabelFlag = false). In text strings rendered by the browser, the expected characters will appear in a fallback font, so the style and size may not match the Latin characters in the font.

Data Historian

21455: New mechanism to 'throttle' historian deletions.

A command line argument has been provided to enable throttling of historian deletions by separating large deletions into smaller groupings. This option will help in scenarios where users see the following errors in the log: SQLException: The transaction log for database <DB Name> is full. ERROR: java.sql.SQLException: The transaction log for database <DB Name> is full. retention doing delete in SQL: [delete from <DB Table Name> where "timestamp" < 'YYYY-MM-DD HH:MM:SS'] failed. To enable multi-chunk retention start the historian with the -retentionChunkSize argument. Example of deleting in 2 day chunks: -retentionChunkSize:2d Example of deleting in 1 week chunks: -retentionChunkSize:1w This argument does not support time segments of multiple units, such as "1h 30m"

Data Sources

Cache Data Source

21428: Fix bug preventing removal of rows from current_condensed table

A bug in the cache data source has been fixed that prevented rows in current_condensed tables from being removed by the row expiration feature. (The current_condensed table exists on caches that have the row condense feature enabled. It has one row for the most recent condense result computed for each unique index value). The properties that remove rows from the current table are rowExpirationMode, rowsToDeleteTable, and maxNumberOfCurrentRows.

JMX Data Source

21151: Provide mechanism to connect to secure Tomcat instances via JMX

A mechanism has been added to connect to secure Tomcat instances via JMX. A secure connection requires the use of the following two parameters: javax.net.ssl.trustStore javax.net.ssl.trustStorePassword Please see the User's Guide for more information.

21421: Unexpected JMX Mbean objects no longer cause exception

Unexpected JMX object types could cause a NullPointerException. This has been fixed.

Splunk

21313: SSL Protocol field added to Splunk Connection

The Splunk data adapter has been enhanced to allow explicit management of the SSL Protocol used when communicating to the Splunk server. A new field "SSL Protocol" has been added to the Add Splunk Connection dialog. This allows you to explicitly select the SSL Protocol used when communicating to the Splunk server, by means of a drop down. The SSL protocols available are SSLv3, TLSv1, TLSv1.1 (TLSv1_1) and TLSv1.2 (TLSv1_2). TLSv1 is selected by default as "TLSv1 is available by default in every modern version of Java" SSL protocols are configured on the Splunk server using the "sslVersions" property as described in http://docs.splunk.com/Documentation/Splunk/latest/Security/SetyourSSLversion The client (Splunk data adapter) connection will, obviously, have to use a compatible SSL protocol connect. Use of explicit SLL protocol requires use of com.splunk.SSLSecurityProtocol found in the Splunk Java SDK jar (splunk-sdk-java-1.5.0.jar). A modified version of this .jar is provided with RTView. It has been modified to remove dependency on the existence of a ".splunkrc" file in the users home directory, which a client system may not have. Protocol Limitations ----------------------------- Different versions of Java have added and removed support for different SSL protocols, so users will need to choose an SSL protocol that is supported by your Java runtime. TLSv1 is used as default by RTView as "TLSv1 is available by default in every modern version of Java" SSLv3 is provided for backwards compatibility, but its use is discouraged due to the "POODLE" vulnerability as described here: http://www.splunk.com/view/SP-CAAANKE SSLv3 is disabled in recent versions of Java (1.7 + 1.8+) for this reason, and will fail with an error message of the form "java.lang.RuntimeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)" TLSv1.1 and TLSv1.2 are not available in Java 1.6 and will fail with an error message of the form java.lang.IllegalArgumentException: TLSv1.1 or java.lang.IllegalArgumentException: TLSv1.2

TIBCO Hawk Data Source

21273: RTView now attempts to re-subscribe to failed subscriptions

A bug was introduce in version 6.0.2 that caused RTView not to attempt to re-subscribe to failed subscriptions. This has been fixed.

21299: Improved hawk error handling

The TIBCO Hawk data source error handling has been enhanced as follows: 1. Improved logging for onErrorExceptionEvent and onWarningExceptionEvent. These events occur when there is a problem with one of the connected TIBCO Hawk Transports. Also, RTView will now try reconnecting to the transport if an onErrorExceptionEvent occurs. 2. Improved logging for subscription error events. Also, RTView will cancel all subscriptions for a MicroAgent if an onTermination event occurs and attempt to recreate them.

21392: New reconnect option added to Hawk DS

The TIBCO Hawk data source has been enhanced to attempt to reconnect when the initial connection to a transport fails. By default, it will attempt to reconnect once a minute for 60 attempts. You can set the max number of reconnect attempts by command line or property. command line: -hawkmaxreconnect:3 property: sl.rtview.hawk.hawkmaxreconnect=3 Every time a reconnect is attempted, you will see this in the console: 016-03-07 13:00:50.282 re-attempt connection to transport <test_ems>: 1 of 60 016-03-07 13:00:52.911 re-attempt connection to transport <test_ems>: succeeded/failed To disable reconnection attempts, set the max reconnect to 0.

21393: New connection table added to Hawk DS

The TIBCO Hawk Data Source has been enhanced with a new method, getConnectionTable, in the RTViewDs microagent. This table shows one row for each defined connection with the following columns: - Name - the connection name - Connected - true if we are connected, false otherwise This table updates with all rows regardless of the Disable Data Caching setting.

21437: Corrected slow Hawk Agent discovery by Hawk Datasource

A change was introduced in RTView 6.4 that caused the Hawk Agent discovery to slow down in cases where the Hawk Agents were slow in servicing requests for MicroAgent Descriptors. This has been fixed.

Demos

Energy Management Demo

20890: Corrected mismatch in column names in the data attachment

Some column names in the eSphere demo were not corrected when the database was changed to use HSQLDB. This has been corrected.

Display Server

21435: Mouse wheel scrolling for tables when using Firefox 42 or newer

In prior releases, the thin client did not support scrolling of table objects using the mouse wheel, if webGridFlag = false, in Firefox version 42 or newer. This is fixed.

21436: Fixed crash with -clearsubs:true command line option

A bug has been fixed which caused the display server to throw a StackOverflowError at startup if the command-line option "-clearsubs:true" was specified. This bug was introduced in RTView 6.4. (Note: The default value of the clearsubs option is true, so there is no need to specify -clearsubs:true).

Functions

21262: Dataserver no longer turns inactive (zombie process) after an "Unlock Error"

A problem in the function data source has been fixed that could cause an IllegalMonitorStateException to be thrown while updating a function.

General

18198: New option to change default fonts or use additional fonts

The Extended Font feature, new in this release, allows users to extend the list of fonts available on RTView displays beyond the 12 standard fonts. Extended fonts can be used in the Builder/Viewer, or in the thin client, or in both deployments. The configuration and use of this feature requires a basic understanding of font technology and terms, described below. Two example configurations are provided in the RTV_HOME/custom/fonts directory BACKGROUND The following terms apply to font usage in RTView. - System fonts: System or platform fonts are provided by the local operating system. A web browser can make use of the system fonts from the local (client) machine. The system fonts vary between different operating systems, and between versions of the same operating system. This presents a challenge to web developers, since a font available to a browser on one system (e.g. Tahoma on Windows) may not be available to a browser running on other systems, although similar fonts (e.g. Helvetica on Mac OS) may be available. The solution is to (a) use only web-safe fonts, (b) use font families or font stacks, or (c) use web (downloaded) fonts. These are described below. - Web-safe fonts: The serif, sans-serif, and monospace fonts are known as "web-safe" or standard fonts because they are available in all browsers on all platforms. They are also available in Java on all platforms. - Font-family: A font-family is a comma separated list of font names, used in the CSS style applied to text elements on a web page. The browser will attempt to use the fonts in the order they are listed until it finds one that is available. This browser also applies this process on a per-character basis if the text element contains a character not defined in the specified font. The last font in the list should be a web-safe font. This technique is also known as a "font stack" or "fallback fonts". For example: font-family: Helvetica, Lucida Sans, Arial, sans-serif - Web fonts: A web page can identify a specific font to be downloaded from a web server, rather than using a stack of system fonts. A specific font downloaded from the web server is known as a "web font". - Font files: A file that defines a font. A common format is TrueType (.ttf). In a java application, additional fonts can be used by providing TrueType font (.ttf) files. On a web page, web fonts can be downloaded as ttf files. Other formats (.woff, .woff2) are also supported for web fonts. Font files are licensed. Many system fonts are licensed by the OS vendor (e.g. Microsoft). A large number of fonts are available under open source licenses (Apache 2.0, SIL). The Web Font example in the custom/fonts directory uses several open source fonts published on http://www.google.com/fonts. FONTS IN RTVIEW By default RTView uses only the web-safe font types: serif, sans-serif, and monospace. For each web-safe font type RTView provides a plain, bold, italic, and bold-italic style, for a total of 12 font choices. Each is assigned an index, as follows: 1: sans-serif, plain 2: monospace, bold 3: monospace, plain 4: serif, plain 5: monospace, italic 6: serif, bold 7: sans-serif, bold 8: sans-serif, italic 9: serif, bold italic 10: serif, italic 11: sans-serif, bold italic 12: monospace, bold italic The font indexes are used when configuring a font property (e.g. labelTextFont) on an object in the RTView display Builder. The Extended Font feature allows users to extend the list of fonts available on RTView displays, beyond the 12 standard fonts. Extended fonts can be used in the builder/viewer, or in the thin client, or in both deployments. For use in Java (builder/viewer, display server) an extended font must be available from a local .ttf or .otf file. In the thin client, either the font-family (stack) or the web font (downloaded) technique can be used. The font stack technique provides better performance and requires no additional font files or licensing since it uses system fonts already available on the local system. However, since different physical fonts are used, a text element that uses a font stack may have a different appearance and size when viewed in a browser on (say) Windows, vs iOS, vs Android. The web font technique provides a consistent appearance and size in all browsers regardless of the local platform, but requires additional time to download the web fonts the first time the page is opened. Fonts that contain non-latin characters (Cyrillic, Arabic, and especially CJK) can be large. Also, web fonts should be properly licensed. For use in a browser as a web font, the font must be downloadable as a .ttf, .woff, .woff2, or .otf file. Internet Explorer will complain if a .ttf file is not embeddable (most Microsoft-provided .ttf files are not embeddable). EXTENDED FONTS CONFIGURATION AND USE The extended fonts are specified in a table created by the user, with one row per font. The table has these columns: - Index (int): the font's index, an integer value between 13 and 255 (see Note 1 below) - Name (string): the name of the font as it should appear in the Builder property sheet and font selection list - Bold (Boolean): if true, a bold style font is created - Italic (Boolean): if true, an italic font style is created - CSS Font Family (string): for use by the RTView thin client (see Note 2) - URL (string): for the thin client, when using web fonts (see Note 3) - TTF Path (string): a local path to the fonts .ttf file, for use by RTView builder/viewer and display server (see Note 4) The required columns are Index, Name, Bold, and Italic. The other columns are optional depending on the deployment(s) of interest, and the type of fonts used. *** The extended font table must be made available to RTView by creating a global function named RtvExtFontTable. *** The RtvExtFontTable function must return a table that contains the required column names and types listed above. Typically, the RtvExtFontTable function would be a global Reference function with its Table argument attached to a static XML or SQL table. - Note 1: The examples in the custom/fonts directory use index values of 100 and above, as a convention. Index values of 1 - 12 can also be specified, but that will override the default RTView font assignments and is not recommended. - Note 2: The CSS Font Family string is used by the thin client to assign the CSS font style to a client-side object that uses the corresponding font. If the thin client should use a system font, then the string should specify the font family or "font stack" to be used, as a comma-separated list of fallback font names, ending with a web-safe font. For example: Trebuchet MS, Helvetica, sans-serif If instead the thin client should download a web font, then the string in the CSS Font Family column can contain a single name, for example: Roboto - Note 3: The URL column can be omitted or left blank if the thin client should use a system font. If the thin client should download a web font then the value in this column should specify the URL for the thin client to use to download the font file. For example: fonts/Roboto-Regular.ttf The above example assumes that the user has created a subdirectory named "fonts" beneath the rtvdisplay servlet's webapp directory, and it contains the indicated ttf file. The URL can also specify an address on a different web server (e.g. http://somewhere.com/fonts/xyz.woff), provided that server supports CORS (cross-domain) requests. Internet Explorer will complain if a .ttf file is not embeddable (most Microsoft-provided .ttf files are not embeddable). CHARACTER SETS The web-safe fonts support all Unicode characters. Other fonts may not. (In particular, open source fonts may not support CJK characters). If a text string contains a character that is not found in the specified font, the effect is as follows: In a browser, if a text element contains a character that is not found in the specified font, the browser will try the fonts listed in the font-family, and finally its default web-safe font, until it finds a font that supports the character. This means the thin client always displays all of the characters in a text string, but when using an extended font non-Latin characters may be displayed using a fallback or system font. In a Java application, if a text string contains a character that is not defined in the specified font, the character may appear as a "tofu" character (a box or a ?) or it may not be drawn. This means that the builder/viewer will display tofu or empty characters for non-Latin characters that are not found in an extended font. This is also the case for the thin client, for text objects that are rendered in the display server and not in the browser. The google Noto Sans CJK fonts are in .OTF format with Postscript Type 1 glyphs (.OTF w/PS Type1) which is not recognized by Java. EXAMPLES Two example configurations are provided in the RTV_HOME/custom/fonts directory. See the README.txt file in that directory for more information. The beginning of the README file contains the same sections that appear above in this note, but see the EXAMPLES section in the README for a description of each example.

21177: Update-able single value properties now update when the property is removed

In previous releases, the following update-able properties did not reset to the default value if they were removed. This has been fixed. sl.rtview.customWindowTitle sl.rtvapm.mx.mxtrace sl.rtvapm.km.kmtrace sl.rtview.sql.sqltime sl.rtview.jmx.jmx_metrics_period sl.rtview.alert.notifiertimetrace sl.rtview.alert.notifierdebug sl.rtview.hawk.hawkdstraceagentstatus

21301: New stop_hsqldb script

New "stop_hsqldb" scripts for cleanly shutting down an HSQLDB instance are now available. The stop_hsqldb script requires a server.rc file in the directory you run it from that is a counterpart to your server.properties file. Example server.properties: server.port=9099 server.database.0=file:../../DATA/alertdefs server.dbname.0=alertdefs server.database.1=file:../../DATA/rtvhistory server.dbname.1=rtvhistory Example corresponding server.rc: urlid alertdefs url jdbc:hsqldb:hsql://localhost:9099/alertdefs username SA password urlid rtvhistory url jdbc:hsqldb:hsql://localhost:9099/rtvhistory username SA password All demos with HSQLDB instances have been updated to include a server.rc file.

21302: Support for enabling/disabling individual db properties

The properties database has been enhanced to support a new column, PROP_ENABLED. This column is used to enable/disable the use of the property. This allows you to temporarily disable the use of a database property without having to remove it from the database. If your application reads properties from a database and you are using the properties database from a previous release, run the following alter table command on your database table to add the new column: ALTER TABLE PROP_TABLE ADD PROP_ENABLED INTEGER DEFAULT 1

Logging

19451: Viewer and builder now print copyright to log4j output

Previously the Display Viewer and Builder did not show the copyright banner in log files created using Log4j. This has been corrected.

Platform Support

21076: Windows 10 and Edge Browser support

Windows 10 and the Edge Browser are now supported by RTView products.

RTView Display Panel

21508: Support subtitutions in display value in panel config

The rtvDisplayPanel tag in a PANELS.ini file now supports using an application level substitution or login substitution for the display value as long as the substitution name starts with a $. For example: <?xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> <rtvLayout title="Example"> <rtvDisplayPanel region="north" name="title" display="$my_title"/> <rtvDisplayPanel region="center" name="main" display="$my_main"/> </rtvLayout> </panels>

TIBCO EMS Manager

21275: EMS Manager retired

The TIBCO EMS Manager application is no longer supported and has been removed from RTView Core. It has been replaced by the RTView TIBCO EMS Monitor application. TIBCO EMS Manager users should contact SL about moving over to RTView TIBCO EMS Monitor.

Transaction Message Monitor

21514: Transaction monitor end-of-life delayed

In RTView 6.5, the Transaction Monitor was updated with a warning regarding the end of life of that product. The retirement of the Transaction Monitor has been postponed and the warning has been removed.

Viewer - Applet

21366: Applet support dropped

Due to dropped support for applet technology from browsers and Oracle, RTView has discontinued support of deploying using java applets. All applet demo examples have been removed from the product

Version 6.7.0 Release Notes

18875: Support added for property groups for database properties

The properties database has been enhanced to support a new column, PROP_GROUP. This column is used as an additional optional index when the database properties are processed. Specify the property group for an application using the -propgroup:xx command line option (where xx corresponds to a value in the PROP_GROUP column of your database). If no -propgroup command line option is used, it will query for rows where PROP_GROUP is an empty string. Properties queried from the database are ordered as follows: 1. Order by PROP_GROUP according to the order of the -propgroup command line options. 2. Within each PROP_GROUP, order by PROP_FILE according to the order of the -properties command line options. 3. Within each PROP_FILE, order by PROP_FILTER according to the order of the -propfilter command line options. Note that rows with blank PROP_FILTER that match the PROP_GROUP and PROP_FILE filters are always included. If your application reads properties from a database and you are using the properties database from a previous release, run the following alter table command on your database table to add the new column: ALTER TABLE PROP_TABLE ADD PROP_GROUP VARCHAR DEFAULT ''

21152: Additional destination (topics/queues) metrics included from EMS Server

The following columns have been added to the EMS Topics cache: prefetch expiryOverride store The following columns have been added to the EMS queues cache: prefetch expiryOverride store deliveredMessageCount

Alerts

18023: Alert ds no longer crashes if if indexTypes syntax is incorrect

In previous releases, the alert data source threw a NullPointerException if there was a syntax error in the indexTypes property. This has been fixed.

19820: Alert notifications no longer fail if invalid global file is specified in properties

In previous releases, if an invalid global file was specified in your properties file, alert notifications failed to execute. This has been fixed.

Builder - Editing

20933: Object selection in builder no longer broken after closing edit dialogs

In the previous release, the Builder would occasionally exhibit problems with object selection and keyboard focus after the user closed an editing dialog opened from the property sheet. These problems are fixed.

21221: Tab Control object no longer crashes the Builder if valueTable cannot be resolved

A bug in the tab control object (obj_c1tabs) has been fixed that caused the Builder to throw a NullPointerException, or to perform an unexpected drilldown, if a tab control's actionCommand was configured to perform a drilldown but the control's valueTable property was attached to a nonexistent data table.

Builder - Palette Handling

21046: Graph palette no longer sometimes shows only one object per row

A problem has been fixed in the Builder which sometimes caused the Graphs tab of the Obejct Palette to display just one graph object per row, with extra spacing on all sides, rather than packing as many objects per row as can fit.

Data Server

20910: RTVquery no longer hangs when the target data server re-boots

In previous releases, the rtvquery servlet would occasionally fail to respond to queries after its target data server was restarted. This problem is fixed

20911: REST servlet enhanced for history queries

The URL applied to the rtvquery servlet now supports a parameter named "arr". If the value of the arr parameter is 1 then, if fmt = json or jsonp, the javascript array format will be used for data rows in the response. This is intended for use with fmt=jsonp, to reduce the response size. Also, server-side paging and sorting are now applied properly to queries on cache history tables. In prior releases, the sorting and paging was applied incorrectly which could give confusing results.

Data Sources

Cache Data Source

20895: Time range no longer ignored in cache history attachment if multi-column filter value = *

The following bug in the cache data source has been fixed: If an attachment to a cache history table specifies a time range, and also specifies a filter on multiple columns but the filter value for each of those columns is * then the time range is ignored and all rows from the history table are returned.

IBMMQ - IBM WebSphere MQ

20871: New Expiry field added to connection definition

A new field, Expiry, has been added to the definition of IBM MQ connections.

JMS Admin Data Source (for TIBCO EMS only)

20867: Improved performance of ConsumerDetails queries

The process of getting detail info on EMS Consumers has been optimized; customers who have previously found it necessary to disable collection of this data may find this is no longer necessary.

20967: ConsumerCount and ProducerCount added to the ServerInfo table

Two columns have been added to the jmsadm ServerInfo table: ProducerCount and ConsumerCount. These are the total counts before any filtering is applied.

20977: New destination filter for Consumers and Producers metric data attachments

The TIBCO EMS Data Adapter has been enhanced to include pattern filters in the collection of Producer and Consumer data. In the Attach To Data Dialog the Pattern field now becomes visible when the metric is Producers or Consumers (as for Topics and Queues). These patterns will be used via the Admin API to select the destinations for which Producer and Consumer data will be fetched when the data attachment is updated. This will make the operations faster and more efficient, by virtue of being more specific.

21146: Queries no longer made against inactive EMS servers configured with JSON

In version 8.1 of TIBCO EMS a change was made such that inactive EMS servers configured with JSON could no longer be queried via the admin interface. The TIBCO EMS data adapter has been enhanced to detect this condition and avoid making the queries.

Splunk

19866: Splunk data adapter no longer generates NullPointerException message.

In previous versions under certain circumstances, the Splunk data adapter would generate a NullPointerException message. This is no longer the case.

TIBCO Rendezvous Data Source

20975: Enhanced to work with rvtrace version 8.2.0+.

The TIBCO Rendezvous data source has been enhanced to work with rvtrace version 8.2.0+. In 8.2.0, TIBCO modified the rvtrace output to add the SCid and R columns to the Multicast Packet Statistics source rows and to add the SCid column to the Multicast Subject Staticstics source rows. The TIBCO Rendezvous data source has added the SCid and R columns to the RTViewDs.MulticastPacketsSource table and the SCid column to the RTViewDs.MulticastSubjectsSource table. The rvmonitor demo has been updated to show these new columns. Note that versions of rvtrace older than 8.2.0 are no longer supported in the TIBCO Rendezvous data source.

Demos

19855: Demo applets updated to use signed jars

The RTView Core demo applets provided in the demo Apache Tomcat server (servers\apache-tomcat-6.0.18-sl\webapps\ROOT) have been updated to use .jar files signed with SL's certificate. At this time, SL's certificate is valid until May 2018.

Display Server

20929: New logout properly in multi-panel layout

In the thin client, clicking the Log Off item in the context menu will navigate back to the login screen, after logging off the user.

21178: Copy Cell Value menu item supported in Chrome & Firefox

The thin client now supports the "Copy Cell Value" context menu item on the table object, in Chrome (version 43 or newer) and Firefox (version 41 or newer). This menu item allows the user to copy a table cell's text contents to the clipboard. Previously this menu item was only available in Internet Explorer.


Functions

20846: New function: Execute Java Method

Introduction The Execute Java Method function allows the user to write code for a Java method that will be executed when the function is updated. The method can take zero or more arguments of type String, Integer, Double, or GmsTabularData, and it can return an object of any of those same types. The Java code is saved with the display (.rtv) file that contains the function. On the first update, the function compiles the given java code. Then, on all updates, the function applies the given arguments to the compiled method and executes it. The Execute Java Method function is intended for implementing a 'one-of-a-kind' java method that is useful on a single RTView display, in cases where the Evaluate Expression functions are not adequate or perform poorly, and the reusability of a custom function implementation is not required or is inconvenient. Requirements - The Java Development Kit (JDK) must be installed on systems which will be used to configure or run the Execute Java Method function. The Java Runtime Kit (JRE) is not sufficient since it does not include the java compiler tools. - The person configuring the Execute Java Method function must be familiar with Java. - The person configuring the Execute Java Method function should be familiar with the com.sl.gmsjrt.GmsTabularData class, as described in the RTView customization document, if the function will deal with tabular data. - The Code argument of the function must be a valid code string for a Java method named eval with this signature: public Object eval() - The method can take zero or more arguments of type String, Integer, Double, or GmsTabularData. - The method's return type must be Object, and the returned Object must be a String, Integer, Double, or GmsTabularData instance. - The heap usage of the RTView application increases by about 6 to 10 MB to support the compiler. Recommended usage: The Execute Java Method function is a useful feature but it should be use when appropriate, to avoid maintenance and performance problems. - The Execute Java Method function is intended for implementing a 'one-of-a-kind' java method that is useful on a single RTView display, since its result can only be used on the same display (.rtv file) in which it is defined. If a method is needed on multiple RTView displays then it should be implemented in an RTView custom function handler class, instead. - The display containing the Execute Java Method function must only be deployed on systems with the JDK installed, otherwise the function's java code will not be compiled. Configuration: The internal name of the function is EVALJ. Its external name is "Execute Java Method". It appears just after "Evaluate Expression as String" in the dropdown list in the Builder's Edit Function dialog. The function takes one predefined string argument named Code, plus any number of user-defined arguments as described later. The Code string must be a java method named eval with this signature: public Object eval(args) For each new instance of the function, the Edit Function dialog will set the Code string to a "skeleton" implementation of the eval method as shown below: public Object eval() { return ""; } The eval method can take zero or more arguments of type String, Integer, Double, or GmsTabularData. The method's return type must be declared as Object, but it can return a String, Integer, Double, or GmsTabularData object. The arguments declared for the eval() method become arguments to the rtview function instance, just like the %x, %y tokens in an Evaluate Expression function. For example, here is a simple eval method that concatenates two String args named s1 and s2: public Object eval(String s1, String s2) { return s1 + ":" + s2; } In the Edit Function dialog, s1 and s2 will appear as argument fields so their values can be assigned to constants or attached to data: Here is a more complex example that takes a GmsTabularData argument. The input table is assumed to have an integer column named Value, and the function returns a copy of the input table with all rows removed where the Value column item is < 25 or > 75. The method makes use of utility methods named cloneInputTable and printErrorMessage, which are defined in the base class named com.sl.gmsjrtview.GmsJavaCodeExecutor: public Object eval(GmsTabularData t) { if (t == null) return t; int valCol = t.getColumnIndex("Value"); if (valCol < 0) { printErrorMessage("no Value column in table"); return t; } ArrayList<Integer> rowsToRemove = new ArrayList<Integer>(); for (int row = 0; row < t.getNumRows(); ++row) { int val = t.getIntCellValue(row, valCol); if (val < 25 || val > 75) { rowsToRemove.add(row); } } if (rowsToRemove.size() > 0) { // don't modify input table, clone it t = cloneInputTable(t); t.removeRows(rowsToRemove); } return t; } For documentation on the GmsTabularData and GmsJavaCodeExecutor classes, refer to the javadoc pages in the customization section of the RTView documentation. Compilation: The java code entered as the value of the Code argument for a function named F101 is used to generate the source code for a subclass of com.sl.gmsjrtview.GmsJavaCodeExecutor, as follows: package rtvfuncs; import com.sl.gmsjrt.GmsTabularData; import com.sl.gmsjrtview.*; import java.util.*; public class F101_Cnn extends com.sl.gmsjrtview.GmsJavaCodeExecutor { // begin user-defined code public Object eval() { return ""; } // end user-defined code } The suffix _Cnn on the generated class name is not significant and will vary. The source code for the class will be generated and compiled the first time the function is updated after the .rtv file is loaded. In the Builder, source code for the class will also be generated and compiled each time the user changes the code for the eval method and clicks OK or Apply. The compiler will use the same classpath as the RTView application. No external .java or .class files are produced for an Execute Java Method function. All source generation, compilation, and class loader operations are performed using memory buffers. The user-defined java code for the eval method is saved with the function in the .rtv file. As shown above, the generated source code imports com.sl.gmsjrtview.*, com.sl.gmsjrt.GmsTabularData, and java.util.*. If additional imports are needed they can be defined on lines above the eval() method in the Code argument, or globally with a property named sl.rtview.function.compiler_import. For example, these lines could be added to an rtview .properties file to import java.sql.* and java.math.* for all function instances: sl.rtview.function.compiler_import=java.sql.*; sl.rtview.function.compiler_import=java.math.*; Compiler errors are logged to the console. The complete generated source code, as described above, is shown before the compiler error so that the user can make sense of the line numbers in the error message. Examples: The following eval() implementation returns a table with 2 columns, "Name" and "Value", where the Name column contains "this is row N" and the Value column contains a random integer between 0 and 100. The number of rows in the table is determined by the numRows argument. The "trigger" argument could be attached to the result of a "Date Now" function, to trigger the function periodically. Otherwise it will only update once. public Object eval(int numRows, String trigger) { GmsTabularData t = new GmsTabularData(); t.addColumn("Name", GmsTabularData.STRING); t.addColumn("Value", GmsTabularData.INTEGER); for (int row = 0; row < numRows; ++ row) { String name = "this is row " + row; int val = (int) (Math.random() * 100); t.addRow(""); t.setCellValue(name, row, 0); t.setCellValue(val, row, 1); } return t; } This eval method takes a table as an argument. The input table is assumed to have an integer column named Value (e.g. the table returned from the previous example), and the function returns a copy of the input table with all rows removed where the Value column item is < 25 or > 75: public Object eval(GmsTabularData t) { if (t == null) return t; int valCol = t.getColumnIndex("Value"); if (valCol < 0) return t; ArrayList<Integer> rowsToRemove = new ArrayList<Integer>(); for (int row = 0; row < t.getNumRows(); ++row) { int val = t.getIntCellValue(row, valCol); if (val < 25 || val > 75) { rowsToRemove.add(row); } } if (rowsToRemove.size() > 0) { // don't modify input table, clone it t = cloneInputTable(t); t.removeRows(rowsToRemove); } return t; } This eval method implements a simple counter function. It declares an integer member variable named "count" and increments it on each update and returns the new count. The "trigger" argument could be attached to the result of a "Date Now" function, to trigger the function periodically. Otherwise it will only update once. private int count = 0; public Object eval(String trigger) { return ++count; } This eval method implements a counter function, similar to the previous example, but it demonstrates the use of the skipUpdate() method to prevent updating the function result in certain cases: private int count = 0; public Object eval(String trigger) { ++count; if (count % 5 == 0) { // don't update result for multiples of 5 System.out.println("skip counter update: " + count); skipUpdate(); } return count; } This eval method takes a table as an argument. The input table is assumed to have an string column named Status (e.g. production_table in update.xml produced by the RTView xml data simulator). The function returns a copy of the input table with the string in the Status column truncated to the length specified by the second argument, numCharsForStatusCol: public Object eval(GmsTabularData prodTable, int numCharsForStatusCol) { if (prodTable == null || prodTable.getNumRows() < 1) return prodTable; prodTable = cloneInputTable(prodTable); int statusCol = prodTable.getColumnIndex("Status"); if (statusCol < 0) { printErrorMessage("no Status column"); return prodTable; } for (int row = 0; row < prodTable.getNumRows(); ++row) { String sts = prodTable.getCellValue(row, statusCol); if (sts != null && sts.length() > numCharsForStatusCol) { sts = sts.substring(0, numCharsForStatusCol); prodTable.setCellValue(sts, row, statusCol); } } return prodTable; }

General

20179: Support custom schedules for SQL queries

BACKGROUND: A new Update Mode named "Run Query On Schedule" is now available in the Attach to SQL Data dialog. When that mode is selected, a dropdown list labelled "Schedule Name" appears, allowing the user to select the name of a schedule. This new mode is intended to give users more control over when specific queries are run. A schedule is defined by one or more rules. A rule specifies the days of the week, hours of the day, and frequency during those hours that a query should be run. A rule can also specify days of the week or specific dates on which a query should not be run. SCHEDULE AND RULE TABLE FORMATS: The query schedules are defined in a table with these columns: # Name : the unique name for the schedule # Rules : the name(s) of the rules (see below) that define the schedule, separated by commas # Enabled : set Enabled = false to disable all queries that use the schedule # Description : a description of the schedule Schedule names should contain only letters, digits, space, underscore and dash. They should not contain newlines, or tabs, or punctuation characters such as colon, semicolon, or comma. The $ character should also not be used in a schedule name to avoid conflicts with substitutions. Each schedule is defined by one or more rules. The rules are defined in a table with these columns: # Name: the unique name for the rule # Days: a list of days of the week (e.g Mon, Wed, Fri) or specific dates (dd-MMM-yyyy) that this rule is in effect. # Start Time: the time of day that this rule goes into effect, in 24 hour HH::mm:ss format. If empty, 00:00:00 is used. # End Time: the time of day that this rule is no longer effect, in 24 hour HH:mm:ss format. If empty, 23:59:59 is used. # Exception: If false, then when this rule is in effect the query is run at the indicated interval. If true, then when this rule is in effect the query is NOT run. # Interval: the time interval between queries when this rule is in effect (e.g. 1m, 30m, 1h, etc). # Enabled : if false the rule is never in effect. # Time Zone: the name of the time zone for the rule (e.g. US/Central). A blank string indicates the local time zone. Rule names should follow the same restrictions as schedule names, described earlier. All of the column types in the rule and schedule tables are strings, except for the Enabled and Exception columns, which are boolean. EXAMPLES: Here is a Rule Table with a few Rule examples: Name Exception Days Start Time End Time Interval Time Zone Enabled Description workdays_30m false Mon,Tue,Wed,Thu,Fri 09:00:00 17:00:00 30m true weekdays 9 - 5 every 30 min weekends_9_12_15 false Sat,Sun 09:00:00 17:00:00 3h true weekends at 9am, noon, 3pm lunch_hour_ex true Mon,Tue,Wed,Thu,Fri 12:00:00 12:59:59 true no queries during lunch holidays_2016_ex true 1-Jan-2016,4-Jul-2016,25-Dec-2016 true no queries during holidays workdays30m_central false Mon,Tue,Wed,Thu,Fri 09:00:00 17:00:00 30m US/Central true weekdays 9 - 5 every 30 min in US/Central timezone The "workdays_30m" rule will run a query every 30 minutes between 9 am and 5 pm, Mon - Fri. The "weekends_9_12_15" rule will run a query on weekends at 9am, noon, and 3pm. The "lunch_hour_ex" rule is an exception rule and prevents a query from being run between 12:00 and 12:59 on weekdays. The "holidays_2016_ex" rule is an exception rule and prevents a query from being run on 3 specific dates in 2016. (Note that this rule does not specify a Start Time or End Time, so it is in effect for the entire day). The "workdays30m_central" rule is the same as the "workdays_30m" rule, except that it uses the US/Central timezone when checking the time of day against the Start/End Time. Here is a Schedule Table using some of the above rules: Name Rules Enabled Description Weekday30 9to5 workdays_30m, lunch_hour_ex, holidays_ex true weekdays @30 minutes from 9 - 5, except lunchtime & holidays AllWeek workdays_30m, weekends_9_12_15 true weekdays @30 minutes from 9 - 5, weekends @ 9 & noon & 3pm test_timezone workdays30m_central true weekdays 9 - 5, in central timezone CREATING SCHEDULES AND RULES: RTView does not provide any predefined rules or schedules nor does it provide a UI for creating rules and schedules. Instead, the user can create a rule table and schedule table in a database, an XML file, or any other table that can be retrieved using an RTView data source. The tables must contain the columns specified above. The user must make the schedule table available to RTView by creating a global function named RtvScheduleTable, using Function Type = Reference, and attaching the function's Table argument to the XML file, or SQL query, or other rtview data attachment that retrieves the schedule table. The attachment can specify a remote Data Server if necessary. Similarly, the user makes the schedule available to RTView by creating a global function named RtvScheduleRuleTable, using Function Type = Reference, and attaching the function's Table argument to the rtview data attachment that retrieves the rule table. If schedules and rules are added or modified at runtime, then the next update of the data attachment used as the input to the RtvScheduleTable and RtvScheduleRuleTable will apply those changes to all SQL queries using those schedules and rules. SCHEDULE SELECTION: Typically, when configuring a scheduled query in the Attach to SQL Data dialog, the user selects the name of a schedule from the Schedule Name dropdown list. But there are two other possibilities: (1) The user can enter a substitution string, e.g. $mySchedule or (2) the user can enter a list of rule names separated by commas, e.g. rule1,rule2,rule3. The 2nd option creates an "anonymous schedule" and is useful in the case where no schedule is defined with the desired set of rules. DIAGNOSTICS: Two columns named Schedule and Next Query Time have been added to the RTViewDS.Keys meta-table of the SQL data source. For each SQL query in the table, the Schedule column shows the name of the Schedule, if any, configured for the query. The Next Query Time shows the next time the query will be run according to its schedule or, if the query doesn't have a schedule, the next time it will be run according to its configured query interval. For Static and On Demand queries, the Next Query Time will show 1/1/1970 GMT. If the -sqltime option is specified, the console log will contain an additional message for scheduled queries, indicating the next time the query will be run: query for <schedule name>,<rule name> next due at <time>: <query string or query ID> For example: query for Weekday30 9to5,workdays_30m next due at 2015-Oct-05 16:30:00: select * from "plants" The SQL data source checks for scheduled queries that should be run on each update cycle. The default update cycle is 2 seconds. This means that a query will typically be run within a second or two of its scheduled time. For example, if the Next Query Time for a query is 16:30:00 the query may actually run between 16:30:00 and 16:30:02. OPTIONS: The accepted formats for days of the week, specific dates, and time zones in the Rule table will be printed to the console if the option -scheduler.dumpFormats:true is specified on the command line. For time zone, names that don't specify daylight savings, such as "US/Eastern", should be used. To add additional formats for specifying dates in rules, use the property sl.rtview.scheduler.dateFormat, for example: sl.rtview.scheduler.dateFormat=MMM dd, yyyy

20815: Fixed array index exception thrown when client receives bad table delta

A bug has been fixed that in certain conditions caused an ArrayIndexOutOfBoundsException to be thrown by a client when it received an update from a data server. This was most likely to occur if the update was for the current table of a cache which recently had multiple rows removed via its rowsToDeleteTable property.

Layouts

20966: New option to hide draggable divider on panel in thin client

In an RTView panels file with resizable dividers enabled, a panel can be configured to hide its divider in the thin client by setting nodivider="true". For example, in this panels file the divider that would normally appear below the north panel is hidden: <?xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> <rtvLayout title="My Panels" dividers="true"> <rtvDisplayPanel region="north" display="title.rtv" nodivider="true"/> <rtvAccordionPanel region="west" width="200" height="544" navdata="navtree.xml"/> <rtvDisplayPanel region="center" name="main" display="test1"/> </rtvLayout> </panels> The nodivider attribute is only supported in the thin client, it is ignored by the viewer. It is also ignored on the center panel.

Licensing

20926: Generic PIN no longer returned on Red Hat Linux 7

The license registration process will now correctly obtain a non-generic PIN from Redhat Linux 7 servers.

Object Library

20828: New bgClipTextFlag property added to obj_rect* label objects

The following objects support a new property named bgClipTextFlag: obj_rect_il obj_rect_ilv obj_rect_ilvs obj_rect_ilvx_da3 obj_rect_ilvx_ra4 obj_ind_discrete If the object's bgClipTextFlag is checked and its bgVisFlag is checked then its label and/or its valueString (whichever string is drawn within the background rectangle) will be clipped by the object's background rectangle. That is, the object's label will be clipped by the background rectangle if labelTextPosX is Inside Left, Center, or Inside Right AND labelTextPosY is Inside Top, Center, or Inside Bottom . The object's value or valueString (if any) will be clipped by the background rectangle if valueTextPosX is Inside Left, Center, or Inside Right AND valueTextPosY is Inside Top, Center, or Inside Bottom. In the Builder, the bgClipTextFlag property appears in the Background category on the property sheet. By default, bgClipTextFlag is unchecked. The property is not visible if bgVisFlag is unchecked. Only the visible text can be copied to the clipboard, in the thin client.

21219: bgClipTextFlag property now hidden for unsupported background styles

In the Builder the bgClipTextFlag property is hidden for the indicator objects obj_ind_multi, obj_ind_limits, and obj_ind_discrete if the bgStyle is set to Circle or Diamond, since the flag is only supported for rectangular background styles. In prior releases the bgClipTextFlag property was always visible but did not work in those 2 cases.

Bar Charts

21006: New property rowSeriesTraceMode added to the bargraph object.

A property named rowSeriesTraceMode has been added to the bargraph object. This allows row-series behavior to be enabled or disabled on the traces independently of the row-series setting for the bars. The default value of rowSeriesTraceMode is "Use rowSeriesFlag". With this value, the row-series behavior is enabled or disabled on the bars and the traces by the rowSeriesFlag property, as in previous releases. To enable row-series behavior on the bars but not the traces, check the rowSeriesFlag property and set traceRowSeriesMode = Off. To enable row-series behavior on the traces but not the bars, uncheck the rowSeriesFlag property and set traceRowSeriesMode = On.

Composite Object

20985: Fixes to objects with webLabelFlag enabled

Two problems involving the webLabelFlag property have been fixed. 1. If a composite object has a command or drilldown defined, and the subdisplay within the composite contains an label object with webLabelFlag = 1, then a click on that label object does not trigger the composite's command or drilldown. 2. Link lines drawn between objects with webLabelFlag = 1 may be mispositioned. Both problems are fixed.

Control Objects

20877: New property selectedValueColumnName to enhanced tree node selection

A property named selectedValueColumnName has been added to the tree/accordion controls. The property can be used to specify the name of the column in the valueTable to which the selectedValue should be compared, for selecting a node in the tree/accordion. This can be useful in cases where the value from one column (specified by valueColumnName) in the valueTable should be used to set the $value substitution when a tree node is clicked by the user, but a value in a different column (specified by selectedValueColumnName) should be used to highlight a tree node via the selectedValue property, If the selectedValueColumnName property is not set, then the existing valueColumnName property value will be used instead as in prior versions when highlighting the tree node that matches selectedValue.

20921: Tree/accordion L&F enhancements

Several properties have been added to the tree (obj_c1tree) and accordion (obj_c1accordion) controls. In all cases, the default value of the new property matches the default behavior of the control in previous releases. bgBorderFlag : This property appears in the Background category in the Builder's property sheet, for the tree and the accordion. If bgBorderFlag is checked then a 1 pixel dark border is drawn around the control, otherwise no border is drawn. By default the flag is checked and the border is visible, as it was in all prior releases. [Note that the border color and width are not configurable, only the visibility]. accordionCollapseFlag : This property appears in the Interaction category in the Builder's property sheet, for the accordion only. If accordionCollapseFlag is checked, only one branch of the accordion is open at a time. If the user clicks a node to open another branch, then the previously open branch is automatically closed. If accordionCollapseFlag is unchecked, opening another branch has no affect on other open branches. By default the flag is checked, to match the behavior in all previous releases. nodeClosedImage/nodeOpenImage : These two properties appear in the Node category in the Builder's property sheet, for the tree only. Use these properties to specify the names of the images to be shown to the left of a closed/open parent (non-leaf) tree node, respectively. By default these properties are blank, indicating that the default closed/open images should be used, as in all previous releases. nodeSelectColor/nodeSelectTextColor : These two properties appear in the Node category in the Builder's property sheet, for the tree only. Use these properties to set the background and text colors for the selected tree node. If set to "Default", then the platform or browser default selection colors are used. In addition, two thin client problems have been fixed: (1) A problem specific to IE9 has been fixed in which a drilldown triggered from an accordion control would sometimes fail and leave the target panel in the "Loading..." state. (2) A problem that caused the navigation panel containing a tree/accordion control or occasionally other panels to have the incorrect initial size has been fixed.

20922: Padding and hovering enhancements for the tab control

Several properties have been added to the tab control(obj_c1tabs). In all cases, the default value of the new property matches the default behavior of the control in previous releases. 1. paddingVertical : Extra padding, in pixels, to add above and below the label of each tab. This can be used to make the tabs taller without increasing the font size. 2. paddingHorizontal : Extra padding, in pixels, to add to the left and right of the label of each tab. This can be used to make the tabs wider, without increasing the font size. The default value is zero. 3. webHoverTabColor: The background color for an unselected tab when the cursor is over it. The default value is the same as the normal tab background color. This property only affects the thin client, it is ignored in the builder/viewer. 4. webHoverTextColor: The text color for an unselected tab when the cursor is over it. The default value is the same as the normal tab text color. This property only affects the thin client, it is ignored in the builder/viewer.

20965: New properties to set selected tab bg and text color

The tab control (obj_c1tabs) supports new properties named selectBgColor and selectTextColor to set the background and text color of the selected tab. The default value for both is Default, meaning that the background color of the selected tab will be a brighter shade of the unselected tabs in the thin client, and a darker shade in the viewer, and the text color of the selected tab is the same as the unselected tabs.

Tables

20996: Enable copy to clipboard on multiselect Kendo grid

The text in selected row or rows of the web (kendo) grid can now be copied to the clipboard by pressing Ctrl+c when the grid has keyboard focus. Only text cells are copied. If a cell contains an image, its value is not copied to the clipboard. The grid must have keyboard focus for the Ctrl+c keystroke to have effect.

Trend Charts

20625: Text properties handling in html5 chart improved

The following problems have been fixed in the thin client for trend chart objects with webChartFlag enabled: 1). For obj_trendgraph02, the labelTextColor property now sets the color of the axes labels and lines, as expected. Previously in the thin client the axes lines and labels were always black. 2) For obj_trendgraph02, the labelTextFont and labelTextHeight property now set the font used for the chart's title as expected. Previously they were ignored. 3) On mouseover, the text color of legend items no longer changes to black.

Platform Support

20734: Deprecate Windows installers & Bundled Docs

The Windows Installers for RTView Core have been deprecated. Windows users should now use the cross-platform .zip archive. Please see the documentation for more instructions on how to install RTView. Also, the User Guide is now available as a separate downloadable PDF, rather than bundled in the product installation.

Security

21179: Check column names in servlet URL for code injection attacks

The rtvquery servlet will now encode any < or > characters that appear in the "cols" parameter as < and > in the response, to avoid possible XSS hacks.

Version 6.6.0 Release Notes

20643: New option to restrict number of characters in alert comments in the alert ds

The Alert data source has been enhanced with a new Maximum Characters Allowed in Comments Field property to limit the number of characters it will store in the Comments field. In previous releases, new comments were appended to the existing contents of the Comments field with no limit on the amount of text. This caused problems for alert persistence and alert history if the Comment field became longer than corresponding database field could handle. For this enhancement, the order of the comments has been reversed so that new comments are added before existing contents in the Comments field. If the Maximum Characters Allowed in Comments Field is greater than 0 and a new comment is added to an alert, the content of the Comments field will be trimmed by removing characters from the end of the contents if necessary to stay under the limit. By default, this feature is disabled and the Comments field will grow unbounded as new comments are added. To enable the limit, set the Maximum Characters Allowed in Comments Field in the Alerts tab of the Application Options dialog to a value greater than 0. You can set it using the following property: sl.rtview.alert.commentlimit This comment limit is be available via a data attachment to alert-commentlimit to facilitate building a UI that will prevent users to enter comments longer than this limit. Note that the UI text entry limit should be set to 100 characters less than the comment limit in order to account for the time stamp, user name and hard returns between comments. Persisted alerts with comments from a previous versions will have mixed order on the Comments contents. It will be oldest->newest for persisted comments, then newest->oldest for new comments added in this and later releases. Persisted comments from previous versions that have been persisted and are longer than the specified Maximum Characters Allowed in Comments Field will be trimmed on startup.

Alerts

20664: New option to exit if alert persistence is enabled but database table is unavailable

The Alert data source has been enhanced with a new property: sl.rtview.alert.exitOnPersistInitFailed This property controls what happens when alert persistence is enabled but cannot be initialized due to a database problem or configuration issue. When exitOnPersistInitFailed is set to false (default), RTView will initialize the alerts with persistence disabled. This is the behavior in previous releases. When exitOnPersistInitFailed is set to true, RTView will exit after the persistence initialization has failed without initializing the alerts.

Builder

20330: Support aligning and distributing objects against objects from include files

The Builder has been enhanced to support Aligning and Distributing objects in the local .rtv file against objects in an included .rtv file. When the selection contains both objects in the local file and objects in an include file, ony the objects in the local file will move. Objects in include files can still only be edited directly in the include file.

20693: Builder no longer fails on Mac with JDK 1.7 or greater

The RTView Builder no longer fails on Mac with JDK 1.7 or greater.

Builder - Editing

20091: Display Data option enabled for read-only data attachments

The Builder has been enhanced so that the Display Data option is now available for read-only data attachments.

Commands

17078: Data attachments in multi-commands now work in thin client

In prior releases, data attachments used in commands within a multiple command did not work in a display server deployment. This is fixed.

19854: Email command no longer garbles Japanese chars in name of attached file

The Send Email command no longer garbles Japanese and other non-ascii characters in the names of files attached to an email.

Data Historian

20159: Sync up data from the history cache when historian starts

The Historian supports a new option named persistInitTimeRange which affects the cache persistence feature. Normally, when the cache persistence feature is enabled in the historian, the historian begins collecting cache history data starting at the time when each data server connects. This is adequate in most situations. The persistInitTimeRange option can be used to specify a time range, in seconds, back from the current time that the historian should get cache history data from the data server. This can be useful if the historian is started sometime after the data server, so the data server has collected cache history that hasn't been sent to the historian. For example, if the data server was started an hour before the historian, then the historian could be started as follows, so that it will request an hour of cache history from the data server: run_historian -persistCaches:true -persistInitTimeRange:3600

20637: New option to limit length of strings from cache table stored in db

The historian has been enhanced to support a limit on the length of a string from a cache table column that it will store in the database. If a string is longer than the specified limit, it will be truncated to the limit before it is stored in the database table. This can avoid SQL exceptions encountered when the length of a string exceeds the capacity of the column's data type (for example, 4000 characters in an VARCHAR2 column in Oracle). The limit is specified by a new property named stringColMaxLen. This can be specified in HISTORY.ini as follows: stringColMaxLen 3500 It can also be specified on the command line or a properties file. By default the property has no value, so no limit is enforced.

Compaction

19992: New Smooth Compaction configuration options

New arguments have been added to customize how compaction smoothing is performed. -smoothingonly Run smoothing only without data being provided -smoothcompaction:table1,table2 Restrict the tables being smoothed to those specified

20019: Compaction smoothing no longer sets incorrect "run after" date

Previously, the smooth compaction option caused an an incorrect "run after" date to be set for further compaction. This could result in a small portion of data not being compacted. This has been fixed.

20067: Data retention (purging) now correctly performed after compaction/smoothing

Previously, database retention logic was incorrectly postponed after smoothing/compaction had taken place on a table. This could result in the retention of more data than specified in historian configuration. This has been fixed.

20187: Option to perform compaction for a time range prior to "now"

An option was added to the Historian to allow for the smoothing process to only go back as far as a specified range in the form: -smoothCompactionRecent:NN Where NN is '1d' or '1w'

20254: Retention-only compaction now executed correctly

Previously the historian would fail to run compaction if the Compaction Rules consisted of a single rule that only specified a duration of Raw data (-). This has been fixed.

Data Server

20138: add ProcessName, PID columns to ClientData attrib of data server mbean

The data server's Manager mbean has a tabular attribute named ClientData which contains one row for each client connected to the data server. In this release the ClientData table has two new columns named PID and Process Name. These are intended to help administrators identify the process that corresponds to each client connection. The value that appears in the Process Name column depends on the type of client. If the client is an RTView application, then the Process Name shows the value of the PROCESS_NAME property when the app was started. If the client process was started with a standard RTView script (e.g. run_viewer, run_displayserver, etc) then the Process Name will be viewer, builder, dataserver, displayserver, or historian. For a server, a "d" at the end of the process name indicates it was started with the -daemon option. If the PROCESS_NAME property was undefined when the client process was started, then the Process Name will be RTView (the viewer), RTView Display Builder, Display Server, Data Server, or Historian, or the OEM names assigned to those applications. If the client is the viewer applet, then "applet" is appended to the name. If the client is the rtvdata or rtvquery servlet, the Process Name will be RTVDataServlet and rtvquery, respectively, or the custom servlet name that has been configured for the deployed servlet instance. The PID column shows the PID (process ID) of the client process. Typically the PID column value will appear as nnnn@hostname, where nnnn is the PID from the client's host system (as reported by jps, top, or tasklist) and hostname is the name of the client's host. If the client is the rtvdata or rtvquery servlet, then the PID will correspond to the app server (e.g. tomcat) process on the client host. The PID column may be blank if the client is unable to obtain its PID from the local operating system. The @hostname portion may be omitted if it cannot be obtained from the local operating system. The PID and Process Name columns will both be blank if the client process is running an older version of RTView that does not have this enhancement.

20231: Cache extend-by-sql option now supported in REST api

The REST (rtvquery) servlet now supports the "Extend with SQL" option on queries of cache history tables. This is enabled by setting the parameter named sqlex to true in a query URL. For example, the following URL is a query of the history table of a cache named Apps for the past 24 hours with the Extend with SQL option set: http://host/rtvquery/cache/Apps/history?fmt=text&tr=86400&sqlex=true Note that the new option only applies to a history table query, and only in the case where the time range (tr), begin time (tb), or end time (te) parameter is also specified. Use this option with caution as it may generate a large result.

20596: Fixed duplication in connection error messages

A bug has been fixed which caused duplication of log messages when a client lost its connection to a data server.

Data Sources

Cache Data Source

18403: Fixed cache bug with maxNumberOfCurrentRows and blank timestampColumnName

The cache data source no longer throws a NullPointerException if a cache has maxNumberOfCurrentRows > 0 and a blank timestampColumnName.

20191: Prevent data with timestamp < historyTimeSpan from going to history

In prior releases, a row with a timestamp older than a cache's historyTimeSpan could be added to the cache's history table and would not be removed until the next update. In this release this has been fixed so that such a row is not added to the history table in the first place.

JMS Data Source

20767: xml parser no longer throws exception if token >= 8192 chars

In previous releases, the JMS and XML data sources would throw an ArrayIndexOutOfBoundsException if an XML string token contained 8192 or more characters and none of those characters was a space. This is fixed.

JMX Data Source

19993: JMX handler now provides context information for operations

The API "public String getTarget()" was added to GmsRtViewJmxDataObject for use by JMX custom data handlers.

RRD Data Source

19986: RRD data adapter fixed for Linux

In previous versions the the RRD data adapter was not correctly executing rrdtool on linux systems. This has been fixed.

20589: Improved timezone support

The Round Robin Database (RRD) data source now handles variations of start/stop times in different time zones.

SQL Data Source

19563: -sqltryodbc:false is now the default RTView behavior

By default, the SQL data source will no longer attempt to make an ODBC connection to XYZ if an sql query or command is executed that references a database XYZ but there is no definition of XYZ in OPTIONS.ini. Instead the following error message will appear in the console: Undefined SQL database XYZ To force the SQL data source to attempt an ODBC connection when an undefined database is referenced as in prior releases, specify the following command-line options: -sqltryodbc:true The option can also be specified in OPTIONS.ini: sqltryodbc true or in a properties file: sl.rtview.sql.sqltryodbc=true Note that RTView will still make an ODBC connection to database XYZ if it appears in OPTIONS.ini with the odbc driver specified, regardless of the -sqltrodbc option. However, note that the ODBC driver is not supported in Java 1.8 or newer. If an ODBC connection is attempted in java 1.8 or newer, the following error messages will appear in the console: ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver (ODBC driver is not available in Java 1.8 or newer) Unable to connect to database <XYZ>: No suitable driver found for jdbc:odbc:XYZ

19928: ODBC option removed from Builder and Historian GUI

The checkbox labeled "Use ODBC Driver" has been removed from the SQL Add Database dialog in the Builder and also from the Database Options panel of the Historian UI. This change was made because the JdbcOdbc driver is no longer supported by Oracle beginning in Java 1.8 and in earlier releases it was not intended for production use. If an existing OPTIONS.ini or HISTORY.ini file contains a database connection that was saved with the "Use ODBC Driver" box checked, those connections will still work in this release if run with java < 1.8. In the new UI, such entries will now show: JDBC Driver Class Name : sun.jdbc.odbc.JdbcOdbcDriver JDBC Database URL : jdbc:odbc:<dbname> ... rather than showing the checked "Use ODBC Driver" box. But, if run with java 1.8 or newer, the following error will appear in the console for each database that is configured to use ODBC: ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver (ODBC driver is not available in Java 1.8 or newer)

20692: Fixed bogus timeout of sql query

A problem has been fixed in the SQL datasource which would sometimes cause a query to fail with a bogus timeout error showing a very large and incorrect timeout value.

Demos

19927: ODBC connections in demos replaced with JDBC connections

The use of ODBC for the dstutorial and esphere demos has been deprecated. These demos now use JDBC HSQLDB databases.

20130: Windows start menu simplified

The Windows Installer now creates a much smaller set of Start Menu shortcuts. The remaining shortcuts are: About Documentation Registration RTView Command Prompt System Requirements Uninstaller

20644: Restricted the number of characters for alert comment in self service alerts

Set Owner and Comments dialog in the Self Service Alerts demo has been enhanced to respect the new Maximum Characters Allowed in Comments Field property on the Alert data source. If the Maximum Characters Allowed in Comments Field has been set, the field for entering comments enforces a limit of 100 characters less that the Maximum Characters Allowed in Comments Field. This is to allow for the timestamp and user name to be added to the comment. If the character limit is exceeded, an error message is displayed and the Add Comment button is disabled.

Display Server

18024: Fixed ArrayIndexOutOfBounds on Grid containing more than 1 icon type

In prior releases, the display server threw an ArrayIndexOutOfBounds exception if a display was opened containing an object grid configured with more than one icon per item, and the display was not rendered in the thin client. This is fixed.

19512: Support audio and threshold command in thin client

The thin client now supports the Play Audio File command and threshold commands. In addition, a new property named valueCommandResetTrigger has been added to the display objects that support threshold commands. ------------------- Play Audio File command: The thin client now supports the Play Audio File command. The support for audio file formats varies by platform, as follows. - The Play Audio File command is not supported in Internet Explorer version 8 and older. - In a desktop browser (Internet Explorer 9 or newer, Firefox, Chrome) .wav and .mp3 files are supported. However, Internet Explorer uses the Windows Media Player to play .wav files, which may require user confirmation or may fail due to security settings. - In mobile browsers (e.g. Safari on iOS) only .mp3 files are supported, and the user must click on the "Enable Audio" button that appears in a display the first time an audio command is executed. - The "Beep" command is still not supported in the thin client. Note that in the builder/viewer, only .wav files are supported by the Play Audio File command. This has always been the case and has not changed in this release. --------------------- Threshold command: There are four objects that support threshold commands: obj_circ2d_ilvx_ra4, obj_rect_ilvx_ra4, obj_circ2d_ilvx_da3, and obj_rect_ilvx_da3. A threshold command can be defined using any of the properties named value*Command on those objects. In this release, if the webChartFlag property is checked on an object with a threshold command, the threshold command will be executed in a thin client deployment when appropriate. In prior releases, threshold commands were ignored in a thin client deployment. If the threshold command is a supported client-side command it will be executed in the browser. The client-side commands are: Play Audio File, Drilldown/Set substitution, Execute Custom Command (if the custom command has a javascript implementation), Open Browser. All other commands are executed by the display server or (for a data source command) in the data server. A new property named valueCommandResetTrigger was added to the objects that support threshold commands. Typically, once a threshold command has been executed by one of those objects because the value exceeds or equals a limit, the command will not execute again until the value exceeds another limit. But now, if the value of valueCommandResetTrigger property is changed, then the object's threshold command will be executed again even if the value property has not changed. Changing the value of valueCommandResetTrigger when the object's value is not at or above a limit has no effect.

19979: Added Sessions table to display server mbean

The Display Server's JMX Manager mbean supports a new tabular attribute named Sessions. The Sessions table contains one row for each active client session. Typically, there will be one client session for each browser instance that is currently viewing a thin client display. The Sessions table contains the following columns. - Session ID: unique ID for client session - Client Address: the IP address of the client. - Duration: elapsed time since this client session was created. - Last Reference Time: elapsed time since this client opened or refreshed a display. - User: the login user name - Role: the login user role Notes on each column: The Session ID is also a column in the mbean's DisplayData table, which contains one row for each display that is currently open in a thin client. The Session ID is a unique string assigned to a session by RTView and is not the same value as the session identifier assigned by the webapp mananger (tomcat). The Client Address will be in IPv4 (e.g. x.x.x.x) or IPv6 (x:x:x:x:x:x:x:x) notation, depending on which protocol the client browser used to connect to the rtvdisplay servlet. For example, if the client is on localhost then the client address could be shown as 127.0.0.1 for IPv4, or 0:0:0:0:0:0:0:1 for IPv6. The Duration column and the Last Reference Time column show elapsed time as "d hh:mm:ss" where d = days, hh = hours, mm = minutes, and ss = seconds. By default, a session expires and is removed from the table after about 10 or 11 minutes of inactivity (that is, when the elapsed time shown in the Last Ref Time column is "0 00:11:00" or more). If the display server's display_timeout property has been set, then the session expiration is 10 times the display_timeout value. (The default display_timeout is 60 seconds). The User and Role columns will be blank if the login feature of the rtvdisplay servlet is disabled.

20185: Kendo grid now supported

The "web grid" is a new HTML implementation of the RTView table object (obj_table02) that provides enhanced filtering, sorting, and other interactive features. The web grid is available in the thin client only. 1. Enabling the Web Grid: A new property has been added to obj_table02, named webGridFlag. To enable the web grid in the thin client for a specific obj_table02 instance, check the object's webGridFlag property in the Builder property sheet. Alternatively, the web grid can be enabled on all obj_table02 instances by adding the following rule to an rtview stylesheet (.rts) file loaded by the display server: obj_table02 { webGridFlag : 1 } The default value of webGridFlag is false, which indicates that the "classic" html grid should be used in the thin client. 2. Requirements: If webGridFlag = true then the web grid will appear in the thin client in any modern version of a supported browser. No plugin is required. For Internet Explorer users, version 9 or newer is required and version 11 is recommended for best performance. In IE8 or older, the web grid is not supported so the classic grid will be used regardless of the webGridFlag setting. In this release the web grid is not supported on iPad but may be supported in the future. 3. New Features: The web grid supports a number of new, interactive features: sorting on multiple columns, filtering on multiple columns, column resizing, column reordering, and hiding columns. In addition the user can "unsort" a previously selected sort column, returning it to its original unsorted order. In a grid with rowHeaderEnabledFlag = true, additional columns can be locked into the row header so they remain visible regardless of the horizontal scroll position. Many of these features are accessed from the column menu opened by clicking on the menu icon that appears near the right edge of each column's header. The user can save all of the aforementioned column settings/options permanently, in the browser's local. The saved settings are automatically restored when the user later reopens the display, with the same username and role. Also, for improved performance and usability, if a data table contains more than 200 rows the web grid will display it in pages of 200 rows, using a page control that appears at the bottom of the grid. Each new feature is described below: 3a. Column Sorting: The user can click on a column header to sort the table by that column. On the first click, the column is sorted in ascending order (smallest value at the top), on the 2nd click the sort is in descending order, and on the 3rd click the column is returned to its original unsorted state. A sort on a string column is case-insensitive. The user can select multiple sort columns. In that case, the sorting is performed in the order that the column headers were clicked. Multiple column sorting is a very useful feature, but can also cause confusion if the user intends to sort on a single column, but forgets to "unsort" any previously selected sort columns first. Users should check for the up/down sort icon in other column headers if a sort gives unexpected results. Column sorting is reflected in an export to html/excel. 3b. Column Visibility: The user can hide or show columns in the table by clicking on any column's menu icon, and picking Columns from the menu. This will open a submenu with a checkbox for each column that toggles the visibility of the column. All columns in the data table will appear in the Columns menu, even those that are initially hidden by the obj_table02 property columnsToHide. If the grid has the rowHeaderEnabledFlag property checked then the leftmost column (the row header column) cannot be hidden. Column visibility changes are NOT reflected in an export to html/excel. 3c. Column Filtering: The user can create a filter on any column. If filters are created on multiple columns, then only the rows that pass all of the filters are displayed. That is, if there are multiple filters they are logically ANDed together to produce the final result. The background of a column's menu icon changes to white to indicate that a filter is defined on that column. This is intended to remind the user which columns are filtered. The user can configure a filter on any column by clicking on the column's menu icon and picking Filter from the menu. This will open the column filter dialog, which varies according to the data type of the selected column: - For a string column, the user can enter a filter string such as "abc" and, from the dropdown list, select the operator (equal to, not equal to, starts with, contains, etc) to be used when comparing the filter string to each string in the column. All of the filter comparisons on strings are case-insensitive. The user can optionally enter a second filter string (e.g. "xyz") and specify if an AND or OR combination should be used to combine the first and second filter results on the column. - For a numeric column, the user enters numeric filter values and selects arithmetic comparison operators, (=, !=, >, >=, <, <=). The user can optionally enter a second filter value and comparison operator, and specify if an AND or OR combination should be used to combine the first and second filter results. - For a date column, the user can select a date and time and choose whether matching items should have a timestamp that is the same as, before, or after the filter time. The date is selected by clicking on the calendar icon and picking a date from a calendar dialog. The time is selected by clicking on the time icon and picking a time from a dropdown list. Alternatively, a date and time can be typed into the edit box. (See the limitations section for a note on time filtering when the client and server are located in different time zones). - For a boolean column, the user simply selects whether matching items should be true or false. Data updates to the grid are suspended while the filter menu is opened. The updates are applied when the menu is closed. Column filtering is reflected in an export to html/excel. 3d. Column Locking: This feature is available only if the obj_table02 instance has the row header feature enabled (rowHeaderEnabledFlag is checked). If so, the leftmost column is "locked" in position, meaning that it will not scroll horizontally with the other columns in the table. If the row header is enabled, then two items labelled Lock and Unlock will appear in the column menu. These can be used to add or remove additional columns from the non-scrolling row header area. If the row header is enabled, at least one column must remain locked. 3e. Column Reordering: The user can reorder the grid columns by dragging and dropping a column's header into another position. If the grid has rowHeaderEnabledFlag checked, then dragging a column into or out of the row header area (the leftmost columns) is equivalent to locking or unlocking the column. Column reordering is NOT reflected in an export to html/excel. 3f. Paging: If the data table contains more than one page of rows, the page controls are displayed at the bottom of the grid. The default page size is 200 but can be set on each obj_table02 instance via the new property named webGridRowsPerPage. The default value of that property is zero, which indicates that the default size (200) should be used. If the height of the grid is less than about 64 pixels, there is insufficient space to display the page controls so only the rows on the first page will be viewable. 3g. Row mouseover: A new property named webGridHoverColor is available on obj_table02. It is visible only if webGridFlag = true. The default value of webGridHoverColor is checked. If it is set to any other color index value, then that color will be used to highlight the row that is under the mouse cursor. But if the obj_table02 filterProperties feature is used to color rows, that color will take precedence, so the webGridHoverColor may not be useful in those cases. Also, if the row header is enabled, the row header column and the other columns are highlighted separately, according to which section of the grid the mouse is over. 3h. Saving settings: The user can permanently save all of the custom settings made to the grid, including filtering, sorting, column size (width), column order, column visibility, and column locking. This is done by opening any column menu, clicking Settings, and then clicking Save All. The grid's settings are written as an item in the browser's local storage. The item's value is the a string containing the grid's settings. The item uses a unique key comprised of the URL path name, the display name, and the obj_table02 instance's rtview object name. If the thin client's login feature is enabled, the key will also include the username and role, so different settings can be saved for each user and role for a grid on any given display, in the same browser and host. If the user saves the grid settings and navigates away from the display or closes the browser, then the next time the user returns to the display in the same browser the settings are retrieved from the browser's local storage and applied to the grid. The browser's local storage items are persistent, so the grid settings are preserved if the browser is closed and reopened or if the host system is restarted. If the obj_table02 has autoResizeFlag = true then the column widths will not be restored from the saved settings, and the values computed by the auto-resize feature will be used instead. This is by design. The user can delete the grid's item from local storage by clicking Settings -> Clear All in any column menu. This will permanently delete the saved settings for the grid and return the grid to the state defined in the display file. Note that each browser has its own local storage on each host. The local storage items are not shared between browsers on the same host or on different hosts. So, if a user logs in as Joe with role = admin, in Internet Explorer on host H1, and saves grid settings for display X, then those grid settings will be restored each time a user logs in as Joe, role admin, on host H1 and opens display X in Internet Explorer. But if all the same is true except that the browser is Chrome, then the settings saved in Internet Explorer will not be applied. Or if the user is Joe and role is admin and the browser is IE and the display is X, but the host system is H2 not H1, then the grid settings saved on H1 will not be applied. 4. Support for large tables: The web grid can support data tables with many rows and columns. However, for best performance the display server's cellsperpage property should be specified so that the server will send large tables to the client in pages, rather than sending all of the rows. In this server paging mode, large tables are also filtered and sorted in the display server, to improve performance and decrease data traffic. The cellsperpage option is not new or specific to the web grid, it has been available for several years. See the RTView documentation for a description of the cellsperpage property, and the related cellsperexport and cellsperreport properties. A typical value for cellsperpage is 20000. 5. Unsupported obj_table02 features: The following are existing features of obj_table02 that are not supported by the web grid -The rowHeaderEnabledFlag property is supported, but rowHeaderBgColor, rowHeaderTextColor, rowHeaderTextFont, rowHeaderTextSize are ignored. Instead the row header column is rendered like all other columns. - The columnResizeEnabledFlag is ignored if it is false, the web grid always allows column resizing. - The editDataEnabledFlag is ignored, the table editing feature using custom commands is currently not supported. 6. Other limitations, and differences between the new & classic grids: - Time zones: The strings shown in a date column are formatted by the display server using its time zone. But if a filter is specified on a date column, the date and time for the filter are computed using the client system's time zone. This can be confusing if the display server and client are in different time zones. - Selected rows: The grid's row selection is cleared if the sort is changed or if columns are resized or reordered. - Scrollbars: In general the grid will only display scrollbars when they are needed. However, the web grid and the classic grid use different algorithms for deciding when to show or hide scrollbars, and do not use identical row heights and column widths. So the web grid may sometimes display scrollbars when the classic grid does not, for a grid instance with a given width and height. - Keyboard traversal: In the classic grid, selecting a row and then using the up/down arrow keys will change the selection to the previous/next row. In the web grid, the arrow keys will move the keyboard focus to another row, as indicated by a highlight border around the focused table cell, but the user must press the space bar to select the row that contains the highlighted (focused) cell. - Column widths: On a web grid with no locked columns (rowHeaderEnabledFlag = false), columns will expand to fill any unused width in the table, even if autoResizeFlag = false. That is, if the total width of the columns is less than the grid width (ie. the columns don't use all of the available width) then each column is expanded proportionally to fill the table. In contrast, the classic and Swing (viewer) grids just leave unused space at the right edge of the grid. If the grid has locked columns (rowHeaderEnabledFlag = true), then the web grid behaves the same as the classic and Swing grids. - Export: The export to html and export to excel features are supported on the web grid, and behave much the same as on the classic grid. The exported table respects the grid's filter and sort settings but ignores any column reordering, sizing, or hiding changes made by the user. - Data updates to the grid are suspended while the filter menu is opened. The updates are applied when the menu is closed. 7. An implementation note, for custom web page developers only: The rtview thin client now uses 2 versions of the jQuery javascript library jQuery 1.3.2, to support the jQuery UI components used for panels, layout, and (some) navigation controls jQuery 1.9.1, to support the web grid Version 1.3.2 is bundled into the thin client js file named rtvNav1.js, while version 1.9.1 is loaded as a separate js file. To prevent conflicts between the two libraries, the jQuery $ alias is no longer used by rtview and is intentionally removed. Instead the jQuery 1.3.2 library is referenced by the alias rtv.jqNav as needed, and the jQuery 1.9.1 library is referenced by the alias rtv.jq as needed. This could affect existing custom javascript code that users have written. For example, the following is a snippet of javascript from a custom html page that uses jQuery UI tabs for navigation <script src="rtvNav1.js"></script> <script> $(document).ready(function () { var outerLayout = $('body').layout({ north__size:64, north__spacing_open: 0, }); $('#tabs').tabs(); ... The code above uses the jQuery $ alias, which it assumes is defined in the rtvNav1.js file. But that is no longer true, so the custom code should be rewritten to use the rtv.jqNav alias for jQuery in place of the $ alias, as follows: <script src="rtvNav1.js"></script> <script> rtv.jqNav(document).ready(function () { var outerLayout = rtv.jqNav('body').layout({ north__size:64, north__spacing_open: 0, }); rtv.jqNav('#tabs').tabs(); ...

20237: Touchscreen PCs no longer display thin client in tablet mode

In prior releases, if the thin client was opened in a browser on a PC with a touchscreen, items would be missing from in the right-click context menu. The missing items includied the Drill Down, Execute Command, and Export Table to Excel items, plus any custom menu items. This is fixed.

20582: Enable mouse cursor to change appearance when hovering over composites

If a composite object has its drilldownTarget set, then in the thin client the "hand" cursor will appear when the mouse is over the composite. This is consistent with the behavior of other objects that have a drilldownTarget.

20621: Fixed: obj_rect_il may not draw in comp grid if webLabelFlag=1

A bug in the thin client has been fixed that sometimes caused objects with the webLabelFlag property checked to not to be drawn if the objects were in a composite display inside an object grid instance.

20623: Table no longer fails to populate when cellsperpage is smaller than visible cells

A bug in the display server has been fixed which sometimes caused table cells in the thin client to always contain "..." if the cellsperpage property was set. Typically this occurred if the cellsperpage value was small (in the range of 1000 to 2000) and a table with many columns was opened. It was unlikely to occur with a typical cellsperpage value of 10000 or more. The problem is fixed for all cellsperpage values. As before, a value less than 1000 is ignored.

20679: Table row selection in AW grid no longer unreliable in IE >= 10

In previous releases, when using the thin client in IE 10 and 11, after performing a drilldown from a table object subsequent row clicks in the same table may be ignored. This is fixed.

Functions

19950: Fixed Group By Unique Values function error

Previously, when the restrict to value list option was enabled, all rows from the original table that were not found in the value list were incorrectly assigned to the first element of the value list. This has been fixed.

General

19466: Version info now available via RTView Manager MBean

The RTView Manager MBean has been enhanced to support a new method, VersionInfoDetails, which returns detailed version information about the RTView application. The table will contain one row for each RTView jar in the application and contains the following columns: ApplicationName - The name of the application. Ex.RTView Data Server. ApplicationConfiguration - The configuration string for the application. This string contains the main application version that corresponds to the version information that is printed to the console at startup. JarName - The name of the jar. JarConfiguration- The configuration string for the jar. JarVersionNumber - The version number for the jar. JarVersionDate - The version date for the jar. JarReleaseType - The release type for the jar. JarMicroVersion - The micro version for the jar. This table is useful when reporting problems to SL Technical Support as it contains very detailed information about the version of each jar used in an RTView application.

19901: Stylesheet processing bug fixed

When colors of objects are driven by both stylesheets and functions, the functions should take precedence. In the previous release, the stylesheet was being incorrectly applied to properties that were attached to data. In many cases this was not noticeable because an update to the data attachment would override the stylesheet setting. However, in some cases where the data attachment didn't update after the display was processed, the stylesheet value was used. This has been fixed so that stylesheet values are no longer applied to properties that are attached to data.

20326: New -version flag that prints version information without starting the app

Each of the RTView applications now supports a -version option on the command line which will cause the app to print the RTView version information and then exit immediately. For example: run_dataserver -version

Logging

19543: Alert notification script output error when using log4j

Alert notifications from an RTView now go to a log4j output as desired.

Object Library

Charts (General)

20790: New Google Map object

Introduction: ------------- A new display object for embedding a Google Map in an RTView display is now supported. The new object is named obj_gmap and is located on the Graphs tab in the Builder's object palette. In the builder, an obj_gmap instance appears as a gray "placeholder" rectangle which is used to set the size and position of the map on the display, and to allow configuration of the latitude, longitude, zoom level and other map properties via the Builder's property sheet. The Google Map is only rendered when the display is opened in the thin client. In the Builder and Viewer, and obj_gmap instance will always appear as an empty gray rectangle. Using the map properties and RTView data attachments, the map can be populated with marker objects at specific lat/long positions, and also links between the markers. RTView drilldown and command operations can be triggered by clicks on the map, or on the markers or links on the map. Double click and right click actions, and drillDownColumn subs are supported, as on other RTView table-driven objects. Map operations such as zoom, pan, and marker selection can be tied to rtview variables. Requirements: ------------- The thin client must have internet access in order to download the Google Maps javascript API and map data. The thin client supports Google Maps in Internet Explorer version 9 or newer, and any other RTView-supported browsers (Firefox, Chrome, iOS Safari). The Viewer does not support the map object. The thin client loads the Google Maps Javascript API to render and manipulate the map. In most cases a key or license must be obtained from Google for business use of the Google Maps Javascript API. See the "Licensing" section later in this document. Map Object Properties and Features: ----------------------------------- A Google Map is added to an RTView display by creating an instance of the obj_gmap display object, found on the Graphs tab of the Builder's object palette. In the builder, an obj_gmap instance appears as a gray "placeholder" rectangle which is used to set the size and position of the map on the display, and to allow configuration of the latitude, longitude, zoom level and other map properties via the Builder's property sheet. The Google Map is only rendered when the display is opened in the thin client. The following properties are supported by obj_gmap: ("Data" category): + valueTable: This property can be used to place markers (icons) on the map, at specific locations. The property should be attached to a table that contains one row for each marker, with the columns shown below. The column names are unimportant, but the column order and type must be as follows. The first 3 columns are required, the others are optional. column 1 (string): name column 2 (number): latitude column 3 (number): longitude column 4 (string): icon name/path column 5 (integer): icon height in pixels The marker name is used is drilldowns to indicate the selected (clicked) marker, and can also be used to select a marker, so it should be unique. If column 4 (icon name) is omitted or is empty, the default Google Maps marker will be used. If column 5 (icon height) exists and its value is > 0, the value is used to center the icon on the marker's lat/long position, otherwise the 0,0 pixel of the icon will be placed on the marker's lat/long position. + valueTableForLinks: This property can be used to draw links between markers on the map. The property should be attached to a table that contains one row for each link, with the columns shown below. The column names are unimportant, but the column order and type must be as follows. The first 2 columns are required, the others are optional. column 1 (string): name of marker at start of link column 2 (string): name of marker at end of link column 3 (string): link line color, as a css color name or #rrggbb hex value. column 4 (integer): link line width column 5 (integer): arrow mode The first two columns specify the names of the markers at the start and end of the link. These must correspond to the names of markers in the valueTable. If column 3 is omitted the link color is black. If column 4 is omitted the link width is 2 pixels. The arrow mode values are 1 (one arrow, pointing to start marker), 2 (one arrow, pointing to end marker) and 3 (two markers, at each end of link). If column 5 is omitted the default mode of 3 is used. ("Interaction" category): + command: the command to invoke when the user clicks on the map, a marker, or a link + drillDownColumnSubs: this property is treated the same as for other table-driven objects. If a marker is clicked, the drillDownColumnSubs are set using values from the valueTable row that corresponds to that marker. If a link is clicked, the drillDownColumnSubs are set using values from the valueTableForLinks row that corresponds to that link. In addition, the following predefined substitutions are also set when a drilldown is executed: $mapSelLat : the latitude of the map location or marker clicked $mapSelLng : the longitude of the map location or marker clicked $mapLat : the latitude of the map's current center location $mapLng : the longitude of the map's current center location $mapZoom : the current zoom level of the map, a value between 0 and 21 + drillDownSelectMode: This property can be set to the following values: Anywhere: a click anywhere on the map will trigger the object's command or drilldown. Markers: only a click on a marker will trigger the command or drilldown. Links: only a click on a link will trigger the command or drilldown. Markers & Links only a click on a marker or a link will trigger the command or drilldown. + menuItemGroup: As with other objects (table, heatmap, tree) this property is used to add custom items to the context menu, when a map marker is right-clicked. + label: The label string for the map placeholder object. This is visible only in the Builder. ("Map" category): + labelsZoomThreshold: If this property is set to a value > 0 a label balloon will appear next to each marker when the zoom level is greater than or equal to that value. The label text in the balloon is the name assigned to the marker, by the first column in the valueTable. A label can be closed by clicking its "x" button. The label will reappear if the display is closed and reopened or if the zoom threshold is crossed again later. The default value of labelsZoomThreshold is zero which disables the labels. + latitude: the latitude of the point on which the map is to be centered + longitude: the longitude of the point on which the map is to be centered * selectedMarker: the name of the marker to select + zoom: the zoom level of the map, between 0 and 21. The other properties supported by the map object but not listed here are common to all display objects, and have the same purpose and behavior as on the other display objects. Licensing: ---------- Business use of the Google Maps Javascript API typically requires a key or license from Google. For more information, see the following: https://developers.google.com/maps/licensing SL does not provide a key or license for the Google Maps Javascript API. However, the thin client can be configured to download the API using a custom URL that contains specific key or license information obtained from Google. The custom URL is defined by modifying the rtv_custom.js file contained in rtvdisplay.war. (Refer to the customization section of the RTView documentation for details on modifying rtvdisplay.war) To specify a custom URL to download the Google Maps Javascript API, add the following line to rtv_custom.js: rtv.customGoogleMapsApiBaseURL = 'url'; For example, to specify a URL containing a Google API key: rtv.customGoogleMapsApiBaseURL = "https://maps.googleapis.com/maps/api/js?key=YOUR_GOOGLE_API_KEY"; Or, to specify a "Google Maps API for Work" client ID and release version 3.20: rtv.customGoogleMapsApiBaseURL = "https://maps.googleapis.com/maps/api/js?client=YOUR_GOOGLE_CLIENT_ID&v=3.20"; If no rtv.customGoogleMapsApiBaseURL value is specified, the thin client will use the following public URL to download the latest "experimental" version of the API with no key or license information: https://maps.googleapis.com/maps/api/js

Control Objects

20142: Fixed minor usability problems with tree/accordion control

The following minor problems with the tree and accordion control object are fixed: 1 The initialExpandDepth property is now only applied to new branches. Previously, on a tree control with valueTableType = Row-node the initialExpandDepth was improperly reapplied on each update to the tree, reopening any existing branches that the user may have closed. 2. In the thin client, the labels on accordion buttons are now aligned properly: Parent (non-leaf) node labels are left aligned, and leaf node labels are center aligned. This is consistent with the accordion in the builder/viewer. Previously, parent node labels were center aligned in the thin client, which was incorrect. 3. On a tree control In the thin client, a click on the +/- icon now opens/closes the tree branch as expected but it no longer selects the node or triggers the tree control's command. This is now consistent with the tree control behavior in the viewer. 4. On an accordion control In the thin client in most browsers, a click on a left/down arrow icon now opens/closes the branch as expected but it no longer activates the accordion button or triggers the accordion control's command. However, in IE version 8 or older, and in the viewer, the accordion button is still activated and the control's command is executed.

20638: New property to limit text entered into text area control

The text area control (obj_c1textarea) has been enhanced to enforce an optional maximum character limit. (The text field control, obj_c1textedit, has supported this feature for several releases). maxCharacters - The maximum number of characters that will be submitted to the control's actionCommand. The default value is blank (no limit). The limit does not restrict the length of the text in the control, instead the limit is checked before the command is executed and if the limit is exceeded, the command is not executed. inputValidVarToSet - Attach to a local variable. This variable will be updated with a value of 1 if the maxCharacters limit is blank or the text is less than or equal to the maxCharacters limit, or updated with a value of 0 if the text length exceeds the maxCharacters limit. invalidInputMsgVarToSet - Attach to a local variable. This variable will be updated with an error message if the text length exceeds the maxCharacters limit, or updated with an empty string if the text length is less than or equal to the maxCharacters limit.

20710: Enhanced text controls to only execute actions if text changed

A new property named executeOnlyIfChangedFlag has been added to the text control objects (obj_c1text*). If executeOnlyIfChangedFlag is true, and if the text control's varToset and its valueString or value property are attached to the same local variable, then the control's command will be executed only if the text in the control is changed. By default executeOnlyIfChangedFlag is false, in which case the control's command is executed whenever the control loses focus (if executeOnFocusLostFlag = true or if the control is a text area) or whenever the user presses the Enter key in the control (if the control is not a text area), regardless of whether the text in the control was changed. This matches the text control behavior in all previous releases.

20771: New Tab Control object

A tab control object is now supported in RTView. The name of the object is obj_c1tabs. It appears on the Controls tab of the Builder's object palette. The tab control has two "fake" tabs labelled A and B when it is drawn on the palette, and also when the user places an instance on a display. The fake tabs are replaced with the actual tabs by attaching the tab control's valueTable property to a data table containing one row for each tab. The size given to the control in the Builder determines the space available for tabs. The tabs are drawn horizontally with the first tab at the left edge of the control. If the control is not wide enough to show all of the tabs, the tabs will wrap vertically. If the control is not tall enough to show all of the tabs, some of the tabs may be clipped or invisible. Changing the control's labelTextSize property will change the size of the tab label text, which will also affect the size of the tabs. The tab control is populated from a data table attached to its valueTable property, with one tab created for each row in the table. The following tab control properties are used to map the columns of the data table to each tab: labelColumnName - the value from this column is used as the tab label. If labelColumnName does not specify a column in the valueTable or if it contains an empty string, then the tab for row N in the valueTable will be labelled "Tab N". The labelColumnName property appears in the Label category. valueColumnName - the value from this column is assigned to the variable (if any) attached to the tab control's varToSet property when the corresponding tab is selected by the user. If valueColumnName does not specify a column in the valueTable, then the tab's index (0 through N - 1, for a table with N rows) is used as the tab value. The valueColumnName property appears in the Data category. imageColumnName - the value from this column is used to load an icon image, shown to the left of the tab's label . If imageColumnName does not specify a column in the valueTable, or if the column is empty, or if the image can't be found, the tab will not contain an icon. An icon will affect the size of the tab. The imageColumnName property appears in the Image category. mouseOverColumnName - the value from this column is used as the tooltip for each tab. If mouseOverColumnName does not specify a column in the valueTable, or if the column is empty, the tab will not display a tooltip. The mouseOverColumnName property appears in the Interaction category. The tab control supports the drillDownColumnSubs property, which can be useful in cases where the tab's command is a drilldown. As with other objects that support drillDownColumnSubs, it can be used to set the values for substitutions and local variables from columns in the row of the valueTable that corresponds to the selected tab. As usual, the control's visFlag property can be used to toggle the control's visibility. Unlike the other control objects, the tab control does not support the enabledFlag property so it is always enabled. As on other control objects, the predefined substitution named $value can be used in the control's command. The value of the selected tab will be substituted for $value when the command is executed. (See the valueColumnName property for a description of how a tab's value is determined). If a tab control has a command defined and the commandConfirm property is checked, the user will be asked to confirm the command when a tab is clicked, but the clicked tab will become the selected tab regardless of the user's response. Limitations / Differences: - In the thin client, the tab control is not supported in IE version 8 or older and will not appear in displays opened in those versions. - The tab sizes and appearance may differ somewhat when viewed in the Builder/Viewer vs. thin client. - In the thin client, the background color of the selected tab is brighter than the unselected tabs, while in the builder/viewer the selected tab is darker than the other tabs. (This difference is intentional, to conform with the standard appearance of tabs in Swing vs. a browser.)

Status History

19936: Added support for data quality to obj_statushistory

The status history chart (obj_statushistory) has been enhanced to indicate data quality. Two new properties have been added, named valueQualityColumnName and valueQualityBadValuesList. These properties can be used to set a color and pattern to be plotted when on a bar when the data quality is bad. The valueQualityColumnName property can be set to the name of the table column that contains a value indicating the data quality for each row. The column can contain string, integer, or boolean values. The valueQualityBadValuesList property can be set to a string containing value,label pairs with each pair separated by semicolons. This is used to assign a label to a numeric bad quality value, for example "-1,no data;0,stale data" The default value for valueQualityColumnName is blank, which means that the new feature is disabled. In this mode the color and pattern for each bar is determined by getting the value for that row from the column specified by valueColumnName, and looking up that value in the chart's barProperties. (This is the behavior in all prior releases). If valueQualityColumnName non-blank, then for each row R the row's value to be plotted is determined as follows: - let Q = value of quality column for row R, and V = value of value column for row R - if Q is blank, then the quality is considered good and V is used at the row value, as normal. - else if the valueQualityBadValuesList property is blank, then Q is used as the row value. - else if valueQualityBadValuesList contains an entry "Q,X" then X is used as the row value - else the quality is considered good (since no match was found in valueQualityBadValuesList) and V is used at the row value Then the row value is looked up in barProperties, as usual, to determine the color and fill pattern. That value is also shown in the mouseover text as usual. For example, consider the following data table: Plant Status Quality ----- ------ ------- A online 1 B offline 1 C online -1 D offline 0 ... where 1 = data OK, -1 = no data, and 0 = stale data. Next, consider a status history chart with these properties: indexColumnNames = Plant valueColumnName = Status valueQualityColumnName = Quality valueQualityBadValuesList = -1,no Data;0,stale data barProperties = online : green offline : blue no data : red stale data : orange Note that valueQualityBadValuesList has no entry for quality = 1, because that is the "good" quality value. With that configuration, when the data table shown above is applied to the chart, it will plot a segment for each Plant as follows: A green (since Status = online and Quality = 1 / OK) B blue (since Status = online and Quality = 1 / OK) C red (since Quality = -1 / no data) D orange (since Quality = 0 / stale data)

Tables

19989: Default format for date columns added to table objects

A property named columnFormatDate has been added to the table object (obj_table02). By default the property's value is blank. If the property is set to a valid time format, then that format will be used for all time/date columns in the table that do not have a format specified in the table's columnFormat property. For example if an obj_table02 instance contains a date column named X, then the format for column X is determined as follows: 1. If the table object's columnFormat property contains a valid date/time format for column X, then that format is applied to column X. 2. If the table object's columnFormatDate contains a valid date/time format, then that format is applied to column X. 3. Otherwise the default date/time format for the current locale, as returned by java.text.DateFormat.getDateTimeInstance(), is applied to column X. As with any object property, an rtview stylesheet entry can be used to set columnFormatDate globally on all obj_table02 instances, for example: obj_table02 { columnFormatDate: "yyyy-MMM-dd HH:mm:ss" }

Platform Support

19925: Support Java 1.8

Java 1.8 is now officially supported. NOTES: As noted in the release notes for 19927 and 19928, the JdbcOdbc driver is no longer supported by Oracle beginning in Java 1.8. Version v4.14.137 of IBM DB2's db2jcc.jar driver is required to work with Java 1.8

RtvCacheDoc

18909: rtvcachedoc no longer generates incorrect "Expired" column

In previous releases, rtvcachedoc incorrectly included the column specified in the rowExpiredColumnName property in the generated db schemas. This only happened for caches with a blank value for the historyColumnNames property. This has been fixed.

Security

20794: Fixed XSS Security Issue in Thin Client Deployment

A cross-site scripting (XSS) vulnerability in the thin client has been fixed.

Transaction Message Monitor

20672: Transaction monitor end of life announced

The Transaction Monitor application will be end of life in RTView version 6.7. A warning about this has been added to the console and the tmdisplays demo has been removed from the RTView demos directory. In previous releases, the Transaction Monitor threw an exception at startup. This has been fixed.

Version 6.5.0 Release Notes

Builder - Editing

19879: Fixed NPE when deleting local var with same name as global

A bug has been fixed in the Builder which caused a NullPointerException to be thrown if a local variable was deleted and the local variable had the same name as a global variable.

Data Historian

19469: Avoid removal of all batch data when some data is wrong.

The historian will no longer discard all rows in a batch if a SQL exception is thrown during an row insert. Instead it will catch the exception and continue with the other row inserts in the batch and commit all of the successful inserts at the end of the batch.

Compaction

19786: smoothCompaction no longer throws NPE when there are no compaction rules

Previously a NPE was thrown when -smoothcompaction was used with a cache with a compaction type of "aggregate" but with no compaction rules. Now this scenario fails silently.

19915: Simple retention now applied only to tables without compaction rules

If a cache history table that was persisted by the historian had no compaction rules, then the simple retention time limit was applied to ALL tables persisted by the historian. This was incorrect. The simple retention limit will now only be applied to tables without compaction rules.

19987: Compaction now recovers after a lost database connection is restored

Compaction now recovers correctly after a lost database connection is restored.

Data Sources

Cache Data Source

19960: Fixed bogus extend-by-SQL query if history has future timestamps

A bug in the cache data source has been fixed that triggered an unnecessary SQL query if an attachment to a cache history table had the Extend with SQL option checked, and the history table contained timestamps in the future as compared to the current time on the system hosting the cache data source.

20100: Cache extend-by-sql query now ignores row filters with value=*

A bug has been fixed in the cache data source which affected cache data attachments using the Extend with SQL option and which also use a row filter with multiple columns or multiple values, where * is used as one or more filter values. In those cases, the "where" clause in the SQL query generated by the cache data source was incorrect and returned no rows. This is fixed.


SQL Data Source

20072: Fixed concurrency exception when updating sql RTViewDs.Connections table

A bug has been fixed in the sql data source which, in rare cases, caused a ConcurrentModificationException to be thrown if a display was open with a data attachment to the sql RTViewDs.connections table.

TIBCO Hawk Data Source

19977: New onData Length column

The TIBCO Hawk data source has been enhanced to include a new onData Length column in the RTViewDs GetSubscriptionStatus method. This column contains the amount of time, in milliseconds, that the last onData call took to process the subscription data.

Display Server

19880: Fixed unstable dropdown list in FF & Chrome

In prior versions of the thin client, on each display refresh the dropdown list of the combo box control would scroll and the highlighted list item would change, even if the refresh did not change the items in the list. This behavior could make it difficult to use the dropdown list. This problem has been fixed. Note that this problem affected the thin client in Firefox and Chrome, but not Internet Explorer.

20009: Animated gif labels no longer mispositioned

In previous releases, the animated gif image on a label object would sometimes appear in the top left corner of the display, rather than positioned correctly on the label object. This is fixed.


20021: Images now found when rtv file loaded from subdirectory

In prior releases, the thin client would fail to load images for some objects if the images and the display containing the objects were in a subdirectory of the display server's working directory. This is fixed.


20097: “loading …” label no longer remains after loading finished

A problem has been fixed in the thin client that would sometimes cause the "loading..." message to remain on the display after the display had finished loading.


General

19933: rtvquery default time range for current table changed from 30s to ALL

The rtvquery servlet will no longer apply a default time range of 30 seconds to queries on the current table of a cache. Instead, it will apply a default time range of zero, which will return all rows from the current table regardless of their timestamp. A default of 30 seconds will still be applied to all queries on cache history tables. Note that the time range, in seconds, can be specified with the tr parameter in the URL. For example, this query will return the last 10 minutes of history data from a cache named Servers: http://host:port/rtvquery/cache/Servers/history?tr=600

20017: rtvquery servlet now uses "UTF-8" instead of "UTF8"

The rtvquery servlet will now specify UTF-8 character encoding for all responses. Previously, the servlet specified UTF8 which was not recognized by Internet Explorer versions 9 and older and caused an exception with the message "Could not complete the operation due to error c00ce56e"


Object Library

19861: Support HTML label object in the thin client

A number of simple RTView graphical objects have been enhanced to allow them to be rendered as HTML elements in a thin client deployment, rather than rendered in the image generated by the Display Server. This enhancement can improve system performance in some cases and also allows the user to copy text strings in the objects to the clipboard. Most of the objects affected by this enhancement are found on the General tab and Labels tab in the Builder's object palette. The enhanced objects are: obj_rect obj_rect_il obj_rect_ilv obj_rect_ilvs obj_rect_ilvx_da3 obj_rect_ilvx_ra4 obj_circ2d obj_circ2d_il obj_circ2d_ilv obj_circ2d_ilvs obj_circ2d_ilvx_da3 obj_circ2d_ilvx_ra4 obj_label05 obj_label05s obj_label11 obj_label11s obj_text01 obj_c1btn_chk These objects now support a new a new property named webLabelFlag. In a display server deployment, if webLabelFlag is true (checked) then the object will be rendered as HTML in the thin client, rather than rendered in the image by the display server. This allows the display server to update the individual object, if necessary, when the display is refreshed, rather than regenerating the entire display image. If all of the dynamic objects on a display can be rendered as HTML, this can improve the performance of the display server and thin client. The list of objects that can be rendered as HTML now includes all the objects listed above, all objects on the Controls tab in the object palette (obj_c1*), the table object (obj_table02), and the trend chart (obj_fxtrend). Another advantage of setting webLabelFlag on an object is that it allows the user to select the object's text and copy it to the clipboard. By default webLabelFlag is false (unchecked). The webLabelFlag property is listed in the "Label" category in the Builder's property sheet. The webLabelFlag can be set on all of the objects listed above via the following entry in an rtview stylesheet (.rts) file: rtv-all { webLabelFlag: 1; } In certain cases, an object included in the list above will still be rendered in the image by the display server even if webLabelFlag = true. These cases are: - the display is opened in Internet Explorer 8 or older. - the display server is run with the -nohtml5 option on the command-line. - an obj_text01 instance with rotated text (a nonzero value for rotationAngle). - an obj_rect* with labelTextPosY = Tab Top - an obj_rect* with labelTextPosY= Title Top and bgBorderFlag = true - an obj_label* with bgStyle = Round Rectangle - the object is inside an object grid, and is not inside a composite object in that grid - the object is an obj_rect* and there is a non-html object above it in Z-order which overlaps (for example, an obj_rect instance used as a background behind several meter objects) In other cases, an object may have a slightly different appearance in the thin client when it is rendered as HTML, as follows: - only vertical and horizontal gradients are supported on HTML objects in the thin client, so if an object has its bgGradientMode property set to "Diagonal Edge" or "Diagonal Center" it is treated as "Vertical Edge" instead. - the object's bgShadowFlag property is ignored Note that the webLabelFlag property has no effect in the builder or viewer (thick client). Also, as part of this enhancement the following bug was fixed which affected the thin client in Internet Explorer: If the javascript debugging feature was enabled (from IE's Internet Options dialog, Advanced tab) then after closing a window or tab in some cases an error dialog would appear with this message (or similar): "Line 269: Error: The object invoked has disconnected from its clients."

Charts (General)

20007: HTML5 - Color of the Navigator Trace now matches the trace it is representing

The navigator trace on the html5 chart will now use the same color as the trace assigned to the chart's webChartNavigatorTrace. In previous releases, the navigator trace was always blue.


Status History

19934: New property to limit size of label area

The status history object (obj_statushistory) supports a new property named barLabelMaxLengthPct. This can be used to specify the maximum length for each bar label as a percentage of the plot area width. The default is zero which means no limit is applied to the label length. If a positive value is specified for both the barLabelMaxLength and barLabelMaxLengthPct properties, then the smaller length limit of the two will be used.

19935: Newlines supported in Description field in mouse over

The status history chart (obj_statushistory) will now properly convert a backslash-n sequence into a newline when displaying the mouseover (tooltip) string. This string is acquired from the column specified by the chart's descriptionColumnName property.

20002: Right/Double-click features supported for status history chart

The status history chart (obj_statushistory) can now be configured to extend the right-click context menu and support double-click behavior, in the same manner as the heatmap, table, and grid objects. To support this feature properties named menuItemGroup and rightClickActionFlag have been added to the chart. See 17835 for more information on using these properties to extend the context menu and control the double-click behavior.

Trend Charts

19938: HTML5 obj_trendgraph02 no longer ignores data table with 1 column

A problem in the display server has been fixed which prevented an obj_trendgraph02 instance with webChartFlag = 1 from plotting any data points on trace N if traceNValue was attached to a table containing a single numeric column.

Reporting

19939: obj_trendgraph02 using HTML 5 can now be exported to PDF

A problem has been fixed which prevented an obj_trendgraph02 instance with webChartFlag = 1 from being included in the output of the thin client's "Export to PDF" option.

Version 6.4.0 Release Notes

Alerts

19141: alertExpireMode added to event alerts

Event Alerts have been enhanced with a new property, alertExpireMode. This property supports 2 options: - Initial Time - if selected and the alertExpireTime is greater than 0, the alert will clear if the alertExpireTime has passed since the alert was generated. - Last Update Time - if selected and the alertExpireTime is greater than 0, the alert will clear if the alertExpireTime has passed since the alert received a data update Note that only indexed event alerts can receive data updates, so the Last Update Time option will not work for unindexed event alerts.

19291: Cleared event alerts no longer regenerated in ssa

In previous releases, event alerts that did not have a mapping for Cleared in the valueTableMap were erroneously regenerated after being cleared when running with Self Service Alerts enabled. This has been fixed.

19292: Unindexed event alerts can now be disabled in ssa

In previous alerts, unindexed event alerts could not be disabled using Self Service Alerts. This has been fixed.

19714: Sybase schemas corrected

Errors have been corrected in two sql scripts: RTV\dbconfig\alert_persist\createtables_sqlserver.sql demos\selfservicealerts\dbconfig\createtables_sybase.sql

Commands

18643: japanese chars no longer garbled by "Send Email" command

The email command will now properly encode Japanese and other Asian characters contained in the text of the email. In prior release, such characters were garbled.


Data Historian

16720: Table creation for Sybase now declares NULL for non-index columns

Two problems in the Historian have been fixed related to Sybase: 1) The following exception was sometimes thrown when the historian was storing or compacting data: SQLException: The column <abc> in table <xyz> does not allow null values. 2) The following exception was sometimes thrown when the historian was compacting data: SybSQLException: The 'CREATE TABLE' command is not allowed within a multi-statement transaction in the <xyz> database. Both problems are fixed.

Compaction

19312: Sybase integer conversion error fixed

A problem has been fixed that caused the Historian to throw an exception when compaction of an integer column by averaging produced a floating point result, when used with Sybase. The exception was reported as "Scale error during implicit conversion of NUMERIC value". This has been fixed by setting "arithabort numeric_truncation off" in the active session between the Historian and the Sybase database.

Data Server

19365: REST output generation breaks with special characters

In previous releases, the output of the rtvquery (REST) servlet was truncated if a query result contained a non-ascii character. This is fixed


19420: Exception in data server if attachment has bogus column name

A problem has been fixed that could cause the data server to become unresponsive. The problem occurres if a client makes a cache data attachment with no row filter and a column filter that specifies one or more nonexistent columns. In those conditions, the data server would occasionally throw the following exception: Exception in thread "GmsTimer-DataServer" java.lang.ArrayIndexOutOfBoundsException at com.sl.gmsjrt.GmsTabularData.gg$1(SourceFile:5925) at com.sl.gmsjrt.GmsTabularData.writeObject(SourceFile:5849) at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) ... at com.sl.gmsjrtvhistorian.GmsRtViewDataServerDs.sendDataToClients(SourceFile:860) at com.sl.gmsjrtvhistorian.GmsRtViewDataServerDs.gmsTimerFired(SourceFile:899) at com.sl.gmsjrt.GmsTimer.run(SourceFile:106)

19477: Data Server NPE when DS is busy and pushing data to a disconnecting client

A problem has been fixed that in rare circumstances caused the data server to throw a NullPointerException and become unresponsive after a client disconnected.

Data Sources

Cache Data Source

18738: Data type handling improvements for Extend by SQL option

Three problems affecting the Extend By SQL option in cache data source attachments have been fixed. The first problem caused the following SQL error in some conditions when a cache attachment was configured with the Extend By SQL option and a filter on a string column, and the database in use was Sybase: "Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed. Use the CONVERT function to run this query." The second problem caused SQL errors when a cache attachment was configured with the Extend By SQL option and a filter on a Boolean column, and the database in use was Sybase, Oracle, DB2, or MySQL. The third problem caused the Extend By SQL query result to use integer columns for columns that were Boolean in the cache, if the database was Oracle or DB2. All three problems are fixed.

19164: Cache data source now reports missing config file

The cache data source will now generate an error message if a cache definition file cannot be loaded. For example, if a cache definition file named MyCaches,rtv is specified in CACHEOPTIONS.ini but the file does not exist then the following error message will be printed to the console: ERROR: can't load cache definition file MyCaches.rtv, file not found. In previous releases, no message was printed if a cache file could not be loaded.

19216: Added per-index row limit to cache history table

To allow more control over the number of rows stored in a cache history table, a new property named maxNumberOfRowsPerIndex has been added to the cache table object (obj_cachetable). In the Builder's property sheet, the new maxNumberOfRowsPerIndex property appears in the Cache History Table category. The property is visible only if the cache's maxNumberOfHistoryRows value is greater than zero. (Otherwise the cache does not have a history table). If a positive number N is assigned to maxNumberOfRowsPerIndex, then the cache's history table will contain at most N rows for each unique combination of the cache's index column values. For example if a cache has one index column named Server and maxNumberOfRowsPerIndex is 500, then the cache's history table will contain no more than 500 rows for each unique name in the cache's Server column. If the cache's condenseRowsFlag is set, then the maxNumberOfRowsPerIndex limit is applied to the cache's history_condensed table. If the cache's condenseRowsCombineHistoryFlag is also set, then the maxNumberOfRowsPerIndex limit is also applied to the cache's history_combo table. To reduce overhead, a cache's maxNumberOfRowsPerIndex is checked only once per minute or, in the case of the history_condensed table, at the condense interval, whichever is less frequent. This means that the maxNumberOfRowsPerIndex may be exceeded until the next time the limit is checked. By default the value of maxNumberOfRowsPerIndex is blank, meaning that no per-index limit is applied to the cache's history tables. With the addition of the maxNumberOfRowsPerIndex property the cache history table size is now controlled by 3 properties: 1. If the historyTimeSpan property is set, the cache trims its history table by removing rows with timestamps that are older than the limit, 2. Next, if the cache's history table exceeds the maxNumberOfHistoryRows limit (which must be > 0 for the cache to store any history), then the oldest rows are removed from the history table to satisfy the limit. 3. Next, if the cache's maxNumberOfRowsPerIndex limit is set then it is applied as described above.

19363: Fixed memory leak for cache attachment with column filter

A memory leak has been fixed in the cache data source. The leak occurs if there is a data attachment to the current table of a cache, and the data attachment specifies a column filter but no row filter, and rows are never or only very rarely removed from the cache. If there is such a data attachment the data server will leak memory each time the cache is updated. The size of the leak depends on the number of columns specified in the filter. The leak was introduced by changes in RTView version 6.2.


JMX Data Source

18767: JMX connection logic more robust

A typo in a JMX connection line (jmxconn) will no longer crash RTView.


19204: Improved support for mbeans that serialize (Tabular/Composite)DataSupport

The JMX adapter was updated to handle mbeans that serialize TabularDataSupport and CompositeDataSupport objects, as used in some Tibco BusinessEvent mbeans. The previous adapter would return a text blob for BE methods that returned these types. Now, these objects are properly deserialized into an RTView table.

Splunk

19379: Splunk data adapter updated

The Splunk data adapter has been updated to make it compatible with recent versions of Splunk (6.0+). The Splunk data adapter uses the recent splunk java SDK so is compatible with compatible with recent versions of Splunk (6.0+). This version of the SDK requires java SE version 6 or higher (for both the splunk server and the data adapter client). If you are using Windows, make sure the JAVA_HOME system variable is set to the directory where the JDK is installed. The required jars are included in the delivery and added to the classpath by the GmsLauncher; The user does not need to use RTV_USERPATH as in previous versions. Splunk Connections are now defined using explicit Host and Port values rather than a single URL as previously. The Splunk options now contains a search job wait time field (in ms). This is used to control the wait time when polling for search job completion; the user will typically not need to modify this value. The Attach To Splunk Data dialog has some new fields compared with previous versions. The new fields are as follows. Earliest Time: Filters the (splunk search) returned objects by their timestamp. Only objects that have a timestamp that is >= earliest_time will be returned. The time format is always ISO-8601 formatted. Ex:2008-01-29T11:40:58-0800. If omitted, then no earliest time bound is used. Latest Time: Filters the (splunk search) returned objects by their timestamp. Only objects that have a timestamp that is < latest_time will be returned. The time format is always ISO-8601 formatted. Ex:2008-01-29T11:40:58-0800. If omitted, then no latest time bound is used. Example Times are 2014-06-05T00:00:00-0800 2014-06-06T00:00:00-0800 ISO-8601 format is described on the web http://en.wikipedia.org/wiki/ISO_8601 http://www.iso.org/iso/home/standards/iso8601.htm http://www.w3.org/TR/NOTE-datetime Offset: The starting offset (0-based) of the first object to return in the (search result) list. Can be used together with Max Results: to "cursor" through a large result set, a small "chunk" at a time. (not the effect on the internal "_serial" splunk data column) Divide Data Column: When Selected, this check box makes additional fields visible for use in dividing up data in a returned column ,by means of a Java regular expression, into numbered columns in the returned data. Typically this is used to extract data that has an implicit token or field based positional location in the raw data returned by splunk. Examples of use would be to break up raw log line / HHTP request into fields / columns. The additional Divide Column Data fields are as follows Divide Column Name: The name of the column to divide (split) into individual values - typically this will be the raw data column returned from splunk "_raw" Column Data Regexp: The Java Regular Expression (Regexp) specification used to split the data in the named column into individual numbered columns that contain matched occurrences of the regular expression, where the new column name is the number of the occurrence (e.g. "1", "2", "3", etc) The Column Data Regexp field contains a drop down with a number of predefined regular expression literals, or you can enter your own. Note: Normally Splunk will recognize and extract fields and make them available for searching on, but sometimes you need to split up the raw data to extract meaningful information.


TIBCO Hawk Data Source

19818: Hawk 5.1 support

The TIBCO Hawk data source has been enhanced to support running against Hawk 5.1. Support for running against Hawk 5.0 has been removed. This means that the system where you are running RTView must have the HAWK_ROOT environment variable pointing to a Hawk 4.x or Hawk 5.1+ installation. The TIBCO Hawk data source can still connect to agents that are running version 5.0, the limitations is only that cannot run on a system where HAWK_ROOT is set to a Hawk 5.0 installation. If RTView is run on a system where HAWK_ROOT is set to a Hawk 5.0 installation, it will crash with the following exception: Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class COM.TIBCO.hawk.console.hawkeye.AgentMonitor, but interface was expected at com.sl.gmsjhawkds.GmsHawkConsole4x.initAgentMonitor(GmsHawkConsole4x.java:160) at com.sl.gmsjhawkds.GmsTibConsole.initHawk(GmsTibConsole.java:513) at com.sl.gmsjhawkds.GmsRtViewHawkDs.initHawk(GmsRtViewHawkDs.java:1192) at com.sl.gmsjhawkds.GmsRtViewHawkDs.initializeData(GmsRtViewHawkDs.java:1296) at com.sl.gmsjrtview.GmsRtViewAppManager.initializeData(GmsRtViewAppManager.java:4099)


Display Server

19813: Fixed javascript error thrown by obj_datechooser in IE

A bug in the thin client has been fixed which caused an "unterminated string constant" error message to appear in Internet Explorer's javascript console when the date chooser control was clicked.


Distribution

19692: Core version removed from derivative releases

Due to changes in the build procedures for Enterprise Monitor, BW Monitor, EMS Monitor, and OC Monitor, there is no longer a separate Core version number. The console and About dialogs have been updated to reflect this change. A Build Number has been added to the configuration information in order to identify the build from which a release was generated. The RTView Info function has been modified to reflect this change. Previously, the RTView Version Info argument returned a table with EM version information and the Product Version Info argument returned a table with Core version information. Since there is now only one version, both arguments now return the same thing which is the table previously returned by the Product Version Info argument.

Functions

19150: Warning if subst string arg to SetSub function contains spaces

An error message will now be logged if the Substitution String argument to the Set Substitution function contains spaces. Spaces are not permitted in substitution strings and will likely cause parsing problems elsewhere in RTView, particularly in the thin client. If a function named F has its Substitution String argument set to "$A B" the following error message will be generated: ERROR: function <F>, substitution string $A B contains space To avoid breaking existing configurations that may already define substitution strings with spaces and are working in spite of the potential parsing problems, the function will still define the substitution including any space characters, but will generate the error message. Note that spaces are allowed in the Value argument of the Set Substitution function. That has always been the case and is not affected by this task.

19331: Pivot on Unique Values function upgraded to accept multiple index columns

The Pivot On Unique Values function has been enhanced so that it accepts multiple column names as the Key Column parameter. When multiple column names are used, separated by semicolon, it groups the results by unique occurrences of the combined values of all columns. When only one column is specified, the behavior is the same as before.

19557: Ensure Columns now allows a single value with semi-colons if only one column

The Ensure Columns function has been enhanced to support semi-colons as literals in the Value(s) argument under the following circumstances: 1. There is only one value in the Column(s) argument. 2. The Value(s) argument is enclosed in single quotes. If those conditions are not met, the semi-colon is assumed to be a delimiter for multiple values.

Logging

19256: Log4J on Linux platforms

Log4J functionality was restored on Linux platforms.


Object Library

Composite Object

19503: Fixed builder crash on save when display contains composite with tabular local vars

A problem has been fixed that caused the Builder to throw a ClassCastException if a display contains a composite whose subdisplay creates a tabular local variable.

Control Objects

15035: Image property added to Button Control

The button control (ob_c1button) now supports an Image property. A button can display an image, a label, or both. If both the image and label are set, the image will be to the left of the label. (This order is not configurable). This feature is supported in the viewer and thin client. However the appearance can vary slightly between the viewer and the various supported browsers. When displayed in the viewer and different browsers, you may notice differences in the following: 1. Alignment of the image inside the button: The image may be somewhat closer to the top or bottom edge of the button 2. Vertical alignment of the image with the button's label, if any: The center of the image may be somewhat lower or higher than the center of the label 3. Appearance of the image and label if they don't fit inside the button: In some cases the label may be clipped with a "..." replacing the clipped text, or the label may be clipped with no indication, or the label may wrap and may extend below the button. It is best to leave several pixels of padding between the image and/or label of a button to avoid wrapping or clipping of text in all browsers. Also, check the button appearance in all browsers you intend to support. In Firefox, a button with an image will not depress when it is clicked. However the button's command will still be invoked. In iOS Safari, if the image property is set on a small button (32 pixels or less in width) the button will have square corners rather than rounded corners.

18873: Corrected behavior of listValues property of a ComboBox or a ListBox

A problem has been fixed that prevented the items listed in a combo box or list box control from updating when a new string was assigned to the control's listValues property.

19504: listbox selection no longer clears when list changes

A problem has been fixed in the viewer which caused the selected item in a list box control (obj_c1tlb) to be deselected when the control's listValues property was updated.

19511: Listbox validation bug fixed

A problem in the listbox control (obj_c1tlb) has been fixed which caused it to ignore changes to the listValues property in some cases.

Fx Trend Chart

18167: FX Graphs traceNVisFlag now work even if there is no data

Previously there was a bug with FX Graphs where un-checking the traceNVisFlag did not have an affect unless it was attached to data. This has been fixed.

Tables

19796: Table Rows containing larger images no longer clip

A problem in the display server has been fixed which could cause the heights of table rows containing images to be too small to display the entire image. This problem only occurred if multiple instances of the rtvdisplay servlet were connected to the same display server instance.


Trend Charts

19454: HTML5 chart basic support

BASICS: The html5 trend chart is a pure HTML implementation of an RTView trend graph object. In the RTView thin client, the html5 trend chart provides an interactive, high performance trend chart without requiring the Flash player or other browser plugin. There is no html5 trend chart in the Builder palette. Instead, a new property named webChartFlag has been added to the flex (obj_fxtrend) and swing (obj_trendgraph02) trend graphs. To enable the html5 trend chart the user simply sets the webChartFlag property to true (checked) on a flex or swing trend graph instance. Then, when the display is opened in the thin client in an HTML5 compatible browser, the html5 trend chart will appear in place of the flex or swing trend graph. REQUIREMENTS: Firefox, iOS Safari, and Internet Explorer version 9 or newer support HTML5 and will display the html5 trend chart on displays where enabled. Internet Explorer version 8 and older do not support HTML5 so in those browsers the flex or swing trend chart will be used regardless of the value of the webChartFlag property. PROPERTIES: The html5 trend chart supports all of the major properties available in the flex and swing trend graphs. However several minor properties are not supported or have limited support in the html5 trend chart, as follows: - background styles: Not supported. Except for the bgColor property, none of the background style properties are supported. This includes the properties whose names begin with bg, traceBg, and border. - gradients: Gradient fill is not supported, so none of the properties named *GradientStyle, *GradientMode, or *GradientFlag are supported. - markDefaultSize, markScale: Not supported. These default to 6 and No Scale. The markers for each trace can be configured with the traceNMarkStyle/Color properties. - traceNMarkStyle: The markers for trace N can be enabled by setting traceNMarkStyle > 0 but the shape of the markers (circle, square, triangle, etc) is selected automatically. - traceNType: Supported types are Line and Bar. Event type is not supported. - legendWidthPercent, legendValueMinSpace: Not supported. The legend (if visible) is sized automatically. - scrollbarMode/Size, zoomEnabledFlag: Not configurable. The scroll and zoom features are always enabled and the scrollbar size is fixed. - traceFillStyle: Supported values are None and Transparent. All other values (Solid, Gradient, Transparent Gradient) are converted to Transparent - x/yAxisMajor/MinorDivisions: Not supported. The number of ticks on the x & y axis are selected automatically according to the size of the chart. - yAxisPostion: Not configurable. The y axis position is always outer-left. - yAxisAutoScaleVisTracesOnlyFlag: Not configurable, always true. - x/yAxisFlag, x/yAxisThickness: Not configurable. The x and y axes are always visible with a thickness of 1 and 2 pixels, resp. - traceGroupNBandedFlag: Not supported. Trace groups are supported but banding within groups is not. - alert properties (valueHighAlarm*, valueLowAlarm*, valueHighWarning*, valueLowWarning*): The html5 chart supports one alert threshold per chart. If more than one alert threshold is enabled, the html5 chart will not be used. Also, the alert TraceColor is used only if the traceFillStyle is None. For any other traceFillStlye the alert TraceColor is ignored. The alert TraceStyle, Mark, and MarkColor are ignored. The alarmGlowFlag is not supported. The properties marked as Not supported or Not configurable in the list above will not appear in the Builder's property sheet when a trendgraph object is selected and webChartFlag is checked. In some cases if the properties listed above have been configured on a flex or swing trendgraph instance, then the webChartFlag property will be automatically set to false and hidden in the property sheet, because the html5 trend chart does not support those features. This occurs if any traceGroupNBandedFlag is checked, if more than one alarm threshold is enabled, or if the alarmGlowFlag is checked. Are any new properties supported? The html5 trend chart supports two additional properties that are only visible in the property sheet if webChartFlag = true. - webChartNavigatorTrace: If this property is set to a trace number (a value between 1 and the traceCount value) the html5 chart will display a "time navigator" at the bottom of the chart, just below the x (time) axis. The navigator plots the data for the indicated trace, and highlights the time range that is currently visible in the chart. The highlighted section can be resized or dragged to perform a time zoom or scroll. The navigator is intended to show the user the entire data set and let the user zoom/pan to the time range of interest. By default webChartNavigatorTrace = 0 so the navigator is disabled. - yAxisAutoScaleVisDataOnlyFlag: If this property is checked the chart will compute the y axis scale according to the min & max y values of the visible data points only. This means that the y axis scale may change as the user changes the visible time range by scrolling or zooming. By default the property is unchecked and the y axis is scaled according to the y values of all of the data points, visible or not, which matches the behavior of the swing and flex trendgraphs. The Builder does not allow the webChartFlag property to be attached to data. This is by design, since the flag's value is expected to be constant. BEHAVIOR: In addition to the properties listed above, there are some behavioral differences between the html5 trend chart and the flex/swing trend graph as follows. - Legend: The legend does not show trace point data (y) values. Data values are only shown in the mouseover tooltips (if cursorFlag = 1). The cursor always snaps to the nearest data point, it does not show interpolated values between data points. Trace labels longer than 200 pixels are wrapped in the legend, and labels longer than 150 pixels are clipped in the tooltip. - Y axis autoscaling: Given the same y data values, the html5 trend chart may choose a different value range for the y axes in autoscale mode as compared to the other trendgraphs, because somewhat different algorithms are used. - Reset button: If the user changes the chart's visible time range, via the scrollbar or navigator or by dragging the cursor to perform a zoom, then a button labeled Reset will appear in the upper left corner of the plot area. A click on this button will reset the time axis to its original settings. The chart will also resume shifting to show the newest trace points, unless the timeRangeBegin/End properties are set. - Data point grouping: The html5 trend chart makes use of a feature known as data grouping to enhance performance when a trace has many data points. With data grouping, the chart plots a single point using the average y value in cases where otherwise multiple points would be plotted on the same x pixel coordinate. When data grouping is in effect, the chart's tooltip will display a start time and end time (rather than the usual single time value) to indicate the time range of the averaged data points, for example: 05-Mar 12:35:00 ~ 05-Mar 12:45:00 [Notes: The data point grouping feature is enabled automatically and is not configurable. Also data gropuing is performed independently of (and possibly in addition to) any data condensing or compaction that has already been applied by the RTVuew cache data source or the historian. Also the maxPointsPerTrace property (3200 in the test1 display) is applied to the raw data, before any data grouping is applied.} The legendTimeFormat is used to format the date/time strings in the tooltip. If that property is blank then the timeFormat property is used instead, but if the string contains a newline it is replaced with a space character to avoid making the tooltip overly tall. - timeShift: The html5 trend chart does not attempt to keep the tick marks on the time axis aligned on even multiples of the timeShift value, in the case where timeShift > 1. ENABLING / DISABLING: The html5 trend chart can be enabled for all obj_fxtrend (flex) instances by adding the following rule to an rtview stylesheet (.rts) file loaded by the display server: obj_fxtrend { webChartFlag : 1 } Similarly, the html5 trend chart can be enabled for all obj_trendgraph02 (Swing) instances by the following rule: obj_trendgraph02 { webChartFlag : 1 } See the documentation for more information on using RTView stylesheets. If a stylesheet is used note that the webChartFlag value can still be overridden and set to zero (false) on individual instances. Also, even if webCharFlag is set on all instances, the flex or Swing trendgraph will still be used if a display is opened in Internet Explorer 8 or older, or if certain properties not supported by the html5 chart (as listed above) are configured on a specific trendgraph. To disable the html5 trend chart globally, regardless of the webChartFlag value on individual objects, specify the -nohtml5 argument on the display server command line, or use the equivalent property. Alternatively, add the following line to the rtvdisplay.properties file then rebuild and deploy the rtvdisplay.war file: HTML5Enabled=false Finally, the html5 chart can be disabled in a specific browser window by appending nohtml5=true to the URL, for example: http://myserver/rtvdisplay/getdisplay.jsp?display=test1&nohtml5 http://myserver/rtvdisplay/panels.jsp?file=myapanels.xml&nohtml5 KNOWN ISSUES/LIMITATIONS: - After zooming or scrolling, the time axis labels may briefly be misaligned or overlap. They should be drawn correctly on the next refresh. - The chart's tooltip may overlap the Reset button making it difficult to click the button. Moving the mouse a bit will correct this problem. - Like the flex chart, the web chart will display all timestamps using the local time zone. This may cause user confusion if the display server is in a different time zone. - Performance is affected by the number of traces, trace points, use of trace line shadows, trace line thickness, trace markers, trace fill, and other properties. Performance is also affected by the browser and version, and the CPU speed of the client host system. - If any of the chart's graphical properties are changed while the chart is displayed (eg. the traceFillStyle is toggled via a checkbox control) the chart is rebuilt in the thin client, which in turn resets the chart's time range (as though the Reset button was clicked). - Scrolling: If the mouse is moved below the bottom of the chart while dragging the scrollbar, the scrolling will stop. This is unlike the behavior of other rtview objects, which will continue to scroll until the mouse button is released. - Drilldown from trace points: If traceFillStyle is not "None" (i.e. trace fill is enabled) and multiple traces share the same Y axis, then it is not possible to click on a point belonging to trace N if the fill area of a higher numbered trace is drawn over that point. - When yAxisLogFlag = 1 and the chart has multiple y axes and traces, some y axis labels may show ??? rather than numeric values. This is rare. - Since the html5 trend chart does not support legendWidthPercent, the width of each chart's legend will vary according to the trace labels. This makes it difficult to create multiple trend chart instances on the same display whose time axes are all the same length, even if the charts all have the same width. (A single chart in stripchart mode may be more appropriate in those cases). - On a touch interface, a swipe will scroll the chart left or right. To move the cursor without scrolling, tap the location to which you want the cursor to move. - On a touch interface, a pinch-open gesture in the plot area, scrollbar, or navigator will zoom the chart's range in to the pinched range. A pinch-close gesture will zoom out to the pinched range. The pinch-close operation may be difficult to use. A tap on the Reset button gives a better zoom-out experience. MISC: Here is a complete list of the obj_fxtrend properties that are hidden if webChartFlag is checked: legendBgGradientFlag legendWidthPercent markDefaultSize traceBgColor traceBgGradientFlag traceGroupNBandedFlag (for each trace N) yAxisAutoScaleVisTracesOnlyFlag yAxisThickness yAxisPosition yAxisFlag xAxisFlag yAxisMajor/MinorDivisions xAxisMajor/MinorDivisions xAxisThickness Here is complete list of the obj_trendgraph02 properties that are hidden if webChartFlag is checked: borderPixels labelMinTabWidth legendWidthPercent legendBgGradientMode legendBgGradientColor2 legendValueMinSpace markDefaultSize markScaleMode outlineColor scrollbarMode scrollbarSize zoomEnabledFlag timeRangeOfHistory traceBgColor traceBgGradientMode traceBgGradientColor2 traceBgImage yAxisAutoScaleVisTracesOnlyFlag yAxisFormat yAxisFlag yAxisPosition yAxisValueLabels yAxisMajor/MinorDivisions xAxisFlag xAxisMajorDivisions For each trace N: traceNValueAlarmStatus traceNValueAlarmStatusTable traceNValueHistoryFlag traceGroupNBandedFlag traceNYAxisGridVisFlag traceNYAxisMinLabelWidth traceNYAxisValueLabels traceNYAxisVisFlag traceNYAxisAutoScaleMode traceNYAxisValueMin traceNYAxisValueMax

Platform Support

15870: Improved management of Windows file permissions

The RTView Windows installers have been changed in the following ways: - The "Registration" start menu launcher now runs as administrator - During installation, the following directories are given write permissions for all Authorized Users: demos servlets servers custom


19592: Support Chrome as a broswer for the thin client

The thin client is now supported in Chrome, on Windows. The version tested was Chrome 35.0. Chrome was not tested on iOS or Android.

RtvCacheDoc

19327: Sybase schemas updated to conform to Sybase requirements

All historian database schemas for Sybase have been updated with the following syntax changes: - All non-index columns now set the "NULL" parameter - The use of the BIT type for boolean columns has been changed to SMALLINT, to allow the use of boolean columns in indexes. If you have existing database tables for storing historical data, you should not need to make any changes to them, unless you have seen errors EM server logs that suggest that one of the above changes would resolve the problem..

Viewer - Applet

19308: Support applets in Java 1.7 with all permissions.

In previous releases, the Registration and Viewer Applets failed to run using Java 1.7 due to a security error. This has been fixed. The Registration and Viewer jars have been enhanced to include the Application-Name and Permissions parameters in their meta-data in order to pass the Applet security check. Note that the Viewer applet Permissions parameter is set to all-permissions. The Registration applet Permissions parameter is set to sandbox.

Version 6.3.1 Release Notes

Data Sources

JMS Admin Data Source (for TIBCO EMS only)

19297: ConsumerInfo.Details metrics made optional (now disabled by default)

Task 19257 added 12 new columns with information from the com.tibco.tibjms.admin.ConsumerInfo.Details class methods to the TIBCO EMS Administration data source Consumer table.The query for this data can be slow, and so by default these columns have been removed from the table. To include these columns in the Consumer table, use the following command line argument: -queryCIDetails Or the following property: sl.rtview.jmsadm.queryCIDetails=true Note that enabling this option will slow down the EMS metrics queries on servers with a large number of consumers.


Version 6.3.0 Release Notes

Alerts

18805: Bug loading alert definitions after multiple HA failovers fixed

In previous releases, a bug with HA caused some alerts not to load in the backup server in the case where the primary server in the pair had failed multiple times without the backup server rebooting and the servers were configured with multiple alert definition files. This has been fixed.

19032: Fixed synch bug in alert ds for new data only listeners

In previous releases, a synchronization bug caused some updates from alert commands not to be applied to the new data only listeners in the case where several command updates were executed at the same time. This has been fixed.

19175: Fixed memory leak when no "new data only" alert table listeners

In previous releases, the Alert data source leaked memory if there were no data attachments to the AlertTable with either the New Data Only option selected or a row filter. This has been fixed.

Builder

18377: New mechanism to specify template for new displays

The builder supports a new property named displayTemplate. It allows the user to specify an rtv file that should be used as the template for all new displays. The user can make any changes (e.g. add objects) to the template, and the builder will prompt for a new file name when the user attempts to save the changes, so the template remains unchanged. Command-line example: run_builder -displayTemplate:MyTemplate.rtv Property file example: sl.rtview.displayTemplate=MyTemplate.rtv

Customization

18658: Support customization of user/role manager classnames

In previous releases the java class names for the custom user manager and role manager were hard-coded to MyUserManager and MyRoleManager, respectively. In this release, MyUserManager and MyRoleManager are still the default class names but they can be overridden on the command line via two new options, as shown in the following example: run_viewer -customUserManagerClassName:com.xyz.UserMgr -customRoleManagerClassName:com.xyz.RoleMgr The custom classnames can also be specified in a properties file, as follows: sl.rtview.customUserManagerClassName=com.xyz.UserMgr sl.rtview.customRoleManagerClassName=com.xyz.RoleMgr


18700: Role substitutions now queried on login

The display server will now call GmsRoleManager.getSubstitutions(roleName) every time a user logs in or changes roles. This will allow a custom role manager to change the substitutions returned for a specific role without requiring a restart of the display server. In prior releases, the method was only called once for each unique role name.

Data Historian

18791: New property to set the character limit of text index columns

The historian supports a new property named charlimitindex to specify the length of each text (VARCHAR) column that is an also index column in the corresponding cache. For example, if -charlimitindex:70 is specified on the command line when starting the historian, then for each text column that is an index column in a cache, the historian will add a VARCHAR(70) column to the database table it creates to persist the cache. If the charlimitindex property is not specified then all text columns, including index text columns, will use the size specified by the charlimit property. If the charlimit property is not specified, then all text columns will be created as VARCHAR(50). For example, if the following properties are specified on the historian command line then all index text columns will be created as VARCHAR(70) and all non-index text columns will be created as VARCHAR(200): run_historian -charlimit:200 -charlimitindex:70 The charlimitindex property is useful in cases where the database limits the total width (in characters or bytes) that can be used in an index. This includes DB2, Sybase, and Oracle.

18854: New property to skip check for history/history_s

The following property can now be specified to prevent the Historian from attempting to create or modify the HISTORY and HISTORY_S tables sl.rtview.historian.historyTableName=__none (Note that the value __none begins with two underscores). By default the Historian will create the HISTORY and HISTORY_S tables and, depending on other properties, may periodically attempt to delete old rows from those two tables. Since neither table is used in EM, it is convenient to prevent the historian from attempting to create or modify those tables.

19131: Data Historian Backlog property

The historian now supports a property named local_backlog. This property can be used to help avoid loss of data during busy periods when the historian is receiving data from a data server at a higher rate than it can be stored in the database. If the local_backlog property is set, the historian will use its local heap space to keep the backlog of data rows to be stored in the database. If the local_backlog property is not set then the row backlog is kept in the data server, where it may be discarded after a relatively brief time if the historian is unable to process it. By default the local_backlog property is not set. The property can be set as follows on the command line: run_historian -local_backlog or in a properties file: sl.rtview.historian.local_backlog=true The local backlog will keep a minimum of 50,000 rows of data. If the Oracle server jvm is used, the backlog will grow as large as the available heap space allows. The following message appear in the historian log each time the backlog is increased by 1000 rows: backlog: increased to N rows or decreased by 1000 rows: backlog: decreased to N rows where N is the current number of rows in the backlog. If the incoming rate of data exceeds the rate at which data can be stored in the database for an extended period of time, the backlog may need to be trimmed in order to avoid an OutOfMemory exception in the historian. If that occurs, the following message appear in the historian log: backlog: discarded N rows If this message is seen frequently, then it may be necessary to adjust the data server, historian, and/or database configuration to reduce the incoming data volume or increase database throughput. (That topic is beyond the scope of this note).

Compaction

18655: Historian smoothing and compaction on non-US date strings

Historian smoothing and compaction no longer fail on non-US date strings in non_US timezones.

19100: Extraneous debug message removed from Advanced Compaction

A leftover debug message was in the Historian code at the highest -compactionverbose:2 level. This message was benign and has been removed.

19101: Improved multi-thread support for Advanced Compaction

A better method for multi-thread support for Advanced Compaction was implemented. Messages like ?database connection busy, skip? should not appear.

Data Sources

Cache Data Source

18670: Gaps in extend-by-sql cache data attachment fixed

A bug has been fixed that caused time gaps to appear in data supplied a cache attachment configured as follows: Cache : MyCache Table : history, or history_combo Time Range : <any value larger than the time range of data available in the cache table above> Extend with SQL : on Begin Time: <blank> End Time: <blank> Update Once: off (if Table = history) Update : On Condense or Always (if Table = history_combo) A cache attachment with that configuration will periodically update its listeners, as new data is added to the cache history table. In prior releases, a time gap would eventually appear between the most recent data retrieved by the Extend with SQL query and the oldest data in the cache history table. This is fixed.

18707: Enhance rowExpiredIndexColumns behavior in Mark+Delete mode

The row expiration feature of the cache data source has been enhanced to allow the rowExpiredIndexColumns and the rowExpirationTimeForDelete properties to be used in combination. If a cache is configured as follows ... rowExpirationMode = 3 (Mark + Delete) rowExpirationTime = -1 rowExpirationTimeForDelete = any value > 0 rowExpiredIndexColumns = any subset of the cache's index columns ... then if a row X exists in the cache's current table and that row's values in the columns specified by the rowExpiredIndexColumns are not matched in the data table applied to the cache's valueTable property, the row will be marked as Expired. Subsequently, if row X is not updated again before the time specified by the rowExpirationTimeForDelete property has elapsed then row X will be deleted from the cache's current table.

18737: Corrected extra rows in history_condensed table

In prior releases the history_condensed and history_combo tables of a cache with the condenseRowsFlag = true would contain 2 rows per condense interval per index, instead of 1 row as expected, if the cache's condenseRowsRawDataTimeSpan < condenseRowsInterval * 3. This is fixed.

JMS Admin Data Source (for TIBCO EMS only)

19257: Gather Consumer Details information

The TIBCO EMS Administration data source Consumers table has been enhanced to include 12 new columns with information from the com.tibco.tibjms.admin.ConsumerInfo.Details class methods: curMsgSentCount (long) - getCurrentMsgCountSentByServer() or -1 if unavailable totalMsgSentCount (long) - getTotalMsgCountSentByServer() or -1 if unavailable curMsgSentSize (long) - getCurrentMsgSizeSentByServer() or -1 if unavailable destinationPrefetch (int) - getDestinationPrefetch() or -1 if unavailable prefetchDeliveredCount (int) - getPrefetchDelivered() or -1 if unavailable elapsedSinceLastAck (long) - getElapsedSinceLastAcknowledged() or -1 if unavailable elapsedSinceLastSent (long) - getElapsedSinceLastSent() or -1 if unavailable routeName (String) - getRouteName() or blank if unavailable sessionAckMode (String) - getSessionAcknowledgeMode() or Unknown if unavailable ** totalMsgAckCount(long) - getTotalAcknowledgedCount() or -1 if unavailable isActive (Boolean) - isActive() or false if unavailable isSystem (Boolean) - isSystem() or false if unavailable ** The sessionAckMode column contains a String created from the value returned by getSessionAcknowledgeMode() as follows: TibjmsAdmin.SESSION_UNKNOWN_ACKNOWLEDGE: "Unknown Ack" TibjmsAdmin.SESSION_XA: "XA" TibjmsAdmin.SESSION_TRANSACTED: "Transacted" TibjmsAdmin.SESSION_NO_ACKNOWLEDGE: "No Ack" TibjmsAdmin.SESSION_AUTO_ACKNOWLEDGE: "Auto Ack" TibjmsAdmin.SESSION_DUPS_OK_ACKNOWLEDGE: "Dups OK Ack" TibjmsAdmin.SESSION_CLIENT_ACKNOWLEDGE: "Client Ack" If getSessionAcknowledgedMode() returns a value not listed here, the sessionAckMode will be "Unrecognized Type(x)" where x is the value returned by getSessionAcknowledgedMode().

19263: New option to disable FT discovery

The TIBCO EMS Administration data source has been enhanced with a new command line option: -disableFTDiscovery This option is not used by default. When this option is NOT used, for each server that is defined in the servers.xml or discovered using Hawk or Routes, RTView queries the EMS Server for its fault tolerant URL. The URL returned by the EMS Server is the value used in the ft_active setting in the EMS Server configuration. If RTView does not already have this URL in the ServerTable, it will be added and a connection to it will be made. This can cause duplicate entries in the ServerTable in the case where the server was specified in servers.xml using a different URL than was used in the ft_active field. For example, the URL in ft_active uses a host name but the servers.xml entry for the same server uses an IP address. Or, the servers.xml uses a DNS alias, but the ft_active uses a host name or ip address. When this option IS used, RTView will not query each EMS Server for its fault tolerant URL. Instead, it expects that all fault tolerant EMS Server pairs are added to servers.xml as compound urls (ex. tcp://myhost:7222,tcp://myhost2:7224). For each server in the compound url, the fault tolerant url will be set to the other server in the compound url. No error checking is done to confirm that the 2 urls listed are actually a fault tolerant pair. It is up to the user to be sure that the servers.xml information is correct. In addition to the command line option, you can also use the following property to enable this feature: sl.rtview.jmsadm.disableFTDiscovery=true


JMS Data Source

19176: Synchronization bug fixed

In previous releases, the JMS data source had a synchronization bug that could cause occasional data updates to be missed. This would only happen in the case where multiple updates for the same listener came in almost simultaneously. This bug has been fixed.

JMX Data Source

18747: Support for connecting to multiple security enabled WAS servers

It is now possible to connect to more than one Secure WAS Server via JMX.


TIBCO Hawk Data Source

18796: Support Hawk 5.0

The Hawk data source has been enhanced to support Hawk 5.0. In order to use Hawk 5.0, you must run with java 1.7+. If Hawk 5.0 is configured for log4j logging, you will need to add your log4j jar to the RTV_USERPATH. RTView does not support AS (DataGrid) transports. Only RVD and EMS transports are supported for Hawk 5.0. The Hawkspot sample microagent application does not work with Hawk 5.0.


18820: Hawk DS now requesting for retransmitted alerts properly

In previous releases, there was a bug with requesting existing alerts after an agent expired and then came back. This has been fixed.

19130: Hawk data synchronization improvement

In previous releases, a synchronization bug in the hawk data source occasionally resulted in some data being missed. This has been fixed.

TIBCO Rendezvous Data Source

19177: Synchronization bug fixed

In previous releases, the RV data source had a synchronization bug that could cause occasional data updates to be missed. This would only happen in the case where multiple updates for the same listener came in almost simultaneously. This bug has been fixed.

Display Server

18663: Thin client now supported in in cross-domain iframe

In prior releases, if a web page in domain xyz.com contains an iframe that loads the thin client via getdisplay.jsp in a URL for domain abc.com, security exceptions occur and disable the thin client. This is fixed.

18689: Support updates to drillDownColumnSubs on table

The drillDownColumnSubs property of the table object (obj_table02) can be attached to data. However, in previous releases the thin client only read that property when the display was opened and ignored subsequent updates from the data attachment. This has been fixed.

18694: Tooltips now accomodate quote and bracket characters

In prior releases, if an object's mouseOverText property was assigned to a string containing a ', ", <, or > character, the thin client would not render the tooltips properly and sometime extraneous text characters would appear on the display. This is fixed.

18825: Display server memory leak fixed

A memory leak has been fixed in the display server that caused memory to grow at a small rate for each new session.

18893: Global subs set in login no longer reset after navigation

The following problem in the thin client has been fixed: If a global variable $x is initialized to a value of (say) 100 via a login sub defined in users.xml or roles.xml, and then $x is set to a value of 200 by user interaction with a display, the value of $x will incorrectly revert to 100 when the user later navigates to a new display.

Functions

19143: GroupBy result now correct when possible index combos > 2 ^ 31

A bug in the GroupByTimeAndUniqueValues function has been fixed which caused rows to be missing from the result in the case where the input table has multiple index columns and the union of all possible combinations of the index values present in the table exceeds 2^31

Object Library

18713: Support animated GIFs in some objects in thin client

The thin client has been enhanced to support animated gif images on obj_rect_il (simple label object), obj_ind_limits (indicator object with 4 analog alert limits) and obj_ind_multi (indicator object with multiple discrete alert values). In prior releases, only the first frame of an animated gif would appear on these objects. A new property named imageAnimatedFlag has been added to each of these objects. This property must be checked (set to true) in order for the animation to occur in the thin client. To avoid excessive CPU usage in the display server, the frame delay in all animated gif images should be 50 msec or larger. If the object's label string overlaps with the image, then in the thin client the string will be obscured by the image. To avoid this limitation, set the labelTextPosY property to Outside Top/Bottom or set the labelTextPosX property to Left or Right. For obj_ind_limits and obj_ind_multi, if the value string overlaps with the image then in the thin client the string will be obscured by the image. To avoid this limitation, set the valueTextPosY property to Outside Top/Bottom or set the valueTextPosX property to Left or Right. This feature is only supported in the thin client. In the builder/viewer, the animation will only update once every two seconds or after a mouse event.


Tables

18712: Support animated GIFs in table cells in thin client

An animated gif image will work properly in the thin client if used in a cell value in obj_table02. In previous releases, only the first frame of an animated gif was displayed. To avoid excessive CPU usage in the display server, the frame delay in all animated gif images should be 50 msec or larger. Note that animated gifs are still not supported in the builder/viewer, where the animation is only updated every two seconds or after a mouse click. This is a known limitation that is not addressed by this task.


Platform Support

18746: Table index names shortened for Oracle and Sybase

The historian will now keep index names to 30 characters or less on Oracle and Sybase to avoid "identifier is too long" errors from those databases.


RTView Display Panel

18722: Panel can now be minimized by default in thin client

The rtvDisplayPanel tag in a PANELS.ini file now supports an attribute named minimized. If this attribute is set to true, as in the north panel in the following example, then the panel will initially be hidden in the thin client: <?xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> <rtvLayout title="Panel Example" dividers="true"> <rtvDisplayPanel region="north" minimized="true" display="title.rtv"/> <rtvDisplayPanel region="center" name="main" display="test1.rtv"/> </rtvLayout> </panels> The minimized attribute is only effective if dividers="true" is specified in the rtvLayout tag, as in the above example. The minimized attribute only works in the thin client, it is ignored in the Viewer. A minimized panel can be made visible by clicking in the dark area in the center of its divider bar.

Reporting

19178: Report generator now available for EM

In previous releases, the report generator could not be used in EM. This has been fixed.


Viewer

18428: Support tabbing into composites in Viewer

The Viewer now supports an option -tabcomposites:true which allows the keyboard focus to be moved to controls inside obj_composite instances, via the Tab key. If the option is not specified, the Tab key traversal does not include controls inside composites, which was the behavior of the Viewer in all previous releases. The thin client is not affected by this option, since it has always supported keyboard traversal into composites.

Version 6.2.1 Release Notes

Alerts

18671: alertTableValid correct after multiple HA failovers

In EM 1.2, a bug was introduced with HA that caused the alert table to stop receiving updates from backup servers in the case where the primary server in the pair had failed multiple times without the backup server rebooting. This has been fixed.

Data Sources

Cache Data Source

18563: improve perf when incoming data not in time order

The performance of the cache data source has been improved in the case where a cache is configured to keep a history table and the cache's timestamp column is contained in the data tables that are applied to the cache (rather than being added by the cache itself) but the values in that timestamp column are not always in ascending time order in the incoming data tables. The performance improvement is most noticeable when the history table is large, the cache's allowDuplicatesInHistoryFlag property is set to false, and new data is applied to the cache frequently.

JMX Data Source

18616: synchronization bug when multi-threading is enabled

In the previous release, if the JMX option to Use Multile Threads for Commands and Polled Queries was enabled, a synchronization problem caused data attachments to multiple connections to miss some updates and duplicate others. This has been fixed.

SNMP Data Source

18551: Improvements for table index handling and data types

The SNMP data adapter was unable to return SNMP tables with non-integer indexes. The SNMP data adapter now treats table indexes as arbitrary strings and assigns an integer index value to each unique index string. Previously all SNMP variables were returned as strings. Now each variable is returned with a reasonable java type (eg, 32 bit counters are mapped to longs). Note that the new adapter requires more concise OID specifications.


Display Server

18660: thin client resize breaks scrolling in table

Beginning with version 6.0.2 in the thin client, if the user resizes the browser window, a table object may have unused space below the bottom row even though there are more data rows that could be displayed, and may incorrectly display empty cells in columns at the right edge of the table. This problem is fixed.

Functions

18569: enhance Set Subs By Lookup to add $ to column names

The Set Substitutions by Lookup function has been enhanced with a new argument, Add Dollar To Column Names. By default, the value is 0 and the function behaves as it did before. If Add Dollar To Column Names is set to 1, each column after the Key column is used to set a substitution regardless of whether or not it starts with $. For columns that do not start with $, a $ is added to the beginning of the column name when it is used as a substitution name.

18589: Combine Multi-Server Tables now keep data after server restart

In previous releases, the table returned by the "Combine Multi-Server Tables" function was cleared when it received the first update from a reconnecting data server, so the table was missing the rows from all the other servers until each of those servers sent another update. This problem has been fixed.

18591: Last table rows function returns incorrect value, may deadlock

In 6.2.0 the Last Table Rows function returned an extra row if the Index Column Names argument was blank. If the function was used in certain cache configurations, it could also deadlock. Both problems are fixed.

18602: Mark Time Gaps func throws array bounds exception.

A bug in 6.2.0 has been fixed that caused the Mark Time Gaps function to throw an ArrayOutOfBoundsException if a time gap was found in an integer data column.

General

18581: cache history query not run if no cache props attached to data

A bug has been fixed that prevented the initial sql query from being run to fill cache history tables in some configurations. The problem occurred if a cache was configured with constant values for all of its properties and either the cache had no current data or the current data was provided indirectly by a Store Table in Cache function rather than a data attachment on the cache's valueTable property.

Object Library

Charts (General)

18609: Mouseover on graph objects in rich client fixed

The mouse over was broken for all graphs except the trendgraph in RTView 6.2. This has been fixed.


Tables

18545: New drilldown select mode to update ddColumnSubs at data update

The drillDownSelectMode property on obj_table02 now supports a new mode of 2 (Element Only + Auto Update) in addition to the existing modes of 0 (Anywhere) and 1 (Element Only). When drillDownSelectMode is set to 2 the table's command is performed automatically when the row selection changes after a data update. The new mode is available only if the table's command property is configured to perform a drilldown to the current display in the current window, and if the table's indexColumns property is set to a nonempty string. The new mode is useful in cases where the substitutions set by the table's drilldown command need to be updated if some of the selected rows in the table are removed by a subsequent data update.

18546: Support deselecting all rows in a table

The table object (obj_table02) now supports a property named clearSelection. When the property is set to a value of 1, all rows in the table are deselected. When the property is set to a value of 2, all rows are deselected and the table's action or its drillDownTarget are invoked. Typically, a table's clearSelection property would be attached to a local variable that is set by a control object on the same display. For example, say you want a to add a Clear Selection button to a display that contains a table that supports multiple row selection. This could be configured as follows: 1. Add a local variable named $clearSelection with an initial value of 0. 2. Create a button object, with these property values: label : "Clear Selection" valueToSet : 1 varToSet : <attached to the $clearSelection variable> 3. Set these table object's properties: clearSelection : <attached to the $clearSelection variable> 4. If the table object has a drilldown command, or a drillDownTarget, add this to its Drill Down Substitutions: $clearSelection : 0 The last step is required to reset value of the $clearSelection variable to zero when the user selects a row in the table.

18554: New option to not display newlines in row data

The table object (obj_table02) has been enhanced to support removing line breaks from the text displayed in the table cells. To enable this feature, turn on the removeLineBreaksFlag property in the Data Format category. This option will only remove line breaks from the table cell, not from the drill down values. For example, if you have your drillDownColumnSubs setup to set a substitution from a cell with a line break, the substitution value will contain the line break regardless of the removeLineBreaksFlag. This works correctly in the Viewer Application. In the Thin Client, the drill down substitution will not contain the line break if the removeLineBreaksFlag is set. See the PAL for 18582 for more information.

Version 6.2.0 Release Notes

Alerts

18553: Custom object properties and event attributes are now restored

In previous releases, persisted custom event attributes and alert object properties were not restored correctly. This has been fixed.

18577: Timing problem with persisting disabled state during terminate

After the addition of task 18308, the alert engine sometimes incorrectly persisted the alert engine state as disabled during terminate or fail-over. This has been fixed.


Builder

18513: Icon Properties dialog requires Apply or you lose data

A problem has been fixed in the Builder which required the user to click Apply before closing the Icon Properties dialog after configuring a object grid with Icon Class Name = obj_composite and changing the rtvName property value. If the user simply clicked OK in that case, the changes were lost.

18514: Cannot display data for attachment with blank data server sub

A bug has been fixed in the Builder which caused the Display Data dialog to show no data, when a data attachment was selected whose Data Server field was assigned to a substitution whose value was an empty string.

Customization

18344: New isDbConnected method in custom command handler

A new method has been added to the GmsRtViewCustomCommandHandler class to test the status of a SQL database connection in the local process: /** Returns true if the specified database connection is connected. Note that * this method has 2 limitations. First, it only works for databases accessed * via the sql ds in the local process (ie not in a separate data server). Second, it * returns the current status which is only updated when a query is run against * that connection. To keep the status current, add a data attachment to query * the first row in a table in each database you want to call this method on. * @param dbName The name of the database to test. * @return True if this process is connected to the database. False otherwise. */ public boolean isSqlDbConnected (String dbName)


Data Server

18018: Support active standby mode in backup data server

The data server supports a new property named group_standby_mode that affects the behavior of the backup data server in a redundant HA server group. The values for group_standby_mode are "passive" and "active". If no value is specified the default value is passive. In prior releases, only passive standby mode is supported If group_standby_mode is set to passive, the backup server does not activate the rtview global, cache, or alert data sources at startup. Instead it activates those data sources only if it leaves standby mode because the primary server fails or is unavailable. Later when the primary server is again available, the backup server returns to passive standby mode by deactivating the alert, cache, and global data sources.. If group_standby_mode is set to active, the backup server activates the global and cache data sources at startup, so it will immediately begin to collect data and store it in caches as configured in the global and cache definition files. The backup server does not activate the alert data source at startup, instead it activates alerts only when it leaves standby mode, because the primary server fails or is unavailable. Later when the primary server is again available, the backup server returns to active standby mode by deactivating the alert data source, but it leaves the global and cache data sources activated. The intention of active standby mode is to avoid missing data in caches that might otherwise occur during the failover of the primary server to the passive backup server, while the backup server is activating the global and cache data sources. Note that there is some cost associated with active standby mode, because both the primary and backup server will be collecting data and storing it in caches. For example if a cache definition file defines SQL queries to collect data, then if active standby mode is used both servers will always be performing those SQL queries, but if passive standby mode is used then only the primary server would perform the queries. Note that the alert data source is inactivate in the backup server in both active and passive standby mode, to avoid generation of duplicate alerts by the primary and the backup servers. The group_standby_mode property can be specified as follows, where X is either passive or active: On the command line: run_dataserver -group_standby_mode:X ... Or in DATASERVER.ini: group_standby_mode X Or in an rtview properties file: sl.rtview.dataserver.group_standby_mode=X If no value is specified for group_standby_mode, passive is the default.

Data Sources

Cache Data Source

17554: add schemaTableStrictFlag to apply schema always

By default, if a cache has a schemaTable with N columns and a data table with N columns is applied to the cache, but the schema table's column order is different than the data table's, the schema is not applied and the table's columns will be stored in the wrong columns of the cache. To address this problem, a property named schemaTableStrictFlag has been added to the cache definition object (obj_cache_table). If this property is checked for a cache which has a schemaTable, then the schemaTable will be applied to all incoming data tables before they are stored in the cache even in the case where the data table and the schema table have the same number of columns. If this flag is unchecked (the default), then the schema is applied only when the data table and schema table have different numbers of columns, as was the behavior in all previous releases. Note that applying the schema in all cases will incur additional cpu overhead when updating a cache, if incoming data tables have a large number of columns and a high update frequency. So the flag should only be checked if it is possible for a data table to have the expected number of columns but those columns may be in the wrong order.


18331: max rows not applied to 1st update if extending cache by sql

A bug has been fixed in the cache data source that prevented the Maximum Rows limit in a cache data attachment from being applied to the first data update if that attachment also had the Extend with SQL option checked.

JMX Data Source

18459: Make JMX datasource connections multiple threaded

The JMX data source has been enhanced to support using multiple threads for commands and polled queries. This enhances performance in the case where some JMX servers are slow. Without this feature, a single slow JMX server can delay the data updates from all of the JMX servers. By default, this option is disabled. To enable multiple threads, select the Use Multiple Threads for Commands and Polled Queries on the JMX Administration tab of the Application Options dialog. You can also enable or disable this feature with the following command line option: -jmx_use_multiple_threads:true/false When enabled, the thread that created the jmx connection will be used for all commands and polled queries on that connection. The polled queries will initiated based on the poll interval for the data attachment and each connection will update their listeners asynchronously when the data becomes available. Note that RTView will create one thread per connection, so this is not a practical option for cases where hundreds of connections are defined. When disabled, the commands and polled queries will behave as they did in previous releases. In this case, the polled queries are executed synchronously and the listener is not updated until the data from all connections in the data attachment has returned. For example, a data attachment for a table has * in the connection field and there are 5 defined jmx connections. If this multi-threading option is disabled, every update period or poll interval, RTView will synchronously query all 5 jmx connections and then update the listener once with a table containing the data for all 5 connections. If this multi-threading option is enabled, every update period or poll interval, RTView will asynchronously initiate queries on all 5 jmx connections. As each query returns data, the listener will be update with data for that connection. Therefore the table will be updated 5 times per update period or poll interval with each update only containing the data for one connection. Due to this difference in how the listeners are updated, users need to confirm that the listeners for their jmx data attachments to multiple connections can handle partial updates. - If you want to see all connections in a single table, you must cache the data. The indexColumnNames property on the cache must be configured correctly. - For existing caches attached to jmx data that want to use this feature, users should confirm that the indexColumnNames property is properly configured. Since the previous behavior wrote all of the jmx data on every update, a cache could have previously worked correctly even if the indexColumnNames property was not configured correctly. When using the multi-threading option, this will no longer be the case. - For existing functions attached to jmx, users must confirm that the function will operate as expected when receiving update containing only one connection at a time. For example, a Join function attached to jmx might assume that all connections are present in every update. If your function requires all of the connections in each update in order to operate correctly, first put the jmx data into a cache and then use the cache as input to the function.


SQL Data Source

18535: add option to not try ODBC connection for undefined database

In all prior releases, if an sql query or command is executed that references a database name XYZ and there is no definition of XYZ in OPTIONS.ini then RTView attempts to establish an ODBC connection to XYZ. In this release a new coomand-line option has been added to change this behavior: -sqltryodbc:false The option can also be specified in OPTIONS.ini: sqltryodbc false or in a properties file: sl.rtview.sql.sqltryodbc=false If this option is specified and an sql query or command is executed that uses database XYZ and there is no definition of XYZ in OPTIONS.ini, then no ODBC connection attempt will be made and instead the following error message will appear in the console: Undefined SQL database XYZ This option is useful in cases where ODBC connection attempts cause a JVM crash, which has been reported in some JVM versions. Note that RTView will still make an ODBC connection if a database has the "Use ODBC Driver" option checked in the SQL tab of the options dialog, even if the -sqltryodbc:false is specified.

Drill Down

18516: Cannot edit drilldowns with data attachments to functions/vars

A bug in the Builder's Drill Down Properties dialog has been fixed that prevented changes made to existing data attachments from being saved when the user clicked OK.

Functions

18408: add column merge option to Join Outer

The Join Outer function has been enhanced to support a "merge" option for the Column Include Mode argument, in addition to the existing "all", "left", and "right" options. Like the "left" option, the merge option uses the column names and values from the column(s) specified in the Left Column Name argument, but also the "merge" option will include the value from the column(s) specified in the Right Table Column Name in the case where there is no matching index in the left table, rather than null values. The merge option is intended for use with Outer Join Type = Full. The merge option is useful for ensuring that the full outer join result contains only one set of the join columns and that all of those columns contain valid values for all rows in the result.

18418: Join function result can have bad values and cause OutOfMemory.

The join and combine functions now function correctly when attached directly to cache tables that are updating at the same time the function is updating. The performance of both functions has been improved.

18540: Replace function should allow replace with empty string

The eval function replace function should allow an empty string as the second argument, to permit the removal of a character, but in fact this caused an error: Evaluating expression "replace(%str, " ", "")": One string argument and two character arguments are required. This has been corrected.

General

18552: Timeout added to stop_rtv and kill_dataserver scripts

In this release, if the kill_dataserver or stop_rtv script is used to stop the data server, display server, or historian process, the process will always shutdown within 60 seconds. In prior releases, the process would sometimes wait indefinitely for connections to close or stalled/deadlocked cleanup threads to complete. Now by default the server will not wait for more than 60 seconds, and at that point it will exit abruptly. A different timeout can be specified on the command line as follows: -shutdown_timeout:N where N is the timeout period in seconds. If N is zero or less then the process will wait indefinitely for all connections to close and cleanup threads to complete, as in prior releases. If -shutdown_timeout is not specified then a value of 60 seconds is assumed. Note that the process may shutdown more quickly than the shutdown_timeout period if the shutdown proceeds quickly and cleanly. The option may also be specified in DATASERVER.ini, DISPLAYSERVER.ini, or HISTORY.ini file, e.g. shutdown_timeout 30 Or in a properties file: sl.rtview.NAME.shutdown_timeout=120 where "NAME" is dataserver, displayserver, or historian as appropriate.


Object Library

Tables

18542: Enable deselection of a row in single select mode

In prior releases, in the thin client it was possible to deselect a row only if the table has multi-select enabled. In this release Ctrl + Click operation will deselect a row in single-select mode as well. This is useful because a selected row is highlighted in blue, which masks any colors set in the row via the table's filterProperties property. By deselecting the row the user can see the row colors if desired. (Note that deselecting the selected row will not trigger the table object's drilldown so any drilldown substitutions set by the table will remain set to the values for the last row selected. This is the intended behavior).

Security

18041: support command to change role after login

INTERNAL This feature is intended for use in EM configurations, with a panels file. A new custom command has been implemented that allows the user's role to be changed after login. The command is configured as follows in the command dialog: Command Type: Execute System Command Command Name: rtvapm_change_role Command Value: role=R;file=F where R is the desired role name and F is the panels file to be loaded. If the file=F is omitted, then PANELS.ini is assumed. Note the R and F can both be substitutions. If R is a role that is not permitted for the current user, then the role will not be changed by the command. A table of the roles permitted for the current user can be obtained by defining a function as follows: Function Name: getRolesForUser (for example) Function Type: RTView Info Item: Roles The table returned by the function will contain a single column named "role" and one row for each role defined for the user. A typical usage on a display would be as follows: 1. Create a function named getRolesForUser, as shown above. 2. Create a local variable named $rtvrole. Leave the Initial Value blank. (The value will be set automatically by rtview, since it corresponds to a predefined global substitution). 3. Add an obj_combobox instance to the display. 4. Attach the combo's listValues property to the getRolesForUser result. 5. Attach the combo's selectedValue and varToSet properties to the $rtvrole local variable. 6. Configure the combo;s actionCommand property to invoke the rtvapm_change_role command, as follows: Command Type: Execute System Command Command Name: rtvapm_change_role Command Value: role=$rtvrole

Version 6.1.5 Release Notes

Data Sources

JMS Data Source

18441: Queue browser fix when msgs have inconsistent props or fields

In previous releases, data attachments to the Queue Browser would throw an exception and fail to return data if all of the messages in the queue did not use the exact same properties and fields. This has been fixed.

Layouts

18409: Enhanced anchor property to support anchor objects

The anchor property has been enhanced to support anchoring to anchor objects and also to supporting floating within the extent of anchor objects. The anchor property is applied when the window containing the display is resized only if the Resize Mode is set to Layout. The Resize Mode is set in the Background Properties dialog. It is also applied to objects in the composite display when a composite is resized and its resizeMode is set to Layout. Otherwise, this property is ignored. By default, objects are not anchored and they float within the extent of the display. For example, if the display is 100 pixels wide and objX is 50, when you resize the display to be 200 pixels wide, the object's objX will move to 100. You can also select an anchor object to float inside. In this case, the object will float within the specified anchor object maintaining its relative position within the anchor object's extent. The object's center must be inside the anchor object's extent and the list of available anchor objects in the Float Inside list in the Anchor Property Dialog is limited to the anchor objects with extents that contain this object's center point. When an object is anchored, you may select an anchor for the top, bottom, left and right sides of the object. If you select Display, that side of the object will be anchored to the corresponding side of the display. When the display resizes, the number of pixels between the specified side of the object and that side of the display remain constant. If an object is anchored on opposite sides (ie. Top and Bottom or Left and Right), the object will be stretched to fill the available space. If you select an anchor object, that side of the object will be anchored to the center of the specified anchor object. When the display resizes, the number of pixels between the specified side of the object and the center of the anchor object remain constant. Only objects that support the objWidth and objHeight properties support anchoring on opposite sides. If an object has the dock property set, the anchor property is ignored. Circular anchor references are not allowed. An object cannot anchor to itself directly or indirectly. To make an object available for use as an anchor object, select the isAnchorObject property for that object. When Anchor Property Dialog is open, all of the available anchor objects in the display will show a tooltip displaying their name. Since an anchor object is referenced by name when anchoring to an object or floating inside an anchor object, you must not have multiple anchor objects with the same name. This could potentially happen when using include files. This can be avoided by assigning a unique value to the objName property of objects in an include file. For example, you might append "_Header" to the name of each object when building an include file named Header.rtv.

Version 6.1.3 Release Notes

Data Server

18366: Speed improvement for row delta calculation in data server

The performance of the Data Server and its clients has been improved when tracking and applying changes to large data tables.

Data Sources

Cache Data Source

18367: Property updateListenersImmedFlag added to cache object

A property named updateListenersImmedFlag has been added to the cache table object (obj_cache table). The property is in the Cache category and is checked by default. In very specific conditions, the property can be unchecked to improve the performance of the Data Server. If updateListenersImmedFlag is checked, then each time new data is stored in the cache the updated contents of the cache's tables are immediately applied to any listeners attached to those tables. This is the default behavior and is appropriate for most caches. If updateListenersImmedFlag is unchecked, the updated contents of the cache's tables are not applied to the listeners immediately after new data is stored in the cache. Instead the listeners are updated on the next RTView update cycle. (The default rtview update interval is 2 seconds). This is more efficient in the case where raw event-driven data is frequently stored in the cache (for example high-frequency event data from a JMS, RV, or RtvAgent data attachment) and the cache's current table or history table can grow large (more than 25k rows) and the cache is maintained in a data server.

18375: Improved row expiration performance

The performance of the cache data source and data server have been improved when rows with random timestamps expire and are removed from the current table of a cache.

Functions

18368: Buffer Rows function no longer loses rows

A bug in the Buffer Rows function has been fixed which made it possible for some rows in the buffer to be lost before the downstream function was updated with those rows.

Version 6.1.2 Release Notes

Data Server

18358: Fixed bug with RTVQuery Servlet HA functionality

The following problem with the rtvquery servlet has been fixed: If the rtvquery.properties file specifies a connection to a backup data server via the DataServerBackup property, then the servlet will be unable to connect to its primary data server specified by the DataServerHost property, unless the DataServerPort property is set to the default value of 3278. If any other value is used for DataServerPort the servlet will only connect to DataServerBackup.

Version 6.1.1 Release Notes

Alerts

18230: Custom event attributes are now restored

In previous releases, persisted custom event attributes were not restored correctly. This has been fixed.

18286: $alertText and custom prop subs now work in cleared command

In previous releases, the $alertText substitution and the custom property value substitutions were not processed correctly for the alertClearedCommand. This has been fixed.

18288: Fixed execution of invalid alertClearedCommand

In previous releases, a bug in the alert processing caused the alertClearedCommand to execute for certain alerts that were never generated. If an alert has the alertDelayTime set to a value greater than 0 (this is set from the Duration in the Self Service Alerts Administration page), an alert will not be generated until the value driving that alert has continuously the threshold for longer than the alertDelayTime. The bug happened for alerts configured with an alertDelayTime value greater than 0 if the value driving the alert exceeded the threshold, then was updated with a value less than the threshold before the alertDelayTime expired. In this case, the alertClearedCommand was executed even though no alert had been generated or cleared. This has been fixed.

18289: Persisted alerts should be applied before updates

In previous releases, if the data driving a persisted alert changed during failover, this data change was not always applied correctly if it changed the state of the alert. For example, an active alert has been persisted and the alert engine exits. While it is not running, the data changes to a value less than the threshold. When the alert engine restarts, the alert was cleared, but its severity was lost and the alert cleared command was not executed. This has been fixed. This fix has 2 side effects: 1. The Alert Variables Table now does not start populating until after the Initial Delay time has expired. Previously, it started populated as soon as any data was received. 2. Only the last data update received before the Initial Delay time expires will be processed. Previously, updates received before the Initial Delay time expired would be processed, but no alerts would be triggered. This will not cause any change in behavior for scalar alerts or for tabular alerts attached to cached data (or any data where all alert indexes are included in all updates). For alerts that are attached to data where only some indexes are included in each update (ex. JMS messages), all updates except the last one before the Initial Delay time expires will be lost. If this is a problem, put your data in a cache and attach the alert to the cache.

18293: Added AlertTableValid column to AlertingEnabled table

The AlertingEnabled table in the Alert data source has been enhanced with a new column, AlertTableValid. This column has a value of false at startup and returns true one update pass after the following conditions have been met: 1. The alert engine has finished initializing. - If self service is configured, alert initialization does not complete until the alert engine has attached to the self service alerts database. - If persistence is configured, alert initialization does not completed until after the alert engine has read the persisted alerts and added them to the alert table or the Persistence Connection Timeout has expired. 2. The Initial Delay time has expired (set on the Alert Definitions tab in Application Options). Displays built with previous versions of RTView that had scalar data attachments to the AlertingEnabled table without specifying a Column Name in the data attachment will break. This is because RTView updates scalar properties with the value of the first cell in a one column table, but does not support scalar properties attached to multi-column tables. In order to fix this, modify the data attachment to specify the AlertingEnabled column.

18308: Persist alert engine enabled state

The Alert data source persistence has been enhanced to include the Alerts Enabled state. This can be set in Application Options->Alert Definitions or via the Enable Alerts command. Previously, if the Enable Alerts command was used to set the enabled state to a different value than had been set in Application Options, this setting would be lost after failover or restart. It is now saved as part of alert persistence.

Customization

18151: Support standard RTView command calls from custom commands

Two new methods have been added to the GmsRtViewCustomCommandHandler class in order to support executing standard RTView system and data source commands from a custom command handler. /** Executes an RTView System or data source command and returns the * resulting command status. * @param command The command string. This must use the correct syntax * for the system or data source command. * @param dataServer The name of the dataServer connection to execute the * command on. If this is null or empty string, the command will be executed * in the local process. * */ public GmsRtViewCommandStatus executeRtvCommand (String command, String dataServer) /** Utility method to create a properly formatted sql command string. This will * return null if either the sqlStatement or the dbName is null or empty string. * @param sqlStatement The sql statement to execute. * @param dbName The name of the database connection to execute this command * on. * @return A string in correct format to pass into executeRtvCommand(). */ public String makeSqlCommandStr (String sqlStatement, String dbName)


18194: Allow subs for the poll rate in Custom DS dialog

Custom data sources and the following standard RTView data sources now support substitutions in the Poll Interval field of the Attach to Data dialog: IbmMq SNMP Splunk WMI


Data Historian

18097: Indexing on history table creation added

The historian supports a new option to create indexes on the database tables it creates to persist cache history tables. For large tables, this can improve the performance of SQL queries that RTView executes to retrieve cache history data from the database. The command line option is: -index_history_tables:true The option can also be specified in HISTORY.ini as follows: index_history_tables:true When this option set to true, the historian will create two indexes on each database table that it creates to persist cache history. One index will use the cache's timestamp column, the other index will use the cache's index columns plus its timestamp column. If the cache has no index columns defined, then only the first index is created.


18162: Smooth Compaction fails to smooth all tables

In previous releases, if the historian smoothCompaction option was specified and if multiple database tables existed, the historian did not always apply the compaction rules to the old data in all of the tables. This is fixed.

18163: smoothCompaction should not re-write rows for unchanged interval

The performance of the historian's smoothCompaction feature has been improved, by avoiding updates to the database table for intervals in which the data has already been compacted.

Data Server

18281: Run alert persist db updates in correct order on remote server

A bug in the data server has been fixed which sometimes caused the alert persistence feature to fail when configured to use a data server connection instead of a direct connection to the database, because the sql commands to delete and insert database rows were run out of sequence on the remote data server.

18285: Ping timeout no longer disables primary and backup server

A data server bug has been fixed that in rare cases could cause both the primary and backup servers in a redundant HA pair to become unresponsive to clients. The problem occurred when the backup server did not receive a ping from the primary server for two consecutive time intervals specified by the group_timeout property, causing the backup server to take over and the primary server to resign and go to standby mode. That is the designed behavior, but in the some cases the backup would incorrectly detect that the primary server was still running as primary and the backup would immediately return to standby mode. This sequence left both servers in standby mode and triggered continuous unsuccessful attempts by both to connect to the other as primary. The following changes have been made to fix this problem: The group_timeout property is no longer used to determine the interval at which ping messages are to be sent and to be expected between the primary and backup servers. Now the primary server will always send a ping to the backup every 5 seconds. A new property named group_ping_timeout has been added to determine how long the backup server will wait, in seconds, for a ping from the primary before deciding that the primary has been lost and taking over as primary. The default value of group_ping_timeout is 30 seconds and 30 is also the minimum nonzero value. A value of zero disables the ping timeout feature entirely. The group_timeout property is still valid and has a default value of 5 seconds, but now it is used only to determine the timeout on read & write operations on the socket connection between the primary and backup server. Note that the ping timeout feature is intended only to detect the rare case where the primary data server is still running and connected to the backup server but for some reason the primary server is stalled and unresponsive. If the primary data server terminates or the host on which it is running is shut down, the backup server will detect this immediately, regardless of the value of the group_ping_timeout or group_timeout, and take over as primary.

Data Sources

Cache Data Source

18309: Deadlock if cache's rowsToDeleteTable is attached to self

A bug in the cache data source has been fixed which could cause a deadlock in the case where a cache has rowExpirationMode enabled and also has its rowsToDeleteTable property attached to a function, and that function is attached to current table of the same cache.

JMX Data Source

18283: Passwords in JMX connection string can now be encrypted

It is now possible for users to encrypt JMX passwords passed in the additional properties section of a JMX connection line.


SQL Data Source

18166: ignore sqldb property with driver = __none

If an SQL database connection is defined with a JDBC driver name or URL of __none (two underscores before the 'n') then the SQL datasource will not attempt to connect to the database and will ignore any sql data attachments that specify that database. The RTViewDs.Connections meta-table will contain a row for the database but the Connected column and the Enabled column will always show false. If the -sqltrace option is used, you'll see this trace message once in the console: <dbname>: ignoring connection with driver/url=__none

Display Server

16983: hide navtree nodes based on user role in thin client

The thin client has been enhanced so that nodes in display navigation trees can be hidden according to the user's role. (This feature has been supported in the display viewer in prior releases). Access to displays can be determined by user roles. For example, the roles.xml file might be configured to permit a user with the admin role to access all displays but to deny a user with any other role access to any display named "admin*.rtv". In the viewer, if a navigation panel (rtvTreePanel, rtvAccordionPanel, rtvTabbedDisplayPanel) contains nodes or tabs whose display is excluded from the user's role, those nodes/tabs will not appear. However, in prior releases, those nodes/tabs would be visible in the thin client. In this release, the thin client will also hide the nodes/tabs for displays that are excluded from the user's role. No configuration changes are needed to take advantage of this feature if an rtvTreePanel, rtvAccordionPanel, rtvTabbedDisplayPanel is used. If a tree or accordion control (obj_c1tree, obj_c1accordion) is configured for display navigation, in this release the control can also be configured to hide nodes for displays that are excluded from the user's role. A new property named roleCheckColumnName has been added to support this feature. The property's value should be set to the name of the column in the data table (to which the control's valueTable property is attached) that contains the display names. The default value of roleCheckColumnName is "Display".


17059: size of dd windows uses the branch function display orig size

In prior releases, if a display object's drillDownTarget was configured to open a display in a new window, and to use a drilldown branch function to determine the display name, then in the thin client the browser popup window was not sized to fit the display in all cases. This is fixed. The fix does not address the case where the drilldown is configured to use a named window. In that case, the window will be sized for the first display that is opened in the named window. If another display of a different size is subsequently opened in the same named window, the window will not be resized in most browsers. This is due to security settings in modern browsers.

18204: ConcurrentModificationException possible when setting global var

A ConcurrentModificationException is no longer thrown if a global variable is set in a display in one panel while local variables are being created for a new display loading in another panel.

18239: Fixed NPE in drilldown branch function processing

A problem has been fixed that caused the display server to throw a NPE if multiple clients simultaneously performed drilldowns involving a branch function. When the problem occurred the thin client would display a "Null reply from display server" error message, and the display server log contained error messages and stack traces similar to the following: GmsRtViewLocalDs: addObject($x) object is already in table, not added. ... ERROR in process_client_subs : java.lang.NullPointerException at com.sl.gmsjrtview.GmsRtViewPanel.getLocalVarValue()

18241: Auto-failback to primary display server

Background: In a high availability configuration, the rtvdisplay servlet is configured to have a primary display server (via the DisplayServerHost and DisplayServerPort properties in rtvdisplay.properties) and a backup display server (viae the DisplayServerBackup property). The servlet will connect to its primary server if available otherwise it will connect to its backup display server. However, once the servlet connects to its backup display server it will not (re)connect to the primary later, unless the backup server is stopped or the app server (tomcat) is restarted. Enhancement: In this release, the rtvdisplay servlet can now be configured to periodically attempt to (re)connect to its primary display server while it is connected to its backup display server. If the connection to the primary server is made successfully, then the servlet will disconnect from the backup server and use the primary. It will attempt to connect to the primary approximately every 30 seconds. To enable this new behavior, the following entry must be added to rtvdisplay.properties: DisplayServerConnectionFailback=true Then rtvdisplay.war must be rebuilt and deployed. By default, DisplayServerConnectionFailback is set to false and in that case the behavior is as described above for previous releases.

18258: Support thin client in IE 10

The thin client is supported on IE10. An exception is the right-click feature in the tree control (obj_c1tree), which is not yet supported in IE10.


18272: URL is garbled if browseUrl command invoked via right click

A problem has fixed that caused the URL in an "Open Browser" (browseUrl) command to be garbled if it was invoked from a right-click on a row in a table object. The ":" characters in the URL were sometimes replaced by the name of the column in which the user had clicked.

18279: Dropdown list selection now cleared

A problem has been fixed in the thin client that prevented the previous selection in a combo box control (obj_c1combox) from being cleared when the local variable to which the control is attached was set to a value that did not appear in the control's dropdown list.

Functions

18108: enahnce Join functions with flag to not return duplicate columns

The Join and Outer Join functions have been enhanced to support a new argument, Column Include Mode: Column Include Mode - (Optional) Specify whether or not to include the columns specified in the Left Column Name and Right Column Name fields in the returned table. Specified as "none" (don't include any columns specified in Left Column Name or Right Column Name), "left" (don't include columns specified in Right Column Name), "right" (don't include columns from the Left Column Name, or "all" (include all columns specified in Left Column Name and Right Column Name) which may be abbreviated to their first letters. If this field is left blank all columns specified in Left Column Name and Right Column Name will be included.

18168: Buffer Table Rows function no longer throws ClassCastException

The Buffer Table Rows no longer throws a ClassCastException if the input table's schema is concurrently modified by the data source that produced it. In the case of BW Monitor this may cause a Server to stop updating and expire. In this case the dataserver log file will contain a ClassCastException message such as: [rtview] Exception in thread "GmsTimer-RtViewBody" java.lang.ClassCastException: [Ljava.lang.String; [rtview] at com.sl.gmsjrt.GmsTabularData.removeAllRows ...

General

17680: Table objects are drawn on top of the dashboards scrollbars

The following problem has been fixed: In the builder/viewer, tables and control objects are drawn on top of the display panel's scrollbars. This is most obvious when using crop mode and when the panel is resized to be smaller than the display so that the table or control objects overlap the bottom or right edge of the panel.

Object Library

Control Objects

18062: Allow right click menu items on tree control

The tree control (obj_c1tree) can now be configured to extend the right-click context menu and support double-click behavior, in the same manner as the heatmap, table, and grid objects. To support this feature properties named menuItemGroup, rightClickActionFlag, and drillDownTarget have been added to the tree control. See 17835 for more information on using these properties to extend the context menu and control the double-click behavior. Limitations: The new feature is not supported on iPad. The accordion control does not support the new feature. If the tree control has valueTableFormat = Row-Leaf then the new feature will apply to a right-click or a double-click on leaf nodes only. That is, a right-click on a non-leaf node will not add items to the menu and a double-click on a non-leaf node will simply expand or collapse the tree node, it will not invoke the double-click action. In Internet Explorer, if you double-click directly on a leaf node the node will be selected but the double-click action will NOT be invoked. The double-click action is invoked only if you click on the empty space in the tree to the left or the right of the leaf node, or in the small hollow square located to the left of the leaf node.


18232: Tree control selection doesn't clear when labels change

The tree control will now clear the selection when the tree is updated and any of the node labels in the path to the selected node are changed.

Tables

18237: Update that lowers row count no longer resets scrollbars

In prior releases a data update that reduces the number of rows in a table object in the thin client can reset the table's scrollbars to their left/top positions. This has been fixed, except for the specific case where the table's row count is >= 500 before an update and < 500 afterwards.

Trend Charts

18235: fxreplace respects yAxisAutoScale = Incl.min/max, on strip chart

If an obj_fxtrend instance with yAxisMultiRangeMode = "Strip Chart" also has yAxisAutoScaleMode = "On:Include min/max", that setting will be obeyed by the replacement trend graph when the -fxreplace option is used. In previous releases, yAxisAutoScaleMode was always forced to "On" in the replacement graph.

Version 6.1.0 Release Notes

17557: vis 0 fails on obj_c1button in obj grid of comps , displayserver

In previous releases, controls, tables, object grids and flex objects inside a composite in the thin client did not obey the compositie's visFlag setting. This has been fixed.

18059: Official Support for Java 1.7

RTView applications are now validated for use with Java 1.7


Alerts

18038: Added global notification properties to alert ds

A new Alert tab, Global Notifications, has been added to Application Options. This allows you to setup global values for alert notifications. The following options are available on this tab: Alert Command: This command will be used as the alertCommand for all alerts where the alertCommand property is empty. Renotification Command: This command will be used as the reNotificationCommand for all alerts where the reNotificationCommand property is empty. Renotification Mode: This will be used as the reNotificationMode for all alerts where the reNotificationMode property is set to Use Global Setting. Renotification Time. This will be used as the reNotificationTime for all alerts where the reNotificationTime property is set to a value less than 0. Renotify on Severity Change Mode: This will be used as the reNotificationOnSevChangeMode for all alerts where the reNotificationOnSevChangeMode property is set to Use Global Setting. Comment Command: This command will be used as the commentAddedCommand for all alerts where the commentAddedCommand property is empty. Cleared Command: This command will be used as the clearedCommand for all alerts where the clearedCommand property is empty. See the corresponding properties on the alert definitions for descriptions of each option. For all command fields, click on the ... button next to the command field you want to edit to define, copy, paste or clear a command. Once the command field contains a command, you can double-click on the field to edit it.

Commands

18025: Allow some system commands to be redirected to a data server

In prior releases, system commands were always executed in the client. In this release, the following system commands can be redirected to a data server: Execute Custom Command, Execute URL Run DOS Command or Unix Shell (run external process) Send Email Send SNMP Trap In the Define System Command dialog, if one of the above commands is selected then the "Data Server" dropdown list will appear at the bottom of the dialog. The default value for the Data Server field is <none> indicating that the command will be executed by the client (builder/viewer or display server). A value of <default> can be selected to execute the command in the default data server. The Data Server field can also be set to the name of a named data server, to execute the command on that data server. The Data Server field can also be set to a substitution, for example $server. If $server is set to an empty string or to "__none" the command will be executed in the client. If $server is set to "__default" the command will be executed in the default data server. If $server is set to the name of a named data server, the command will be executed in that data server. Note that if $server is set to "__default" or the name of a named data server and there is no connection defined for that data server, the command will not be executed. Note that "__none" and "__default' both start with two underscore characters. The following system commands cannot be redirected to a data server: Beep Drill Down or Set Sub Open Browser Play Audio File Close Window

18027: pass client credentials with commands from thin client

In prior releases, a null username was passed to some rtview commands executed by the data server, rather than the correct login username for the client (viewer or thin client) that invoked the command. This is fixed.

Common Server Support

18060: clients should reconnect to primary data server when it recovers

The primary/backup data server feature (see task 17598) has been improved so that clients that connected to the backup server when the primary server failed will now reconnect directly to the primary server, if possible, when it recovers. Previously, the clients would remain connected to the backup server which would act as a proxy between the clients and the primary server.


Data Server

18019: support client access lists to allow/deny data server connection

BACKGROUND: The data server now supports client access lists. This feature allows the user to specify which clients can connect to a data server. This is done by adding client hostnames or IP addresses to three lists supported by the data server: Blacklist : clients to be denied access to the data aserver Graylist : clients to be permitted access to the data server if they provide a trusted SSL certificate Whitelist : clients to be are permitted access to the data server, no SSL certificate required. To specify the client access lists, the data server supports three new options named client_blacklist, client_graylist, and client_whitelist. Each option can be specified multiple times. The format of the values for the these options is described later in this note. Note that any RTView application can be the client of a data server. That is, a client could a builder, viewer, display server , or another data server. PROCESSING CLIENT CONNECTION REQUESTS: By default all three of the client access lists are empty which means that any client can connect to the data server. If any of the three lists is not empty, then when the data server receives a connection request from a client with IP address X and hostname H it is processed as follows: 1. If the blacklist is not empty and X or H matches any entry in the blacklist, the server rejects the client connection. 2. Otherwise, if the graylist is not empty and X or H matches any entry in the graylist, the server performs an SSL handshake with the client. If the client presents a certificate that the server trusts and vice-versa, the handshake completes successfully and the connection is accepted. Otherwise the server rejects the connection. 3. Otherwise, if the whitelist is not empty and X or H matches any entry in the whitelist the server accepts the client connection. 4. Otherwise, neither X nor H is matched on any list. If the whitelist is empty, the connection is accepted. If the whitelist is not empty, the connection is rejected. Some details to note about the preceding steps: - The blacklist has the highest precedence, the whitelist has the lowest. If a client's address or hostname matches any entry on the blacklist its connection will be denied regardless of whether the client also has a match in the graylist or whitelist. In other words, if a client address or hostname has matches on multiple lists, the most restrictive entry will always be the one that is used. - If the the whitelist is not empty then any client that has no match in the whitelist or graylist is rejected. But if the whitelist is empty, then any client that is not blacklisted is accepted (with an SSL handshake if its graylisted, unconditionally otherwise). - The order in which the user specifies the client_*list options is unimportant. It does not affect the results of applying the lists to each connection request. - Using the hostname H in a list is effective only if the data server's host system is able to lookup that hostname via its address X, using a naming service. If a client's connection request to the data server is denied then that client will make no further attempts to connect to that data server, unless the client app is restated. This is by design so that a client whose connection request is denied does not continue to pester the server with connection requests. This is true even if the client has a failover connection specified for that data server. SPECIFYING CLIENT LISTS: Each of the client access list options can be specified multiple times. They can be specified as command line arguments of the data server, as options in DATASERVER.ini, or as entries in a properties file. The order in which the options are specified is unimportant. The value of each option is either (1) a client hostname or IP address which may contain * characters as wildcards, or (2) a range of IPv4 addresses in the format of n.n.n.n-n.n.n.n where each n is a number between 0 and 255. The * character cannot be used in an address range. If client lists are specified, the data server will check both incoming socket connections and http connections (via the rtvdata servlet) against those lists using the steps described above. Case is ignored when a client's hostname is compared to a list entry. For example a list entry of host1 will match HOST1, or Host1, or host1, etc. There may be a performance penalty involved in using hostnames in the client access lists rather than IPv4 addresses. To determine a client's hostname the data server must perform a lookup with the client's address, using a name service. There may be a delay associated with each lookup. So for best performance use only IPv4 addresses in the lists, if possible. EXAMPLES: 1. Example using command line arguments: run_dataserver -client_whitelist:192.168.1.* -client_whitelist:localhost This configuration will accept connections from all clients on localhost or with IPv4 addresses that begin with 192.168.1.Connections from any other clients are denied (because the whitelist is not empty). 2. Another example using command line arguments: run_dataserver -client_blacklist:DMZ This configuration denies connections from a client with hostname DMZ and accepts connections from all other clients. 3. Example configuration using DATASERVER.ini : client_whitelist localhost client_blacklist 192.168.1.44 client_blacklist DEV* client_whitelist 192.168.1.1-192.168.1.255 This configuration will accept connections from the localhost and any clients with IPv4 addresses in the range of 192.168.1.1 through 192.168.1.255 except for address 192.168.1.44 or any client whose hostname begins with DEV, dev, Dev, etc. Connections from any other clients are denied (because the whitelist is not empty). 4. Same example as previous, but using an rtview properties file: sl.rtview.dataserver.client_whitelist=localhost sl.rtview.dataserver.client_blacklist=192.168.1.44 sl.rtview.dataserver.client_blacklist=DEV* sl.rtview.dataserver.client_whitelist=192.168.1.1-192.168.1.255 GRAYLIST AND SSL CERTIFICATES: If a client matches an entry on the graylist, then an SSL handshake is performed between the client and the server, and each must provide a certificate that the other will accept. That is, the client must provide a certificate that the server trusts, and the server must provide a certificate that the client trusts. If the SSL handshake is successful the client connection will be accepted. All traffic between the client and server on that connection will be encrypted, typically using a 128 bit key. (This may impact CPU and network performance on connections that transmit high volumes of data). The following example shows how that can be accomplished with self-signed certificates using the keytool utility provided with the Java JDK. However, please note that a full discussion of SSL and certificates is beyond the scope of this document. Note that the keytool is not part of RTView it is part of the Java JDK. Run "keytool -help" for usage information. In the following example, the data server will run on host1 and the client will run on host2. Note that the filenames, passwords, aliases, etc used below are only for examples and are not required values. In particular, there is nothing significant about the use of "rtview" in the example strings. In an actual configuration all of these strings could be replaced with strings of your choice, provided of course that they are replaced consistently. Note: Some keytool commands may appear on multiple lines below for clarity, but must be entered as a single line. 1. Create a keystore filed named server_keystore.jks to store the server's private key and self-signed certificate, with a 10 year expiration > keytool -genkey -keystore server_keystore.jks -alias rtview_server -validity 3650 -keyalg RSA -storepass mypswd -keypass mypswd -dname cn=host1 2. View the certificate just created: > keytool -list -v -keystore server_keystore.jks -storepass mypswd The output should be similar to the following: Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry Alias name: rtview_server Creation date: Nov 15, 2012 Entry type: PrivateKeyEntry Owner: CN=host1 Issuer: CN=host1 Serial number: 50a567d2 Valid from: Thu Nov 15 17:08:18 EST 2012 until: Sun Nov 13 17:08:18 EST 2022 Certificate fingerprints: MD5: 96:89:2D:37:71:8E:7F:89:7A:08:71:9F:7F:C2:C1:50 SHA1: 63:1B:1B:ED:75:58:11:34:F0:80:56:45:9B:C9:74:02:CD:D4:C6:89 Signature algorithm name: SHA1withRSA Version: 3 3. Export the server's certificate to a file named server.cer: > keytool -export -alias rtview_server -keystore server_keystore.jks -storepass mypswd -file server.cer 4. Import the server certificate into a truststore file for the client: > keytool -importcert -alias rtview_server -file server.cer -v -noprompt -keystore client_truststore.jks -storepass mypswd 5. Create a keystore filed named client_keystore.jks to store the client's private key and self-signed certificate: > keytool -genkey -keystore client_keystore.jks -alias rtview_client -validity 3650 -keyalg RSA -storepass mypswd -keypass mypswd -dname cn=host2 6. Export the client's certificate to a file named client.cer: > keytool -export -alias rtview_client -keystore client_keystore.jks -storepass mypswd -file client.cer 7. Import the client certificate into a truststore file for the server: > keytool -importcert -alias rtview_client -file client.cer -v -noprompt -keystore server_truststore.jks -storepass mypswd 8. You should now have 4 files with a .jks extension: client_keystore.jks client_truststore.jks server_keystore.jks server_truststore.jks Copy server_keystore.jks and server_truststore.jks to the directory on host1 where the data server will run. Copy client_keystore.jks and client_truststore.jks to the directory on host2 where the client will run. If you copy the keystore (.jks) files between Windows an linux/unix hosts, be sure to copy them in binary mode. The client.cer and server.cer files are not needed and can be deleted. 9. On host1, run the data server as follows (Note: The "set RTV_JAVAOPTS" command is shown in Windows command syntax and should be entered on a single line): > set RTV_JAVAOPTS=-Djavax.net.ssl.keyStore=server_keystore.jks -Djavax.net.ssl.keyStorePassword=mypswd -Djavax.net.ssl.trustStore=server_truststore.jks -Djavax.net.ssl.trustStorePassword=mypswd > run_dataserver -daemon -verbose -client_graylist:host2 10. On host2, run a viewer client as follows > set RTV_JAVAOPTS=-Djavax.net.ssl.keyStore=client_keystore.jks -Djavax.net.ssl.keyStorePassword=mypswd -Djavax.net.ssl.trustStore=client_truststore.jks -Djavax.net.ssl.trustStorePassword=mypswd > run_viewer -dataserver:remote:host1 If all the steps were done correctly, the viewer's connection to the data server should be accepted. You should see output similar to the following on the data server console: GmsRtViewDataServer connect client 1, 192.168.1.200:55401 created SSL socket 192.168.1.200:55401 cipher=SSL_RSA_WITH_RC4_128_MD5 add Client: 1 (127.0.0.1/127.0.0.1) accept graylisted client 1 (127.0.0.1) Note the lines indicating creation of an SSL socket and the cipher used. If errors occur, refer to the troubleshooting section below. SSL ENCRYPTION WITHOUT CERTIFICATES: As in prior RTRView releases, the -ssl option can be specified when the data server is started. This instructs the data server to use an SSL socket for each socket connection to its clients but without performing an SSL handshake to authenticate the client. All data transmitted on the socket will be encrypted using an anonymous cipher. The -ssl option can be used in combination with client access lists. In that case, if a client is graylisted then an SSL handshake will be performed when it connects to the data server, as described above. If a client is whitelisted its connection will be accepted without an SSL handshake and an SSL socket with an anonymous cipher will be used. The data server's verbose output will indicate this with messages similar to the following: comparing client 192.168.1.200 to whitelist entry 192.168.1.*: MATCH created SSL socket 192.168.1.200:55812 cipher=SSL_DH_anon_WITH_RC4_128_MD5 add Client: 4 (host2/192.168.1.200) Note that encryption may impact CPU and network performance on connections that transmit high volumes of data. RECOMMENDATIONS: If any client_whitelist values are specified and the data server belongs to a redundant server group for failover, be sure to specify a client_whitelist entry for the address or hostname of the other group member. Otherwise the server will not be able to connect to its partner. If the client_whitelist values are specified and the rtvdata servlet is used data server belongs to a redundant server group for failover, be sure to specify a client_whitelist entry for the address or hostname of the other group member. Otherwise the server will not be able to connect to its partner. For best performance use only IPv4 addresses and not hostnames in the client access lists if possible. This avoids the need to lookup a client's hostname from its address which can cause a delay. Use graylisting only when necessary, to avoid certificate management issues, delays of SSL handshaking when connecting, and the overhead of data encryption. TROUBLESHOOTING: The data server also a new option named client_access_debug that will print messages to the data server console as each client connection request is compared to the client lists. This can be useful for determining which list entries match and do not match a client connection. This can be specified on the data server command line as follows: -client_access_debug or in DATASERVER.ini as follows: client_access_debug true or in a properties file as follows: sl.rtview.dataserver.client_access_debug=true For troubleshooting SSL handshaking and certificate issues, set the following in RTV_JAVAOPTS before running the data server or client set RTV_JAVAOPTS=-Djavax.net.debug=ssl,keymanager or in an rtview properties file: sl.rtview.jvm=-Djavax.net.debug=ssl,keymanager Note that this option may produce a great deal of output.

Data Sources

JMX Data Source

17959: Support the canonical name of javax.management.ObjectName

RTView now correctly displays the contents of arrays of javax.management.ObjectName as separate rows in a single column table and as a semi-colon separated list when more than one columns shows. If the array is empty, then a blank cell is displayed. If the array has one or more elements, the JMX Canonical Name of the object is shown.

Display Server

18049: add option to disable initial browser resize for layout

The rtvdisplay servlet now supports a boolean property named SizeBrowserForLayout. The property can be set to false in rtvdisplay.properties to prevent the thin client from resizing Internet Explorer to match the full size of the layout when it loads a panels file. For example: SizeBrowserForLayout=false If the SizeBrowserForLayout property is not specified in rtvdisplay.properties then its value defaults to true. However, in all browsers other than Internet Explorer, the thin client always behaves as if SizeBrowserForLayout = false. Also, in recent versions of Internet Explorer if more than one tab is open it will always behave as if SizeBrowserForLayout = false.

General

17563: datasource ini files with defaults now removed more consistently

In previous releases, data source initialization files that were reverted to default options were sometimes not removed when the options were saved. This has been fixed.

Java Version Dependencies

18114: Table columns with Java 1.7

A problem has been fixed in obj_table02 when using Java 1.7 that caused the column header text to be shifted slightly down and right, and obscured the bottom border of the column header.

Object Library

Bar Charts

18112: Fixed outline on bargraph legend if legendBgGradientMode = None

In releases 6.0.2 and 6.0.3, if the legendBgGradientMode property on obj_bargraph is set to None then no outline is drawn around the legend. This is fixed so that a 1 pixel outline is drawn around the legend using the color specified by outlineColor, as expected.

Control Objects

18132: defaultButtonFlag no longer broken in Viewer

The defaultButtonFlag property on obj_c1button does not work in the Viewer in releases 6.0.0 through 6.0.3. If the Enter key is pressed while a popup window is opened containing a display in which a button has defaultButtonFlag = true, the button's command should be executed. Instead the button just flickers and the command is not executed. This is fixed.

18157: Tree node status now updated if valueTable has column filter

In previous releases, if the tree control's valueTable property was attached to a local data table with a column filter, the status icons of the tree nodes were not always updated to reflect changes in the data table. This is fixed.

Version 6.0.3 Release Notes

Alerts

17921: Option to renotify when alert severity increases

RTView alerts have been enhanced with 2 new options for what happens when an alert's severity changes: 1. In the Alerts tab of the Application Options dialog, the Unacknowledge Alerts on First Severity Change option has been changed to Unacknowledge on Severity Change Mode. By default it is None. If set to First Severity Change, when an acknowledged alert's severity changes the first time, the alert will be unacknowledged. This is the same behavior that happened in the previous release if the Unacknowledge Alerts on First Severity Change checkbox was selected. When set to All Severity Increases, when an acknowledged alert's severity increases, the alert will be unacknowledged. When an alert is unacknowledged, the alert will start renotifying again if the reNotificationMode is configured to do so. It also means that if the condition meets the specified reNofifyOnSevChangeMode property on the alert, it will renotify once regardless of the reNotificationMode. This unacknowledge action is not tracked in the Alert Action Audit Table since it is not a user action. When running against application options set from an older version of RTView, the Unacknowledge Alerts on First Severity Change value will automatically be converted to the correct value for Unacknowledge on Severity Change Mode so that the application behavior will not change. 2. The limits, multi-state and event alerts reNotifyOnFirstSevChangeFlag property has been changed to reNotifyOnSevChangeMode. By default, it is set to None. If set to Renotify on First Sev Change, the alert will renotify when the severity of the alert changes the first time. If set to Renotify on All Sev Increases, the alert will renotify every time the severity of the alert increases. For both Renotify on First Sev Change and Renotify on All Sev Increases, the alert renotification will only occur if the alert has not been acknowledged or if the Unacknowledge Alerts on First Severity Change application option is enabled. The renotification will execute the reNotificationCommand if configured, otherwise it will execute the alertCommand. Note that the severity is only updated on acknowledged alerts if the Update Severity on Acknowledged Alerts application option is selected. When running alerts created with an older version of RTView, the reNotifyOnFirstSevChangeFlag will automatically be converted to the correct value for reNotifyOnSevChangeMode so the alert behavior will not change. When selected, when an acknowledged alert's severity changes the first time, the alert will be unacknowledged. This means that the alert will start renotifying again if the reNotificationMode is configured to do so. It also means that if the reNofifyOnFirstSevChangeFlag is selected for the alert, it will renotify once regardless of the reNoficationMode. This unacknowledge action is not tracked in the Alert Action Audit Table since it is not a user action.

Common Server Support

17996: Added troubleshooting mbean to servers

The data server, display server, and historian support a new MBean that provides status information that can be useful in detecting and troubleshooting an unresponsive server. The MBean name is RTView:name=Troubleshooting It defines the following attributes: - LastUpdateTime : The time at which the server's main update timer most recently fired. In a healthy server, this time will change on each update interval (default 2 seconds). If the time stops changing for an extended period, it indicates that the timer thread has stalled or terminated. - DeadlockCount: The count of deadlocked threads. In a healthy server the count is always zero. This attribute is only updated every 30 seconds, to reduce overhead. The jstack utility can be used to obtain more information about the deadlocked threads. - UncaughtExceptionCount : The count of uncaught exceptions thrown since server started. In a healthy server the count is always zero. An uncaught exception will terminate the thread that threw it. - UncaughtExceptions: A table of the server's uncaught exceptions listing the type, time, executing thread, and code location for each exception. (For each excpetion, a stack trace is also written in the server's log file)

Customization

17923: Typos in custom user manager and dbprops

A few minor errors in the docs for the custom user manager were corrected.

Data Historian

17582: Historian now attempts to reconnect to database in batch mode

If batch mode is enabled in the historian and the database connection is lost, the historian will now attempt to reconnect periodically.

Data Server

17581: rtvquery servlet accepts primary & backup data server

The rtvquery servlet now supports a backup data server connection. The backup data server connection is specified by editing %RTV_HOME%\servlets\rtvquery\rtvquery.properties and adding a line as follows: DataServerBackup=host:port where host:port are the hostname and port number of the backup data server. After editing the file, run the make_war script and redeploy the rtvquery.war file.

17587: persistCaches should support allowDuplicatesInHistoryFlag

If a cache is configured with allowDuplicatesInHistoryFlag = false, then the data server will not send duplicate rows from the cache's history table to a historian client that was run with the -persistCaches:true option. In prior releases, the allowDuplicatesInHistoryFlag was ignored by the data server when it sent cache history rows to the historian so duplicate rows could still be stored into the database table.

17838: GmsTimer thread stalls if data server connection is slow

In prior releases, function updates could be delayed by a slow data server connection. This is fixed.

17973: New option to prevent a deadlock due to stalled client

The data server supports a new option to prevent a deadlock condition that can occur in abnormal situations. The new option is: -client_write_timeout:N or in a properties file: sl.rtview.dataserver.client_write_timeout=N where N is an integer value in seconds. If the server attempts to push data to a client that is connected via socket, and the corresponding write operation on the client's socket stalls for more than N seconds, the server will close the client's socket. This timeout avoids the potential for deadlock with other threads in the server that may be trying to access the same data table that was locked while being pushed to the client. A typical value for N is 60 seconds. The default is zero, which means the write to a client socket will never timeout. The write to the client's socket may stall because of networking problems, or a deadlock or other error in the client that prevents it from reading its incoming data.

17974: New option to terminate server after OutOfMemory exception

An option has been added to force the data server, display server, or historian process to terminate when an OutOfMemoryException occurs. This is intended for use in a HA deployment where a backup server is available, since otherwise the process may continue to run in a crippled state after the OutOfMemoryException occurs, preventing the backup from taking over. For example, if the data server experiences an OutOfMemoryException it may still remain connected to its clients, preventing failover, but may stop pushing any data to the clients. Note that the server is not restarted automatically by this option. The server would need to be restarted manually. The option is specified on the command line as follows: -exit_on_out_of_memory or in a properties file (for the data server in this example): sl.rtview.dataserver.exit_on_out_of_memory=true If the option is not specified, the process will continue to run after an OutOfMemoryException occurs, as in prior releases.

17990: Removed possible deadlock when -log4j option is specified

A problem with the -log4j option has been fixed which sometimes caused a deadlock in RTView, if multiple threads tried to write log messages simultaneously.

Data Sources

Cache Data Source

17794: divide by zero exception if cache condenser is misconfigured

In prior releases, a divide-by-zero exception was thrown in the case where a cache was misconfigured with condenseRowsFlag = 1 and condenseRowsInterval = 0. This is fixed.

17845: Implement Once-only flag for Cache metdata attachments

The 'Update Once' option on cache data attachments to the RTViewDs meta tables is now supported. Previously the option could be set but it was ignored.

17847: extend-by-sql mishandles databaseName prop assigned to blank sub

The following problem has been fixed: If the databaseName property of a cache is set to a substitution whose value is set to '' in OPTIONS.ini or a properties file, and the cache's historyTableName property is non-blank, then in some cases an attachment to that cache's history table which has the Extend by SQL option checked never received any data. Now it behaves as though the databaseName is blank, in which case the default database name of RTVHISTORY is used in SQl queries to preload the cache's history table and for the Extend By SQL queries. In addition, if a cache's databaseName property is set to "__none", then the history preload and Extend By SQL queries are never performed for that cache, even if its historyTableName is non-blank. For consistency, the SQL data source will also ignore data attachments in which Database Name = "__none".

JMS Data Source

17398: New option to disable internal caching for jms messages

The JMS data source has been enhanced with a new Disable Data Caching option in the JMS Options tab of the Application Options dialog. The Disable Data Caching option allows you to disable the caching in the JMS data source so that listeners are only updated with the new rows instead of a combination of all rows for a topic. This option should be used when using JMS as the input to a cache file so that duplicate rows are not sent to the cache.

17807: New general jms options tab

The JMS data source has been enhanced to add a JMS Options tab to the Application Options dialog. This tab has 2 options: Maximum Message Count for Queue Browser: Enter the maximum number of messages that will be queried from a queue browser for any queue. Default is 100. Minimum Reconnect Time (seconds): Enter the minimum number of seconds that will elapse before attempting to reconnect to the server. Default is 30. These options are not new, but previously they were only settable from the command line.

Display Server

17698: 'Export table to html/excel' fails if column label has newline

A bug has been fixed which caused the "Export Table to HTML/Excel" feature to fail in the thin client if the table contained a column with a newline character in its label. The bug was introduced in 5.9.2.

17803: right-click-> drill down/command doesn't apply table subs in ff

In prior releases of Firefox, if the user right-clicked in a table cell and then clicked Drill Down in the popup menu, the table's drillDownColumnSubs were not set to the values in the clicked row, unless the user had left-clicked on the same row first . This is fixed.

17805: IE8 and older throw js error if invis control has tabIndex=1

In prior releases, if a display was opened in the thin client in Internet Explorer version 8 or older and an invisible control object had the lowest nonzero tabIndex in the display and therefore should have had the initial keyboard focus, a javascript error was thrown. This problem is fixed..

17922: Display server leaves imageio*.tmp files if pngcompress is used

The display server will no longer leave files named imageio*.tmp in the user's temp directory when the -pngcompress or -imagequality options are specified.

17971: rtvdisplay servlet throws NPE if string missing from properties

The rtvdisplay servlet no longer throws a NPE if the rtvdisplay_strings.properties files is missing any of its expected entries.

17982: Fixed bogus error "No display name specified" in popups

A problem has been fixed which sometimes caused a bogus message "Error: No display name specified" to appear in popup displays in the thin client, in Internet Explorer.

Drill Down

17757: execute left-click action on right-click before showing popup

The table object (obj_table02) has been enhanced with a new property, rightClickActionFlag. When this flag is selected, the action that is performed on left-click (drill down or execute command) will execute before the popup menu is shown. This is useful when you have command string configured to set substitutions in the current window and the drill down target to drill down using those substitutions. In that case, the command is executed when you left-click and when you right-click so the substitutions are guaranteed to be set before you select Drill Down from the popup menu. This option should not be used if the left click is configured to drill down to another display. Limitation: This property is ignored in the thin client on iOS Safari (iPad/iPhone).

17777: Selected item in nav panel shouldn't update after dd in popup

In a panel layout in the viewer, the highlighted node in a tree/accordion navigation panel will only be updated to reflect a drilldown to a different display in the main panel. In previous releases, the highlighted node was also updated after a drilldown in a popup panel, which was incorrect behavior.

Functions

17747: Setsub function no longer throws NPE if sub is used upstream

The following problem has been fixed. In a function chain, if a setsub function F1 modifies a substitution that is used in data attachments that are inputs to functions upstream of F1, a null pointer exception may be thrown when F1 is evaluated. This symptom was observed in the OCM viewer client, with the following stack trace; Exception in thread "GmsClientDispatcherThread" java.lang.NullPointerException at com.sl.gmsjrtview.GmsRtViewDataObject.applyDataToListeners(SourceFile:466) at com.sl.gmsjrtview.GmsRtViewXmlDs.applyData(SourceFile:1068) at com.sl.gmsjrtview.GmsRtViewXmlDs.onData(SourceFile:956) at com.sl.gmsjrtview.GmsRtViewXmlSource.applyDataSet(SourceFile:1244) at com.sl.gmsjrtview.GmsRtViewXmlSource.dataUpdate(SourceFile:896) at com.sl.gmsjcs.GmsClientFO.gg$1(SourceFile:199) at com.sl.gmsjcs.GmsClient.gg$1(SourceFile:685) at com.sl.gmsjcs.GmsClient.gg$1(SourceFile:24) at com.sl.gmsjcs.GmsClient$b.run(SourceFile:864)

17970: Improved EVALR performance for rows with same values

The performance of the EVALR (Evaluate Expression by Row) function has been improved in the case where consecutive rows in the input table have the same values in the columns used in the expression.

Logging

17979: New options to avoid overwriting old log files

The -logfile option has been available for several rtview releases. It can be used to send the console output of an rtview application to a file, for example: run_dataserver -logfile:dataserver.log By default, if the dataserver.log file already exists, its previous contents are overwritten and lost. To address this issue, two new features are supported in this release. 1. A new option named -logappend has been added. It is used as follows: run_dataserver -logfile:dataserver.log -logappend In this case if the dataserver.log file already exists, the output from the new process will be appended to the file's previous contents. So, the -logappend option will preserve the previous contents of the log file. Note that over time the file could grow quite large, so its advisable to periodically rotate the file. On Linux, the logrotate utility can be used to automate this. 2. The existing -logfile option has been enhanced. If the filename contains the string DDDD (for upper case D characters) it will be replaced with the local date and time using the format yyMMdd_HHmmss. For example this command: run_dataserver -logfile:dataserver_DDDD.log if executed at on Sep 27 2012 at 3:55:43 PM would produce a log file named dataserver_120927_155543.log. In most cases, this will be a unique filename so the previous log file, if any, would remain unchanged. Note that over time a large number of log files could accumulate so its advisable to periodically purge the old files. On Linux, the logrotate utility can be used to automate this.

Object Library

17857: Fixed mouse over on composites, graphs, grids when panel offset

In previous releases, the mouse over did not work correctly for the following objects when the panel containing those objects was using a panel layout such that there were panels to the left or top of it: composites object grid icons graphs This has been fixed.

Composite Object

17961: Improved performance of subs handling on composites

The substitution processing code has been enhanced to speed up loading of a display that contains many composites when many top-level substitutions are defined.

Control Objects

17451: change default checkbox label props to match general objects

Some of the default values for the check box properties have been changed to match the defaults used by the objects on the General tab of the Display Builder: labelTextHeight = 9.6 labelTextFont=San Serif Bold labelTextColor = 16 (dark gray) fgColor = 16 (dark gray) This has been changed both in the Display Builder palette and in the rtv_defaults.rts stylesheet.

17754: labelTextColor on tree control no longer ignored by thin client

In the previous release, the thin client ignored the labelTextColor property on obj_c1tree, so the text on tree nodes was always black. This is fixed.

17790: New accordion control object

An accordion control object is now supported. The new object is named obj_c1accordion and appears on the Controls tab in the builder's Object Palette. The accordion control is very similar to the tree control (obj_c1tree) introduced in the previous release. But unlike the tree control, the accordion control displays the tree nodes as pushbuttons and only one tree branch can expanded at a time. The accordion control and tree control have the same set of properties except as noted below. The following properties are defined only by the accordion control: accordionColor: The color of the accordion nodes (button) that are not selected. accordionSelectColor: The color of the accordion node that is selected. accordionSelectTextColor: The text color for the accordion node that is selected. (All nodes that are unselected use labelTextColor). accordionClosedImage: The icon that appears to the left of the label for a closed (collapsed) accordion node. The default is a small right arrow. accordionOpenImage: The icon that appears to the left of the label for an open (expanded) accordion node. The default is a small down arrow. accordionWidth: The width in pixels for each accordion button. If a value of zero (the default) is specified, the width of each node will be computed automatically and may be different for each node. Specify a nonzero value if you want all buttons to have the same size, for a more uniform appearance. The following tree control property are not supported by the accordion control: nodeTypeProperties, nodeTypeColumnName: These properties are not needed for the accordion control because the only accordion node types are closed, open, and leaf and those are indicated by the accordionClosedImage icon, the accordionOpen Image icon, and no icon, respectively. As in the tree control, nodeStatusProperties can be used to assign a status icon to each node in an accordion control. The icon will appear inside the node's button, either to the left or right of the button label, according to the value of the nodeStatusIconPos property.

17791: Tree/accordion control selection updated after dd in main panel

In a panel configuration using rtvLayout, if a tree or accordion control object (obj1_c1tree or obj_c1accordion) is used in an rtvDisplayPanel named "nav" and a drilldown is performed that changes the display in the center panel, the first node in the tree/accordion control whose value matches the name of the display will be selected. This is useful to keep the correct node in the tree/accordion selected when a drilldown to another display is performed by clicking on an object in the display itself, rather than by clicking on a node in the tree. The rtvDisplayPanel that contains the tree or accordion control must be named "nav" to enable this feature. For an example of a panel configuration using this feature, see PANELS_treecon.ini or PANELS_accordcon.ini in RTV_HOME/demos/features. To run the example, type the following commands in an RTView command prompt: > cd %RTV_HOME%\demos\features > run_viewer -panelconfig:PANELS_accordcon.ini Then, in the accordion control click on the "Navigate Displays" button, and in the main display right click on the object labeled "Current Window" and pick "Drill Down" from the popup menu. This opens the display named "object_variety2" in the main window, which corresponds to the button labeled "Table Objects" in the accordion, which should now be visible and highlighted. Limitation: Note that only the display name is compared when determining which node should be selected, substitutions are not compared. If several nodes in the tree use the same display as their value, but with different substitutions (via drilldownColumnSubs), this feature will always select the first node in the tree whose display name matches regardless of the substitutions. This is similar to the current behavior of the rtvTreePanel and rtvAccordionPanel, except that the search for a match will only compare the display name not substitutions.

17792: Allow tree & accordion controls to attach to navtree.xml via xml

The XML datasource has been enhanced to support data attachments to xml files that use RTView's navtree.xml format. This enhancement will allow the RTView tree control and accordion control objects to be populated by attaching to navtree.xml In previous releases, the XML format used by navtree.xml files has only been supported by the tree and accordion navigation panels (rtvAccordionPanel and rtvTreePanel) in an rtvLayout panel configuration. Now, the XML datasource can parse a navtree.xml file and convert it into a table in the "row-node" format, accepted by the tree and accordion control objects (obj_c1control and obj_c1accordion), which can be used on an rtview display. See the documentation for the tree control for more information on the row-node table format. The table created by parsing a navtree.xml file will be given a data key of "navtree", which should be specified in the Data Key field of the Attach to XML Data dialog. The table will have one row for each node that is defined in the navtree.xml file. The table will contain the following columns: Node ID: An unique integer assigned to a tree node Parent ID: The ID of the node's parent, or blank if the node is a top-level node. Label: The value of the node's "label" attribute. Display: The value of the node's "display" attribute. Subs: The value of the node's "subs" attribute (a string containing sub:value pairs, separated by spaces). Typically, the valueTable property of a tree control or an accordion control would be attached to the navtree table, and the control's valueTableFormat property would be set to Row-Node. Then the column names listed above would be specified as values for other properties on the control as follows: nodeIdColumnName = Node ID nodeLabelColumnName = Label parentIdColumnName = Parent ID uniqueNodeIdFlag = <checked> valueColumnName = Display For an example of an accordion control configured in this manner, use the Builder to examine the display named accordcon.rtv in RTV_HOME/demos/features. To see the working example, type the following commands in an RTView command prompt: > cd %RTV_HOME%\demos\features > run_viewer -panelconfig:PANELS_accordcon.ini In addition to the columns mentioned above, the navtree table's Subs column can also be used to configure the drilldownColumnSubs property of a tree/accordion control. In the Drill Down Column Substitutions dialog, find the row for Column Name = Subs, and in the Substitution String column enter the string __parse (note: there are 2 underscores in the prefix), that is: Column Name Substitution ------------ ------------ Subs __parse This tells RTView to parse the string found in the Subs column for the select tree node, which is expected to contain one or more sub:value pairs, separated by spaces. For example, if the Subs column contains this string: $sub1:abc $sub2:xyz and if the tree control's drilldownColumnSubs is configured as described, then on a drilldown from the control the $sub1 and $sub2 substitutions will be assigned the values abc and xyz respectively.

17989: Node status propagation now works for valueTableFormat=Row-Node

In prior releases, if a tree or accordion control had its valueTableFormat set to Row-Node, the node status propagation feature did not work. The status of leaf nodes was not propagated up to its ancestor nodes in the tree/accordion. Also the nodeTypeColumnName property (tree control only) was ignored if valueTableFormat=Row-Node. Both problems are fixed.

17994: rtv(Tree/Accordion)Panel now displays Japanese chars

Japanese characters are now displayed correctly in the rtvAccordionPanel or rtvTreePanel in the thin client. Note that the navtree.xml file that defines the tree/accordion labels must use UTF8 encoding if it contains Japanese characters.

Heatmap

17943: adjustSizeForLabelFlag refined to apply a smaller adjustment

The adjustSizeForLabelFlag has been enhanced to apply a smaller adjustment. The old algorithm made a much larger adjustment to the small nodes in the heatmap and this often made the relative sizes of the nodes incorrect. The new algorithm applies a much smaller adjustment, which works well when the nodeLabelNestDepth is 1. When it is greater than one, the smaller adjustment does not always work. When the nodeLabelNestDepth is greater than 1, RTView evaluates whether or not the new algorithm will work and if not it uses the old one. To use the old adjustSizeForLabelFlag algorithm for all cases, use the following command line option: -hmuseoldadjust

Object Grid

17858: Mouse over no longer shows for clipped object grid items

In previous releases, the mouse over would show for items outside the visible extent of the object grid. This has been fixed.

Tables

17746: Support copying text from table cell to clipboard in IE

An item labeled 'Copy Cell Value' has been added to the context menu in the thin client, when using Internet Explorer (IE). This item allows the user to copy text from a table cell to the system clipboard by right clicking in the cell and then picking 'Copy Cell Value' from the menu. If the selected cell contains multiline text, each newline will be converted to a tab. If the selected cell displays an image, the underlying text value will be copied. The new menu item is available only in IE. Other browsers do not allow applications to write to the clipboard. (In those browsers, the text in a cell can be selected by dragging across the text and then pressing Ctrl+c). In IE, the copy will fail if the security option "Scripting: Allow programmatic clipboard access" is disabled in the security level that applies to the thin client's URL. The IE security level is configured on the Security tab of IE's Internet Options dialog.

Platform Support

17299: run_*.bat scrips fail if JAVA_HOME contains parentheses

In prior releases, the various RTView run_*.bat scripts would fail on Windows if JAVA_HOME specified a path that contained parentheses, which is the case when a 32 bit version of Java is installed on 64 bit Windows. This is fixed.

Version 6.0.2 Release Notes

Alerts

13676: New Unacknowledge Alert command

The Alert data source has been enhanced to support a new Unacknowledge Alert command. This command takes one argument, the alert id. The alert id can be a single id or a semi-colon (;) delimited list of ids. When an alert is unacknowledged, the renotification command will start back up again and the Severity and Count fields in the alert table will start updating again. This command is tracked in the Alert Action Audit table as an Event Management alert with the alert id being the Target value.

17596: Alert update time column added to alert table

The Alert Table has been enhanced to include a new column: Row Update Time The column contains the last time any column in that row was last updated. Note that this is different than the Last Update Time column which lists the last time the value or valueTable on the alert received a data update. By default, the Last Update Time and Count columns are not tracked by the Row Update Time. If you want the Row Update Time to include updates to those columns, use the -lutupdatesnewdata command line option. When using the New Data Only Alert Table as input to a cache, it is recommended that you set the timestampColumnName property on the cache to the new Row Update Time column. The RtvAlertTable cache in the selfservicealerts demo has been enhanced to use the Row Update Time for the timestampColumnName property and to limit the columns from the Alert Table that will be stored in history. Users upgrading from previous versions of RTView that are using alert persistence will need to add the Row Update Time to the alert persistence database table. The database schemas in RTV\dbconfig\alert_persist have been updated to include this column.

17618: New persistAlertDelayTime option added

The Alerts have been enhanced to support the new primary/backup server feature implemented in task 17598. A new option in ALERTOPTIONS.ini has been added to support this: persistInitDelayTime XX Where XX is the number of seconds to delay reading the alert persistence database after going from warm standby to hot. The default is 5 seconds and should be increased if the persistence database is slow or if a large number of alerts are expected to change on each update period. Even with HA, there are some limitations on persisting alerts. Some alerts might not be persisted in the following cases: - The persistence database is down. In this case, the alerts cannot be written to the database or read from the database. If a server goes down and the backup takes over while the database is down, persisted alerts will not be read into the backup server. The same thing will happen if persistence is using a Persistence Data Server which is down during fail over. - The persistence database is slow. In this case, all of the alerts may not have been written to the database from the server that is shutting down before the server that is coming up can read them. Use the persistInitDelayTime to account for this. - The alert server is terminates in a non-orderly shutdown. Alerts are written out once per update period and once turning orderly termination. If there is a non-orderly shutdown, some alerts may not be written to the database yet. In the case where alerts are not persisted, the data server that is taking over will generate new alerts if the data is still in an alert state. It might also re-use ID's that were used by the data server that failed for new alerts.

17619: Enhanced performance for acknowledging thousands of alerts

The performance of the acknowledge alert command has been improved. Previously, when acknowledging a large number of alerts in a single command, this command executed very slowly.

17634: Improved performance of alert engine

The alert processing performance has been improved. This has included several enhancements. As part of this change, the Self Service Audit Table and Action Audit Table data attachments now only return the 500 newest rows of that table. To see more row, attach to the database table using an SQL data attachment. For better performance, the AlertEngineName and ID columns should be specified as the primary key for the alert persistence table. RTView will do this if it creates the table. If the table is created manually, be sure to specify the NOT NULL qualifier when creating those two columns, and then specify those columns as the table's primary key. For example: CREATE TABLE <alert persist tbl name> ("AlertEngineName" <type> NOT NULL, ... ,"ID" <type> NOT NULL, ...) ALTER TABLE <alert persist tbl name> ADD CONSTRAINT pk_alert PRIMARY KEY ("AlertEngineName","ID")

17643: Support empty string for set owner command

The Set Owner command on the alert data source has been enhanced to allow you to set the owner to an empty string.

17645: Check the Last Update Time before incrementing the Count

The alerts have been enhanced to check the Last Update Time before incrementing the Count value. In previous releases, if an alert was attached to a cache table, any time a single row in the table was updated, the Count column in the alert was incremented for all indexes, even if the value in the time_stamp column of the cache only changed for the one row. This enhancement checks the value of the Last Update Time before incrementing the Count. If the Last Update Time hasn't changed, the Count is not incremented. In order to set this up with the cache, include the time_stamp column of the cache in your valueTable data attachment. Also set the timeStampColumnName to the name of the time_stamp column from your cache. This will configure the alert to use the cache's time stamp for the Last Update Time and the Count will only be incremented if that time stamp has changed since the previous update. To go back to the previous behavior of incrementing the Count column even if the Last Update Time hasn't changed, use the following command line option: -ignorelutforcount:true

Common Server Support

17661: Support deploying RTView as a Windows Service on 64 bit

RTView has been enhanced so that the Display Server, Data Server and Historian can be run as a service on 64-bit Windows systems. In previous releases, running as a server was only supported on 32-bit Windows systems. Previously, these services run using JavaService version 2.0.10, but this has been replaced by AlwaysUp CLT. The following command line options are no longer supported for install_service: -serviceerr - The service now only supports a single log file for both stdout and stderr. By default, both stdout and stderr will be written to a log file named appName_out.log (ex. displayserver_out.log). You can override this using the -serviceout command line option. -overwritelogs - Logging is appended to the log file each time RTView restarts. When the log file size exceeds 5MB, the oldest 25% of the log file will be discarded. For better control over your logging, use either the -logfile or the -log4j command line options. See the documentation for more information on those command line options. For both of those options, the service will still output any information written to the console by 3rd party libraries to the log file specified by -serviceout. If UAT is enabled on your system, you will need to run install_service and uninstall_service as Administrator. To do this, right-click on the RTView Command Prompt in your Window's Start menu and select Run as Administrator. Use this command prompt to execute the install_service and uninstall_service commands. Some RTView applications use very long command line strings. If the command line is too long, the Window Services dialog will show an error "The stub received bad data" when you try to look at the properties of the service. In this case, you can look at the properties of your service in the Windows Registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Key where Key is the name of your service. Command lines with more than 10,240 characters cannot be installed as a service.

Data Server

17598: Support for primary/backup mode for data server

High availability (HA) support in the data server has been improved to allow more control over which server should run as the primary server by default and which should run as backup, in a group of two redundant servers. Only the primary data server will activate the cache and alert data sources. Previous releases also had support for redundant data servers: A data server could be started in standby:warm mode so that it would not activate the alert or cache data sources at startup. However, as soon as the first client connected to a standby data server, it would activate those data sources even if the other data server was still running. This meant that multiple instances of the alert data source could be active at the same time. With this enhancement, the backup server will not activate the cache and alert data sources as long as the primary server is up. If a client connects to the backup data server, the backup server will simply act as a proxy and route all of that client's requests to the primary data server. If the backup server detects that the primary server is down, the backup will leave standby mode and become the primary server and will immediately activate its alert and cache data sources (even if no clients connect to it). Later, if the default primary server is restarted, the backup server will return to standy mode and deactivate its local instances of the cache and alert data sources. For best performance, clients should be configured to try to connect to the primary server before the backup server. For example, if the default primary data server is A:5555 and the default backup server is B:5555, then each client's connection string to that server pair should be "A:5555,B:5555" or, if connections are made via the rtvdata servlet, "http://A/rtvdata,http://B/rtvdata" The default primary and backup servers can be identified by the "group" properties in each server's DATASERVER.ini file: 1. group_member - The hostname:port connection string of the other data server in this redundant group. If a hostname is specified without a ":port" then port number 3278 is assumed. Do not specify a URL for the rtvdata servlet. 2. group_priority - The value of this property is an integer value of 1 or more, with 1 being the lowest priority. The running server in the group with the highest priority will become the primary server. A larger number assigns a higher priority. For example, say that two redundant data servers are run on host A and host B, and the server on host A should normally run as primary with the server on host B as backup. In that case, the server's group_priority on host A could be set to 2 and the group_priority on host B could be set to 1. 3. group_timeout - The timeout (in seconds) that the backup server will wait for a connection or a response from the primary, after which it assumes the primary has failed. The default is 5 seconds. (Note that in most cases, if the primary server terminates or the host on which it is running is shut down, the backup server will detect this immediately). 4. group_initial_wait - The time in seconds that the server will wait at startup for a connection to the other server in the group. The default is zero. This property should only be specified for the backup server. A value of 30 (seconds) would be typical. This wait time can be useful in the situation where the primary and backup server are started at nearly the same time, and the backup server's initial attempt to connect to the primary server fails because the primary has not reached the point where it accepts connections. Without an initial wait, in that case the backup would become the primary at startup but then would be forced to resign shortly afterwards when the default primary server finished staring. If the group_member property is specified but group_priority is not, the group_priority defaults to 1. Note that 1 is the lowest priority. If the group_member property is specified then it is not necessary to specify the -standby:warm option. The server will remain in standby mode until its determined which server is the primary. Here are the contents of two DATASERVER.ini files for an example of two redundant data servers are run on host A and host B, and the server on host A should normally run as primary with the server on host B as backup, and both servers use port 3278. # DATASERVER.ini file for the default primary server, on host A port 3278 group_priority 2 group_member B:3278 # DATASERVER.ini file for the default backup server, on host B port 3278 group_priority 1 group_initial_wait 30 group_member A:3278 Note that all of the properties listed above can also be specified on the command line, for example: -group_priority:2 The following properties have been added to the data server's JMX manager mbean, to provide information about which server is currently running as primary. All of the properties are read-only: 1. Port (integer) - the data server's port number, 3278 by default. 2. PrimaryServer (boolean) - true if this server is currently the primary server in a redundant group, false if this server is currently the backup server in a redundant group. If the server is not in a redundant group, the value is always true. 3. ProxyFor (string) - if this server is currently a backup server (that is, if PrimaryServer is false) this property contains the host:port of the server that is currently the primary, to which this server will forward all client requests as a proxy. This property is empty if this server is currently the primary server.


Data Sources

Cache Data Source

17586: New property to specify data server to use for initial queries

A property named queryServerName has been added to the cache table definition object (obj_cache_table). This property defines the name of the data server that should be used to perform the initial sql query to preload the cache's tables and also to perform any extend-by-sql queries for data attachments to the cache. By default the value of the property is blank, which means that the sql queries are performed by the local application, as in prior releases. Note that sql queries are only performed if the cache's historyTableName or currentTableName properties specify a database table name.

17605: Avoid high frequency trimming of cache history table

To reduce overhead when the history table of a cache is large and new data is frequently applied to the cache, the history row limit and time range limit will not be enforced more than once every 2 seconds. This means that the history table may exceed its limits, for a brief time.

17660: historyTableName value of '' now treated as empty string

The following problem is fixed: If the historyTableName property of a cache is set to $sub1 and $sub1 is set to '' (a pair of single quotes) in a .ini file or a properties file, then that should be equivalant to setting the property to an empty string, which the cache should ignore. Instead, it tries to load the cache history by doing an sql query on a database table named '' which fails with an sql exception.

17667: %Full column in RTViewDs.Tables fixed for condensed hist

A problem has been fixed which caused the %Full column in the RTViewDs.Tables cache metadata table to always show NaN for condensed history tables.

17669: Row condenser no longer fails if indexed row stops updating

A problem has been fixed in the cache row condenser which could cause the history_condensed table of a cache to stop updating.

17795: RTViewDs.CacheObjectProperties shows subst string not value

A bug has been fixed that affected the RTViewDs.CacheObjectProperties meta table. It will now show the replacement value of a substitution string for a cache property that is set to a substitution, rather than the substitution string itself. For example, say the historyTableName property of a cache is set to $histTable and $histTable is set to MyDbTable. In prior releases the value shown in RTViewDs.CacheObjectProperties for historyTableName would be $histTable. In this release, the value shown would be MyDbTable.

17815: cache keeps history table if max rows = 0 and row condenser enab

If a cache has maxNumberOfHistoryRows <= 0 then no history table should be kept for that cache. However in prior releases if the cache also had condenseRowsFlag = 1 then the cache history table was kept, which was incorrect. This is fixed.

SQL Data Source

17666: Static sql query no longer runs more than once at startup

A problem in the SQL data source has been fixed which allowed a static query to execute more than once in certain startup conditions.

TIBCO Hawk Data Source

17326: Subscription processing moved to a separate thread

The TIBCO Hawk data source has been enhanced to move subscription processing out of the main update thread. In previous releases, this was done in the main update thread, which could cause the application to become unresponsive if a large number of subscriptions needed to be made at once or if an Hawk Agent was slow in returning the requested subscription. The subscription processing is now handled in a separate thread so that the application update thread is not blocked.

17327: Added subscription logging to RTViewDs

Two new RTViewDs methods have been added to the Hawk data source to assist in debugging agent and subscription problems. Both of these methods are expensive and should only be used for debug. They should not be included in standard user displays. Both of these methods ignore the Disable Data Caching application option and cache all of the data regardless of how that flag is configured. getAgentStatus - this method returns the following columns containing information about the agent: Display Name - The display name of the agent. Status - Alive: RTView has received an onAgentAlive event for this agent and it is currently active; Expired: RTView has received an onAgentExpired event and has not yet received another onAgentAlive event; Not Discovered - RTView is configured for this agent, but has not received an onAgentAlive event yet onAgentAlive Time - The timestamp of the most recent onAgentAlive event for this agent. onAgentExpired Time - The timestamp of the most recent onAgentExpired event for this agent. onAgentExpired Count - The number of onAgentExpired events RTView has received for this agent since startup. Data Received Time - The last time RTView received data from this agent. This may be subscription data or alert data. getSubscriptionStatus - this method returns the following columns containing information about the subscription: Agent - The display name of the agent Key - The key used internall to track this subscription. It contains the agent, microagent, method and listener information. Status - Pending: RTView has queued the subscription request, but it has not been processed yet; Active: RTView has processed the subscription; Cancelled: RTView has cancelled the subscription. Request Time - The time this subscription was requested. Create Time - The time this subscription was created. Create Length - The amount of time, in milliseconds, it took for Hawk agent to respond to the subscription request. Queue Length - The amount of time, in milliseconds, this subscription waited in the queue before RTView requested it from the agent. Data Received Time - The last time RTView received data for this subscription. Cancel Time - The time this subscription was cancelled. Cancel Reason - The reason this subscription was cancelled. No Listeners: There are no more listeners for this subscription; Microagent Removed: The microagent is not longer available; Agent Connection - RTView received an onAgentExpired event for the agent. For debug situations where you need to see these values over time instead of just the latest value, both of these tables can be attached to caches. For the getAgentStatus table, set the indexColumnNames on the cache to Display Name and for the getSubscriptionStatus table, set the indexColumnNames property on the cache to Key. In both cases, deselect the allowDuplicatesInHistoryFlag on the cache. Note that because both of these table are expensive you should not deploy caches containing this information in a standard deployment. They should be used in debug situations only as they will impact the performance of RTView.

Display Server

17608: Fixed memory leak associated with sessions

A memory leak has been fixed in the display server, which leaked a small amount of memory for each browser session.

17651: Fixed unstable position of tree control +/- icon

The following problem with the tree control in the thin client has been fixed: In IE8 or older versions, the horizontal position of the +/- icon on a non-leaf tree node in the tree control is unstable. (This is the icon that is clicked to expand/collapse the node). Sometimes it is positioned correctly just to the left of the node's folder icon, but sometimes it is incorrectly positioned along the left edge of the tree control. It wobbles back and forth when the mouse is moved over the tree nodes

17653: Display server no longer reopens display after panel resize

In the thin client, if the browser panel containing a display is resized and the resizeMode is set to scale or layout, the display server no longer reopens the display in the panel causing the display to revert to its initial state. However, this problem has not been fixed on the iPad because the fix had unwanted affects on table objects in displays using resizeMode = layout.

Drill Down

17105: Fixed problems in FFox with passing long sub strings

A problem has been fixed in the thin client that caused the display image to disappear if a drilldown set very long substitution strings on the display, in Firefox.

17637: Improved performance for large number of selected rows

In previous releases, drill down from a table with several thousand selected rows could be slow if the table was setting substitutions. This has been fixed.

17744: Allow attaching sub name to data in drill down target dialog

The Drill Down Target dialog has been enhanced to allow cells in the String column of the Drill Down Substitutions table to be attached to data.

Functions

17617: Max/Min Columns functions now work for Date type

The Min Columns and Max Columns functions have been enhanced to work on date columns. When using dates for these functions, both the First Column Name or Numeric Value and the Second Column Name or Numeric Value arguments must specify the name of a column of type date. These functions do not support entering a date string into either of those arguments.

17632: Improved performance of SortTable function on localized strings

The performance of Sort Table function when sorting on string columns has been improved.

17633: New "Use Fast String Compare" argument in SortTable function

An argument named "Use Fast String Compare" has been added to the Sort Table function. This argument can be set to 1 to obtain optimum performance when sorting a large table on a string column. If the "Use Fast String Compare" argument is set to 1, the java.lang.String.compareTo method is used to compare strings, which is fast but non-localized. If the argument set to zero, the java.text.Collator.compare method is used to provide a localized string sort, but the sort will be somewhat slower. By default, the argument is set to zero, for compatibility with previous version, in which the Sort Table function always performed a localized sort on strings. For example, say that a table contains a string column with 4 rows, as follows: ááá aaa bbb ccc Note that the first row contains accented lowercase A characters. If the Sort Table function is applied to this table with "Use Fast String Compare" = 0, the rows will be sorted into this order: aaa ááá bbb ccc Note that the row with accented lowercase A characters is next after the row with unaccented lowercase A's. But if the Sort Table function is applied to this table with "Use Fast String Compare" = 1, the rows will be sorted into this order: aaa bbb ccc ááá Note that the row with accented lowercase A characters is last. This is because the accented lowercase A character appears after all of the ascii characters in the Unicode characters set, which is the basis of the java.lang.String.compareTo method.

17664: $filterfield and $filtervalue are no longer set by default

By default, the $filterfield and $filtervalue substitutions are no longer set when the user performs a drilldown from a table object with a row filter defined on its valueTable data attachment, and the row name column in the table no longer includes the filterfield:filtervalue strings for each row. (The row name is visible only if the value of the rowLabelMode property on obj_table02 is > 0). Those features were rarely used and for performance reasons are now deprecated. However, if those features are required for existing displays, they can be enabled by specifying the option -rowfiltersubs when starting the builder, viewer, or display server. The option can also be specified as follows in OPTIONS.ini: rowfiltersubs true

17745: Convert Columns function no longer fails if string cell is null

The Convert Columns (TCVT) function no longer throws a NPE when converting a string column to a number (double, float, int, or long) if a cell in the column is null. Instead the null string is converted to a zero.

GmsTabularData

17635: GmsTabularData.newColumnSubset exception fixed

The GmsTabularData.newColumnSubset() method no longer throws an array bounds exception.

Local Variables

17639: Global var in main window can now be set if set earlier in popup

The following problem with global variables has been fixed: If a mapped global variable named $x was set via drilldown in a popup window, then $x could not be set by a drilldown in the main window until the popup window was closed. This occurred because the panel in the popup window immediately set $x back to its previous value.

Logging

17640: New display server option to truncate long subs in -verbose

The display server supports a new option -substracelim:N to limit the total number of characters of substitution name:values that the verbose output includes when tracing requests from the thin client. If no value is specified, the default is 1000. This prevents requests with very long substitution strings from quickly filling up the display server log. A value of 0 means that no limit will be applied to the subs listed by -verbose, as in previous releases.

Object Library

17607: Error handling for scales improved

The error handling on all of the objects on the scales tab has been enhanced as follows: 1. The valueHighAlarm and valueHighWarning are now allowed to equal the valueMin or valueMax. Previously, they had to be greater than valueMin and less than valueMax. 2. If the valueHighAlarm is greater than valueMax or less than valueMin, the valueHighAlarm will be disabled and the scale will draw without that threshold. An error will print to the console. Previously, this case caused the scale not to draw. 3. If the valueHighWarning is greater than valueMax or less than valueMin, or if valueHighWarning is greater than or equal to valueHighAlarm, the valueHighWarning will be disabled and the scale will draw without that threshold. An error will print to the console. Previously, this case caused the scale not to draw. 4. On the bullet scale, the compValue1 and compValue2 are now allowed to equal the valueMin or valueMax. Previously, they had to be greater than valueMin and less than valueMax. 5. On the bullet scale, if the compValue1 or compValue2 is greater than valueMax or less than valueMin, that threshold will be disabled and the scale will draw without that threshold. An error will print to the console. Previously, this case caused the scale not to draw.

17665: Thresholds on bar scale now draw correctly when valueMin != 0

In previous releases, the bar scale did not calculate the threshold ranges correctly when valueMin did not equal 0. This has been fixed.

Charts (General)

17574: New outlineColor property for 1-pixel black outline

A new property named outlineColor has been added to most objects on the Graphs palette. The property sets the color of the 1 pixel outline rectangle drawn around the legend area and each color swatch in the legend. The property appears in the Legend category and was added to the following objects: obj_bargraph, obj_legend, obj_pie, obj_radar, obj_trendgraph02, obj_stockchart, obj_xygraph. On obj_bargraph, obj_trendgraph02, obj_stockchart, and obj_xygraph it sets the color of the 1 pixel outline rectangle drawn around the plot area. On obj_bargraph it also sets the color of the 1 pixel outline drawn around each bar. The default value is black (color 7). In prior releases the color was black and was not configurable. The property was not added to obj_statushistory since the existing gridColor property fulfills the the same purpose. The objects on the Fx Graphs palette were not affected by this change.

Control Objects

17652: New initialExpandDepth property added to tree control

A property named initialExpandDepth has been added to the tree control (obj_c1tree). This property specifies the depth to which nodes should be automatically expanded (opened) when the tree is populated. All non-leaf nodes at a depth that is less than or equal to initialExpandDepth are expanded automatically. When calculating node depth, the root node has a depth of zero. (All trees have a root node but it is visible only if the rootNodeLabel property is set). The default value of initialExpandDepth is zero, which means that only the root node is expanded automatically. Use this property with caution on large trees, since the automatic expansion of a large number of nodes can cause slow performance. Changing the value of initialExpandDepth from a larger value to a smaller value will have no effect until the display containing the tree is reopened.

Tables

17658: Fixed table column resize problems with Firefox 12.0

A problem has been fixed that affected table objects in the thin client in Firefox 12. When resizing a table column by dragging its edge, the resize behavior would sometimes continue even after the mouse button was released.

Viewer - Multi-Panel Frameworks

17654: Main panel refresh after drilldown in other panel (thin client)

In a multi-panel configuration, the thin client will now refresh the display in the panel named "main" panel after a drilldown is performed in any other panel. This is useful in cases where a drilldown or control action in another panel sets a global variable that affects the display in the main panel. Prior to this enhancement, the display in the main panel was not updated until the next scheduled refresh of the thin client. The panel must be named "main" in the PANELS.ini file for this enhancement to be effective. Panels by any other name will not be refreshed until the next scheduled refresh of the thin client.

Version 6.0.1 Release Notes

Alerts

17433: Editing enabled for Warning/Alarm Levels in Tabular Alert Admin

In the previous release of the Self Service Alerts demo, the Warning Level and Alarm Level fields in the Tabular Alert Administration page were not enabled in the thin client. This has been fixed.

17445: TIME_STAMP column in audit tables now timestamp type

The Alert Action Audit Table and the Self Service Audit Table have been enhanced to use a Timestamp type instead of a String type for the TIME_STAMP column. Users upgrading from a previous release of RTView that use either of these tables will need to modify their table schemas so that the TIME_STAMP column uses the correct timestamp type for their database. For example, in MySQL the following SQL statement will modify the TIME_STAMP column: ALTER TABLE AUDIT_TABLE ALTER TIME_STAMP DATETIME


17447: Option to update sev on acknowledged alerts

RTView Alerts have been enhanced to support an option to update the severity of acknowledged alerts. Three of the alert types support changing the severity of an existing alert: Limits - If the skipDuplicateAlertsFlag is selected, the severity of an alert will update (e.g. valueHighWarning to valueHighAlert) without multiple alerts being activated. That is, only the highest (or lowest) alert will be activated when the input value exceeds both high (or low) thresholds. Multi-State - If the skipDuplicateAlertsFlag is selected, the severity of an alert will update without multiple alerts being activated. That is, only the highest severity alert will be activated when the input meets multiple conditions. Event - If the valueTableMap contains a mapping to the Severity, the severity of an alert will update whenever the mapped column changes. In previous releases, once an alert was acknowledged, the severity of that alert would no longer update. A new option, Update Severity on Acknowledged Alerts, has been added to the Alerts tab of the Application Options dialog. By default, this option is turned off so the behavior of existing applications will not change. If this option is selected, the severity of acknowledged alerts will update if the severity changes.

17448: Option to renotify when alerts change severity

RTView alerts have been enhanced with 2 new options for what happens to an alert the first time it's severity changes: 1. In the Alerts tab of the Application Options dialog, the Unacknowledge Alerts on First Severity Change option has been added. By default it is off. When selected, when an acknowledged alert's severity changes the first time, the alert will be unacknowledged. This means that the alert will start renotifying again if the reNotificationMode is configured to do so. It also means that if the reNofifyOnFirstSevChangeFlag is selected for the alert, it will renotify once regardless of the reNoficationMode. This unacknowledge action is not tracked in the Alert Action Audit Table since it is not a user action. 2. The limits, multi-state and event alerts have a new property, reNotifyOnFirstSevChangeFlag. By default, it is off. If selected, the alert will execute the reNotificationCommand if configured or the alertCommand when the severity of the alert changes the first time if the alert has not been acknowledged or if the Unacknowledge Alerts on First Severity Change application option is enabled. Note that the severity is only updated on acknowledged alerts if the Update Severity on Acknowledged Alerts application option is selected.

17467: Duplicate updates on Alert Table New Data Only attachments

In previous releases, duplicate updates were sometimes sent to New Data Only listeners for the AlertTable for multi-state and limits alerts with the skipDuplicateAlertsFlag turned on. This has been fixed.

17481: index override alert enabled flag no longer incorrect on Add

In the previous release, the Add button on the Tabular Alert Administration sometimes saved an incorrect value for Alert Enabled. This has been fixed.

17506: SSA Alert Settings table connection status now stable

In RTView 6.0.0, the Connected status of the Self Service Alert Settings table sometimes incorrectly toggled between true and false. This has been fixed.

17519: New option for accessing Action Audit db through Data Server

The Alert data source Alert Action Audit feature has been enhanced to support using a data server for access to the action audit database table. To use this feature, specify the name of a named data server connection in the Alert Action Audit Data Server field on the Alerts tab of the Application Options dialog. If specified, this named data server connection will be used for reading and writing to the specified Alert Action Audit Database Table.

17521: SSA now correctly handle enabledFlag=false on tabular alerts

In previous releases, there was an error in the processing of the enabledFlag for tabular alerts in Self Service Alerts. If the enabledFlag for an alert was false, the alert was disabled regardless of the enabled value in the Alert Settings Table. This has been fixed.

17534: Historian removed from alert persistence

The alert persistence feature has been enhanced for easier configuration. In previous releases, alerts were persisted via the Historian and required an RtvAgent to send the alerts from the alert engine to the Historian. Now, the alert engine persists the alerts to the database directly or via a data server. The Historian and RtvAgent are no longer required. The following options have been removed from the Alert Persistence Application Options and are no longer supported: Agent Name Agent Connection The Alert Persistence options have also been removed from the Historian and are no longer supported. The following options have been added to the Alert Persistence Application Options: Alert Engine Name - Unique identifier for this alert engine. Multiple alert engines can persist their alerts to the same database, so this value allows the alert engine to restore only alerts for this alert engine in the case of fail over. Data Server - The name of a Named Data Server connection to use for reading and writing alerts to/from the database. This is optional. SQL Response Time Out (seconds) - The timeout for querying alerts from the database. This is the amount of time RTView will wait for a response from the database query to get the persisted alerts. If your database connection is slow, or if you are using a data server to get your persisted alerts and its connection is slow, you should increase this value. Note that RTView blocks while waiting for this query to return. Create Database Table If Not Found - If true, RTView will attempt to create the alert persistence database table if it isn't in the database. In order to support this change, the persistence database table schema has changed as follows: The AgentName column has been renamed to AlertEngineName. Customers upgrading from a version previous to 6.0.1 must do the following: 1. Either delete the persistence table in the database and allow RTView to recreate it for you or rename the AlertEngineName column to AgentName. 2. In Application Options->Alert->Alert Persistence, fill in the Alert Engine Name to be the same value as you previously used for Agent Name 3. If you are not using the HISTORIAN for anything other than to persist alerts, you no longer need to run the Historian.


17548: Alert name and index added to action audit table

The Alert Action Audit feature has been enhanced to store more data to the database. For actions of type Event Management, the Alert Name and Alert Index will be stored to the database. The database table schema has changed to include the following columns immediately following the VALUE column: ALERT_NAME (String) ALERT_INDEX (String) The ALERT_INDEX will be empty if the alert is scalar. Both the ALERT_NAME and ALERT_INDEX will be empty for actions of type Configuration Management. Users upgrading from a version of RTView previous to 6.0.1 must update their database to contain the new ALERT_NAME and ALERT_INDEX columns as described above.


17549: Persistence no longer fails with Self Service Alerts

In previous releases, alert persistence sometimes failed when used in conjunction with self service alerts. This has been fixed.

17556: RTV\dbconfig\alert_persist extraneous file removed

In previous releases, the RTV\dbconfig\alert_persist directory contained an extraneous file named '. This file has been removed.

17561: New Data Only listeners are no longer updated twice

In previous releases, Alert data attachments with the New Data Only flag selected would get duplicate updates. This has been fixed.

17562: Synchronization problems in alert evaluation fixed

In previous releases, the alerts had a synchronization problem such that if one thread was updating the rowEnabledTable or threshold table at the same time another thread was evaluating alerts, an alert could be cleared incorrectly. This has been fixed.

17565: When alert persist db unavailable alerts no longer initialize

The initialization error handling for alert persistence has been enhanced. Previously, if the alert persistence database table was not immediately available on start up, alert initialization continued without loading in persisted alerts. Now, the alert data source will wait until the persistence Connection Time Out has expired before continuing with alert initialization. By default, the Connection Time Out is 60 seconds. You can override this on the Alert Persistence tab of the Application Options dialog.

17572: Time value is now persisted correctly

In previous releases, the Time value for persisted alerts was not applied correctly. Instead, the time the alert was restored was used. This has been fixed.

Builder

17376: Concatenate Columns function is now alphabetized

In previous releases, the Concatenate Columns function was listed out of alphabetical order in the Edit Function dialog. This has been fixed.

17377: Custom functions not found no longer causes bad rtv file saves

In previous releases, custom functions were not saved correctly if the custom function descriptor was not loaded. This has been fixed.

Builder - Options Dialogs

17378: Subsitutions list sorted in General Options

In previous releases, substitutions in the Application Options dialog were not presented in alphabetical order. This has been fixed.

17403: customds stored in OPTIONS.ini retained on resave

In previous releases, if a custom data source was store in the OPTIONS.ini, it would be lost when the OPTIONS.ini was re-saved. This has been fixed.

Commands

17504: Multiple Command dialog label fixed

In previous releases, the Define Multiple Command dialog showed the wrong label for the alert commands. This has been fixed.

Data Historian

17415: -rebuildtables can now take table names

It is now possible to specify specific database tables be rebuilt at Historian run time. e.g. -rebuildtables:Table1,Table2,Table3 Table names are case-sensitive and may not contain space characters.

17487: Historian now sets autocommit = false in batch mode

The performance of the Historian's batch mode has been improved. Batch mode is enabled by the "Cache Data" checkbox. See the documentation for more information.

17590: Redundant Historian crashes if agent datasource disabled

A bug has been fixed which causes the historian to crashes at startup if the historian was in a redundant historian group and the agent data source was not enabled.

Data Server

17335: Multi-Server commands and attachments now supported

A list of data server names can now be specified in the "Data Server" field of all data attachment dialogs and data source command dialogs. This makes it possible to configure a single data attachment or command that is directed to multiple data servers. This capability is referred to as a "multi-server attachment" or a "multi-server command". The list entered in the Data Server field should contain two or more data server names separated by semicolons, for example: Data Server: ds101;ds102 Each name in the list should match a data server specified in the Named Data Servers dialog (opened from the Data Server tab of the Application Options dialog) or __default for the default data server if any, or __none for the local RTView application itself (e.g. Builder,Viewer). Note that __default and __none begin with two underscore characters. Alternatively, a single asterisk can be entered in the Data Server field to specify all data servers, including the default data server and local application, if applicable. One or more substitution strings can also be entered in the Data Server field. If a list of data server is specified for a data source command, the command will be executed on each data server in the list. If a list of data servers is specified for a data attachment, the attachment will be directed to each data server in the list. For tabular data attachments, a column named "DataServerName" will be added as the first column of the table and will contain the name of the server from which the data was received. A multi-server attachment will receive data independently from each of the servers it specifies. So in most cases, it will be necessary to combine the tables received from a multi-server attachment into a single table. This can be accomplished in two ways: 1) The multi-server attachment can be applied to a local cache which has the DataServerName column specified as an index column. The current table of that cache will contain the combination of the tables received from all servers. (It may also be necessary to configure the cache row expiration features to remove defunct rows). 2) The multi-server attachment can be applied to the Table argument of an instance of the RTView function named "Combine Multi-Server Tables". This is a new function in this release, and has the following description: "Combine tables from a multi-server data attachment into a single table, using the DataServerName column as the index column. (A multi- server data attachment is one in which the Data Server field is set to * or a semicolon-separated list of Named Data Server names). The function takes the following argument: Table - The table to be combined with any previous result. It is assumed that the value of this argument will be supplied by a multi- server data attachment. A column named "DataServerName" will be inserted as column zero of the table. The column will be populated with the name of each data server from which a table has been received. When a data table is received from server named X, it is combined with the previous result table, replacing any existing rows from server X. The combined table is returned by the function, and is stored internally for use on the next update from any server specified in the attachment.

17357: Support recycling client connection numbers if limit met

The RTViewDataServer JMX MBean supports two new integer attributes: ConnectionRequestCount : the total number of socket connection requests received from clients ConnectionRequestFaliedCount : the total number of socket connection requests that failed, because of client/server version mismatch or non-RTView client The data server will recycle unused client connection numbers if it reaches its internal limit of 10,000. This can be an issue if client applications from RTView versions prior to 5.9 attempt repeatedly to connect to the data server.


17417: Better error reporting for port conflict

When the data server or display server cannot create a server socket because the port is already in use, the port number and the server's class name will now be indicated in the error message.

17474: NPE thrown by dataserver if pre-5.9 client connects

A bug has been fixed which could cause the data server to throw a null pointer exception and refuse any new client connections after repeated connection attempts from a client running an earlier and incompatible version of RTView.

17546: Client listeners metadata table supported by Data Server

The XML data source now supports attachments to a source named RTViewDs.Server, which provides information about all listeners that a data server is currently maintaining for all of its clients. The RTViewDs.Server source supports the following Data Keys: 1) listeners: This will display a table with one row for each unique data attachment for each client of the data server. The "Client ID" column displays the numeric ID of the client. The "Address" column shows the IP address of the client and the "Host" column shows the hostname of the client, if available, or simply "http" if the client is connected via the rtvdata servlet. The "Adapter" column shows the name of the RTView data adapter or data sources used in the client's attachment. The "Key" column displays the entire data attachment string. The "Listeners" column shows the total number of listeners for the attachment string. The "Pushed" column shows the time when data was most recently pushed from the server to the client. The "Seq" column shows the sequence number assigned to that data push. 2) cacheListeners: This will display a table with one row for each unique cache data attachment for each client of the data server. It contains most of the same columns as in the "listeners" table described above, plus additional columns for the most commonly used fields in a cache data attachment (Cache name, table name, columns, filter columns, filter values). The "Local" and "Adapter" columns are not specified since only client attachments for the cache data adapter are shown. The data server updates the RTViewDs.Server tables listed above every 10 seconds. The RTViewDs.Server source will not appear in the dropdown list of XML sources in the Attach to XML Data dialog, instead the RTViewDs.Server name must be entered manually in the XML Source field. The information provided by the RTViewDs.Server xml source is similar to the information provided by the RTViewDs xml source (The RTViewDs source is described in the Release Note for 16934). But there is an important distinction: The RTViewDs.Server source provides information from a data server about all listeners from all of its clients. The RTViewDs source only provides information about listeners that the current client (builder, viewer) has redirected to data servers.

Data Sources

CMDB Data Source

17312: Relationships moved to a separate database table

The CMDB data source has been enhanced to support a Relationship Table. This table contains all relationship information for Containers and Metric Sources. The name of the Relationship Table must be specified in the CMDB Application Options tab. The Relationship Table must have the following columns with the specified names and types in the order listed: ID1 (String) The name of the parent container. ID2 (String) The name of the child container or metric source. TYPE (String) The relationship type. Currently, only PC (parent-child) is supported. The Parent field has been removed from the Metric Source and Container tables. Customers using the CMDB that are upgrading from a release previous to 6.0 will need to do the following: 1. Create a Relationship Table as specified above. 2. For each row in their Container and Metric Source table where a parent value is listed, add a row to the relationship table where ID1 is the value in the Parent column and ID2 is the value in the Name column. 3. Remove the Parent column from the Container and Metric Source tables. 4. Specify the name of the Relationship Table created in step 1 in the CMDB Application Options.

Cache Data Source

17363: New listener to history_combo table now receives current data

A bug in the data server has been fixed which in some conditions caused an attachment to a cache's history_combo table to receive stale initial data.

17423: Column names now shown in the attach to data dialog

In the previous release, the Column Name dropdown list in the cache data dialog was not always populated from the data server. This is fixed. Another symptom of this problem, also fixed, is that queries made to the RTViewDs cache metadata tables via the rtvquery (REST) servlet would show stale data.

17465: Exception if cache with no timestamp has row expiration

In previous releases, if a cache was configured with a blank timestampColumnName and rowExpirationMode was not set to "Off", an ArrayIndexOutOfBoundsException was thrown. This is fixed.

JMS Admin Data Source (for TIBCO EMS only)

17414: Connection ID added to routes table

The Routes table in the EMS Administration Data Source has been enhanced to include a connectionID column. This column contains the connection ID of the route or 0 if the route is not connected.

JMX Data Source

17513: Allow 'security.SSL.trustedCAKeyStore' to be passed as jmx prop

The JMX Data Adapter now supports 'weblogic.security.SSL.trustedCAKeyStore' to be passed as JMX connection property.

17536: Fixed NPE thrown when mBeans send nulls in columnNames

A fix was made to the JMX Data Adapter for NullPointerExceptions in the console that appear if mBeans send over nulls in the columnNames array during processing.

SQL Data Source

17406: Lost connection to Sybase ASE now reported

In previous releases, RTView could not detect a lost connection to a Sybase ASE database server. This has been fixed.

17461: Check for lost connection when SQL command fails

If an sql command fails, RTView will test the database connection to see if the connection has been lost, and if so it will disconnect and reconnect and retry the command. In prior releases, a lost connection was only detected after an sql query failed.

17493: Corrected crash due to login to expired sybase account

In prior releases, if RTView connected to a Sybase ASE database using a valid username and password but the password had expired, a null pointer exception was thrown. This is fixed.

17544: SQL command to disable/enable connections

An SQL command can now be configured to disable or enable a database. When a database is disabled, RTView will not attempt to make any queries on that database or attempts to reconnect until the database is enabled again. When a database server needs to be shutdown for maintenance, the new command can be used to disable the database and avoid repeated connection attempts/failures from RTView. It can also be used to disable a database connection that has become unreliable, and then enabled again to make a new connection. To define an SQL command to disable a database named X, enter the following in the Define SQL Command dialog: Database Name: X SQL Command: rtvEnableDB=false Queries: (N/A, value is ignored) Note the the SQL command string must be entered exactly as shown, with no embedded spaces. To define an SQL command to enable a database named X, enter the following in the Define SQL Command dialog: Database Name: X SQL Command: rtvEnableDB=true Queries: (N/A, value is ignored) Note the the SQL command string must be entered exactly as shown, with no embedded spaces. To define an SQL command to disable a database named X and then immediately enable it again, enter the following in the Define SQL Command dialog: Database Name: X SQL Command: rtvEnableDB=false;rtvEnableDB=true Queries: (N/A, value is ignored) Executing a "rtvEnableDB=false" command has no effect if the database is already disabled, likewise for the "rtvEnableDB=true" command on an enabled database. The SQL RTViewDs.Connections table, which displays metadata about RTView database connections, now includes a column labeled "Enabled". The value in the Enabled column will be checked (true) for all database connections except for those on which the "rtvEnableDB=false" has been executed.

17545: SQL property timeout applicable to all queries

The SQL data source now supports a default timeout for all SQL queries. The default timeout can be specified with the following command line option: -sqlquerytimeout:NN The timeout can also be specified in OPTIONS.ini as follows: sqlquerytimeout NN In both cases, NN is the default timeout in seconds. If any query takes longer than NN seconds to complete, and the query does not have its own timeout specified via the rtvTimeout parameter (described in the Release Note for 15413), it will be aborted. The next execution of the query will be delayed for NN seconds or 2 minutes, whichever is less. Messages similar to the following will appear in the console window of the RTView application: ERROR: SQL query timeout after NN seconds; db=MyDatabase; query=<select * from MyTable>; *** done query, rows = -1, time = NN.nnn (NN.nnn), MyDatabase: select * from MyTable delayed by timeout:select * from MyTable

17559: Skip query with empty database name

If the database name specified in an SQL data attachment is an empty string the query will be ignored. In prior releases, the following error message was generated repeatedly: Unable to connect to database <>

Display Server

17395: Date chooser now initializes time correctly

When the date chooser (obj_c1datechooser) is activated with no selected date, the current day and time should be selected. In previous releases, the thin client version of the date chooser set the date to the current date, but set the time to midnight. This has been fixed.

17431: Deselect on multiselect table no longer mishandles substitutions

In previous releases, if a table object has multiSelectFlag=1 and the user deselects the only selected row, in some cases the thin client will mishandle the table's drilldown substitutions which can result in invalid data attachment strings that use those subs. This has been fixed. In addition, to be consistent with the Viewer behavior, deselection of the only selected row in the table will not trigger a drilldown.

17444: Extra SL logo in thin client panel layout after restart fixed

In previous releases, an extra SL logo would sometimes appear in the thin client demos using a panel layout, if the display server was restarted and the thin client page was not reloaded. This is fixed.

17463: Thin client no longer shows
for newline in column header

In release 6.0, the thin client displayed "
" in a table column header where a newline should have appeared. This is fixed.

17468: New option -pngcompress

A new option has been added to the display server to specify the desired compression level for png images. By default, png images are compressed as much as possible, which can be a cpu-intensive operation. On systems where the display server cpu usage is a bottleneck, it may be advantageous to lower the png compression level. This can be accomplished by the following command line option: -pngcompress:N The png compression level can also be specified in DISPLAYSERVER.ini as follows: pngcompress N In both cases N is a value from 1 to 9. The default value is 9 (maximum compression), which produces the smallest possible png image (in bytes) in order to minimize the image data transmitted to the client. Values less than 9 will require less cpu time to produce the png image, but the image will be larger. A value of 3 is a good compromise between speed and size. Note that the image creation time and size for each display refresh is shown in the display server console output if the -verbose option is specified at startup. As in prior releases, the display server will choose either png format or jpg format for each display, depending on which format produces the smallest image size in bytes. The size of jpg images is affected by the -imagequality option which is a value between 1 and 100, with 100 being the highest quality but lowest compression. The default imagequality is 75.

17542: Preserve table row selection in thin client across updates

The thin client will now maintain the selected rows in a table object when a data refresh occurs that changes the number of rows in the table. In prior releases, the row selection was cleared in that case. If the table object has the indexColumns property defined, then the index column values will be used to maintain the row selection, as described in the Release Note for 12468. If indexColumns is not defined, then the row selection is maintained by row number. This is also described in the Release Note for 12468.

Distribution

17404: encode_string utility corrected to work on Linux

The encode_string utility now works on Linux platforms.


17490: New jarsigning certificate (April 2015)

The certificate used in the signed .jars (RTV_HOME\lib\signed_jars.zip) has been updated and will be valid until April 2015.

17539: TSN requirement removed

Users are no longer required to provide the TSN (Tape Serial Number) when installing RTView. As such, the registration app (run_gmsregister) no longer includes a field for the TSN.

Functions

17372: EnsureColumns no longer creates NULL strings if no value

The Ensure Columns function will now always fill a new string column with empty strings, rather than null.

17373: Fixed performance issues with Delta Rows function

The performance of the Delta Rows function and the Delta Rows And Rate function has been improved to better handle data in which the set of index values is not fixed. Also, an additional argument has been added to both function to avoid continual growth of the internal table that is used to store previous column values for each index value. The description of the new argument is as follows: Row Expiration Time - To compute the delta values, an internal table containing the previous value for each index value is maintained. If a row in that table is not updated in the time interval specified, it is removed. Specify the interval in seconds or specify a value followed by m, h, d, for minutes, hours, or days. The default value is blank which means rows are never removed.

17374: GmsTabularData string columns now initialized with empty strings

Cells in string columns in data tables will now be initialized to an empty string rather than a null, to avoid null pointer exceptions in code that does not expect null values in string cells.

17387: GroupBy max function exception if null string in column fixed

A bug has been fixed in the GroupByTimeAndUniqueValues function which caused an exception to be thrown if the "max" operation was applied to a string column that contained one or more nulls.

17388: Evaluate Expression by Row now creates column if no data

In previous releases, the Evaluate Expression By Row function would not add the result column to its output table if the input table contained columns but no rows. Now the function will add the result column in that case.

17389: Filter by Patt no longer returns null if input table has 0 rows

In previous releases, if the input table to a Filter by Pattern function contained columns but no rows, the function returned null. This was incorrect. Now the function will return a table with the same columns as the input table, and no rows.

17394: GroupBy type count now creates column when used with other types

The functions "Group By Unique Values" and "Group By Time And Unique Values" will now automatically add a column named Count to the result table when the function is configured with multiple Group Type operations, the last being "count", and the number of data columns in the given Table argument is less than the number of operations.

17401: New Function ReplaceValuesRows

A function named Replace Value in Rows has been added. The function description is as follows: The Replace Value function replaces text in the input column with text from Replacement Values. Table - The input table. Column Name - The column containing the values to be replaced with associated text from the Replacement Values string and be output in the NewColumnName column. Result Column Name - The name of the column to be created. Replacement Values - String that contains pairs of values and replacement values separated by :'s. If any of the values or replacement values specified in Replacement Values contains a space or a colon, it must be enclosed in single quotes. Return Value If No Match - Determines what value is stored in the result column for a row with no match. If > 0 the original value from the input column will be used, otherwise the Default Value is used. Default Value - The string that is stored in the result column if there is no match and Return Value If Not Match is <= 0.

17402: MarkTimeGaps now converts long columns to double

The Mark Time Gaps function will now work properly with a column whose data type is long. In prior releases, it worked for double, float, and int columns but not long type columns.

17410: Result column name can be specified for GroupBy function

The "Group By..." functions have been enhanced to allow the name of the result column(s) to be specified. This is accomplished by adding a suffix of ":ColumnName" to each operation in the function's Group Type argument. For example, if the Group Type argument's value is "avg:Average Value", the average of the first data column in the function's input table will be stored in a column named "Average Value" in the result table. If there is more than one data column in the input table, then the average value of the Nth data column will be stored in a column named Average ValueN, starting with N=1 for the 2nd data column.

17412: Combine now returns empty table if both inputs contain no rows

The Combine function has been modified to return a table rather than a null in the case where both input tables have no rows, and to use all columns from both input tables even if one or both tables have no rows.

17488: Fixed exception in GroupBy function if index col missing

In prior releases, if the "Index Column Name(s)" argument to the GroupBy function included a mix of valid and invalid column names, an error message identifying the column name was printed to the console, but in some cases that was followed by an exception and stack trace. This has been fixed so that only the "Invalid column name" message appears.

17489: Function attached to undefined function will now update

The following problem is fixed: If a function F1 has an argument X that is attached to function F2 but F2 is no longer defined then F1 will never update. This can happen if F2 was deleted at some point after F1 was defined, or if F2 is defined in an include file that is no longer included by the display that defines F1. Prior to release 5.9.1, and now again in this release, F1 is evaluated with argument X set to null. A related problem was also fixed that prevented the Get Substitution function from updating if its Substitution String argument specified a substitution whose value was '' (an empty string).

17515: Drilldown branch now correct if functions stored in wrong order

The following problem has been fixed: A drilldown branch function may not return the expected value if the function relies on the results of other functions and the functions are stored in the wrong order in the rtv file. For example, say that F2 is used as a dd branch function and F2 has an input argument that is attached to the result of F1, but in the rtv file F2 appears before F1. In some cases, when the drilldown is performed the result of F2 used in the dd branch may appear as though F1 was never updated.

17516: Last Column Count added to function statistics table

The RTView function statistics table is available via JMX. That table now includes a columns that shows the number of columns contained in the most recent result for each function. The name of the new column is "Last Column Count". It appears just after the existing column named "Last Row Count", which shows the number of rows in the most recent result. Both columns will show zero for a function that returns a scalar result.


General

17393: Support for date and time string in ISO 8601 format

RTView will now accept a date and time string in ISO 8601 format. The format accepted by RTView is: YYYY-MM-DDThh:mm:ss.sZ where: YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) T = the separator indicating that time-of-day follows hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second Z = time zone designator (Z or +hh:mm or -hh:mm) The fractional second and the timezone are optional. All other fields are required or RTView will not parse the string. For example, this string is acceptable: 2011-10-22T12:34:56 This string is unacceptable because it omits seconds: 2011-11-22T12:34 The ISO 8601 format is automatically recognized by RTView. It is not necessary to add a format on the Date Formats tab of the options dialog. The format is formally described here: http://www.w3.org/TR/xmlschema-2/#dateTime ISO 8601 is described here: http://www.w3.org/TR/NOTE-datetime.

17418: Unique class names for each RTView server process

In prior releases, the RTView server applications (Historian, Data Server, Display Server, and Agent) all used the same java main class: GmsJRtvHistorian or, for daemon mode, GmsJRtvHistorianDaemon. This could be confusing when viewing a list of running java processes via jps, or jconsole, etc. In this release, each application has a unique main class, namely RTViewHistorian, RTViewDataServer, RTViewDisplayServer, and RTViewAgent. All of those new classes belong to the com.sl.gmsjrtvhistorian package. The class name will not change if the -daemon option is specified, but otherwise the -daemon option has the same affect as in prior releases. If it is desired to use the old class names for any reason, specify the -oldclassnames option when using the run_historian, run_dataserver, or run_displayserver scripts. Custom scripts that use the GmsJRtvHistorian or GmsJRtvHistorianDaemon classes to start an RTView server do not need to be altered. But, if desired, they can be altered to use the new specific class names instead. Note that the new classes use daemon mode by default, so if they are used in a custom script the -gui option must be specified in order to open the Historian or Data Server GUI. If the RTViewDataServer class is used in a custom script to launch the Data Server, it is not necessary to specify the -dataout or -socket option. If the RTViewDisplayServer class is used in a custom script to launch the Display Server, it is not necessary to specify the -display or -image option. If the RTViewAgent class is used in a custom script to launch the Agent, it is not necessary to specify the -dataout or -agent option.

17578: Improved NaN handling in obj_table02 and sorting

The behavior of obj_table02 regarding NaN ("not-a-number") values in a column containing floating-point values has been enhanced as described below. (Note that a column containing floating point values is either a column whose data type is defined as double or float, or whose data type is string but all of the strings in the column are either numbers or NaN). 1. A row with a value of NaN in the sort column will sort to the bottom in an ascending (increasing value) sort and to the top in a descending sort. In prior releases, the position of a row with a NaN value was not affected by the sort and rows adjacent to the NaN row could be sorted incorrectly. 2. A property named textForNaN has been added to obj_table02. This property can specify an optional string to be used to display NaN values in the table, for example "unknown". By default, the property value will be blank and NaN will be shown as a 'box' character, as in prior releases. Note that the textForNaN value only affects the text displayed in the table cell for a NaN value, it does not affect the column sort or the value assigned to a drilldown column substitution for the column.


GmsTabularData

17420: GmsTabularData.newColumnSubset exception fixed

The GmsTabularData.newColumnSubset() method no longer throws an array bounds exception.

Licensing

17567: KEYS file now created by run_gmsregister on LINUX

In 6.0.0 the run_gmsregister unix shell script did not pass additional arguments to the registration app, so the -writekey argument was not applied. This has been fixed.

Logging

17097: Support RTView logging with Log4J

Optional support for logging with Log4j was added.

17380: Error if designated log directory doesn't exist

In previous releases, if the log file specified by the -logfile command line option could not be created a stack trace was printed. This has been fixed so that an error message is printed instead.

Object Library

17263: New Dynamic Tree Control

Overview ========= A tree object is now supported for use on RTView displays. In the Builder, the tree object appears on the Controls tab of the Object Palette. The tree is populated from the contents of the data table attached to its valueTable property. Two table formats are supported for the valueTable, called the Row-Leaf format and Row-Node format. These are described later in this note. As with other controls, the tree control has an actionCommand property which can be configured to open a drilldown display, set substitutions, or execute a command in response to a user click on a tree node. As with other table-driven objects, the drillDownColumnSubs property can be configured to set substitutions to column values from the row in the valueTable that corresponds to the selected tree node. Each tree node can optionally display two configurable icons, one indicating the node's type and the other indicating its status. The type icon for each node can be determined either by the value of a column in the valueTable or by the node's position in the tree (e.g. a folder icon for a non-leaf node, a document icon for a leaf node). The status icon for a node is determined by the value of a specified column in the valueTable. optionally, the status of a child node can be propagated up to its ancestors. Row-Leaf Format for valueTable ============================== The format of the valueTable is indicated by selecting either Row-Leaf or Row-Node as the value of the tree's valueTableFormat property. The default format is Row-Leaf. The Row-Leaf format is intended for use when the valueTable property is attached to an indexed table, for example the current table of an indexed cache. In the Row-Leaf format, a leaf node is added to the tree for each row in the valueTable. The path to that leaf node (that is, the ancestor nodes of the leaf) is determined by the values in each of the table columns specified by the nodeIndexColumnNames property. If the valueTable is attached to the current table of an RTView cache, then the tree's nodeIndexColumnNames property would typically be set to the same columns that are specified as the cache's index columns. For example, say that a cache named Processes has two index columns named Server and PID, and the current table in that cache has the following rows: Server; PID ----------- A; 101 A; 105 A; 123 B; 100 B; 105 If a tree control's valueTable property is attached to the table shown above and the tree has valueTableFormat=Row-Leaf and nodeIndexColumnNames=Server;PID then the tree would contain 2 top level nodes, labeled A and B. Node A would have three child nodes labeled 101, 105, 123. Node B would have two child nodes, labeled 100 and 105. The structure of the tree is shown below. Note that there is one leaf in the tree for each row in the table. + A ... 101 ... 105 ... 123 + B ... 100 ... 105 Now say another index column named Site was added to the Processes cache and the current table now has the following rows: Site; Server; PID ----------------- NYC; A; 101 NYC; A; 105 NYC; A; 123 NYC; B; 100 NYC; B; 105 SF; A; 101 SF; A; 133 SF; B; 100 TYO; A; 107 TYO; C; 123 TYO; C; 278 If the tree's nodeIndexColumnNames=Site;Server;PID then the tree would contain 3 top level nodes labeled NYC, SF, and TYO. The NYC node would have two children labeled A and B, and the NYC/A node would contain three child nodes labeled 101, 105, 123. And so on, resulting in the following tree structure: + NYC ...+ A ...... 101 ...... 105 ...... 123 ...+ B ...... 100 ...... 105 + SF ...+ A ...... 101 ...... 133 ...+ B ...... 100 + TYO ...+ A ...... 107 ...+ C ...... 123 ...... 278 As shown in the examples above, the label string for a node at depth N is taken from the Nth column in nodeIndexColumnNames. So the labels for the top level nodes come from the first column in nodeIndexColumnNames (Site), the second level node labels come from the second column in nodeIndexColumnNames (Server), etc. If a different set of columns from valueTable should be used to provide the node labels, the names of those columns can be specified in the nodeLabelColumnNames property. Row-Node Format for valueTable ============================== In the Row-Node table format, there is one row in the table for each node in the tree, not just the leaf nodes. One column in the table contains an ID string for the corresponding tree node. That column is identified by the nodeIdColumnName property. Another column in the table contains the ID of the node's parent node. That column is identified by the parentIdColumnName property. Taking the first example tree shown above: + A ... 101 ... 105 ... 123 + B ... 100 ... 105 Using the Row-Node format, a table representation of this tree would be as follows: Node; Parent ------------ A; 101; A 105; A 123; A B; 100; B 105; B The entries represent an empty string, which indicates that nodes A and B have no parent, making them top-level nodes in the tree. Note that a node's ID string must be unique among all nodes with the same parent. Or, if the uniqueNodeIdFlag property is checked, then each node's ID string must be unique in the entire tree. By default, a node's ID string is used as the node label in the tree. If a different column in the table should provide the label, the name of that column can be specified in the nodeLabelColumnName property. Note that in the Row-Node format each branch of the tree can have a different depth, while in the Row-Leaf format all branches typically have the same depth (the number of columns specified in the nodeIndexColumnNames property). Icons ===== As mentioned above, each node can display a type icon and status icon. The type icon for each node is determined by the value of nodeTypeProperties. Clicking on nodeTypeProperties in the property sheet will open a dialog containing a table with two columns labeled "Node Type or Depth" and "Image". By default, the first row in the table has "non-leaf node" in the first column and a folder icon in the second column, while the second row has "leaf node" in the first column and a document icon in the second column. This means that, by default, all non-leaf nodes in the tree will use a folder image and all leaf nodes will use a document image as their type icon. The user can click in the Image column to select a different image to be used for the corresponding node type, or clear the Image column so that no icon is used for a particular node type. By default, the next five rows contain the numbers 0 - 4 in the first column. These rows allow a different icon to be assigned to nodes that appear at those depths in the tree, with zero being the root node. (Note: The root node is invisible if the rootNodeLabel property is blank). If an icon is assigned for a specific depth that icon assignment will override any assigned to leaf or non-leaf nodes. By default, the Image column for all of those rows is blank meaning that no specific icon is used for nodes at each depth, and the non-leaf or lead node icons are used. In the dialog, a "New" button appears below the last row. Clicking the New button allows the user to add a custom row to the table. If a column name has been assigned to the nodeTypeColumnName property, a dropdown list of the values from that column in the valueTable will appear in the "Node Depth or Type" column. The user can select a value and then in the Image column select the icon to use for all nodes that have that value in the valueTable row that corresponds to the node. If there is no nodeTypeColumnName, the user can type a string in the "Node Depth or Type" column and any node whose label matches that string will use the icon selected in the Image column. So, the type icon for node N is determined as follows: 1) If nodeTypeColumnName specifies a column name C, and the value of C in the valueTable row that corresponds to N is V, and there is a row in nodeTypeProperties that assigns alue V to image I1, then I1 will be used as the type icon for N. 2) Otherwise if the label of node N is XYZ and there is a row in nodeTypeProperties that assigns value XYZ to image I2, then I2 will be used. 3) Otherwise if the depth of node N is D and there is a row in nodeTypeProperties that assigns depth D to image I3, then I2 will be used. 4) Otherwise if N is a leaf and the leaf node image is I4 then I4 is used. If I4 is blank then no type icon appears. 5) Otherwise if the non-leaf node image is I5 then I5 is used. If I5 is blank then no type icon appears. The status icon for each node is determined by the value of nodeStatusProperties. That property is visible only if the nodeStatusColumnName property is non-blank. Clicking on nodeStatusProperties in the property sheet will open a dialog containing a table with three columns labeled "Status Value", "Image", and "Priority". By default there are no rows in the table so by default no status icons appear in the tree. If the user clicks "New" and then clicks in the Status Value column, a dropdown list appears containing all values in the node status column of the valueTable. The user can select a value and then an image that should appear as the status icon for each node which has that value in the status column. It is assumed that the status column values will be discrete values, so they are compared for equality. The value of the priority column is used to propagate a node's status information up to its ancestors so that the status icon shown for an ancestor node will correspond to the current highest status priority of all of its descendants. A priority value of zero is not propagated, all positive priority values are propagated. If a node has a type icon, it will appear to the left of the node's label. If a node has a status icon, it will appear either to the left or right of the node's label, according to the value of the tree's nodeStatusIconPos property. (The default value of that property is "Left"). If a node has both a type icon and a status icon, the type icon will always appear to the left of the status icon. For convenience, the nodeTypeProperties and nodeStatusProperties can both be attached to data. The nodeTypeProperties should be attached to a 2 column table and nodeStatusProperties should be attached to a 3 column table. Typically, an attachment to a static XML file that contained the appropriate tables would be used. The column names are not important. For nodeTypeProperties the first column should contain string values of "_node" (for non-leaf nodes), "_leaf" (for leaf nodes), or numeric values for depth, or string values that match the node labels or the values from the column in valueTable specified by nodeTypeColumnName. The second column should be the path to the png, gif, or jpg image. The default assignments are: _node, rtvTreeNode16.png _leaf, rtvTreeLeaf16.png For nodeStatusProperties the first column should contain string values that match values from the column in valueTable specified by nodeStatusColumnName. The second column should be the path to the png, gif, or jpg image. The third column should contain the non-negative integer priority value. Other Properties (with behavior unique to the tree control) ================ valueColumnName : This specifies the name of the column whose value should be assigned to the variable named $value when a node in the tree is clicked. If not specified, the label string of the selected node will be assigned to $value. Note the $value is the only substitution that can be used in the Display Name field of a drilldown command. mouseOverFlag: If checked, a tooltip will appear when the cursor is positioned over a node. The tooltip will contain the node's path (its label preceded by the labels of all of its ancestors), the node's status (if nodeStatusColumnName is specified), and its value (if valueColumnName is specified). execOnLeafOnlyFlag: If this property is checked, then the tree's actionCommand will be executed only when a leaf node is clicked. A click on a non-leaf node will just expand the node. Also, the mouseover tooltip will only appear for leaf nodes. rootNodeLabel: The label for the tree's one and only root node. If this is blank (the default), the root node is not visible. Limitations =========== In the Viewer: - Mouseover text is displayed only if the tree has focus. In the thin client: - The tree nodes' appearance, spacing, fonts, etc in the thin client may vary slightly as compared to the Viewer, and also may vary slightly between different browsers. - Cannot expand/collapse a tree node by double-clicking it, must click on +/- icon. - In IE, nodes can be expanded/collapsed even if the tree's enabledFlag property is unchecked. (But the tree's command cannot be invoked). - In Firefox, the horizontal scrollbar may appear and disappear after each mouse click in the tree. - In iOS Safari (iPad), if a tree's mouseOverFlag property is checked, the user must touch tree a node twice to invoke the tree's command. The first touch only displays the node's mouseover text. - In iOS Safari, a touch on the +/- icon will expand/collapse the node as expected but will also perform the tree's command, if the execOnLeafOnlyFlag property is unchecked. - In iOS Safari, scrollbars will not appear in a tree control. If the tree contains more nodes than are visible, use a two finger drag gesture inside the tree area to scroll the tree.

17491: New option for GTE and LTE added to obj_ind_(limits/multi)

The limits indicator (obj_ind_limits) and multi-state indicator (obj_ind_multi) have been enhanced. The limits indicator has been enhanced with a new property, valueEqualTriggersThresholdFlag, in the Data category. When this flag is off, the indicator changes color\image when the value is greater than the high thresholds (valueHighAlarm or valueHighWarning) or less than the low thresholds (valueLowAlarm or valueLowWarning). This was the previous behavior. When this flag is on, the indicator changes color\image when the value is greater or equal to the high thresholds or less than or equal to the low thresholds. This property is turned on by default in the Object Palette. This property will be off for displays created in previous releases so that the behavior of existing displays will not change. The multi-state indicator has been enhanced with 2 new options for the alertStateNCondition property: Greater Than or Equal To - The value must be greater than or equal to alertStateN for alertStateN properties to be applied. LessThan or Equal To - The value must be less than or equal to alertStateN for alertStateN properties to be applied.

Composite Object

17438: Global var now applied as sub inside composite display

The following problem is fixed in this release: If a display is used in obj_composite and the display contains data attachments that use a sub $x, and $x is a global variable that is defined in a global definition file but $x does not also appear as a sub in OPTIONS.ini, then $x is not substituted when the display is loaded. This results in RTView adding an invalid listener which does not get removed when the display is closed.

Control Objects

17517: Combo box list now always updates when listValues changed

A problem in obj_c1combobox has been fixed which caused it to ignore changes to the listValues property in some cases.

Heatmap

17371: Improved handling of null and empty string index column values

In previous releases, the heatmap did not handle null or empty string values in index column properly. If an index column contained a null value, the heatmap threw a NullPointerException. This has been fixed. If an index column contained an empty string value, the heatmap displayed the wrong value for that field in the mouse over string. This has been fixed.

17407: Heatmap now applies new indexColumnNames immediately

In previous releases, changes to the nodeIndexColumnNames property of the heatmap were not applied until the next data update. This has been fixed.

17408: New property to specify if labels are shown for empty nodes

The heatmap (obj_heatmap) has been enhanced with a new property, nodeLabelVisIfEmtpyFlag. If selected the background for empty node labels will be drawn, otherwise they will not. By default, this property is selected, so existing displays will not change.

17413: New highlight mode for double thick highlight lines

The heatmap (obj_heatmap) has been enhanced to support a thicker node group highlight. The nodeBgBorderHightlightFlag property has been renamed to nodeBgBorderHighlightMode. This new property supports 3 values: None - no highlight will be drawn (this is equivalent to the old nodeBgBorderHighlightFlag property turned off) Thin - a single pixel highlight will be drawn (this is equivalent to the old nodeBgBorderHighlightFlag property turned on) Thick - a two pixel thick highlight will be drawn with the inner pixel a shade lighter than the outer pixel (new option) Existing displays will automatically be converted to use the value of the old nodeBgBorderHighlightFlag property in the nodeBgBorderHighlightMode so that the look of the display will not be changed. Because of this, displays containing a heatmap that are saved using version 6.0.1+ will use the default value for the nodeBgBorderHighlightFlag property when loaded into an older version of RTView.

17429: Rounding problems with borders and highlight fixed

In previous releases, the borders between the items in the heatmap were not always consistent. The border highlight thickness was also inconsistent. This has been fixed.

17430: Corrected $celldata and $colname drill down subs

In previous releases, the $celldata and $colName drill down substitutions in the heatmap were incorrect. The $celldata was always the label from the top level grouping and the $colName was always the first column in the valueTable. This has been fixed so that the $celldata is the value of the selected node and the $colName is the name of the last index column.

Trend Charts

17573: Fixed infinite loop drawing inner y axis labels on trend

A problem has been fixed which could cause the Builder/viewer to enter an infinite loop while drawing the Y axis labels on obj_trendgraph02 configured with yAxisPosition = Inner Right/Left/Mixed, or with yAxisMultiRangeMode = Classic. The problem occurred when the computed vertical distance between the labels was less than one pixel.

Viewer

17529: Slow data server connection no longer stalls client

In prior releases, a data server connection that was live but slow to respond could cause a Builder or Viewer client to stall when opening or closing displays or executing commands. This has been fixed, by performing all data server requests asynchronously.

Version 6.0.0 Release Notes

Alerts

16981: Alert State properties now correct for a new Multi-State Alert

In previous releases, the visibility of the Alert State properties for a newly instanced Multi-State Alert were incorrect. This has been fixed.

17025: Multiple index columns supported for tabular alerts

The Alert Engine has been enhanced to support alerts with multiple index columns. In previous releases, alerts only supported a single index column. Enter a semi-colon (;) delimited list of values in the indexColumnNames property to specify multiple index columns for your alert (ex. Region;Service;Timer). If specified, the valueTable must contain all of those columns before the column that contains the data. The combined value of all index columns must uniquely identify a row in the valueTable. The Alert Index for that row is created by concatenating all of the index column values into a single string delimited by a tilde (~). To change the delimiter from tilde (~) to another character, enter it in the Multiple Index Delimiter field on the Alert Definitions tab of the Application Options dialog or specify it using the -multipleindexdelim: command line argument. All alerts also support a new indexType property which allows you to specify map one or more of your index columns to an index type. This index type can then be used in the threshold tables, alert text tables, alert command text tables and rowEnabledTable to set a value on a group of indexes instead of specifying each index individually. The syntax for the indexType is indexType:indexCol;indexType1:indexCol,indexCol2 (ex. PerRegion:Region;PerRegionalServer:Region,Service). There are 2 built-in index types: - All - this means that the index value will be a combination of values for each index column delimited by the Multiple Index Delimiter (~ by default). - Default - this value will be used for any indexes that are not specified in the table The threshold tables, alert text tables alert command text tables and rowEnabledTable all now support an additional 4 column table format that takes the index type. See the documentation for information on how to structure those tables. The AlertTable, Alert Variables Table, and per-tabular alert tables have been enhanced with additional columns to support interacting with multiple index alerts. A new table, Alert Index Types Table has also been added. AlertTable - This table has one new column: - Alert Index Values. For a single index alert, this column will contain the same value as the Alert Index. For a multiple index alert, this contains the alert index values concatenated by ; (semi-colon). This column was included to make it convenient to use this value to filter against multiple columns in the Filter By Row function. Alert Variables Table - This table has 4 new columns: - Alert Type - The type of alert. Values are Limits, Discrete, Multi State and Event. - Tabular Alert - This is true if the alert is tabular (ie. the useTabularDataFlag property on the alert is on). - Index Column Names - If the you have specified the indexColumnNames property on the alert, this will contain that string. Otherwise, after the alert receives its first data update it will fill in the value with the name of the index column in the valueTable. If the alert is scalar or if it is an unindexed event alert, this will be empty. - Index Types - A ; (semi-colon) delimited list of index types. If the alert is scalar, this will be empty. If a tabular alert does not have any index types defined in the indexTypes property, this will be All. Per-tabular-alert Table - This table has new columns based on the indexColumnNames and indexTypes specified on the alert: - Index Columns - Each of the index columns for the alert is included in the table. - Index Types - Each of the index types for the alert are included in the table. The value for each row is the value for that index for that index type. Alert Index Types Table - This is a new table that contains information about the available index types for your alert. It only contains rows for alerts that have specified at least one index type in the indexTypes property. It contains one row per index type. It contains 3 columns: - Alert Name - The name of the alert. - Index Type - The name of the index type. - Column Names - A ; (semi-colon) delimited list of column names that define the index type. Users who are using the Alert Persistence feature in 5.9.1 will must modify their database table to include a String column named Alert Index Values immediately following the Count column. The schemas in RTV\dbconfig\alert_persist have been updated to include this column. The Self Service Alerts demo has been enhanced to support interacting with multiple index alerts. See the release note for 17206 for more information.


17026: Tabular thresholds supporte in ssa for one or more alert indexes

The Self Service Alerts have been enhanced to support setting tabular thresholds and enabled flags on your tabular alerts. Now, in addition to setting thresholds and enabled values on a per-alert setting, you can override the alert level settings for each index for tabular alerts. In order to better support discrete alerts, the Self Service Alerts functionality has been modified so that discrete alerts that have an enabled threshold with a string value are not hooked up to the Alert Setting Table but the enabled state still is. This allows you to include discrete alerts with String threshold values in the Self Service Alerts in order to change the enabled state, but have the threshold values from the file be used. The Self Service Alerts also have a new command line option: -printssawarnings:true/false If set to false, the Self Service Alerts warnings about extra unmapped thresholds will be suppressed. In order to support tabular alert thresholds, the database table schemas for Self Service Alerts have changed. Customers who are using Self Service Alerts from a release previous to RTView 6.0 will need to do the following: 1. Modify the Alert Settings Table in your database to add 2 String columns named INDEXTYPE and ALERTINDEX immediately following ALERTNAME column. The value for all existing rows in your database table for these 2 columns must be Default. Add a Boolean column named USEINDEX after the ENABLED. The value for all existing rows in your database table for this column must be true. Change the primary key for this table from ALERTNAME to ALERTNAME and ALERTINDEX. 2. Modify the Audit Table in your database to add a String columns named INDEXTYPE immediately following ALERTNAME column. The value for all existing rows in your database table for the INDEXTYPE and ALERTINDEX columns must be Default. Add a Boolean column named USEINDEX after the ENABLED. The value for all existing rows in your database table for this column must be true. The Self Service Alerts demo has also been enhanced in several ways: 1. General UI enhancements. 2. More customization options. 3. Support for tabular threshold and enabled values. 4. Support for alerts with multiple indexes (task 17025). 5. Addition of help pages. 6. Login role checking for right to execute administrative functions. Customers who are using the Self Service Alerts Demo from a release previous to RTView 6.0 either stand-alone or integrated into their application will need to do the following when upgrading: 1. Modify their database tables as listed above. 2. If you are deploying in the Thin Client and you want to use the built-in help files, you'll need to include the selfservicealerts\docs directory in the .war file for your Thin Client application and you'll need to include selfservicealerts\ssa_displays.html in your application directory. See the Customization section in the Self Service Alerts Demo documentation for more information on modifying and/or deploying the help files. 3. If you want to customize the Options and/or Details displays on a per-alert basis, you will need to add a Custom Alert Definition Property named DrillDownSuffix. See the Customization section in the Self Service Alerts Demo documentation for more information on customizing the Options and/or Details displays. 4. The Alert Administration screen has been enhanced to show the description of the selected alert. It is not required that you add descriptions to your alerts when you upgrade, but if you do not, this field will be blank. To add a description to an alert, fill in the description property on the alert definition. 5. The Alert Administration has been enhanced to check the role from the RTView login. If the login is disabled, the admin role is used, otherwise the logged in role is used. Administrative actions such as adding, modifying and setting alert thresholds are disabled if you are not logged in as admin. You may need to modify the roles for your users to include admin if you need them to have access to these actions.


17124: Enhancements to removal of alerts from the Alert Table

RTView Alerts have been enhanced to improve removal of alerts from the AlertTable. There are 2 reasons that alerts are removed from the Alert Table: 1. Alert History Depth - This option limits the size of the AlertTable to the number of rows specified. Previously, if the AlertTable went over this limit, the oldest rows were removed from the alert table to get the table back down to the size limit. When active (ie not-cleared) alerts were removed, they were not cleared first, so the Alert State in the Alert Variables Table and per-tabular-alert tables were not updated correctly. This has been enhanced. Now, when the AlertTable goes over this limit, RTView first removes cleared alerts from the table, starting with the alerts that have the oldest Cleared Time. If all of the cleared alerts have been removed and more alerts still need to be removed to get under the size limit, RTView will remove active alerts starting with the alerts that have the oldest Time value. In this case, the alerts are cleared before being removed and the cleared reason is set to ALERT HISTORY DEPTH EXCEEDED. 2. Time (in seconds) to Keep Cleared Alerts - This used to be called Rate to Remove Cleared Alerts. Previously, RTView would use this value to remove all cleared alerts when the specified amount of time had elapsed. For example, if this was set to an hour, once an hour RTView would remove all cleared alerts from the system. This has been enhanced. Now, RTView checks for cleared alerts to remove on each update pass. If more than the specified amount of time has elapsed since the time the alert was cleared, the alert will be removed. If the value is 0, cleared alerts will not be removed until the Alert History Depth has been exceeded. Both the Alert History Depth and the Time to Keep Cleared Alerts are configurable in the Alerts tab in the Application Options dialog.

17272: Performance optimizations for Alert updating

The RTView Alert update process has been made made more efficient in the case where there are tabular alerts with large numbers of indexes.

17281: Alert action audit support

RTView Alerts have been enhanced to support Alert Action Auditing. If configured, RTView will write a record to a database every time an alert data source command is executed. The record will contain the time the action was executed, the user that executed the action, the action type, the action, the target and the value. See the documentation for more information on configuring Alert Action Auditing. The Self Service Alerts demo has been enhanced to support alert action auditing and has a new display for viewing the audit table.

Builder

16980: Prop sheet no longer shows Object category for alerts or caches

In previous releases, the Alerts and Caches showed objName, objX, objY, objHeight and objWidth in the property sheet. These properties do not apply to those objects and have been removed from the property sheet for them.

Builder - Options Dialogs

16984: Empty and default ini files no longer saved

RTView has been enhanced so that data source options files are only saved when the options for that data source need to be saved. In previous releases, when you saved your options, all loaded data sources saved their options files regardless of whether anything was in them or if they contained only the default values. Now, they are only saved if they contain non-default values. A new method has been added to the Custom Data Source API to support this feature for custom data sources: public boolean setDefaultFieldValue(String fieldName, String defaultFieldValue) This method sets the default value for the data source option which is used to determine whether or not it needs to be saved. By default, the default value is set to an empty string. Use this method to set it to another value.

Builder - Property Dialogs

17345: Builder exception when using Bar Properties dialog fixed

In previous releases, when the Bar Properties dialog was used to configure an obj_history instance, the Builder would throw a NullPointerException if the bottom row in the table of properties was removed and then the user clicked the "New" button to add a new row. This is fixed.

Data Historian

17323: Historian no longer exits if -persistCaches used w/o HISTORY.ini

In the prior release, if the historian was run with the -persistCaches:true option and no HISTORY.ini file was present, the historian exited immediately. This has been fixed. Note: The -persistCaches option was added in release 5.9.1.

Data Sources

CMDB Data Source

17310: cmdb db table processing moved to separate thread

The CMDB data source has been enhanced to move the database table processing into a separate thread. This means that the main application thread is no longer blocked while the database tables are processed, speeding up startup.

Cache Data Source

17289: New "update always" option for history_combo attachments

The cache data source has been enhanced to support a new update mode for attachments to a cache history_combo table. (The history_combo table contains a combination of older condensed data and newer raw data, and is maintained by the cache data source only when the condenseRowsFlag property is checked on a cache definition object. For details on the cache row condenser feature, please see the release note for 16518). The Attach to Cache Data dialog has been changed as follows: When the history_combo is selected in the Table field of the dialog, the checkbox labeled "Update Once" will be replaced by an "Update" label and three radio buttons labeled "Once", "On Condense", and "Always". By default, the "On Condense" button will be selected. The "On Condense" update mode was also the default in previous releases. In this mode, an attachment to the history_combo table will be updated at the interval specified by the cache's condenseRowsInterval property. For example, if new data is applied to the cache every two seconds but the cache's condenseRowsInterval is 60 seconds, then an attachment to the cache's history_combo table will be updated every 60 seconds. This behavior is useful when the traceValueTable of a trendgraph is attached to the history_combo table. The update mode of "Always" is new in this relase. When the Always mode is selected, an attachment to the history_combo table will be updated whenever new raw data is applied to the cache. So in the previous example, if the Always mode is selected, the attachment would be updated every 2 seconds rather than every 60 seconds. This behavior is useful when the valueTable property of a table object is attached to history_combo, for example. The "Once" mode was also available in previous releases. When this mode is selected, the attachment is updated once when the display is opened. Note that the 3 radio buttons described above will appear only when the history_combo table is selected in the dialog. For all other tables, only the "Update Once" checkbox will appear, as in all prior releases.

17319: Expired column now excluded from cache history table

If the rowExpirationMode property of a cache is set to Mark or to Mark+Delete, then an Expired column is added to the cache's current table and to its history table. However, the column is only meaningful in the current table so it should not be added to the cache's history table. In prior releases the Expired column was added to the history table and its value was always false. As of this release, the Expired column is not added to the cache's history table.

Display Server

17221: Fixed error when column name contains double quote

In previous releases, if a column name in a table contained a double-quote character, the thin client threw a javascript error and the table was displayed as blank. This is fixed.

17354: scrollToSelectionFlag behavior fix in thin client

The following problem has been fixed: If the scrollToSelectionFlag property is checked on an obj_table02 instance, the selected table row will scroll out of view in the thin client when the table data is updated or the user selects a sort column.


Functions

17271: Performance optimization for Delta rows function

The DeltaRows function has been made more efficient at processing tables with large numbers of columns.

17273: New tabular function Concatenate Columns

The RTView Builder has been enhanced with a new function, Concatenate Columns. This function creates a string concatenation of the values in the given table columns separated by the given character(s) and returns the results in a new table column. The column names are specified as a semicolon-separated string. The separator can be a single character such as "." or "/" but it can also be a string such as " and ".

Licensing

17088: New "-writekey:" option added to run_gmsregister -nogui

A new command line option has been added to run_gmsregister. Previously, the -nogui option allowed you to get your pin without opening the registration dialog, but there was no way to enter your key. The new -writekey: command line option allows you to enter a key on the command line and have it written to your keys file. This option is only valid when used in conjunction with the -nogui option. For example: run_gmsregister -nogui -writekey:01234567890123456789012345678901

Object Library

Control Objects

17241: Clipped strings in text controls now show beginning of string

The following text controls have been enhanced so that when their value is longer than the control can display, the beginning of the string is displayed instead of the end: Text Entry Fields (obj_c1textedit, obj_c1textedit_i, obj_c1textedit_d) Text Area Object (obj_c1textarea) Password Field (obj_c1passfield) This change only effects the Display Builder, Display Viewer and Display Viewer Applet. The controls in the thin client already showed the beginning of the strings.

17244: listValues in combo and list now supports single cell with list

The listValues property on the combo box (obj_c1combobox) and list (obj_c1tlb) controls has been enhanced. It now supports an attachment to a single cell table containing a ; delimited list of values.

17282: New flag for validating blank value in numeric text fields

The numeric text entry controls, obj_c1textedit_i and obj_c1textedit_d, have been enhanced to support a new validation option for blank entries. To enable this feature, select the validateBlankValuesFlag. If selected and the user enters a blank string, the actionCommand will not execute and the invalidInputVarToSet and invalidInputMsgVarToSet will be updated to indicate an invalid entry.

Fx Bar Chart

17303: fxreplace handling of barProperties & wedgeProperties fixed

In previous releases, when replacing an obj_fxbar object with obj_bargraph, the fxreplace feature mishandled the barProperties property so all the bars in the replacement bargraph were white. The same problem affected wedgeProperties when replacing obj_fxpie with obj_pie. Both problems are fixed.

Fx Trend Chart

17086: Trace line corrected when alarm limits & alarm status table used

The trace lines on obj_trendgraph02 were misdrawn if the object was configured with alarm limits and the alarm status table both. This is fixed.

Tables

17224: obj_table02 null pointer exception fixed

In previous releases, obj_table02 sometimes threw a null pointer when processing mouse events when the display was being closed. This has been fixed.

17267: String column with all numbers now sorts numerically

In releases 5.8 through 5.9.1, a table column of type string that contains only numerical strings was sorted in alphabetic order rather than numerical order. This is fixed.

Trend Charts

17268: historyOnlyFlag added to trendgraph

A property named historyOnlyFlag has been added to obj_trendgraph02 and obj_fxtrend. When checked, the graph will plot only data that is applied to the traceNValueTable properties and will ignore the timeShift property and any data that is applied to the traceNValue properties. This is useful in the cases where the same graph instance is to be used to view historical data or historical data + current data by setting subs on the display. By default the property is unchecked.

Platform Support

17290: iPad support

The RTView thin client is now supported on iPad, in the Safari browser. In the iPad settings for Safari, "JavaScript" must be ON and "Block Pop-ups" should be OFF. As of this writing, the thin client has been tested only on iOS 4.3.5 in Safari. Because the iPad uses a touch interface there are differences in the thin client appearance and behavior in iOS Safari as compared to the conventional "desktop browsers" that use a cursor (mouse) interface, such as Firefox and Internet Explorer. These are described below. 1) Popup browser windows: An RTView object's drilldown target can be configured to open a display in a new window. In a desktop browser, when the RTView object is clicked the drilldown display is opened in a popup browser window. But in iOS Safari 4.3.5, only one page is visible at a time, so when the RTView object is touched a new page containing the drilldown display will open and fill the screen. The Safari navigation bar can be used to toggle between the currently open pages or close them. 2) Mouseover text: If mouseover text and drilldown are both enabled on an RTView object (e.g. a bargraph), then in iOS Safari the first touch on an element (e.g. a bar) in the object will display the mouseover text for that element and the second touch on the same element will perform the drilldown. 3) Resize Mode and Layout: By default, the display server runs with resizeMode set to "crop". In crop mode, if a display is larger than the panel that contains it only a portion of the display will be visible. In a desktop browser, scrollbars will appear to allow the user to scroll to view the entire display. In iOS Safari, scrollbars will not appear but the display can be scrolled by dragging with two fingers inside the display. (Dragging with one finger will scroll the entire page, not the display). If the display server is run with resizeMode set to scale or layout, the display will be resized to fit into the panel that contains it. If a desktop browser is resized after a display is opened, the display will be resized accordingly. On the iPad, the Safari browser can only be resized by reorienting the iPad itself, between portrait mode and landscape mode. The panel layout feature is supported in the thin client. However, unlike a desktop browser which will resize to match the layout size, the size of Safari is fixed. So if the display server is run with resizeMode set to crop or scale mode, there may be unused space at the edges of the display(s) or, in crop mode, the panels and displays may be cropped. This means that layout mode should be used for best results on the iPad. For layout mode to be most effective, displays should to make use of the anchor and dock object properties. Please see the RTView documentation for more information. 4) Scrolling: The thin client implements scrollbars for table objects and graph objects. The scrollbars are activated by dragging with one finger. If an RTView display is viewed in crop mode and is too large to be displayed entirely in Safari, scrollbars will not appear (as they would in a desktop browser) but the display can be scrolled by dragging with two fingers inside the display. Scrollbars will never appear in a text area control. If the text area contains more text than is visible, use the two finger drag in the text area to scroll the text. Regardless of the size of a listbox control, it will only display a single item (typically, the selected item). When the listbox is touched, the list of items will appear in a popup list. In other words, on iOS Safari the listbox control and the combobox control behave identically. On the default thin client page (opened as http://hostname/rtvdisplay), the panels cannot be resized by dragging the border between the left and right frame, as they can in a desktop browser. The list of displays in the left hand panel can be scrolled by dragging with two fingers inside the panel. 5) Context menu: The thin client context menu is opened by a right mouse button click in a desktop browser. It is opened in iOS Safari by touching any location on a display and holding that touch for 2 seconds. The menu will appear in the top left corner of the display, regardless of where the display is touched. The items 'Export Table to Excel', 'Drill Down', and 'Execute Command' are not included on the context menu in Safari. All other items are available. The 'Export Table to HTML' item is enabled if a table object is touched (unless the table object's drillDownTarget is configured to open another display). After and Export to PDF/HTML has been performed, the exported content will open on another page in Safari. From there, the content can either be opened by another app (e.g. the iBooks app will open PDF) and emailed, or it can be copied & pasted into an email. Known Issues/Limitations: The iPad does not support Adobe Flash, so the Fx graph objects (obj_fxtrend, obj_fxpie, obj_fxbar) are unavailable. The thin client will automatically replace the Fx graph objects with the equivalent non-Fx object (obj_trendgraph02, obj_pie, obj_bargraph). Note that the replacement objects behave the same as the Fx objects in most cases but not in all. In particular, obj_trendgraph02 does not support the sliding cursor object nor the legendPosition property. Custom Fx objects are not supported on the iPad. The thin client implements scrollbars for table objects and graph objects. However, unlike the scrollbars used on desktop browsers, the scrollbars used on the iPad do not have arrow buttons at each end. This can make it difficult to scroll precisely (e.g. row by row) on objects with a large scrolling range. At full size, users may find it difficult to touch the intended display object without accidentally touching nearby objects and performing an unwanted drilldown, sort, scroll, etc. This is particularly true of table objects that support drilldown and also scrolling, and also in panel layouts that the tree navigation control. In those cases, the user may want to zoom the iPad screen before interacting with the thin client. If the iPad sleeps or auto-locks while a thin client display is open in Safari, or if the Safari app is minimized by clicking on the iPad's home button, the display will not update until the iPad is woken and Safari is reopened. In some cases it may be necessary to refresh the page from Safari's navigation bar.

Version 5.9.2 Release Notes

Alerts

17120: Changes in self service alerts now applied immediately

In previous releases, changes to the Alert Settings Table in the Self Service Alerts weren't applied until the following update. This has been fixed.

17176: Fixed crash when redoing alert definition copy

In previous release, the Display Builder would throw an exception after an alert was copied, then the copy was undone and redone. This has been fixed.

17225: Alerts null pointer exception fixed

In previous releases, the alert objects sometimes threw a null pointer exception during command processing. This has been fixed.

17242: Clear reason now resets after cleared by command

In the previous release, the Cleared Reason was incorrect for an alert that had been cleared via command, then re-executed and cleared via data update. This has been fixed.

17295: Cache listeners no longer wait for first alert

In previous releases, caches attached to the Alert Data Source AlertTable didn't receive an initial update until an alert had been generated. This has been fixed.

Builder

17118: Builder no longer creates extra dateformat lines in OPTIONS.ini

Date formats containing single quotes were not read in correctly from OPTIONS.ini. This has been fixed.

Data Sources

Cache Data Source

17262: Improve performance of cache row condenser.

The cpu time required to support the cache row condenser feature has been reduced.

17288: Cache attachment with "update once" no longer updates twice

The following bug in the cache data source has been fixed: A bug in the cache data source can cause data to be applied twice to a data attachment that has the "Update Once" option checked, once when the attachment is initialized (as expected) and then again the next time the cache table is updated (not expected). The problem does not occur on the first "update once" attachment that is made to a specific cache table, but does occur on the 2nd and all subsequent "update once" attachments to the same cache table.

JMS Admin Data Source (for TIBCO EMS only)

17203: Patterns in data attachments now recognized for first server

In previous releases, the EMS Administration data source had a bug where data attachments to * Servers for the the Topics and Queues tables that used a pattern wouldn't apply the pattern to the first server in the table. This has been fixed.

17204: Run EMS queries in a separate thread

The TIBCO EMS Administration data source has been enhanced to run EMS Server queries in a separate thread. This prevents slow queries from blocking the main application thread and improves application responsiveness.

17210: Hawk unavailable error now only printed once

In previous releases, when the TIBCO EMS Administration data source was setup to discover servers using Hawk and the TIBCO Hawk data source was not available, the following error was printed to the console on each update pass: ERROR: cannot enable use of hawk! This error has been replaced with the following error which is only printed to the console once at startup: ERROR: The TIBCO EMS Administration data source cannot Discover Servers Using Hawk, because the TIBCO Hawk data source is not available.

Drill Down

17184: Drill down display doesn't scale to show all objects

In previous releases, the composite object would sometimes size incorrectly after the composite's display was changed via drill down in a window that had been resized. This has been fixed.

Functions

17206: Avoid premature initial evaluation of function

A problem has been fixed which could cause the initial evaluation of a function to occur prematurely. The problem occurred when a function F2 depended on the result of F1, but F2 appeared in the rtv file before F1. Prior to the fix, the initial evaluation of F2 would occur before F1 was evaluated, generating a possibly bogus result.

17259: CreateSelectorList no longer throws npe

In previous releases the CreateSelectorList function would throw a NullPointerException when a list value was null. This has been fixed.

17266: Convert columns now works if no rows in table

In the Display Builder, the Convert Columns function would return the original table if there were no rows of data. It now returns an empty table but with the column types changed as specified.

17296: outer join function now returns null if either table is null

The Join Outer function has been reverted to its pre-17075 behavior so that it returns null if either input table is null, to avoid regression bugs in cache configurations.

GmsTabularData

17222: Exception when edit save is due to "do you want to save" dialog

In previous releases, the following steps caused a class cast exception: 1. Edit a table object (obj_table02) that is configured with the editDataLocalVarName in the viewer. 2. Exit the viewer without saving your edits. 3. When prompted to save your edits, select yes. This has been fixed.

Object Library

Tables

17219: obj_table02 null pointer exception fixed

In previous releases, the table object (obj_table02) occasionally threw a NullPointerException if the valueTable was updated while the table was being processed. This has been fixed.

17243: columnProperties fails if a column starts with name of another

In previous releases, the columnProperties was not applied correctly to a column where the column named started with the name of another column's (ex. Index and IndexTypes). This has been fixed.

17255: Apply table filterProperties if sortColumnName is bogus

The following problem has been fixed: The filterProperties of an obj_table02 is ignored if the sortColumnname property is set to a non-blank string that does not match any of the column names.

Reporting

17213: Excel/HTML report no longer truncates data with '<' character

In prior releases, the 'Export Table to Html/Excel' feature in the thin client would fail if a < or a > character appeared in the table. This is fixed

Version 5.9.1 Release Notes

Alerts

12513: Alerts may be generated for data that is not yet available

When data for a numeric data attachment is not available, it gets initialized to a value of 0. If an alert definition was setup such that an alert will get generated if the input value is 0, this would cause an alert to be generated. This has been fixed. There is still a related problem for alerts where the value property is directly or indirectly attached to a function that outputs a non-table result (Text or Number). See the PAL for 17154 for more information and a workaround for that problem.

17027: Support added for custom alert definition properties

RTView alerts have been enhanced to support Custom Alert Definition Properties. This feature allow you to define one or more custom properties on your alert definitions which will show up in the Alert Table when an alert is executed. These properties are useful when you want to store additional information about an alert definition and have it be accessible in the Alert Table. For example, you might want to organize your alerts by Category. In that case, you could add a Custom Alert Definition Field named Category. When you define your alerts, you specify a value in the Category property for each. When the alerts are executed, there will be a Category field in the Alert Table that you can use for sorting and/or filtering. These properties can also be mapped to a column in the valueTable input for your alert if the useTabularDataFlag is on. To add a Custom Alert Definition Property, go to Tools->Options->Application Options->Alerts->Custom Alert Fields and click on Add Custom Alert Definition Property. This will open a dialog where you will fill in the following: Name - The name of the Custom Alert Definition Property. This will be used as the property name in the alert definition and the column name in the Alert Table. This field is required and the name must be unique within both the Custom Alert Event Attributes and the Custom Alert Definition Properties. Data Type - Select the type of data for this Custom Alert Definition Property. The choices are String, Double, Integer or Boolean. Default Value - This field is optional. Specify a default value for this Custom Alert Definition Property. If specified, this value will be used for new alert definitions. Note that this value must be of the data type specified in the Data Type field. Click OK to add the Custom Alert Definition Property. To edit a Custom Alert Definition Property, double-click on it in the list or select it and click Add Custom Alert Definition Property. To delete a Custom Alert Definition Property, select it from the list and click Remove Custom Alert Definition Property. All additions, modification and deletions of Custom Alert Definition Properties are applied when you click OK, Apply or Save in the Application Options dialog. Note that changes to the Custom Alert Definition Properties will cause all of your alert definition files to be reloaded. Once you have applied your Custom Alert Definition Property, you will see a property for each in the Custom Properties section of the property sheet for all of your alert definitions. These properties can be static or attached to data. You will also see a column in the Alert Table for each Custom Alert Definition Property. The value in that column will be the value specified for the property in the corresponding alert definition. If you want to use the value from a column in your valueTable, use the customPropertyMap property to specify which column from the valueTable contains the value to use for the custom property using the following syntax: customPropName:valueTableColumnName;customPropName2:valueTableColumnName2 For example, if you have a custom property named My Custom Property and you want to use the value from the My Data Column column in your value table, you would specify the following: My Custom Property:My Data Column The alert will also create a substitution for each custom property by collapsing the name into $alertXX where XX is the name of your custom field in camel case with all spaces removed. For example, if your custom property name is "my property", the corresponding substitution will be $alertMyProperty. You can use this substitution to show the value of your custom property in the alertCommand, reNotificationCommand, clearedCommand or in the alert text. Note that the renotification commands will update with the new value of the property if it changes, but the alert text in the table will not update after the alert is generated. The following describes what happens when the custom properties are misconfigured: -- The data attachment to a custom property returns the wrong data type (ex. the custom property is an int and the data attachment returns a string). In this case, you will see an error in the console (where XX is the name of the custom property): ERROR: setGmsVarFromString, value passed in for XX must be an integer. The property won't be updated. If no updates have been successful, the value for the column will be the Default Value specified in Application Options. -- The column that you specified in customPropertyMap doesn't exist in valueTable. In this case, you will see an error in the console (where XX is the name of the missing column): ERROR: valueTable on alert <alertName> doesn't contain this column specified in customPropertyMap <XX>. In this case, the value specified in the custom property on the alert will be used. -- The type of the column that you specified in customPropertyMap doesn't match the type for the custom property. For example, your custom property is an int and the column you specified in the valueTable is a String. In this case, we will try to convert the String to an int. If the String cannot be converted to a number, the value will be 0.

17034: Custom alert event attributes supported

RTView alerts have been enhanced to support Custom Alert Event Attribute. This feature allow you to define one or more settable alert event attributes which show up as columns in the Alert Table and can be set via a command. This feature is useful when you want to add table information on a per-alert instance basis. For example, you might want to add a Status attribute to the alert, so that the user can indicate whether the problem is under investigation, being tested, or resolved. To add a Custom Alert Event Attribute, go to Tools->Options->Application Options->Alerts->Custom Alert Fields and click on Add Custom Alert Event Attribute. This will open a dialog where you will fill in the following: Name - The name of the Custom Alert Event Attribute. This will be used as the column name for this attribute in the Alert Table and will also be the name you will use to reference this attribute in the Set Custom Alert Event Attribute command. This field is required and the name must be unique within both the Custom Alert Event Attributes and the Custom Alert Definition Properties. Data Type - Select the type of data for this Custom Alert Event Attribute. The choices are String, Double, Integer or Boolean. Default Value - This field is optional. Specify a default value for this Custom Alert Event Attribute. If specified, this value will be used for new alerts. Note that this value must be of the data type specified in the Data Type field. Click OK to add the Custom Alert Event Attribute. To edit a Custom Alert Event Attribute, double-click on it in the list or select it and click Add Custom Alert Event Attribute. To delete a Custom Alert Event Attribute, select it from the list and click Remove Custom Alert Event Attribute. All additions, modification and deletions of Custom Alert Event Attributes are applied when you click OK, Apply or Save in the Application Options dialog. Note that changes to the Custom Alert Event Attributes will cause all of your alert definition files to be reloaded. Once you have applied your Custom Alert Event Attributes, you will see a column for each in the Alert Table. To set the value of the Custom Alert Event Attribute for an alert, use the new Alert Data Source command, Set Custom Alert Event Attribute. This command takes 3 arguments: ID - The id of the alert for which you want to set the attribute value. Attribute Name - The name of the Custom Alert Event Attribute you want to set. Attribute Value - The value you want to set on the Custom Alert Event Attribute. Note that this value must be of the type specified for the Data Type on the Custom Alert Event Attribute.

17035: Support alert failover by reading initial values from Historian

RTView alerts have been enhanced to support the persistence of alerts during fail over of an alert engine. With this feature enabled, alerts will be persisted as follows: - If you are running the alerts in a Data Server or in a locally client application (Display Builder, Display Server, Display Viewer), all active and cleared alerts that had not previously been removed from the system will be restored when the application is restarted and all new alerts will be generated using ids that are unique from the previous session. - If you are running the alerts in a Data Server that is configured for High Availability, you should run the backup server in warm standby mode. All active and cleared alerts that had not previously been removed from the system will be restored to the standby server when it becomes the active server. It is not recommended that you run the standby server in hot standby mode when using alert persistence as in that case both Data Servers will persist the same alerts to the database. The alert persistence feature stores the all fields and current state of all active alerts and all cleared alerts that have not been removed from the system in a database using the Historian. Alerts are sent from the application running the alert engine to the Historian via the RTVAgent. More than one alert engine can persist its alerts to the same database table via the same Historian as long as each alert engine specifies a unique Agent Name (see the Alert Engine configuration below). The Historian must be configured to run the RTVAgent data source locally (not via Data Server) to receive alert table updates. Other data sources in the same Historian can still use the Data Server. When the alert engine starts up, it will query the database table containing the persisted alerts and will recreate them at startup in the new alert engine. The persisted alerts will show up in the alert engine after the Initial Delay time specified in the Alert Definitions tab of the Application Options has expired. All alerts that are configured to renotify on a timer will immediately renotify, then continue to renotify on the specified renotification time. To clear the alerts for an alert engine from the database on startup, specify the following command line option: -purgepersistedalerts This will clear all alerts for the alert engine from the database table on startup and no persisted alerts will be loaded. If you are persisting alerts for more than one alert engine in the same database table, alerts for other alert engines will not be removed. For optimization, by default the alert engine does not store updates to the Last Update Time column of the Alert Table unless there has also been another change for that alert. If you want to restore the alerts with accurate values in the Last Update Time column, enable saving out updates for that column with the following command line option: -lutupdatesnewdata Requirements 1. Alert definitions and options must be the same before and after failover. For example, if you are running a primary and standby Data Server in 2 different locations, you must confirm that both are configured with the same alert definitions and option. If your alert options have changed, persisted alerts might be incorrect after failover. 2. If any of the following properties on your alerts are attached to data, those data attachments must be available after fail over and you must specify an Initial Delay in the Alert Definitions tab of the Application Options dialog. This will allow the alert engine restoring the persisted alerts to resolve those data attachments before finishing the processing of the persisted alerts. The Initial Delay time only needs to be long enough for your data attachments to resolve. Any of these properties that use a ; delimited list or a tabular data attachment must include index values. - rowEnabledTable - value*Alert (valueHighAlert, valueLowAlert, valueMediumAlert) - value*Warning (valueHighWarning, valueLowWarning) - value*Text (valueHighAlertText, valueHighAlertCommandText, valueMediumAlertText, valueMediumAlertCommandText, valueLowAlertText, valueLowAlertCommandText, valueHighWarningText, valueHighWarningCommandText, valueLowWarningText, valueLowWarningCommandText) - alertState*AlertText - alertState*AlertCommandText - alertState*Comparison - alertState*UpperRangeLimit - alertState*LowerRangeLimit 3. The database table where the alerts are persisted must contain a column for each column in the Alert Table, along with a couple of additional columns. Therefore, if you add, edit or remove Custom Alert Definition Properties or Custom Alert Event Attributes, the database table will need to be modified. 4. If you have multiple alert engines persisting alerts to the same database table, they must have the same Custom Alert Definition Properties and Custom Alert Event Attributes. Limitations 1. Alerts that attach directly or indirectly to a function that outputs a non-table value (Text or Number) may be incorrectly cleared after fail over. See PAL for task #17154 for more information and a workaround. 2. The nonRepititionTime for an alert restarts after failover. 3. Depending on the frequency of your data that drives the alert, it is possible that an update to an alert might be missed during failover. The likelihood of missing an update increases the longer the time is between the exit of the first engine and the startup of the second. Database Configuration The Historian will store the alerts to a database table. You can either let the Historian create the database table or you can create the table. If you want to the Historian to create the table, there is nothing you need to do - the table will be created the first time the Historian stores an alert. If you want to create the table yourself, we have included table schemas for several databases in RTV\dbconfig\alert_persist. The README.txt file in that directory will assist you in using the schemas to create your table. If you want to create it manually, create a table with the following column names and types in the order listed: AgentName (String) Time (Timestamp) Alert Name (String) Alert Index (String) Severity (Integer) Alert Text (String) Cleared (Boolean) Acknowledged (Boolean) ID (Long) Last Update Time (Timestamp) Comments (String) Owner (String) current (String) level (Integer) The AgentName and ID fields are primary keys. If you have defined Custom Alert Definition Properties and/or Custom Event Attributes, you will need to insert columns of the correct type in the order they appear in the alert table before the current column. Historian Configuration This section assumes a working knowledge of the Historian and that you have configured the Historian database. 1. In the Application Options dialog in the Display Builder or Configuration Utility, go to RTVAgent->RTVAgent Options and select Enabled. In the Port field, specify the port number on which you would like to receive alerts. Save you options file. 2. Copy the RTVAGENTOPTIONS.ini file that you created in step 1 to the directory where you will be running the Historian. 3. In the directory where you will be running the Historian, run the Historian so you can configure it. 4. In the Alert Persistence Section, select Alert Persistence Enabled and specify the name of the table to use for alert persistence in Alert Persistence Table Name. 5. Save your configuration and Exit the Historian. 6. Note that the Historian must run the RTVAgent data source locally (not via a Data Server) to persist the alerts. If you are running the Historian against a Data Server you can run the RTVAgent data source locally with the following command line arguement: -dsenable:RTVAGENT If you want to persist alerts using a Historian server group instead of a single Historian, you must use a different RTV Agent port for each Historian in the server group. Specify a comma delimited list of the RTV Agent connections in the Agent Connection field (ex. localhost:5665,localhost:5666). Alert Engine Configuration 1. In the Application Options dialog in the Display Builder or Configuration Utility, go to Alerts->Alert Persistence: 2. Select Enabled Persistence to enable alert persistence and fill in the following fields: - Database Name - The name of a database connection that is defined in the SQL tab of the Application Options dialog. This connection must be to the same database that the Historian will be using to persist the alerts. - Table Name - The name of the table where the alerts will be persisted. This must be the same table name specified in the Alert Persistence Table Name of the Historian. - Agent Name - This must be a unique identifier for this alert engine. Multiple alert engines can persist their alerts to the same Historian, so this value allows the alert engine to restore only alerts for this alert engine in the case of fail over. - Agent Connection - The host and port of the RTVAgent connection you are using in the Historian to receive alert table updates. The host will be the host where you are running the Historian the port will be the value you entered in Step 1 of configuring the Historian above. 3. Save your options and exit. When you run the alert engine with these options, your alerts will be persisted. Note that if the Agent Connection specified here is not available, the alert engine will store up alerts to persist until it becomes available. Therefore, you should not run the alert engine with the persistence enabled and the Agent Connection unavailable for a long time as this will result in memory growth. Once the Agent Connection is made, all of the stored alerts will be persisted and the memory growth will no longer be a problem.


17036: New Owner column added to alert table

The Alert Table has been enhanced to include an Owner column to allow users to assign an owner to an alert event. When an alert is generated, the value of the Owner column is blank. You can set the Owner for an alert using the new Set Owner command. This command takes 2 arguments: ID - The id of the alert on which to set the owner. Owner - A string value to set in the owner field for the specified alert. The Self Service Alerts demo has been enhanced to display the Owner field in the Alert Detail Table and to allow you to set the Owner for an alert in the Manage Alert display.

17085: Support multiple ids for setOwner, add/clearComment and setEvent

The Set Owner, Add Comment, Clear Comment and Set Alert Event Attribute commands have all been enhanced to accept a semi-colon (;) delimited list of ids for the Alert ID argument.

17119: New event alert as wrapper for external alert engine events

RTView has been enhanced with a new event alert type. The event alert is meant to be used as a wrapper around an external event source such as Netcool. For this alert, RTView does not do a threshold comparison to determine when to execute or clear an alert or determine the severity of the alert. When the valueTable comes in, the columns in the valueTable are mapped to the columns in the RTView Alert Table using the valueTableMap and customPropertyMap properties. Event alerts behave like the other alerts in terms of notifications (alertCommand, reNotificationCommand, commentAddedCommand, alertClearedCommand are all supported as with the other alerts). They also show up in the Alert Table like the other alerts. These alerts do not have a corresponding per-tabular-alert-table like the limits and discrete alerts. If indexed, the indexes for these alerts are only stored until the alert is cleared, then removed. The valueTable for this alert does not have to be indexed. In order to indicate that you have an index, map the Alert Index property to the index column in your valueTable using the valueTableMap property described below. If there is no Alert Index specified in the valueTableMap, this indicates that the valueTable is not indexed. In this case, an alert will be generated for each row of each table that comes in. No check for duplicates and no support for status change is supported. This means that the only way for an alert to be cleared is via the alertExpireTime property (which will clear the alert after it has been active for the specified amount of time). If there is an Alert Index specified in the valueTableMap, this indicates that the valueTable is indexed. In this case, an alert will be generated for each row where there is not already an active alert for that index. Indexed alerts can be cleared via the valueTable if the Cleared column is also specified in the valueTableMap and the value in the Cleared column equals the alertClearedValue property. Indexed alerts can also be cleared via the alertExpireTime. Indexed alerts support updates to the Severity, Cleared, and Custom Property columns. The following are the properties that will be supported on the Event Alert. Most properties are already implemented for the other alerts, so they don't include descriptions here (see the RTView documentation for more information on those properties): Alert Category - alertClearedCommand - alertCommand - alertExpireTime - New Property. If specified, an alert older than this value (in seconds) will be cleared. This will happen regardless of whether the alert is acknowledged or not. - alertName - commentAddedCommand - reNotificationCommand - reNotificationMode - This works the same as the other alerts with one exception. When the reNotificationMode is set to Data Changed, the alert will renotify when the severity changes for alerts that have not been acknowledged or cleared. - reNotificationTime - alertClearedValue - New property. If the valueTableMap property contains a mapping for both Alert Index and Cleared, the value specified here will be compared to the value in the Cleared column from the valueTableMap. If they match, the alert will be cleared. Data Category - valueTable - this table is required, but all columns are optional - see valueTableMap and customPropertyMap for mapping columns from this table to the columns in the Alert Table - valueTableMap - New property. This allows you to map items in the valueTable to standard columns in our Alert Table. The syntax is AlertProp:valueTableCol;AlertProp2:vlaueTableCol2. The following Alert props are supported, but none of these are required: -- Alert Index - If specified, this is used as the index column and will be used in the Alert Index column of the Alert Table. The Cleared column map and valueCleared properties will be supported, if not specified, this is an un-indexed table and any new rows coming in to the valueTable will just be forwarded to the alert table (with no way to update an existing row). -- Time - If specified, this time will be used in the Last Update Time column of the alert table. This column must be a long or date. If not specified, RTView will set the Last Update Time to the time the alert received the last update. -- Severity - If specified, this column must contain integers > 0. If a value less than 1 is specified, a value of 1 will be used. This will set the value in the Severity column of the Alert Table. If not specified, RTView will assign all alerts as severity 1. -- Alert Text - If specified, the value in this column will be used in the Alert Text field of the Alert Table. If not specified, the Alert Text value in the Alert Table will be "Event Received". -- Cleared - This is only supported if the Alert Index was specified. If so, the value in this column will be matched against the value in the valueCleared property. If there is a match, the alert will be cleared, otherwise not. Interaction Category - enabledFlag - rowEnabledTable - Existing property. This is only supported if the valueTableMap contains a mapping for the Alert Index. Custom Property Category (see the release note for 17027 for a description of these properties) - customPropertyMap - For all command properties above, the same alert substitutions are supported (with a few exceptions) as the other alerts: - $alertName - supported/same as other alerts - $alertText - supported/same as other alerts - $alertID - supported/same as other alerts - $alertSeverity - supported/same as other alerts - $alertEmailSubject - supported/same as other alerts - $alertEmailBody - supported/same as other alerts - $alertIndex - supported/same as other alerts - $alertLabel - supported/same as other alerts ("Event Alert") - $alertCurValue - supported - this is set to the severity value - $alertCompValue - not supported - $alertTime - supported/same as other alerts - $alertCommandText - not supported - $alertComment - supported/same as other alerts (in commandAddedCommand only same as other alerts) - $alertLastComment - supported/same as other alerts (in commandAddedCommand only same as other alerts) This alert can be used with the Self Service Alerts, but only the Enabled field can be set. The WarningLevel, AlarmLevel, and Duration aren't supported for this alert.

17121: New description field

The RTView Alerts have been enhanced to include a Description property in the Alert category. This field can be used to supply a description of the alert. The value of this property is displayed in the Alert dialog in the Display Builder and in the new Description column of the Alert Variables Table.


17122: New command to clear alerts

The RTView Alerts have been enhanced to support a Clear Alert command. In addition to the new command, the Alert Table has been enhanced with 2 new columns: Cleared Reason - This column will list one of 4 values: - DATA UPDATE - This means that the alert was cleared because it received a value that did not meet the alert condition. - EXPIRED - This means that the alert was cleared because it expired due to the value in the alertExpireTime property on the alert. This property is only supported for Event alerts. - DISABLED - This means that the alert was cleared because the alert definition was disabled. An alert can be disabled by the enabledFlag property, the rowEnabledFlag property or the Enable/Disable alert command. MANUAL - This means that the alert was cleared by the Clear Alert command. The Cleared Time column contains the time that the alert was cleared. The new Clear Alert command is available in the Define Alert Command dialog and takes a single id or a ; delimited list of ids for the argument. 2 new substitutions are available for use in the alertClearedCommand: $alertClearedReason - This contains the reason the alert was cleared. It is same value that is in Cleared Reason column in the Alert Table $alertClearedTime - This contains the time the alert was cleared. It is the same value that is in the Cleared Time column in the Alert Table.

17123: New Count column in the Alert Table

The Alert Table has been enhanced to include a new Count column. When an alert is generated, this column contains a value of 1. The value is then incremented each time the alert receives a data update until the alert is cleared. The Alerts tab in the Application Options dialog has been enhanced to include a new option Update Count on Acknowledged Alerts. Deselect this option to prevent updates to the Count column on Acknowledged alerts. By default, if the New Data Only option is selected on a data attachment to the Alert Table, it will not update if the Last Update Time and Count columns contain the only change for that row. This is also true for alert persistence. In order to enable this update for the Alert Table when the New Data Only flag is selected and to enable this for alert persistence, use the following command line option: -lutupdatesnewdata:true/false

17178: -lutupdatesnewdata command fixed

In previous releases, the -lutupdatesnewdata command line option failed. This has been fixed.

Builder - Property Dialogs

17179: Display Data feature fixed to work with named data server

In prior releases, the Display Data dialog in the Builder did not show data for an attachment directed to a named data server. This has been fixed.

Commands

17023: onOpen/CloseCommand now works if background image is used

The onOpenCommand and onCloseCommand properties are now available in the Model Properties dialog when the "Use Background Image" option is checked in the Background Properties dialog.

Customization

17162: Support $value in command from fx objects

A custom flex object can now specify a string to be substituted for $value in commands configured on instances of the object, in the same manner as is supported for RTView control objects (obj_c1combobox, etc). The custom flex code should make the following method call to specify the string to be used for $value: gmsExt.setControlValue(value); where gmsExt is an instance of the com.sl.gmsext.GmsExt class and value is a String object. If the custom flex code calls the GmsExt.tableCellSelected method, then it must call the GmsExt.setControlValue() first, since the GmsExt.tableCellSelected will trigger the object's command. As mentioned above , this feature allows you to use $value in the custom flex object's command. For example, if a drilldown command is configured, you can specify $value in the Drill Down Display Name field of the command's drilldown properties. However, this feature is not supported in the drillDownTarget property of custom flex objects. Since this discrepancy might confuse users, you can hide the custom flex object's drillDownTarget property so that only its command property will appear in the proerty sheet, by adding the following item to the object's gmsVarInfo array declaration: ['__noddtarget', GmsVarDef.G_INTEGER,], // this hides the drillDownTarget property If the drillDownTarget property is hidden, then the user will need to use the command property to specify all drilldowns from instances of the custom flex object, and so $value can always be used.


Data Historian

16962: Historian optimization for storing cache data

The cache persistence feature was introduced in RTView 5.3 (task 15215). It allows a cache definition file to be used as an Historian data configuration file, so that no additional rtv files need to be configured to store and load cache history from a database. But in some configurations this design results in duplication of effort between the cache data source and the historian: The cache data source (managed by the data server, typically) and the Historian both process the raw data (with RTView functions, perhaps) and both perform the primary data compaction, as configured in the cache definition file. The Historian now supports an optional feature that avoids that inefficiency. When that feature is enabled, rather than receiving and processing raw data the Historian instead receives the rows of cache data to be stored from the cache data source (via the data server, if in use) after the processing and primary compaction has already been performed. In addition, the Historian will query the cache data source (via the data server, if in use) for the caches which should be persisted. This avoids the need for the Historian to load the cache definition files as historian data configuration files. If the Historian is used only to persist cache data, it can be run without specifying any data configuration files, if the new feature is enabled. To enable the new feature, specify the following command-line option when starting the historian: -persistCaches:true Or, add the following line to the HISTORY.ini file: persistCaches true Currently the feature can not be enabled from the historian GUI. If the -persistCaches:true option is specified, the Historian will get all of the cache definitions from the local cache data source and any connected data servers. For each cache it finds that is configured for persistence (i.e. has a non-blank value for either the historyTableName or currentTableName property), the historian will create the corresponding database table if necessary and begin inserting rows into those tables. Even if the -persistCaches:true option is specified, the Historian will still load any files that appear in the Data Configuration Files list (in the GUI) or are listed as history_config lines in HISTORY.ini, even if those files contain cache definitions. So if the -persistCaches:true is used in an existing configuration, it will be necessary to remove those files from the list of Data Configuration Files or from HISTORY.ini. Otherwise data for caches defined in those files will get stored twice.

Data Sources

Cache Data Source

17089: Cache dropdown list correct when DataServer field uses subs

A bug has been fixed which prevented the Builder from populating the list of available caches in the "Attach to Cache Data" dialog, in cases where the value entered in the Data Server field of that dialog contained a substitution string.

17156: RTViewDs meta-table added to show all cache properties

The cache data source supports a new meta-table named RTViewDs.CacheObjectProperties that contains all of the scalar property values for each tabular cache. The table can be viewed by making a cache data attachment with Cache = RTViewDs and Table = CacheObjectProperties. The CacheObjectProperties table contains a row for each tabular cache, with the cache name in the first column followed by a column for each obj_cache_table scalar property, in alphabetic order by property name. Tabular properties, like initialTable and valueTable, are not included. Non-tabular caches defined by obj_cache_double instances are not listed in the table.

JMX Data Source

17158: New option Auto-Discover Filter to limit JMX autodiscovery

The JMX Data Source has been enhanced to support a new option: Auto-Discover Filter. If specified, this limits the auto-discovered connections to the ones where the connection's Display Name starts with the specified string. This filter can be specified in the JMX Administration tab in Application Options or via the command line: -jmxautodiscover:XXX Where XXX is the filter. The filter can either be a single value or a ; delimited list of values. For example, the following filter would limit the auto-discovered connections to classes that start with com.sl: com.sl The following would limit the auto-discovered connections to classes that start with com.sl or org.apache com.sl;org.apache

17159: Connection column added to TabularData

The JMX data source has been enhanced to include a Connections column in the TabularData returns. This column shows the name of the JMX Connection for the data.

Display Server

17079: Tooltip in trend graph no longer missing timestamp

In the thin client, the tooltip for each trace point on an obj_trendgraph02 now includes the time that corresponds to the point. The time string format is determined by the graph's legendTimeFormat property or, if that property is not set, the timeFormat property. In the thin client, note that the tooltips are shown on the trace points only if the graph's cursorFlag property is checked.

17112: FireFox scrollbar no longer moves on update of RTView displays.

A problem has been fixed in the thin client in which Firefox would scroll the entire page in order to keep the selected table row in focus, each time a value in that row was updated.

17134: Adding columns to table no longer triggers drilldowns

The following problem has been fixed: In the thin client, if a table has multiSelectFlag = 1 and has a drilldown target, and if columns are added to the table after the display is initially opened, this may trigger multiple extraneous drilldown requests from the thin client, possibly with bogus substitution values. This may make the display unusable. This is a regression bug in RTView 5.9 due to the changes for task 16919.

17135: Display server exception if dd cmd attachment result is empty

The following display server bug is fixed: If an object has a command with type = "Drill Down or Set Substitution" and the command's Drill Down Display Name is attached to data but the attachment returns an empty string (e.g a tabular attachment with a filter that matches no rows) then when the display is opened in the thin client, the message "error generating image" is displayed and a "String index out of range" exception is thrown by the display server.

17148: navtree.xml in PANELS.ini can now be loaded from jar

The display server can now read the navigation xml file referenced in a PANELS.ini file (e.g. navtree.xml) from a jar file. Previously the display server could only read it as an actual file from the working directory.

17164: New option to treat substitutions like in Display Viewer

The Display Server supports a new option that will preserve the values of local variables for which the "Use as Substitution " option is selected when navigating to different displays in the same panel. This is consistent with the behavior of the viewer. The option can be specified on the command line as follows: run_displayserver -clearsubs:false or in DISPLAYSERVER.ini as follows: clearsubs false or in a properties file as follows: sl.rtview.displayserver.clearsubs=false If the option is not specified, then the display server will set all local variables to their initial values when navigating to a new display regardless of the variable's value in the current display, as in all previous versions of the display server. Global variables are not affected by this option.

17196: Fixed crash of table with strings containing ascii null chars

The following thin client problem has been fixed: An "unterminated string constant" javscript error occurs in IE when drilling down to a display that contains a table with a string column in which any strings contain embedded ascii null characters.

17208: Thin client now applies columnHeaderTextSize=0 to obj_table02

The following problem in the thin client has been fixed: In the builder/viewer, setting columnHeaderTextSize=0 on obj_table02 makes the column header invisible. However, in the thin client the column header is still visible.

17209: gridHorizontal/VerticalVisFlag on obj_table02 now applied

The following problem has been fixed: In the thin client, the horizontal and vertical grid lines are always drawn, even if the value of the gridHorizontalVisFlag or gridVerticalVisFlag property is false.

Distribution

17142: New "simple" package option

A new streamlined package of RTView has been added for users who only require application files. This .zip file is compatible with all operating systems that RTView supports. The RTView_X.X.X.X_simple.zip file excludes the following directories and files: demos custom docs servers lib/signed_jars.zip

17177: Alert Demo Data Server shortcut fixed

Previously the Alert Demo Data Server shortcut under the Windows start menu incorrectly started the Historian. It has been fixed to run the Data Server.

Functions

17075: Join Outer function now allows null input

The behavior of the Join Outer function when one of its input tables is null has been improved. Previously the function would return null in all cases if either input table was null. This behavior has been changed as follows: - In case of a full join or right join, if the first (left) input table is null the result will be the second (right) input table. - In case of a full join or left join, if the second (right) input table is null the result will be the first (left) input table. In all other cases result will be null as previously. Note: the behavior of the Join function has not changed.

17077: Performance optimization for Join

The Join and Join Outer functions will now perform significantly faster, especially with large tables.

17136: Sort function exception fixed

The Sort Table function no longer throws a null pointer exception if the table to be sorted is non-null but has zero columns.

Layouts

17188: URL using panels.jsp now can include initial substitution values

To define initial substitution values in a panels layout, the thin client will now accept a "subs" parameter in URLs that specify panels.jsp. For example: http://SomeHost/rtvdisplay/panels.jsp?subs=$table:production_table The panels file must use the <rtvLayout> tag as described in the RN for 15795. Panels files using older formats will still ignore the "subs" parameter, in the thin client. The substitutions will be applied to the initial display(s) opened in the panel layout. If it is desired that those substitutions be applied to displays that are subsequently opened then either (1) the substitutions should be mapped to global variables, or (2) the -clearsubs:fals option should be specified when starting the display server (see 17164 for details)

Local Variables

17150: Corrected scope conflict local vars and global vars of same name

A problem has been fixed which in some cases caused RTView to use the value of a global variable even though a local variable with the same name but a different value was defined in the current display.

Object Library

17074: Improve mouse over performance on composites

Improvements have been made to reduce CPU usage in the Builder and Viewer for the case where display contains many composite objects and an object's mouseover text (tooltip) is visible in the display.

17144: Mouse over no longer in wrong place after window resize

In previous releases, the mouse over was drawn in the wrong location on displays that had been resized. This has been fixed.

17163: Corrected mouseover clipping on right side of display

In previous releases, the tooltips that displayed next to the right side of the display were sometimes clipped in the following situations: 1. In the Display Viewer, tooltips were sometimes clipped on the right side of displays there were using the Multiple Display Panels layouts and there was another panel such as a navigation panel to the left of the display. 2. In the Thin Client, tooltips were sometimes clipped on the right side of the display if the tooltip text contained mostly upper case letters. Both of these have been fixed.

Composite Object

17080: Opening/closing/scrolling display w. many composites optimized

Improvements have been made that reduce the time required to open, scroll, and dismiss a display containing many composite objects.

Fx Trend Chart

17140: Current table update no longer clears history on fxtrend

A problem has been fixed in obj_fxtrend in which historical data that had recently been plotted via the traceNValueTable property would be cleared by the first update to the traceNValue property.

Pie Charts

17132: obj_pie exception in thin client fixed

The display server no longer throws an array bounds exception when rendering an obj_pie instance that has both the mouseOverFlag and rowSeriesFlag properties set.

Version 5.9.0 Release Notes

Alerts

16909: New Self Service Alert demo

The Self Service Alerts demo has been added to the RTView installation in demos\selfservicealerts. This demo works with the new Self Service Alerts feature and contains displays to view and interact with your active alerts and to configure your alerts. Alert settings are automatically persisted to a database. An audit table is also provided which tracks changes to the settings.

16936: Text in alert table updated when threshold changes

The Alert Table has been enhanced so that the Alert Text updates if the threshold for an active (ie uncleared) alert changes.

16954: New option to add comments to alerts

The RTView alerts have been enhanced to support comments. The Alert Table now contains a Comments column. This column is initially blank, but is updated by the Add Comment and Clear Comments commands. Comments can be added or cleared for any active, cleared or acknowledged alert unless that alert has been purged from the system. The Add Comment command takes 2 arguments: the alert id and the comment to add. The specified comment is timestamped and added to the alert's comments. The Add Comment command does not replace existing comments on the alert - the new comment is added after the previous comment. The Clear Comments command takes 1 argument: the alert id. This command clears all of the comments from the alert. A new property, commentAddedCommand has been added to all alerts. If specified, this command will be executed after a comment is added to the alert by the Add Comment command. All of the substitutions that are supported for the alertCommand are also supported for this command. Two additional substitutions are also supported for the commentAddedCommand: - $alertComment - This is set to the value of the Comments field for the command after the new comment has been added. - $alertLastComment - This is set to the value of the last comment added to the Comments field. The Self Service Alerts demo has been updated to include support for alert comments. In the Alert Table, click on an alert to open the manage alerts dialog. In this dialog, you can view existing comments, add new comments or clear the comments for the alert. To add a comment, enter your comment text in the Enter Comments field, then click Add Comment. To clear the comments for an alert, click the Clear Comment button. If you have enabled the RTView login for the Self Service Alerts demo, the user name is added to the beginning of the comment.


16955: New Data Only option has been added

The following Alert tables have been enhanced to work better with the cache and Historian: Alert Table Alert Variable Table Tabular Alert Tables For these tables, when any row in the table changes, the listeners for that table receive updates containing all rows in the table. This is inefficient for the caches and Historian. A New Data Only option has been added to the Attach to Data dialog for these tables. When selected, the listener is only updated with the rows that change for those tables. By default, if the New Data Only option is selected, the Alert Table will not update if the Last Update Time column contains the only change for that row. In most cases, this update is not needed by the cache or Historian. In order to enable this update for the Alert Table when the New Data Only flag is selected, use the following command line option: -lutupdatesnewdata:true/false

16994: Discrete Alert no longer throws a NullPointerException

In previous releases, the Discrete Alert would throw a NullPointerException if the input value was null. This has been fixed.

Builder

16361: Edit Function and Function Description dialogs positioning issue

In the Display Builder Function Dialog, the Edit Function Dialog when opened for the first time was sometimes positioned too far toward the bottom of the screen, so that its buttons and its help dialog could end up off-screen. The initial position of this dialog has been corrected. Note the position of this dialog is not maintained across invocations of the Builder.

16957: Get Data Server Connection Status now populates initially

The following problem existed in the previous release and is now fixed: If an instance of the "Get Data Server Connection Status" function is created in the builder and a table object is attached to the function, the table is empty until the display is opened in the preview window.

Builder - Options Dialogs

17061: Popup menu now opens on correct monitor in dual monitor setup

If the Builder or Viewer is run on a system with multiple monitors, popup menus and command confirm dialogs will now always open on the same monitor as the window in which the user clicked. In prior releases, the menus and confirm dialog would sometimes appear on the wrong monitor.

Builder - Palette Handling

16690: NPE while dragging an object corrected

In previous releases, the Display Builder occasionally printed a stack trace when an object was dragged when being instanced from the palette. This has been fixed.

Data Historian

16853: Historian's "Store Last Value Only" improved

The historian's "Store Last Value Only" feature has been improved to store the last set of rows applied to each object that specifies a given database table name in its historyTableName property, including the case where multiple objects have identical attachment strings. This is useful in a historian configuration where multiple objects, loaded from unique history config files, are attached to functions with the same name and all specify the same database table name. Previously only the rows for the last such object to be updated were stored.

17020: Enable substitutions for Historian Compaction properties

The "compactionRules" item in the Data Compaction: Secondary (Historian) category may now be edited directly and use directly typed rules, directly typed Substitution variable names and variable names attached via the Attach to Data menu.

Data Server

16729: Server upward compatibility now supported

Future compatibility between clients and servers of different RTView versions is now possible because of changes to avoid serialVersionUID mismatch exceptions and ClassNotFound exceptions due to changes made between RTView versions to serializable classes and obfuscation of fields in those classes.

16751: Utility app for cleanly stopping the Data Server

A new utility, kill_dataserver, has been added for stopping the Data Server cleanly. Both a Windows .bat and Unix shell script version have been provided By default kill_dataserver will kill the Data Server running on port 9020. The following arguments are available. These can be hard-coded in the script by uncommenting the line provided and changing the value, or they can be entered at the command line. -host: -name: -operation: -port: -user: -password: -url: -silent/verbose Example (defaults): -host:localhost -name:RTViewHistorian:name=Manager -operation:killHistorian -port:9020 Example of optional arguments (not set by default): -user:myuser -password:mypass -url:service:jmx:rmi:///jndi/rmi://localhost:9995/jmxrmi

16950: Config column added to data server conn status table

The table returned by the function "Get Data Server Connection Status" now contains an additional column labeled "Config". This column contains the RTView configuration string that identifies the RTView version of the data server.

16968: Timeout added for http client connections to rtvdata servlet

An RTView client application that is connected to the data server via the rtvdata servlet will now retry sending an http request if no reply is received from the rtvdata servlet in 2 minutes. Previously the client would wait forever, which resulted in lost contact with the data server if an http request stalled or was lost.

16969: Stale http clients in rtvdata servlet now removed

In prior releases, if a client was connected to the data server via the rtvdata servlet and the client terminated abruptly or the connection was lost, the client would remain in the data server's list of client indefinitely. Now, "stale" http clients are removed after 10 minutes of inactivity.

Data Sources

16996: rtvagent servlet no longer leaks session IDs

In prior releases, rtvagent would use the initial session ID assigned by the app server (tomcat) even if that session had timed out because of inactivity. This would cause the app server to assign a new session for each subsequent request from the agent. This has been fixed.

CMDB Data Source

16656: New CMDB data adapter

A Configuration Management Data Base (CMDB) data source has been added to RTView. The CMDB data source allows the users to describe a set of configuration items (CIs) and their hierarchical relationships and store that information into one or more databases. Configuration items can by of two types, one is a Container and the other is a Metric Source. This solution allows you to define the configuration information necessary to enable the Metric Source in one (or more) central databases (CMDB). It also allows application builders to construct displays from the RTView Builder with a visual representation of the hierarchical tree based on the relationships of Container and Metric Source configuration items placed in the CMDB.


Cache Data Source

16970: "Mark & Delete" value added to rowExpirationMode cache property

The cache property rowExpirationMode now supports an additional mode named "Mark & Delete", in addition to the other modes named Off, Mark, and Delete. (Those modes are described in task 16725). When Mark & Delete mode is selected, an additional property named rowExpirationTimeForDelete will appear in the property sheet, The Mark & Delete mode is useful in cases where a row in the cache's current table should be marked as expired after the time period indicated by the rowExpirationTime has passed and the row has not been updated, and then later the row should be deleted after the time indicated by rowExpirationTimeForDelete has passed. For example, say a cache has the following property settings: rowExpirationMode: Mark & Delete rowExpirationTime: 30m rowExpirationTimeForDelete: 4h rowExpiredColumnName: Expired If a row in the cache's current table is not updated for 30 minutes, the value of the Expired column for that row will be set to true. If a row is not updated for 4 hours, it will be deleted from the current table.

16971: rowsToDeleteTable now works for any subset of cache columns

The cache rowsToDeleteTable property is intended to be attached to a table that specifies the rows to be deleted from the cache's current table. In prior releases, the rowsToDeleteTable was required to contain all of the columns specified in the cache's indexColumnNames properties. Now the rowsToDeleteTable can contain any subset of the columns in the cache and all the rows in the current cache whose values in those columns match the values a row in the rowsToDeleteTable will be deleted.

16988: Fixed NPE caused by loading history_condensed table

The following bug has been fixed in this release: The cache data source threw a NullPointerException when a listener was added to a cache's history_combo table if the cache's history_condensed table already contained data (restored via database query) but the cache's raw history table did not yet contain any live data.

17004: valueTableCount change no longer hides compaction props

Changing the valueTableCount property on obj_cache_table no longer changes the visibility of the cache compaction properties in the Builder's property sheet.

17039: SQL extend plus multi-column filter with empty values fixed

The following problem is fixed: If a cache attachment has the Extend with SQL option checked and the Filter Column field specifies multiple columns but the Filter Value field specifies multiple empty values then an array bounds exception is thrown.

IBMMQ - IBM WebSphere MQ

16756: More robust handling of errors in manually edited rtv files

Under certain circumstances incorrectly manually edited rtv files would cause issues with the rtview runtime. More robust error handling has been added which will help identify the element at fault: e.g. Error: Unable to URL Decode: xxxx

16768: New IBM MQ data adapter

The IBMMQ Datasource has been added to RTView that replaces the deprecated IBMADM Datasource. The new IBMMQ data adapter allows access to IBM WebSphere® MQ servers and the ability to query metrics from key MQ entities such as Queue Managers, Queues and Channels. Metrics may be obtained from named objects of a variety of types. Names may be single, multiple and/or wildcarded to restrict the subset of Objects queried, if required. The IBMMQ Data Source is built in and requires no additional command line arguments. However it does need the required jars (com.ibm.mq.pcf-6.0.jar;com.ibm.mq.jar;connector.jar) on the RTV userpath as described in the Setup section of the System Requirements documentation for the Data Source. For full details see the IBMMQ Data Source section in the User Guide Documentation.

16776: Reduced connection resources in RTView IBMMQ data source

The Connection resources (number of connections) used by the RTView IBMMQ data source has been reduced when connecting to an IBM MQ server. The Connection used is released if connection fails due to a MQRC_NOT_AUTHORIZED error.

16777: MQRC_NOT_AUTHORIZED at connection now marks connection INVALID

If a MQRC_NOT_AUTHORIZED exception (reason code 2035) occurs at connection time, the offending connection is now marked as INVALID. This means that no subsequent connect attempts will made using this connection.

16905: Channel Status Values Returned for active channels

Active channels now return channel status values in the Status column. (inactive channels cannot be queried, so return no data) Status Values can be one of the following BINDING Channel is negotiating with the partner. STARTING Channel is waiting to become active. RUNNING Channel is transferring or waiting for messages. PAUSED Channel is paused. STOPPING Channel is in process of stopping. RETRYING Channel is reattempting to establish connection. STOPPED Channel is stopped. REQUESTING Requester channel is requesting connection. INITIALIZING Channel is initializing.

16913: conn=* is now supported for the IBMMQ Data source.

You can now use * to specify ALL connections in IBMMQ data attachments. Thus you can use conn=* to show the state of all connections without having to know an individual connection name. The data is queried across the connected connections, and is updated as it is returned from the individual connections. The conn column in returned data is populated with the actual connection used to query the data. Since the data is updated as it is returned from the individual connections, you may need to use the buffer rows function to batch the asynchronous data for display. You may also need to use caches to aggregate the data returned from multiple connections. Limitation: The Join function may not function as you expect when fed with data from multiple connections that arrives asynchronously.

16914: Queues now include Open input count and Open output count

Queue Data now contains Open input count and Open output count Columns Queue Data returned from IBMMQ Data Attachments of Object (Type) Queues or Queues (PCF) now contain Open input count and Open output count Columns. Open Input Count Shows the number of open input handles, that is the total handles open for input on this queue. This gives you an idea of the number of applications that are currently connected to the queue to put messages on the queue . Open output count Shows the number of open output handles, that is the total handles open for output on this Queue. This gives you an idea of the number of applications that are currently connected to the queue to get messages from the queue

16941: Prevent creation of additional Dynamic Queues for Model Queues

Queries of the form Object=Queues obtain their information my using the accessQueue() method on the QueueManager for a named queue. If the named Queue is a Model Queue, then as per the API, a dynamic queue is created on the server. This is not desired behavior for a monitoring tool - so we detect this condition, issue an error message that identifies the cause, disconnect the connection, and mark the connection invalid to prevent further re-occurrences. The Error message is of the form: IBM MQ Data Source: 2011-03-07T16:37:47.0484 : ERROR: connection: vmrh5-3: Accessing model queue: SYSTEM.DEFAULT.MODEL.QUEUE created dynamic local queue: AMQ.4D5C8E6423C42331 from query :ibmmq {conn=* object=Queues names=TEST*%3BSYSTEM* __fmt=av1 __daum=1} IBM MQ Data Source: 2011-03-07T16:37:47.0484 : Marking connection vmrh5-3 as invalid to prevent creation of additional queues If this occurs, the user should investigate the Queues data attachment, and modify it so that model queues are not referenced by the Queues Query , or use the Queues (PCF) query instead.

16942: Connection attempt counter reset after successful connection

Previously the attempt counter was not reset after a successful Connection attempt, leading to an absolute Max Retry Attempts. Now the Connection Attempt Counter is Reset after a successful Connection attempt, leading to unique Max Retry Attempts between successful connection attempts.

16951: Unlimited connection attempts now allowed for a connection

Unlimited connection attempts are now allowed for a Connection, when an -ive value is specified for Max Retries. It is suggested the value of -1 is used to signify this. In this case, unlimited connection attempts will be made until a connection is established. This may be useful when MQ servers are cycled for maintenance, or the servers are expected to be down for a period and a connection is wanted when the servers come back up.

JMS Admin Data Source (for TIBCO EMS only)

16871: Attachments to Topics and Queues now support compound urls

In previous releases, data attachments to the Topics and Queues metrics in the EMS Administration Data Source did not support compound urls for fault tolerant servers. This has been fixed.

16873: Durables query to standby servers no longer throws exception

In previous releases, if the EMS Administration data source was monitoring a fault-tolerant pair of servers and you attached to the Durables table, the following error would print to the console on each update: ERROR: com.tibco.tibjms.admin.TibjmsAdminException: In fault tolerant standby, list of durables not known. (status=1) This has been fixed.

Pipe Data Source

16717: New Pipe Data Source

The RTVPipe data adapter supports data attachments which will launch an external process, read the text output of that process, and convert it into a string or a data table for use within RTView. The external process can be any executable program or script that writes lines of text to its standard output stream. The connection between RTView and the output stream of the process is referred to as a "pipe". The RTVPipe data adapter uses a Java class known as a "pipe handler" to parse the output it reads from the process. The pipe adapter has two simple built-in handlers -- one that converts the process output into a multi-line text string and another that converts it into a single-column table with one row per line of output. For more sophisticated conversions a custom PipeHandler subclass can be written and used. See the RTView javadocs for more details. There are examples of custom handlers in the custom/rtvpipe directory of the RTView installation. Custom handlers are specified in the RTVPipe tab of the Application Options dialog of the Builder. The "Attach to RTVPipe Data" dialog contains the following fields: - Command String: A text field used to specify the command string to be executed by the pipe adapter. The pipe adapter will connect to the output stream of the process that is created by executing the command string, and send the lines of text from that stream to the handler. The command string can contain substitutions. After the substitutions have been applied, the command string must be executable on the host on which the pipe adapter is running. On Windows, this means that the command string must specify a .exe file (which could be "cmd.exe /c x.bat" to run the x.bat script file). On Unix/Linux, the means that the command string must specify an executable program or shell script. In all cases the launched process must write lines of text to its output stream. - Handler: A dropdown list for selecting the name of the handler to be used to process the lines of text input as they are read from the pipe. The names that appear in the list are the two simple built-in handlers (Generic text, Generic Table) plus any custom handlers defined on the RTVPipe tab of the Builder's Application Options dialog. A unique instance of the handler class will be created for each unique pipe (each unqiue data attachment). - Handler Hints: A text filed for specifying string of "hints" to be passed to the handler. If the selected handler does not support hints (the built-in Generic handlers do not) this field is not visible. The expected format of this string is determined by the selected handler. -Run Mode: A dropdown list with choices of Once, Periodic, or Continuous. The run mode specifies what action the pipe adapter should take when the pipe's process terminates (completes). If Run Mode = Once, the adapter will not re-execute the command string after the process terminates. This mode is useful for an on-demand reading of a complete error log file, for example. If Run Mode = Periodic, then after the process terminates the adapter will re-execute the command string again after waiting for the number of seconds specified in the Interval field. This mode is useful for periodic reading of an updating file via a command such as "cat" or "tail" (without the -f/-F option). If Run Mode = Continuous, then after the process terminates the adapter will re-execute the command string immediately, since the assumption in this case is that the process should never terminate unless an error is encountered. This mode is useful for reading an updating log via a continuous command such as "tail -F". - Interval: A text field for entering the number of seconds in each run interval. This field is visible only when Run Mode = Periodic. - Timeout: A text field for entering the timeout in seconds for a continuous process. This field is visible only when Run Mode = Continuous. If no output is read from the process in the timeout period, the process will be restarted. The default value is zero indicating no timeout. The following fields are applicable if the selected handler indicates that it returns a data table from its parseLines method. If instead it returns a string, these fields are not visible. These fields appear in most other RTView data attachment dialogs (such as the "Attach to Cache Data" dialog) and are used to specify a filter on a table: - Column(s): A combo box for specifying the names of the table columns to include in the result, or * (the default) for all columns. - Filter Rows: A checkbox to enable the following 2 fields: - Filter Column: The name(s) of the columns(s) to which the Filter Value should be applied. - Filter Value: The filter value(s) to be applied to the filter columns. See the RTView documentation for details on the format to be used for specifying filter values. Note tha wild cards and regular expressions are not supported in the Filter Value field. For that type of filtering, various standard RTView functions are available. As mentioned above, users can create custom handler classes if necessary to parse the output of specific programs or scripts. In the RTVPipe tab of the Builder's Application Options dialog, a Handler Name and a Java Class Name are assigned to each custom handler that will be used. The Handler Name is used in RTVPipe data attachments, as described above. The Java Class name is the fully-qualified name (java package name + class name) for the class that implements the handler. This class must be in the class path at run time.

16998: Corrected NPE when process exits

A problem has been fixed which caused the pipe data source to occasionally throw a null pointer exception when the pipe process terminated. An exception message and stack trace were printed but the exception had no other side-effects.

SNMP Data Source

16796: Trap receivers now started for all connections

If the SNMP Data Adapter was configured for two or more connections on different ports, and display contained a data attachment to receive traps from "*", only the trap receiver for the default connection would be started. This has been fixed; at the first occurrence of a data attachment to connection "*", trap receivers will be started for all connections.

16848: SNMP debug tracing updated with additional print statements

The SNMP Data Adapter tracing feature has been enhanced with new levels of detail, enabled with snmptrace values of 11 or higher.

16925: New SNMP metadata table

The SNMP Data adapter now provides access to internal metrics tables via the connection name RTViewDs. There are two tables, Data and Traps, which will appear in the Object ID dropdown when a data attachment is being made to RTViewDs. The Data table presents information about SNMP Get requests per-connection and per-OID. The information includes: Total Requests (count), Failed Requests (count), Last Time (msec), Average Time (msec), Last Error (string). The Traps table presents information about SNMP traps received, per-connection and per-OID. The information includes: Traps Received (count), Last Timestamp (date).

16958: New SNMP Data Source

The RTView SNMP Data Adapter has been added to the standard data adapter set. For those who have been using it as a supplemental data adapter it will no longer be necessary to identify it as a "custom" data source (via command line or option file) when running or to add its jars to the RTV_USERPATH environment variable.

SQL Data Source

16705: Quotes around column names respected when queries combined

The following problem in the SQL data source is fixed: If two separate SQL data attachments on the same display specify the same database table but different columns, and neither attachment has the "Enter SQL Query" box checked, the combined SQL query string will not contain any quotes that the user placed around the column names, causing the query to fail on some databases.

16746: Reduced excessive garbage collection calls

The SQL data source no longer forces a garbage collection after each query is completed. This may provide a small performance improvement in some configurations.

Splunk

16681: Splunk Datasource now supports Version 4

The Splunk Data Adapter is now compatible with Version 4 releases of Splunk. This version may still be compatible with version 3 releases of Splunk, but has not been tested with it.

16771: New command line options added to splunk data source.

New command line options have been added to the Splunk data source to provide additional logging information. -splunklog4jlevel: This option enables using log4j logging in the Splunk API library using the standard log4j levels of FATAL, ERROR, WARN, INFO and DEBUG. For example, the following: -splunklog4jlevel:DEBUG will create output files containing the raw json data returned for a search. (NOTE: Use with caution as this may lead to the creation of a large number of large files) Additional command line options allow testing for ragged data with -splunkTestCols (for output) and -splunkUseCols (to add cols to tabular data).

WMI Data Source

16786: Convert WMI DateTime values to Date values

Previously the WMI Data Adapter did not correctly convert WMI DateTime values to Date values. The WMI Data Adapter now converts WMI DateTime values to Date values in GmsTablularData. The conversion handles both Date Values of DateTime and Interval values of DateTime. Intervals are stored as milliseconds (offset from the epoch start). Converting an Interval Date column to a Long column will extract and convert the offset and thus display the offset in milliseconds as a Long

Demos

16718: New RTVMonitor Demo

The RTVMonitor is a set of displays that will enable users to view the status of all RTView Data Servers, Display Servers, Historian and Tomcat applications in a system. The RTVMonitor, using the the RTView JMX Data Adapter, displays connectivity information available via JMX, as well as all detailed operational and management features currently available via JMX. The displays are viewable on a central browser-based RTView dashboard, as well as an application.

17048: Tomcat App page bug fixed

In the RTVMonitor, a bug had prevented the Tomcat server APP page from displaying data (in most cases). This has been fixed.

Display Server

16477: Removed 1px dark border around checkbox & radio button in IE

In the previous release, an extraneous 1 pixel dark border was drawn around radio button and checkbox controls when a display was viewed in the thin client in Internet Explorer. This problem is fixed.

16766: Localization support added for browser messages

The text displayed by the thin client in its popup menu, login window, status window, and in various error messages is now specified in the file named rtvdisplay_strings.properties. That file is found in the WEB-INF/classes/gmsjsp directory of the rtvdisplay.war file. For localization, the file can be extracted from the war file, copied to a new file with the desired locale suffix (e.g. rtvdisplay_strings_ja.properties for Japanese), and the new file can be packed into rtvdisplay.war, in WEB-INF/classes/gmsjsp. The locale setting of the app server (e.g. tomcat) will be used to determine which properties file to load. If the app server does not have the desired locale setting for the thin client, then edit the original file (rtvdisplay_strings.properties) instead.

16767: Disabled button no longer looks enabled in some browsers

In prior releases, disabled buttons had the same appearance as enabled buttons, in the thin client in Firefox or Safari. Now, the text will be "grayed-out" on disabled buttons.

16861: Display sharing in display server and rtvdisplay servlet

The Display Server and the rtvdisplay servlet have been enhanced to improve performance by sharing specified displays among all clients. This is intended to improve performance in configurations where many clients will typically be viewing the same display simultaneously. The display server will load a single copy of each shared display, rather than loading a separate copy for each client. In addition the rtvdisplay servlet will temporarily store the web page content (html, image, javascript) generated for a shared display and will then reuse that content to satisfy requests for the display from any client, rather than regenerating it for each client request. There are limitations on the features that can be used on a shared display, so displays to be shared should be selected carefully. These limitations are described later in this note. Each display to be shared is identified in DISPLAYSERVER.ini as follows: shared_display <filename> [substitutions] where <filename> is the name of an rtv file and [substitutions] is an optional list of substitution string:value pairs, separated by spaces. If a substitution value contains spaces it must be enclosed in single quotes. For example: shared_display navtop.rtv shared_display summary.rtv $region:East shared_display summary.rtv $region:West shared_display summary.rtv $region:'East and West' The display server will "preload" all of the shared displays at startup, rather than waiting for a client to request the display. Subsequently, any client request for a display (plus substitutions) that exactly matches one of the shared display entries in DISPLAYSERVER.ini will be processed using the corresponding preloaded, shared display. The rtvdisplay servlet is also involved in display sharing. As mentioned earlier, it will keep the web page content that it generates for each shared display and use that same content to respond to all client requests for the shared display that it receives within the "shared display refresh interval". By default the interval is 15 seconds and can be changed by specifying a property named SharedDisplayRefreshInterval in rtvdisplay.properties. If the servlet receives a client request for the shared display after the interval has expired, the servlet will check with the display server to see if the stored content is "stale" (that is, if any data has been applied to the display since the content was generated). If it is not stale the servlet will store the content for another interval. If it is stale, the servlet will get the updated display state from the display server and then regenerate the content. The servlet will periodically purge the stored content for shared displays if it has not been accessed within one shared display refresh interval plus one minute. The JMX Mbean operation named RTViewDisplayServer.Manager.clearDisplayCache can be used to clear and reload all shared displays in the display server and clear all page content for shared displays currently stored in the rtvdisplay servlet Note that the performance benefit of display sharing is obtained only if multiple clients request the same shared display within a single shared display retention interval. So only displays that are frequently requested should be considered for sharing. The maximum number of shared displays for which the servlet will store the content is determined by the MaxSharedDisplays property, which has a default of 10. This property should be set to a value at least as large as the number of shared_display entries in DISPLAYSERVER.ini. Tracing of display sharing in the servlet can be enabled by adding the following line to rtvdisplay.properties: SharedDisplayTrace=true Any client request that specifies a display name and substitutions that does not match a shared_display entry will be processed in the normal "unshared" manner. That is,the server loads a unique copy of the display into its own panel, and closes the panel when the client dismisses the display, and the servlet discards the page content that it generates for the request after returning the content to the client. In the thin client, a user can determine if a shared display is being viewed by right clicking in the display and picking Status from the popup menu, and then checking the Panel ID string shown in the Thin Client Status window. For a shared display the Panel ID string begins with "preload". Metrics about requests for shared displays can be viewed by opening the page named servletstatus.jsp in a browser, for example: http://localhost:8068/rtvdisplay/servletstatus.jsp. The page contains the following info: request count: the total number of client display requests received connection: the current connection from the servlet to the display server started: servlet's start time shared display refresh: the value of the SharedDisplayRefreshInterval property, in seconds shared display hits/tries: the number of client requests satisfied by stored content for shared display / total display requests. A high % indicates that display sharing is effective, a low % indicates that it is not effective for the requests being received. shared display updates: the number of times the servlet has stored or updated shared display content shared displays: number of shared displays stored / MaxSharedDisplays. This is followed by a list of the shared display content which is currently stored in the servlet. Limitations. The following features should not be used on shared displays, since these features can change the state of a display for each user. - A resizeMode of Layout or Scale. - Scrolling on obj_trendgraph02, obj_bargraph, obj_objectgrid. - Paging mode on obj_table02. - User-specific or role-specific substitutions ($rtvuser, $rtvrole, etc). The resizeMode is forced to Crop on all shared displays, user-specific substitutions are not applied to shared displays, and the thin client will never display scrollbars on the objects mentioned above in shared displays. In addition: - The substitutions in a client request for a shared display must exactly match those specified in the entry in DISPLAYSERVER.ini, including the order of the substitutions, otherwise the request will be treated as for a non-shared display. - All shared displays share the same set of global variables and function. On all other (non-shared) displays, the display server uses a separate set of globals that it maintains for each browser session. So, if a any user changes the value of a global variable X from a shared display, all users viewing any shared display will see that same value of X, even users on separate machines. However, the value of X on any non-shared displays will not be affected by that change. - A drilldown to a shared display always behaves as though the "Remove Existing Substitutions" box was checked in the Drill Down Properties dialog. This is necessary so that substitutions in the source display aren't included in the drilldown substitutions, which might prevent them from matching the shared display's substitutions.

16919: Table row selection problem fixed

A problem has been fixed in the thin client in which the row selection in a table object was not properly cleared when the columns in the data table changed, and if the user then selected the same row in the table as was previously selected, the row was not highlighted.

16949: Images with backslash in path in table's filterProp now load

In prior releases, the thin client would fail to load images for table cells if the path to the image (as specified in the table object's filterProperties) contained backslashes. This is fixed.

16960: Immediate refresh of main display after dd or setvar in dialog

In the thin client, setting a global variable by a drilldown or control click in a dialog window will now trigger an update in the main display within a few seconds, so that the main display reflects the change. Previously the main display did not update until the next scheduled refresh interval.

16985: Concurrency problems in heavily loaded display server fixed

Several conditions that caused null pointer exceptions and deadlock in a heavily loaded display server have been fixed.

17007: Export to PDF window now resizeable

The browser window opened by the "Export to PDF " menu item in the thin client is now resizable in all supported browsers.

17030: Corrected occasional stale shared display content

The thin client would sometimes show stale content for a shared display, for extended time periods. This has been fixed.

17057: Long URL in IE8 supported in drilldown to new window

The following problem that affected the thin client in Internet Explorer 8 has been fixed: In the thin client in IE8, a drilldown to a new window fails with the error "Internet Explorer cannot display the webpage" if the URL is longer than 2083 characters. Typically this occurs if the parent display contains many substitution/value since those are included in the URL, unless the "Remove Existing Substitutions" box was checked when the drilldown target was configured.

Distribution

17060: RTView renamed in Windows installer

The Windows Start Menu shortcut directory and installation directory have been changed from: RTView <version> ERTV_<version> to: RTView <version> RTV_<version>

Drill Down

16745: Fixed JS error on custom flex object with slow initialization

A problem in the thin client has been fixed which caused a javascript exception to be thrown if a custom flex object was slow to initialize. The exception was "Error: div.player.setGmsVar is not a function".

16887: $colName and $celldata now correctly passed to drilldown

In prior releases, the $colName and $celldata substitutions were not always set to the correct values for the selected bar, when performing a drilldown from a bargraph whose drillDownSelectMode property was set to "Anywhere" and whose mouseOverFlag and mouseOverHighlightFlag properties were both unchecked. This is fixed.

16967: Navtree drilldown now sent to correct panel

A bug has been fixed that affected PANELS.ini files using the tree and accordion navigation controls with the rtvlayout tag. This bug sometimes caused the display selected from the tree/accordion control to be opened in the RTView panel that last received a mouse event (a popup window, for example) rather than in the main RTView panel. This bug only affected the Viewer, not the thin client.

Functions

16533: Format Table Columns function now supports date/time formatting

The Format Table Columns function has been enhanced to accept date/time patterns for formatting columns of type Date. For example consider a column 'Timestamp' with the value 'Sep 06, 2008 7:27:36 AM'. If it was formatted with 'Timestamp':'MM/dd/yyyy' the result would be '09/06 /2008'. If it was formatted with 'Timestamp':'hh:mm:ss' the result would be '07:27:36, etc. The full list of formatting codes comes from the Java documentation for the class SimpleDateFormat: Letter Component Presentation Examples G Era designator Text AD y Year Year 1996; 96 M Month in year Month July; Jul; 07 w Week in year Number 27 W Week in month Number 2 D Day in year Number 189 d Day in month Number 10 F Day of week in month Number 2 E Day in week Text Tuesday; Tue a Am/pm marker Text PM H Hour in day (0-23) Number 0 k Hour in day (1-24) Number 24 K Hour in am/pm (0-11) Number 0 h Hour in am/pm (1-12) Number 12 m Minute in hour Number 30 s Second in minute Number 55 S Millisecond Number 978 z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 Z Time zone RFC 822 time zone -0800

16703: GroupBy funcs now allow mult group if Use Column Names" 0

The GroupBy... functions now allow "Use Column Names" to be set to zero when multiple grouping types are specified.

16860: Group by Time function no longer fails with non-english locale

All Group by Time functions will no longer fail with non-English locale settings or on machines running non-English versions of Windows.

16910: New Table Contains Values function

RTView has been enhanced with a new Table Contains Values function. This function returns a copy of the specified Table with a new boolean column containing a value of true for each row where the value in the Comparison Column is in the Comparison Table. Table - A table containing a column in which to search for values from the Comparison Table. Comparison Column Name - The name of the column in the Table in which to search for the values in the Comparison Table. Result Column Name - The name of the boolean result column to add to the Table. If no name is specified, the column will be named Result. Comparison Table - A one column table containing the values to look for in the Comparison Column of the Table.

17042: Distinct function no longer crashes if data includes nulls

In prior releases, if the table input to Distinct Values function contained null strings in the specified column, a null pointer exception was thrown. This is fixed. Now a null string is treated as an empty string.

General

16874: New java option to include timestamp in console output

RTView applications have been enhanced to include timestamps in the console and log file output. By default, all output will include timestamps. To disable timestamps, include the following jvm option in your RTV_JAVAOPTS: -Dcom.sl.rtview.logTime=false

17049: rtv_init.ksh no longer adds ":" to the beginning of PATH

Previously the rtv_init.ksh script would pre-pend an unnecessary ":" to the start of the PATH variable. This has been fixed.

Object Library

16931: labelMinTabWidth removed from obj_ind_panel indicator

In previous release, the obj_ind_panel object had the labelMinTabWidth property. This property was not used and has been removed.

Composite Object

16961: mouseOverText within composite no longer disables drilldown

In previous releases of the thin client, a click on object with mouseOverText (but no drilldown or command set) in a composite did not trigger the drilldown or command defined on the composite object itself. This is fixed.

Control Objects

16911: Double text entry control now accepts NaN

In previous releases, the double text entry control (obj_c1textedit_d) did not accept NaN. This has been fixed.

Heatmap

16760: One-node heatmap now drawn when colorValueAutoScaleMode=on

In previous release, the heatmap node would not paint if the colorAutoScaleMode was set to On and there was only one node. This has been fixed.

17024: Heatmap exception with multiple index columns fixed

In previous releases, the heatmap object would sometimes throw an exception when there were multiple indexColumnNames specified. It happened in cases where either the colorValueGroupType and sizeValueGroupType were different or when the valueQualityColumnName property was specified. This has been fixed.

Pie Charts

16965: Mouse hover on on pie chart exception corrected

In previous release, the pie would throw an exception during mouse over of a wedge if the wedge had a 0 value. This only happened if the 0 value wedge was the last one in the pie. This has been fixed.

Status History

16713: Sort Column Name feature added to Status History Object

A Sort by Column Name feature was added to the Status History Object (obj_statushistory). There are two new properties under Sort named "sortColumnName" and "sortByLabelsFlag". The new behavior is as follows: 1) sortByLabelsFlag = true : The sortColumnName property is hidden, and the bars are sorted by their labels. This is the default behavior. 2) sortByLabelsFlag = false, sortColumnName = : The bars are sorted by the value in the column in the last (most recent) row. 3) sortByLabelsFlag = false, sortColumnName = "" : The bars are drawn in unsorted (natural) order. For (3), the unsorted order of the bars is the order in which the 1st row for each bar was encountered in the data table attached to valueHistoryTable or valueTable. Also in (3) the sortAscendingFlag property has no effect.

Trend Charts

16915: yAxisFlag now consistently makes Y axis invisible

In prior releases, yAxisFlag was ignored for some yAxisMultiRangeMode settings. Unchecking the yAxisFlag property of obj_trendgraph02 will now hide the Y axis labels and tick marks regardless of the yAxisMultiRangeMode setting.

17056: Builder freeze fixed

A bug has been fixed which caused the Builder to enter an infinite loop if an obj_trendgraph02 instance was configured so that yValueMin = 0 , yValueMax = 0, traceCount = 1, "demodata" was cleared from the trace1ValueTable property, and yAxisPosition was Inner Left or Inner Right.

Reporting

16724: Exported PDF headers/footers may now be customized and localized

Exported PDF Headers and footers can be customized by use of properties defined in the rtvreport.properties file (in the custom/rtvreport directory) Default headers and footers will be overridden if two conditions are met 1) The appropriate property is defined in the rtvreport.properties file 2) The rtvreport.properties file is on the classpath of the application exporting the PDF File The rtvreport.properties file gives details about defining property values Since "." (the current directory) is on the default classpath for RTView applications, one of the simplest means of using the rtvreport.properties file is to copy it into the directory where the application is started. (Typically, this will be where the initial .rtv files reside) If you wish to use a single rtvreport.properties file for multiple applications in different directories, then you can use the RTV_USERPATH environment variiable to definee a classpath that includes a reference to where the rtvreport.properties file resides. NOTE: The rtvreport.properties file is treated as a resource bundle, and thus follows the java convention for localizing resource bundles (rtvreport is followed by an underscore and a two-letter language code (ISO 639-2 code) that specifies the language that the resource bundle deals with. ) e.g for spanish and french create rtvreport_es.properties and rtvreport_fr.properties

16903: PDF output no longer fails for tables with filter properties

Previously, producing PDF output ( Display or Report) for a display that contains a table with filterProperties would produce an NPE ( Null pointer exception) and incomplete PDF output. This is no longer the case.

Security

16306: Enhanced isAllowed method to include user id

The following method has been added to the custom role manager class: public boolean isAllowed (String displayName, String role, String user); This method is only invoked by the display server. Subclasses can optionally override this method to return the appropriate value based on the displayName, role, and user. The default implementation of this method is simply: return isAllowed(displayName, role); The display server may call this method simultaneously on different threads. The arguments are: displayName: the name of the display the user wants to open role: the role of the user trying to open the display user: the name of the user trying to open the display Returns: true if display is allowed, else false.

Substitution

17005: Problem setting global var via setsub in composite fixed

A bug has been fixed in obj_composite which caused extra data listeners to be added if a Set Substitution function in the composite display changed the value of a global variable.

Transaction Message Monitor

17006: Transaction Monitor script error corrected

Previously the run_tm.bat script for the Transaction Monitor failed to execute. This has been fixed.

Version 5.8f1 Release Notes

Data Sources

TIBCO Rendezvous Data Source

16812: RTViewDs.HostStatusCurrent now calculating deltas

In previous releases, the idl, odl, irrs and orrs columns in the RTViewDs.HostStatusCurrent table showed current values instead of deltas. This has been fixed.


16881: New Disable Data Cache option

A Disable Data Cache option has been added to the new TIBCO Rendezvous Cache tab in the Application Options dialog. This option allows you to disable the caching of data in the TIBCO Rendezvous Data Source. When selected, the initial update on data attachments to multiple subjects (ex. orders.STATUS.*) will return a table with a row for each message, but subsequent updates include only the rows that have changed. This option is useful when using TIBCO Rendezvous data attachments as input to the Cache data source or the Historian. This flag also applies to the following RTViewDs tables: RTViewDs.HostStatusCurrent RTViewDs.HostStatusTotal It does not apply to the following tables as they store history and should not be used with the cache: RTViewDs.HostStatusHistory RTViewDs.HostStatusHistory2 It does not apply to the following tables since they are not cached regardless of the value of the Disable Data Cache: RTViewDs.MulticastPacketsDest RTViewDs.MulticastPacketsSource RTViewDs.MulticastPacketsTotal RTViewDs.MulticastSubjectsDest RTViewDs.MulticastSubjectsSource RTViewDs.MulticastSubjectsTotal RTViewDs.ConfigServices RTViewDs.ConfigClientTransports


16889: TIBRV_HOME requirement now prompts an error message

The TIBRV_HOME environment variable is required for the RTViewDs.Config* data attachments with the current version of TIBCO Rendezvous. In previous release, if this was not set, the tables failed silently. This has been fixed so that the error is reported.


16899: RTViewDs.Config* now updates multiple tables correctly

In previous releases, if you had 2 tables attached to RTViewDs.ConfigServices or RTViewDs.ConfigClientTransports for different urls, the first table would update incorrectly when the second table updated. This has been fixed.


16900: The TIBCO Rendezvous RTViewDs.Config* tables now update

The TIBCO Rendezvous RTViewDs.Config* tables now update. Previously, they were only queried once. To specify how often these tables update, specify a value in seconds in the Tibrvconfig Update Period field of the TIBCO Rendezvous Monitoring tab of the Application Options dialog. This value will be rounded to the closest multiple of the update period specified in the General tab of the Application Options dialog. For example, if the update period is 10 and the Tibrvconfig Update Period is 15, the updates will occur every 20 seconds. You can also set this value on the command line as follows: -rvds:rvconfig.period:XX Where XX if a numeric value greater than 0. The default is to update every 15 minutes.


Version 5.8e1 Release Notes

Data Sources

Cache Data Source

16929: Improved handling of old property names in cache files

The following bug existed in 5.8d. It is fixed. For task 16725, several properties of obj_cache_table were renamed. When an existing cache file containing the old property names is loaded, the old property names should be automatically converted to the new property names. This is done correctly if the property values are constants, but if the old property is attached to data, the conversion is not done and the data attachment is ignored. The property assumes the default value (typically zero or an empty string) instead. The old property names affected by this bug are as follows: maxNumberOfRows (renamed to maxNumberOfHistoryRows) timeSpan (renamed to historyTimeSpan) deleteTable (renamed to rowsToDeleteTable) indexColumnNamesForDelete (renamed to rowExpiredIndexColumns)


JMS Admin Data Source (for TIBCO EMS only)

16898: New Server URL column to Routes table

A new field called serverURL has been added to the Routes metrics table in the JMSADM data source. This field contains the URL of the EMS server which defines the route.


XML Data Source

16934: RTView DS for the XML data source

The XML data source now supports attachments to a source named RTViewDs, which provides information about the listeners currently active in the XML data source. This information can be useful when troubleshooting data server clients, because it is the XML data source that handles listeners for ALL RTView data attachments that are redirected to a data server. The RTViewDs source supports the following Data Keys: 1) listeners: This will display a table with one row for each unique data attachment to another xml source and a row for each unique data attachment that has been redirected to a data server. The "Source" column displays the name of the xml source (file) or the name of the data server. The "Local" column is checked if the source is an xml Source, it is unchecked if the source is a data server. The "Adapter" column shows the name of the data adapter, which will be "xml" for local xml attachments and "cache", "sql", etc for redirected listeners. The "Key" column displays the entire data attachment string. The "Listeners" column shows the total number of listeners for the attachment string. The "Updated" column shows the time when data was most recently applied to the listener. 2) cacheListeners: This will display a table with one row for each unique cache data attachment that has been redirected to a data server. It displays most of the same information as in the "listeners" table described above, plus additional columns for the most commonly used fields in a cache data attachment (Cache name, table name, columns, filter columns, filter values). The "Local" and "Adapter" columns are not specified since only remote listener for the cache data adapter are shown. Note that the cacheListeners table does NOT show local cache listeners, it only shows cache listeners that have been redirected to a data server. The RTViewDs source will not appear in the dropdown list of XML sources in the Attach to XML Data dialog, instead the RTViewDs name must be entered manually in the XML Source field.


Display Server

16882: Export to Excel no longer fails with japanese characters

Japanese text is now properly handled by the thin client's "Export Table to Excel" feature.


16906: RTViewDisplayServer.Attributes.DisplayData again returns data

The 5.8d display server always returned an empty table from the jmx MBean RTViewDisplayServer.Attributes.DisplayData. This is fixed.


16907: Fixed JS error in thin client if button's valueToSet changed

Previously, if the valueToSet property of a button control was changed by a data attachment, a javascript error "rtobj is null" was reported by the thin client. This has been fixed.


16923: Fixed bad drawing behavior with multiple connection threads

A display server problem has been fixed in which objects were sometimes misdrawn or missing if displays containing composite objects with bgOpaqueFlag = 0 were open, and multiple clients were connected and requesting displays simultaneously.


Functions

16928: DeltaAndRateRows function NPE fixed

In release 5.8d the function "Delta And Rate Rows" threw a NullPointerException. This is fixed.


Object Library

Fx Bar Chart

16648: drillDownSelectMode = Element Only fixed for thin client

In previous releases, setting drillDownSelectMode = Element Only had no effect on obj_fxbar or on a custom fx object that supported the drillDownSelectMode property, when the object was displayed in the thin client. The object always behaved as though drillDownSelectMode = Anywhere when displayed in the thin client. This problem has been fixed.


Tables

16926: Multiple Hide Rows action on a row no longer causes exception

Previously if the filterProperties of an obj_table02 applied the Hide Rows action more than once to the same table row, a NegativeArraySizeException may have been thrown.


Version 5.8d1 Release Notes

Builder - Property Dialogs

16838: Dialog tables for viewing current data adjusted for consistency

In the display builder, the alert, cache, function, and local variable dialogs make use of a table to display information about the current set of objects. The appearance and behavior of these tables has been improved and made consistent among the four dialogs as follows: - the Name column is set as "row header" so it is displayed with a shaded background and is not resizable. The dialog will control the width of this column so the full length of each name is visible. - The remainder of the columns will be initialized by the dialog and may be adjusted by the user without interference. They will be resized by the dialog only when the dialog itself is resized (in width). Finally, in the Caches dialog, the column "MaxRows" has been renamed to "HistoryRows" for clarity.

Data Server

16775: -logfile option incompatibility with Linux logrotate resolved

The -logfile option will now create the RTView log file in a manner that is compatible with the copytruncate directive of the Linux logrotate utility. In the previous release, the log file could not be truncated to zero bytes by that utility.

Data Sources

16804: Global var set in OPTIONS.ini no longer causes extra listeners

The following problem has been fixed: If a global var $x is defined with an initial value in a global definition file, and a value for $x is also assigned in OPTIONS.ini or on the command line, and if $x is used in a data attachment, and if the value of $x is later changed, the listener corresponding to the initial value of $x is not removed.

Cache Data Source

16725: Support eviction of rows from Current Cache

The cache data source has been enhanced as follows: - A new property named maxNumberOfCurrentRows has been added. Its value specifies the maximum number of rows to be kept in a cache's current table. The oldest rows in the current table will be removed if necessary to maintain this limit. The default value of the property is blank, indicating no limit on the number of rows. (In many cases it is not necessary to place a numerical limit on the rows in the current table, since the rows will be limited by the number of unique combinations of index column values, or rows will be removed via other properties described below. Or, in the case of a cache with no index columns, each update replaces the entire current table). A value of zero can also be used to specify no limit. The cache data source will check the maxNumberOfCurrentRows limit at approximately 10 second intervals, so the limit may be exceeded if new data is applied to the cache between those intervals. - A new property named rowExpirationMode has been added. This property gives users means for expiring rows in the current table. The possible values for rowExpirationMode are Off, Mark, and Delete. The default value is Off, indicating that row expiration is disabled. If set to Delete, expired rows are deleted from the current table. If set to Mark, an "Expired" column is added to to the current table and its value is set to true in each expired row. If rowExpirationMode is set to either Mark or Delete, the following additional properties appear in the property sheet: rowExpirationTime - If a row in the current table is not update for the time interval indicated by this property, then the row is considered to have expired. The value should either be a number indicating seconds, or a number followed by s, m, h, or d indicating seconds, minutes, hours, or days. The default value is blank, indicating no expiration time. (The cache data source will check the expiration time limit at approximately 10 second intervals, so the limit may be exceeded by up to 10 seconds). rowExpiredIndexColumns - The value of this property should be a semicolon-separated list of column names, which must be some or all of the names specified in the cache's indexColumnNamesProperty. On each update to the cache, the set of values contained in the update for the specified columns is recorded. After the update, any row in the current table that has matching values for those columns, but was not updated, is considered expired. In previous releases, this property was named indexColumnNamesForDelete. See the release note for 15490 for more information and examples. The default value is blank. rowExpiredColumnName - This appears in the property sheet only if rowExpirationMode = Mark. Its value indicates the name of the Boolean column that should be added to the cache's current table to indicate if a row is expired. The default value is "Expired". - To help clarify which properties affect the current table of a cache and which affect the history table, two new categories have been added to the Builder's property sheet for cache objects. These categories are named "Cache Current Table" and "Cache History Table". All of the new properties described above are in the Cache Current Table category. As indicated below, several existing cache properties have been moved to one of the new categories, and some have also been renamed. Category: Cache Current Table Properties: maxNumberOfCurrentRows (new) rowExpirationMode (new) rowExpirationTime (new, hidden if rowExpirationMode = Off) rowExpiredColumnName (new, hidden unless rowExpirationMode = Mark) rowExpiredIndexColumns (existing, previously named indexColumnNamesForDelete, hidden if rowExpirationMode = Off) rowsToDeleteTable (existing, previously named deleteTable) Category: Cache History Table Properties: allowDuplicatesInHistoryFlag (existing) maxNumberOfHistoryRows (existing, previously named maxNumberOfRows) historyColumnNames (existing) historyTimeSpan (existing, previously named timeSpan) initialTable (existing)

16728: New commands to load/reload/release caches

Commands to add (load) and remove (unload) a cache definition file have been added to the cache data source. The name of the cache definition file and the substitutions, if any, to be applied when loading the file are specified when the command is defined. If an Add Cache Definition File command is executed and the file has already been loaded with the same subs as specified in the command, the file will be unloaded and then loaded again. If a * (asterisk) is specified as the cache definition file for a Remove Cache Definition command, then the command will unload all cache definition files. (The substitutions specified for the command, if any, are ignored). If a * is specified as the cache definition file for an Add Cache Definition command, then the command will unload and then reload all cache definition files. (The substitutions specified for the command, if any, are ignored).

16825: Show only hist columns in Compaction GroupBy Columns dialog

When configuring a cache table, if columns have been specified in the historyColumnNames property, then only those columns will appear in the condenseRowsGroupBy dialog. Previously all column names from the valueTable attachment appeared.

JMS Data Source

16795: JMS Resources now released when connection lost

Previously, under some circumstances JMS connections would not release external resources when a connection was lost. This is now no longer the case.


JMX Data Source

16732: Optimizatings of MBeanInfoCache loading

Two new options have been added to the JMX Data Source. 1. jmx_optimize_mbics false (default) - mb info caches are updated every update cycle true - wait to update mb info caches until data objects are about to be updated 2. jmx_mbeans_change_dynamically true (default) - mb info caches are updated every update cycle false - mb info caches are NOT updated again after initial kick start. This is useful for mBeans that stay the same all the time.


16827: Allow substitutions for the JMX Poll Interval

Users my now enter a substitution for the Poll Interval in JMX data attachment dialog.

Display Server

16755: Carriage return in text area no longer causes js exception

The following problem is fixed: In the thin client, if a display has a text area control whose text string contains a carriage return (\r) character , an "unterminated string constant" javascript exception is thrown when the user drills down to the display.

16781: Concurrency issues when under load fixed

As described in the RN for 16502, the display server now processes requests from multiple clients concurrently. Under heavy load, the display server may throw null pointer or array bounds exceptions because of concurrency issues. These have been fixed.

16799: rtvdisplay servlet unresponsiveness fixed

A bug which caused the rtvdisplay servlet to be unresponsive after several clients opened pages using tab or accordion navigation controls has been fixed.

16803: Fixed deadlock on Get Data Server Connection Status function

A bug has been fixed which sometimes caused a deadlock in RTView while loading a display file containing an instance of the function "Get Data Server Connection Status".

16816: Fixed mem leak if objects in composite are attached to globals

A memory leak in the display server, which involved objects in composite displays attached to global variables or global functions, has been fixed.

Drill Down

16840: Drilldown/commands now executable from thin client tooltip

In the thin client, an object's drill down or command can now be initiated by clicking on the tooltip dot or bulls-eye. In prior releases, clicking on the tooltip dot had no effect. There are still some known issues: - In IE, if a click on the tooltip dot triggers a drilldown in another window, the pop-up browser window may open behind the main browser window. - In some cases it may be necessary to click on the dot twice to trigger the drilldown or command. Usually this happens if a display refresh occurs just before or at the same time as the click.

Functions

16727: New function Mark Time Gaps

A function named Mark Time Gaps has been added. Its description is as follows: Prepare a table to be plotted on a trend graph so that a break or a specific value will appear in the graph's trace line wherever the time gap between 2 points is longer than expected, as follows: If the time interval between any two rows in the table is greater than the expected interval, then insert 2 new rows between those rows in which the value of each column to be marked is set to NaN or other specified value. (NaN indicates "not a number". A trend graph will break a trace line when a NaN is encountered). The timestamp of the first new row is set to a value of 1 msec more than the timestamp of the last row before the graph and the timestamp of the second new row is set to a value of 1 msec less than the timestamp of the next row after the gap. It is assumed that the table is sorted by timestamp in ascending order. On the second and subsequent updates of this function, the timestamp of the first row in the table is compared to the timestamp of the last row from the previous update. The function takes these arguments: Table - The table to be checked for time gaps. The table must have a timestamp column and must be sorted by timestamp in ascending order. Name of Timestamp Column - the name of the table's timestamp column. Expected Interval - The maximum time interval than should occur between consecutive rows in the table. If this interval is exceeded, it is considered a gap. Specify the interval in seconds or specify a value followed by m, h, d, for minutes, hours, or days. Names of Columns to Mark - the names of the columns to be marked with the specified value when rows are added to mark a gap. Separate multiple column names with semicolons. If no column names are specified then all columns with floating point values will be marked. Mark Columns Width - The value to be assigned when marking columns in the rows added to mark a gap. The default is NaN, but any numeric value can be used.

16839: EnsureColumns enhanced to allow the definition of default values

In the Display Builder, the Ensure Column function has been enhanced to include a new argument, Value(s). This may be used to supply a list of values which will be used to initialize columns that have been added to the table (existing columns are not changed). The values are applied to the new columns in the order they are created and converted to the corresponding column type if possible; (otherwise the result is blank for string, 0 for integer/long, NaN for double.)


Object Library

Fx Trend Chart

16845: Trace line on fxtrend no longer wobbles if timeShift > 0

The following problem affecting obj_fxtrend has been fixed: If an obj_fxtrend has timeShift > 0 and a trace is attached to data from a data server or a data source whose timestamps are offset from the time on the local host by more than the timeShift value, then the trace line may jump back and forth horizontally when a new data table is applied to the trace. This occurs because the time axis will briefly be drawn with the newest data timestamp at the right edge, and then immediately be redrawn with the local time + timeShift at the right edge.

Version 5.8c1 Release Notes

16497: borderWidth property removed from obj_c1button

In previous releases, the button control (obj_c1button) had an extraneous property, borderWidth. This property has been removed.

Alerts

15764: New alertClearedCommand property

The discrete, limits and multi state alerts have been enhanced to support a new property, alertClearedCommand. If specified, this command is executed when an alert is cleared. This command supports all of the same alert substitutions as the alertCommand and reNotificationCommand: $alertCommandText $alertCompValue $alertCurValue $alertEmailBody $alertEmailSubject $alertID $alertIndex $alertLabel $alertName $alertSeverity $alertText $alertTime

16474: Substitutions now correct when renotify command is multiple type

In previous releases, if the reNotificationCommand was a multiple command or if no reNotificationCommand was specified and the alertCommand was a multiple command, the alert substitutions were not applied correct to the renotification command. This has been fixed.

16483: AlertCommandText no longer chokes when receiving null data

In previous releases, if a null value was found in a table attached to any of the following properties, a NullPointerException was thrown: Discrete Alert: valueHighAlertCommandText valueMediumAlertCommandText valueLowAlertCommandText Limits Alert: valueHighAlertCommandText valueHighWarningCommandText valueLowAlertCommandText valueLowWarningCommandText Multi State Alert: alertStateNAlertCommandText This has been fixed.

16486: Alert renotification now shows the current values of an alert.

The alert renotification command has been enhanced to include current values for the $alertCurValue, $alertEmailBody and $alertText properties. In previous releases, this has been the value that triggered the alert, but it has now been enhanced to show the current value.

16578: Alerting Engine enabled status now available for use in displays

The enabled status of the alerting engine is now available for use in displays. The AlertingEnabled status is exposed as an Alert Data Source data attachment with the Alert Variable (table) name AlertingEnabled. This is a table of one row, with one column of Type Boolean. The column name is AlertingEnabled.

16637: Optimize alert performance

The performance of the alert data source has been improved. Both the processing and the listener updates have been optimized to increase performance.

Builder

16321: TIBCO EMS 5.x jars now found

RTView has been updated to find TIBCO EMS jars in either TIBJMS_ROOT/lib, or in TIBJMS_ROOT/clients/java.

Commands

16318: Command parameters now support function and DS attachments

Several fields in the drill down dialog and command dialogs have been enhanced to support data attachments. To attach a field to data, right-click and choose Attach to Data or double-click on the field. The popup menu also supports Copy, Paste, Detach from Data and Display Data which behave the same way the corresponding popup menu options do in the Object Property Dialog. All command properties support data attachments except for Heartbeat Commands. The following fields have been enhanced to support the new popup menu: Drill Down Target Dialog: - Drill Down Display Name - Window Title - The Value column in the Drill Down Substitutions table System Command Dialog: - All fields in the main dialog except the Command Type field and the Browser Window field. - In the Drill Down Target sub dialog: Drill Down Display Name, Window Title and the Value column the in Drill Down Substitutions table - In the SNMP sub-dialog: Destination Address, Destination Port and Community Name SQL Command Dialog: - Database Name - SQL Command JMX Command Dialog: - The method argument fields Alert Command Dialog: - All fields except Command and Data Server JMS Command Dialog: - Destination Type - Message Type - Topic Name - The Value column in the Fields & Properties table TIBCO Rendezvous Command Dialog: - Message Subject - The Value column in the Fields table TIBCO Hawk Command Dialog: - The method argument fields

16583: Custom SMTP port can now be specified for system email commands

It is now possible to define a custom SMTP Port for sending email via a System Command.

Customization

15780: Access provided to custom GmsRtViewDsAdapter from GmsRtViewDs

The com.sl.gmsjrtviewds.GmsRtViewDs class now includes a field, "dsAdapter", to access the GmsRtViewDsAdapter for the custom data source.

Data Historian

15789: Column now compacted using "count" when it is the only column

Previously, if a column was being compacted using the "count" groupByTime, and it was the only column of data being compacted, the SQL statement would insert the compacted data incorrectly. The word "Count" was substituted for the column name of the compacted column. This has been fixed.

16427: Historian now correctly resigns in redundant server group

A bug has been fixed which under certain conditions allowed more than one Historian to be the primary server in a redundant server group.

16449: Errors with column names and table creation fixed

The quoteColumnNames property on a Historian table was being ignored when: * quoteColumnNames is true * Compaction Rules have been specified that involve Multiple Output Tables * the default level of database table reset is used. i.e. no -rebuildtables and no -noreset arguments, which implies resetting and purging the tables on every use.

16616: "store last value" now stores table rows from all attachments

The historian's "Store Last Value Only" feature has been improved to store the last set of rows applied to each object that specifies a given database table name in its historyTableName property. This is useful in a historian configuration where multiple objects specify the same database table name. Previously only the rows for the last object to be updated were stored.

Compaction

16415: New data now collected when smoothing process is active

New data is now stored while the smoothing process is active.

16595: Historian Displacement support improved

The Historian displacement feature is now supported for DB2, MySQL, and Sybase.

Data Server

16219: New rtvquery web app rtvquery added

A new web app named rtvquery has been added to RTView. The rtvquery servlet allows custom client applications to retrieve data tables from the RTView Data Server via a REST interface. The client sends an http GET to the servlet specifying the query parameters and the servlet returns the query result in XML, JSON, or plain text format. For a complete description of the features and use of the rtvquery servlet, see the README.txt file in the servlets/rtvquery subdirectory of RTView installation directory. Also, several examples of client apps can be found the subdirectory custom/rtvquery-samples. See the README.txt file in that directory for details.

16451: Verbose mode syntax corrected

The Data Server -verbose option was corrected to output "push N bytes to client" rather than "push N xml chars to client", since the Data Server sends data to client as binary data not xml text. Note that the byte count is an approximation and should only be used for comparing the relative sizes of data sets pushed by the Data Server.

16519: Empty string for Data Server field in command correctly handled

In prior releases, if a substitution was entered in the Data Server field of a data source command the the substitution's value was an empty string, and if a default data server was in use when the command was executed, an error dialog with the message "Unable to execute command" would appear. This has been fixed so that an empty string in the Data Server field will be treated the same as . That is, the command will be executed on the default data server, if any. If there is no default data server then the command should be executed locally. This is consistent when an empty string is specified for the Data Server field in a data attachment.

Data Sources

Cache Data Source

16425: Cache persistence bug for certain databases fixed

In 5.7, the cache persistence feature did not work if a mixed-case or lower-case table name was specified for the cache's currentTableName or historyTableName property and a case-sensitive database, such as hsqldb, was used. This is fixed.

16457: Additional metadata available in RTViewDs cache tables.

The cache named RTViewDs cache contains tables with information about each table maintained by the cache data source. In this release, the RTViewDs table named Tables has been enhanced to include a column named "%Full" and a new table with cache configuration information, named CacheDefs, has been added. 1. %Full column: RTViewDs.Tables contains runtime information about the size of each cache table. In this release, a new column named "%Full" has been added to the table. For history tables, this column shows the table's actual row count divided by its maxNumberOfRows limit or (if the cache's timeSpan limit is nonzero) the table's actual time span divided by its timeSpan limit, whichever is larger. The value is converted to a percentage between 0 and 100. Note that if the history table's size is limited by the timeSpan property, the %Full value may never quite reach 100%, because the actual time span of the rows remaining in the table after old rows are removed may be somewhat less than timeSpan. For non-history (current) tables, the value of the %Full column is always NaN, since RTView does not impose a size limit on those tables. 2. RTViewDs.cacheDefs table: This new table contains the following columns, with one row for each table defined by the cache data source: Tag - cache name + "." + table name Cache - cache name Table - table name AllColumns - all column names IndexColumns - index column names DataColumns - non-index column names TimestampColumn - timestamp column name AllColumnTypes - data types for all columns ("string","int","double","date",etc) MaxRows - value of maxNumberOfRows property (history table only) TimeSpan - value of timeSpan property (history table only) Description - value of description property File - name of rtv file from which cache definition object was loaded

16459: Exception in cache page filtering fixed

The following problem affecting the advanced filter option in a cache data source attachment has been fixed: If an attachment was made to the current table of a cache and the value of Rows Per Page was greater than zero and the value of Page Number times Rows per Page was greater than the total number of rows in the cache's current table, then an ArrayIndexOutOfBoundsException was thrown.

16512: Filter on non-index column of current cache now allows updates

The following problem with the cache data source has been fixed: If a cache has one or more index columns and an attachment is made to the current table of that cache, and the attachment specifies a filter column which is not also an index column, then the attachment will always behave as though the "Update Once" option is checked, even if it is not. That is, the current table will be applied to attachment once when the display is opened, but any subsequent updates to the current table are ignored.

16517: Allow Time Ranged Cache queries to access historical database

The cache data source has been enhanced to use SQL to extend the time range of a cache's history table. Background (cache history features supported in this release and prior releases): A cache's history table is kept in memory. The size and time range of the data in the history table is determined by the cache's maxNumberOfRows property and (optionally) its timeSpan property. The cache persistence feature (15215, introduced in RTView 5.3) allows a cache definition file to be used as a data configuration file for the Historian, so that the cache history data is stored in a database table. The database and table names are specified by the cache object. When the cache data source is initialized, it will preload the history table's of all cache's that use the cache persistence feature, by making appropriate SQL queries. However, the number of rows that will be loaded from the database into the cache's in-memory history table is limited by the cache's maxNumberOfRows and (if specified) its timeSpan property values. When making a data attachment to a cache's history table, the Advanced Filter options in the attachment dialog can be used to specify the time period of interest, using the Time Range, Begin Time, and End Time fields. Enhancement (cache history feature added in this release): Beginning with this release, a cache can be configured so that an SQL query will be used to retrieve data from an external database if the time period specified in a data attachment extends beyond the range available in the cache's in-memory history table. This feature provides a convenient way to retrieve cache data that was stored in a database by the RTView Historian and use it on displays. To use this feature for a cache named "C1" : - C1 must have a database table name assigned to its historyTableName property - C1 must have maxNumberOfRows > 0 - The rtv file that defines C1 must be loaded by the RTView Historian as a Data Configuration file (so that the Historian will store the cache data in the database table specified by C1's historyTableName property) - There must be an SQL database connection defined for the database specified in C1's databaseName property or, if C1's databaseName property is blank, there must be an database connection to the default RTVHISTORY database. When making a data attachment to C1's history table, the user can select "Filter Rows = Advanced" and specify the time period of interest, and check the new "Extend with SQL" option. If the time period extends beyond the oldest row of data in the cache's history table, an SQL query will be performed to fetch the data for the missing time period. The database specified by cache C1's databaseName property will be used for the query, or if databaseName is blank then the default "RTVHISTORY" is used. The table name used in the query is the value specified by C1's historyTableName property. The "Extend with SQL" checkbox will be enabled only if either the "Time Range" or the "Begin Time" fields are non-blank, and the selected table name in the Table dropdown list is not "current". See the release note for task 15936 for a description of the usage of these fields. Note that a substitution string (e.g. $beginTime) can be entered for any of these fields. If the value in the "Maximum Rows" field (labeled "Rows per Page" in previous releases) is nonzero, then it will be used to limit the row size of any SQL query that is performed to satisfy the time period in the attachment. When "Extend with SQL" is selected, a default value of 1000 is automatically entered but can be changed by the user. A value of zero or blank means no limit.

16518: Compaction mechanism implemented for cache data source

A data compaction feature has been added to the Cache Data Source. This feature condenses the history table of a cache by periodically applying a calculation (average,min, max,etc) to each column and storing a single result row in another cache table. This new feature complements the Historian's data compaction feature, available in prior releases, which can be configured to compact rows in databases tables as the data "ages". To distinguish between these features, the Historian feature is referred to as "secondary compaction" since it operates on database tables, and the new cache data source feature is referred to as "primary compaction" since it operates on in-memory cache tables. When a tabular cache object is selected in the Builder, the property sheet will show a category named "Data Compaction : Primary (in-memory)". Initially this category contains a single property named condenseRowsFlag, which is unchecked by default. If the condenseRowsFlag property is checked, the primary compaction feature is enabled for the cache and the cache will maintain four data tables, instead of just "current" and "history". The tables are as follows: 1. current: stores the most recent row of raw data for each unique index column value combination 2. history: stores raw data history, for the time span specified by the cache's condenseRowsRawDataTimeSpan property (see below). 3. current_condensed: stores the most recent row of condensed data for each unique index column value combination. 4. history_condensed: stores condensed data history, limited by the cache's timeSpan and/or maxNumberOfRows properties. In addition, if the condenseRowsCombineHistoryFlag property is checked (see below) a fifth table will be maintained by the cache: 5. history_combo: stores rows of recent raw data followed by rows of older condensed data. The raw data rows extend from the current time back for the number of seconds specified by the condenseRowsRawDataTimeSpan property. The condensed rows are limited by the timeSpan and/or maxNumberOfRows properties. When condenseRowsFlag is checked, the following additional properties will appear in the property sheet. condenseRowsInterval : The time interval at which the cache history should be condensed. Enter a value in the format NNu where NN is a number and u is a single character s,m,h,d,w for seconds, minutes, hours, days, or weeks, indicating the time unit. If only a number is entered, it is assumed to be seconds. condenseRowsGroupBy: A string that specifies the calculation to be performed on each data column in the cache table. The format of the string is name1:calc1;name2;calc2... where nameN is the name of data column N and calcN is the calculation to be performed on the values in the column for each time interval. The supported calculations are average, min, max, and sum. The value for this property is configured from a dialog which allows the user to pick a column name and then pick the calculation for that column. If a calculation is not specified for a data column, then "sum" is used. Calculations are not applied to the data table's index columns or to the timestamp column. condenseRowsRawDataTimeSpan : The time span of raw data kept in the cache's history table and, if enabled, its history_combo table. condenseRowsCombineHistoryFlag: If checked, the cache will keep the history_combo table as described above. The condenseRowsFlag also affects the RTView behavior when persisting a cache to or restoring it from a database. If condenseRowsFlag is checked on cache C1 then: 1) if the cache def file is used as an historian config file, the historian will store only the condensed rows for C1, in the database table specified by C1's historyTableName property 2) when the cache def file is loaded by an RTView app (other than the historian) the database table specified by C1's historyTableName is queried to get the initial rows for C1.history_condensed and, if enabled, C1.history_combo. This is useful in cases where the historian should only store data that has already undergone primary compaction, rather than storing raw data which arrives in high volumes.

16620: New historyColumnNames property for obj_cache_table

By default, the current table and the history table of a cache store the same columns. In many cases this is desirable. But data sources may supply data tables containing columns whose values are static (e.g units, version number, description, etc).While it can be useful to store these values in the cache's current table, they will take up memory and database space when storing repeatedly in the history tables at each update. To address this issue, a property named historyColumnNames has been added to the cache table object. The property can be used to specify a semicolon-separated list of the names of the columns which should be stored in the cache history. The default value is blank which indicates that all columns from the current table should also be stored in the history table. The columns specified by historyColumnNames must be a subset of the columns in the cache's current table. If a column specified in historyColumnNames does not appear in the current table, it will be ignored. If a column is not specified in historyColumnNames but the column is specified in either indexColumnNames or timestampColumnName, the column will still be included in the history table. This is because the index columns and the timestamp column are needed for use and maintenance of the history table. The order in which the column names are specified in historyColumnNames does not affect the order in which they will appear in the history table, they will appear in the same order as they do in the current table. Changing the names specified in historyColumnNames could lead to incompatibility with data previously stored by the historian. Note that this is also an issue with changes made to the cache's schemaTable or the cache's valueTable attachment.

16653: Cache data dialog no longer replaces sub in Table field

A problem has been fixed in the Attach to Cache Data dialog that caused the Table field to show the value with substitutions applied, rather than the user-entered value.

16654: Cache Attach to data Dialog discovers caches on data servers

If the Builder is connected to a data server, it will retrieve the names of the caches deployed on the default or named data servers. These names will populate the Cache, Table, and Columns drop down lists and will be available for selection in the Attach to Cache Data dialog. The names shown in the dropdown lists are determine by the value selected in the Data Server field of the dialog, as follows: If Data Server = <default> then the names of the caches deployed on the default data server are shown. If the Builder is not connected to a default data server, the names of the caches loaded locally by the cache data source are shown. If Data Server = <none> then the names of the caches loaded locally by the cache data source are shown. Any other value for Data Server is assumed to be the name of a Named Data Server, and the names the caches deployed on that data server are shown. If the Builder requests the cache names from a data server and gets no response within 10 seconds, the dropdown lists will be empty. This enhancement does not affect the cache names shown in the Caches window that is opened from the Builder's Tools menu. That window only displays caches that are loaded locally by the cache data source.

16657: Empty Filter Value for cache attachment again returns no rows

If a cache data attachment specifies a valid Filter Column and the Filter Value specifies a substitution whose value is an empty string, the attachment will return a table with no rows. That was the behavior prior to release 5.6. In 5.6 and 5.7, all rows were returned as though the data attachment specified no filter, which was incorrect.

IBM WebSphere MQ Administration Data Source

16560: Option to allow user to specify PCF request wait interval

A new command line argument to specify the PCF request wait interval has been added. The syntax of the command is: -mqwaitinterval:: e.g -mqwaitinterval:sltest:100 The additional argument -mqdstrace can be used to provide information about the PCF request elapsed time. -mqdstrace:3 will return elapsed time -mqdstrace:5 will provide elapsed time and additional information about the content of the PCF request

16564: Added Capability to specify model queue name for connection

A new command line argument, -mqmodelqueuename, has been added. This argument is used to specify a named model queue for a named connection. It sets the name of the model queue used by the agent to create its reply queue, which is a temporary dynamic queue. The syntax of the command is: -mqmodelqueuename:: e.g. -mqmodelqueuename:myConn:MY.MODEL.QUEUE.NAME The additional argument -mqdstrace can be used to provide confirmation about the value specified on the command line e.g. ibmadm: Model Queue Name for connection: myConn : specified as : MY.MODEL.QUEUE.NAME -mqdstrace:3 will show the use of the value when a connection is established e.g. ibmadm: ... Setting model queue name specified for MQ connection: myConn : to : MY.MODEL.QUEUE.NAME

JMS Data Source

16577: Custom jms handler added for BytesMessages and ObjectMessages

The JMS data source has been enhanced to support a custom JMS handler to parse BytesMessage and ObjectMessage content. To get the content from a BytesMessage or ObjectMessage, create a subclass of com.sl.gmsjjmsds.GmsJRtViewCustomJmsHandler and add it to RTV_USERPATH. By default, RTView looks for a class named MyJmsHandler. To specify an alternate name, use the -jms_customhandlername:className command line option. Include gmsjrtview.jar and gmsjjmsds.jar (in the lib directory of your RTView installation) and the jms.jar from your JMS vendor in the classpath when building this subclass. The GmsJRtViewCustomCommandHandler has 3 methods you may override in your subclass: public void initialize() - This method is called once after the class is instanced in case the subclass needs to perform some initialization. public String getBytesMessageStringContent (BytesMessage bytesMsg) - This method is called every time a BytesMessage is received. Subclasses should override this method to return a String representation of the byte[] from the message body. public GmsTabularData getObjectMessageTableContent (ObjectMessage objectMsg) - This method is called every time an ObjectMessage is received. Subclasses should override this method to return a GmsTabularData representation of the Object in the message body. For example: import com.sl.gmsjjmsds.*; import javax.jms.*; import javax.jms.*; import com.sl.gmsjrt.*; public class MyJmsHandler extends GmsRtViewCustomJmsHandler { public void initialize () { } public String getBytesMessageStringContent (BytesMessage bytesMsg) { try { byte[] bytes = new byte[(int)bytesMsg.getBodyLength()]; bytesMsg.readBytes(bytes); return new String(bytes); } catch (Exception e) { System.out.println("ERROR: Can't parse BytesMessage < " + bytesMsg + ">. Caught exception: " + e); } return null; } public GmsTabularData getObjectMessageTableContent (ObjectMessage objMsg) { try { Object obj = objMsg.getObject(); if (obj == null) return null; if (obj instanceof Vector) return processVector((Vector)obj); else return processString(String.valueOf(obj)); } catch (Exception e) { System.out.println("ERROR: Can't parse Object < " + objMsg + ">. Caught exception: " + e); } return null; } private GmsTabularData processVector (Vector<String[]> v) { GmsTabularData data = new GmsTabularData(); data.addColumn("Plant", GmsTabularData.STRING); data.addColumn("Status", GmsTabularData.STRING); data.addColumn("Units Completed", GmsTabularData.STRING); String[] plants = v.elementAt(0); String[] statuses = v.elementAt(1); String[] units = v.elementAt(2); if (plants == null || statuses == null || units == null) return data; for (int i = 0; i < plants.length; i++) { data.addRow(""); data.setCellValue(plants[i], i, 0); data.setCellValue(statuses[i], i, 1); data.setCellValue(units[i], i, 2); } return data; } private GmsTabularData processString (String s) { if (s == null) s = ""; GmsTabularData data = new GmsTabularData(); data.addColumn("Value", GmsTabularData.STRING); data.addRow(""); data.setCellValue(s, 0, 0); return data; } } XML data embedded in both BytesMessage content and ObjectMessage content can be used to define a JMS alias. To show all xml content of a bytes message add the following to your JMSALIAS.ini file: OrderInfo myConnection orders.STATUS.* $xml:<TEXT> To show the data from a specific xml tag in the bytes message content, add something like the following: $xml:<TEXT>::Orders::Order Where Orders::Order specifies the path to the xml element to display. Since the ObjectMessage callback returns a GmsTabularData, use the column name of the field containing the xml data: OrderInfo myConnection orders.STATUS.* Production::$xml:OrderData Where OrderData is the name of the column containing the xml data. Note that only the value from the cell in the first row is used. To show the data from a specific xml tag of an ObjectMessage table, add something like the following: CustomerInfo myConnection orders.STATUS.* $xml:OrderData::Orders::Order::Customer Where Orders::Order::Customer defines the path to the xml element to display.

JMX Data Source

16274: String arrays nested within TabularData now handled in JMX DS

String arrays nested within TabularData are now handled in JMX Data Source.

16441: Connection information now always available

All JMX Connection types, including single connection, * connection and connections groups now show the Connection attribute by default. The command line argument to turn off surfacing the Connection argument for non-multiple connections is -jmxdsShowConnectionOnlyOnMultiples and the JMXOptions.ini file keyword is jmxdsShowConnectionOnlyOnMultiples true"

16455: Support Commands with JMX Connection Groups

Support has been added for commands to work with defined JMX Connection Groups.

16624: JMX arguments now visible for two mBeans with same method name

If same method existed in two JMX mBeans, the second one did not show the argument in the RTView JMX Command dialog.

16625: A key and attribute of the same name no longer causes blank rows

The following problem has been fixed: If a JMX mBean delivers both an Attribute and a Key Property with identical names, the data returned would show two rows for each bean instead of one. Additionally, the Attribute column would be missing. Now the Attribute column is shown with a "2" or a "_2" appended to ensure uniqueness. This code uses the RTView JMX DS convention that a Column name collision and use of one of the two colliding columns in column zero will force the column zero use to be assumed to be the Attribute and renamed.

16659: Host var no longer NULL when JMX connection is using a url

The Host and Port values in the RTViewDs:type=Connection mBean could be Null if the URL method of connection was used. This could cause Exceptions to be thrown in the Console under certain circumstances.

SQL Data Source

16317: Attach To SQL Data's Query interval now allows variables

A substitution string can now be entered in the Query Interval field of the Attach to SQL Data dialog. Previously only a numeric value was permitted.

16531: Cancel SQL query when last listener removed

The SQL data source has been enhanced to abort a query if it is still executing when the last data attachment to the query is removed, to improve overall performance. In prior releases, the query was allowed to complete even though the query result was then discarded.

StreamBase Data Source

15887: Corrected problems with stream filter interface.

In the Display Builder Application Options for StreamBase, if you create a physical stream with no logical stream, the SBOPTIONS.ini file was written incorrectly, using the keyword "stream" instead of the correct keyword "sbstream". This could also happen if you had read in and were converting an options file from previous releases containing the keyword "streams", which would result in an options file containing one or more instances of the incorrect keyword "stream". This has been fixed.

TIBCO Hawk Data Source

16329: Loading order of TIBCO jars changed

The library tibrvj.jar is now added to the classpath after tibrvjms.jar, to avoid Hawk Agent errors.

Display Server

14651: Pagination supported added to tables in the Display Server.

A new Display Server option improves the performance of displays containing table objects (obj_table02) with many rows. The option enables server-side table paging and sorting mode, or "paging mode" for short. In paging mode, the display server sends only a portion (a "page") of the the table's data rows to the thin client, rather than sending all of the rows at once. This avoids the sluggish performance, timeouts, and out-of-memory exceptions that might otherwise occur from processing and transmitting all of the rows at once. The page of rows sent from the display server to the thin client will include all of the rows currently visible in the thin client plus additional rows above and/or below the visible rows. If the user scrolls beyond the rows contained in the current page or clicks on a column header to change the sorting order, the display server will send another page of rows in response. The new option can be specified on the command line as follows: > run_displayserver -cellsperpage:NNNN or in the DISPLAYSERVER.ini file as follows: cellsperpage NNNN where NNNN specifies the number of table cells that the server should include per page. The number of cells in a table is the number of rows times the number of columns. For example, say cellsperpage = 10000 and a display named D1 contains a table T1 with 5 columns. The display server will use a page size of 2000 rows for table T1. This means that the display server will send at most 2000 rows to the thin client at a time, for table T1. If T1 contains, say, 40,000 rows then when a user opens D1 in the thin client the display server will send rows 1 through 2000 to the thin client. If the user then scrolls to the bottom of the table, the server will send rows 38,001 through 40,000 to the thin client in response. Similarly, if the user clicks on a column header to sort by that column, the display server will sort the table and send the first 2000 sorted rows to the thin client. After the user scrolls or sorts a table in paging mode, the thin client will display '...' in each cell and an hourglass cursor will appear over the table while it waits to receive the new page from the server. A smaller value for cellsperpage reduces the memory requirements for processing large tables in the Display Server, App Server, and browser. A larger value makes for smoother scrolling in the thin client because it increases the number of rows through which the thin client can scroll before it needs to request another page from the server. Typical values for cellsperpage are 10000 to 30000. If the cellsperpage option is not specified or if a value < 1000 is specified then paging mode is disabled and the display server will always send all data rows to thin client for all tables regardless of the table size (as in all prior releases). Also, if a table contains fewer cells than the cellsperpage setting, the display server will send all rows for that table. Notes: - Paging mode only affects the behavior of obj_table02 objects, and only in the thin client. - The maxNumberOfRows property on obj_table02 is still used to limit the maximum number of rows that will be shown in the table, regardless of the cellsperpage setting. Know Issues / Limitations: - After scrolling to a new page, if the user immediately drags the scrollbar again, the table may not react. The user may need to nudge the scrollbar knob or click on the scroll up/down arrows to force the table to react. - The "Export Table to Excel/HTML/PDF" feature of the thin client is not affected by paging mode, so attempts to export a table with many rows may result in timeouts or out-of-memory exceptions in the display server or in the rtvdisplay servlet. To avoid those errors, see the description of the Display Server options "cellsperexport" and "cellsperreport" in the release note for 16438. - When displaying a table with more than 75,000 rows in Internet Explorer version 8, the last row in the table may partially obscured even if the scrollbar knob is dragged to the bottom position. The last row can be made visible by using the mouse wheel but that may cause unused space to appear at the bottom of the table. - After the user clicks a column to sort a table, the table's vertical scrollbar is reset to the top position. - The thin client ignores the scrollToSelectionFlag property on a table that is in paging mode. - A table's row selection is cleared when a different page of rows is received from the display server. So if a table is in paging mode, then only rows that are on the current page can be selected, even if the table's multiSelectFlag property is checked.

16391: Displayserver now recognizes users/roles files in OPTIONS.ini

In prior releases, the Display Server did not recognize the users or roles path in OPTIONS.ini. This is fixed.

16438: Display server option to limit data export

The Display Server supports to new options, -cellsperexport and -cellsperreport. These options can be used to limit number of table cells included in HTML/Excel exports and PDF exports, respectively, requested by the thin client, to avoid memory exceptions and timeouts when exporting tables with many rows. These new options would typically be used in conjunction with the -cellsperpage option described in the RN for 14651. An export to PDF is more CPU and memory intensive than an export to Html/Excel, so typically the value of the cellsperreport option would be smaller than cellsperexport. For example, if an export to HTML/Excel was performed on a table had 5 columns and 100,000 rows, and the option -cellsperexport:30000 was specified when the Display Server was launched, then 6000 rows (30000/5) would be included in an exported HTML/Excel file for that table. If the -cellsperreport:5000 option was specified, then an export to PDF would include 1000 rows from the table. Note that the exported HTML/excel table will start with the same first row (give or take a row) that is visible in the thin client. That is, if you scroll to row 900 in the thin client and then do an HTML/excel export, the exported table should start at about line 900. However, in an exported PDF file, the scroll position of the thin client has no effect on the starting row in the PDF. If the cellsperexport option is not specified or if a value < 1000 is specified then the display server will always attempt to export all rows for all tables regardless of the table size (as in all prior releases). Also, if a table contains fewer cells than the cellsperexport setting, the display server will export all rows for that table. If the cellsperreport option is not specified or if a value < 1000 is specified then the display server will always attempt to include all rows for all tables in a PDF report regardless of the table size. Also, if a table contains fewer cells than the cellsperreport setting, the display server will include all rows for that table in a PDF report. If the rows included in an export to Html/Excel are limited by the cellsperexport option, then the first row in the exported file will be the same as the first row currently visible in the thin client. In an exported PDF file, however, the scroll position in the thin client has no effect on the rows that are included in the PDF report. The options can be specified on the command line or in DISPLAYSERVER.ini. For example, on the command line: > run_displayserver -cellsperpage:10000 -cellsperexport:30000 -cellsperreport:5000 The equivalent in DISPLAYSERVER.ini: cellsperpage 10000 cellsperexport 30000 cellsperreport 5000 Note that none of these options are recognized by the Builder or Viewer.

16502: Provide Multiple Connection Threads for Display Server

To improve response times on multi-CPU systems, the rtvdisplay servlet has been enhanced to use a pool of connections to the Display Server. By default, the servlet will open up to 10 simultaneous connections to the Display Server, allowing it to process up to 10 display requests simultaneously. The connection pool size is determined by the following entry in rtvdisplay.properties: DisplayServerConnectionPool=10

16525: Corrected memory leak with non-flex graph mouseover

A display server memory leak has been fixed. The leak was triggered by non-flex objects with mouseover enabled, and affected releases 5.6c1 and 5.7c1 only.

16528: Row header now always resizes correctly in thin client

A problem in the thin client which sometimes caused the row header column in a table to have the wrong width has been fixed.

16570: rtvuser change no longer delayed in thin client

In a thin client URL the rtvuser and rtvpass parameters or the rtvsign parameter can be used to specify the username and password, to bypass the interactive login prompt. In this release a problem has been fixed which delayed the effect of a change to these parameters until the first refresh of the thin client. Until the first refresh, user-specific substitutions either had no value or, if another user was previously logged in from the same browser session, remained set to the values for the previous user.

16614: Newline in control's mouseover text no longer causes js error

In previous releases, if the value of a control object's mouseOverText property contained a newline the thin client would throw an "unterminated string constant" javascript exception when the display was refreshed. This is fixed. Even with this fix, only Internet Explorer will display multiple lines of text for the mouseover on a control object. In all other browsers, the mouseover text for a control object is always shown as a single line.

16702: Setting global var to value of a sub/var on dd now works

The following problem which affected the Display Server in prior releases has been fixed: A drilldown substitution configured to set $var = $sub, where $var is a global variable, would set $var = "$sub" rather than $var = value of $sub, in the case where $var was a global variable.

Functions

16393: Selector list returns "All" option if Selector Table is empty

In the Display Builder, the Create Selector List function would return a null table if the Selector Table had no rows. It will now return a single row consisting of the All Selector Name.

16440: Join function now correctly copies NaN values

In the Display Builder, the Join and Join Outer functions, when encountering a NaN value in a Float or Double, would substitute zero. The NaN value will now be copied into the output table by these functions.

16628: GroupBy now allows "count" in conjunction with other types

The GroupBy functions have been enhanced so that a "count" type encountered within a set of multiple types will force the returned column to be of integer type so it works properly.

16629: New "Delta And Rate Rows" function

In the Display Builder a new function Delta And Rate Rows has been added. This is an extension of the Delta Rows function that returns a rate of change as well as a delta values column for each selected data column. The function help text follows. The Delta And Rate Rows function returns a table including, for the specified columns, new values for the difference between this update and the previous, along with the rate of change per second. The new values may be appended to the input table in columns named by prefixing "Delta" and "Rate" to the column name, or the delta columns may replace the corresponding input columns (the rate columns will still be appended to the table). Table - The table of interest. Delta Column Names - The names of one or more columns for which deltas will be calculated. At least one name must be given. Index Column Names - The names of one or more columns that uniquely identify a row in the table. If left blank, the default is to calculate deltas for all rows as if they had the same value. The values contained in each index column are concatenated to form a unique index used to organize the resulting summary data. Time Column Name - The name of a timestamp column that will be used to calculate the rate of change. A name must be given. If the specified column is not found in the data it will be added, and its values will be taken from the current time on each update. Replace Data With Deltas - If set to 1, the delta values replace the original values in the same column in the returned table; otherwise they are in new columns appended to the table. Display Negative values - If set to 1, the delta values less than zero will be displayed with a negative sign and the value; otherwise they will be displayed as zero.

16661: Split Columns function now returns no row if blank input string

In the Display Builder the Split function, if given a blank string, would return a table with one (blank) row. It will now return a table with no rows.

16662: Validate Substitution function enhanced

In the Display Builder the Validate Substitution function has been enhanced as follows: The following new arguments may be specified: Clear If Invalid: If set to 1 this will cause the function to return an empty string if the substitution is not found in the table. Allow Multiple Values: If set to 1 this will allow the substitution to be a semicolon separated string of values; each value will be tested for validity and the final result will be assembled from all the valid values (if any).

16664: Rename Columns now permits more renames than input columns

In the Rename Columns function, the number of specified rename columns had to exactly match the number of new names. Sometimes the number of input columns is unknown and yet you want to specify N new names, egardless how many are specified. This function has been changed so it gives an error only if the number of entered columns is greater than the number of new names specified.

16665: New "Ensure Columns" function

A new function has been added that can be used to ensure that columns of a certain type exist prior to passing data to subsequent functions for further processing. The function accepts an input Table, and a list of column names and types. The specified columns are guaranteed to exist in the order and with the types specified.

16691: New "EnsureTimestampColumn" function

The new function Ensure Timestamp Column has been added to the Display Builder. The function's help text follows: The Ensure Timestamp Column function guarantees the given table will include a timestamp column of the given name. If the column is found it just returns the table; otherwise it returns a copy of the given table with the specified added and filled with the current time. Table - The table of interest. Time Column Name - The name of the timestamp column that will be ensured. Append Column - If set to 1 the timestamp column will be appended to the end of the table; else it will be inserted as the first column.

General

16381: Preceding and succeeding spaces now work in Combo/List Boxes

In previous releases, the listValues property in the List Box and Combo Box controls did not parse leading and following spaces correctly. This has been fixed. To specify a space or an empty item as the first item in the list, use single quotes: '';item2;item3 - adds an empty item to the beginning of the list ' ';item2;item3 - adds a space to the beginning of the list To include a space preceding the first element or following the last element, also use single quotes: ' item1';item2;'item3 '

16407: run_exchange_simulator.bat fixed

In the previous version the run_exchange_simulator.bat script was broken. This has been fixed.

16409: run_tibjmsadmin.bat fixed

In previous versions the run_tibjmsadmin.bat script was broken. This has been fixed.

16410: Option -jmxdsCheckValidAttributeNames

The command line option "-jmxdsCheckValidAttributeNames" and the JMXOPTIONS.ini property "jmxdsCheckValidAttributeNames true/false" is now accepted and preserved. Setting this option to true ensures that only column names that the MBean recognizes are used.

16447: NPE when switching displays fixed

In version 5.7c1, the mouseOverText feature threw an occasional null pointer exception when switching displays. This has been fixed.

16478: New -bg and -logfile options to support redirection of output

Three new command-line options are supported by all RTView applications: #1) -bg Run the RTView application as a background process. When this option is specified, the GmsLauncher process and run scripts will exit immediately after the RTView app is started, rather than continuing to run. This reduces the host system's process count, but note that : (a) the RTView application's output and error messages will not appear in the command/shell window from which it was launched. (b) Ctrl-c cannot be used to terminate the application #2) -logfile: Redirect output and error messages to . The RTView application's output and error message streams will be redirected to the indicated file. The file is created if it doesn't exist, otherwise its previous contents are cleared. #3) c: Prepend to the filename specified by the -logfile option. If the -logfile option is not specified, then this option is ignored. ----- Example: > run_dataserver -socket -bg -logfile:DataServer.log ----- Note that all of these options are only recognized on the command line. They are not read from, or saved to, any RTView options files.

16491: New -processName command arg

A new command line option, -processName:, has been added to the Display Builder, Display Viewer, Historian, Data Server and Display Server. For example, run_displayserver -processName:XX This adds the following jvm option to the java call: -DPROCESS_NAME=XX Where XX is the value you specified for the -processName: argument. This is useful for identifying applications running as background processes on Unix. If no process name is specified, the application name will be used as the process name. Values with spaces cannot be used for the process name on Unix.

16551: New command line encoder utility

A new utility, encode_string, has been added to RTView. This is useful in cases where it is necessary to hand edit configuration files that include encoded strings such as passwords. If you need to hand edit a configuration file, contact Technical Support for information on supported syntax. To run encode_string, enter the following on the command line: encode_string type stringToEncode The type argument is optional. This only needs to be used if you are encoding a string for a data source and should be the key for that data source. For example encode_string sql MyPassword This will encode MyPassword in the format that the sql data source recognizes. When encoding a string for an application like the Historian, omit the type string or use encoder1 for the type string. For example encode_string MyPassword will return the same result as encode_string encoder1 MyPassword

GmsTabularData

16571: Function crash on empty data sets fixed

In previous versions some functions that manipulated GmsTabularData with 0 rows may have raised the java.lang.ArrayStoreException. This is no longer the case.

Licensing

16613: Include click-through licensing for configuration utility

The configuration utility has been enhanced to show the click-through license if it has not already been accepted. The tibco license agreement has been updated.

16622: install_keys scripts removed from deliverable

The install_keys utility has been removed, as system-independent keys can now be installed using the same registration utility that system-specific keys use.

Object Library

15151: Indicator Palette enhanced

All of the indicators previously on the Indicators tab of the Object Palette have been replaced with the following 4 new indicators: obj_ind_discrete - This indicator supports 3 discrete comparisons. obj_ind_limits - This indicator supports 2 high and 2 low thresholds. obj_ind_multi - This indicator supports an unlimited number of comparison values. For each comparison, you can specify whether the value property must be equal, not equal, greater than or less than the comparison value. obj_ind_panel - This is a panel of 3 indicator lights. Each indicator light supports a discrete comparison. For all indicators, attach the value property to data, and setup your comparisons using the properties in the Alert category. See the documentation for more detailed information on the object properties. The indicators that were previously on the Indicators tab of the Object Palette have been deprecated. They will continue to work as they did before in existing displays, but are no longer available in the Object Palette.

16374: New symbol library

A library of symbols has been added to RTView. These images can be used on any object that supports images. Users can also define their own custom image library. To access the images, edit the image property on an object. Instead of typing in an image name, click on the ... button. This will bring up a dialog with a tree on the left. The tree will have up to 3 top level nodes: 1. Current Directory - this lists the images in the current directory and one level of subdirectories. 2. Custom Image Library - if the user has specified a custom image library, this node will list the images in that library 3. Symbol Library - the symbol library containing a subdirectory for each category of symbols Navigate in the tree to the image you would like to use and select it. A preview of the image will draw in the pane to the right. Click OK or Apply to set the image on your object. Note that you can still simply type your image name into the image property field instead of using the dialog. You can access the same image editor dialog from the Image Name field in the Background Properties dialog and also when editing images in the filterProperties property on the table object. The custom image library allows you to add images to the tree in the image dialog. To add an image library, place your images .jar file and add it to the RTV_USERPATH environment variable. The images must be in a directory (ie not in the top level of the jar). They may be organized into sub-directories of one top level directory if desired. In the Display Builder, select Tools->Builder Options and in the Custom User Library Path set the path to directory containing your images in the jar. This jar must be included in the RTV_USERPATH for your deployments as well. For example, if you have a jar with this directory structure: com/mycompany/Images com/mycompany/Images/Blue Images com/mycompany/Images/Red Images com/mycompany/Images/Green Images In the Builder Options Custom User Library Path, add com/mycompany /Images. This will add a node named Images to the tree in the image dialog. It will have 3 nodes under it: Blue Images, Red Images, Green Images. Note that only directories that contain images will be added to the tree in the dialog.

16378: value*BgGradientColor2 added to general object thresholds

The obj_rect_ilvx_ra4, obj_circ2d_ilvx_ra4, obj_rect_ilvs_da3 and obj_circ2d_ilvx_da3 General Objects have been enhanced to support a second gradient color for the threshold properties. The following properties have been added: obj_rect_ilvx_ra4 and obj_circ2d_ilvx_ra4: Alert Category: valueLowAlertGradientColor2 valueMediumAlertGradientColor2 valueHighAlertGradientColor2 Quality Category: valueQualityNoDataGradientColor2 valueQualityLostDataGradientColor2 obj_rect_ilvx_da3 and obj_circ2d_ilvx_ra4: Alert Category: valueLowAlarmGradientColor2 valueLowWarningGradientColor2 valueHighWarningGradientColor2 valueHighAlarmGradientColor2 Quality Category: valueQualityNoDataGradientColor2 valueQualityLostDataGradientColor2 Each property sets the second gradient color when that condition is met. In previous releases, the bgGradientColor2 property was used for the second gradient color for all thresholds. Old displays will continue to use the bgGradientColor2 until the new color properties are saved from the Display Builder.

16490: Table object no longer crashes sorting columns with null strings

Previously a table object referencing a dataset with string columns containing null values would cause a crash when loaded into RTView. This problem has been fixed.

16526: obj_speed meter object now accepts double data

The obj_speed meter object has been enhanced so that the following properties now support double values: valueMin valueMax valueHighAlarm valueLowAlarm Existing displays that use integer values for these properties will continue to work as they did before unless the value passed in for valueMin and valueMax from a data attachment was a double. In that case, the tick labels will change to show the double value. Previously double values were displayed as ints.

Composite Object

14804: Link alignment to composite objects. corrected

In previous releases, links did not work correctly with composite objects. There was a gap between the end of the link and the composite object. This has been fixed.

Control Objects

12107: New axisDirection property added to the slider control object

A new property, axisDirection, has been added to the slider control (obj_c1scale). This property allows you to set the axis direction of the scale to the following: Bottom to Top - vertical orientation with min on the bottom and max on top Left to Right - horizontal orientation with min on the left and max on the right Top to Bottom - vertical orientation with min on the top and max on the bottom Right to Left - horizontal orientation with min on the right and max on the left

16536: Improved support of style sheets for Date Chooser

The Date Chooser control has been enhanced to support 3 new properties: fgColor - The font color of the text entry area. Default is black. validColor - The font color to use while editing in the text entry area if the entered value is using the correct format. Default is green. invalidColor - The font color used during and after editing in the text entry area if the entered value is not using the correct format. Default is red. The validColor and invalidColor are not supported in the thin client deployment.

16633: Tick Mark color added to sliders

The obj_c1scale object has been enhanced to support the fgColor property. This property sets the tick mark color. You can either select a color or select the Default color to use the color for your look and feel. The fgColor is only applied when the control is enabled, so tick marks on sliders in the main builder window will not use the fgColor (preview your display to see the fgColor applied). Note that this change does not apply to the Thin Client deployment as the sliders in the Thin Client do not have tick marks.

16683: Thin client now respects bgColor of listbox control.

The bgColor property of a listbox control is now respected in the thin client, except in Internet Explorer version 6 or older.

Fx Trend Chart

16423: The -fxreplace option conversion improved

The fxreplace option now properly converts the the following properties when replacing an obj_fxtrend with an obj_trendgraph02: bgGradientFlag legendBgGradientFlag yAxisMultiRangeMode

16535: Corrections to FX trend problems with trace groups

The following problems with trace groups on the Fx Trend Graph are fixed: 1. Lower band is too dark even when traceFillStyle = transparent 2.The value trace is obscured by the upper band, if the trace values overlap. 3. Autoscaling for some traces in group is incorrect if trace numbers in group are not in ascending order.

Heatmap

16634: Heatmap now reflects property changes before next data update

In previous releases, the colorValueAutoScaleMode, colorValueMax and colorValueMin properties on the heatmap were not always applied before the next data update. Also, changes to the column list in the data attachment were not applied until the next full update. This has been fixed.

Object Grid

16492: Drill down from objects in object grid fixed for thin client

In the previous version, in the thin client, a click on an obj_trendgraph02 contained in an object grid did not initiate the drillown operation configured on the grid object. This has been fixed.

Tables

16604: Hidden table columns no longer visible in thin client

The following thin client problem has been fixed: Under certain conditions, the columns specified in the columnsToHide property of a table object may become partially visible in the thin client. This problem occurs if the data for the table is not available when the display is opened, so the table is initially blank. If the data arrives on a subsequent refresh of the thin client, the columns that should be hidden may instead be partially visible. The problem is more likely to occur in Firefox. It is also more likely to occur in a Display Server + Data Server deployment since in that case there can be a delay before the Display Server gets data from the Data Server. Also, after the problem occurs, some columns may not be resizable in the thin client.

16615: Fix crash when rows removed from table with Date col during draw

The following problem is fixed in this release: If an obj_table02 is attached to a data table containing a Date column and rows are removed from the data table as the obj_table02 is being drawn, then the following exception is sometimes thrown: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long

Trend Charts

16514: Trends now visibile when plots lie on the X Axis

In prior releases, a thin trace line on obj_trendgraph02 was not visible where its points had a value that corresponded to the minimum y value, since it was obscured by the 1-pixel black border that is drawn around the trace area. This is fixed except in cases where the trace color is black and yAxisMultiRangeMode is not set to "Strip Chart."

16627: FX trend now shifts if timeShift > 0, even if no new data

The Fx trend graph will now shift at the interval specified by its timeShift property (if > 0) even if no new data points are plotted. This is consistent with the behavior of the standard trend graph object (obj_trendgraph02). In prior releases, the fx trend graph would only shift when new points were plotted. Note that if the user wants the trend graph to shift only when new points are plotted and also wants the time axis boundaries to be rounded to N seconds, the timeShift property should be set to -N. (This is not a new feature, just mentioned here for completeness).

Security

16422: Fixed JS error when excluded display accessed in thin clnt

A problem has been fixed which caused the thin client to encounter a javascript error when a user attempted to open a display which was in the list of excluded displays for the user's current role in roles.xml. Now a message will appear on the page indicating that the user was denied access to the display.

Substitution

16476: Setsub or validsub function now setting initial value correctly

In prior releases, if a function (named F1, for example) has an input argument with an attachment that is affected by a substitution, and the initial value of that substitution is set by another function (named F2, for example) which appears later in the rtv file, the input argument for F1 may end up with two attachments, one using the correct substitution value and another using the initial (incorrect) substitution value. This problem is fixed.

Version 5.7d1 Release Notes

Builder - Property Dialogs

16439: Function Result Scroll Columns broken

In release 5.7c1, the checkboxes in the Display Data dialog did not work. This has been fixed.


Demos

XML Data Simulator

16489: Fixed crash in XML Simulator

In 5.7c1, the XML Simulator would crash on non-English operating systems. This has been fixed.


Version 5.7c1 Release Notes

16171: Option to alphabetize object properties fixed

In the Display Builder Object Properties dialog, if the properties were displayed alphabetically their order was not correct. This has been fixed.

Alerts

16299: Formatting of $alertCurValue, $alertCompValue in alertCommand

A property named valueCommandFormat has been added to the limit and multi-state alert objects. This property specifies the format to be used for numeric values in the $alertCurValue and $alertCompValue substitutions in the object's alertCommand. The valueCommandFormat is initially blank, which indicates that the default format should be used.

Builder

15827: Column and row numbers added to Display Data window

In the Display Builder, the Display Data dialogs now show the the number of columns and rows in the current table.

15960: Corrected bug with alert/function/cache tab after layout reset

In the Display Builder, under certain circumstances if you used the Reset Layout function and subsequently opened a tab in the tabbed pane, the pane would close. This has been fixed.

16312: Column Types now always show in Show Content dialog

In the Display Builder data display dialog, if the dialog was showing multiple tabs (such as cache current and history tables) and one of the checkboxes such as (Show Column Types) were checked or unchecked, the change was applied to the current tab only. This has been fixed.

Builder - Applet

16238: Drilldown to new display in existing window no longer fails

A problem affecting the Viewer applet after performing a drilldown to a new display in the current window or a named window, in version 1.6.0_10 or newer of the Java plugin, has been fixed.

Builder - Editing

16006: Pasting properties of cache/alert/function now excludes name

In the Display Builder, when you would "Paste All Properties" or "Paste Static Properties" from one cache, alert, or function to another, the properties that were pasted included the cache, alert, or function name, and resulted in either a dialog prompting for a new name, or a warning about duplicate names. This has been fixed..

16013: Limitation removed from mouseOverText property

The mouseOverText in the Display Builder, Display Viewer Application and Display Viewer Applet have been enhanced. In previous releases, there were several scenarios where the mouseOverText was obscured by other objects in the display. The mouseOverText is now drawn above all objects except the Flex Graphs which are still sometimes drawn on top of the mouseOverText. This change impacts the following objects: - all non-Flex graph objects that support the mouseOverFlag property - all non-graph and non-control objects that support the mouseOverText property No change was made to the control objects as their mouseOverText was not being obscured. In previous releases, if multiple non-control objects with mouseOverText overlappped and the mouse was positioned on the overlapping area, the mouseOverText would display for both. This has been fixed, so that only the mouseOverText for the front object is displayed. As part of this change, the mouseOverText positioning behavior for the graphs was modified. Previously, the mouseOverText location was contstrained to stay within the graph object's extent. It is no longer constrained to the graph object's extent. There is one known limitation for editing displays. If multiple non-control objects overlap and the stacking order is changed in the Display Builder, the mouseOverText may show up for the back object instead of the front object when the mouse is position on the overlapping area. This problem is resolved by saving and reloading the display.

Data Historian

16051: New option to store less data than received

An option has been added to the Data Historian that allows it to store less data than it receives. This can be useful in a configuration where the Data Historian receives data from the Data Server, but at a higher rate than is needed for historical storage. The new option is labeled "Store Last Values Only" and appears in the Data Cache Options section of the Configuration tab. This option is available only if the Cache Data option is checked and the Cache Duration value is greater than zero, in which case the Data Historian does not store data records immediately but rather keeps them in a cache to be stored later. If the "Store Last Values Only" option is unchecked (the default), the Data Historian will store all of the records in the cache each time the Cache Duration period expires. But if the option is checked, the Data Historian will instead store only the last (most recent) value in the cache for each unique data attachment the historian is configured to store. For example, say the data server pushes tables from two SQL attachments to the historian: Query1: select * from table1 Query2: select * from table2 Say the Data Server executes those queries every 10 seconds, and the historian has cache duration = 60 seconds. In that case, every 60 seconds the Data Historian's data cache will contain 6 result tables from Query1 and 6 result tables from Query2. If "Store Last Values" is unchecked, the historian will store all 12 tables in the database. If the option is checked, however, the Data Historian will only store the 6th (most recent) result table for Query1 and the 6th table for Query2. It will discard all the other result tables in the cache. The new option can be enabled on the command line with the -cachelast option.

16288: Historian again performs retention if timestamp type is SQL

The timestamp:sql mode of the Historian once again fully supports the -retention:nn method of archive trimming.


16289: "quoteColumnNamesFlag" no longer ignored when accessing tables

The Data Historian no longer ignores quoteColumnNamesFlag when accessing SQL tables.


16295: Echo logging lines removed for .ini file settings

Advanced Historian settings will no longer be printed to the console if they are set in HISTORY.ini. They will continue to be present when set from the command line.

Compaction

16113: retentionMax implemented for frequency of cleanup

The command line and HISTORY.ini file parameter retentionMax, which already existed for old style historian archival has been implemented for Historian Compaction. The parameter -retentionMax:5 or keyword retentionMax 5 specifies the maximum number of minutes that each compaction rule may run before the Data Retention logic is processed. If a rule has a shorter retention span than the retentionMax then the rule's retention span is used.

Data Sources

Cache Data Source

16319: Cache data dialog no longer fails if attaching to boolean

An exception is no longer thrown when attaching a boolean property (visFlag, for example) to cache data.

JMS Admin Data Source (for TIBCO EMS only)

15230: Default passwords in servers.xml and JMSADMOPTION.ini now work

In previous releases, if the password for a server in servers.xml was the same as the Default Admin Password, connections to that server were inconsistent. This has been fixed.

JMX Data Source

16114: RTViewDs:type=connection no longer throwing exception

Choosing RTViewDs:type=connection as the mBean could cause an exception and if a connection group was in use only the first connection would appear in objects.

16232: Auto-detection of JMX MBean severs implemented

A new option to auto-discover local MBean Server has been added to the JMX data source. To enabled this feature, select the Automatically Discover Local MBean Servers option on the JMX Administration tab in the Application Options dialog. You can also enable it with the following command line option: -jmxautodiscover When enabled, RTView will get the list of local MBean Servers once each poll interval (note that the poll interval is set by either the Default Poll Interval on the JMX Administration tab or by the Update Period on the General tab). All new servers that are discovered will be added as connections using the process id for the connection name. Connections to auto-discovered servers that have exited are removed. Automatically discovered connections are not saved to JMXOPTIONS.ini. All auto-discovered connections are also added to a JMX Connection Group named RTViewDs-Auto. This group cannot be removed or edited, and is not saved to JMXOPTIONS.ini. A new column, Display Name, has been added to the Connections table. For auto-discovered connections, this will list the main class and arguments passed into java.exe for the MBean Server process. The auto-discover features requires a 1.6 JDK installation. The tools.jar from your JDK installation must be included in the RTV_USERPATH in order for this feature to work.

SNMP Data Source

16123: MIB defintion file included in lib

RTView's MIB definition file, SL-RTVIEW-MIB.txt, is now included in %RTV_HOME%\lib.

SQL Data Source

16117: Data Server no longer gives exception for malformed ORACLE query

Previously the data server , when using an ORACLE DB would generate ORACLE SQL exceptions under certain circumstances involving TIMESTAMPS in the WHERE clause of a SELECT statement . This is no longer the case.


Display Server

15482: Tooltips in Display Server now consistent with application

The look of the mouseOver in the Thin Client is now consistent with the look of the mouseOver in the other deployments. Multi-line tooltips now display correctly in all supported browsers.

Functions

15970: Multi-column join in Join and Join Outer functions supported

In the Display Builder, the Join and Join Outer functions have been enhanced so that multiple pairs of columns may be specified for the join. The Column Name argument fields may now be used to specify lists of columns by entering column names separated by semicolons (;) (note that ; is not allowed in column names). The column name lists must be the same length and the corresponding columns in each list must have the same type. All pairs of values must match for a row to be included in the join.

16197: Better handling of commas in string args in Evaluate Expression

In the Display Builder, there was a problem with the Evaluate Expression functions when certain built-in string functions were used. String functions which take multiple args (e.g. substring(string, start, end) would fail with the error "Invalid use of quotes" if there was a comma in the string value supplied. This has been fixed.

General

15952: RTView Run Scripts now use JAVA_HOME

All RTView command-line scripts will now preferentially use JAVA_HOME/bin /java.exe. If it is not found, then the java.exe that is first in the PATH will be used. NOTE: This does not apply to Windows Start Menu shortcuts. If you wish JAVA_HOME\bin\java.exe to be used, make sure it is first in PATH.


16072: DateChooser now accepts a yyyy-MM-dd date as its selectedValue

In previous releases, the selectedValue on the date chooser control sometimes did not set the initial date value. The date chooser control has been enhanced to try parsing the selectedValue using the dateFormat if the default date formats fail.

Java Version Dependencies

16191: Windows Service install now works with JRE

In previous releases, running RTView applications as Windows services required a jdk installation. It has been enhanced to work with either a jdk or jre installation.

Layouts

15795: PANELS.ini enhancement for navigation controls

A new format is supported for the PANELS.ini file. To simplify deployment, this format is fully supported by both the Viewer and the Display Server. The new format supports display navigation using tree, accordion, or tab controls. The appearance of the controls can be set by a stylesheet file. Several tags have been added for use with the new format, as follows: <rtvTreePanel> : This tag creates a tree navigation panel. <rtvAccordionPanel> : Creates an accordion navigation panel. <rtvDisplayPanel> : Create an RTView display panel. <rtvTabbedDisplayPanel> : Create a tabbed RTView display panel. <rtvLayout> : This tag indicates that the new PANELS.ini format is to be used. The new tags listed above can only be used within an <rtvLayout> tag. The PANELS.ini formats and the associated tags that were supported in previous releases are still supported. However, the new tags listed above cannot be mixed in the same PANELS.ini file with any of the older tags. ========================== EXAMPLE 1. The following PANELS.ini uses the new tags to create a title panel at the top, an accordion panel on the left, and a main display panel in the enter, with draggable dividers between all the panels: <xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> <rtvLayout title="Accordion Example" dividers="true"> <rtvDisplayPanel region="north" name="title_panel" display="title.rtv"/> <rtvAccordionPanel region="west" width="200" navdata="navtree.xml"/> <rtvDisplayPanel region="center" name="main_panel" display="chart_main.rtv"/> <rtvLayout> <panels> ========================== EXAMPLE 2. The following PANELS.ini uses the new tags to create a tabbed display panel at the top, and a title panel at the bottom: <xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> <rtvLayout title="Tab Example"> <rtvTabbedDisplayPanel region="center" tabs="navtabs.xml" display="stock_chart"/> <rtvDisplayPanel region="south" name="title_panel" display="title.rtv"/>> <rtvLayout> <panels> ========================== The attributes and use for each of the new tags are defined below. A. <rtvLayout> tag: - Can appear only once in PANELS.ini - Expects each child tag to specify region="x", where x is north, south, east, west, or center. This determines the layout of the child panels. Attributes: 1. title default value: none description: string to display in title bar of Viewer or browser 2. dividers default value: false description: if dividers="true" then a draggable divider is drawn between each child panel in the rtvLayout. ----------- B. <rtvDisplayPanel> tag: - Creates a panel for an rtview display. Attributes: 1. display default value: none description: the name of the rtview display file to be loaded into the panel example: display="Disp101.rtv" 2. subs default value: none description: the substitutions to be applied to the display example: subs="$sub1:value1 $sub2:value2" 3. name default value: none description: name for panel, can be specified as a drilldown target 4. region default value: center description: the position of this panel in the rtvLayout: north, south, east, west, or center ----------- C. <rtvAccordionPanel> tag: - Creates a panel containing an accordion control for display navigation. - The accordion control assumes there is an rtvDisplayPanel in the center region, and send its navigation commands to that panel. - In the thin client, the accordion contents cannot be more then 2 levels deep. If deeper nesting is required, use rtvTreePanel instead. Attributes: 1. navdata default value: none description: the name of xml file that specifies the contents of the accordion control See the Navigation Data section below, for more info on the format of this file. example: navdata="navtree.xml" 2. width default value: 125 description: pixel width of the panel 3. region default value: center description: the position of this panel in the rtvLayout ----------- D. <rtvTreePanel> tag: - Creates a panel containing a tree control for display navigation. - The tree control assumes there is an rtvDisplayPanel in the center region, and send its navigation commands to that panel. Attributes: Same as rtvAccordionPanel above. ----------- E. <rtvTabbedDisplayPanel> tag: - Creates a panel for an rtview display, with tabs for navigation. Attributes: 1. tabs default value: none description: the name of xml file that specifies the tab contents See the Navigation Data section below, for more info on the format of this file. example: tabs="tabs.xml" 2. display default value: none description: the name of the initial rtview display file to be loaded into the panel example: display="Disp101.rtv" 3. subs default value: none description: the substitutions to be applied to the display example: subs="$sub1:value1 $sub2:value2" 4. region default value: center description: the position of this panel in the rtvLayout 5. placement default value: top description: determines placement of tabs, either "top" or "bottom" ============================ Intended Usage: Typically, an rtvLayout will contain one of the following combinations of tags: 1) a main rtvDisplayPanel with region="center", plus either an rtvAccordionPanel or rtvTreePanel with region="west" or "east", and possibly other secondary rtvDisplayPanels in other regions. 2) a main rtvTabbedDisplayPanel with region="center", and possibly other secondary rtvDisplayPanels in other regions. Other combinations have not been tested and may not function as expected. ============================ Navigation Data file formats: The content of an rtvAccordionPanel or rtvTreePanel is determined by the file specified by its 'navdata' attribute. This is expected to be an XML file with the format shown in the following example. <xml version="1.0" ?>> <navtree version="1.0"> <node label="Displays"> <node label="Charts" display="chart_overview.rtv"> <node label="Chart One" display="chart1.rtv" subs="$sub1:123"/> <node label="Chart Two" display="chart2.rtv"/> <node> <node label="Reports" display="report_overview.rtv"> <node label="Report 1" display="rep1.rtv"/> <node label="Report 2" display="rep2.rtv"/> <node> <node> <navtree> In the accordion, note that the root node (the node labeled "Displays" in the above example) will not be visible. Also, the accordion only supports two levels of nodes, not counting the root node. The contents of the tabs in an rtvTabbedDisplayPanel are determined by the file specified by its 'tabs' attribute. This is expected to be an XML file with the format shown in the following example. <xml version="1.0" ?> <navtree> <node label="Bar Chart" display="disp1.rtv"/> <node label="History Graph" display="disp2.rtv" subs="$v1:xyz"/> <navtree> ============================ Stylesheets: (The use of stylesheets in RTView is described in the release note for E15734). When the rtvLayout tag is used in a panels configuration, stylesheet entries can be used to specify the colors, fonts, and other properties of the navigation panels and controls. The following property names are supported: 1. bgColor, fgColor - the background and foreground (text) colors. The value is either a color index from the RTView color palette, or an RGB value in #rrggbb format where rr, gg, bb are the red, green, and blue intensities in hexadecimal values between 00 and ff. 2. font - the index of the font for navigation controls. The RTView font index assignments are listed at the end of this section. 3. fontIndex - the point size for fonts on all navigation controls. 4. bgGradientFlag - if true (the default), the accordion controls and the tab controls use a gradient fill, if false they use a solid fill. The properties listed above can be specified for any of the following class names. If a property is specified for more than one class, the value for the highest precedence class is applied. The classes are listed from lower to higher precedence. 1. rtnav: Properties specified for this class are applied to all navigation panels and controls. 2. rtnav-state-default: Properties for this class are applied to all navigation controls that are in the default (unselected) state. 3. rtnav-state-hover: Properties for this class are applied to the navigation control that the mouse cursor is currently positioned over (affects tab and accordion controls only, and only in the thin client) 4. rtnav-state-selected: Properties for this class are applied to all navigation controls that are in the selected state (for example, the selected tab in a tabbed panel). Example: rtnav {bgColor: 7; fgColor: 12; } rtnav-state-default {bgColor: 256; font: 1; } rtnav-state-selected {bgColor: #4c5d65; font: 7;} rtnav-state-hover {bgColor: #004157; } ----------- The following properties of the accordion panel can be specified using the rtnav-accordion class name: 1. buttonWidth : the width in pixels of all buttons in the accordion, default is 160 2. spacing : the vertical space in pixels between buttons, default is 5 3. indent : the left pixel indent of leaf buttons in the accordion, the default is 10 Example: rtnav-accordion {buttonWidth: 200;} The following properties of the rtnav class control the appearance of the borders drawn around the navigation panels 1. bgBorderColor : color of draggable or non-draggable borders 2. bgBorderWidth : pixel width of non-draggable borders A draggable border is drawn between all panels in a panel configuration in which the "dividers" attribute of the rtvLayout tag is true; a non-draggable border is drawn around navigation panels if "dividers" is false. ----------- Here are the RTView font index assignments: 1 sans-serif 2 monospaced bold 3 monospaced 4 serif 5 monospaced italic 6 serif bold 7 sans-serif bold 8 sans-serif italic 9 serif bold italic 10 serif italic 11 sans-serif bold italic 12 monospaced bold italic


Licensing

16258: Copy/paste popup added menu to registration application

A popup menu has been added to the Pin, Key and TSN fields of the registration application. It allows you to copy the selected text in those fields to the system clipboard or paste the system clipboard contents into the Key or TSN fields.

Object Library

16212: Greyscale choices added to default color palette

The Color palette has been enhanced to include 18 new shades of gray. These have been added to the end of the color palette.

16226: Foreground color properties added to obj_meter20

The following properties have been added to obj_meter20: fgGradientColor2 - set the second color in the foreground gradient fgEdgeColor - set the foreground main edge color fgEdgeColor2 - set the secondary foreground edge color Note that all of these properties only apply if the fgGradientFlag is selected.

Charts (General)

16118: Automated replacement of Fx graphs with standard graphs

Fx graph objects in a display can now be automatically replaced by the equivalent standard graph objects. This is useful when exporting a display to a PDF file or generating PDF reports, or in situations where the Flash player is unavailable. The replacements are: Trend Graph: obj_trendgraph02 replaces obj_fxtrend Bar Graph: obj_bargraph replaces obj_fxbar Pie Graph: obj_pie replaces obj_fxpie The replacements are made under any of the following conditions: 1. In any deployment, when a PDF file is generated from a display using the Export menu or the RTView reporting tool, the fx graph objects are replaced before the PDF file is generated. (This is necessary because the fx graphs do not support PDF generation). After the PDF file is generated, the fx graph objects are restored to the display. So the PDf file shows the replacement graph objects but the display will continue to show the fx graphs (assuming none of the cases below apply). 2. In the Display Builder, Dipslay Viewer, and Display Server, if the -fxreplace option is specified on the command line or "fxreplace true" appears on a line in the OPTIONS.ini file then the fx graph objects are replaced immediately when each display is opened. 3. In the viewer application and the builder preview window, if the Flash player or wrapper is unavailable then the fx graph objects are replaced immediately when each display is opened. (This case does not apply to the thin client. If the Flash player is unavailable in the thin client, the display will contain a link for downloading the player. This case also does not apply to the main edit panel in the builder, to avoid inadvertently saving the display after the fx graphs have been replaced). 4. In the Display Viewer Applet (which does not support the Flash wrapper) the fx graph objects are replaced immediately when each display is opened. Note: In case 2 above, if the display is saved from the builder it will be saved with the replacement graphs. A confirmation dialog to that effect is shown to the user before the save is performed. In a Display Viewer Applet deployment, the applet's ARCHIVE parameter must include gmsjflash.jar otherwise a ClassNotFound exception will be thrown for each fx graph on a display. For example: ARCHIVE="gmsjrtview.jar,gmsjmodels.jar,gmsjext.jar,gmsjrtvreport.jar,gmsjflash.jar,snmp.jar" Limitations: - Custom Fx objects are not replaced. - The replacement graphs do not exactly match the fx graphs in appearance. There are minor but noticeable differences in colors, gradients, fonts for legends and axis labels, tick marks, axis line style and thickness, spacing and placement of graph components, etc. - The following properties of obj_fxtrend are not supported in obj_trendgraph02: legendPosition, logAxisFlag, alarmGlow, traceNShadowFlag. So an obj_trendgraph02 replacement will always have a linear Y axis and its legend, if visible, will be on the right. - Interactive changes made by the user to an fx graph's scrollbar knob position, legend size, or time range are not applied to the replacement graph. Also, current data that has been applied to an fx trend graph is not re-applied to the replacement graph. So, the trace data, legend position, scrollbar position, and time range on the replacement graph will appear as though the display was opened just before the replacement was created. - The pie on an obj_fxpie object is always drawn as a circle but on obj_pie it is drawn as an ellipse that fills the available rectangular area.

Control Objects

16129: Slider control range problems in thin client fixed

In prior releases, there were two problems with the slider/scale control in the thin client: 1. If a slider control is configured so that (valueMax - valueMin) < 5 then in the thin client the slider is always disabled. 2. If a slider control has a minValue > 0, then in the thin client the control's upper limit is incorrectly set to maxValue + minValue, instead of maxValue. Both problems are fixed in this release.

16256: Input validation implemented for text entry controls

The text entry controls (obj_c1textedit, obj_c1textedit_i, obj_c1textedit_d) have been enhanced to support input validation. The following properties have been added to the text entry controls in the Interaction category: inputValidVarToSet - Attach to a local variable. This variable will be updated when the control executes with a value of 1 if the input is valid or a value of 0 if the input is invalid. invalidInputMsgVarToSet - Attach to a local variable. This variable will be updated when the control executes with an error message if the input is invalid or an empty string if the input is valid. Furthermore, if the validation fails, the control's actionCommand is not executed. The following properties have been added to the numeric text entry controls: valueMin - The minimum valid value. If no value is specified, there will be no minimum value validation. valueMax - The maximum valid value. If no value is specified, there will be no maximum value validation. The non-numeric text entry control has 3 new properties in the Data category: characterCase - Select Mixed Case, Upper Case, or Lower Case. minCharacters - The minimum number of characters allowed in the field. If no value is specified, there will be no validation done on the minimum number of characters. maxCharacters - The maximum number of characters allowed in the field. If no value is specified, there will be no validation done on the maximum number of characters. The validation occurs whenever the control executes. This happens when the user presses enter on a text field. If the executeOnFocusLostFlag is selected, the control also executes whenever the object loses focus. If the executeOnKeyStrokeFlag is selected, the controls also executes whenever a key is pressed while the object has focus. If the validation fails, the control's actionCommand is not executed. This task also enhances the Thin Client to reject invalid characters if they are typed in a numeric entry field. However, invalid characters can still be copied & pasted into a numeric field.

16377: Edit box shows but won't parse 1000s separator

In previous versions, the thin client would automatically insert a comma as the thousands-separator in an integer- or double-type edit box (obj_c1textedit_i and obj_c1textedit_d), but the display server would not parse numeric values correctly if they contained commas. In this release, the thin client will not automatically insert commas as the thousands- separator.

Fx Trend Chart

16284: Fixed autoscale problem when using multi-trace table

A problem in the Fx trend graph has been fixed which caused the y-axis range to be too large when the multiTraceHistoryValueTable property was attached to a function result.

Object Grid

16061: Composite in object grid no longer drawn 1 pixel too small

In version 5.5 and version 5.6, the composite object was rendered 1 pixel too small if the resizeMode was Size to Display and the bgVisFlag and/or bgBorderFlag were off. This problem has been fixed.

Pie Charts

16292: Fixed memory leak with gradient fill on obj_piescale

A memory leak that affected obj_piescale when pieGradientMode was set to any value other than None has been fixed. A minor leak that occurred on a drilldown to the current window has also been fixed.

Radar Charts

16228: New properties to set axis and grid colors on Radar Graph

Three new properties have been added to the Radar Graph (obj_radar): gridColor - set the color of the grid lines valueAxisColor - set the color of the value axis and value axis labels radialAxisColor - set the color of the radial axis and radial axis label

Tables

16225: Cell properties added to rotated table (obj_table03)

The following properties have been added to the rotated table (obj_table03): cellBgColor - set the cell background color cellBgStripeContrast - set the contrast level for the stripes if cellBgStripedFlag is on cellBgStripedFlag - select to set alternating striped rows cellTextColor - set the cell text color cellTextFont - set the cell text font cellTextSize - set the size of the cell text (in pixels) or set to -1 to use the default size

RTView Display Panel

15734: RTView has been enhanced to support style sheets

RTView has been enhanced to support style sheets. Style sheets allow you to set the values for graphical object properties in your displays from one or more external style sheet files. See the documentation for information on how to use style sheets.


16254: A minimum size for a display can now be specified

A minimum size for a display can now be specified. If the Resize Mode for the display is "Layout" and the user resizes a panel containing a display, the display will not be made any smaller than its minimum size. This can be useful to prevent objects from overlapping in Layout mode. In the Viewer, a panel cannot be resized smaller than the minimum size of the current display in the panel. In the thin client, a panel can be made smaller than the minimum size of the display, but in that situation scrollbars will appear in the panel. A display's minimum size is defined by two properties named resizeWidthMin and resizeHeightMin, which appear in the Interaction category of the display's Model Properties. (To configure a display's Model Properties in the Builder, select File/Background Properties then click the Model Properties button). The default value for each property is zero, which means the display has no minimum size. The resizeWidthMin and resizeHeightMin properties can be specified in a stylesheet file, as shown below: m_basemodel {resizeWidthMin:600; resizeHeightMin:400} This can be useful for setting the minimum size for multiple displays. If resizeWidthMin or resizeHeightMin are set to values that are larger than the display's full width and height, they are ignored and no minimum size will be enforced on the display. The full width and height for a display are defined in the Background Properties dialog, using the Model Width and Model Height fields.

TIBCO EMS Manager

16264: Purging of multiple destinations at once now possible

The TIBCO EMS Manager has been enhanced to allow the purging and deleting of multiple topics or queues in a single operation. In the Manage Topics page, you can select multiple topics from the table at the bottom of the page by holding the shift or control key while either clicking multiple rows or using the arrow keys to highlight multiple rows. The same can be done to select multiple queues from the table at the bottom of the Manage Queues page. The selected topics or queues will be presented as a semi-colon delimited list.

TIBCO EMS Manager - Administration

16263: New Manage Connections administration page

The TIBCO EMS Manager has been enhanced to include a new Manage Connections administration page. On this page, you can select a server at the top of the page to see a list of connections for that server at the bottom of the page. To delete a connection, select it from the Connections table and click Delete Connection. Note that this will disconnect the client using the connection from the server, so this feature should be used with caution. A new command has been added to the TIBCO EMS Administration data source: delete_connection. The arguments are as follows: delete_connection serverUrl connectionID For example: tcp://emsserver1:7222 delete_connection 555

Viewer - Applet

16260: Error message when applet is refreshed has been removed

A bug has been fixed which caused the Viewer applet to throw an InstanceAlreadyExistsException if the applet was reloaded. The applet no longer prints the message "ERROR: cannot create RTView MBeans" at startup.

Version 5.6c1 Release Notes

Alerts

15701: Support for custom alert text as part of alert command added

The discrete, limits and multi state alerts have been enhanced to support custom command text. The following properties have been added to the alerts: Discrete Alert: valueHighAlertCommandText valueMediumAlertCommandText valueLowAlertCommandText Limits Alert: valueHighAlertCommandText valueHighWarningCommandText valueLowAlertCommandText valueLowWarningCommandText Multi State Alert: alertStateNAlertCommandText The values of these properties are used in the $alertCommandText substitution which can only be used in the alertCommand property. These properties take either a string or a tabular data. The scalar value is supported whether the useTabularDataFlag is selected or not. If a scalar value is specified, this will be used for the $alertCommandText substitution. The tabular value is only supported if the useTabularDataFlag is selected. When specifying a tabular alert text value, the input table must contain two columns. The first column must contain indexes and the second column must contain alert command text values. The index value for each row in the input table attached to valueTable will be used to lookup the corresponding alert command text value. If the index is not found in the specified alert text table, the $alertCommandText substitution will be set to an empty string. If the useTabularDataFlag is off, the $alertCommandText substitution will be set to an empty string if the alert text value is tabular. If value is entered, the $alertCommandText substitution will be an empty string.


15740: New option renotifyCommand aded to all alerts

The discrete, limits and multi state alerts have been enhanced to support the reNotificationCommand property. If specified, this command will be used instead of the alertCommand for renotifications. If not specified, the alertCommand will be used as before.


15848: Tabular data allowed for value*AlertText property

The alert text properties in the discrete, limits and multi state alerts have been enhanced to support tabular data. This includes the following properties: Discrete Alert: valueHighAlertText valueMediumAlertText valueLowAlertText Limits Alert: valueHighAlertText valueHighWarningText valueLowAlertText valueLowWarningText Multi State Alert: alertStateNAlertText When specifying a tabular alert text value, the input table must contain two columns. The first column must contain indexes and the second column must contain alert text values. The index value for each row in the input table attached to valueTable will be used to lookup the corresponding alert text value. If the index is not found in the specified alert text table, the default alert text is used. If the useTabularDataFlag is off, the default alert text will be used if the alert text value is tabular. If a string value or no value are entered, the previous behavior is used. Whether a tabular, scalar or no value are entered, the $alertText and $alertEmailBody substitutions will contain the same string shown in the Alert Text field of the alert table. The same substitutions that are supported for the string value are also supported for tabular values.

15889: Link objects no longer fail to change color

In 5.4c1 a bug was introduced to the link object so that the link color did not change based on the link's value*Alert properties. This has been fixed.

15895: Alert state now correct if input table changes concurrently

In previous releases, an incorrect alert state could be generated for tabular alerts if the input to the alert was updated while the alert was being evaluated. Similarly, the "Evaluate Expression By Row" function could produce invalid results if its input table changed while the function was updating. Both problems have been fixed.

Builder - Editing

15859: Label obj_label11s no longer changes coordinates after saving

In versions 5.2c1 through 5.5c1, the obj_label11 and obj_label11s objects were shifted 8 pixels to the left every time the .rtv file containing the object was saved. This has been fixed.

15900: Builder Options->File List Size can now be set to 0

In the Display Builder's Builder Options Dialog, the field for "Recently Used File List Size" should accept a value of 0, but it did not. This has been fixed.

Builder - Options Dialogs

15748: Substitutions column has been added to the Caches tab

A column labeled Substitutions has been added to the Caches tab in the Options dialog. This column has the same functionality as on on the Alerts and Globals tab, where it has always been available. The substitutions defined in the column will be applied to the corresponding Cache Definition File when it is loaded. This allows the same cache definition file to be specified multiple times with different sets of substitutions. In that case, each cache that is defined in the file should contain a substitution in the cacheName property, since cache names must be unique. As usual, substitutions are specfied as name:value pairs, with pairs separated by spaces. If a value contains a space, the entire value should be enclosed in single quotes. Substitution names may not contain spaces or colons.


Builder - Property Dialogs

15945: Property Dialog Categories again alphabetical

In the Display Builder Object Properties dialog, the property categories where themselves not alphabetized. This has been fixed.

Commands

14453: SNMP Trap command can now send alert notifications

The RTView System Command "Send SNMP Trap" has been enhanced in conjunction with RTView Alerts. Now, when you select SNMP Trap for the Alert Command, you will have in the Define SNMP Command window a Specific Trap named "Alert". This trap is sent with the name "rtviewAlert" and includes the alert notification data (see MIB defintion below). In addition, traps sent by RTView now use enterprise OID "private.enterprises.sl" (.1.3.6.1.4.1.34605). MIB defintion of the rtviewAlert type: rtview OBJECT IDENTIFIER ::= { sl 1 } rtviewNotifications OBJECT IDENTIFIER ::= { rtview 1 } rtviewAlert NOTIFICATION-TYPE OBJECTS { rtviewAlertName, rtviewAlertIndex, rtviewAlertTime, rtviewAlertLastUpdateTime, rtviewAlertSeverity, rtviewAlertText, rtviewAlertID, rtviewAlertLabel, rtviewAlertCommandText, rtviewAlertCurrentValue, rtviewAlertComparisonValue } ::= { rtviewNotifications 2 }


15245: Commands no longer trigger after window is closed

In previous releases, the text entry and password controls executed an extra command if the executeOnFocusLostFlag was on and the commandCloseWindowOnSuccessFlag was also on. In this case the extra command was executed after the window closed and did not use the correct substitution values. This has been fixed so that the extra command after the window closes is no longer executed.

Data Historian

15472: Historian no longer ignores dataserver settings in OPTIONS.ini

In prior releases, the Historian ignored the dataserver and xmlredirect options specified in OPTIONS.ini. This is fixed.

15967: -compactionVerbose option fixed

In the previous version, the option to set -compactionVerbose:n on the command line was broken. This has been fixed.

Data Server

15904: Supported added for "As Needed" Data Server connections

In prior releases, all connections to Data Servers are opened when the RTView client application starts and are closed only when the client exits. In this release, each Data Server connection has an Activate option, with a choice of "At Startup", for the traditional behavior just described, and "As Needed". An "As Needed" connection is not activated (opened) until the client application loads a display that contains attachments directed to that server. Later, the connection will be deactivated (closed) if all such attachments are removed and a configurable idle time period (default is 15 seconds) has elapsed. To support this feature, a combo box labeled "Activate" with the choices "At Startup" or "As Needed" has been added to the data server option tab and to the Named Data Servers dialog. The default choice will be "At Startup" and it can be set independently for the default data server connection and each named data server connection. Each dialog also allows for the definition of an idle period for deactivation if "As Needed" is selected. These options can also be specified from the command line. For example, to set the default data server connection to activate as needed with an idle time of 30 seconds: run_viewer -dataserver:remote:MyHost:3278;activate=AsNeeded;idle=30 To set the connection to the data server named "Blue" to activate as needed with an idle time of 60 seconds, and with a primary and a backup connection: run_viewer -dataserver:name=Blue;connect=PrimaryHost:3456,BackupHost:3456;activate=AsNeeded;idle=60 This feature affects the Get Data Server Connection Status function. If an As Needed data server connection is not active because it is not needed, then the Status column of the table returned by the Get Data Server Connection Status function will contain the string "inactive". (The other possible values for the Status column are 'OK', 'no connection', and 'no service' as described in the release note for 15126)


16050: Extraneous add/remove listener calls on client discarded

The Builder and Viewer have been enhanced to avoid sending extraneous add and remove listener requests when a display is opened that contains a grid object with composite displays.


Data Sources

Cache Data Source

15749: The cacheName property now supports substitutions

The cacheName property of a cache definition object may now contain a substitution. The substitutions to be applied to a cache definition file can be specified in the Caches tab of the Options dialog, as described in the release note for 15748.


15876: New "Send Table" function

A new function has named "Send Table" has been added. The function can be used to send a table to a remote instance of the Data Server, over a socket or an http connection. The RTVAgent data adapter is used to receive the table in the Data Server. Typically, the function will be used to create an RTVAgent at each site that has data tables to send, as follows: 1. One or more instances of the Send Table function are configured to send the data tables of interest. Typically, the function's "Table to Send" argument is attached to the data table using one of the RTView data adapters. 2. The function instances from (1) are saved in an rtv file, named SendTables.rtv for example. 3. A new script, run_agent, is used to start the agent and load the rtv file from step (2). For example: > run_agent SendTables.rtv The Data Server to which the data tables are sent is configured to receive the data. Typically the data tables from all of the agents in the same agent class are stored in a cache table. This is done by attaching the valueTable property of a cache object to RTVAgent data. The arguments of the Send Table function are: Connection - the connection string for the remote RTVAgent adapter. This should either be a hostname:port string, for example localhost:5665, or a URL for the rtvagent servlet, for example http://SomeServer/rtvagent Agent Name - a string that identifies this agent (sender) to the RTVAgent data adapter. This should be unique among all agents in the same Agent Class. Example: District 5 Agent Agent Class - a string that uniquely identifies the class (type) of agents to which this agent belongs. Example: MyCompany.DistrictAgent Table Name - a string to identify the table when its received by the RTVAgent data adapter. Example: Sales Table Table to Send - the table to be sent to the remote RTVAgent data adapter. This is the only argument that should change on each update Insert Column For Agent Name - an integer. If 1, then a column named AgentName will be inserted into the table before it is sent. The column is filled with the value of the Agent Name argument. This column is useful for identifying which rows were received from which agents, if multiple agents in the same class send tables with the same Table Name. Insert Column For Agent Time: - an integer. If 1, then a column named AgentTime will be inserted into the table before it is sent, and the column is filled with the current time.


15936: Enhance Cache Data Attachment Dialog

The data attachment dialog for the Cache Data Source has been enhanced to provide additional filtering options. Clicking on the radio button labeled "Filter Rows = Advanced" will make 5 new filter fields appear in the dialog, as described below. Typically this will be used in attachments to the cache history table. Time Range: This specifies the time range of rows to be returned. The units are seconds by default, but a suffix of m,h,d,M can be specified for minutes, hours, days, Months etc. If Time Range is left blank or is zero or less, then the rows are not filtered by time range. If Time Range is specified but neither Begin Time nor End Time (see below) is specified, then the most recent rows of data within the specified time range are returned. If both Begin Time and End Time are specified, then Time Range is ignored. BeginTime The minimum timestamp of data to be returned, specified as a date string or as a long timestamp. If Time Range is also specified but End Time is not, then the time of the data returned will span from Begin Time to Begin Time + Time Range. End Time The maximum timestamp of data to be returned, specified as a date string or as a long timestamp. If Time Range is also specified, then the time of the data returned will span from End Time - Time Range to End Time. Rows per Page: The maximum number of rows to be returned from the attachment. The default is blank (or zero) which means return all rows. Page Number: This is used to determine the offset of the rows to be returned. For example if Rows per Page = 10 and Page Number = 2, then the the attachment will return rows 11 to 19. For historical data, page 1 contains the most recent data.


15998: Multiple cache data inputs support

The tabular cache definition object (obj_cache_table) has been enhanced to support multiple input attachments. A new property named valueTableCount has been added. The default value is 1, which results in the cache object having a single property named valueTable which can be attached to tabular input data. If valueTableCount is assigned to 2, then another property named valueTable02 will appear in the property sheet and it can be attached to a different tabular input., and so on up to valueTableCount = 99.


16004: Filtered cache attachment no longer throw array bounds exception

The following problem has been fixed: In prior releases, if a cache table has multiple index columns and an attachment to it has a row filter involving two or more of the index columns, and if a data table is applied to the cache and the data table contains a row in which an index column contains an empty string, an array bounds exception is thrown by cache data source.

JMS Admin Data Source (for TIBCO EMS only)

15860: URL Metadata included in column

A new column, URL, has been added to the following EMS Administration data source metrics tables: Users ListenPorts Producers Durables Queues Topics A new column, serverURL, has been added to the Connections table. The URL and serverURL columns contain the URL of the server returning the data. All of the server tables and the rest of the metrics tables already had a URL column, and have not been modified. Existing displays with data attachments to these tables, and * selected for the Field(s) will now show the new URL column.


15861: Wildcard support added to Server field in data attachments

All of the TIBCO EMS Administration data source metrics tables have been enhanced to support * in the Server field of the data attachment. Note that the server tables already supported * in the Server field. When * is used in the Server field of the data attachment, the table returned will contain rows for all active servers.


JMX Data Source

14697: Wildcarding allowed for JMX connection field

The ability to add a wildcarded connection name like "Sample*" has been added as a member of a JMX Connection Group. Wilcarded names may contain one or more * characters in them.


15828: Bug in composite data display if first record null is fixed

In version 4.6c1 a bug was introduced to the JMX data source that caused it to process composite data incorrectly if the first element in the data was null. This has been fixed.

15923: JMX queries now multi-threaded

The JMX data source has been enhanced to run MBean queries in a separate thread. This prevents slow queries from blocking the main application thread and improves application responsiveness.


15971: JMX Connection Groups have been implemented

JMX Connection Groups have been implemented allowing the user to select a subset of the available connections as a group. That group name may be then used wherever a connection name was previously valid.


16009: Jmx Notifications performance enhancement

Attachments to JMX notifications have been optimized.

16015: JMX attachments to Operations no longer return null table

In previous versions, if a client mBean offered no attributes RTView would show a null table as a result of an operation. This has been fixed.

Demos

RV Monitor Demo

15888: Function Errors in summary totals fixed

In previous releases, the rvmonitor demo generated errors about missing functions. This has been fixed.

Display Server

15857: Data Server setting in OPTIONS now has effect on Display Server

In prior releases, the Display Server ignored the dataserver and xmlredirect options specified in OPTIONS.ini. This is fixed.

15935: Fix for incorrect drawing routine in server jvm

Sun bug #6876276 has caused a problem in the drawing routine when using the server jvm in java version 1.6.0_14-1.6.0_17. Sun fixed the bug in version 1.6.0_18. The problem has been fixed in RTView with a work around, but it is not recommended that these versions of java be used for applications running on the server jvm.

Functions

15823: EEAS function no longer fails if parameter contains a comma

In the Display Editor, when defining a function of type Evaluate Expression and using the condExpr evaluator function, the result would be incorrect if a string argument to condExpr contained a comma. This has been fixed.

15863: A new function named Store Table in Cache has been added.

A new function named Store Table in Cache has been added. The cache is specified by name. A value of zero is returned if the named cache is not defined otherwise 1 is returned. The arguments for the function are as follows: Table - the table to be stored. Cache Name - the name of the cache in which the table should be stored. The cache must already be defined.


15898: Function GetDataServerConnectionStatus no longer null if no data

In previous releases, the GetDataServerConnectionStatus returned an empty table (no columns or rows) if no data server connections were defined. Now it returns a table with no rows but with all of the expected columns.

Object Library

15481: Tooltips for all non-flex graphs now are the same as flex graphs

The look of the mouseOver in the non-flex graphs has been improved. They are now consistent with the flex graphs and the non-graph objects. This change does not apply to the thin client.

Charts (General)

15921: New Status History Chart

A new graphical object named status history chart has been added. It appears on the Graphs palette in the Builder. It shows discrete status values as horizontal bars drawn against a horizontal time axis. The chart is intended to be attached to a data table that contains a status column and one or more index columns. One horizontal bar is drawn for each unique combination of index column values. The value of the status column is used to determine the fill color and fill style of the bar segment or cell at the corresponding time interval. A label appears at the right edge of each bar, containing the unique name that corresponds to the bar. A circular indicator also appears next to the label indicating the most recent status value for that bar. For example, consider a data table that holds time-based status information for nodes on a network. It has three columns: time_stamp, node_name, status The time_stamp column contains the timestamp for the row. The node_name string is unique for each node so it is used as the index column for the table. The status column contains either "up", "down", or "unknown". Here is an example of the contents for a network with 2 nodes: 12:00, Node01, up 12:00, Node02, up 12:01, Node01, up 12:01, Node02, down 12:02, Node01, up 12:02, Node02, up ... and so on ... This table could be attached to the valueHistoryTable property of the status history chart. The barProperties property would be configured to assign a fill color and style that corresponds to status=up (solid green, say) and another for status=down (crosshatch red, say) The chart would draw 2 horizontal bars, one for Node01 and another for Node02. Each bar would contain a segment or cell for each time interval the table for that node. Given the example table above, if the chart was observed at 12:03, each bar would contain 2 cells, one for the 12:00 to 12:01 interval and another for the 12:01 to 12:02 interval. The fill color and style of the cell would correspond to the status at the start of that interval, as determined by the barProperties property. Note that no cells would be drawn for the interval starting at 12:02, since there is no end point for that interval in the data table. Instead, the status value for the last data value is always used to control the fill color and style of the circular indicator that appears at the right end of each bar, next to the bar's label. The important properties of the status history chart are as follows. A. properties in the Data category: timestampColumnName: The name of the table column that contains the timestamp for each row. If blank, the chart will look for a column named "time_stamp" in the table and use that if found, otherwise if the first column in the table contains timestamp data, then it will be used. If still no timestamp column is found, then the current time will be used. indexColumnNames: The name of a column or multiple columns which can be used to uniquely identify which rows in the table should be plotted on the same horizontal bar. In the example above, node_name would be assigned to this property. If indexColumnNames is blank, the chart will assume that the table's second column is the index column. valueColumnName: The name of the column containing the status value used to determine the fill color and style of each bar cell. This column can contain a string, a number, or a boolean value. Its value will be compared to the barProperties property to find the appropriate fill color and style. If valueColumnName is blank, the third column in the table will be used. labelColumnName: The name of the column containing the string to show on the label for each bar. If blank, the label string will be composed by from the index column values for the bar. descriptionColumnName: The name of the column containing addition information for each row. This information will be included in the mouseover (tooltip) text shown when the mouse is over a bar cell (if the mouseOverFlag property is checked). If descriptionColumnName is blank, then no additional information is not included in the tooltips. valueHistoryTable: This property should be attached to a data table containing the historical data for the chart, if any. It should contain a timestamp column, index columns, and a value column as described above. When a data table is applied to this property, any previously plotted data is removed and the entire chart is replotted. Typically this property will be attached to the history table of a cache. valueCurrentTable: This property can be attached to a data table containing rows of current data for the chart. It should contain index columns, and a value column as described above. If it does not contain a timestamp column, then the current time will be assumed for each for in the table. When a data table is applied to this property, the data is assumed to be newer than any other previously plotted data is removed and is appended to it. Typically this property will be attached to the current table of a cache. maxNumberOfRows: The maximum number of rows of historical plus current data that the chart will maintain. Older rows will be discarded as necessary, which may cause bar cells to be removed from the left edge of the chart. B. properties in the Bar category: barHeightSpacing: The vertical distance, in pixels, between the bottom of each bar and the top of the bar below it. This must be an even number >= 2. barHeightFitFlag, barHeightMin, barLabelTextHeight: These properties are used together to determine the height of each bar. The minimum height of each bar, in pixels, is the larger of the barHeightMin property and the pixel height of the bar's label, which is approximately 1.9 * barLabelTextHeight. If the chart's plot area is not tall enough to display each bar at its minimum height, then a vertical scrollbar will appear to show the remaining bars. One the other hand, if the chart's plot area is taller than needed and if the barFitFlag property is checked, then each bar will be stretched vertically to fill the additional space. barCellBorderFlag: If checked, a vertical line is drawn between each cell of each bar. These lines correspond to the location of the data points that mark the start and end of each cell. Note that the lines may be evenly spaced, or not, depending on whether or not the data is updated at regular intervals. The color of the lines is determined by the gridColor property. barLabelBgColor: The background color of the label for the first (topmost) bar and every other bar below it. barLabelBgColor2: The background color of the label for the second bar from the top and every other bar below it. barLabelMaxLength: The maximum length, in pixels, for each bar label. If the label is longer it will be clipped. A value of zero indicates no maximum length. barOutlineFlag: If checked, each bar will be outlined in the grid color. barGradientStyle: Indicates whether a gradient should be applied when filling a bar cell. Note that this property is ignored for cells that have a fill pattern specified by the barProperties property. barProperties: This property is used to map each possible status value to a corresponding fill color and style. The property is configured from the Bar Properties dialog. A fill style can be solid or one of several patterns. A value of * can be configured to specify the fill color and style for any values that are not explicitly specified. C. Other properties. mouseOverFlag: If checked, a mouseover tooltip will appear when the mouse is over a bar cell or a bar label. Over a cell is, the tooltip will show information about the data row that corresponds to the left edge of the cell. Over a bar label, the tooltip will show information about the last (most recent) data row for that bar. drilldownColumnSubs: A drilldown can be performed by clicking on a bar cell or a bar label. If a cell is clicked, the drilldown substitutions will be set to match the data row that corresponds to the left edge of the cell. If a bar label is clicked, the drilldown substitutions will be set to match the last (most recent) data row for that bar. sortAscendingFlag: If checked, the bars are sorted alphabetically by their labels. If unchecked, the sort is in reverse alphabetical order. The chart defines a number of other properties that are common to the other graph objects. These have the same purpose as on the other graphs.


15942: Object selection no longer required for graph mouseover

The trend, spark, bar, pie, radar, stock and xy graphs have all been enhanced so that you no longer have to select the object in order to see the mouse over or cursor.

Fx Bar Chart

15976: drillDownColumnSubs and drillDownSelectMode properties added

The Interaction properties drillDownColumnSubs and drillDownSelectMode are now available in the Fx Bar Chart. Functionality is identical to the respective properties of the standard Bar Chart.


Heatmap

15922: Heatmap no longer requires object selection for mouseover

The heatmap has been enhanced so that you no longer have to select the object in order to see the mouse over text.

Trend Charts

15984: Drilldown/mouseover in thin client if resizeMode=scale now works

In the previous release, the drilldown and mouseover feature did not work on a trendgraph in the thin client if the display resize mode was "scale".

Security

15893: Display Server now calls getSubstitutions for each login

The Display Server will now call the custom user manager's getSubstitutions(String userName) method once for each login session. Previously, the method was only called once for each unique username, even if the same user logged out and back in from a different browser session. The new behavior allows the custom user manager to return a different set of substitutions for each user session.


Viewer

15772: New option to set default window title

The Display Builder, Display Viewer and Display Viewer Applet have been enhanced to support a new window title option. By default, window titles contain the name of the application followed by the display name. For example: RTView mydisplay.rtv The new Custom Window Title option on the General Tab of the Application Options dialog now controls the window titles. If specified, the Custom Window Title will be used, if not, the default window title will be used. This window title takes precedence over the title specified in your panel configuration file. The Window Title option in the Drill Down Properties dialog takes precedence over the Custom Window Title. To specify an empty window title, enter a single space in the Custom Window Title field. If this option is modified in the Display Builder, the new setting will only be applied to new windows. The titles of windows that are already open will not be changed. The custom window title can also be specified from the command line or applet parameter: command line: -customWindowTitle:myTitle applet: param=customWindowtitle value=myTitle


Viewer - Multi-Panel Frameworks

15906: Option to disable preload of tabbed panels added

The tabbed panel configuration file for the Viewer now supports an option to control the loading and unloading of displays in tabs. By default, the displays for all tabs are loaded at startup and are never unloaded. A new attribute named "preload" can be set to false on the TabbedPanel tag to change this behavior so that only the display for the first tab is loaded at startup and the display for a tab is unloaded when the user selects another tab. In other words, if preload=false then only one display at a time is loaded in a tabbed panel. Example: <?xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> <TabbedPanel title="Test of Tabbed Panel" placement="top" preload="false"> <RtViewPanel title="Table Overview" display="overview"/> <RtViewPanel title="Production Table" display="production_table"/> <RtViewPanel title="System Table" display="system_table"/> </TabbedPanel> </panels>


Version 5.5c1 Release Notes

Alerts

15157: $alertTime added to the list of alert variables

A new substitution, $alertTime, has been added to the Discrete Alert, Limits Alert and Multi State Alert. This substitution can be used in the actionCommand on the alert. The value of this substitution is the time that the alert was generated. This is the same value that is shown in the Time column of the Alert Table.

15833: Alerts now show a timestamp of the last data update

A new column, Last Update Time, has been added to the AlertTable. This column shows the date/time that the alert last received a data update. This column is updated whenever new data is received for active (ie. not cleared) alert. A new property, timeColumnName, has been added to the Discrete, Limits and Multi State alerts. If specified, the value in that column of the valueTable will be used for the Last Update Time instead of the time the alert last received data. The column specified in the timeColumnName property must be of type date or long. If the timeColumnName is not specified, is not found, or is not of type long or date, the time the alert received the data will be used instead of the column value. The timeColumnName property is only supported if the useTabularData flag is turned on. It is not supported for scalar alerts. For scalar alerts, the time the alert last received the data is always used.


15841: reNotificationMode added to alerts

A new property, reNotificationMode, has been added to the Alert category for Discrete, Limits and Multi State alerts. This property allows you to configure how your alert will renotify. The reNotificationMode property supports the following options: None - Do not renotify. The alertCommand is executed once when the alert is activated, then never again. Renotify on Timer - Renotify based on the value in the reNotificationTime property. The alertCommand is executed once when the alert is activated and then it is re-executed every reNotificationTime seconds until the alert is cleared or acknowledged. If the reNotificationTime is 0, the alert will not renotify. Renotify on Data Changed - Renotify when the input value changes. The alertCommand is executed once when the alert is activated and again when a different value is received until the alert is cleared or acknowledged. The new value must be different than the previous value for the alert to renotify. Renotify on Data Updates - Renotify when the input value is updated. The alertCommand is executed once when the alert is activated and again whenever a value is received until the alert is cleared or acknowledged. The new data value may be the same or different than the previous value for the alert to renotify. The default value is Renotify on Timer. Note that the reNotificationTime property is ignored unless the reNotificationMode property is set to Renotify on Timer.


Builder

15689: Jide components updated to correct crash with jdk 1.6

When running the Display Builder builder under JDK 1.6, the following exception might appear: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 2 at java.awt.Container.getComponent(Unknown Source) at com.jidesoft.swing.JideSplitPane.setDividersVisible(Unknown Source) ... This problem has been fixed by updating the Jide components to version 2.7.2.


Builder - Options Dialogs

15814: Cache Display Data tabs fixed to show correct content

In the Display Builder Caches dialog, if a given cache has both current and history tables, the Display Content dialog will have two tabs, one for each. However the tab labels were reversed from the actual contents of the tabs; this has been fixed.


Data Sources

15834: RTView Agent Data Adapter

An RTVAgent data adapter has been added to RTView. It accepts connections from remote agent applications. Once connected, agents can send data tables to the RTVAgent data adapter and objects can be configured with data attachments to those tables. Agents are written using the com.sl.gmsjagent package, also new in this release. The package is documented in the Customization section of the RTView Users Guide. An example agent can be found in the custom/rtvagent directory of the RTView installation. An agent can make either a direct socket connection to the RTVAgent data adapter, or it can make an http connection via the rtvagent servlet. The rtvagent servlet is also new in this release, and can be found in the servlets/rtvagent directory of the RTView installation. When it connects to the RTVAgent data adapter, an agent identifies itself by two strings: its Agent Class and Agent Name. The Agent Class should be globally unique (e.g. "MyCompany.AgentType1") while the Agent Name should be unique among agents with a given class (e.g. "Site 01", "Site 02", etc). When an agent sends a data table to the RTVAgent data adapter, it specifies a Table Name string. The table name should be unique among all tables that that agent sends (e.g. "ProductionTable", "SalesTable"). To attach an object property to a table received from an agent, the Agent Class and the Table Name (described above) must be specified in the RTVAgent data dialog. The object property will receive all tables from all agents with the matching Table Name and Agent Class. The Agent Name will appear as a column in the table. Typically, the valueTable property of a cache object will be attached to RTVAgent data, and the AgentName column will be specified as an index column for the cache. See the rtvagent example described above for a complete example. There is a predefined Agent Class named RTViewDs that supports one table named Agents. The Agents table contains a row for each agent that is currently connected. The columns in the table are: AgentName, AgentClass, Last Receive Time (the time at which a table was most recently received from the agent), Total Rows Received (cumulative count of table rows received from the agent), and Client ID (a unique number assigned to the agent connection, which is < 10000 for agents using a socket connection and > 10000 for agents using an http connection). The Options dialog in the Builder now has an RTVAgent tab. The options on that tab are as follows: - Enabled : This option enables the RTVAgent data adapter. If the option is unchecked, connections from agents will not be accepted. It is unchecked by default. - Port : The port on which the RTVAgent data adapter will accept agent connections. Note that only one application at a time can accept connections on a given port. The default port is 5665. Valid port numbers are greater than 1024. - Use SSL : If checked, a secure socket will be used for each agent that makes a direct socket connection to the RTVAgent data adapter. Data is encrypted before transmission over a secure socket. Note that this option does not apply to agents that connect indirectly via HTTP and the rtvagent servlet. For secure connections in that case, an HTTPS connection should be used from the agent to the rtvagent servlet. (It may be necessary to configure your webserver to support HTTPS connections, but that configuration is outside the scope of RTView). Changes made to the RTVAgent Options tab do not take affect until the options have been saved and the RTView application is restarted. The options are saved to the file named RTVAGENTOPTIONS.ini. The options can also be specified on the command line, as follows: -rtvagentoption:enabled=[false|true] -rtvagentoption:port=[port_number] -rtvagentoption:ssl=[false|true] If the port number is changed from its default value then the rtvagent servlet, if used, should also be reconfigured. The servlet.properties file, found in the servlets/rtvagent directory of the RTView installation, should be edited and the following line changed to specify the appropriate port: ServicePort=5665 Then the make_war script should be run and the rtvagent.war file should be redeployed.


JMS Data Source

15824: Crashes caused by data type changes fixed

In previous releases, the JMS data source would crash under 2 scenarios: 1. data for a message field or property initially came in with one data type, then came in later with a different data type 2. data for a message initially came in as a number or boolean type, then came in with a null value. This has been fixed.


15840: Duplicate JMS data in history cache removed

In prior releases, if the valueTable property of a cache had an attachment to JMS data with a row filter, duplicate rows might appear in the cache history table. This is fixed.

TIBCO Hawk Data Source

15612: Rounding of Hawk double types to 2 decimal places eliminated

In previous releases, Hawk MicroAgent return columns with the type double were rounded to 2 decimal places by the data source. This has been changed so that no rounding occurs. Most objects have a valueFormat property that can be used to round the displayed value. To revert to the previous behavior and round doubles in the data source, use the -hawkrounddoubles command line parameter.

Display Server

15800: Display Server now executes system commands if via Data Server

A bug which prevented the Display Server from executing system commands when it was connected to the Data Server has been fixed.

15868: thin client support for panel resize

The release note for 15784 describes the resize mode and anchor/docking features that were added to the Display Builder and Display Viewer in this release. These features are also supported in the thin client. The behavior in the thin client differs from the Display Builder/Viewer in the following cases: - When the initial display is opened in the thin client, the browser frame is not resized to match the display size as it is in the Display Viewer. Instead, in crop mode, the display will appear in its full size, and if the browser frame is larger than the display, unused space will appear below and to the right of the display, and if the browser frame is smaller than the display, scrollbars will appear. In layout and scale modes, the display will briefly appear in its default size, and will then resize to fit the browser frame size. This may also occur if another tab is opened in the browser and the browser is resized, and then the browser tab that contains the thin client is re-opened. - In layout and scale modes, after resizing the browser frame, table objects and Fx charts will revert to their original states. For example if the user has clicked on a column header in a table to sort the column, then after a resize the table will revert to its default sort. Likewise, if the use has scrolled in a table or an Fx chart, or resized the legend or zoomed in an Fx chart, then after a resize the scrollbars and legends will revert to their initial position and size. - When resizeMode = scale, there will be unused space in the browser frame. This is because in scale mode the display will only use the largest 4x3 rectangular area of the frame, to ensure equal scaling in both dimensions. The unused area will have the same color as the display background, but will not have a gradient fill.


Functions

15767: Extra reference appearing for function w/ empty include file

In the Display Builder Function dialog, the reference count for a function could become incorrect if: (1) the function is used more than once in data attachments to a given object, and (2) an include file is added or removed. This has been fixed.


Object Library

Composite Object

15843: Composites with labels are no longer drawn at wrong position

In previous releases, composite objects with labels were drawn in the wrong y position. This has been fixed. This fix will not break existing displays. The y position of composites in existing displays will be adjusted so the objects are drawn in the same location when opened in the new version of RTView.

15844: Composite borderPixels are no longer off by 1

In previous releases, the borderPixels property was not applied correctly to the composite object. The number of pixels drawn was one less than the number specified in the borderPixels property. This has been fixed. When a display with a composite created with a previous version of RTView is loaded into the new version of RTView, the number of borderPixels will be reduced by one so that the object will be drawn the same as it was in the previous version.

15845: Support for resizing composite objects added

A new property, resizeMode, has been added to the Composite category of the composite object. When set to Size to Display (default), the size of the composite is determined by the size of the display it contains, and the composite cannot be resized. If set to Layout, the composite can be resized and the objects in the composite display will be laid out according to their anchor and dock properties. If the resizeMode is set to Layout, the dock and anchor properties may be set on the composite so that it will resize during a window resize if the window resize mode is also set to Layout. If the window resize mode for the display containing the composite is set to Scale, the composite object will do a scale instead of a layout. Note that the dock and anchor properties should not be setup to stretch the composite object if the resizeMode is Size to Display. This will cause the object to toggle back and forth between stretched and not stretched when the window is resized in Layout mode.


Control Objects

11275: Text wrapping added to rectangular general objects

A new property, labelWordWrapMode, has been added to all of the rectangular objects on the General palette. If set to a value other than None, the text specified for the label property will be wrapped to fit the width of the object. The obj_rect_ilvs has a new valueWordWrapMode property that does the same for the valueString text. The labelWordWrapMode and valueWordWrapMode properties support the following values: None - don't auto wrap text Space - Whenever possible, only add line breaks at whitespaces. If a single word is longer than the object is wide, the line break will be added to the word so that the text fits within the width of the object. Space and Punctuation - Whenever possible, only add line breaks at whitespaces and punctuation characters. Supported punctuation characters are comma(,), period(.), semi-colon(;), colon (:), hyphen(-), question mark(?), asterisk(*), ampersand(&), greater than(<), less than(>), backslash(\), forward slash(/), pipe(|), plus(+), exclamation point(!), and at(@). If a single word is longer than the object is wide and none of these characters is in the word, the line break will be added to the word so that the text fits within the width of the object. The labelWordWrapMode is ignored in the following cases: labelTextPosX = Outside Right labelTextPosX = Outside Left labelTextPosY = Tab labelTextPosY = Title The valueWordWrapMode is ignored in the following cases: valueTextPosX = Outside Right valueTextPosX = Outside Left In those cases, the text will not be wrapped.

Fx Bar Chart

15603: barFitFlag property now supported

The Fx Bar Graph now supports the barFitFlag property found on the standard bar graph. The default for barFitFlag is ON (checked).

15826: Fx Bar labels now draw correctly

Value labels on bars that were scrolled off screen would still appear  usually over the axis or margin areas. This has been fixed so that labels first check the scrolled status of their associated bars, and only draw themselves if those bars are visible.


Fx Trend Chart

15798: FX trend autoscale inconsistency corrected

The Fx trend graph will now use the yValueMin and yValueMax properties to determine the y axis range in the case where all of the y data values are zero, which is consistent with the behavior of obj_trendgraph02. In previous releases, the Fx trend graph would use a range of 0 to 100 in that case.

15799: Fx Trend chart label size in stripchart mode made consistent

In prior releases, the y axis labels on the Fx trend graph would sometimes be too small, when yAxisMultiRangeMode = Strip Chart and the y axis range changed dynamically. This is fixed.

15813: Log axis no longer stuck at 1 to 100 if any y values <= 0

A problem with the Fx trend graph, in which the log axis range would always be 1 to 100 regardless of the data values if any y values were <= 0, has been fixed. Note that y values that are <= are still not plotted, since the log of such values is not defined.

Object Grid

15591: Object grid bug for empty valueTable fixed

In previous releases, the object grid would not display the icons correctly if the valueTable was initially null then came in with only one column. This has been fixed.

RTView Display Panel

15784: Options to move/resize objects when panel is resized

RTView has been enhanced to support display layout options for window resize in the Display Builder and Display Viewer. Three window resize modes are now supported: 1. Layout. When the window is resized, the display is resized to fit the available space. The objects in the display are laid out according to their anchor and dock properties (see below). The window is not forced to maintain its aspect ratio. Objects that are not docked or anchored will move relative to their offset from the top left corner of the display. For example, if the object is centered on the display, the object will move 50% of the resize amount. If the object is centered at 3/4 of the display, it will move 75% of the resize amount. 2. Scale. This is the default for the Display Builder, Display Viewer and Display Viewer Applet. When the window is resized, the display and all of the objects in it are scaled to fit the available space. The window is forced to maintain its aspect ratio. 3. Crop. This is the default for the Thin Client. When the window is resized, the display stays the same size. If the window is bigger than the display, empty space will show around the display. If the window is smaller than the display, scrollbars will show up. The window is not forced to maintain its aspect ratio. All 3 of the above modes support zooming the display (right-click -> zoom). In both Layout and Scale modes, if the window is resized while the display is zoomed, the resize will further zoom the display. If Default is selected, the default window resize mode will be used. The default is Crop for the Thin Client, and Scale for everything else. In the Display Builder, the window resize modes are only applied to drill down windows. The main window of the Display Builder is always in crop mode. The application level window resize mode can be set in the General tab of the Application Options dialog or on the command line: -resizeMode:XXX Where XXX is layout, scale or crop. It can also be set in the applet parameter: parameter=resizeMode valid values = layout, scale and crop If the window resize mode is changed in the Application Options dialog in the Display Builder, the new value will only be applied to new windows that are opened. Windows that are already open will not change modes. The window resize mode can also be set on each display in the Background Properties dialog. If set to Default, the application level resize mode is used. Otherwise, the specified resize mode will be used for that display. Two new properties have been added to the objects in order to support Layout mode. 1. dock - Select one of the following options: None (default) Top Left Bottom Right Fill When the dock property on an object is set to one of the sides (Top, Bottom, Left, Right), it is moved to the specified side of the display and stretched to fill that side of the display. If the size of the display changes, the docked objects will stretch to fill the available space. For example, if the dock property is set to Top, the object will be moved to the top of the display and the width of the object will be changed to fill the width of the display. If the display is then made wider, either by changing the Background Properties on the display or by resizing the window in Layout mode, the width of the object will change to match the new width of the display. Multiple objects can be docked to the same side of the display. In this case, the first object is docked against the side of the display, the next object is docked against the edge of the first object and so on. When a display has multiple side docked objects, the object order controls how the dock layout is applied. The layout is applied to the object list from back to front. For example, if the first object in a display is docked to the top, and the second object is docked to the left, the first object will fill the entire width of the display, and the second object will fill the left side of the display from the bottom of the first object to the bottom of the display. When the dock property on an object is set to Fill, it fills the available space left in the display after all of the side docked objects have been positioned. When multiple objects in a display have the dock property set to Fill, those objects are laid out in a grid in the available space. By default, the grid has one row and as many columns as objects. You can change the grid rows and columns in the Background Properties dialog. If both are set to 0, the default will be used. If both the rows and columns are specified, the row value is used and the number of columns is calculated based on the number of objects. If the row value is 0 and the column value is specified, the number of rows will be calculated based on the number of objects. The objects are laid out left to right, top to bottom according to the order of the objects in the display. The objects with the dock property set to Fill are always laid out after all of the other docked objects. Once an object is docked, there are some limitations on how you can modify that object in the Display Builder. You can no longer move it by dragging or changing objX and objY in the property sheet. Side docked objects can only be resized toward the center of the display (ex. if the object is docked to the top of the display, it can only be resided to be taller). Fill docked objects cannot be resized at all. You cannot resize any docked objects using the objWidth or objHeight properties in the property sheet. You must drag on the valid resize handle to resize it. It will not be moved by Align or Distribute. Objects can be aligned against a docked object, but the docked object will not be moved to align against another object. Docked objects are ignored by Distribute. Note that when an object is docked, the objX and objY along with objWidth or objHeight on object is changed. For example, you instance a General object from the palette. The properties of the object are as follows: objX:250 objY:250 objWidth:64 objHeight:48 When you set the dock property to Top, the properties are modified as follows: objX:368 objY:520 objWidth:736 objHeight:48 (no change) If you then change the dock property to Left, the objWidth isn't changed, but the objHeight stays the same, so the object fills the entire height and width of the display. When you change the dock setting to None, these properties stay the same. Only objects that support the objWidth and objHeight properties have the dock property. 2. anchor - Select none, one or more of the following options: Top Left Bottom Right The anchor property is only applied when the display is resized either by changing the Background Properties on the display or by resizing the window in Layout mode. The anchor property anchors the specified side of the object to the same side of the display. When the display resizes, the number of pixels between the specified side of the object and that side of the display remain constant. If an object is anchored on opposite sides (ie. Top and Bottom or Left and Right), the object will be stretched to fill the available space. Only objects that support the objWidth and objHeight properties support anchoring on opposite sides. If an object has the dock property set, the anchor property is ignored. The composite object supports both dock and opposing anchor sides, but does not behave like other objects if the resizeMode is set to Size to Display. In this case, the composite size is controlled by the size of the display that it contains, so any changes to the width or height of the object result in the composite moving, not resizing. The composite object should not be docked if the resizeMode is set to Size to Display.


Version 5.4c1 Release Notes

Alerts

15425: Discrete alert now supports non-string input values

In previous releases, the discrete alert would not work if the input value was not a string. This has been fixed.

15590: Add Alert dialog upgraded

In the Display Builder, the Alerts dialog has been improved so that the Add button invokes a popup dialog with fields for the new object name and a drop-down list for its type, and the Copy button invokes a popup dialog with a field for the new object name. Both these dialogs verify that the new name is unique and warn if it is not.

Builder

15627: Data attachment string in Data Display dialog now scrollable

In the Display Builder, the Data Display dialog shows the data attachment string in a field above the data table. This field has been made scrollable horizontally to accommodate long strings.

15690: Dock to Bottom now default for Non-graphic dialogs

In the Display Builder the dockable dialogs Alerts, Caches, Functions, and Local Vars have been given a default initial state of "docked" instead of "floating". This means that if you reset the window layout (via the Tools menu) then the first time you invoke one of those dialogs it will be docked in the bottom dock site, where previously it would have been floating.

15723: Data display dialog now processes subs correctly

In the Display Builder, when using the Data Display dialog to view a data attachment, the dialog will now properly display data attachments containing substitution variables.

Builder - Editing

13726: Support for copying alerts, caches, and functions added

In the Display Builder, there are three dialogs that manage non-display objects: Alerts, Caches, and Functions; some improvements have been made to the way these dialogs operate: 1. When the selection is moved to an Alert or Cache in its corresponding dialog, the previous selection (e.g. in the display area) is cleared. This is now true of Functions as well. Also, changes of selection among the three dialogs and the display area are now recorded in History and Undo/Redo can be applied to them. Note that when the selection is moved to one of the dialogs it will be invoked as needed. 2. The Delete operation (via menu, toolbar, or keyboard key) now works with functions. 3. The Copy (Ctrl-C) and Paste (Ctrl-V) operations can now be used with Alerts, Caches, and Functions as well as display objects. Note the following: (a) Alerts, Caches, and Functions cannot be pasted into the same display from which they were copied; this operation has no effect. (b) To create a copy in the same display, use the Copy button on the respective dialog; note this does not copy to the clipboard. (c) If one of these objects is pasted into another display that already contains a corresponding object of the same name, the user will be prompted for a new name (and must enter one). (d) A copied-and-pasted object will have the same data attachments as its original.

Builder - Property Dialogs

15696: Select Columns Dialog now resizeable

The Select Columns Dialog is now resizeable, allowing wider column names to be displayed without the need for scrolling. Longer lists of column names can be displayed.

15774: editing issues with obj_rect_ilvs +obj_circ2d_ilvs valueVisFlag

In previous releases, the valueVisFlag property of obj_rect_ilvs and obj_circ2d_ilvs toggled the visibility of the label properties instead of the value properties. If the valueVisFlag and labelVisFlag were not the same, it was difficult to enter property values for any objects in the same display. These problems have been fixed.

Commands

14454: SNMP command dialog now supports substitutions

In the Display Builder, the Define SNMP Command dialog (invoked from the Define System Command dialog) has been enhanced to allow substitution variables for the following fields: Destination Address, Destination Port, Community Name, Enterprise OID, and if enabled, Specific Trap. Note that now the variable values are not checked for correctness at command definition time, but rather at command execution time, after substituting the values of any variables.

Data Historian

14803: Can now set substitutions in Historian and Data Server GUIs

It is now possible to add and edit substitutions directly in the Historian and Data Server GUIs.

14943: Data compaction options implemented for aged historical data

RTView has been enhanced with a new historian compaction feature. The Historian allows archival data to be compacted in three ways: 1. Retention: Data may be maintained up to a certain age and then removed once the data is older than a specified length of time. This is similar to the older retention feature. 2. Aggregation: Data may be compacted so that as the rows of data in the archive age they are aggregated. The user may define how the aggregation should occur and on what. E.g. a user could choose to compact the data rows older than one week to be combined into a single row and held for a further month before being aggregated further. 3. Displacement: Data may be displaced so that all data in the table is moved to a separate table based upon a time period. E.g. every 24 hours the data is moved to a renamed table and the main table is flushed to refill again. Various options are available to aggregate the data so that it can derive totals, averages, minimums, maximums or counts on a column by column basis. The data may be compacted in place or compacted into separate tables based on age. The compaction rules are defined using the compactionType property of a cache object that is being used to configure the historian. If you are licensed to use compaction you will have the choice of "none", "aggregate", or "displace". Depending on which you choose, other properties with associated dialogs for defining rules are available. Limitations: GroupByType "count" is only supported for columns of data type integer, and groupByType "average" is only supported for columns of data type double. Alternate tables for Historian compaction do not support -smoothcompaction. Compaction of boolean data columns is not supported for PostgreSQL, as compaction output does not support "true"/"false" for booleans.

15765: NPE in attachHistObjToCacheNode

In the previous release, the Data Historian would throw a NullPointerException when loading a configuration file containing a cache object whose historyTableName property was non-blank and whose indexColumnNames property was blank. This is fixed.

Data Sources

Cache Data Source

14486: Cache Data source GUI

In the Display Builder, the way Cache Data Source objects are added and configured has changed. Instead of seeing cache objects as visible rectangles in the display, they will be shown in a new Caches dialog. When a cache object is selected in the table its properties may be edited in the Object Properties dialog as before. Cache objects may be added, removed, and copied by means of the buttons at the bottom of the display. By default the table of cache objects will include only those found in the display currently being edited. But if "List All Caches" is checked, the table will include cache objects found in cache definition files and include files. Note that cache objects not in the current file will not be editable. If the Display Content button is clicked and the selected cache has a data attachment, a popup dialog is invoked to display the contents of the cache tables. If there is no history table (maxNumberOfRows = 0) then only the current table is displayed; else both the current and history tables are displayed in a tabbed dialog. Note the following: a cache object's data tables are only created when the file containing the cache object is registered as a cache definition file via the Application Options dialog, and changes to those tables (such as enabling the history table) only take effect when the cache definition file is refreshed. This has the following implications for displaying the content of a cache object: - if the file being edited is not a cache definition file there will be no content to display, and the Display Content button will be disabled. - if the file being edited contains a cache of a given name and another file registered as a cache definition file contains a cache object of the same name, Display Content will display the data tables of the second object even though the first object is selected. Note that having two cache objects of the same name in different files may lead to unpredictable results and should be avoided.

15727: Adding cache with missing name causes builder crash

In the Display Builder, if you have a cache definition file containing a Cache DS object that does not have a cache name, you will get a warning message saying the cache object will not be loaded. In the previous release you would also get a Java exception message and would not be able to open other files; this has been fixed.

15760: ConcurrentModificationException from the cache datasource

In prior releases, a ConcurrentModificationException could occasionally be thrown by the cache data source. This is fixed.

JMX Data Source

15337: Connection properties now configurable per connection

It is now possible to add properties to each JMX connection individually.

15732: Trailing space no longer causes error in Attach to Data dialog

An issue was fixed in the JMX Attach to Data Dialog that could result in erroneous red field names.

SQL Data Source

15413: Query timeout & ID supported

Several features have been added to the SQL data adapter: 1. A column named "Last Query Status" has been added to the Keys table of the built-in RTViewDs database. 2. A column named "Query ID" has been added to the Keys table. 3. A timeout can be specified for each SQL query. 4. An ID string can be specified for each SQL query. 5. The "Columns" field and "..." button in the "Attach to SQL Data" dialog are now functional when the RTViewDs database is selected. Details are provided below. 1. The Keys table in the RTViewDs database provides detailed timing and count information about each unique data attachment. The new "Last Query Status" column contains a string indicating the status of the most recently completed execution of the query. The possible values of this column are: <blank> : The query has not yet been executed. OK : The query executed successfully. no query : The query string is blank. error : An error occurred while executing the query connection failed : The connection to the database was lost. no connection : The database connection is undefined or invalid. timeout : The query timed out. 2. The Keys table now contains a Query ID column. By default this column is blank. A query ID string can be specified for each SQL query (see #4 below). The column will contain that string, if any. 3. A timeout for an SQL query can be specified by checking the "Enter SQL Query" checkbox in the "Attach to SQL Data" dialog, and prepending the following text to the beginning the SQL query: rtvTimeout=NN; Where NN specifies the timeout interval in seconds, for example: rtvTimeout=20; select * from MyTable A substitution string can also be specified: rtvTimeout=$timeout; select * from MyTable Note that a semicolon must immediately follow the timeout value. When a query with a timeout is invoked by the SQL data adapter, then on each subsequent update cycle (2 seconds, by default) the data adapter will check if the query has completed and if not, it will check if the timeout has expired. If it has, the query will be canceled and an error message will be printed to the RTView console, for example: ERROR: SQL query timeout after 20 seconds; db=MyDatabase; query=<select * from MyTable> The status of the query will be set to "timeout" and an empty table will be applied to the objects that are attached to the query result. In addition, the query will not be executed again for at least the length of the timeout interval. For example, if the query is configured to run every 60 seconds and the timeout is 120 seconds, then after a timeout the next query will occur in 120 seconds, not 60. 4. An ID for an SQL query can be specified by checking the "Enter SQL Query" checkbox in the "Attach to SQL Data" dialog, and prepending the following text to the beginning the SQL query: rtvID=S; Where S specifies the timeout interval in seconds, for example: rtvID=MyTable Query 1; select * from MyTable A substitution string can also be specified: rtvID=$table Query; select * from $table The ID string has no effect on the execution of the query. The ID string appears as the value of the Query ID column in the Keys table of the RTViewDs database, as described in #2 above. The ID string will also appear in any error messages issued by the SQL data adapter that involve the query. The ID string must be terminated with a semicolon. The ID string cannot contain a semicolon (;) or equals (=) character. Both a timeout and a query ID can be specified for a query, using the syntax described above. For example: rtvTimeout=120;rtvID=MyTable Query 1; select * from MyTable The timeout and ID parameters can be specified in either order. But the semicolon is required after each parameter.

StreamBase Data Source

15461: New option to filter at the subscription level

The RTView StreamBase Data Adapter has been enhanced to implement the StreamBase feature called "Filtered Subscribe". This feature allows subscriptions to an output stream to include a "logical stream name" and filter expression that will be applied on the server to each tuple before it is sent to the client. Only tuples that pass the filter will be sent on that logical stream, thus reducing the amount of data sent to the client. The StreamBase Data Adapter implements this feature by enhancing its "stream list" to include logical streams and filter expressions. When the Adapter connects to a StreamBase server, it gets the list of available streams, and then uses its stream list to control which subscriptions it makes, as follows: - If there is no stream list at all, then the Adapter subscribes to all streams. - If there is a stream list, then the Adapter only subscribes to streams on the list. - With the current enhancement, the stream list may include one or more logical streams for any given physical stream; in which case the Adapter does not subscribe to the physical stream, but rather subscribes to the logical streams with the filter expressions as specified. Note: if it is necessary to subscribe to the physical stream as well as having one or more filtered streams available, then use row filtering in the RTView data attachments. In the Display Builder, the StreamBase section of the Application Options dialog has been enhanced to include logical streams and filtered subscriptions as follows: - The "StreamBase Streams" tab is now used to configure physical streams, logical streams, and filter expressions. The History Streams and Simulated Streams lists have been moved to a new tab, called "StreamBase History Streams". - The Streams tab presents a tree view of the stream list and a text area for editing filter expressions. Physical streams may be added at the first level of the tree, and logical streams may be added as branches to a physical stream. - To add a physical stream click the Add Stream button. A text field will appear for entry of the stream name. When you press Enter in the text field the stream will be added to the list. - To add a logical stream, select a physical stream and click the Add Logical Stream button. A text field will appear for entry of the stream name. When you press Enter in the text field the stream will be added to the list. - To add a filter expression select a logical stream and edit the filter expression in the text area. - To remove a physical or logical stream celedt it and click the Remove button. Note that when you apply changes in this dialog, the StreamBase Data Adapter will close and reopen all its connections and reinitialize its data structures, so that the changes will be immediately applied. Previously some StreamBase settings would only be applied when the Display Builder was restarted. For a complete description of the filter expression syntax please consult the StreamBase documentation. As an example, consider a stream named "order_output" containing stock purchase information that has a field "symbol" containing stock symbols. To create a logical stream "order_output_ibm" that includes only purchases of IBM stock, use the filter expression "symbol == 'IBM'". (Note string values are enclosed in single quotes). Note that RTView substitutions configured via the Substititions tab of the Application Options dialog may be used in filter expressions.

TIBCO Hawk Data Source

15378: Name of failed hawk transport now in console messages

The hawk connection name is now included in the ConsoleInitializationException error messages.

15585: Invoke Methods Before Subscribe option added

The Invoke Methods Before Subscribe option has been added to the TIBCO Hawk Methods and Alerts tab in the Application Options dialog. By default, this option is selected. When selected, RTView will invoke synchronous microagent methods before subscribing to them for data attachments. This will make the data for these data attachments available immediately after the data attachment is made instead of waiting for the first update from the subscription. This option can be disabled either from the TIBCO Hawk Methods and Alerts tab in the Application Options dialog, or by using the following command line or applet parameter: command line: -hawknoinvoke applet: param = hawknoinvoke value = true See the TIBCO Hawk documentation for your microagent method to determine whether or not it is synchronous. Data attachments to asynchronous methods are not affected by this option.

15588: Hawk Group information included in RTViewDS

A new table, getGroupData, has been added to the Hawk RTViewDs simulated microagent. This table contains group information for each agent. This table contains the following columns: Agent - the name of the agent GroupName - the name of the group containing the agent ConnectionName - the name of the connection for this agent DSName - the name of the agent including the connection name if it is not on the default connection Since an agent may be in multiple groups, a single agent may show up multiple times in this table, once for each group that contains it. The group information is useful when caches are used to store Hawk agent information for applications that organize or aggregate their Hawk agent information using groups.

Display Server

15743: thin client crash on dd if table cell ends in \

In prior releases, a javascript exception would occur in the thin client if a drill down was performed to a display containing a table with a string cell that ended in a backslash. This is fixed.

15816: Scrollbar no longer visible when graph is invisible

Prior to release 5.4c1 in the thin client, if a trend graph or bar graph with a scrollbar is made invisible the scrollbar remains visible. This is fixed.

Functions

15088: Apply button added to Edit function Dialog

In the Display Builder, the Edit Function dialog now has an Apply button. which will apply the values currently in the dialog without closing it.

15427: replace value function fails if extra space is in the token

The Replace Value function takes a Replacement Values argument which is a string that contains pairs of values and replacement values separated by ":". Each pair of value and replacement value is separated by a space. Previously this was required to be exactly one space, but now multiple spaces are allowed.

15533: New Join Outer function

The Join Outer function performs an outer join of the Left Table and the Right Table on the columns specified in the Left Column Name and the Right Column Name fields. The joined table will contain all columns from the Left Table followed by all columns from the Right Table, and will contain all rows where the value in the Left Column exactly matches the value in the Right Column, plus additional rows according to the Outer Join Type, which may be "left", "right", or "full". In a left outer join, the result table will include all the rows from the left table; in a right outer join it will include all the rows from the right table, and in a full outer join it will include all the rows from both tables. In any row where there is no match for the join column value, the cells from the other table will contain null values. (Null values will be represented as blank for strings, 0 for integers and longs, NaN for floats and doubles, and NULL_DATE for dates.) Left Table - The first table to be joined. Right Table - The second table to be joined. Left Column Name - (Optional) The column in the left table to be joined with the column specified in the Right Column Name field. If this field is left blank, the row name, up to the first : if it contains a :, will be used instead of a column value. Right Column Name - (Optional) The column in the right table to be joined with the column specified in the Left Column Name field. If this field is left blank, the row name, up to the first : if it contains a :, will be used instead of a column value. Outer Join Type - Specified as "left", "right", or "full", which may be abbreviated to their first letters. If this field is left blank a full outer join will be performed. This function returns a table.

15619: Function usage count is now correct for functions with filters

In the Display Builder, if a display object were attached to a function and a row filter were added to the data attachment, the Uses value in the function dialog would be incorrect: it would show twice the number of actual uses of the function. This has been corrected.

15624: Convert Columns function now handles the DATE type

The Convert Columns function, when given an input column of type Date to convert to a valid output column type, would fail to perform the conversion and would not issue an error message. This has been fixed; the conversion will now be performed correctly. Output columns of type String will show the string representation of the input date value, and all other output types will show the result of converting the date value first to Long and then to the specified output type.

15625: Delta Rows Function now supports the DATE type

The Delta Rows function will now compute delta for columns of type Date. The resulting delta column will be of type Long and contain time deltas in milliseconds.

15658: Group By Time and Unique Value Bug fixed

The Group By Time And Unique Values function could show an extra row under some circumstances. This has been fixed.

15666: Display Result button added to Functions dialog

The Display Builder Function dialog has been enhanced with a "Display Result" button that will bring up a dialog showing the result of executing the function.

15667: References button added to the Function dialog

The Display Builder Function dialog has been enhanced with a "References" button that will bring up a dialog listing all the objects that directly reference the selected function. You may choose an object in that list and it will be selected according to its type. Selecting a display object will highlight the object in the drawing area. Selecting a function, alert or a cache will bring up those dialogs with the designated object selected.

15668: Edit Referenced Functions from Edit Function Dialog

In the the Edit Function dialog, when you are editing a function whose argument refers to another function, you can now go edit that function without leaving the dialog. When you right-click an argument that contains a reference to a function, an additional item "Edit Function" will appear in the popup menu. If you select it, the Edit Function dialog for that function will replace the current Edit Function dialog. If you have unsaved changes you will be prompted to save or discard them, or cancel the operation. In addition a button "Back" will appear in the Edit Function dialog that will take you back to the function you were previously editing.

15669: obj_function moved from gmsjmodels to gmsjrtview package

The obj_function class has been moved from the com.sl.gmsjmodels package to the com.sl.gmsjrtview package. Users with custom classes referencing this object will need to modify their code accordingly. Users without any custom code do not need to make any changes - the functions in their displays will continue to work as they did before.

15722: Lay out of buttons on dockable tabular dialogs more intuitive

In the Display Builder, the Functions, Caches and Alerts dialogs have been enhanced so they will organize their buttons appropriately depending on how they are docked. For example if they are docked vertically they will lay out their buttons on multiple rows.

15724: Warn about missing function descriptors

In the Display Builder when working with custom functions it is possible to open a display which uses a custom function but not have the function's definition available. This can happen for example if the Java class file containing the function definitions (e.g. MyFunctionHandler.class) is missing. In this situation the Display Builder has no information about the number or type of the custom function's arguments, and if the display is saved, the function will be saved with no arguments, and any previous argument information will be lost. In addition the function is not editable; in the Edit Function dialog it would be shown with an incorrect function type and no arguments. In this situation, the Display Viewer and Builder will now warn with a message to the console, and the Display Builder will warn with a message dialog. And in the Function dialog, the only buttons enabled when the function in question is selected are Add and Remove.

15775: Empty String Sub again being passed from controls

In releases 5.1 through 5.3, if the value property of a control object was an empty string and $value was used as the value of a substitution in the control's drilldown command, the substitution was not set by the drilldown. This has been fixed.

General

15766: Current table now clears when attached table is empty

If a data table with no rows is applied to the valueTable property of a cache with no index columns defined, the contents of the current table should be cleared. However, in release 5.3, the current table was unchanged. This is fixed. (Note that a cache which does have index columns defined will continue to ignore an empty table, which is the correct behavior).

GmsTabularData

15709: Sorting of tabular data by row names has been optimized

The CPU time required to add or update rows in a large table of Rendezvous or Hawk data has been reduced.

Object Library

15000: mouseOverText property now provided on all objects.

The new mouseOverText property in the Interaction category allows you to specify a tooltip to show when the mouse passes over an object. The mouseOverText property has been added to all of the objects except obj_text01 and obj_datechooser on the following tabs of the Object Palette: General Labels Meters Scales Indicators Controls Links Text with multiple lines should use \n to delimit the lines. Objects must have the visFlag on (and for links the iconVisFlag on) in order for the tooltip to draw. In the Display Builder, Display Viewer and Display Viewer Applet, for non-control objects, the tooltip is positioned relative to the center of the object, and will draw in black text with a white background. For control objects, the tooltip is drawn in the standard swing JToolTip, so it will follow the look and feel for the system where it is run. In the Thin Client, the tooltip is drawn by the browser, and will use the browser specific look and feel. Limitations in the Display Builder, Display Viewer and Display Viewer Applet: 1. For all non-control objects, if multiple objects with mouseOverText overlap and the mouse is positioned on the overlapping area, the mouseOverText will display for both. 2. For all non-control objects, the tooltip is drawn as part of the object. Therefore, if another object is on top of it, the mouse over will be drawn behind that object. To change the position of an object in the stacking order, right-click on it and select Order->Move to Front or Order->Move to Back. 3. In the main Display Builder window, the tooltip may be clipped if it is too close to the top-right edge of the display or if it is in a composite and too close to the edge of the composite. 4. The tooltip on an object in an object grid may be partially obscured by the scrollbar of the object grid if it is too close to the right edge. Limitations in the Thin Client: 1. Multi-line mouseOverText is not support for radio button controls. 2. Non-static mouseOverText is not supported for radio button controls. 3. Since Firefox does not support multi-line tooltips, it will replace any returns in the mouseOverText with spaces.

Control Objects

15618: Edit box shows but won't parse 1000s separator

In release 5.1 and 5.2, the thin client would automatically insert a comma as the thousands-separator in an integer- or double-type edit box (obj_c1textedit_i and obj_c1textedit_d), but the display server would not parse numeric values correctly if they contained commas. In this release, the thin client will not automatically insert commas as the thousands- separator.

Fx Bar Chart

15502: Fx Bar Chart Data Label Properties added

Three new properties have been added to the Fx Bar chart. These are: labelColumnName rowLabelVisFlag rowNameVisFlag These properties work exactly the same as those of the standard bar graph.

15561: Data now displays when no row names found

Previously the Fx Bar Chart would not display data if row names were not available. This has been fixed.

15562: FX Bar Chart column clumping bug fixed

A bug was fixed that caused columns to appears clumped to one side when data was changed.

15600: Fx Bar Chart Bars Draw order switched

When in horizontal mode, the bars will now draw from top to bottom, rather than from bottom to top.

Fx Trend Chart

15367: yAxisMultiRangeMode now supported

The Fx trend graph (obj_fxtrend) now supports the yAxisMultiRangeMode property. The supported modes are: Off, Multiple Axis, Strip Chart, and Stacked. These modes have the same behavior as in the standard trend graph (obj_trendgraph02). The yAxisMultiRangeMode property supersedes the yAxisMultiRangeFlag property. For Fx trend graphs on existing displays, a yAxisMultiRangeFlag value of zero (unchecked) will be converted to yAxisMultiRangeMode = Off, and a yAxisMultiRangeFlag value of one (checked) will be converted to yAxisMultiRangeMode = Multiple Axis. In Strip Chart and Multiple Axis mode, a separate vertical axis is drawn for each trace. The axis for traceN is drawn using the color assigned to the traceNColor property. If the yAxisShowTraceLabelsFlag property is checked, each axis will display the label assigned to the trace in the traceNLabel property. The yAxisThickness property is ignored in these modes, the width of each axis is 2 pixels. For better performance when scrolling in a graph with many points, yAxisShowTraceLabelsFlag and traceNLineShadowFlag should be unchecked. There are a few differences in the yAxisMultiRangeFlag behavior between the standard trend graph and the fx trend graph: 1) The standard trend graph supports an additional yAxisMultiRangeMode named Classic, but this mode is not supported in the Fx trend graph. If Classic mode is selected in the fx trend graph's property sheet, Multiple Axis mode will be used instead. 2) Both graphs support the yAxisPosition property, but in the standard trend graph the 'inner' settings cause the axis labels to be drawn inside the trace area, while in the fx trend graph the inner settings only change the location of the tick marks relative to the vertical axis. 3) In strip chart mode in the fx trend graph, some labels on the vertical axes may be dropped if the strips are not tall enough to display the labels without overlapping. To avoid this, choose a smaller value for yAxisMajorDivisions.

15571: Paste All Properties from Trend Graph to Fx Trend now works

A problem in the Display Builder has been fixed which prevented alarm properties from being pasted to an Fx trend graph during a Paste All Properties operation.

15576: Fx Trend Graph Multi-trace Tabular data support

The Fx trend graph has been enhanced so that multiple traces can be plotted from a single data table. This can be convenient cases where a data source provides a data table with a single timestamp column and multiple Y data and label columns. A new property named multiTraceTableFlag has been added to the Trace category. It is unchecked by default. When checked two new properties named multiTraceCurrentValueTable and multiTraceHistoryValueTable are shown in the Trace category. Each of these properties can be attached to a data table. The first column in the data table must be a timestamp column. The remaining columns are expected to either be numeric data values to be plotted, or string values to be used as data labels (data labels are described in 15648). The Nth numeric column is used for trace N's data and the column name is used for traceNLabel (if not already assigned). Similarly, the Nth string column is used for traceN's data labels. If the multiTraceTableFlag is checked, then the number of traces whose properties are shown in the Builder's property sheet is determined by the the number of data columns in the data table attachments or by the traceCount property, whichever is larger. However, the number of traces that will be plotted on the graph is determined by he number of data columns in the data table attachments. Typically, the data attachment for multiTraceHistoryValueTable provides the initial data points to be plotted (e.g. from a SQL attachment with Update Mode = On Demand, or a Cache attachment with Update Once checked) while multiTraceCurrentValueTable provides the new data points to be plotted while the display is viewed. If a trace plots only historical or only current data, then only one of the properties needs to be attached to data. However if both properties are attached to data, be sure that the tables applied to both have the same number and type of columns. When multiTraceTableFlag is checked, the properties named traceNValueTable and traceNValue (for N = 1 to 8) are not shown in the property sheet, since all trace data is expected to be provided via multiTraceCurrentValueTable or multiTraceCurrentValueTable.

15602: New alarmGlowFlag property added to Fx Trend Chart

A new property named alarmGlowFlag has been added to the Fx trend graph. The property is unchecked by default. If it is checked, then a glow effect will appear around the border of the graph if an alarm or warning limit has been exceeded. The border will glow the in color of the activated alarm color, as described below. The visibility and the color of the glow is based on trace points which are currently visible. If multiple visible points have exceeded an alarm or warning limit, whether they are on the same trace or multiple traces, the glow color will be chosen in this order of priority: HighAlarm, LowAlarm, HighWarning, LowWarning. If no visible points have exceeded any limit, the glow is invisible. For strip charts, each chart will have its own glow.

15648: Data labels now supported

The Fx trend graph has been enhanced to allow a string to be associated with each point on a trace. These strings are known as data labels. If the traceNValueTable or traceNValue property is attached to a table and the table contains a string column (in addition to the required timestamp and Y data columns), then the string from that column will be used as the data label for the corresponding data point. This feature is also supported in the multi-trace table feature (15576), where the Nth string column in multiTraceHistoryValueTable or multiTraceCurrentValueTable will be used for the data labels for trace N. The data label for a point is shown in the popup data tip which appears when the mouse is positioned over a trace point. The data label appears after the point's value, and is enclosed in parentheses. Note that this feature is not supported for scalar attachments to traceNValue.

15649: Fx trend graph supports event and bar traces

The Fx trend graph has been enhanced to support event and bar traces, in addition to the traditional line traces. A property named traceNType has been added the Trace N category (for N = 1 to 8). The valid values for traceNType are Line (the default), Bar, and Event. A Bar type trace draws a vertical bar for each data point, from zero to the point's Y value. The bar is simply a vertical line whose width is determined by traceNLineThickness. The traceNLineColor and traceNLineStyle also control the appearance of the bar. If the point exceeds an alarm limit specified on the graph, the alarm color is used for the bar color. If traceNMarkStyle is set to any value other than None, the mark is drawn at the end of the bar. For an Event type trace, no line is drawn. Instead, a small rectangle containing a single text character is drawn for each data point. The character is the first character of the corresponding data label (see E15648) if any, otherwise it is the first character of the trace label. The traceNColor property determines the color of edges of the box and the text character, unless the point exceeds an alarm limit specified on the graph, in which case the corresponding alarm color is used. The box's fill color is set to traceNMarkColor or the appropriate alarm mark color, if any. However, if the mark color is the same as the color used for the box edge and text, then traceBgColor is used as the box fill color instead. Each event box is positioned vertically according to the Y data value for the corresponding data point. However, if traceN is attached to a data table that provides data labels but no Y data values, then an Event trace is plotted regardless of the traceNType setting. The event boxes will all be drawn near the bottom of the trace area.

15652: Fx trend support for trace point drill down added

The Fx trend graph has been enhanced to support drill down from a trace point. If the graph's drillDownTarget is set, then the following predefined substitutions will be set on drill down from a trace point: $traceNumber : number of the trace (1 to 8) that contains the selected point $traceLabel : label of selected trace $pointValue : y value of point $pointTimestamp : timestamp of point $pointLabel : data label (if any) of point $pointIndex : position of point in trace data (0 to maxPointsPerTrace) Mouse clicks on the graph that are not near a trace point are ignored.

15653: Fx trend graph Trace Groups

The Fx Trend Graph has been enhanced to support trace groups. A trace group is a collection of 2 or more traces, and is useful for: - identifying multiple traces that should share one vertical axis, in strip chart or multi-axis modes. - identifying 3 traces to be combined as a banded trace. A new category named Trace Groups has been added to the Fx trend graph's property sheet. By default, the category contains a single property named traceGroupCount with a default value of zero. Legal values are 0 - 5. If nonzero, then the following properties appear in the Trace Groups category, for each groupN, where N is 1-5: traceGroupNTraceNumbers: A comma-separated list of the traces that belong to the group. If the trend graph is in strip chart mode or multi-axis mode, all the traces in the group will share the same axis/strip. traceGroupNBandedFlag: If this property is checked, the group is expected to have 3 traces. The plot area beneath the 1st trace in the group (the low band trace) will be filled, the 2nd trace in the group (the value trace) will not be filled, and the area above the 3rd trace (the high band trace) will be filled. The color of the axis for a group is determined by traceNLineColor of the first trace in the group. The label for the axis is also determined by traceNLabel of the first trace in the group. In Mutli Axis mode it may not be visually obvious which traces belong to which groups, unless you assign a similar line color or style, or mark color or style, to all the traces in a group.

15700: yAxisColor now sets color of all Y axis labels

On the Fx Trend Graph, the yAxisColor property now sets the color of all Y axis labels, regardless of the yAxisMultiRangeMode setting. Note that if yAxisColor is set to Default, then the axis label color is determined by the labelTextColor property. This behavior is unchanged from prior releases.

15710: Most recent y value shown in legend if cursor not active

On the Fx Trend Graph, the legend entry for each trace will show the most recent Y value for the trace when the cursor is not displayed on the graph.

15716: legendTimeFormat implemented for Flex trend chart

The property legendTimeFormat has been added to the Fx trend graph. This property controls the formatting of time strings that appear in the data tips that pop up when the mouse is over a data point. If legendTimeFormat is blank (the default) then the timeFormat property is used instead.

15718: Scroll bar arrows now work

In previous releases, the arrows on the time scroll bar on the Fx trend graph had no effect when clicked. This is fixed.

15720: add "Strip Monoscale" mode to fx trend

On the Fx trend graph, the yAxisMultiRangeMode property can now be set to "Strip Monoscale". This mode behaves the same as Strip Chart mode except that all strips will use the same Y axis range, rather than each strip having a (possibly) different Y range. Specifically, if yAxisMultiRangeMode = "Strip Chart - Monoscale" then: 1) If yAxisAutoScaleMode = "Off" then the y range for all strips is determined by the yValueMin/Max properties. 2) If yAxisAutoScaleMode = "On" then the y range for all strips is determined by applying the autoscaling to the y values from all the traces. 3) If yAxisAutoScaleMode = "On-Include min/max" is determined by applying the autoscaling to the y values from all the traces and the values of the yValueMin/Max properties. For (1), the behavior of Strip Chart and Strip Monoscale modes is the same. If the yAxisMultiRangeMode property is attached to a local variable, the following numeric values should be used: Off = 0, Multiple Axis = 2, Strip Chart = 3, Stacked = 4, Strip Monoscale = 5.

15725: yAxisAutoScaleMode setting now respected if yAxisLogFlag = ON

On the Fx Trend, the yAxisAutoScaleMode setting is now respected if yAxisLogFlag is checked. In prior releases, it was ignored if yAxisLogFlag was checked. Note that the logarithm of a value <= 0 is undefined. So if yAxisAutoScaleMode = "On - Include Min/Max" and if yValueMin or yValueMax is assigned a value <= 0, it will be ignored and will not affect the autoscale result.

Heatmap

15610: Border level property added

A new property, nodeBgBorderNestDepth, has been added to the Heatmap graph. This property allows you to set the number of levels to display node borders. If set to 0, then no borders are displayed. If set to -1, borders are displayed on all levels.

Links

15402: Link icon can now be formatted

The link object has been enhanced to support format options for the link icon. You can now format and position both the value and label text with the same options available in the object on the General palette. You can also set the color, size, shape, gradient, and edge properties for the icon.

15691: Support added for link arrow colors

The link object has been enhanced with 2 new properties in the Arrow category of the property sheet: arrow1Color and arrow2Color. The arrow1Color property sets the color of the source arrow and the arrow2Color property sets the color of the target arrow. The default color for both arrows is black.

Tables

15731: cellBgStripeContrast property added to obj_table02

A new property, cellBgStripeContrast, has been added to obj_table02 in the Cell category. This property allows you to set the contrast between the cellBgColor and the stripe color when the cellBgStripedFlag is on. Select High, Medium, Low or Lowest. The default is Medium, which is the contrast used in previous releases. Existing displays will not change. The cellBgStripeContrast will not be applied if the cellBgColor is white. In this case, light gray is always used as the stripe color. In the Display Server, the cellBgStripeContrast is only applied when the display is loaded. Changes to this property (for example, by a data attachment) after the display is loaded will be ignored.

Trend Charts

15575: Trend Graph Multi-trace Tabular data support

The trend graph has been enhanced so that multiple traces can be plotted from a single data table. This can be convenient cases where a data source provides a data table with a single timestamp column and multiple Y data columns. A new property named multiTraceTableFlag has been added to the Trace category. It is unchecked by default. When checked two new properties named multiTraceCurrentValueTable and multiTraceHistoryValueTable are shown in the Trace category. Each of these properties can be attached to a data table. The first column in the data table must be a timestamp column. The remaining columns are expected to be Y data values to be plotted. The Nth data column is used for trace N's data, and the column name is used for traceNLabel (if not already assigned). If the multiTraceTableFlag is checked, then the number of traces whose properties are shown in the Builder's property sheet is determined by the the number of data columns in the data table attachments or by the traceCount property, whichever is larger. However, the number of traces that will be plotted on the graph is determined by he number of data columns in the data table attachments. Typically, the data attachment for multiTraceHistoryValueTable provides the initial data points to be plotted (e.g. from a SQL attachment with Update Mode = On Demand, or a Cache attachment with Update Once checked) while multiTraceCurrentValueTable provides the new data points to be plotted while the display is viewed. If a trace plots only historical or only current data, then only one of the properties needs to be attached to data. However if both properties are attached to data, be sure that the tables applied to both have the same number and type of columns. When multiTraceTableFlag is checked, the properties named traceNValueTable and traceNValue (for N = 1 to 10) are not shown in the property sheet, since all trace data is expected to be provided via multiTraceCurrentValueTable or multiTraceHistoryValueTable.

15638: Support for trend graph data labels

The trend graph has been enhanced to allow a string to be associated with each point on a trace. These strings are known as data labels. If the traceNValueTable or traceNValue property is attached to a table and the table contains a string column (in addition to the required timestamp and Y data columns), then the string from that column will be used as the data label for the corresponding data point. This feature is also supported in the multi-trace table feature (15575), where the Nth string column in multiTraceHistoryValueTable or multiTraceCurrentValueTable will be used for the data labels for trace N. The data label for a point is shown in the fixed legend and in the popup legend, between the trace value and the trace label, and is enclosed in parentheses. If the cursorFlag property is checked, the data label shown in the legend is for the data point that is directly under or to the left of the cursor. Note that this feature is not supported for scalar attachments to traceNValue.

15644: The trend graph enhanced to support event and bar traces

The trend graph has been enhanced to support event and bar traces, in addition to the traditional line traces. A property named traceNType has been added the Trace N category (for N = 1 to 10). The valid values for traceNType are Line (the default), Bar, and Event. A Bar type trace draws a vertical bar for each data point, from zero to the point's Y value. The bar is just a vertical line whose width is determined by traceNLineThickness. The traceNLineColor and traceNLineStyle also control the appearance of the bar. If the point exceeds an alarm limit specified on the graph, the alarm color is used for the bar color. If traceNMarkStyle is set to any value other than None, the mark is drawn at the end of the bar. For an Event type trace, no line is drawn. Instead, a small rectangle containing a single text character is drawn for each data point. The character is the first character of the corresponding data label (see E15638) if any, otherwise it is the first character of the trace label. The traceNColor property determines the color of edges of the box and the text character, unless the point exceeds an alarm limit specified on the graph, in which case the corresponding alarm color is used. The box's fill color is set to traceNMarkColor or the appropriate alarm mark color, if any. However, if the mark color is the same as the color used for the box edge and text, then traceBgColor is used as the box fill color instead. Each event box is positioned vertically according to the Y data value for the corresponding data point. However, if traceN is attached to a data table that provides data labels but no Y data values, then an Event trace is plotted regardless of the traceNType setting. The event boxes will all be drawn near the bottom of the trace area.

15645: Support for drill down from trendgraph trace points

The trend graph has been enhanced to support drill down from a trace point. If the graph's drillDownTarget is set, then the following predefined substitutions will be set on drill down from a trace point: $traceNumber : number of the trace (1 to 10) that contains the selected point $traceLabel : label of selected trace $pointValue : y value of point $pointTimestamp : timestamp of point $pointLabel : data label (if any) of point $pointIndex : position of point in trace data (0 to maxPointsPerTrace) If the drillDownSelectMode property is set to Element Only, then clicks on the graph that are not near a trace point are ignored. If drillDownSelectMode is set to Anywhere, then a click anywhere on the graph will trigger a drill down but if the click is not near a trace point then the substitutions listed above will not be set.

15646: Support for drill down and mouseover text for trace points

The thin client has been extended to support mouseover text and drill down from data points on traces on the trend graph. If the trend graph's cursorFlag property is checked, this enables mouseover on the trace points. If the mouse is over a trace point, a browser tooltip box will appear displaying the legend values that correspond to that point. If the trend graph has a drillDownTarget specified, clicking on a trace point will set the following predefined substitutions: $traceNumber : number of the trace (1 to 10) that contains the selected point $traceLabel : label of selected trace $pointValue : y value of point $pointTimestamp : timestamp of point $pointLabel : data label (if any) of point $pointIndex : position of point in trace data (0 to maxPointsPerTrace) Limitations: 1) If this feature is used on a graph with many trace points, the performance of the browser may be sluggish when the display is loading or refreshing. To avoid this, set the timeRange property so that only a portion of the trace points are visible at a time. 2) If a thin client display refresh occurs while positioning the mouse over a point, the browser tooltip may not appear or it may appear in the wrong location. 3) When maxPointsPerTrace is exceeded on a trace (1000 by default), an old trace point will be shifted out of the trace for each new point that is added. If this occurs between the time that the thin client display was last refreshed and the time that the user clicks on a point, the drilldown substitutions will reflect the new set of data points. For example, if 2 points were shifted out of the trace, the drilldown subs will be set as though the selected point was 2 positions to the right of the point the user actually clicked.

15647: Trend Graph Trace Groups

The trend graph has been enhanced to support trace groups. A trace group is a collection of 2 or more traces, and is useful for: - identifying multiple traces that should share one vertical axis, in strip chart or multi-axis modes. - identifying 3 traces to be combined as a banded trace. A new category named Trace Groups has been added to the trend graph's property sheet. By default, the category contains a single property named traceGroupCount with a default value of zero. Legal values are 0 - 5. If nonzero, then the following properties appear in the Trace Groups category, for each groupN, where N is 1-5: traceGroupNTraceNumbers: A comma-separated list of the traces that belong to the group. If the trend graph is in strip chart mode or multi-axis mode, all the traces in the group will share the same axis/strip. traceGroupNBandedFlag: If this property is checked, the group is expected to have 3 traces. The plot area beneath the 1st trace in the group (the low band trace) will be filled, the 2nd trace in the group (the value trace) will not be filled, and the area above the 3rd trace (the high band trace) will be filled. Example: Set traceCount = 3 Set traceGroupCount = 1 (this makes the next 2 properties appear) Set traceGroup1TraceNumberss = 1, 2, 3 Set traceGroup1BandedFlag = true (checked) Attach trace 1, 2, and 3 to data. Additional notes: For each trace that is in a group, note that the y axis for the group is visible unless traceNYAxisVisFlag or traceVisFlag is false (unchecked) for all traces in the group. Similarly, the group's y axis grid is visible unless the traceNYAxisGridVisFlag property is false for all traces in the group. If traceN is in a group, note that these properties are hidden: traceNYAxisAutoScaleMode, traceNYAxisValueMax, traceNYAxisValueMin. The graph's yAXisAutoScaleMode, yValueMax, and yValueMin properties are used to scale each group's y axis range. If yAxisMultiRangeMode = Multiple Axis, the color of the axis for a group is determined by traceNLineColor of the first visible trace in the group. In Mutli Axis mode it may not be visually obvious which traces belong to which groups, unless you assign a similar line color or style, or mark color or style, to all the traces in a group.

15730: Sparkline now correctly uses assigned color rather than default

In the previous release, if a bgColor was assigned to a sparkline object in the Display Builder, after saving and reloading the file the sparkline would always use the default bgColor instead of the assigned color. This is fixed.

Oracle Coherence Monitor

14781: Admin Node and Admin Cache page corrections

Some interaction errors in the Node and Cache administration pages have been corrected. The selected Location is now shown instead of the node id. A value entered in an edit field will remain during the confirm process rather than disappear as in previous versions.

15495: Applet Throws "Unable to load MyRtvAppManager" but Still Runs

When running in an applet, the Oracle Coherence Monitor no longer throws the following error: ERROR: cannot create RTView MBeans: access denied javax.management.MBeanServerPermission createMBeanServer) ERROR: Unable to load MyRtvAppManager. Pack it into one of your applet jars and restart the browser.

15530: Size of history caches now configurable

The size of the history caches used by the ocmonitor can now be configured by the user, by setting the value of the $rtvCacheHistorySize global substitution. This can be done in the Application Options General->Substitutions Tab.


15593: Connection Status indicator now shows JMX and Data Server status

Connection Status indicator on the Grid Overview page now shows both the JMX status and the state of a Data Server connection if the monitor is connected to a Data Server. The indicator will be changed to a grey color if the Data Server is being used but is not connected. Otherwise a red color indicates that the JMX connection to the Coherence cluster is not established properly. Green indicates a successful connection.

Platform Support

15581: More than nine arguments now allowed for shell script launchers

In previous versions you could only enter up to 9 arguments when running RTView application shell script launchers. The scripts have been modified to accept an unlimited number of arguments.

TIBCO EMS Manager - Configuration

15344: Passwords saved to servers.xml now encrypted

In previous releases, the password for servers added or modified during the current Dislplay Builder or Configuration Utility were not encrypted in the saved servers.xml file. This has been fixed.

Viewer - Java Web Start

15454: RTV files with spaces in their names now work with JWS

In previous versions, the Java Web Start deployment failed to load files with spaces in the name from the server. This has been fixed.

Version 5.3d1 Release Notes

Data Server

15697: Data Server memory leak for filtered cache data fixed

In release 5.3c1, the data server memory usage would grow if a client display contained a data attachment to a cache and the attachment specified a row filter or a column subset. This has been fixed.

Data Sources

SQL Data Source

15661: Queries no longer being run sequentially & synchronously

In release 5.3c1, the SQL data source ran all queries on all connections sequentially, instead of running queries that use different connections in parallel as in earlier releases, and it ignored the "Run Queries Concurrently" option. Also, when a display that contains an SQL query was opened in the standalone Display Builder or Display Viewer, it would not paint or respond to user input until the query completed. This problem is fixed.

StreamBase Data Source

15671: SB re-connect behavior and RTViewDS connection info fixed

In the StreamBase Data Adapter, two problems have been fixed: (1) If a connection was lost and reconnected (which the DataAdapter will do automatically) new subscriptions were not made for the output streams(s) and so they did not start receiving data. (2) When a connection was lost or reconnected the "Connected" column of the internal Streams table was not updated correctly.

Functions

15643: ConcurrentModificationException fixed

In release 5.3c1, under certain conditions a ConcurrentModificationException could be thrown from the function data source. This is fixed.

15672: Last Table Rows bug fixed

Previously, The Last Table Rows function would not return the correct data under certain circumstances. This is now no longer the case

General

15657: Command line option added to specify global files

A new command line option has been added to the Display Builder, Display Viewer, Display Server and Data Server to specify a Global Definition file: -global:fileName The command line option does not support specifying substitutions for the Global Definition file. If this is needed, add the Global Definition file using the Globals tab in the Application Options dialog instead.

Object Library

15616: Upwards-compatability of old objects repaired

In version 5.1c1, obj_text03, obj_label09, obj_label09s and obj_label12 were replaced with newer objects and removed from the palette. The conversion routine that made old displays upward compatible did not take data attachments into account. This has been fixed.

Version 5.3c1 Release Notes

Alerts

15397: Alert Dialog Enhanced

In the Display Builder the following changes have been made to the Alert Dialog: The Filters panel has been relocated below the Alerts table and by default is hidden. A new checkbox labeled "Show Filters" will show or hide it. A usage note has been added to the dialog to remind the user that while alerts are selected in the table, they are edited in the Object Properties dialog. When filtering the alert table with a name filter, unnamed alerts will always be included in the filter results.

Commands

15352: Command confirm dialog now appears on correct linux dual screen

Command Confirmation Dialog now appears on correct screen for Multi- headed X11 displays. Previously Command Confirmation Dialogs may have appeared centered on the wrong screen for Multi-headed X11 displays. This is now no longer the case.

Customization

15345: Poll Once (Static Data) data no longer updated by preview

Previously data obtained by a data attachment, with an update mode of Poll Once (Static Data) , may have been updated more than once when a similar data attachment with a periodic update mode existed. This is no longer the case, and data will only be updated once for a data attachment with an update mode of Update Mode: Poll Once (Static Data)

Data Server

15382: Improved support for setting data server via a substitution

In a data attachment, if Data Server is set to a substitution (say, $server), it is now possible to set $server = __none, which is equivalent to setting Data Server = <none>. It is also possible to set $server to an empty string, which is equivalent to setting Data Server = <default>. Those values were not supported via substitution in previous releases.

Data Sources

15453: Data Source row filtering enhanced to support multiple columns

In the Display Builder, the Data Adapters that support row filtering have been enhanced to allow multiple columns to be indicated for the filter and multiple values to compare against for each column. The following data adapters are affected: Caches, IBM Websphere, RRD, XML, Log4J, Splunk. As of this release there is no specific user interface for entering multiple filter columns and sets of filter values; the lists must be typed into the corresponding dialog field. Multiple columns will be specified as a semicolon-separated list. Filter values will be specified as a nested list where values for a given column are comma-separated, and each group of comma-separated values is separated by a semicolon. For example: Column names: col1;col2;col3 Filter values: val1,val2;val3,val4;val5,val6 The resulting table returned would be those rows where the values of val1 OR val2 are in col1 AND the values of val3 OR val4 are in col2 AND the values of val5 OR val6 are in col3. Spaces around separators are not allowed. If a column name contains a semicolon it should be enclosed in single quotes ('). Likewise if a filter value contains a comma it should be enclosed in single quotes. The list of column names will be validated against the names found in the data table and if any is invalid the dialog will indicate this. Likewise the filter values will be validated to insure there is the correct number of values or values sets to correspond to the number of column names, and that the filter values are correct for the data type of the corresponding column. For backwards compatibility, if there is only one column name and a list of filter values then the values may be separated by semicolons.

15468: Available columns now in order of occurrence in SPLUNK and Log4j

Available Columns in Select Columns Dialog now displayed in correct order for Log4j and Splunk Attach to data dialogs Previously the Available Columns in the Select Columns Dialog for Log4j and Splunk Attach to data dialogs were not displayed in their order of occurrence in the returned data table.They are now displayed in their order of occurrence in the table.

Cache Data Source

15215: Enhance cache object to allow easier setting of history info

Support for cache persistence has been improved. A cache object can now be configured so that its history table and current table contents will be saved to a database by the RTView Historian, and those contents can now be restored automatically when an RTView application is started. Once a cache object is so configured and saved to a display (rtv) file, that file can be used as both a cache definition file and an historian data configuration file. The following cache object properties are involved in cache persistence. 1) historyTableName - As in the previous version, this is the name of the database table in which the cache's history table should be saved. The value assigned to this property may contain substitutions. The historian will create this table, if it does not already exist. When rows are appended to the cache's history table, the historian will append those rows to the database table. If the cache's timestampColumName property is set, the historian will assume that column will be used for sorting and purging rows in time order and will not append its own timestamp columns to the table. Before the data is stored in the database, the cache's schemaTable, if any, is applied. With these latest changes, an RTView application will now automatically query the database table for the initial rows to be loaded into the cache's history table, provided that: * the initialTable property is not attached to data (indicating that the user has configured an explicit query to load the cache history) * the timestampColumName property is set, so that it can be used to sort the SQL query result by time. The number of rows loaded by the query is limited by the cache object's maxNumberOfRowsProperty. 2) currentTableName - The name of the database table in which the cache's current table should be saved. The value assigned to this property may contain substitutions. The historian will create this table, if it does not exist. On each update to the cache's current table, the historian will either create or update the corresponding rows in the database table, using the cache's indexColumns to locate the rows. If no indexColumns are defined the historian will replace the entire table on each update. If the deleteTable property is used to delete rows from the cache's current table, the historian will also delete those rows from the database table. At startup of an RTView application, the database table will be queried for the initial rows to be loaded into the cache's current table. This property is not supported for the type double cache. This property is not supported in combination with the Historian -kdbformat option. 3) databaseName - The name of the database that contains the history and/or current tables for this cache. If left blank, the name "RTVHISTORY" is assumed. Substitutions can be used in this property. 4) quoteColumnNamesFlag - If checked (the default) then column names will be quoted in all SQL queries and commands for this cache. This is important for databases that do not preserve the case of column names unless they are quoted. However, in prior RTView releases, column names were not quoted when database tables were created, so this flag can be unchecked for backward compatibility. For these properties to work as described above, the cache definition file must also specified as an Historian data configuration file. See the RTView Historian documentation for details. The -nohistory option can be specified on the command line to prevent RTView from loading initial cache data from the database as described above.

15385: Data from initialTable no longer in wrong order in cache history

In the previous release, it was possible for data loaded via the initialTable property to appear out of sequence in the cache's history table. This has been fixed.

15401: deleteTable handling of multi-row tables improved

In prior releases, if a table with 2 or more rows was attached to the deleteTable property of an obj_cache_table, under some conditions the wrong rows were deleted from the cache's current table. This problem is fixed.

15433: add timeSpan property to cache objects.

A property named timeSpan has been added to obj_cache_table and obj_cache_double. The property specifies the time span for which rows will be kept in the cache history table. The property can specify a number of seconds, or it can specify a number followed by a single character indicating the time interval, where the valid characters are: y for years (365 days) M for months (31 days) w for weeks (7 days) d for days h for hours m for minutes s for seconds By default, timeSpan is blank, which means that rows are not removed from the history table according to their timestamp. As in prior releases, the maxNumberOfRows property limits the total number of rows in the history table, regardless of their timestamps. The timeSpan property only determines the time span for row kept in the cache history table by the cache data source. It does not affect the database storage, if any, associated with the cache.

15434: New property allowDuplicatesInHistoryFlag

A property named allowDuplicatesInHistoryFlag has been added to the cache table object. By default, this property is checked. If it is unchecked, then before the cache data source adds a new row to the history table, it will first check if an existing row has the identical timestamp and index column values and if so the existing row will be replaced with the new row. This feature requires additional overhead, so if duplicate history rows are acceptable or are unlikely to occur, the allowDuplicatesInHistoryFlag property should remain checked.

15486: Data Server now pushes cache table changes in all cases

In prior releases, if a data server client opens a display with an attachment to a cache table and the Column(s) field in the attachment is blank, and a second client opens a display with an attachment to the same cache table but where the Column(s) field = *, then the data server would only send updates to the first client when the contents of the cache table changed. This problem is fixed.

15490: New indexColumnNamesForDelete property

A property named indexColumnNamesForDelete has been added to the cache table object. This property can be used to remove defunct rows from the cache's current table, after each update to the table. A subset of the index column names should be specified as the value of the property. On each update to the cache, the set of values contained in the update for the specified columns is recorded. After the update, any row in the current table that has matching values for those columns, but was not updated, is considered defunct and is removed from the current table. For example, say the cache table has columns named Host, PID (process id) and CPU, and indexColumnNames = Host;PID. The valueTable property receives updates from agents running on multiple hosts. The data table applied to valueTable from each agent contains all the processes for the corresponding host. Say the cache.current table contents are as follows: Host, PID, CPU h1, 1234, 22.2 h1, 3456, 33.3 h1, 8765, 44.4 h2, 6464, 12.3 h2, 4579, 55.3 When an update for a host is applied to valueTable, if there are any rows in the current table for that host where the PID does not appear in valueTable, (because the process has terminated) the row should be deleted from the current table. Accordingly, the indexColumnNamesForDelete property is set to "Host". Then if the following table is applied to valueTable by the agent for host h1: Host, PID, CPU h1, 1234, 88.8 h1, 8765, 77.7 the resulting cache.current table contents will be this: Host, PID, CPU h1, 1234, 88.8 h1, 8765, 77.7 h2, 6464, 12.3 h2, 4579, 55.3 Note that the row for PID 3456 on host h1 was deleted (since it did not appear in valueTable) and the other rows for h1 were updated. The rows for host h2 were not changed, since valueTable contained no rows for host h2.

15504: Float data type not processed properly by Cache

If historical data is loaded from a database into a cache history table and then live data is appended to the history table, values of zero may incorrectly appear in a column if the data type is float in the live data and double in the database, or vice versa. This has been fixed.

JMX Data Source

15496: Now able to invoke getThreadInfo(long p1) on a ThreadMXBean

Previously it was not possible to successfully invoke the overloaded getThreadInfo operation on a ThreadMXBean in the JMX Adapter. It is now possible to invoke the overload of the getThreadInfo operation with a single long argument (p0 = threadID) that returns the thread info for a thread of the specified id with no stack trace.

SQL Data Source

15416: Crash when two ds threads use a db connection simultaneously

In the prior release, if the Historian was configured to use an ODBC connection to Microsoft SQL Server, then under some conditions the following exception could occur: SQLException: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt This problem is fixed.

StreamBase Data Source

15311: Support added for multiple connections

The RTView Data Adapter for StreamBase receives data via streams from one or more connections. In previous releases that data was identified internally only by the name of the stream; so if the same stream was received from two connections simultaneously, the data adapter did not distinguish the source, which could lead to confusing or erroneous results. In the current release the data is now identified by both connection and stream. A column named "conn" is now added to each incoming "tuple"; it will contain the name of the connection as defined in the Application Options dialog. Data attachments may be made to a stream from a specific connection, in which case they will receive only tuples from that connection, or to "*", in which case they will receive tuples from any connection delivering that stream (the previous behavior). If a stream is written out to a history file it will now contain the connection name, and if it is read back in that information will be used to identify the source. If a history file from a previous release without connection information is read in, its tuples will be applied to all attachments for that stream.

TIBCO Hawk Data Source

15346: Hawk alerts now cleared in RTView if agent expires

In previous releases, alerts on an expired agent were not cleared in RTView unless the display showing the alerts was closed and reopened. This has been fixed.

15457: Rerequest retransmitted alerts for agents that expire

In previous releases, Hawk alerts were not always handled correctly if an agent expired and came back up. When the agent expired, the alerts currently showing in RTView were cleared, but when it came back up, RTView was not requesting retransmission of those alerts, so their status was not updated to the current alert status. This has been fixed. Note that retransmission of existing alerts only requested if the Rate to Request Existing Alerts is greater than 0.

15491: Include Index Columns option has been added

A new Include Index Columns option has been added to the TIBCO Hawk data source. If enabled, 3 new columns will be available for all TIBCO Hawk data attachments, except those to the RTViewDs microagent: AgentName - the name of the agent MicroAgentName - the name of the microagent MicroAgentInstance - the instance of the microagent These columns will show up as available Return Fields in the Attach to TIBCO Hawk Data Dialog. If * is used for the Return Field, they will be appended to the subscription data.

15492: Disable Data Cache option has been added

A Disable Data Cache option has been added to the TIBCO Hawk Methods and Alerts tab in the Application Options dialog. This option allows the user to disable the caching of data in the Hawk Data Source. When selected, the initial update on data attachments to multiple agents will return a table with a row for each agent, but subsequent updates include only the rows that have changed. This option is useful when using Hawk data attachments as input to the Cache data source or the Historian. This option was already supported with the -hawknocache command line option, but it is now available from the options dialog as well.

15513: Attach to Hawk Data dialog now retains window size

The Attach to Hawk Data dialog has been modified so that window size information is retained after the user resizes the window and closes/reopens the dialog.

WMI Data Source

14944: Microsoft WMI Data Adapter added

The WMI (Windows Management Instrumentation) Data adapter is now available. The WMI Data adapter allows you to obtain Management Information from local and remote computers running the Windows operating System. WMI data is obtained via WQL (WMI Query Language) statements. WMI is a windows specific Technology. The WMI Data adapter requires the .NET Version 2.0 (or above) RunTime installed on the machine it will run on. An Example of local WMI data is shown in the Data Sources demo.

Demos

JMX Monitor

15500: The JMX Monitor Demo has been enhanced to use client side caches

The JMX Monitor demo has been enhanced to use client side caches for the JVM Summary and JVM Memory Screens.

Display Server

15392: Initial data delay in thin client when using data server reduced

If the display server requests data via the data server, then there can be a delay between the time when the user opens a display in the thin client and when data appears in the display. This delay time has been reduced.

15560: Fix for MBean error in Display Server

In the previous release, accessing the Display Server's JMX Manager MBean could cause the Display Server to throw an OpenDataException. This has been fixed.

Distribution

14860: Add/Remove Programs listing no longer includes duplicate version

Previous versions of RTView included the version twice in the list of currently installed programs in the Add/Remove Programs applet. This has been fixed.

Drill Down

15384: Link object now drills down to correct display in thin client

A problem in the thin client in which a drill down from a link object did not open the correct display has been fixed.

Functions

14660: Filter by Row supports multi-column, multi-value filtering

In the Display Builder, the Filter By Rows function has been enhanced to allow multiple columns to be indicated for the filter and multiple values to compare against for each column. Multiple columns will be specified as a semicolon-separated list. Filter values will be specified as a nested list where values for a given column are comma-separated, and each group of comma-separated values is separated by a semicolon. For example: Column names: col1;col2;col3 Filter values: val1,val2;val3,val4;val5,val6 The resulting table returned would be those rows where the values of val1 OR val2 are in col1 AND the values of val3 OR val4 are in col2 AND the values of val5 OR val6 are in col3. Spaces around separators are not allowed. If a column name contains a semicolon it should be enclosed in single quotes (' '). Likewise if a filter value contains a comma it should be enclosed in single quotes. Note also the following: 1. If there are more column names than filter values (or value lists) or vice-versa, the extra names or values/value lists will be ignored. 2. If there is an error in designating a column name, that name and its associated filter values/value lists will be skipped. In the above example, if col2 were not found in the input, val3,val4 will be ignored and col3 will still be filtered on val5,val6. 3. For backwards compatibility, if there is only one column name and a list of filter values then the values may be separated by semicolons.

15275: GroupByTimeAndUniqueValues handles text columns differently now

The GroupByTimeAndUniqueValues function treats text columns more cleanly. Before the changes to GroupByTimeAndUniqueValues all numerical algorithms involving text values would result in a value of "" on output. Now all text calculations show the contents of the last row to be compacted in any text field.

15276: GroupByTimeAndUniqueValues handles bool columns differently now

The GroupByTimeAndUniqueValues function treats boolean columns more reasonably. Before the changes to GroupByTimeAndUniqueValues all numerical algorithms involving boolean values would result in a value of false on output. Now all boolean calculations show the contents of the last row to be compacted in any boolean field instead of a false.

15277: GroupByTimeAndUniqueValues handles date columns differently now

Before the changes to GroupByTimeAndUniqueValues all numerical algorithms involving date values would result in a value of "" on output. Now all date calculations that result in a compacted row show the contents of the last row to be compacted in any date field instead of a blank.

15278: GroupByTimeAndUniqueValues handles NaN better

The GroupByTimeAndUniqueValues fucnction was optimized for better NaN handling. Before the changes to GroupByTimeAndUniqueValues all numerical algorithms involving NaN values would result in a value of NaN on output. Now all calculations that see NaN substitute zero so that all other non-NaN values are at least considered.

15290: Restrict to Data Combinations now in GroupByTimeAndUniqueValues

The Group By Time And Unique Values function has been given an additional argument, "Restrict To Data Combinations". As in the Group By Unique Values function, if this argument is set to 0 then the returned data will contain all possible combinations of unique values found in the specified Index Columns, but if it is set to 1 then the returned data will be restricted to only those combinations that occur in the data.

15371: Deadlock if SETSUB function triggered by NOW function fixed

In prior releases, a deadlock can occur in the Display Builder or Display Viewer if a display contains a setsub function that is triggered by a now or a getsub function. This problem is fixed.

15377: Help dialog for Evaluate Expression functions updated

The help text for the Evaluate Expression By ___ functions has been updated to warn users that variable names may not begin with a number.

15469: New Distinct Values function

In the Display Builder a new function Distinct Values has been added. The Distinct Values function takes as its arguments a table and the name of a column in the table, and returns the unique values from the given column. Arguments are as follows: Table - The table of interest. Column Name - the column of interest. Sort Values - if set to 1, the resulting values will be sorted. Sort Descending - if set to 1, the resulting values will be sorted in descending order. Use Column Name - if set to 1, the original column name will be used for the result column; else a generic name will be used. This behavior is useful if a display needs to be independent of the column names in the data.

15470: New Create Selector List function

The Create Selector List function takes as input a table containing a list of values to be presented in a dropdown list and returns a two-column table where the first column contains selector names and the second column contains their values. If the input table has only one column its contents will be used for both the selector names and values; if it has two columns the selector values will be taken from the second column. The function has the option to prepend an "All Selector" to the output list. If a name is given via the argument "All Selector Name" then the first row in the output will contain that name in the first column and "*" in the second. Selector Table - the table of valid values. All Selector Name - name for the "all" selector. Sort Values - if set to 1, the resulting values will be sorted. Sort Descending - if set to 1, the resulting values will be sorted in descending order.

15471: New Validate Substitution function

The Validate Substitution function validates the given substitution against the given table of valid values. The first argument is the name of a substitution variable and the second argument is a table of valid values. (Only the first column of this table is used.) If the substitution value is found in the table it is returned; else the given substitution is set to the first value in the table.

15474: New checkbox to scroll columns added to Data Display Dialog

In the Display Builder's Data Display Dialog, a new checkbox named "Scroll Columns" has been added. By default all columns are displayed in the available dialog width, and in a wide table the column labels may not be readable.If this box is checked then the columns will be sized so the labels are readable and a horizontal scrollbar will be added if necessary to see all the columns.

15498: Split String Function added to tabular functions

The Split String function splits the given string, using the separator regular expression, to return a table with the named results column. The String argument is the input string to be split The Separator argument is the regular expression used to split the input string argument The Results Column Name argument is used to name the column containing the split results, one per row, in the returned results table.

15525: optimize to Restrict to Data Combinations for Group By functions

The performance of the Group By Unique Values and Group By Time and Unique Values functions has been optimized when the Restrict To Data Combinations is enabled.

15558: setsub function may not initialize value of sub in listeners

In prior releases, if a function has an input argument with an attachment that is affected by a substitution, and the initial value of that substitution is set by another function which appears later in the rtv file, the attachment may not be initialized with the correct substitution value. This problem is fixed.

General

14893: Third party .jar files repackaged into single .jar

In previous versions we required that the following libraries be added to applet parameters. Reporting support: J2PrinterWorks.jar iText.jar iTextAsian.jar Email command support: mail.jar activation.jar Expression evaluation function support: jeval.jar Browser support: BrowserLauncher2.jar It is no longer necessary to include all of the above libraries, as the contents of these libraries have been re-packaged into a single library: gmsjext.jar If you are currently using an applet deployment and you do not wish to upgrade your HTML file's applet parameters to reference gmsjext.jar instead of the full list above, you can find a copy of the old libraries in lib/ext_jars.zip. The signed versions of these are in signed_jars.zip.

15497: Java option optionsFileDir now also checks startup directory

The behavior of the RTV_JAVAOPTS option -Dcom.sl.rtview.optionsFileDir= (directory) has been modified. Previously, if a directory was specified, RTView would attempt to read configuration files from that directory. If not found, RTView would look for the configuration files in lib. This has been modified as follows: If a directory is specified, RTView will attempt to read configuration files from that directory. If not found, it will look for them in the directory where you started your application. If not found there, it will look for them in lib.

Object Library

11694: Scale palette enhancements

All of the scales previously on the Scales tab of the Object Palette have been replaced with the following 5 new scales: obj_barscale - This is a scale which displays the value using the fill percent of the bar. obj_piescale - This is a scale which displays the value using the fill percent of the pie. obj_vuscale - This is a scale which displays the value using the fill percent of the bar. The bar is drawn striped instead of solid. obj_indscale - This is a scale which displays the value using the position of the indicator against an axis. obj_bulletscale - This is a scale which displays the value using the fill percent of the bar. The bar look and funcationality are based on Steven Few's bullet graph. All of the scales allow you to set the range of the value using valueMin and valueMax. All of the scales except the pie scale support a variety of axis styles and can be oriented vertically or horizontally. The scales that were previously on the Scales tab of the Object Palette have been deprecated. They will continue to work as they did before in existing displays, but are no longer available in the Object Palette.

Charts (General)

15320: New Spark Chart object

A sparkline object has been added to the Graphs palette. The sparkline object is very similar to the trend graph and has many of the same properties. However, the sparkline has only a single trace and no X or Y axis. A marker is drawn only for the last data point. By default the sparkline also has no background or legend, but there are properties to enable those features. The sparkline will plot the data that is attached to its value and/or its valueTable properties. These are equivalent to the trace1Value and trace1ValueTable properties of the trend graph. By default, the sparkline will plot all of the data, up to the maxPointsPerTrace limit. The Y data range will be autoscaled. Although the X and Y axis are not displayed, several properties are available for controlling the X and X ranges of the plot, namely timeRange, timeRangeBegin, timeRangeEnd, yAxisAutoScaleMode, yValueMin, and yValueMax. See the trend graph documentation for a description of these properties. The sparkline supports the same alarm properties as the trendgraph.

Control Objects

15315: Scale Control now supports changes to valueMin and valueMax

In previous releases, the valueMin and valueMax properties on the Scale Object (obj_c1scale) were static and did not support updates. This has been fixed.

15373: Date Picker bug fixes

In the previous release of RTView, the Date Chooser control had the following bugs: 1) If timeEntryEnabledFlag is unchecked, when you click on the calendar button, the control's varToSet variable is set and its command (if any) is executed immediately, before you pick the desired date from the popup calendar. This does not occur in the thin client. 2) If timeEntryEnabledFlag is checked and the control has a command, the command gets executed twice when you click OK in the popup calendar. 3) If timeEntryEnabledFlag is unchecked and the control does a drilldown to a new display in the current window, it crashes. All of these bugs have been fixed.

Fx Bar Chart

15335: Fx Bar Chart Spacing and Scroll Bars support

Two inter-related properties have been added to the Fx Bar Graph: scrollbarMode and minSpacePerBar. These properties act similarly to the same properties of the standard RTView Bar Graph. scrollbarMode: Select Never, As Needed, or Always from the scrollbarMode property to set the behavior of the x-axis scroll bar in the graph. NOTE: If drawHorizontalFlag is selected, the x-axis is vertical. Never is the default setting. If set to Never, some bars may get clipped. Select Always to display a scroll bar at all times. Set to As Needed to display the scroll bar when there is not enough space to display all of the bars in the plot area. Each bar uses at least minSpacePerBar pixels along the x-axis. minSpacePerBar: Sets the minimum width for each bar, in pixels. If drawHorizontalFlag is deselected, set the minimum width for each bar, in pixels. If drawHorizontalFlag is selected, set the minimum height for each bar, in pixels. The default is set to 1.

15390: Initial value 'Once' for entranceTrigger now behaves correctly

The FxBar graph's transition code has been improved from the prior to release to ensure that setting a transition to "Once" sticks. Also, the very first Entrance transition will display without the undesirable data flash that may have preceded the unfolding of the effect.

15391: all transition types except Interpolate act like Slide Right

The FxBar graph's transition code has been improved from the prior to release to ensure that the all settings stick.

15406: Bar spacing added to FxBar

The FxBar graph now supports the minSpaceBetweenGroups property. As with the standard bar graph, minSpaceBetweenGroups appears in the Layout section of the Object Properties grid. The default, as with the standard bar graph, is: minSpaceBetweenGroups = 8

15462: MinSpaceBetweenBars property added to Fx Bar

The FxBar graph now supports the minSpaceBetweenBars property. As with the standard bar graph, minSpaceBetweenBars appears in the Layout section of the Object Properties grid. The default, as with the standard bar graph, is: minSpaceBetweenBars = 0

15483: Alert Indicators implemented in Fx Bar Chart

Alert indicators are now supported in the Fx Bar graph. The Alert properties added are: valueHighAlarmLineVisFlag valueHighAlarmMarkColor valueHighWarningLineVisFlag valueHighWarningMarkColor valueLowAlarmLineVisFlag valueLowAlarmMarkColor valueLowWarningLineVisFlag valueLowWarningMarkColor By default, all of the VisFlag properties are set to OFF and all of the MarkColor properties are set to the same color values as their respective Alarm or Warning colors.

15484: Properties added for X and Y Axes color and thickness

The Fx Bar graph now supports changing the color and thickness of the X and Y axis. Four new properties have been added. They are listed below with their default values: X-Axis category: xAxisColor = 0xBBCCDD (light-gray) xAxisThickness = 8 Y-Axis category: yAxisColor = 0xBBCCDD (light-gray) yAxisThickness = 8

15485: Properties added for X and Y Axes color and thickness

The Fx Trend graph now supports changing the color and thickness of the X and Y axis. Four new properties have been added. They are listed below with their default values: X-Axis category: xAxisColor = 0xBBCCDD (light-gray) xAxisThickness = 1 Y-Axis category: yAxisColor = 0xBBCCDD (light-gray) yAxisThickness = 8 Note that the yAxisColor and yAxisThickness property values will be ignored when the yAxisMultiRangeFlag property is TRUE.

Fx Trend Chart

15365: Fx Trend Enhancements

The following properties have been added to the Fx Trend Graph. These properties have the same behavior as on the standard trend graph (obj_trendgraph02), except as noted below. timeRangeBegin timeRangeEnd gridColor xAxisGridVisFlag yAxisGridVisFlag xAxisLabelTextSize (see note 1) yAxisLabelTextSize (see note 1) yAxisMultiRangeFlag (see note 2) yAxisPosition (see note 3) yAxisAutoScaleVisTracesOnlyFlag trace1VisFlag, trace2VisFlag, etc Note 1. These are equivalent to x/yAxisLabelTextHeight on obj_trendgraph02. Note 2. The yAxisMultiRangeFlag property on Fx Trend is similar to yAxisMultiRangeMode on obj_trendgraph02, where yAxisMultiRangeFlag = unchecked is equivalent to yAxisMultiRangeMode = Off, and yAxisMultiRangeFlag = unchecked is equivalent to yAxisMultiRangeMode = MultipleAxis. There is no equivalent to the Classic or Strip Chart modes, those are not supported on the Fx Trend. Note 3. The yAxisPosition property supports the same settings on the Fx Trend and obj_trendgraph02. However, the 'inner' position settings work differently: on obj_trendgraph02, the axis labels are drawn inside the trace area, while on Fx Trend the inner setting merely changes the location of the tick marks relative to the y axis.

15429: Flex trend with a lot of data no longer hangs browser after zoom

In prior releases, the Fx Trend would sometimes become sluggish or unresponsive after performing a zoom. This is fixed.

15511: yValuePrecision has been added to the Fx trend graph

A property named yValuePrecision has been added to the Fx trend graph. It specifies the number of decimal digits shown for Y data values in the legend and the mouseover text. The default value is 2.

Heatmap

15430: Heat Map Object added

A new object, obj_heatmap, has been added to the Graphs tab in the Object Palette. The heatmap displays indexed hierarchical data as a set of nested rectangles. A rectangle is drawn for each index, and is then filled with smaller rectangles representing sub-indexes. The size and color of a node's rectangle shows its value relative to the total of all values for that index. Heatmaps are useful because the color and size of the nodes allow you to see patterns that would be difficult to spot in other ways. They also make efficient use of space and can legibly display a large amount of data. Attach your tabular data to the valueTable property. This table must contain one or more index columns and at least one data column. The heatmap will display one level of nodes for each index column specified. Index column names should be specified in the nodeIndexColumnNames property. The first non-index numeric column will be used to control the size of the node. The second non-index numeric column will be used to control the color of the node. If only one data column is specified, it will control both the size and the color of the nodes. The data in the valueTable is aggregated by unique index value. By default, the both size and color data is subtotaled. You can specify alternative aggregation types in the colorValueGroupType or sizeValueGroupType properties. Since the data in the heatmap is aggregated, the value shown in a heatmap node might not be the same as the value passed down to a drill down display. For example, if you have your heatmap attached to a table where the index column is Plant and the size column is Units Completed, if you have 2 rows where the Plant is San Francisco, then the node size will be based on the total of the Units Completed values for both rows. However, when you drill down, the drill down value for Units Completed will be the value in the first row in the table where the Plant is San Francisco. Negative aggregated values will be treated as 0. The following layout options are supported: Squarified - Nodes are more square in shape and ordered according to the size of the value from the top-left to the bottom-right. Strip - Nodes are more square in shape and ordered according to the order of the rows in the valueTable. Slice Horizontal - Nodes are short and wide and ordered according to the order of the rows in the valueTable. Slice Vertical - Nodes are tall and narrow and ordered according to the order of the rows in the valueTable. Slice Best - Nodes are laid out either like Slice Horizontal or Slice Vertical based on what fits best in the available space. Slice Alternate Horizontal - The layout alternates between Slice Horizontal and Slice Vertical based on the node depth. The top level nodes use Slice Horizontal. Slice Alternate Vertical - The layout alternates between Slice Horizontal and Slice Vertical based on the node depth. The top level nodes use Slice Vertical. Note that heatmaps containing large data sets may run slowly on the Display Server if either the drill down target or the mouseOverFlag is enabled.

15512: The heatmap now supports value divisors and data quality

Two new properties, sizeValueDivisor and colorValueDivisor, have been added to control the size and color values plotted in the heatmap. Note that the colorValueDivisor, if specified, is also applied to colorValueMin and colorValueMax. For columns specified in the mouseOverAdditionalColumns property, you can optionally specify a value divisor for each numeric column included in the tooltip. Several new properties have been added to support data quality: valueQuality: Specify a value to compare to valueQualityLostData and valueQualityNoData. If it matches one of these, all nodes in the heatmap will draw in the corresponding valueDataQuality color. This property is ignored if the valueQualityEnabledFlag is off. valueQualityEnabledFlag: If selected, enable coloring cells based on data quality. valueQualityColumnName: Use the specified column in the valueTable data for a per-row data quality flag. For each node, if the value in the quality column matches valueQualityNoData, draw the node valueQualityNoDataColor and if the quality column matches valueQualityLostData, draw the node valueQualityLostDataColor. If the valueTable contains multiple rows for a single index, the highest data quality value is used. This property is ignored if the valueQualityEnabledFlag is off. valueQualityLostData: The lost data value. valueQualityLostDataColor: The color to paint the node if the quality is valueQualityLostData. valueQualityNoData: The no data value. valueQualityNoDataColor: The color to paint the node if the quality is valueQualityNoData.

15566: linearColorMappingFlag property added to Heatmap

The linearColorMappingFlag has been added to the heatmap in the Data Format category. This property adjusts the way the color calculations are done for the nodes. If selected, the color of the node ranges directly from minColor to maxColor, similar to the way a gradient's colors are calculated. If deselected, the color of the node ranges between minColor and maxColor by going around the color wheel.

Pie Charts

15418: Initial value "Once" for entranceTrigger now acts as expected

It was noted that some of the entrance and exit transition effects didn't work as expected. The problems were found and corrected.

Tables

12228: Support added for multiple column sort

In the Display Builder, the Sort Table function has been enhanced to take multiple column names, separated by ";". The resulting table will be sorted on the first column, then the second column, etc. If an invalid column name is entered the original table will be returned.

15442: Crashes caused by valueTable changes while drawing objects fixed

In prior releases, an array bounds exception or class cast exception would sometimes occur if rows were removed from a data table by an asynchronous data source while an object attached to the same table was being drawn. This is fixed.

Trend Charts

15411: "Stacked" option added to yAxisMultiRangeMode

The trend graph now supports yAxisMultiRangeMode = Stacked. In this mode, the y value plotted for a trace for time=T is the sum of all of the y values of the lower numbered traces at time = T. For example, for trace 3 and the plotted y values will be the sum of the y data values for traces 1, 2, and 3. The actual (unstacked) y values are shown in the trace legend for all traces. The y value for a lower-numbered trace is not included in the sum if that trace is invisible, or has no data, or all of its data points are older or newer than T, or the y value at T is NaN (not a number). If the lower- numbered has no value at T, but has values before and after T, the y value to be included for the sum in that trace will be interpolated.

Oracle Coherence Monitor

14776: Alert provided for Departed Nodes

The "DepartedNode" alert has been added to the Oracle Coherence Monitor. This alert is triggered whenever a node leaves the cluster for more than the specified delay time (default = 60 seconds). When a departed node rejoins the cluster, the alert is cleared. This alert may be disabled/ enabled from the Alert Admininstration page.

15440: Node Location now shown in Departed Nodes display

The Location identifier is now shown in the Cluster Stability Departed Nodes table, along with the ip address and port.

Platform Support

15038: rtv_init.bat now writes temporary file to Application Data

In previous versions, the rtv_init.bat script would write a temporary file to %RTV_HOME%. This would cause the script to fail on some Windows systems due to permissions. This temporary file is now written to %APPDATA%\.sl instead.

Version 5.2c1 Release Notes

Alerts

13682: Enhanced Alert Editing

In the Display Builder, the way Alert objects are added and configured has changed. Instead of seeing alert objects as visible rectangles in the display, they will be shown in a new Alert dialog. When an alert objects is selected in the table its properties may be edited in the Object Properties dialog as before. A new alert object may be added by selecting its type from the dropdown list to the left of the Add button and clicking that button. The tabular display of alert objects may be filtered by means of the dropdown lists at the top of the dialog. The filters are additive; to remove a given filter select "*" from the list. The Name filter accepts a regular expression string.

15206: Multi-state Alert added

A multi state alert has been added to RTView. This alert allows you to define the number of states for your alert. For each state, you can set the condition that the input value must meet to trigger the alert. The following conditions are supported: Greater Than Greater Than or Equal To Less Than Less Than or Equal To Equal Not Equal Increase Increase Percent Decrease Decrease Percent Net Change Net Change Percent In Range Out of Range When your input value has met the condition for a defined alert state, an alert will be generated using the alert state number as the severity (ex, the severity for Alert State 1 will be 1, the severity for Alert State 2 will be 2, etc).

15207: Alert Text can now be customized

The alerts have been enhanced to allow you to customize the alert text. The alert text is displayed in the Alert Text column of the alert table and is used in the $alertText substitution available for alert commands. You can specify a different alert text string for each alert level. If no alert text is specified, RTView will output default text, which is the same text that was used in previous releases. The following new properties have been added to the limits alert to allow you to specify alert text: valueHighAlertText valueHighWarningText valueLowAlertText valueLowWarningText The following new properties have been added to the discrete alert to allow you to specify alert text: valueHighAlertText valueLowAlertText valueMediumAlertText All of the alert substitutions that are available on the alertCommand can also be used in the value*AlertText string except for $alertText and $alertEmailBody. The following new alert substitutions have been added for use in both the value*AlertText and the alertCommand: $alertLabel - A label indicating the alert type (discrete: High Alert, Medium Alert, Low Alert limits: High Alert, High Warning, Low Alert, Low Warning) $alertCurValue - The current input value. $alertCompValue - The value the current input value is being compared to.

15213: File Browser Added to Alert Options Dialog

In the Alert Definitions tab of the Display Builder Application Options dialog, when you click the Add button to add a new Alert Definition file, you will now be presented with a file selection dialog which you may use to browse to the file of your choice.

Builder

15142: Model height limit removed

In previous releases of RTView, the background model size has been limited to less than 2049x1537. This limitation has been removed.

15235: New live data display option for data attachments

The Display Builder has been enhanced with an addtion to the "attach/detach" popup menu. This menu is shown when you right-click on a property in the Object Property dialog, or on a function argument in the Edit Function dialog. If the property or function argument is attached to data, you will be able to choose a new menu item "Display Data" and invoke a free-standing dialog containing a table displaying the data available from this attachment. You may invoke such a data display dialog for any data attachment; only one dialog will be opened for each individual attachment. If you close one of the dialogs it will be re-opened if you re-invoke a display dialog for the same data attachment. All the dialogs will be closed when you change displays. The dialogs display the text of the data attachment above the data table, and an abbreviated form of it in their title bar, to help locating a particular dialog if you have several open. They include two checkboxes below the table: "Show Column Types" will display the data type of each column below its name in the column header, and "Insert New Rows" will set that flag on the data table.

Builder - Editing

15211: Function Dialog resizing constrained

In the Display Builder, the Edit Function dialog could be resized so small that the dialog's contents became unusable and the function help text could become truncated. The dialog is now constrained not to resize below a minimum size.

15218: Argument values properly retained when changing function type

In the Display Builder Edit Function dialog, if you were editing a function and changed its type to one with similar argument names, the corresponding argument values were not correctly retained. For most functions, literal argument values would be lost although data attachments would be retained. For the Evaluate Expression As Double/String functions, data attachments would be converted to literal values when switching between those two types. To clarify the expected behavior when changing the type of a function: if the new function type has the same argument names as the previous one then all argument values (literal and attachment) will be retained. The only exception is changing between Evaluate Expression As Double/String and Evaluate Expression By Rows: in this case only the expression will be retained.

15305: Support for sending multiple values from a multi-select listbox

The list control object (obj_c1tlb) now supports selection of multiple list items. To enable multiple selection, check the multiSelectFlag property in the property sheet. If multiple list items are selected and if a variable is attached to the control's varToSet property, the variable will be set to a string containing the selected item values, separated by semicolons. For example, if the selected item values in the list are Red and Blue, the variable value will be set to Red;Blue. Likewise, the control's selectedValue property can be used to select multiple items by specifying a string with the values to be selected separated by semicolons. LIMITATION: Since the semicolon character is used as a separator between multiple values in the selectedValue property, and in the string assigned to the varToSet variable, the list values themselves may not contain semicolons in a list control whose multiSelectFlag property is checked.

Builder - Options Dialogs

14877: Last global file entry can now be removed from list

In the Globals tab of the Display Builder's Application Options dialog, if you had a single global file in the dialog's table and removed it, it would reappear when you pressed Apply. This has been fixed.

Common Server Support

15055: Notification provided of user login/out

Two methods have been added to the GmsCustomUserManager class, named clientLogin and clientLogout.

	public void clientLogin(String userName,
	                        String role,
	                        String sessionID)
In the display server and data server applications, this method is invoked when a client user logs in. There is a unique sessionID for each client login session.
	public void clientLogout(String userName,
	                         String role,
	                         String sessionID)
In the display server and data server applications, this method is invoked when a client user logs out. There is a unique sessionID for each client login session.

15095: Data/Display Server & Historian available as Windows Services

The Data Server, Display Server and Historian have been enhanced to support running as Windows services. To install and start one of these applications as a service, type the following in an initalized command prompt: install_service appName -service:service_name -dir:startup_directory The following arguments are supported for install_service appName - Required. Must be displayserver, dataserver or displayserver -service: - Required. Specify the name to use for the service. This will show up as the name of the service in the Windows Services dialog. If the service name contains spaces, enclose the entire argument in quotes. For example, "-service:my service". -dir: - Required. Specify the full path to the directory where the application should run. This should be the project directory that contains all of the .rtv and configuration files for your RTView application. If the directory contains spaces, enclose the entire argument in quotes. For example, "-dir:c:\my dir". -serviceout: - Optional. Specify the full path and file name for the out log file. If not specified, the out log will be written to the directory specified with -dir and named appNamed_out.log. -serviceerr: - Optional. Specify the full path and file name for the err log file. If not specified, the err log will be written to the directory specified with -dir and named appNamed_err.log. -overwritelogs - Optional. Overwrite the err and out logs each time the service restarts. If not specified, new data is appended to the existing log files. -manualStart - Optional. Set the service startup type to manual. The service will still start when it is installed, but will not automatically start on system startup. If not specified, the service startup type will be auto. For example: install_service displayserver -service:MyService -dir:c:\myproject -serviceout:c:\logs\ds_out.log -serviceerr:c:\logs\ds_err.log Any other command line options will be passed into the application. Note that the service is run as a local system service. If you will be using ODBC connections for the Historian or SQL data source, you will need to set these as system data sources, not user data sources. Note also that you cannot successfully install a service application if RTView is being run off a networked drive. It must be installed on your local system. To stop and uninstall one of these service applications, type the following in an initialized command prompt: uninstall_service appName -service:service_name Once a service is installed, you can start, stop and configure it in the Windows Services dialog. These application are available as windows services on Windows XP, Windows 2003 Server and Windows Vista only. They are not supported on 64-bit systems. These services run using JavaService version 2.0.10, which is licensed under the Lesser GPL and is available for download from http://forge.objectweb.org/projects/javaservice/.

15170: High Availability and Load Balancing support for RTView servlet

Improvements were made to better support High Availability and Load Balancing for RTView servlets. RTView provides two servlets for use in web deployments. The rtvdata servlet provides a Viewer client access to the Data Server. The rtvdisplay servlet provides the Thin Client with access to the Display Server. In this release, the servlets have been enhanced to support high availability. High availability is achieved by deploying multiple redundant copies of the servlet in a web server/app server environment that supports clustering and load-balancing/failover between redundant servlets. Servlet clustering allows multiple copies of a servlet, each running in a separate app server, to replicate their internal state information. Most app servers, such as Tomcat 6.0, support clustering. Load- balancing/failover maps a URL from a client request to one of the redundant servlets. A servlet is chosen so that the client requests are distributed evenly among the currently available servlets. In the event of a servlet failure, a client is switched from a failed servlet to a healthy servlet. There are several types of load balancers, including software or hardware devices, or specialized DNS configurations. See the High Availability Section under Deployment in the documentation for more details about how to configure these systems. The documentation provides general examples of several HA deployments and specific examples of HA servlet deployments using Tomcat 6.0 as the app server and Apache httpd 2.2.9 as the web server and load-balancer.

Customization

15171: Flex Custom Example with Tabular Data added

Another example of a custom fx object has been added to the custom/fxsimple directory. It accepts tabular data from RTView and displays it in a grid. The source file for the example is fxgrid.mxml.

15250: Resource Bundle shared by all Custom Data Adapters

Previously only a single custom data adapter could be used in a RTView application because localization resources were not shared between custom data adapters. This has been corrected.

15281: New custom data adapter option to set update interval

Previously we allowed only "Once Only" and update on every RTView update interval for custom data sources. Support has been added for polling on every ds-specific interval or data-attachment interval.

15282: Custom data adapters cannot set options before initialization

This task adds support for command-line argument processing and applet parameter processing to the custom data adapter API. Command-line arguments and applet parameters are processed the same way as options read from the Ds Options file, through the method GmsRtViewDsAdapter.applyDsOption(), with only minor exceptions as described below. In addition, the initialization of custom data adapter properties has been split into two parts, so that an adapter can use information passed-in from command-line options, applet parameters, or entries in the Ds Option file when setting most of the custom data adapter properties. Option Processing All valid options, whether passed from the command-line, specified as applet parameters, or read from the Ds Options file, are passed to the method GmsRtViewDsAdapter.applyDsOption(String name, String value) during application initialization. The option name and value are provided to the adapter as strings. For more details about processing options, please refer to the description in the Customization / Custom Data Adapter / Data Source Options / Accessing DS Options section of the RTView User Guide. Command-Line Options Command-line options should be specified using the following format: -<dskey>option:<name>=<value> where <dskey> is the dskey for the custom data adapter, <name> is the option name, and <value> is the option value. The following example shows how to pass a command-line argument to a custom data adapter. In this example, the dskey for the custom data adapter is ds1, the option name is option1, and the option value is value1. run_viewer customds:Ds1 ds1option:option1=value1 Command-line options are processed after options read from the Ds Options file, so a custom data adapter can use command-line options to override options previously read from the DS Options file. Unlike Ds Options, options passed from the command-line do not need to be defined as fields in the Ds Options exemplar in order to be passed to the applyDsOption method. All options which match the format shown above will be passed to the applyDsOption method during initialization. This allows a custom data adapter to accept options which control program execution, yet which are not saved in the Ds Options file or displayed in the Ds Options dialog in the builder. For example, a custom data adapter may define an option which specifies the name of the resource bundle to use for localization, so that different localization files can be tested without any code changes. Applet Parameters Options may be passed to applets as applet parameters. When passed using the HTML <param> element, applet parameter options should be specified using the following format: <param NAME=<dskey>option:<name> VALUE=<value> When passed inside the HTML <embed> tag, applet parameter options should be specified using the following format: <embed & <dskey>option:<name>=<value> & > where <dskey> is the dskey for the custom data adapter, <name> is the option name, and <value> is the option value. The following example shows the HTML to pass an applet parameter to a custom data adapter. In this example, the dskey for the custom data adapter is ds1, the option name is option1, and the option value is value1. To pass an option in the <param> element: <param NAME=ds1option:option1 VALUE=value1> and if the parameter is passed in the <embed> tag, the HTML would look like this: <embed type=& code=& ARCHIVE=& ds1option:option1=value1> Applet parameter options are processed after options read from the Ds Options file, so a custom data adapter can use applet parameter options to override options previously read from the DS Options file. Applet parameter option names must match the names of fields in the Ds Options object. Unlike command-line options, applet parameter options cannot be arbitrary. If the name of an applet parameter option is not recognized, the parameter is ignored. Data Adapter Properties To support the use of command-line options and applet parameters in the setup and configuration of a custom data adapter, the procedure for initializing the data adapter properties has been changed. The method GmsRtViewDs.initDsProperties(GmsRtViewDsProperties) has been replaced by two methods, one to initialize the base properties for the adapter, and the other to initialize the control properties for the adapter. NOTE: This change requires existing custom data adapters to be modified to use the new property initialization methods in the GmsRtViewDs class. Data adapters that are not modified will generate run-time exceptions when used with the new com.sl.gmsjrtviewds library. The adapter base properties are initialized in the GmsRtViewDs constructor, before any option processing is performed. Because of this, command-line options, applet parameter options, and Ds Option file options are not available when the base properties are initialized. The method GmsRtViewDs.initDsBaseProperties(GmsRtViewDsBaseProperties) is used to initialize the adapter base properties. The base properties include the dskey, the adapter class name, the adapter description, and the option file name. The adapter control properties are initialized after all option processing has been performed. The method GmsRtViewDs.initDsControlProperties(GmsRtViewDsControlProperties) is used to initialize the adapter control properties. The control properties include all properties that were not specified as base properties above. For examples of the new property initialization methods, please refer to the following custom data adapter examples: myeventds, mypolledds, and mypolledds2.

15339: Custom Data Source named field attributes no longer collide

In previous versions, custom data source named user defined fields added by the addField method may have their attributes ( UIState (DialogFieldState), validity (DataFieldValidity)) modified by other custom data sources that define fields with the same name. This is no longer the case.

Data Historian

15148: High Availability support added for Historian

For higher availability, multiple Historians can be assigned to a server group to support failover between the servers. At any time, one historian in the group can be the primary and the other group members are standbys. Only the primary member writes to the database. Please note that this feature is intended to be used with a database system that also supports redundancy (through mirroring, clustering, or other techniques) so that any historian in the group can update the same virtual database. Each group member is assigned a port number and a priority. Each member monitors the status of the others in the group, using a socket connection on the assigned ports. The member with the highest priority is elected as the primary. If the primary member fails, is shut down, or loses its connection to the database, the standby member with the highest priority becomes the new primary. In the event of a tie in priorities, the member which was started first becomes the primary. Each historian in the group should be configured with the same set of data configuration files, retention options, data source options, etc. There is a new tab labeled Server Group for configuring the Historian's group options. By default, no server group is defined. To define a server group: 1. Select a port number on which this historian will accept connections from other historians in the group. The default is 3380. 2. Choose a priority for this historian. The default is 1. The online historian with the highest priority will become the primary historian, and will update the database. 3. For each other historian in the group, enter the hostname and port in the 'Member' text field. 4. Save the configuration. 5. Repeat steps 1 - 4 for the other historians in the group. The group options can also be specified on the command line as follows: -group_priority:N -group_port:N -group_member:host:port For example, with the following options the historian will have a priority of 2, will listen on port 3399, and will join a group that contains a historian on the host named kiwi using port 5566: run_historian -group_priority:2 -group_port:3399 -group_member:kiwi:5566 The following options start the historian with a priority of 2 and the group also contains the historian on kiwi. Both historians use the default port of 3380: run_historian -group_priority:2 -group_member:kiwi Note that a group priority >= 0 must be specified or the historian will not join the group. Note that replication of internal historian state between redundant servers is not yet supported. If the historian belongs to a group, the group status is shown in a table on the Server Group tab. The table has one row for the local historian plus one row for each other member in the group. The table has the following columns: 1) Member: The name of the member, which is "local" for the current copy of the historian, and the host:port configured for each of the other group members. 2) Status: One of the following values: primary - member is currently the primary historian server standby - member is running and has a database connection, but is lower priority than the primary no service - member is running but has no database connection (so it can't become the primary) no connection - the local historian can't establish a connection to this member 3) Priority: The priority configured for the member. 4) Start Time: The time that the member was started. This is used to resolve ties: if there is a tie among the standby members with the highest priority, the member with the earliest start time is selected as primary. For JMX monitoring, two boolean attributes have been added to the historian's MBean: PrimaryServer : true if the historian is the primary server in its group, or if it does not belong to a group. ConnectedToDatabase: true if the historian is connected to its historical databse.

Data Sources

15244: Unparseable Date Exception in Splunk Datasource (Linux/Japanese)

When connecting to Splunk, an unparseable date exception was thrown on Japanese Linux machines in the Tokyo time zone. This error has been fixed.

15331: Typo in launcher prevented Splunk jars being correctly added

In 5.1c1 the Splunk Data Adapter was not loaded automatically when you started RTView from the command line, but required that you add jaxen- core.jar to the RTV_USERPATH. This has been fixed, so that Splunk now automatically is included if you are licensed to use Splunk.

Cache Data Source

14992: New mechanism to initialize table schema

In the Cache Data Source, the Table Cache object (obj_cache_table) has been enhanced with a new property, "schemaTable". This property may be used to provide information about the structure of the data that will be stored in the cache before that data is actually available. This property may be attached to any data source that will provide the structure of a table, such as an SQL query or an XML file. (Only the table structure will be used from this attachment; if there is any row data it will be ignored.) Before the data becomes available, the cache Current and History tables will be initialized from the schema table and the Attach To Cache Data dialog will show the columns found there. After the data is available, the cache tables will contain the columns found in the schema table plus any additional columns found in the data. In addition, if there is a difference between the data types of the columns defined in the schema and the types found in the actual data, the schema types will be used, and the incoming data will be converted. Note that if the "timestampColumnName" property is also specified, a timestamp column will be added to the schema table (if it is not already there) as well as to the data.

15214: Cache objects can now be used in history config files

It is now possible to use Cache objects in history configuration files. Previously it was not possible to set the historyTableName property on a cache object. Now you can do this, making it possible to use a single .rtv file for both cache configuration and historian configuration. Limitation: Although you must enter a name in historyTableName for the object's data attachment to be used in the history definition, this name will be ignored for scalar cache objects (obj_cache_double.rtv). Data from a scalar cache defintion will be safed to the HISTORY table.

15248: Table with filtered cache no longer has incorrect data

In previous versions, a reference to an RTView cache that included a filter would sometimes transfer all data rows instead of the rows specific to the filter. The result would be additional points being plotted in a trend chart or shown in a table. This problem has been fixed and filtered references to cached data work as expected.

15253: Data not used by filtered attachment won't cause update

Filtering of RTView Cache data has been optimized so that a reference to a cache using a filter only transfers the specific rows that have been recently added to the cache. Previously rows would be transferred whenever any row in the cache changed.

SQL Data Source

14400: Built-in database RTViewDs provides SQL connection information

The SQL Data Adapter has been enhanced to provide a built-in database name, "RTViewDs", with two tables: Connections and Keys. The Connections table provides detailed information about each database connection and its status. The Keys table provides detailed timing and count information about each unique data attachment.

15263: LONG datatype for DB2 supported in SQL Datasource

The RTView Historian when used with DB2 will now correctly create tables with "long" values as BIGINT values for table columns that are defined as a LONG type. Previous versions incorrectly limited the precision to INTEGER type.

15318: Blank SQL queries no longer report -1 rows to console

The SQL Data Adapter now recognizes query strings of zero length and does not try to execute them or report query times. Previously, a report of -1 rows returned would be continuously printed. This problem has been fixed.

TIBCO Hawk Data Source

15239: New option to disable cache/merge of Hawk data rows

The TIBCO Hawk data source has been enhanced to support a new command line option, -hawknocache. This option controls the way that data updates are handled. By default, data attachments to multiple agents return an entire table with a row for each agent on each data update, even if only one row changed. With the -hawknocache option, the initial update contains all of the rows, but each subsequent update only includes the rows that have changed. This is useful when using Hawk data attachments as input to the cache data source or to the Historian. When this option is specified on the command line for the Display Builder or Configuration Utility, it will be included in HAWKOPTIONS.ini if the application options are saved.

Development and Build

15294: Upgrade to Tomcat 6.0

The Tomcat server that is packaged with RTView has been upgraded to version 6.0.18.

Display Server

15228: List box and combo box inside composite objects no longer empty

In release 5.0 and 5.1, list and combo boxes contained in a composite object and configured with a fixed set of list items (not attached to data) were shown as empty in the thin client. This is fixed.

15233: Multi-command on object in composite no longer causes exception

The Display Server will no longer throw a class cast exception if a multi-command is executed from an object within a composite object.

15264: executeOnLostFocusFlag errors in thin client fixed

The executeOnLostFocusFlag feature of the text edit control caused the following problems in the thin client, in the previous release. Both problems are fixed in this release. 1. If a text field with executeOnLostFocusFlag has focus, and the user clicks on another object in the display (a button, say), only the text field's action is executed. The other object's action is not executed unless the user clicks on it again. 2. In Firefox 2.0 only, if a text field with executeOnLostFocusFlag has focus and the user clicks on a link to open another display (in the left-hand frame of the default thin client page) the page displays the message "ERROR: no response from .../xmlreq.jsp". Afterwards, Firefox is sometimes unresponsive and must be closed. Firefox 3 and IE are not affected by this problem.

15265: Export to EXCEL failure in IE for long url has been fixed

In prior releases, the thin client "Export Table to Excel/Html" feature would sometimes fail in Internet Explorer if many substitutions were set on the display, resulting in a long URL for the export request. This is fixed.

15266: Incorrect drilll down behavior from control objects fixed

In release 5.0 and 5.1, if a control object is configured to set a variable and also to perform a drill down, then in the thin client only the set variable action is performed when the control is activated, the drill down is not. This problem is fixed.

15360: Runtime changes to table filterProperties no longer delayed

In the previous release, if substitutions or local variables were used in a table's filterProperties, changes made to the substitution or variable value sometimes did not take effect until the next refresh in the thin client. This problem has been fixed.

Drill Down

15347: Current Window drill down lags in performance in display server

The performance of the thin client when performing a drilldown in the current window to a display containing a table with many cells has been improved. Performance of large tables may still be sluggish with older browser versions. For best performance, use Firefox version 3 or Internet Explorer version 7.

Functions

15208: Functions within expressions now get new argument values

There was a problem with the Evaluate Expression functions such that if the expression used functions, its result would not be updated after the first time values were given to its variables, but would continue to return the result calculated from the first set of variables it received. (New values would be given to the variables either as incoming data changed, or as the same expression was applied to successive rows of a table.) This has been fixed.

15234: Conditional expression function added to expression evaluator

In the Display Builder, the Evaluate Expression family of functions have been enhanced with a new built-in function, condExpr, which evaluates conditional expressions. The function takes three arguments, an expression and two values. It evaluates the expression and if it is true it returns the first of the two values, else it returns the second. The expression is true if it evaluates to "1", "1.0", or "true" (case independent). As an example, consider the expression condExpr(%x > %y, "greater", "less"). If the value given to variable x is greater than the value given to variable y, the function will return the string "greater", else it will return the string "less".

15236: Better error handling for expression with no data available

Previously, if the Evaluate Expression As Double or Evaluate Expression As String functions had an argument attached to data, the expression was expecting a numeric argument, and the data was not available from the data source, the function would would sometimes display the misleading message "Expression is invalid". The functions now distinguish between missing data and an actual invalid expression by attempting to evaluate the expression with numeric zero values substituted for the missing data, and should only display that message when the expression is in fact invalid.

15293: New "Buff Table Rows" function

A function named 'Buffer Table Rows' has been added. It takes a table as an argument, and on each update it appends all the rows from the input table to the result table, which it returns. Another argument specifies the maximum number of rows that should be kept in the result table. Rows are removed from the top of the result table, if necessary, to maintain that limit. The 'Buffer Table Rows' function can also be useful in the following situation: RTView does not update a function immediately when one of its arguments is set. Instead, the update is briefly deferred to allow time for the other arguments to be set also. This improves performance but can result in lost (overwritten) argument values if the arguments are updated asynchronously and rapidly (from a high speed event data source, for example). In most cases this is not important since only the last (most recent) argument value is required. But if a function F needs all argument values the Buffer Table Rows function can be used to store all the rows received from a table argument until function F is updated. So F would be attached to the result of a Buffer Table Rows function, which would in turn be attached to the data source that updates the table. Once F has been updated, he function data source will clear all rows in the buffer table kept by the Buffer Table Rows function. At most one function should be attached to the result of any given Buffer Table Rows function. As described above, the buffer will be cleared when the function that is attached to the Buffer Table Rows result is updated. So if multiple functions need to buffer the same input data, a Buffer Table Rows function should be created for each.

15301: Expressions no longer fail if one %var is a substring of another

In the Display Builder, when creating an Evaluate Expression As Double/String function, if the variable names are chosen such that one name is a substring of another, the function would not evaluate correctly. This has been fixed.

15309: Exception if Replacement Values argument badly formed fixed

Previously, a badly formed Replacement Values argument in a Replace Value function would cause an exception. This is no longer the case. To be well formed, the Replacement Values argument should be a string that contains pairs of values and replacement values separated by :'s. If any of the values or replacement values specified in Replacement Values contains a space or a colon, it must be enclosed in single quotes. For example if Replacement Values contains 'Windows 2000':win2k 'Windows NT':winnt and Value is Windows NT, winnt will be returned.

15329: Function loops created at runtime by parameter changes detected

The function data source has been improved to detect function loops created at runtime by changing substitutions that affect function arguments.

General

15310: Menu bar when EMS Manager run from cmd prompt removed

In previous releases, the TIBCO EMS Manager came up with a menu bar when started from the command line, but without a menu bar when started from the Windows start menu. This has been fixed so that the menu bars are not showing when the TIBCO EMS Manager is started from the command line.

15316: New JMX MBeans for RTView status and function statistics

A set of JMX Mbeans has been added to RTView to provide run-time information about RTView status. The MBean RTView:name=Manager provides the application name, along with other useful information. The MBean RTView:name=DataServerConnections provides a table containing one row for each named Data Server connection showing the status of that connection. The MBean RTView:name=FunctionStatistics contains one row for each defined function, showing the panel in which it is defined and detailed timing and usage statistics NOTE: If an RTView client application is connected to a Data Server, starting the application with -dsenable:jmx will provide a way to access the local MBeans in the client, by making a data attachment to these MBeans with the Data Server set to <none>.

GmsTabularData

15308: Fix for crash while serializing GmsTabularData

A problem has been fixed which sometimes caused the data server to throw an array bounds exception or null pointer exception while it was serializing a GmsTabularData object to send to a client.

Licensing

15274: Vista licensing update

PINs generated on Vista are now accurate.

Object Library

11693: Label palette enhanced

The label palette has been enhanced. The following objects have been replaced by general objects: obj_text03 obj_label09 obj_label09s obj_label12 Existing displays that use these objects will automatically be converted to use the corresponding general object instead. There may be a small shift in the location of the text in these objects when they are converted to the general objects. Object grids using these objects will also automatically be converted to use the corresponding general objects and may show a small shift in the object layout. The following objects have been enhanced: obj_label05 obj_label05s obj_label11 obj_label11s These objects have been enhanced to support several new properties, such as gradients, rounded corners, and drop shadows. They have also been enhanced to support objWidth and objHeight, which allows better scaling of these objects. The fieldWidth property has been converted to objWidth. Existing displays will automatically be converted to use the new property. The text position and bgEdgeWidth will adjust slightly on existing displays that use these objects. The labelWidth property on obj_label11 and obj_label11s must now be less than 75% of the objWidth. If it is larger, the label portion of the object will be drawn as 75% of the objWidth. The following new properties are available on these objects: valueHighAlarmEnabledFlag * obj_label05 only valueHighWarningEnabledFlag * obj_label05 only bgBorderFlag bgColor bgEdgeWidth bgGradientColor2 bgGradientMode bgRaisedFlag bgRoundness bgShadowFlag bgStyle valueTextAlignX valueTextPosY labelBgColor labelTextAlignX labelTextPosY labelBgGradientMode labelBgGradientColor2 The following new objects have been added to the label palette: obj_vulabel01 obj_vulabel02 These objects are meant to replace obj_label06 and obj_label14 which were deprecated. They do not replace the old labels in displays. The old labels are still available for existing displays, but are not on the palette. These objects support all of the properties listed above for obj_label05 and obj_labell11, except for valueHighAlarmEnabledFlag and vlaueHighWarningFlag. In addition, they support the vuMeterMinWidth property which allows you to specify the minimum width for the vumeter. By default, the vumeter is 1/3 of the width of the value area. If a value larger than 1/3 of the width of the value area is specified for vuMeterMinWidth, the vumeter will use that width instead. The vumeter will not be drawn larger and 2/3 the width of the value area. The valueTextAlignX property for these objects aligns the text in the space between the vumeter and the edge of the object. The following objects have been deprecated. They are still available for existing displays, but have been removed from the palette: obj_label08 obj_label06 obj_label14 obj_digital_2_med obj_digital_3_smll obj_pricebox obj_label01 obj_label02 obj_label03 obj_label04 obj_drumlabel01 obj_drumlabel02 Note that the object grid previously used obj_label01 if nothing was specified for the iconProperties string. Since that object has been deprecated, the object grid now uses obj_circ2d_ilvx_ra4 as its default object.

15191: visFlag property now respects 0.0 as dbl or string

In the Display Builder, if the visFlag property of an object is attached to a data source (e.g. a function) which supplies a double value of 0.0 or a string value of "0.0", the object remained visible. This has been corrected.

15221: General objects that support a label and a valueString added

Two new objects have been added to the general palette, obj_rect_ilvs and obj_circ2d_ilvs, that support a label and a value string. These objects behave just like obj_rect_ilv and obj_circ2d_ilv, except that they have valueString instead of value. The valueFormat and valueDivisor properties are not supported on this object as the valueString property takes a string.

15267: Add bgBorderColor to general objects, tables, graphs + composite

A new property bgBorderColor has been added to all of the objects on the Tables, Graphs, Labels and Composite tabs of the Object Palette. It has also been added to the m_basemodel background model and to the rectangular objects in the General tab of the Object Palette. The circular objects on the General tab already supported this feature with a property named bgEdgeColor which has been renamed to bgBorderColor. This property sets the color of the edge of the object. Objects in existing displays will have a dark grey (color 16) bgBorderColor.

Bar Charts

15333: New scrollbarStartAtMaxFlag property for starting knob position

The bar graph has a new property named scrollbarStartAtMaxFlag. This property can be used to control the initial position of the graph's scrollbar knob. If scrollbarStartAtMaxFlag is checked, the scrollbar knob will initially be positioned so that the bar corresponding to the last row in valueTable is visible. On a bar graph with vertical bars, this means that the knob will be in its rightmost position, while on a bar graph with horizontal bars the knob will be in its bottommost position. If scrollbarStartAtMaxFlag is unchecked (the default) the knob will be in its leftmost (topmost) position, so that the bar for the first row in valueTable is visible. Regardless of the value of the scrollbarStartAtMaxFlag property, if the scrollbar knob is dragged to the left or right (or top or bottom) edge, it will 'stick' in that position if the number of rows in valueTable changes, and accordingly show either the bar for the first or last row in valueTable.

Composite Object

15196: Button control in composite no longer needs to be pressed twice

In previous releases, if a control outside of a composite object had focus, it would take 2 mouse clicks to activate a control inside a composite. This has been fixed.

15210: Composite obj keeps properties if rtvName is a local variable.

In previous releases, if the rtvName property of a composite was attached to data, the standard composite properties would use their default values even if they had been set to other values. This has been fixed.

15224: List boxes do not execute action command

In release 5.0 and 5.1 the command for a list box contained in a composite object was not executed. This is fixed.

15241: Composite object enhanced with option to be non-opaque

The composite object has been enhanced with a new property, bgOpaqueFlag. This property allows you to set the both the background rectangle and the background model in the composite display to be opaque or transparent. When deselected, neither the composite background nor the model background will be drawn. The model background is only affected if the default background model is used. Otherwise, the bgOpaqueFlag will only affect the background rectangle. Double-buffering is disabled in the composite display when the bgOpaqueFlag is off, so some displays may flicker when updating.

Control Objects

11907: Calendar widgets added

A new date chooser control (obj_c1datechooser) has been added to the Controls tab of the Object Palette to allow users to specify dates and times and set these either in an action command or to a local variable. The date chooser is on the controls palette. You can either enter a date by typing into the text field, or you can click the calendar button to popup the calendar to select a date. Like the other controls, the date chooser is disabled in the main window of the Display Builder to enable editing. Similar to the text edit controls, the date chooser has a selectedValue field to specify the initial date value and a varToSet field to specify a local var to set. The local var gets set and the actionCommand gets executed when either a date is typed in, then the user presses enter or clicks out of the field, or if the user selects a date from the popup calendar. If a date is specified in the date field, it will be used to set the initial date (and time if specified) in the calendar. If no date is specified in the date field, the popup calendar will use the current date and time. The date chooser has a dateFormat field to specify the format to be used. If no dateFormat is specified, a locale dependant format is used. This format controls 2 things. First, it controls the format in which you must enter a date if you type it into the field. Second, it controls the format of the output to a local var or action command. You can see the dateFormat in the tooltip if you hover the mouse over the text field. The dateFormat should be specified using the format specifiers from the SimpleDateFormat class. The following format specifiers are not supported for the Display Server: G, w, W, D, F, E, k, K, S, z, Z In the java version, the text entry field validates the date string as you enter it. It is very strict about allowing only dates in the format specified. In the Display Server version, the parsing is more flexible, but not guaranteed unless the date entered is in the same format as the dateFormat. No validation is done in the text entry field in the Display Server. Backslashes (\) are not supported in dateFormats. Since the dateFormat controls both the input and the output of the date chooser, information not included in the dateFormat will be lost. For example, if the date format is MMMM dd, yyyy (ex January 01, 2000), and the timeEntryEnabledFlag is on, even if you enter a time, it will not be stored since it is not included in the dateFormat. If you specify a dateFormat including the time such as MM/dd/yyyy hh:mm, the seconds you enter will be lost and if you specified a date in the PM, it will be stored in the AM since that is the default and am/pm was not included in the dateFormat. The timeEntryEnabledFlag toggles the visibility of the Time field in the popup calendar. Times entered into this field must be in the following format: hh:mm:ss a. When the timeEntryEnabledFlag is on, an OK and Cancel button are added to the calendar, so you can select a date and enter a time before closing the popup. If the timeEntryEnabledFlag is off, the popup calendar closes when you select a date. The maximumDate and minimumDate properties control the selectable dates in the popup calendar. Dates before the minimumDate will be disabled and dates after the maximumDate will be disabled. It is recommended that you enter an initial date in the value range when using these properties so the user will not have to navigate to a valid date. The date chooser object is localized as follows: 1. The Time field, and OK and Cancel buttons are localized by SL. Currently, only English and Japanese are available. 2. In the Display Builder, Display Viewer and Display Viewer Applet, the month and day names will use the language settings on the client system. 3. In the Display Server, the month and day names can be localized by replacing the date.js file in the Display Servlet with a localized version. To do this, go to servlets\rtvdisplay in your RTView installation. Extract the appropriate date*.js file from datejs_loc.zip for your language. Rename this file to date.js in the rtvdisplay directory and rebuild the Display Servlet war file. The default date.js is a copy of date-en-US.js from the datejs_loc.zip file. The java version of the date chooser control uses JCalendar 1.3.2 which is distributed under Lesser GPL and can be downloaded from www.toedter.com/en/jcalendar. The Display Server version of the date chooser control uses the Datejs date library for parsing and formatting dates and times. The Datejs library subclasses the standard javascript Date object. If you embed a display with the date chooser control inside your javascript application, it may pickup the Datejs date class instead of the standard date class. The Datejs library is distributed under the MIT License and can be downloaded at http://www.datejs.com.

15034: Added executeOnKeystrokeFlag to text edit & text area controls

A property named executeOnKeystrokeFlag has been added to the text edit and text area controls. If checked, each keystroke that modifies the text in the control will set the control's varToSet variable and execute its actionCommand, if any, using the modified text string. This feature is supported in all deployments. In a thin client deployment, there may be a delays between the keystroke and the response, depending on the speed of the network and server.

15304: Password Control has been added to the Controls palette

A password field has been added to the Controls tab of the object palette. This object works just like a text field, except that instead of displaying the entered text, it displays asterisks (*). The properties on this object are the same as the properties on the Text Edit control.

Fx Bar Chart

15079: New barShape "3D Rectangle" added

A new bar shape has been added to the Fx Bar graph. Named 3D Rectangle and found under barShape on the Object Properties grid, this shapes depth can be set using the draw3dDepth setting under Layouts. Note that the Layouts draw3dFlag setting is ignored when using the 3D Rectangle bar shape.

15101: Fx Bar Animation added

Transition effects have now been added to the Fx Bar graph to animate the display of data as it both appears and disappears from the chart. Various settings have been added to help in the control of these animations. Where to find them: On the Object Properties grid under the "Transitions" heading on the Object Properties barEntranceDuration: The length of time in milliseconds that the transition animation takes to display incoming data. barExitDuration: The length of time in milliseconds that the transition animation takes to hide data prior to new data being displayed. barEntranceTrigger: Determines whether the animation will be displayed with each data update, or only when the chart is initially displayed. barExitTrigger: Determines whether the animation will be displayed with each data update, or only when the chart is initially displayed. barEntranceType: The type of animation in effect when data is being displayed: None, Interpolate, Zoom Series, Zoom Chart, Slide Left, Slide Right, Slide Up, Slide Down, Wipe Left, Wipe Right, Wipe Up, Wipe Down. barExitType: The type of animation in effect when data is being hidden: None, Zoom Series, Zoom Chart, Slide Left, Slide Right, Slide Up, Slide Down, Wipe Left, Wipe Right, Wipe Up, Wipe Down.

Fx Trend Chart

14890: Line style, mark color/style, and alarm properties support added

The Fx trend graph now supports the same alarm properties as supported in obj_trendgraph02. Also, the following trace properties have been added to the Fx trend graph: traceNLineStyle traceNMarkStyle traceNMarkColor markDefaultSize where N is a trace number. For each of the new properties, the property values and corresponding behavior is the same as in obj_trendgraph02, with the following additions: If an alarm mark color is set to 'Default', the marks will be drawn in the correpsonding alarm trace color. If an alarm trace color is set to 'Default', the trace color for the corresponding trace will be used.

14938: y-Axis values now at end points when yValueMin does not equal 0

Previously, if the yValueMin of the FX Trend Graph was any value other than 0, the numbers displayed on the y-axis would not begin at the lowest value (yValueMin) and end at the highest value (yValueMax). The axis range would be accurate, but the numbers printed along it were not at the end points. This has been fixed.

Pie Charts

14765: Flex Pie Chart Added

A new Fx Pie Graph object has been added. It supports much of the functionality of the standard Pie Graph and adds some additional functionality. Features Added: Transitions - various entrance and exit transition effects can be set. They are as follows: exitType offers various animation effects which alter how older data is removed from view. These include, "Zoom Series", "Zoom Chart", "Slide Left", "Slide Right", "Slide Up", "Slide Down", "Wipe Left", "Wipe Right", "Wipe Up", "Wipe Down". The default is "None". entranceType  same as above, but with the addition of the "Interpolate" effect. This property determines how new data is displayed on the chart. exitDuration - this sets the duration of the Exit animation in milliseconds. entranceType - this sets the duration of the Entrance animation in milliseconds. entranceTrigger -> (Once, On Update) Default Once - this sets whether the Entrance animation happens only on initial display or at every data update exitTrigger -> (Once, On Update) Default Once - this sets whether the Exit animation happens only when leaving the current data set being viewed (Once) or every time the current data set is updated (On Update) Any combination of the available effects can be set for each FxPie Graph. It is important to note that the duration values play a significant role in the overall effect of the transitions. The appropriate value ultimately depends upon the particular transition type(s) and the number of bars and series displayed. Take time to experiment to find the best results. Wedge Properties: The FxPie Graph adds additional wedge properties not available in the standard Pie Graph. They are: wedgeExplodeRadiusPercent - A number from 0 to 100, specifying the desired percentage of the total radius that the wedges of the pie series will appear exploded from the center. Wedge Data Labels: The FxPie Graph supports data labels that display information about each data point. Labels are different from ToolTips in that they are always visible and do not react to mouse movements. To add labels to your FxPie Graph, set the wedgeLabelPosition property on the series to a value other than none. To remove labels from your FxPie Graph, set the wedgeLabelPosition property to none. The default value is none. The other values, "callout", "inside", "insideWithCallout" and "outside" are described here: callout: Draws labels in two vertical stacks on either side of the pie. Shrinks the pie area if necessary to make room for the labels. Draws key lines from each label to the associated wedge. Shrinks labels as necessary to fit the space provided. inside: Draws labels inside the pie. Shrinks labels to ensure that they do not overlap each other. Any label that cannot fit as drawn using the wedgeLabelTextSize, is hidden from view. insideWithCallout: Draws labels inside the pie, but if labels are shrunk below a legible size, they are converted to callout labels. outside: Draws labels around the boundary of the pie. wedgeLabelTextColor - this property sets the text color for the wedgeLabels. The default is black. wedgeLabelTextFont - this property sets the font type for the wedgeLabels. The default is SansSerif wedgeLabelTextSize - this property sets the fonts size for the wedgeLabels. The default is 10. An additional feature of the FxPie Graph is that clicking on any wedge will explode that wedge. Clicking the wedge a second time will unexplode it. The above properties are specific to the Fx Pie Graph. The properties listed below are the full set of properties supported in this release. Where applicable, their behavior and default values are identical to those in the standard Pie Graph. Any exceptions, including the newer properties described above, are noted. Background: ** bg3dFlag - same as FxBar and FxTrend bgColor ** bgGradientFlag - same as FxBar and FxTrend Data: rowSeriesFlag valueTable DataFormat: labelColumnFormat valueFormat Data Label: columnDisplayNames labelColumnName rowLabelVisFlag rowNameVisFlag Historian: HistoryTableName historyTableRowNameFlag Interaction: command commandCloseWindowOnSuccess commandConfirm commandConfirmText drillDownColumnsSubs drillDownSelectMode drillDownTarget mouseOverFlag Label: label labelTextAlignX labelTextColor labelTextFont ** labelTextSize - same as FxBar and FxTrend Legend: legendBgColor ** legendBgGradientFlag - same as FxBar and FxTrend legendPercentVisFlag ** legendPosition - same as FxBar and FxTrend ** legendTextColor - same as FxBar and FxTrend ** legendTextFont - same as FxBar and FxTrend ** legendTextSize - same as FxBar and FxTrend legendValueVisFlag legendVisFlag legendWidthPercent Object: objHeight objName objWidth objX objY visFlag Transitions: *entranceDuration - NEW *entranceTrigger - NEW *entranceType - NEW *exitDuration - NEW *exitTrigger - NEW *exitType - NEW Wedge: * wedgeExplodeRadiusPercent - NEW * wedgeLabelPosition - NEW * wedgeLabelTextColor - NEW * wedgeLabelTextFont - NEW * wedgeLabelTextSize - NEW wedgeProperties

Stock Chart

15229: Double.NaN no longer problematic in overlay traces

In the stock chart object, overlay traces now handle NaN data values correctly. In prior releases, if the initial data value(s) applied to an overlay trace were NaN, the trace and its y-axis were sometimes drawn incorrectly.

Trend Charts

15269: Trendgraph no longer plots spurious data if alarm props change

If a trendgraph's alarm properties (e.g. valueHighAlarm) are attached to data, this no longer causes the trendgraph to replot old, invalid data points, as was occasionally the case in prior releases.

Oracle Coherence Monitor

15257: Provide option to show all caches from all services on one page

It is now possible in the OCM to select all Services and see the activity and capacity for all caches across all services on a single page. Simply select "All Services" wherever the Service: selector is available to see all the caches on all services.

15258: Improve Cache Service page to show more useful information

The Cache Services display has been enhanced to provide more useful information.

15259: Added ability to shorten long cache names

Long cache names can now be shortened for display in the RTView OC Monitor. By default, cache names longer than 28 chars will show only the first 14 characters followed by a ".." and the last 14 characters. This format can be controlled by a substitution variable $cacheNameFormat contained in the OPTIONS.ini file. By default it is set to 14*14. Users may change this to N*M where N represents the number of initial characters to display, and M represents the number of ending characters to display. This format substitution may also be set to override what is in the OPTIONS.ini by using the command line option: -sub:$cacheNameFormat:N*M

15260: Option to use process name as the location name

A new command line option -processnames has been added to indicate that the Process Name is to be used as the Location Name for all nodes.

15261: Boolean updating of Enabled properly supported in Alert Admin

The Alert Administration page now supports all databases without change to the rtv files. Previously there was an issue working with databases that do not support a boolean type, but this has been corrected.

15287: Excessive data no longer sent by Data Server to OCM

When the OCM is used in conjunction with the Data Server, excessive amounts of data were being transferred to the OCM and it would continually increase. This problem has been corrected.

15297: Log4J messages available from each node

A feature has been added to the Oracle Coherence Monitor to permit users to see the Log4J messages coming from the Coherence nodes. If a Coherence node is outputting log4j messages, and its "Application" name is assigned to be the same as its Location (member.machine.rack.site), then the messages will appear in a drilldown window that can be selected from the Node Summary page. Note that the LOG4JOPTIONS.ini file must be configured to make a connection to the appropriate Log4J SocketHubAppender.

Security

15181: Security enhanced to provide server side login

The following method has been added to the GmsCustomUserManager class, to allow the custom user manager to request validation from the default data server:

	public int validateLoginOnDefaultDataServer(java.lang.String userName,
	                                            java.lang.String password,
	                                            java.util.Vector<java.lang.String> rolesReturn)
Call this method to validate login credentials on the default data server.

Parameters:
userName - the name of the user to validate
password - the password to validate
Returns:
zero if valid, -1 if login fails, -2 if the default data server is undefined or unavailable.

15357: Digital Signature has been updated to be good until 12/2011

The digital signature of the jars in lib\signed_jars.zip has been updated. It now expires in December of 2011.

Substitution

15243: Drill down behavior of tables and graphs enhanced.

The drill down behavior of tables and graphs has been enhanced. Previously, if a table or graph had the drillDownSelectMode set to Anywhere, drilling down on an element would set the drill down subs, but the subs would not be cleared when drilling down on a non-element part of the table or graph. The new behavior clears the subs when the drill down occurs on a non-element part of the table or graph. Additionally, when the table has the multiSelectFlag turned on, if the user deselects all of the rows in the table, the drill down substitutions are cleared.

Viewer - Java Web Start

15219: File handling now resolves relative paths against server

In previous releases, the Java Web Start deploiyment resolved relative paths against the client system. This has been changed so that relative file paths are resolved against the JWS codebase on the server. Files with absolute paths are still resolved against the client machine. This change applies to all files read by RTView including .rtv files, include files, configuration files and images.

Version 5.1c1 Release Notes

15056: Composite object data synchronization problem fixed

In the prior release, if the "substitutions" property on a composite object was changed by a drilldown on the display containing the composite, in some situations the objects in the composite would continue to use data attachments that corresponded to the previous value of the substitutions property. This is fixed.

Alerts

15021: Crash if ; delimited list has been fixed

In previous releases, RTView would crash if a ; delimited list of threshold values was entered into any threshold beside valueHighAlert. This has been fixed.

Commands

14878: JMX command in multiple commands no longer throws exception

In the Display Builder, if multiple commands were defined for an object, and the command set included a JMX command, an IllegalComponentState exception would be printed to the console when the Define Command dialog was closed. This has been fixed.

15116: <None> data server option now works for commands

In the prior release, if a command was configured with Data Server = , the command was directed to the default data server, rather than being executed locally. This is fixed.

Customization

10558: New Custom Data Adapter API

The Custom Data Adapter API has been released for use in developing data adapters to external data sources. For more details, please refer to the Customization section of the RTView User Guide.

12256: Customized color palette now supported in Display Builder

RTView has been enhanced to allow users to define custom colors to use in their displays. To define a custom color, go to the Custom Colors tab in the Application Options dialog. Click Add to add a new color or Delete to delete a color. To modify a color, edit the corresponding row in the table. Color index values must be a number greater than or equal to 5000. Mouseover the color in the custom color table to see the rgb value for that color. Custom colors are saved to COLORS.ini when you click Save in the Application Options dialog. This COLORS.ini file must be deployed with your RTView application. A Custom Color tab has been added to the standard RTView color chooser so that you can select a custom color in the same way you would select a standard color. Note that RTView stores color indexes for the object properties, not rgb values. Therefore, if you have an object in a display that uses a custom color and you delete that color, or change the index of that color, the object property that uses the original color index will display white. Limitations =========== 1. Some objects cache their colors and therefore do not update when a custom color definition changes. Some examples: bar graph legend, pie wedges and legend, some control object properties. For these objects, you will either have to restart RTView or reload the display to see the color change. 2. Flex object store rgb values for all colors (even if you selected a color index). This causes 2 problems: 1. If you assign a custom color to a flex object, then change the custom color definition, the flex object will not update (since it stored the rgb value of the custom color instead of the index). The only way to update it is to manually pick the new color in the builder. 2. If you have a custom color with the same rgb value as a standard color, and you apply the custom color to the flex object, if you close and re-open the color picker on the flex object, the standard color will be selected, not the custom color. This is again because the flex object stores the rgb value. The color chooser for the flex objects uses the rgb value to look up the index, so it will find the one in the standard color list first. 3. The custom color table is static. Therefore, multiple applets running in the same VM must share a single custom color table.

Data Historian

10387: Record Retention options now apply to user defined tables

The Record Retention options now apply to user-specified history tables, named using the historyTableName property. These history tables can now be purged on startup of the historian, and can be limited to the specified retention time period. If a user has created the timestamp column(s) manually, they must follow the same naming convention as the history tables created automatically, i.e. they must be named TIME_STAMP and/or TIME_STAMP_LS depending on the Timestamp Type.

10455: Auto-creation of user-defined history tables and columns

The RTView Historian will now automatically create the necessary history tables in the database if they have not been created by the user. An SQL data type appropriate for the specified database is selected for each of the RTView data types. Using the -verbose option, the specific "create table" SQL command used to create the table can be viewed.

13814: Retention options no longer ignored when Data Caching is enabled

Retention options are no longer ignored when Data Caching is enabled.

13827: Database name can now be set for for ODBC connections

The Database name for the Historian can now be set in the GUI interface to the Historian. If the name is changed and the configuration saved, the name will be remembered when the Historian is restarted. The command line argument -dbname:NAME can also be used to set the name of the database. NOTE: This name is only used for ODBC references.

14393: Improved DATE column type support

The RTView Historian now properly handles columns of type DATE, writing the data to the database using a format that is appropriate for the specific database being used. A DATE column is created in the database in an appropriate type, and the date itself is inserted using the format appropriate for each database.

15029: Historian will now attempt to reconnect to database

The Historian will now attempt to reconnect to the database if the connection is broken.

15030: Numeric data no longer incorrectly inserted due to quotes

Previously, the insert statement used by the RTView Historian to put table rows into the database would generate an error for some databases, due to incorrect use of apostrophe around numeric data types. This problem has been corrected. The insert statement should be correct for all RTView data types across all supported SQL databases.

15031: Historian support added for KDB time series database

The KDB time series database is now supported in the historian. Use the -kdbformat command line argument to output insert statements in the KDB format. Automatic creation of tables is NOT supported, nor is purging on startup. The tables must be created ahead of time and purged by the user.

15046: Option to store Historian-supplied timestamp as true date type

In previous versions, the historian would write two timestamp columns with each record, stored as strings: TIMESTAMP and TIMESTAMP_LS. Now, the -timestamp: command line option is provided to offer more control over how the timestamp is written to the database. The options are: -timestamp:none - do not store timestamp -timestamp:sql - add single SQL timestamp -timestamp:str - add 2 string form, for compatibility When the -timestamp:sql form is used, only a single TIME_STAMP column is written using a standard SQL TIMESTAMP data type. The Timestamp Type can also be configured in the Historian GUI interface and saved in the HISTORY.ini configuration file so it is not needed on the command line.

15051: Improved BOOLEAN column support

The RTView Historian now properly handles the BOOLEAN data type properly across all supported databases.

15052: New option to rebuild history tables on startup

The -rebuildtables option is now available to force all of the historian-specified tables to rebuild, even if they already exist in the database. The HISTORY and HISTORY_S tables are rebuilt on startup of the historian. User-specified history tables are rebuilt on- demand when data rows are first received for each table. Limitation: The -rebuildtables option does not support the historyTableRowNameFlag. If you have enabled this property in your configuration file, you will need to create the table manually.

15057: New option to include column names in the insert statement

The -insertcolumnnames command line option is now available to force the Historian to include column names in the database insert statements for user-specified history tables. This is useful when the Historian is adding data to existing tables and the column order is not an exact match or the insert statement contains a subset of the existing table columns. Note: this option does not apply to the HISTORY and HISTORY_S tables, only to user-specified tables.

15067: Historian retention mechanism refined

Previously, the Historian would check for records that exceeded the retention period at the half-way point of the retention period, ie. every 12 hours if the retention period was 24 hours. The maximum duration between checks has been set to be 60 minutes. Additionally, a new command line argument has been added to indicate how frequently you would like the Historian to check for old records that need to be removed. -retentionMax:nn where nn is in minutes.

15117: Better handling of spaces in column names

If the name of a column in a table being saved to the database contains a space, the column name is now wrapped in quotes.

Data Server

14338: High Availability added to Display Server and Data Server

1. Background To increase server availability in deployments using the Data Server or Display Server, RTView client applications can now specify a primary and a backup server. If the primary server is unavailable, the client will failover to the backup server. In the Display Builder and Display Viewer, a primary and a backup server can be specified for the default Data Server and also for each named Data Server. The primary server and backup server are each specified as a connection string, using either a hostname and port, or a URL that corresponds to an instance of the rtvdata servlet. These are specified in the Data Server tab of the Options dialog in the Builder, or on the command line when launching the Builder or Viewer. In the rtvdata and rtvdisplay servlets, the primary and backup servers are specified in the servlet's properties file. At startup, the client will connect to the primary server if available, otherwise it will connect to the backup server. If neither is available, the client will periodically retry connecting to both. If the client connects to either the primary or the backup, and later the connection is lost, it will then try to connect to the other server. If a client connects to a backup server and later the primary server becomes available, the client will not switch to the primary unless the connection to the backup server is lost. When a set of Data Servers are used as a primary and backup(s), all the servers should use the same RTView configuration files (*OPTIONS.ini) and should have access to the same external data sources, so that displays in the client will appear the same regardless of which server is connected. 2. Display Builder and Display Viewer usage: For example, if the primary default Data Server is run on a host named Kiwi and the backup is run on a host named Dodo, both using the default Data Server port (3278), then on the Data Server tab of the Options dialog, the following would be specified: Data Server Mode: Read Data from Server Primary Server: Kiwi:3278 Backup Server: Dodo:3278 Or, if the client is using the rtvdata servlet to connect to the Data Server via http, the following URLs might be specified: Primary Server: http://Kiwi:8080/rtvdata Backup Server: http://Dodo:8080/rtvdata Each URL corresponds to an instance of the rtvdata servlet, which is in turn configured to connect to an instance of the Data Server. The primary & backup servers can also be specified on the command line. For the default dataserver, the syntax is: -dataserver:remote:<primary>,<backup1>,<backup2>... For example: run_builder -dataserver:remote:XBC:3278,Dodo:3278 or run_builder -dataserver:remote:http://Kiwi:8080/rtvdata,http://Dodo:8080/rtvdata_backup For a Named Data Server, the syntax is: -dataserver:name=<name>;connect=<primary>,<backup1>,<backup2>... For example: run_builder -dataserver:name=Baltimore;connect=http://balt1/rtvdata,http://balt2/rtvdata 3. Servlet usage: The rtvdata servlet can be configured to have a primary and a backup Data Server, by editing its servlet.properties file, then rebuilding and redeploying the servlet. For example, these entries correspond to the primary and backup servers in the previous example: # primary data server host & port ServiceHost=Kiwi ServicePort=3278 # backup data server host & port ServiceBackup=Dodo:3278 Above, note that the primary server and port are specified in 2 separate properties, as in prior releases, while the backup server is specified by a single property. If necessary, multiple backup servers can be specified, separated by commaers, for example: ServiceBackup=Dodo:3278,Stork:3553 The rtvdisplay servlet, used in a Display Server deployment, also allows a primary and a backup server to be specified by editing the rtvdisplay.properties file, then rebuilding and redeploying the servlet. For example: # primary display server host & port DisplayServerHost=Kiwi DisplayServerPort=3279 # backup display server & port DisplayServerBackup=Dodo:5678 4. Standby mode: To avoid the overhead of maintaining the alert and cache data sources in a backup server, the server can be started in "warm standby mode" by specifying the -standby:warm option on the command line. In this case, the server delats the following actions until the first client connects: 1) loading global definition files. 2) loading alert definition files. 3) loading cache definition files. 4) preloading display files specified on command line or ini file. Note that, although this reduces overhead, the alert and cache data sources will not start collecting data until the first client connects, so they may be "empty" at that time. Limitation: The primary and backup servers do not synchronize their internal states as they run. So even if the servers use the same configuration files at startup, after a failover occurs a client display may change because of differences between the cache data source and alert data source states in the servers, such as: - alerts that were acknowledged on one server would still be unacknowledged on the other - if alert definition files were loaded or unloaded on one server but not others, the alert configuration would differ - backup server was started in standby mode, so tables in cache and alert data source are empty when first client connects

15126: Get Data Server Connection Status function added

A function named Get Data Server Connection Status has been added. This function returns a table with status information about the connections from the Display Builder/Viewer to the default Data Server and any Named Data Servers. The table contains one row for each connection, with the following columns: Name. Contains either "__default" for the default Data Server, or the name of a Named Data Server. Connected. Contains a boolean value: true if the server connection is operational, otherwise false. Status. Contains one of the following strings: 'OK' if connection is operational, 'no connection' if there is no connection to the server, or 'no service' if there is an http connection to the rtvdata servlet but the servlet has no connection to its Data Server. ConnectionString. Contains either the URL for an http connection to the rtvdata servlet, or a hostname:port for a direct socket connection to a Data Server. ReceiveCount. The number of data transmissions (pushes) received from the server. ReceiveTime. The time of the most recent data transmission from the server.

Data Sources

Cache Data Source

14913: Cache no longer empty on startup for asynchronous data

In previous versions, objects attached to cache data could be empty on start up if the cache was listening to an update-once data attachment that had not yet returned data. This has been fixed.

SQL Data Source

15028: SQL Data Attach Dialog now retains size and position

The SQL attach data dialog now remembers its size throughout a Display Builder session if resized.

15064: Added option to interpret SMALLINT type as BOOLEAN

The -smallintbooleans option has been added to the SQL Data Adapter. This option forces RTView to interpret the SQL SMALLINT data type as a BOOLEAN, so that RTView tables displaying the data show a checkbox for columns of this type.

15081: Improved logic for detection of lost connection

The logic for detection of lost connections in SQL Ds has been improved.

StreamBase Data Source

14945: Support added for high availability Streambase configurations

The RTView Data Adapter for StreamBase has been enhanced to support High-Availability StreamBase applications as follows: (1) Support for URI lists When defining a StreamBase connection in the Application Options dialog you may now specify a list of StreamBase URIs. This allows your RTView application to connect to a StreamBase application running on multiple servers.The URIs should be entered in the text area one per line. (2) Support for custom Dequeue Result Interceptors A Dequeue Result Interceptor is a Java class whose processResult() method is called by the StreamBase application in the course of dequeuing each tuple. In this method you may make decisions about the dequeue process based for example on the status of the servers used by your application. For example, in an application where two servers are both dequeueing tuples but only one is designated the "leader", you may choose to suppress the tuples from the "non-leader" server. You specify a Dequeue Result Interceptor for a given connection by supplying the name of a Java class which will be instantiated by the StreamBase Data Adapter. The class must be found on the RTV_USERPATH. For more information on StreamBase High-Availability features, see http://streambase.com/developers/docs/latest/admin/highavail.html.

TIBCO Hawk Data Source

14947: BusinessWorks Displays in the Hawk Monitor

The hawkmonitor demo has been enhanced to include displays that allow you to monitor your TIBCO BusinessWorks applications.

TIBCO Rendezvous Data Source

15124: Statistics data now output as type Long

The data type for all metric columns stored in tables generated from rvtrace are now LONG instead of INTEGER

XML Data Source

15140: <none> removed from Data Server options for xml attachments

The xml data adapter does not support the DataServer=<none> option, since it is overridden by the xmlredirect option. Until this problem is resolved, the <none> item has been removed from the Data Server dropdown list in the XML Attach-to-Data dialog.

Display Server

15060: Display Server status information now available

The thin client now supports a status window that shows the name of the current RTView display, the time that the display was last refreshed, the URL and connection status for the rtvdisplay servlet, and the hostname and port used by the servlet to connect to the Display Server. This status window is opened by selecting a new item labeled 'Status' on the thin client's popup (context) menu. Also, error handling has been improved in the thin client. In prior releases, an error message was shown in the display page if the servlet could not connect to the Display Server, but no error message appeared if the client could not connect to the web server, the app server, or the rtvdisplay servlet. As of this release, an appropriate error message will be displayed for each of those conditions too.

15143: Horizontal grid lines fixed for Firefox 3.0

In Firefox 3.0, the thin client did not draw horizontal grid lines in the table object. This is fixed.

15144: Sliders and scrollbars fixed for Firefox 3.0

In Firefox 3.0, the scale (slider) control and scrollbars on graph objects did not work in the thin client. These problems are fixed.

15145: Table cell contents no longer overflow in Firefox 3.0

In Firefox 3.0, the thin client did not clip text properly in a table cell, allowing the text to spill over into the adjacent column. This is fixed.

15193: web.xml updated for single-signon for Tomcat compatability

The file servlets/rtvdisplayweb.xml.auth_example has been updated for compatibility with Tomcat 5.5.15 or newer. This file is an example of how web.xml should be modified to support servlet authentication. The previous version of the file used * as a wildcard in the <role-name> element but that is no longer supported by Tomcat.

Functions

14688: Replace Value enhanced to return a user-specified default value

The Replace Value function has been enhanced to accept an additional argument, the Default Value. If there is no match found in the Replacement Values, the Default Value will be returned, unless the Return Value If No Match is set to 1, in which case the original Value will be returned.

14766: New Expression Evaluator Functions

The following functions have been added to RTView. Evaluate Expression As Double Evaluate Expression As String Evaluate Expression By Row The Evaluate Expression As Double function substitutes the given arguments into the given expression and evaluates it, returning the result as a double. The Evaluate Expression As String function substitutes the given arguments into the given expression and evaluates it, returning the result as a string. (Note that Boolean true or false values will be returned as 1.0 and 0.0 respectively.) The expression is written using variables, whose names must be specified in the expression py prefixing them with "%", and may use standard arithmetic and logical operators as well as a variety of mathematical and string functions. It may also include numeric and string constants (string constants must be enclosed in double-quotes (")). An example of such an expression is "%var1 + %var2". When the expression is modified and the text field activated (by pressing Enter in the field or navigating to another field) the dialog will display a text field for each variable into which values may be entered. Values whose form is numeric are substituted into the expression as numbers; otherwise they are substituted into the expression as strings. If a value whose form is numeric needs to be treated as a string, perhaps to serve as an argument to a string function, surround the variable in the expression with double- quotes, and its value will always be used as a string. An example of such an expression is "length("%var1") + %var2". The Evaluate Expression By Row function evaluates the given expression for all rows of the given table, using values from the columns specified, and returns the results in a new table column. The expression is written using variables, whose names must be specified in the expression py prefixing them with "%", and may use standard arithmetic and logical operators as well as a variety of mathematical and string functions. It may also include numeric and string constants (string constants must be enclosed in double quotes ("). An example of such an expression is "%col1 + %col2". When the expression is modified and the text field activated (by pressing Enter in the field or navigating to another field) the dialog will display a text field for each variable. Entries are taken as names of columns in the given table from which values will be substituted for the corresponding variables in the expression. The types of the values are taken from the types of the columns. Numeric and Boolean values are converted to double. Date columns are not supported. If a value whose column is numeric needs to be treated as a string, perhaps to serve as an argument to a string function, surround the variable in the expression with double- quotes, and its value will always be used as a string. An example of such an expression is "length("%col1") + %col2". The Result Column Name argument specifies a column that will be added to the table. The Result Column Type argument specifies the type of that column, and may be either "double" ("d") or "string" ("s").

14906: Rename Column Function added

A new function Rename Columns has been added that allows the user to rename the columns in a table. The user can rename a single column or a list of columns.

15087: Edit Function Dialog now remembers size and position

In the Display Builder, the Edit Function dialog now remembers its size and position after the first time it is opened in a given invocation of the Display Builder. The first time it is opened it will have a default size and position as previously.

General

15137: NPE in stockchart when cursorFlag on and trace visFlag off fixed

In prior releases, an exception was thrown by the stock chart if the cursorFlag was on, the visFlag for the priceTrace was off, and the mouse was moved over the chart. This is fixed.

GmsTabularData

15120: Row filter with greater than 256 entries supported

In previous releases an array bounds exception was thrown if a data attachment had a row filter with more than 256 entries. This is fixed.

Local Variables

14658: Selection behavior in Variables dialog improved

In previous versions, it was difficult to select the previously edited item in the Variables dialog. This problem has been fixed.

14665: User can no longer deselect Use as Sub inadvertently

In previous releases, the Use As Substitution checkbox in the Variables dialog would not work correctly if that was the first field selected after a new variable name was entered. This has been fixed.

Localization

15085: Double Text Entry field supports locale-specific separators

The Double Text Entry field now displays and supports entry of locale specific decimal separators in the Display Viewer. The Display Server supports the display of locale specific decimal separators, but not the entry of them.

Object Library

14773: Generic Flex object supported

A "Custom Fx Object" has been added to the Fx Graphs palette in the Display Builder. This allows the user to specify the name of a Flash SWF file to be displayed by the object. The SWF can be a compiled Flex application. The Flex application can be coded to expose properties to RTView, using the Flex library package named com.sl.gmsext, which is now included with RTView. These properties will appear in the Display Builder's property sheet, and can be assigned constant values or attached to data sources. See the example for more information.

15005: Some objects enhanced to support rounded corners and shadows

The objects on the General, Graphs, Tables and Composite tabs of the palette have been enhanced to support rounded corners and shadows (the circles on the General tab were only enhanced to support shadows). The bg3dFlag property has been renamed on these objects to bgStyle. The bgStyle property supports 3 options: 1. Rectangle - Use a flat rectangle for the background. This is the same as the old behavior when the bg3dFlag was off. 2. Rectangle - Use a 3D rectangle for the background. This is the same as the old behavior when the bg3DFlag was on. If this option is selected, use the bgEdgeWidth to set the 3D depth. 3. Round Rectangle - Use a flat rounded rectangle for the background. When this option is selected, use the new bgRoundness property to set the arcLength of the rounded corners. NOTE: If the bgRoundness property is set to a value greater than half of the objWidth or objHeight property, half of the smaller value of objWidth and objHeight will be used instead. For example, if the objWidth is 100 and the objHeight is 50, if you enter a value greater than 25 for the bgRoundness, 25 will be used instead (half the value of objHeight).

15007: Some objects enhanced to support tab and title labels

All of the objects on the Graphs, Tables and Composite tabs of the palette and the rectangular objects on the General tab have been enhanced to support tab and title labels. The objects on the General tab already supported a labelTextPosY property, so 2 new options, Tab Top and Title Top have been added to the list of options for this property: 1. Title Top - The label is positioned on the top line of the background rectangle. 2. Tab Top - The label is drawn in a tab above the top of the background rectangle. The height of the tab is dependent on the height of the text. The width of the tab is dependent on the length of the text, but a minimum width can be specified in the the new labelMinTabWidth property. On General objects, the labelTextPosX Outside Right and Outside Left options are not supported if the labelTextPosY is Title Top or Tab Top. The objects on the Tables, Graphs and Composite tabs did not previously support a Y position for the labels. A new property named labelTextAlignY has been added to these objects with the following properties in addition to the Title Top and Tab Top described above: 1. Outside Top - the label is positioned well above the background rectangle. 2. Top - The label is positioned just above the background rectangle. 3. Inside Top - The label is positioned inside the top of the background rectangle. This is consistent with the previous position of the label. The Tables, Graphs and Composite objects were also enhanced with a bgBorderFlag property. If selected, a border is drawn around the background rectangle, otherwise the border is not drawn.

15069: Gradient fill supports direction

The objects on the General, Graphs, Tables and Composite tabs of the palette as well as the display background have been enhanced to support gradient direction. The gradient direction has been applied to the background (bgGradientMode) of these objects. For the object grid, the gradient direction has also been applied to the grid background (fgGradientMode). On the graph objects, the gradient direction has also been applied to the legend background (legendBgGradientMode) and the plot area background (grid/plot/traceBgGradientMode). The following properties on these objects have been renamed to support the gradient directions: bgGradientFlag -> bgGradientMode fgGradientFlag -> fgGradientMode legendBgGradientFlag -> legendBgGradientMode plotBgGradientFlag -> plotBgGradientMode traceBgGradientFlag -> traceBgGradientMode gridBgGradientFlag -> gridBgGradientMode The *GradientMode properties supports the following options: 1. None - no gradient. 2. Diagonal Edge - The gradient is drawn at a 45 degree angle from the top left to the bottom right corner of the object. This is the same as the gradient previously used if the bgGradientFlag was selected. 3. Diagonal Center - The gradient is drawn at a 45 degree angle from the center to the top left and the bottom right corners of the object. 4. Horizontal Edge - The gradient is drawn horizontally from the top to the bottom of the object. 5. Horizontal Top - The gradient is drawn horizontally from the center to the top and bottom of the object. 6. Vertical Edge - The gradient is drawn vertically from the left to the right of the object. 7. Vertical Center - The gradient is drawn vertically from the center to the left and right of the object. Additionally, the objects on the Graphs, Tables and Composite tabs of the palette have been enhanced to support the bgRaisedFlag. This property reverses the direction of the gradient and of the 3D edge if bgStyle is 3D Rectangle.

15070: Gradient fill supports second color

The objects on the General, Graphs, Tables and Composite tabs of the palette as well as the display background have been enhanced to support a second gradient color. Previously, the gradient would use the bgColor and white. The new bgGradientColor2 property allows you to set a color other than white for the 2nd color in the gradient applied to the object background. The object grid also support fgGradientColor2 which applies the 2nd gradient color to the grid area. The graph objects also support legendBgGradientColor2 which applies the 2nd gradient color to the legend background and grid/plot/traceBgGradientColor2 which applies the 2nd gradient color to the plot area.

15074: Some initial object defaults changed

The initial values of colors and fonts have been modified for some objects to make them more consistent with the other objects.

Control Objects

11620: Commands can now contain string '$value'

A control object can now use '$value' in its command string. In prior releases, it was necessary to surround the string with backslashes, i.e. /'$value/'

12255: Multi-line support added to Button and Radio control objects

The buttons and radio button groups have been enhanced to support multi- line labels. Use \n to specify a new line in your label.

14899: Delay removed for setting valueToSetProperty on button control

If a button control's valueToSetProperty is attached to data, it will now be updated immediately when data is applied to the attachment. In prior releases, the property was not updated until the next repaint of the display.

15075: Alignment property added for text input controls

The text entry controls have been enhanced to support a new valueTextAlignX property. Select Left, Center or Right to set the text alignment of the field. This alignment is only applied if the length of the text is less than the length of the text entry field.

15107: Thin client support for multi-line in radio and push buttons

The thin client now supports multiline labels in push buttons and radio buttons. Limitation: In a radio button group, the labels are left aligned horizontally, and top aligned vertically. This differs from the Viewer/Builder where the labels are center aligned in both directions.

15108: Thin client support for valueTextAlignX property on edit ctrls

The valueTextAlignX property on edit controls is supported in the thin client. Limitation: Runtime changes to valueTextAlignX are ignored by the thin client.

Object Grid

15039: Boolean table var passed to icon property shows incorrect value

The Object Grid previously passed the value of a boolean column incorrectly to the property on the icon in the grid. This problem has been corrected.

Stock Chart

15136: New option to show all data from all traces on stockchart

The stock chart designates the first trace with data as the primary trace. Typically, this is the priceTrace. In all prior releases, if the timeRangeBegin/End properties had values <= 0, then the chart would only plot data whose timestamps are >= the oldest timestamp or <= the newest timestamp from the primary trace's data. That is, data points for all other traces outside of the time range of the primary trace's data were discarded, by design. But in some applications, the data for all traces should be plotted, even if it is outside of the primary trace's time range. The following behavior has been added in this release: If timeRangeBegin = -1, don't discard datapoints from traces whose timestamps are older than the oldest timestamp of the primary trace. If timeRangeEnd = -1, don't discard datapoints from traces whose timestamps are newer than the newest timestamp of the primary trace. The old behavior is maintained as follows: If timeRangeBegin = 0 or blank (the default) discard datapoints from traces whose timestamps are older than the oldest timestamp of the primary trace. If timeRangeEnd = 0 or blank (the default) discard datapoints from traces whose timestamps are newer than the newest timestamp of the primary trace. Limitation: Regardless of the timeRangeBegin/End settings, if the cursorFlag property is checked, the time shown in the chart legend for the vertical cursor's position will correspond to the nearest data point of the first visible trace on the chart, even though a data point from another trace may be nearer to the cursor.

Tables

15020: filterProperties crashes for date column comparison

Previously, attempting to use a column with a date type as the value for a condition in a filter (via the filterProperties object property) could cause a class cast exception. This has been fixed.

Trend Charts

15037: Trace range corrected for invisible first trace w/ autoscale

In prior releases, if a trendgraph had the following qualities: - yAxisAutoScaleMode ON - yAxisMultiRangeMode OFF - trace1 had no data points or if trace1VisFlag OFF and yAxisAutoScaleVisTracesOnlyFlag ON then the y axis range would be 0 to 100 irregardless of the values. This has been fixed.

Oracle Coherence Monitor

15061: Displays and Historian updated to use new SQL timestamp mode

The default OCM displays and configuration files have been enhanced to take advantage of the new Historian timestamp mode that stores timestamps as SQL TIMESTAMPs, rather than as VARCHAR. This permits the creation of database scripts to manipulate or purge the historical data using the TIME_STAMP column.

15062: HISTORY.ini and ts_alertdefs.rtv in ocmdemo for customization

The demos/ocmdemo directory now contains a default Historian configuration file (HISTORY.ini). It is configured to use the built-in HSQLDB database. This directory also contains a default Alerts configuration display (ts_alertdefs.rtv). The default action on any alert is to issue a beep. This can be changed by editing the ts_alertdefs file using the RTView Builder.

15063: Sample RTV_JAVAOPTS and RTV_USERPATH added to myocm_setup

The myocm_setup scripts now contain commented-out sample settings of RTV_USERPATH and RTV_JAVAOPTS for users to modify as needed.

Viewer

15071: Included file now found in jar if display loaded via File->Open

In prior releases, the Display Builder/Viewer could load an included file from a jar file only if the display that included the file was also contained in the jar file or was specified on the command-line. If the display was loaded using the File/Open dialog, the included file could not be loaded from a jar. This is fixed.

Viewer - Java Web Start

15084: Include files now always found in Web Start deployments

In previous versions, include files were sometimes not found in Java Web Start deployments. This has been fixed.

Version 5.0c1 Release Notes

Alerts

14790: Error message for adding alert twice should include alert name

The error message for adding the same alert definition file twice has been enhanced to include the file name. The error messages for duplicate alerts and alerts with no names have been localized.

14792: Per-row enabling mechanism added added to tabular alert

The limits and discrete alerts now support a new property, rowEnabledTable, in the interaction category. This property controls the enabled state per row in the valueTable, so you can enable/ disable each index in a tabular alert. If enabledFlag on the object is disabled, each row index is disabled regardless of the rowEnabledTable vlaue. The Alert Variables Table shows the enabled state of each alert object (ie the enabledFlag), but the table variable created for each tabular alert will show the row enabled flag (unless the enabledFlag is disabled, then all rows will show disabled). The alert state for disabled indexes is -1. The rowEnabledTable property is only applied if the useTabularFlag is on. NOTE: The enabled state of each row is re-evaluated against the latest rowEnabledTable values if either the enabledFlag or the rowEnabledTable changes. This property can be set to one of the following: 1. scalar value All rows (indexes) in the table will be enabled if "true" or disabled if "false". 2. tabular value This table can either contain one or two columns: If the table has one column: The column must contain boolean values. It should have the same number of rows as the alert valueTable. If so, the enabled state of each row in the alert valueTable is set to the value in the same row of the rowEnabledTable. If the valueTable is longer, the extra rows are set to the first row of the rowEnabledTable. If the table has 2 columns: The first column must contain indexes and the second column must contain boolean values. The index value for each row in the valueTable is used to lookup the corresponding enabled value from the rowEnabledTable. If the index is not found in the rowEnabledTable table, false is used. 3. ; delimited list of values This is a ; delimited list of either index/enabled value pairs, or just enabled values. If the ; delimited list only contains boolean values (true;false;true): This should be a ; delimited list of boolean values with the same number of values as rows in the alert value table. The enabled state for row in the valueTable will be set to the value in the corresponding position in this list. If the valueTable has more rows than values in the list, the first value in the list will be used. If the ; delimited list contains both index and enabled values (Chicago,true;Dallas:false;Detroit:true): This should be a ; delimited list of comma (,) separated index/enabled pairs. The index value for each row in the valueTable is used to lookup the corresponding enabled value from the rowEnabledTable list of values. If the index is not found in the enabled list, the enabled state is set to false.

14830: New column in alert table to show enabled status of alerts

The Alerts have been enhanced to show their enabled state. The enabledFlag for an alert can be set 3 ways: 1. in the property sheet for the alert, you can either select or deselect the enabledFlag property 2. in the property sheet for the alert, you can attach the enabledFlag property to data 3. you can use the Enable Alert Definition command It is recommended that you do not use both option 2 and option 3 for the same alert. The Alert Variables Table now contains an Enabled column which shows the enabled status for each alert. The Alert State for each alert will show as -1 if the alert is disabled. For tabular alerts, if the alert is disabled, the Alert State for each index is -1. If there is an active alert when the alert is disabled, it will be cleared. This is a change from the previous behavior.

14861: Null pointer exception no longer thrown for alerts without names

In previous releases, if an alert did not have a name, it would sometimes crash. This has been fixed.

14866: Crash at startup if "Rate to Remove Cleared Alerts" > 0 fixed

In previous versions, if the "Rate to Remove Cleared Alerts" option on the Alerts option tab is set to a nonzero value, and any global files are defined with listeners to async data, the RTView could crash. This has been fixed.

Builder - Options Dialogs

14895: Options Dialog size reduction

In release 4.9, the Options Dalog was taller than necessary, causing some of the tabs in the dialog to look stretched. This has been corrected.

Commands

14659: New mechanism to execute commands on open/close of display

Two new properties, onOpenCommand and onCloseCommand, were added to Model Properties. These properties allow you to specify a command to be executed when the display is opened/loaded (onOpenCommand ) and a command to be executed when the display is closed/replaced (onCloseCommand). Additionally, the Model Properties for a display can now be accessed more directly via Edit->Model Properties. The old method of File- >Background Properties ...-> Model Properties is still viable. The commands are edited using the same mechanism as existing commands, so they can be cut/copied/pasted from and to other commands. The onOpen/onCloseCommands can be single or multiple commands, system, data source, or custom commands. The restrictions that apply to interaction commands (based on deployment) also apply to onOpen and onClose commands. NOTE: A run time check is applied to prevent recursive execution of drill down commands - an error message will be displayed in the console at the point the recursion would have occurred. LIMITATIONS: System Drill down commands are not supported in onOpen/ onClose commands on the display sever as they would open new windows on the display server, rather than the client

Data Historian

14855: Historian mbean crash fixed

In release 4.9, the Historian would throw an OpenDataException if the DataConfigurationFileInfo attribute of the Manager MBean was queried. This is fixed.

Data Server

12067: New option to only send changed rows for custom data source

For a custom data source, the data server can be configured to send only the rows in a table which have been modified, inserted, or deleted since the last client update. This can significantly reduce the amount of data transmitted to clients, for a custom data source that typically makes relatively small changes to large tables. To enable this feature, the custom data source must identify one or more columns which uniquely identify each row in a table, by calling the addIndexColumn() method on a GmsTabularData instance. Notes: - If more than half of the table's rows are changed, the data server will send the entire table to all the listening clients on the next data push. - If a client removes all of the listeners for a table T1, the server will stop recording T1's row changes for that client. The next time that client C1 adds a listener for T1, the data server will send the entire table to the client. So this improvement will mostly boost the performance of periodic updates to displays containing large tables. - The data server will only track row changes. If a column is added or removed, the data server will send the entire table.

14671: Multiple data server connections supported

An RTView application can now be configured to connect to multiple RTView Data Servers. This can be useful in deployments where a single server cannot access all required data sources. DISPLAY BUILDER SUPPORT: Two features have been added to the Display Builder to support multiple Data Servers: 1. The Data Server tab of the Options dialog allows configuration of "Named Data Servers". As in all prior releases, the Data Server tab of the Options dialog allows the user to define the default Data Server connection, which can either be a file, a direct socket connection, or an http or https connection via the rtvdata servlet. In this release the Data Server tab also contains a button labeled "Named Data Servers". This button opens the Named Data Server dialog, used to configure connections to additional data servers. For each, a name must be assigned. This name is used in attachments and commands which should be directed to that server. A hostname and port, or the URL of an rtvdata servlet instance, must also be configured to specify the connection for the named server. The configuration of the default data server and all named data servers is saved to the OPTIONS.ini file. 2. The data attachment and data source command dialogs allow selection of a data server name. The dialogs for configuring data attachments and data source commands contain a combo box labeled "Data Server". This combo box allows the user to select a data server name configured in (1), or selection of the predefined entries <default> or <none>, or the manual entry of substitution string. Note that attachments to variables and functions are always handled locally, they cannot be directed to a data server. RUNTIME SUPPORT: At startup, an application will connect to the default data server (if specified) and each named data server (if any) specified as in (1) above. Then, for each attachment and data source command: a) if a data server named was selected when the attachment/ command was configured, it will be directed to that server; b) otherwise, if <default> was selected and a default data server was specified, the attachment/command will be directed to the default data server; c) otherwise, (either <none> was selected or no default data server was specified) the attachment/command will be processed locally. A substitution string can be assigned as the data server name for an attachment or command. When the attachment/ command is processed, the replacement string will be used and if it corresponds to a named data server as configured in (1) above, then the attachment/command will be directed to that server. If the replacement string is an empty string, the default data server (if any) will be used. Named data servers can also be specified by a command-line argument, using this syntax: -dataserver:name=<ServerName>;connect=<ConnectString> where <ServerName> is the name of the data server, to be used in attachments and commands, and ConnectString is either (a) the server's hostname and port number, separated by a colon, for a socket connection or (b) the URL of an instance of the rtvdata servlet. For example: -dataserver:name=MyLocalServer;connect=localhost:56789 -dataserver:name=London;connect=https://londonServer:8080/rtvdata If the name or connection string contains a space, the command-line argument may need to be enclosed in double quotes, for example: "-dataserver:name=Blue Server;connect=bubba:7777" DISPLAY VIEWER APPLET ISSUES: The Display Viewer applet can use the multiple data server feature but, as with any connection from an applet, a security exception will be thrown if the applet attempts to connect to any host other than the webserver host from which it was loaded. So, to use the multiple data server feature from the viewer applet, it will probably be necessary to deploy multiple instances of the rtvdata servlet on the applet's webserver host. For example, if the Viewer applet is hosted on http://bubba:8080 and needs to connect to two data servers named Blue and Red, then instances of the rtvdata servlet could be deployed at http://bubba:8080/rtvdata_blue and http://bubba:8080/ rtvdata_red, and the properties of servlet instance could be configured to connect to the corresponding data server. See the full documentation for details on configuring and deploying the rtvdata servlet. OTHER OPTIONS: The -dsenable argument: As described earlier, when choosing a data server name in an attachment or command dialog, the <none> entry may be selected to indicate that the attachment/command should be processed locally (that is, not be directed to a data server) even if a default data server has been specified. This can be useful in deployments where most attachments should be directed to the default data server but a few should not. However, when a default data server is specified, all data sources are disabled (except the XML, function, and variable data sources). So, the -dsenable command-line argument must be used to enable the data source used by any attachment/command for which a data server of <none> was selected. The format of this argument is: -dsenable:<dskey> where <dskey> is the key string for the data source: (sql, rv, hawk, etc). A -dsenable option can be specified for each data source required. For an applet deployment, use the dsenable paremeter, for example the following will enable the cache data source in the applet: <param NAME="dsenable" VALUE="cache"> Currently the -dsenable option is only available as a command- line argument or an applet parameter. It cannot be configured from the Options dialog nor is it read from or written to the OPTIONS.ini file. The vieweronly option: The Data Server options tab and the new Named Data Servers dialog both have a checkbox labeled "Viewer Only". When this box is checked, the Builder ignores all data server connections and all attachments and commands are processed locally. Note that the configuration of data server options and assignments can still be configured and saved, they just have no affect until the display is opened in the Viewer. CUSTOM DATA SOURCES: The writer of a custom data source may decide not to expose the multiple data server feature to users, by hiding the data server combo in the custom attach-to-data and command dialogs. This can be done by adding the following line of code to the dialog's constructor: super.hideDataServerCombo = true;

Data Sources

Cache Data Source

14838: Caches now listed in data attach list even if data not available

In the Display Builder, if you had one or more Cache objects defined in a Cache Definition File and you tried to attach an object property to a Cache, in the Attach To Cache Data dialog you would only see the name of a cache if its own data attachment was actually receiving data. This behavior has been changed so that you will see the cache names and table names of all defined caches whether nor not they are receiving data.

14845: Cache now stores un-indexed tables with 0 rows

The cache data source will now store a table with zero rows, for a cache object whose indexColumns property is not set. Previously, data tables with no rows were ignored.

14898: Two cache table listeners with different filters now supported

Using the Cache Data Source, if two or more listeners were attached to the same cache table, and each attachment has a different row filter, only one of the attachments would be updated. This has been fixed.

14903: Row Changed optimization added

To improve performance in a Data Server deployment, the Cache Data Source has been improved to reduce the amount of data that is pushed to clients when the contents of a cache table are changed.

14908: Timestamp value from column no longer overwritten

Previously, if you specify a timestampColumnName for a table cache, and the incoming data contained a column of type Date and with that name, the current time was written into that column. This behavior has been changed so that we never overwrite the contents of a user-specified timestamp column.

14930: Can now enter table name if cache is unknown

In the previous release, the Attach to Cache Data dialog did not allow an entry in the Table field if the specified Cache name was unrecognized. As a result, it was impossible to configure an attachment to a cache that was not defined at build-time. This is fixed.

JMS Data Source

14917: Crash when JMS server or jars unavailable has been fixed

Previously RTView would fail to start when a JNDI JMS data source was defined but either the required class files were not present on the classpath or the JMS server was unavailable. RTView will now start and provide error messages for the connections that cannot be established due to the required classes not being on the class path or the server being unavailable.

SQL Data Source

14847: Shared query result no longer re-applied to old listeners

In prior releases, under certain conditions the latest result of an SQL query was redundantly applied to existing listeners when a display was opened. This could cause unnecessary updates to functions attached to the query. This problem has been fixed.

14910: Crash if cache list cleared before caches exist has been fixed

In previous versions, an exception could be thrown if the cache list was cleared before any caches were generated. This has been fixed.

Display Server

14885: Refresh requests no longer become backed up on slow server

In release 4.9, the thin client might make overlapping refresh requests to the Display Server, if the server reponse is delayed. These requests can back up in the rtvdisplay servlet, eventually causing the app server to run out of threads or memory. This is fixed.

14891: Data source commands now executed when using data server

In prior releases, if the Display Server was run with the -dataserver option, data source commands which should have been redirected to the Data Server were not. This is fixed.

14892: Data now appears with refresh of 0 when using Data Server

In previous versions, if the Display Server refresh rate was 0, and it was used with the Data Server, data would not have been provided to the Display Server if there was no data until the first refresh. This has been fixed.

Functions

14923: No longer update nested functions prematurely

The function data source has been improved to further reduce unnecessary updates to nested functions (functions which use other function results as arguments).

General

14632: Deployment Wizard added

A Deployment Wizard has been added to RTView to assist in deploying RTView applications. The Deployment Wizard allows you to define a project with one or more deployments. It will package up the necessary file for each deployment along with a readme that describes how to deploy it. To run the Deployment Wizard on windows, select Start- >Programs->RTView->Deployment Wizard. To run the Deployment Wizard on UNIX, in an initialized terminal window type run_depwizard

14805: New color-picker for Macintosh

A special color picker has been created for Macintosh with the Aqua Look and Feel.

14854: New utility for scanning library versions

A new command line utility for determining the version of all of the RTView java libraries has been included with RTView. To list the version of all Java libraries: list_versions all To check for Java libraries that do not match a particular version: list_versions VERSION where VERSION is the version string. The format of version strings in the Java libraries is "R99z9_999999", with no punctuation. Wildcards are not supported, but incomplete strings are. Versions with the suffix "_DT9999" are always included, so that patched versions can be identified. Example: list_versions 50c1 Lists all versions that are not general release 5.0c1. Output would include 5.0c0 alpha versions. list_versions R50 lists all versions that are not 5.0x. Output would include all versions that are not alpha, beta, or released libraries of 5.0. LIMITATIONS On Windows it is recommended that you not search for version based on number alone (e.g. 50 rather than R50 or 50c), as the search results will sometimes return a false positive based on a time stamp or file size.

14928: Support for deployment wizard added to data sources

A new abstract method has been added to GmsRtViewDs: public Vector<String> getDsFileNames () Custom data sources must implement this method in order to compile and run against version 5.0b1+. This method is called by the deployment wizard to get the list of files needed by a data source. See the custom data source javadocs for more information.

Object Library

Fx Bar Chart

14827: Colors now available for more than 28 bars per group

If there are more or bars (or columns) than colors, we now recycle the colors. Example - if there are 50 bars and 25 colors, bars 26-60 will use the same colors as bars 1-25.

14828: If rowSeriesFlag is on, drawStackedFlag is ignored.

You can now use the drawStackedFlag and RowSeriesFlag at the same time.

14862: Fx Bar Graph now supports barProperties

With this release, the FxBar chart now supports the "barProperties" available with the standard Bar Graph (obj_bargraph). Additionally, new properties have been added that can change the bar shapes and bar transparency. BarProperties: We now offer a more robust selection of colors than those found in the 256 color palette available with obj_bargraph, and have added support for the same 16 fill patterns. Bar Transparency: The barTransparencyPercent property has been added to allow for transparency of the charts bars. A value of 0, the default, sets the bars to be completely opaque. A value of 100 will render the bars completely transparent. Any integer between 0 and 100 can be set. Changing this property will change the transparency of all of the charts bars. Bar Shapes: The barShape property offers five additional bar shapes along with the default Rectangle shape. The new shapes are Rounded Rectangle, Ellipse, Diamond, Triangle and Inverted Triangle. Changing this property will change the shape of all of the charts bars.

14902: Bars that surpass yValueMax are no longer invisible

Prior to this fix, bars and columns whose values were greater than yValueMax setting were not drawn at all. Now, they will appear, but will be drawn clipped, so as not to extend beyond the yValueMax setting.

Fx Trend Chart

14590: Support added for additional object properties

Support has been added to the FX Trend Graph for yValueMin/Max and yAxisAutoScaleMode. When yAxisAutoScaleMode is set to Off, the yValueMin and yValueMax properties control the range of the y-axis for this trace. Select On to automatically calculate the range of the y-axis according to data values being plotted. Limitations: As with the FX Bar Graph, the "On Including Min/Max" mode is not supported. In cases where the yAxisLogFlag is ON, the yAxisAutoScaleMode setting is ignored and internally seen as ON. When the yAxisLogFlag is turned OFF, the yAxisAutoScaleMode reverts to the current user setting.

Tables

14829: Sorting can now be disabled in the Display Server

In previous releases, setting a table object's showSortIconFlag property to false did not disable sorting in the thin client. This is fixed.

Trend Charts

14810: Auto scale no longer factors in traces that have no value

If a trendgraph is configured with multiple traces, yAxisAutoScaleMode is On, and yAxisMultiRangeMode is Off (so all traces are plotted against a single, autoscaled y-axis), the autoscale calculation now skips any traces which have no data points. In prior releases, a value of zero was assumed for each empty trace, which sometimes causes the computed y-axis range to be too large.

Oracle Coherence Monitor

14779: Failure rates and time range selection added to Comm. Issues

Instead of showing absolute packets resent/repeated in the Communication Issues view, failure rates are now shown. Additionally, the time range selector has been enabled to show time range averages on cached data.

14797: Launcher arguments supported in any order

In the previous release, if the -ocm and -ocmnode command line arguments were used, they had to be the first argument specified. This has been fixed so that the arguments can now be specified in any order.

14820: Tier Selector added to All Caches Activity/Capacity Bar Charts

The All Caches Activity and Capacity Chart displays have been modified to provide a "Tier" selector. This enables the user to specify either Front or Back tier caches to be shown in these displays.

14826: Cache browser does not work with simulator

The Cache Browser view again displays data with the simulated cluster, as a DistributedCache service has been added to the simulator.

14836: Corrected spiking in Cache Activity hit/miss history

In previous versions, the Cache Activity trend chart would show spikes in the historical data. This has been fixed.

14852: Updated OCM help screens

The popup Help windows for the Oracle Coherence Monitor have been revised and improved.

14897: SQL query to Oracle no longer fails due to using reserved word

In previous versions, a SQL query to an Oracle Historian database failed due to using a reserved keyword. This was changed to a non- reserved name.

14951: Alert Summary view updated to indicate disabled alerts

The Alert Summary view has been updated to indicate that disabled alerts in gray. Unimplemented alerts have been removed.

14964: Removed unimplemented alerts

Unimplemented Alerts are no longer visible. These will be added back to the views once they have been implemented.

Platform Support

14817: "Cancel" now prevents Display Builder from closing on Mac

When a user tries to close the Display Builder without saving their changes, they will be prompted to save their changes, exit without saving, or cancel the exit. In previous versions the the "Cancel" option did not work correctly on Macintosh, and the program would close rather than remain open. This has been corrected.

14835: Menu bar support added for Historian on Mac

The Historian now correctly handles the Apple Menu and the About button.

14886: Additional look and feel support on Macintosh

To better support the Macintosh, there is a new command line argument for the RTView applications. -laf:xxxx where xxx is Aqua, Metal or Motif e.g. -laf:Aqua. This sets the windowing style of the applicaiton. These arguments are not supported in the OPTIONS.ini file. The default for Display Viewer is Aqua and for Display Builder and Historian is Metal. This argument has no effect under Windows or Linux.

Security

14837: Security login disabled by default

By default, an OPTIONS.ini is now provided in the lib directory of the RTView installation which disables the security login. If you wish to enable the login mechanism, you will need to start the Display Builder or Configuration Utility with the -login option, and then enable the security mechanism from the Security tab.

Substitution

14872: Setsub function triggered by var change again updates listeners

Prior to 4.8, if a control object changed the value of a mapped variable and that change triggered an update of a setsub function that changed a second substitution, then any listeners that used the second substitution were immediately updated to reflect the change. This feature was broken in release 4.8 and 4.9, but is now fixed.

Version 4.9d1 Release Notes

Data Sources

Cache Data Source

14824: Crash after (un)setting timestampColumnName fixed

In previous versions, if you removed or added the value of the timestampColumnName property in a Double cache object that was contained in a Cache Definition file, the Display Builder would crash when you saved the Cache Definition file and opened a different display. This has been fixed. As part of this fix, caches are now disabled while they are being edited. As a consequence, you can no longer attach to the data of a cache object in the same display where you have defined it.

Functions

14839: Sort function no longer crashes for table filter with no results

In the previous version, if the Sort function is applied to a table which has zero rows because of a row filter, RTView would crash.

Version 4.9c1 Release Notes

Alerts

14433: New option to skip sending alert for intermediate alert status

The Limits Alert has been enhanced to suppress duplicate alerts with a new property, skipDuplicateAlertsFlag. If selected, only one high or low event will be generated when the value exceeds both high thresholds or goes below both low thresholds. For example, you have a limits alert where valueHighAlert equals 90. valueHighWarning equals 80 and the value equals 100. If the skipDuplicateAlertsFlag is selected, only one alert will be generated with a severity of high alert. If the value then goes to 85, the severity of the alert will change to high warning, and when the value goes to 75, the alert will clear. If the skipDuplicationAlertsFlag is off, 2 alerts will be generated when the value goes to 100, one with a high warning severity and the other with high alert severity. When the value goes to 85, the high alert will clear, and when the value goes to 75, the high warning alert will clear. Once an alert with the skipDuplicationAlertsFlag set is acknowledged, the alert severity will no longer update. Several properties give finer control over when alerts are executed and when the severity of alerts changes. If the skipDuplicateAlertsFlag is on, these properties behave as follows: valueDeadband - This property is applied to both thresholds. For example, the valueHighAlert equals 90, the valueHighWarning equals 80 and the valueDeadband equals 5. When the value goes to 91, an alert is executed with high alert severity. Now the value must go below 85 for the severity to change to high warning, and the value must go below 75 for the alert to clear. reNotificationTime - This property is applied to the alert as a whole, not to each threshold. If the reNotificationTime is set, the alert command will continue to re-execute until the alert is cleared or acknowledged, regardless of whether or not the severity changes. alertDelayTime - This property is applied to both thresholds. For example, the valueHighAlert equals 90, the valueHighWarning equals 80 and the alertDelayTime equals 5. The value must stay over 90 for 5 seconds before the high alert is issued. If the value then goes to 85, it must stay below 90 for 5 seconds before the severity is changed to high warning. nonRepetitionTime - This property is applied to the alert as a whole, not to each threshold. Once an alert has been issued, the nonRepetitionTime is not enforced when the severity changes from high alert to high warning and vice-versa. It is only applied when the alert clears. Once the alert clears, the nonRepetitionTime is the minimum amount of time that must pass before a new alert will be issued.

14689: Table-defined alert thresholds implemented

The limits and discrete alerts have been enhanced to support tabular thresholds. In previous releases, the threshold properties only accepted scalar values. Each threshold property can be set to one of the following: 1. scalar value Both scalar and each row in tabular alerts is compared against this value (this is the previous behavior). 2. tabular value This table can either contain one or two columns: If the table has one column: The column must contain comparison values. It should have the same number of rows as the alert valueTable. If so, each row in the alert valueTable is compared against the value in the same row of the value*Alert (threshold) table. If the valueTable is longer, the extra rows are compared against the first row of the value*Alert (threshold) table. If the alert value is scalar, it will be compared to the first row. If the table has 2 columns: The first column must contain indexes and the second column must contain comparison values. The index value for each row in the valueTable is used to lookup the corresponding comparison value from the value*Alert (threshold) table. If the index is not found in the threshold table, no alert is generated. If the alert value is scalar, no alert is generated. 3. ; delimited list of values This is a ; delimited list of either index/comparison value pairs, or just comparison values. If the ; delimited list only contains comparison values (80;90;100): This should be a ; delimited list of comparison values with the same number of values as rows in the alert value table. Each row in the valueTable will be compared to the item in the corresponding position in this list. If the valueTable has more rows than items in the list, the first item in the list will be used. If the alert value is scalar, the first item in the list is used. If the ; delimited list contains both index and comparison values (Chicago,80;Dallas:90;Detroit:100): This should be a ; delimited list of comma (,) separated index/comparison pairs. The index value for each row in the valueTable is used to lookup the corresponding comparison value from the value*Alert (threshold) list of values. If the index is not found in the threshold list, no alert is generated. If the alert value is scalar, no alert is generated.

14728: Alert Definition file can now be found inside .jar

In the previous versions, an Alert Definition file could not be reference from inside a .jar file. This has been fixed.

Builder

14745: Preview no longer disabled if you drill down to current window

In the Display Builder, if you executed a drill down command of type "current window", the Preview button button would be incorrectly disabled. This has been fixed.

Data Sources

14794: Leak in xml and hawk data sources.

In previous releases, a trend graph attached directly to XML or Hawk data was not released when the display was closed, causing a memory leak. This has been fixed.

Cache Data Source

14645: Cache Data Source implemented

The new Cache Data Source stores real-time data from a data attachment in in-memory tables which can themselves be used as data sources. The Cache maintains current value and history tables for scalar or tabular inputs. It has options for specifying index columns for tabular data and adding timestamp columns to both types of data. In addition, a separate data attachment may be specified for pre- loading a Cache with initial value data. This data will also be indexed and have a timestamp added according to the properties set on the Cache. You create and configure a Cache in the Display Builder, by dragging scalar or tabular Cache objects from the Caches palette tab onto a display and setting their properties, including name, data attachment(s), index columns, number of rows of history to keep, etc., in the Object Properties dialog. You then identify the display as a Cache Definition file via the Application Options dialog. When a Cache is loaded via a Cache Definition file and is receiving data via its data attachment, it is available for use and will appear in the Attach To Cache Data dialog. On that dialog you can also configure row filtering and select columns.

14738: initialTable property pre-loads cache from Historian database

The Cache Data Source has been enhanced with the ability to pre- load the history table of a scalar or tabular cache datasource by specifying a data attachment for the new property initialTable. The following should be noted: (1) If a timestampColumnName is specified for this property it will follow the behavior of the valueTable property: a timestamp column of that name will be inserted in the incoming data unless one is found already present. (2) The data from this attachment is not copied before it is modified by the addition of timestamp data; so the possibility exists that the original source of the data would be modified. (3) If this attachment continues to update its data, that data will continue to be added to the history table; so for best results the attachment should be something like a one-time SQL query.

14743: Timestamp column options implemented

The Cache Data Source has been enhanced with the ability to specify that a timestamp column a) should be added to the incoming data, or b) is already present in the incoming data. If the property timestampColumnName is set to a column name, the data source will look for a column by that name in the data. If it finds the column and it is of type DATE, the timestamp data will be included in the cache tables; if it is not of type DATE an error will be printed. If the specified column is not found a DATE column of that name will be added to the incoming data and each row will contain the time that row was received.

JMS Admin Data Source (for TIBCO EMS only)

14373: Hang after fault-tolerant failover fixed

In previous releases, displays that contained both TIBCO Hawk and TIBCO EMS data sometimes stopped updating. This only happened when the TIBCO Hawk data was from a subscription to an agent that was running on an EMS transport with a fault tolerant EMS server pair and the TIBCO EMS data was from the same pair of fault tolerant servers. The display would sometimes stop updating after the EMS severs failed over. This has been fixed.

JMS Data Source

14520: Re-Support Seebeyond with JMS

Previous changes to the JMS data source prevented it from being used with SeeBeyond as a JMS data source. SeeBeyond can now be used again as a provider of JMS data. by configuring a JMS connection where the Factory Class Name option is set to com.stc.jms.client.STCTopicConnectionFactory and using the SeeBeyond jars: jms.jar com.stc.jmsis.jar jta.jar log4j.jar from the java api kit java directory (e.g. \ican50\repository\data\files\InstallManager\50Base\apikit\java ) in the RTV_USERPATH.

JMX Data Source

14585: Domain attribute now appears in attributes list

The Domain attribute now appears in the Attach to Data if the Domain part of the mBean contains a *.

RRD Data Source

14684: Support executing rrdtool on a remote machine

The RRD Datasource has been enhanced to support (limited) remote execution of rrdtool from an instance of RTView running on Unix to a Windows machine with RRDTool installed and an rshd running. You can use the -RRDds.rsh:HOSTNAME command line option to specify a HOSTNAME on which to run the rrdtool remotely. All executions of rrdtool in this process will be done on that remote Windows host.

StreamBase Data Source

14650: StreamBase 5.1 now supported

We now support Streambase version 5.1. Prior versions will no longer be supported.

Demos

Data Source Tutorial Demo

14734: Data Source Tutorial uses .xsl navigation tree

An .xsl navigation tree is used to navigate displays in the Thin Client version of the Data Source Tutorial.

Display Server

14673: Display Server Performance enhancements

The performance of display refreshes in the Display Server has been improved.

14724: Method provided to auto-generate an HTML tree from navtree.xml

It is now possible to automatically generate an HTML navigation tree directly from the navtree.xml file used in many applications. To do this it is necessary to construct a custom index.html file that references an iframe that references the navtree.xml and converts it automatically to an HTML/Javascript tree. An example of this custom index.html file is contained in the demos/dstutorial and also in servlets/ocmonitor.

Distribution

14700: HSQLDB included with RTView

The library to support HSQLDB has been included with RTView, as well as two scripts to run it. run_hsqldb - runs the HSQL Database Engine. run_hsqldb_mgr - runs the HSQL Database Manager For more information about the HSQLDB, you can visit the website here: http://hsqldb.org/

Functions

14388: Type Convert function can now convert to Date-Time

The Convert Columns function has been enhanced to convert numeric and string columns to Date-Time columns (type DATE). The Convert To Type field should contain "t" ("time") and the Columns to Convert list may contain String or any numeric type columns. Numeric types other than LONG are first converted to Long data and then to Date-Time data. If a String column entry cannot be parsed as a date the resulting entry will be blank.

14740: Pending functions still sometimes executed multiple times

In some cases, when a JOIN function was used to join data from two separate data attachments, the function could be executed more than once. This problem has been fixed.

14795: Performance improvements for functions with large RV/Hawk tables

The performance of the Display Builder/Viewer has been improved in the case of a function using an RV or Hawk data table with many rows (for example, RTViewDs.HostStatusHistory) as an input argument.

14811: The SORT function can produce ArrayBoundsException sometimes

In the previous release, an ArrayBoundsException was sometimes thrown by the sort function, if its table argument was attached to a table from the Cache data source and rows were added to the table while the sort was performed. This is fixed.

General

14637: New RTV_JAVAOPTS option to specify directory of *OPTIONS.ini

RTView has been enhanced to allow users to specify a directory for their options files. If specified, options files will be read from and saved to the specified directory. If not found, they will be read from lib. If not specified, RTView will behave as it did previously - the options files will be read from and saved to the startup directory., and if not found there will be read from lib. To specify the directory for options files, add the following jvm option to RTV_JAVAOPTS: -Dcom.sl.rtview.optionsFileDir=YourOptionsFileDir The following options files will use the specified directory: OPTIONS.ini *OPTIONS.ini (for each data source) hawkmethodrepository.xml rvrepository.xml RVALIAS.ini TRANSPORTS.ini sqlrepository.xml JMSALIAS.ini HISTORY.ini DATASERVER.ini DISPLAYSERVER.ini EMSMGR.ini TRANSACTIONS.ini TMOPTIONS.ini

Licensing

14625: RRD DS license key not additive in all scenarios

Previously the licencing mechanism did not treat new product keys (e.g. RRD Data Source) as additive with existing licenses, unless they were specified in a particular order, or combined with other specific product (e.g. viewer or browser). New product keys are now additive, and can be appended to the end of an existing KEYS file

Local Variables

14629: Data type support added for variables

The variables have been updated to support 2 data types: scalar and tabular. The data type is used in 2 places. First, it is used in the Attach to Variable Data dialog to allow the user to specify row and column filtering for variables that are tabular. Second, it is used in the composite object. Only variables that have the tabular data type can be used to update table variables in the composite display. The Variables dialog has been updated as follows: 1. A Data Type combo box has been added to allow the user to select either Scalar or Tabular for their data type. This defaults to Scalar for new variables. 2. The table showing the list of variables has been updated to show the data type for each variable. 3. A check has been added so that the Use as Sub and Tabular data type cannot be selected together. If they are, an error is issued when the user clicks Add and the update is not applied. The Attach to Variables dialog has been updated as follows: 1. Four new fields have been added to the dialog to support select column and row filters. The user can specify column filters in the Column(s) field for variables that have the tabular data type. The user can either enter a single column name or click on the ... button to select multiple column names. Enter * to select all columns. The user can also select a row filter by selecting the Filter checkbox, then filling in the Filter Column and Filter Value fields. Single or multiple values may be listed in the Filter Value field. Enter * to display all rows in the table. Enter "*" to use * as a literal comparative value. To list multiple values, separate with a semicolon. For example: value1;value2;value3. If your value contains a semicolon, enclose it in single quotes. 2. The Attach to Variables dialog now validates data as follows. The Variable Name field is not validated. The user can only select from a list of valid options, so no validation is needed. If the selected Variable Name refers to a scalar variable, the Column(s), Filter Column and Filter Value fields are all colored dark gray indicating that no entry is needed in these fields. The columns in the Select Column dialog are also colored dark gray. If the selected Variable Name refers to a tabular variable, the variable is checked to see if it has received a data update. If it has not received a data update, the Column(s), Filer Column and Filter Value fields are all colored light gray to indicate that values are needed but cannot be validated. If it has received a data update, the drop down menues for the Column(s) and Filter Value fields are populated with the available column names. The Column(s) and Filter Column fields are validated so that they turn red if they contain and invalid value and white if they contain a valid value. The same is true for the columns in the Select Columns dialog. In this case, the Filter Value field is also validated. The validation on this field turns red if the data entered does not match the data type for the column specified in Filter Column, otherwise it turns white. The composite object has been updated as follows: In the previous release, only variables with names that ended in Table could be used to update table properties in composite displays. This has been fixed so that any variable with the tabular data type can be used to update table properties, regardless of the variable name. Old .rtv files are upward compatible as follows: Since old .rtv files do not contain data type information for the variables, RTView must assign data types. The data type for all variables is set to scalar unless the variable name ends in Table or table and has no initial value. If you have a tabular variable in an old .rtv file with a name that does not end in Table or table, it will not stop working. However, you will not be able to take advantage of the new Attach to Variable Data dialog changes or the composite object changes.

14726: App-level sub now overrides initial value for global variable

If an application-level substitution (defined in OPTIONS.ini or on the command-line) exists with the same name as a global mapped variable, the initial value of the substitution is used as the initial value of the global mapped variable. In prior releases, the initial value of the global variable defined in the global definition file was used, which was not the correct behavior.

Object Library

Composite Object

14521: Expanded support for composite objects in Display Server

The composite object is now more robustly supported in the thin client, as a distinct object in a display or as an icon in an object grid. Limitations: Performance of the thin client may suffer if a composite containing a display with multiple table objects, controls, or graphs is displayed, especially if multiple instances of the composite appear in an object grid.

14737: Composite objects inside grid become blank after applet refresh

In the previous release, the composite objects in the Display Viewer Applet would go blank after a browser refresh. This has been fixed.

14744: Delay corrected in executing a function using a variable

In previous versions, if a composite object contained a display with a function that uses a variable as an argument, and the local variable's value is changed from a control, the function result is not updated until the following update. This most noticeable in the thin client.

14748: Links now work inside composite objects

In the previous release, links did not work in composite objects. This has been fixed.

Fx Bar Chart

14489: New Fx Bar Graph object

A new graph object named Fx Bar Graph has been added. Fx Bar Graph and the existing Bar Graph graph object have many similar features. Fx Bar Graph also has a few additional features unavailable in the bar graph. In the Display Builder, Fx Bar Graph (obj_fxbar) is found on the Fx Graphs palette. FEATURE HIGHLIGHTS: Data Tips: text boxes that display detailed information about their associated columnar data. Legend: can be positioned above, below, right, or left of trace area. The legend can be resized interactively. Background Colors: The graph background can have two alternating colors, with a configurable grid color between them. COLOR PROPERTIES: Color properties are treated similarly to the Fx Trend Graph, both of which differ from that of other other objects. In the Builder, the color chooser dialog has 4 tabs. The "RTView Colors" tab shows the traditional palette of 252 indexed colors; the "Swatches" tab shows a standard Java color palette; the "HSB" tab allows color selection by hue, saturation, and brightness; and the RGB tab allows color selection by red, green, and blue intensity. The color chooser also has a button for selecting a default color (described separately for each color property below). Internally, all color properties on Fx Bar Graph are stored as a 24 bit integer RGB value in the range of zero (black) to 16,777,215 (white). So if a color property on an Fx Bar Graph is attached to data, keep in mind that it expects an integer value in that range, not a color index between 0 and 252 as with other objects. A value of -1 indicates the default property color. Note that the Default color and colors selected from the Swatches, HSB, and RGB tabs are only supported on Fx Bar Graph. If a color is selected from one of those tabs and then copied and pasted to a color property on any other object, white will be used instead. PROPERTIES: Like the bar graph, the Fx Bar Graph has many configurable properties, some of which are unique. The following properties apply to the overall object: Alert: (All are the same as the bar chart. Note that the Fx Bar Graph doesnt support the associated LineVisFlag, MarkColor, and markStyle properties. - valueHighAlarm - valueHighAlarmColor - valueLowAlarmEnabledFlag - valueHighWarning - valueHighWarningColor - valueHighWarningEnabledFlag - valueLowAlarm - valueLowAlarmColor - valueHighAlarmEnabledFlag - valueLowWarning - valueLowWarningColor - valueLowWarningEnabledFlag Background: (All same as Bar Chart) - bg3dFlag : if checked, a 3d border is drawn around the Fx Bar Graph. - bgColor: the background color of the Fx Bar Graph. The Default color is steel gray. - bgGradient: if checked, the background is gradient filled. Bar: - barImage: The image to display in the bars. NOTE: If necessary, the image will be stretched or otherwise modified to fit the bar size. - barOutlineFlag: draws an outline around each bar. Default is On - barValueTextColor: when barValueVisFlag is On, the color of the text inside the bars - barValueTextFont: when barValueVisFlag is On, the font style for the text inside the bars - barValueTextSize: when barValueVisFlag is On, the font size for the text inside the bars - barValueVisFlag: when On, each bars data value is displayed inside the bar Data: - rowSeriesFlag: Same as Bar Chart - valueDivisor: Same as Bar Chart - valueTable: Same as Bar Chart - yValueMax: - yValueMin: Controls the range of y-axis if the yAxisAutoScaleMode is set to Off. Select On for the yAxisAutoScaleMode to calculate the y-axis range according to data values being plotted. DataFormat: - yValueFormat: Formats the numeric value shown on each bar, if barValueVisFlag is checked. Also formats the numeric value that appears in each tooltip is the mouseOverFlag is checked. Historian (same as Bar Chart) - historyTableName - historyTableRowNameFlag Interaction: (same as Bar Chart) - command - commandCloseWindowOnSuccess - commandConfirm - commandConfirmText - drillDownTarget - mouseOverFlag  toggles Tooltips on/off Label: - label: the Fx Bar Graph title text. Cannot contain newlines (\n). If blank, the trace area increases to fill the title area. - labelTextAlignX: alignment for the Fx Bar Graph title. - labelTextColor: color for all text on the Fx BarGraph, default is black. - labelTextFont: font for the Fx BarGraph title. - labelTextSize: size for the Fx BarGraph title. Legend: - legendBgColor: background color of legend area. If Default is selected, the legend background is unfilled so the background of the Fx Bar Graph is visible. - legendBgGradientFlag: if checked and if legendBgColor is not Default, the legend background is gradient filled. - legendPosition: indicates if the legend is positioned above, below, left, or right of the chart area. - legendTextFont: font for legend text (Note that bold is NOT supported here) - legendTextSize: font size for legend text - legendTextColor: font color for legend text - legendVisFlag: the legend is visible only if this property is checked. - legendWidthPercent: the percentage of the objects width (or height, if positioned at top or bottom) to be occupied by the legend. Plot Area: - gridAltBgColor: the Fx Bars chart background allows for alternating rows of color. This is one of them. The default is transparent. - gridBgColor: this is the other alternating color row. The default is transparent. - gridBgImage: In place of color for the chart background, the user can select an Image. - gridColor: this is the color of the grid lines. The default is white. X-Axis: - xAxisFlag: the x-axis is visible only if this is checked. Y-Axis: - yAxisAutoScaleMode: Off: all min/max and division properties are used to determine how to display the yAxis. Note that any bar whose data exceeds the yValueMax will not be displayed. On: the Fx BarGraph determines the yAxis Maximum and divisions as needed to display bars at whatever size is needed to represent the data. The following properties are ignored: yAxisMajorDivisions, yAxisMinorDivisions, yValueMax, yValueMin. On  Include Min Max: This is NOT SUPPORTED. It functions as On above. - yAxisFlag: the y-axis is visible only if this is checked. - yAxisFormat: Formats the y-axis labels or, if drawHorizontalFlag is checked, the x-axis labels. - yAxisMajorDivisions: Number of major divisions along the yAxis. Ignored when yAxisScaleMode is On - yAxisMinorDivisions: Number of minor divisions with each major division. Ignored when yAxisScaleMode is On. REQUIREMENTS and LIMITATIONS: The Fx Bar Graph requires version 9.0 or newer of the Adobe Flash Player. In the thin client, the Fx Bar Graph is supported in any supported browser that has the Flash Player installed. If a display containing an Fx Bar Graph is loaded into the thin client and the Flash Player is not installed, a link to the Flash Player download page will appear on the display. In the Builder and Viewer applications, the Fx Bar Graph is supported on Windows platforms only. If a display containing an Fx Bar Graph is opened in the Display Builder/Viewer, and the correct version of the Flash Player is not available or the local operating system is not Windows, the Fx Bar Graph will be blank and an error message will be issued. In the Display Builder, the Fx Graphs tab is visible. The Fx Bar Graph is not supported in the Display Viewer Applet on any platform. The Fx Bar Graph object can be resource intensive during display loading and updating. This should be kept in mind when designing displays -- for example, a display containing several Fx Bar Graph objects may load slowly. The Fx Bar Graph is drawn inside a Flash Player window. This means thats the Fx Bar Graph will be drawn above all other objects in a display (except other Fx Bar Graph objects) regardless of the object order -- the "Move to Front/Back" operation has no affect on the Fx Bar Graph. Also, in the Builder, if an Fx Bar Graph extends beyond the edges of the display, it will obscure other panels in the Builder, such as the object palette, property sheet, etc. When zooming or scrolling in the Display Builder or Display Viewer, the Fx Bar Graph will obscure any portion of the vertical and horizontal scrollbars that it overlaps. In the thin client, if the context menu is opened near an Fx Bar Graph object, the menu will be partially hidden by the Fx Bar Graph. Also, a right click inside an Fx Bar Graph will open the Flash Player menu, not the thin client's context menu. When moving an Fx Bar Graph object in the Builder, it is best to grab and drag the graph by one of its edges, just inside the selection hilite rectangle. The graph can't be dragged from within the trace area, since that will initiate a zoom. It can be dragged by other interior areas but it may not move smoothly. The Fx Bar Graph is not included in reports. However, in the thin client, the graph can be printed by right-clicking on the graph and selecting Print from the menu. The legendTextFont property does not support bold fonts, for example Serif and SerifBold have the same appearance (unbold). The following are differences between the Fx Bar Graph and the pre-existing Bar Graph: - If yAxisAutoScale is off, a bar with a y value greater than yValueMax will be invisible. - Bar colors cannot be set. The default colors are always used - If there are more than 28 bars per group, bars 29 and above are black. - Scrolling is not supported - barImage is not scaled to fir the bar width. - If rowSeriesFlag is on, the drawStackedFlag property is ignored. - If yAxisAutoScaleMode is on, the yAxisMajor/MinorDivisions property is ignored.

Fx Trend Chart

14642: Fx trend graph now showing static data in composite objects

In the previous release, the Fx Trend did not plot data from a static data attachment if the trend was contained in a composite object. This is fixed.

14729: Data now plotted for a single numeric column

In the previous release, if the traceNValue property of the Fx Trend Graph was attached to a table with a single numeric column, no points were plotted. This is fixed.

Trend Charts

14749: y-axis autoscale now correct when first y value is NaN

Previously, the trendgraph's y-axis autoscale mode did not compute the correct y-axis range if the first value in the trace was NaN. This is fixed.

Oracle Coherence Monitor

14622: Alert mechanism added to Oracle Coherence Monitor

The ability to generate and customize Alerts has been added to the Oracle Coherence Monitor application. Alerts may be managed by administrators, who set the threshold values as desired within the GUI of the Oracle Coherence Monitor application. An initial set of 7 alert types is available: Available Memory Low for Cluster Available Memory Low for Node Bad Communication by Cluster Bad Communication by Node Capacity Limit for All Caches Capacity Limit for Cache Endangered StatusHA for All Caches

14644: Restructuring of application directory and scripts

The organization of the Oracle Coherence Monitor (OCM) has changed, as have the scripts used to run it. DIRECTORIES Oracle Coherence Monitor no longer in a single directory, but has been integrated more closely into the RTView directory structure. Main class files and displays - All of the files necessary to run the Oracle Coherence Monitor are now included in lib/gmsjocm.jar, which is included in the classpath when you pass in the -ocm argument. As a consequence, you are not required to run the OCM from a specific location. Run scripts - The scripts are now located in the RTV_HOME/bin directory, and are included in the users PATH in an initialized command windows. Documentation - Expanded documentation can now be found in the RTView Userguide, in the Monitoring Oracle Coherence subsection. Simulated Cluster - The simulated cluster is now located in demos/ocmdemodata. Customization - The demos/ocmdemo directory contains copies of the configuration files that are included in lib/gmsjocm.jar, as well as some new examples of customization. JMX CONNECTIONS The Oracle Coherence Monitor connection is controlled via the $conn substitution. Previously $conn was set to "Development" by default, and "Development2" was used to connect to a remote JMX RMI. "Development" has been renamed to "LocalJmxNode", and Development2 has been renamed to "RemoteJmxRMI". "RemoteJmxRMI" is now the default value of $conn. SCRIPTS RTView applications now recognize two new mutually-exclusive command line arguments, -ocm and -ocmnode. They must be the first argument used. -ocm: Adds gmsjocm.jar to the classpath, and by default connects RTView applications to Oracle Coherence via a remote JMX RMI on port 9991. -ocmnode: Adds gmsjocm.jar and COHERENCE_HOME/lib/ coherence.jar to the classpath, runs the application as an Oracle Coherence Node, and sets $conn to LocalJmxNode. By default - Dtangosol.member.name will be set for you, but you can override this default by setting -Dtangosol.member.name in the RTV_JAVAOPTS variable. The scripts have been replaced as follows: run_monitor run_ocmonitor run_monitor_node run_ocmonitor -ocmnode run_builder_node run_builder -ocmnode run_historian_node run_historian -ocmnode run_dataserver_node run_dataserver -ocmnode run_displayserver_node run_displayserver -ocmnode The old scripts will eventually be removed from the product.

14701: HSQLDB used for RTVHISTORY and ALERTDEFS database

HSQLDB is now available for the new Oracle Coherence Monitor application for persisting Alert definitions and saving data for the Data Historian. To start the database, you must run the following command line script from the demos/ocmdemo directory: run_hsqldb The Oracle Coherence Monitor is configured to find and use this database by default.

14712: New option to generate unique Node Names

A new option, -idnames, can be used to start any of the Oracle Coherence Monitor applications. If started with this option, node names will be forced to be unique, even if the Member Name is not uniquely assigned.

14714: Memory/Communication Trends by Node Display added

Two new displays have been added, Memory Trends and Communication Trends. These show the memory utilization and the communication failure rate for the worst ten nodes in a trend graph over a selectable time range.

14716: New Activity/Capacity Trend views for All Caches

Two new displays have been added, the All Caches Activity and Capacity Trends. These show up to ten active Caches comparing total activity or capacity against one another. The user can select which metric to compare.

14718: Name changes in navigation tree

The names of some of the displays in the navigation tree have been changed to better reflect their purpose.

14725: Time range and cache name selectors now global

The selection of Time Range or Cache is now retained across a change of display.

14727: Admin pages now always visible, but buttons disabled

The behavior of displays based on roles has been changed. Now, the displays are always visible, but the buttons are disabled if user does not have permissions.

14739: Mechanism added for including custom displays in navtree

The Oracle Coherence Monitor application has been enhanced look for, by default, a navigation panel configuration file called "custom_navtree.xml". If found it will read this file and add the contents to the left hand navigation panel. One sample display is included by default in demos/ocmdemo.

14742: Eliminated need for substitution change to load historian data

There is no longer any need to make changes to OPTIONS.ini to select whether historical data comes from the database or in- memory tables. Historical data now always comes from in-memory tables, and is pre-loaded from any HISTORY database available and enabled.

14751: Show RTView Memory Utilization Information in Metrics Admin page

The Metrics Administration display has been enhanced to show the memory used by RTView to store the history of Cache and Node statistics that are presented in trend charts.

14757: Service/Cache/Node dropdown lists auto-populate

The dropdown lists for Service, Cache, and Node will now auto- populate based on the available selections. It is no longer necessary to predefine selector variables with substitutions on initialization. Also, when switching to a different service, the cache selector is automatically set to the first cache in that service.

14758: All Caches Activity/Capacity Charts now scale better

The Current Activity and Current Capacity charts now scale graphically to accomodate larger number of caches.

14759: Cache Statistics page now shows average object size

The Cache Statistics page now shows average object size

14760: Storage Node Count on overview display is now correct

On the Overview display, the Storage Node Count was sometimes incorrect. This problem has been corrected.

14764: Provide button to perform a Print PDF operation

A new feature has been added to generate a PDF report consisting of several of the key displays in the Oracle Coherence Monitor application. The button labelled "Generate Report" on the Administration -> Admin Metrics display will cause the generation of a PDF report from the configuration file ts_report.xml contained in the gmsjocm.jar file. The generation of the PDF report requires a lot of memory, so it is recommended that you add "-Xmx256m" to the RTV_JAVAOPTS variable to increase the amount of memory available.

14818: The Invocation Service Detail page was incorrect

The Invocation Service detail page was incorrectly showing the same information as the Cache Service Detail page. This has been corrected.

Substitution

14755: 'Remove Existing Subs' no longer adds extra listener

In previous releases, if an object's drilldown target was configured to set a substitution in the current display and the 'Remove Existing Substitutions' box was checked, in some cases this caused an extra listener to be added for any attachment on the display that used the effected substitution. This caused the object to behave incorrectly, for example a trend graph may plot spurious data points. This problem is fixed.

Viewer

14641: Menus no longer obscured by Fx Trend graph in the Display Viewer

The Fx Trend object no longer obscures the Display Viewer's pulldown and context menus.

14681: Included files now can be found in .jar

In prior releases, if an rtv file was loaded from a jar file and it included another rtv file that was also contained in the jar, the included file was not loaded. This is fixed.

Version 4.8d1 Release Notes

Builder

14605: Flash error when opening builder from shortcuts

In the previous release, if the Display Builder was launched from the Windows desktop shortcut and an instance of the Fx Trend was created, on some installations the following error message would appear ERROR: can't load gmsflashwrap.dll This problem is fixed.

Display Server

14617: Corrections to servlet make_war scripts

Typos were corrected in the following .war creation scripts: servlets/rtvdisplay/make_war.bat servlets/rtvdata/make_war.sh These should now run without error.

General

14606: Clicking background of display no longer throws exception

In the 4.8c1 release, RTView would sometimes throw an exception if you double-clicked in a blank area of a display. This has been fixed.

Object Library

Composite Object

14560: Interactivity support for Display Builder and object grid

In the previous release, the composite object had no support for mouse interaction, drill down, commands and controls within composite displays when running in the builder or when the composite object was displayed in an object grid. The composite object has been enhanced so that all of the features are now supported, except in the main Display Builder window. These features are suppressed in the main Display Builder window to facilitate selecting and editing the composite object.

14607: Applets with composite objects fail without file access

In the 4.8c1 release, the Display Viewer Applet would throw a security exception if you display contained a composite object. This has been fixed.

14609: Bug with composite object extent and data attachments fixed

The 4.8 version of the composite object had the following issues: 1. Data attachments for objX, objY, commandConfirmText and transparency percent were not supported on objects in the composite display. 2. The extent used to layout out composite objects in an object grid was off by one pixel, resulting in a one pixel shift of the object layout in the object grid. Both of these issues have been fixed.

Version 4.8c1 Release Notes

Builder

14449: Corrupted .rtv file now reports error if it fails to load

A corrupt RTView file that is read into the Builder or Viewer will now report an error instead of silently failing.

14469: Fix for exception when no attributes exist for an mBean

There is no longer an unexpected Java exception when editing a JMX attachment where the mBean being accessed has no attributes.

Commands

14477: Custom Data Source command dialog bug fixed

Previously adding a new command to a multiple command, for a custom data source with a non-all-lower case dsKey would bring up the default Define Command dialog, rather than the intended Define Command dialog for the custom data source. This has been corrected.

Data Server

14470: obj_text03 no longer shows long as float if using Data Server

In the previous release, if the type of a data table column is long, and if a cell in that column is displayed on a label object that supports a string (rather than numeric) label, and if the table is accessed via the data server, the value is displayed as a float (e.g. 123.0) rather than a long (123). This is fixed.

Data Sources

IBM WebSphere MQ Administration Data Source

14395: Columns now validate for IBMADM if there are > 1

Previously the attach to data dialog for the IBMADM data source would only correctly validate the Column(s): field for a single column. The field will now correctly validate both single and multiple columns.

JMS Admin Data Source (for TIBCO EMS only)

14552: Additional EMS Server metrics incorporated

The following metrics are now available for the ServerInfo table: diskReadRate diskWriteRate getProcessId maxMessageMemory messageMemory messageMemoryPooled processId syncDBSize

JMS Data Source

13936: Use JNDI to lookup JMS Destination names.

Support for BEA Weblogic via JNDI (Java Naming Directory Interface) has been added to RTView. At this time we do not support the use of JNDI with other JMS providers. This functionality requires that the BEA WebLogic specific jar(s) be included in the RTV_USERPATH environment variable. The Builder requires the use of of the Standard Weblogic jar in order to extract and display JNDI administered destinations (Topics and Queues) in the JMS Attatch to data dialog, and JMS Command dialog. The viewer can be used with the Standard Weblogic jar or the thin client jars. The user has the choice of using the Standard Weblogic jar example: set RTV_USERPATH=c:\BEA\server\weblogic92\lib\weblogic.jar or the thin client jars example: set RTV_USERPATH=c:\BEA\server\weblogic92\lib\wljmsclient.jar; c:\BEA\server\weblogic92\lib\wlclient.jar More information on the thin client jars can be found here: http://edocs.bea.com/wls/docs92/client/jms_thin_client.html Creating a JNDI JMS Connection to BEA ===================================== JMS JNDI Connections for BEA Weblogic destinations are looked up in a naming directory e.g. exampleQueue exmapleQueueViaJNDI To set up a JNDI connection, go to the JMS JNDI Connections tab and click the Add JNDI button. Set the following fields: Connection Name: Define the name you would like for your connection. (must be unique for all JMS Connections) Inititial Context Factory: Select the Weblogic Inititial Context Factory weblogic.jndi.WLInitialContextFactory from the Inititial Context Factory drop down Provider URL: The provider url is of the form: protocol://server:port The default protocol is t3, and the default port is 7001 example: t3://weblogicServer:7001 You can enter the entire URL by hand, or select the initial weblogic URL from the Provider URL dropdown, and edit the parts that need to be changed. Connection Factory: Enter or Select the JNDI Connection Factory name. For BEA Weblogic Select either of the default JNDI Connection Factory names from the Connection Factory drop down. Both default JNDI Connection Factory names can be used for both Topics and Queues Security Principal: Security Principal and Security Credentials may be left empty - in which case the default values will be used. Security Credentials: See Notes for Security Principal. Attaching to JMS Data ================= Connection: Choose the connection name you defined in Application Options Destination Type: Topic or Queue Browser Topic Name/Queue Name: For jndi connections, you can specify the jndi name, by entering it, selecting it from the drop down list, or selecting from the JNDI Destination name hierachical tree dialog invoked using the "..." button. Select the desired destination name in the tree then click OK. Note that the full path of the selected name is used and is selected in the drop down. If a valid Destination name is used, it will be selected and visible in the hierachical tree dialog when it is invoked. example: JNDI-Topic-1 Data Mode: Choose whether you wish to see fields, fields and properties, or only properties Message Field: This dialog will currently not populate with the message fields for BEA. You can select * to see all possible fields/ properties, or type the message fields by name, separated by semi-colons example: var1;var3 Defining JMS Commands ==================== Connection: Choose the connection name you defined in Application Options Destination Type: Only topics can be sent at this time. Message Type: Either Text or Map Message types are possible. Topic Name: For jndi connections, you can specify the jndi name in the same way as the attatch to data dialog. example: JNDI-Topic-1 Fields & Properties: Define as many fields/properties as are needed. See the documentation for more information.

14458: JMS Queue Browser retrieves properties for all messages in group

Previously, the JMS Queue Browser only retrieved message properties for the first message in a group. This has been fixed.

JMX Data Source

14389: Wildcard supported in the mBean name to the left of the colon

it is now possible to use a * in the mBean name to the left of the colon as well as the right. This should be in the form SampleJmxHawk_*:* Methods and attributes may now be addressed in this way to conveniently affect the behavior of similar beans on multiple connections.

14396: Warning message given when read-only rights prevent access

In the RTView 4.7 release, if the JMX connection did not have permission to invoke operations, data attachments against operations would fail silently. Now, an error message is printed.

14401: JMX Notifications expand composite attributes

Support for expanding composite attributes was added to the notified JMX data object.

14408: Command status returned for JMX commands

The command status of an mBean operation invocation is now returned as a message dialog, if an Exception is thrown in the mBean. This appears as an Error Dialog that shows the error as ERROR: Exception name, COMMAND: the RTView Command string and DETAIL: the details of the exception, if any.

14429: JMX notifications now support arrays of simple data types

The JMX datasource now correctly handles notifications involving arrays of simple types such as int[].

14509: JMX Command and Attach to Data dialogs retain window size

The JMX Attach to Data and Command dialogs have been modified so that window size information is retained after the user resizes the window and closes/reopens the dialog.

14514: All beans queried to populate the list in attach to data dialog

All beans on all connections are now queried to populate the list in attach to data dialog. Additional work was done to ensure that all connections were correctly polled to ensure that valid mbean name:wildcard combinations are seen as valid. Extra corrupted rows of data are no longer returned if the connection is *.

14518: *:* is supported in the mBean entry field of the mBean name

Use of *:* in the mBean entry field of the mBean name is now supported. For Polled Data Objects ALL beans will be returned. For Notified Data Objects only beans that send notifications will be returned.

14531: Column validation improved

The column validation for JMX Notified Data Objects was improved. Previously the Select Columns dialog would indicate that some columns where invalid (pink) when they were available. This has been corrected.

RRD Data Source

14368: Support added for RRD Data Source

Support has been added for the RRD (Round Robin Database) data source. The RRD Data Source does not support Solaris at this time.

SQL Data Source

14532: Improved handling of NaN values by storing as NULL in SQL

The SQL Data Source now handles NULL values found in double data, by converting them to NaN. Additionally, the Historian will convert NaN to NULL before writing the data. This permits tables containing NaN values to be archived using the Historian.

StreamBase Data Source

12596: Performance improvements to StreamBase tuple processing

The performance of StreamBase tuple processing in RTView has been significantly improved. Previously, processing could get behind, and even result in an infinite loop if there were many tuples to process. This problem has been fixed.

14472: Boolean data type supported in tuples

Previously RTView did not support boolean types in StreamBase tuples. Now it does.

14540: Table no longer shows blank row if no data received

Previously, a table attached to a StreamBase stream would show one blank row of data even though no tuples had been received. This problem has been fixed.

14550: CSV history files enhanced to handle embedded NEWLINEs

Streams containing embedded NEWLINES in string fields can now be stored and loaded from CSV history files.

TIBCO Rendezvous Data Source

14414: Define TIBCO Rendezvous Command dialog supports multiple fields

The Define TIBCO Rendezvous Command dialog has been enhanced to allow you to specify multiple fields for your TIBCO Rendezvous message. You can set the name, value and data type for each field. The data types are converted to TibrvMsg data types as follows: string - TibrvMsg.STRING integer - TibrvMsg.I32 long - TibrvMsg.I64 float - TibrvMsg.F32 double - TibrvMsg.F64 boolean - TibrvMsg.BOOL

XML Data Source

14442: RTView file now loads if XML ds has null sourcename (sub='')

A display file previously would fail to load properly if there was an attachment to an XML data source that used a substitution for the XML source name and that substitution was defined to be "" or null. This problem has been fixed.

Demos

JMX Monitor

14459: SampleJmxApp enhanced to send additional notifications

The SampleJmxApp has been enhanced in several ways: 1. It now sends the same set of Attributes as notifications. 2. It now accepts a new command line argument of -notifyMovements:nnnn. 3. It now sends a new list of Hawk indexes as HawkList. The -notifyMovements:nnnn argument will turn on sending of hawk movements. The nnnn is the number of milliseconds delay before each new set is resent. run_samplejmxapp -notifyMovements:2000 This will show a trace in the console like: SampleJmxAgent is running... SampleJmxHawk_hawk_1:Hawk=hawk_1,Type=Foo,Random=4.6292412407998675 was added... Notifications sent at: 11:09:48 AM Notifications sent at: 11:09:50 AM Notifications sent at: 11:09:52 AM

Display Server

14375: Exit Display/Data Server if port is in use

The Display Server task will exit if the configured port is already in use. The task will display an error message prior to exiting. In prior releases, the error message was displayed but the task continued to run. The Data Server task will exit if the configured port is already in use and if the Data Server was run with either the -nogui or -daemon option. This change only affects socket mode.

14564: Display Server no longer runs unsupported multiple commands

In previous versions, multiple commands in the Display Server would try to execute commands that were not supported by the Display Server, even though they warned the user that they were not supported. This has been corrected so that unsupported commands are no longer executed.

14583: Radio buttons no longer crash the headless Display Server

In the previous release, if the Display Server was run on a headless system it would crash if a client opened a display containing a radio button control. This problem is fixed.

Functions

14376: New Delta Rows function

A new function, Delta Rows, has been added to the Display Builder. The Delta Rows function returns a table that includes, for the specified columns, new values for the difference between this update and the previous. The new values may be appended to the input table in columns named by prefixing "Delta" to the column name, or they may replace the values in the input columns. The arguments to this function are as follows: Table - The table of interest. Delta Column Names - The names of one or more columns for which deltas will be calculated. At least one name must be given. Index Column Names - The names of one or more columns that uniquely identify a row in the table. If left blank, the default is to calculate deltas for all rows as if they had the same value. The values contained in each index column are concatenated to form a unique index used to organize the resulting summary data. Replace Data With Deltas - If set to 1, the delta values replace the original values in the same column in the returned table; otherwise they are in new columns appended to the table. Display Negative values - If set to 1, the delta values less than zero will be displayed with a negative sign and the value; otherwise they will be displayed as zero.

14427: Tabular Arithmetic Functions added

The Display Builder has been enhanced with the addition of the following functions: Add Columns Subtract Columns Multiply Columns Divide Columns Average Columns Min Columns Max Columns Percent Columns Modulo Columns These function operate upon the values in each row of the two input columns and store the results in a new column. If a specified column is not found in the input table, the functions attempt to convert the string argument to a numeric value. If this succeeds, the value is used as a constant in each row-wise operation. If it fails, an error is printed and the input table is returned unchanged. If a specified column is found but is not of a numeric type, an error is printed and the input table is returned unchanged. Add, Subtract, Multiply, Average, Min, and Max Columns give a Double result if either operand column is Float or Double; otherwise the result is Long. Divide, Percent, and Modulo Columns always give a Double result. If a divisor cell is zero the result is NaN. The Display Builder has also been enhanced with the addition of the following function: Convert Columns This function converts the specified columns to the specified type and stores the result in the original columns. If a specified input column is not found it is ignored. If no input columns are found an error is printed and the input table is returned unchanged. The type is specified as a string representing a valid type name, which may be abbreviated to its first letter, Valid type names are: Boolean, Integer, Long, Float, Double, and String. If an invalid value is given, an error is printed and the input table is returned unchanged. If converting from Boolean the result will be 0 or 1 in the specified type. If converting from String to Boolean the result will be True if the input string is "1"or "true"(case insensitive), otherwise will be False. Otherwise if converting from String the result will be zero if the conversion fails.

14432: New functions added for comparison of scalars

The Display Builder has been enhanced with the addition of the following functions: Min, Max, Average. These functions operate on two numeric arguments and return a numeric result. The Average function returns the average of the two arguments. The Min function returns the smaller of the two arguments. The Max function returns the larger of the two arguments. Note that the Display Builder previously included functions with the names Min, Max, and Average that operated on all the rows or columns of a table. These functions have been renamed to Min All Rows Or Columns, Max All Rows Or Columns, and Average All Rows Or Columns respectively. In addition the function previously named Sum has been renamed to Add All Rows or Columns.

14439: "Public" column added to Display Builder Function dialog

The Display Builder Function dialog now displays a column "Public" indicating whether a function is defined to be public or not.

14457: Double quotes supported in function description field

In the Display Builder Edit Function dialog, if the Description field included double-quote characters, the function definition would not be saved and restored correctly. This has been fixed.

14475: Corrected deadlock when Data Server applies data to listeners

In the previous release, under certain conditions a deadlock can occur in the function data source when data is received from the Data Server. This has been fixed.

14495: Function dialog list now shows more than 100 functions

In the Display Builder Functions dialog, if more than 100 functions were defined in a display, only the first 100 would be listed in the function table. This has been fixed.

14533: Enhanced support for NaN in functions

Improvements have been made in the way RTView functions handle values of type Double which are not valid numeric values, such as the result of division by zero. These values are represented in Java by the value "NaN" (Not a Number). Numeric displays of this value will show "NaN" and string displays will show a small square. There are three types of functions that can return NaN values: those that operate on scalars, those that operate on pairs of table columns ("columnar"), and those that operate on all rows or or columns of a table ("tabular"). In general additive functions will ignore an NaN input and return a valid value and multiplicative functions will return a NaN result given a NaN input. Detailed behaviors follow. Scalar functions given a NaN value: Add, Subtract, Average, Min, and Max will return the other value; Multiply, Divide, Percent, Modulo, and Delta will return NaN. Columnar functions given a NaN value in a pair of cells for a given input row: Add Columns and Subtract Columns will return the other cell's value for that row; Multiply Columns and Divide Columns will return NaN for that row. Tabular functions include Add All Rows Or Columns, Average All Rows Or Columns, Min All Rows Or Columns, and Max All Rows Or Columns and operate across columns or rows. These functions all ignore a NaN cell in their input. Please note that the above description represents a change in behavior for the following functions: Scalar Add, Subtract, Average, Min, and Max would have returned NaN if either input value was NaN; they now return the other value. Scalar Percent and Delta would have returned 0 if either input value was NaN; they now return NaN. Scalar Divide and Modulo on an attempt to divide by 0 would have returned 0; they now return NaN. Add Columns and Subtract Columns would have returned NaN if either of a pair of input cell values was NaN; they now return the other cell value. Add All Rows Or Columns and Average All Rows Or Columns would have returned NaN for a row or column if there were any NaN cells in the row or column; they now ignore the NaN cells.

General

14476: Warning message for duplicate included displays removed

In prior releases, if a display includes the same file multiple times, the Display Builder and Display Viewer would issue a warning message. This warning message has been removed.

Object Library

Composite Object

14367: New Composite Object added to palette

A composite object has been added to the palette. This object displays an rtv file, allowing you to create object group templates for use in your displays. The composite objects can also be used in object grids. Public variables that are not mapped to substitutions in the composite display are exposed as properties on the composite object. Substitutions from the panel containing the composite object are inherited by the composite object. Additional substitutions can be specified using the substitutuions property. The composite object has limited support for mouse events, drill down, command and controls within the composite display. These items are supported only in the Display Viewer and Display Viewer Applet, and only if the composite object is instanced directly in the display. They are not supported at all for composite objects instanced in object grids. In the Display Viewer and Display Viewer Applet, if an object within the composite display has a drill down or command assigned, this will be used instead of the drill down or command on the composite object when the user selects it. The drill down or command on the composite object will be used if the user clicks on an empty area in the composite display or on an object in the composite display that does not have a drill down or command associated with it.

Fx Trend Chart

12722: New Fx Trend Graph object

OVERVIEW: A new graph object named Fx Trend has been added. Fx Trend and the existing trend graph object have similar features. However, the interactive features of Fx Trend (scrolling, zooming, sliding cursor) are fully supported in the thin client. Fx Trend also has a few additional features unavailable in the trend graph. In the Builder, Fx Trend (obj_fxtrend)is found on a new tab in the palette named Fx Graphs. FEATURE HIGHLIGHTS: Traces: supports 1 to 8 traces as determined by the traceCount property. Zoom: zoom-in by dragging in trace area, zoom-out by Shift+Click. Scrolling: live scrolling through time range Cursor: slide horizontally to see interpolated data values in legend Data Tips: text boxes with data info popup when mouse is over a data point Legend: can be positioned above, below, right, or left of trace area. The legend can be resized interactively, and clicking on a trace's legend entry toggles the visibility of the trace. Log Axis: logarithmic y-axis supported COLOR PROPERTIES: Color properties are treated differently on Fx Trend than on other objects. In the Builder, the color chooser dialog has 4 tabs. The "RTView Colors" tab shows the traditional palette of 252 indexed colors; the "Swatches" tab shows a standard Java color palette; the "HSB" tab allows color selection by hue, saturation, and brightness; and the RGB tab allows color selection by red, green, and blue intensity. The color chooser also has a button for selecting a properties Default color (described separately for each color property below). Internally, all color properties on Fx Trend are stored as a 24 bit integer RGB value in the range of zero (black) to 16,777,215 (white). So if a color property on an Fx Trend is attached to data, keep in mind that it expects an integer value in that range, not a color index between 0 and 252 as with other objects. A value of -1 indicates the default property color. Note that the Default color and colors selected from the Swatches, HSB, and RGB tabs are only supported on Fx Trend. If a color is selected from one of those tabs and then copied and pasted to a color property on any other object, white will be used instead. PROPERTIES: Like the trend graph, the Fx Trend has many configurable properties, some of which apply to the overall object and some which apply to each trace. The Fx Trend supports 1 to 8 traces as determined by the traceCount property, which has a default value of 1. The following properties apply to the overall object: Background: - bg3dFlag : if checked, a 3d border is drawn around the trend. - bgColor: the background color of the trend. The Default color is steel gray. - bgGradient: if checked, the background is gradient filled. Data: - maxPointsPerTrace: if more data points than this are applied to a trace, the oldest data points are discarded so that only this many are plotted. Interaction: - cursorColor: color for the vertical cursor that slides across the trace area. - cursorFlag: if checked, the vertical cursor is visible when the mouse is in the trace area. Label: - label: the trend title text. Cannot contain newlines (\n). If blank, the trace area increases to fill the title area. - labelTextAlignX: alignment for the trend title. - labelTextColor: color for all text on the trend, default is black. - labelTextFont: font for the trend title. - labelTextSize: size for the trend title. Legend: - legendBgColor: background color of legend area. If Default is selected, the legend background is unfilled so the background of the trend is visible. - legendBgGradientFlag: if checked and if legendBgColor is not Default, the legend background is gradient filled. - legendPosition: indicates if the legend is positioned above, below, left, or right of the trace area. - legendTextFont: font for legend text, note that bold fonts are not supported. - legendVisFlag: the legend is visible only if this property is checked. - legendWidthPercent: the percentage of the trend width (or height, if positioned at top or bottom) to be occupied by the legend. Plot Area: - traceBgColor: background color of trace (plot) area. If Default is selected, the plot area backround is unfilled so the background of the trend is visible. - legendBgGradientFlag: if checked and if traceBgColor is not Default, the plot are background is gradient filled. X-Axis: - timeFormat: see the documentation for this property in obj_trendgraph02. If blank, HH:mm:ss is used. (Some formats are not supported, see below for details). - timeRange: the visible time range, in seconds. If the actual time range of the plotted data exceeds timeRange, a horizontal scrollbar will appear. - timeShift: the number of seconds by which the oldest timestamp in the plotted data should be rounded down, and the newset timestamp in the plotted data should be rounded up. If zero, no rounding is performed. - xAxisFlag: the x-axis is visible only if this is checked. - xAxisMajorDivisions: the x-axis will have this many divisions, with a tick mark and axis label at each division boundary. For example, if xAxisMajorDivisions = 2, a tick mark and label will appear at the left end, center, and right end of the x-axis. If zero, the number of divisions is determined automatically. Y-Axis: - yAxisFlag: the y-axis is visible only if this is checked. - yAxisLabel: a text label for the y-axis (drawn vertically) - yAxisLogFlag: if checked, the y-axis is logarithmic (base 10). Note that negative data points will not be plotted. The following properties apply to each trace 1 - 8: - trace1Label: label show for this trace in the legend and the popup data tips. - trace1LineColor: color for trace line, each trace has a unique default color. - trace1LineShadowFlag: if checked, a shadow is drawn below the trace. Uncheck this for better performance on a trace with many points. - trace1LineThickness: thin, medium, or thick. Use thin lines for better performance on a trace with many points. - trace1Value: can be attached to a scalar numeric data value, in which case a new point will be plotted on each data update, using the current time, or can be attached to a 2 column data table, where the first column contains a timestamp and the 2nd column contains the corresponding y value to be plotted. - trace1ValueDivisor: if nonzero, each y-value is divided by this property before plotting. - trace1ValueTable: can be attached to a 2 column data table, where the first column contains a timestamp and the 2nd column contains the corresponding y value to be plotted. Typically this would be static or update-once data attachment that did not update while the trend was displayed. REQUIREMENTS and LIMITATIONS: The Fx Trend requires version 9.0 or newer of the Adobe Flash Player. In the thin client, the Fx Trend is supported in any supported browser that has the Flash Player installed. If a display containing an Fx Trend is loaded into the thin client and the Flash Player is not installed, a link to the Flash Player download page will appear on the display. In the Builder and Viewer applications, the Fx Trend is supported on Windows platforms only. If a display containing an Fx Trend is opened in the Builder/Viewer, and the correct version of the Flash Player is not available or the local operating system is not Windows, the Fx Trend will be blank and an error message will be issued. In the Builder, the Fx Graphs tab is visible. The Fx Trend is not supported in the Viewer applet on any platform. The Fx Trend object can be resource intensive during display loading and updating. This should be kept in mind when designing displays -- for example, a display containing several Fx Trend objects may load slowly. The Fx Trend is drawn inside a Flash Player window. This means thats the Fx Trend will be drawn above all other objects in a display (except other Fx Trend objects) regardless of the object order -- the "Move to Front/Back" operation has no affect on the Fx Trend. Also, in the Builder, if an Fx Trend extends beyond the edges of the display, it will obscure other panels in the Builder, such as the object palette, property sheet, etc. When zooming or scrolling in the Display Builder or Display Viewer, the Fx Trend will obscure any portion of the vertical and horizontal scrollbars that it overlaps. In the thin client, if the context menu is opened near an Fx Trend object, the menu will be partially hidden by the Fx Trend. Also, a right click inside an Fx Trend will open the Flash Player menu, not the thin client's context menu. When moving an Fx Trend object in the Builder, it is best to grab and drag the trend by one of its edges, just inside the selection hilite rectangle. The trend can't be dragged from within the trace area, since that will initiate a zoom. It can be dragged by other interior areas but it may not move smoothly. The Fx Trend is not included in reports. However, in the thin client, the trend can be printed by right-clicking on the trend and selecting Print from the menu. The zoom-out feature (Shift+Click) is not available in the Display Builder's main editing panel. So it is possible to zoom-in on the Fx Trend but not to zoom-out. Both features are available in the Display Builder's preview panel. Unlike the trend graph, the Fx Trend does not support properties for yAxisMin/Max, yAxisAutoScaleMode, or timeRangeBegin/End. There is a single y-axis and its range is always autoscaled. The range of the time axis is always autoscaled. Line styles, mark colors and styles, and alarm properties are not supported. If the yAxisLogFlag property is checked, data points with negative values are not plotted since the base 10 log of a negative value is undefined. The legendTextFont property does not support bold fonts, for example Serif and SerifBold have the same appearance (unbold). The Fx Trend timeFormat property supports a subset of the time formats available in the trend graph object (obj_trendgraph02). These format characters are supported: y (year), M (month), d (day of month), E (weekday), a (am/pm marker), H (hour 0-23 in day), K (hour 0-11 in am/pm), m (minute), s (second). Also \n can be used for a newline. These characters are NOT supported by Fx Trend: G, w, W, D, S, z, Z.

Object Grid

14484: Performance improvements for obj_objectgrid

The performance of the object grid has been improved. In previous releases, the object grid's update could be slow if it was attached to a table with a large number of rows, especially if the number of rows was changing. This has been improved.

RTView Display Panel

14548: Default bg3dFlag changed to false for background model

The default for the bg3dFlag model property has been changed to false. Existing displays will not change, this change only impacts new displays.

Transaction Message Monitor

12594: Single destination supported for all messages in transactions

The Transaction Monitor has been enhanced to allow better support of re-used destinations. In previous releases, the Transaction Monitor had only limited support for re-using a single destination in multiple transaction definitions. This enhancement allows you to use the same destination as the first message in multiple transaction definitions, and also allows you to use the same destination multiple times within the same transaction definition. For each message that will be used as the first message in multiple transactions, you must specify a transDefField at the beginning of the TRANSACTIONS.ini. It must contain the destination name and the corresponding field in that destination that will contain the value that indicates which transaction the message is part of. All transDefField definitions must all come before the first transaction definition. For example: transDefField msgName fieldname Then, at the beginning of each transaction definition that contains a message specified in the transDefField, you must add a transDefValue. This must come before the first message line in the transaction definition. The transDefValue must be the value that the transDefField will contain if it is to be used to for this transaction: startBusTransaction myTrans transDefValue myTransaction msg msgA & For each message that will be used multiple times within a single transaction definition, you must specify a msgOrderField at the beginning of the TRANSACTIONS.ini. It must contain the destination name and the corresponding field in that destination that will contain the value that indicates which transaction the message is part of. All msgOrderField definitions must come before the first transaction definition. For example: msgOrderField msgA orderA Then, on each msg line that contains a message specified in the msgOrderField, you must add a msgOrderValue. The msgOrderValue must be the value that the msgOrderField will contain if it is to be used to for this transaction: startBusTransaction myTrans msg msgA ID msgOrderValue:1 msg msgA ID msgOrderValue:2 This enhancement has also added improved error checking for transaction definitions in the TRANSACTIONS.ini.

12705: Better debugging info for Transaction Monitor (TM)

The Transaction Monitor has been enhanced to enable and disable the display of debug data on an as needed basis through its JMX MBean. Whereas in the past it was necessary to launch the Transaction Monitor with the -debug command line parameter to enable debug output, it is now possible to instead start and stop the display of debug information directly through its MBean.

Version 4.7d1 Release Notes

Object Library

Control Objects

14415: Control object varToSet object property bug fix

In the 4.7c1 release, the Attach to Data menu for the varToSet property showed FUNCTION instead of VARIABLE. This has been fixed.

Version 4.7c1 Release Notes

Alerts

13673: Tabular alert objects with only one column no longer crash

In previous releases, tabular alert objects crashed if their data attachment only had one column. This has been fixed so that it does not crash, but prints an error instead.

Builder

12480: Drill down on a maximized window no longer causes window resize

In the Display Viewer, under certain conditions, invoking a drilldown command whose target was the current display could result in the Viewer window being resized; specifically, it would be restored to normal if it was maximized. This would happen only on Windows, and only if the Viewer were originally invoked with a pathname containing one or more forward slashes (e.g. "path/ file.rtv"). This problem has been fixed.

14332: Local function deletion when namespace conflicts can be undone

The Display Builder now supports undo/redo of deletion of a local function when a global function with the same name exists.

Builder - Property Dialogs

14308: Attach to Data dialogs for included objects now all uneditable

In the Display Builder, when invoking an Attach to Data dialog for an included object (an object from an included file), the fields in the dialog should be disabled, so that you can examine but not change the data attachment. There was a problem such that certain fields in some of the Attach to Data dialogs would not be disabled - in particular, those fields which invoked a subsidiary dialog via a '...' button. (An example is the Columns field in the Attach to XML Data dialog). This problem has been fixed.

Commands

12367: Support added for multiple commands per action

Multiple commands can now be defined, edited and executed. Everywhere where a single command could be defined and executed, a sequence of commands can be executed by means of the "MULTIPLE" command definition. The Define Multiple Commands dialog is presented when selecting the Define Commmand->MULTIPLE to define a command. The Define Multiple Commands dialog allows for the creation, editing, removal, duplication and reordering of single commands within a multiple command. Existing single commands can be converted to a multiple command, with the existing single command as the initial command in the command list, by selecting Define Command->MULTIPLE to edit the existing command. Multiple commands consisting of a single command will be saved as a single command. Multiple commands are executed as a sequence of individual commands. The individual commands are launched in sequence. There is no guarantee that any individual command will have completed before the execution of the next command due to their potentially asynchronous nature. If confirmation is required for a multiple command, a single confirmation dialog is presented to the user prior to the execution of the individual commands. If the user confirms the execution, all individual commands are executed in sequence with no further confirmation. If the user cancels the multiple command, none of the commands in the sequence are executed.

14359: Multiple Commands supported on Display Server

The multiple command feature is supported by the Display Server. For more information see the release note for E12367.

14363: System command no longer creates invalid drill down string

In previous versions, it was possible to create an incorrect Drill Down Command string if you left all dialogs blank, but still clicked "OK". This has been fixed so that no string will be created if you do not enter any information in the Drill Down dialog.

14377: Non-interactive commands no longer ask for confirmation.

Previously, non interactive commands(Heartbeart, Threshold and Alert) would ask for user confirmation before being executed if the Confirm Commands property, in the General tab of the Applications Options Dialog, was set to the "Confirm all." value. This is no longer the case. Non Interactive commands now no longer ask for confirmation.

Configuration Application

12716: Configuration Utility now discovers EMS Servers using routes

In an environment including multiple TIBCO EMS servers with routes configured between them, the TIBCO EMS Servers tab of the Application Options dialog will list the servers discovered via routes (assuming "Discover Servers Using Routes" on the EMS Administration tab is checked). While this worked correctly when the Application Options dialog was invoked from the Display Builder, in the Configuration Utility it did not work correctly; servers that should have been discovered via routes were not listed. This has been fixed.

Customization

14357: Custom Data Source can reuse GmsTabularData in Data Server

The Data Server has been enhanced to better support custom data sources. Some custom data sources reuse instances of the GmsTabularData object. For example, a data source may append a new row of data to an existing data table, rather than creating a new table with all of the rows. However in the previous release, the data server did not always push a modified table to its clients. This has been fixed. No changes are required to custom data source code to take advantage of this improvement, provided all the modifications the data source makes to an existing GmsTabularData object involve at least one of the following methods: setCellValue, setDateCellValue, addRow, removeRowAt, insertRowAt, addColumn, removeColumnAt, appendData, sortRows. If a custom data source modifies a GmsTabularData object without using one of those methods, it should call the bumpModCount method afterwards. It is harmless to call bumpModCount more than once per modification to the table.

Data Sources

12564: Missing data source jar warnings removed

In previous releases, an error was printed to the console if the jar for any of the standard licensed data sources was not found. These errors are now only printed if you use the -dsfailtrace command line argument.

IBM WebSphere MQ Administration Data Source

12737: Additional columns added to Channel table for IBMADM data source

The following columns have been added to the Channel table: Buffers received, Buffers sent, Bytes received, Bytes sent, Batches completed These values use the following internal attributes MQIACH_BUFFERS_RECEIVED, MQIACH_BUFFERS_SENT, MQIACH_BYTES_RECEIVED, MQIACH_BYTES_SENT, MQIACH_BATCHES

JMS Admin Data Source (for TIBCO EMS only)

13968: RTView no longer crashes if TIBJMS_ROOT is unset

In previous releases, RTView crashed if the TIBCO EMS Administration data source was licensed, but the TIBJMS_ROOT environment variable was not set. This has been fixed.

JMX Data Source

12639: Support added for arguments in JMX data attachments

Support has been added for arguments in JMX data attachments. When using the Attach to JMX Data dialog, if an attribute or operation is selected which requires arguments, the necessary dialog fields are displayed in the dialog to allow for their input. RTView passes the data to the MBean with no additional data validation. This functionality is limited to 20 arguments.

12715: Wildcard support in Connection and mBean Name with notifications

Wildcards are now supported in Connection and mBean name fields of a JMX Data Attachment. 1. Star (*) in Connection Using a * in the Connection field allows the data object to ask for data from all mBeans of the given type from all visible connections. 2. Star (*) in mBean name (Key/Properties in mBean name) Using a * in the mBean name allows mBeans of the same type but offering different data to share a connection. Only a single * is allowed in the RTView mBeanName for a given data object and it must occur after the final colon. E.g. the mBean names offered by a Connection could be "myBean:type=1" and "myBean:type=2". By using a star, references to data from both mBeans may be specified as: "myBean:*". All key/property pairs from the colon will be used. 3. Fetch Initial Data for Notified Data objects The previous implementation of JMX notifications did not poll for initial data values. 4. Star (*) or semi-colon delimited list of attributes for Notified Data objects The previous implementation of JMX notifications did not allow for * or a list of ttributes to be used.

12747: Can now define a local MBeanServer connection

The RTView JMX Datasource can now make a connection to a local MBeanServer. This avoids the remote RMI connection. SImply put the word "local" into the URL field when defining a new JMX Connection. This will indicate that the connection will find an in- process MBeanServer and use it for the connection.

14329: JMX security credentials passthrough supported

User login credentials can now be passed into the JMX connections. To specify that a connection should use the user credentials, select the Use Client Credentials checkbox in the Add JMX Connection dialog. If this is selected, the user credentials from the RTView login will be passed into the JMX connection. The User Name and Password from the Add JMX Connection dialog will not be used. If Use Client Credentials is selected, the connection will only be made if the application is running with the login enabled. When using this feature with the Data Server, you must use the -passclientlogin command line option or select the Use Client Credentials for Database Login option in the Data Server interface in addition to running the Display Viewer or Display Viewer Applet with the login enabled. When using this feature with the Display Server, you must use the -passclientlogin command line option in addition to setting the LoginEnabled flag in the servlet.

14398: Argument fields now show for solitary operation

In previous versions, when an operation was selected from a JMX Application that had only1 operation, the argument fields would fail to display in the Attach to Data Dialog. This has been fixed.

OSISoft PI Data Source

14340: Long point names in PI Data Source no longer cause crash

Previously, point names longer than 80 characters would cause RTView applications to crash. Although RTView still cannot retrieve data for points with tagnames longer than 80 characters, applications will continue to run. In the builder, a warning label is displayed if a point name longer than 80 characters is selected or entered when attaching to the PI Data Source.

14341: Historical data retrieval algorithms in PI Data Source improved

When retrieving historical data using the GetArcValuesX method, time intervals with missing data were not handled properly. The retrieval algorithm has been modified to return interpolated values if no archived data is available for the specified time interval.

StreamBase Data Source

14360: Streambase version 3.7.7 now supported

We now support Streambase version 3.7.7. Prior versions will no longer be supported.

Drill Down

14317: Drill Down location, title and modality in Display Server

The title, position, and modality of browser popup windows opened from the thin client can be configured using the new features described in the release note for E10785. The following limitations apply to this feature in the thin client: - Setting the Window Mode to Topmost has no effect; it is equivalent to setting Window Mode to Normal. - A modal popup will not prevent the user from closing the main browser window. - If the specified position for a popup would cause it to be completely off-screen, the position will be adjusted so that the popup is at least partially on-screen. - When a modal popup is open, if the user clicks outside of the display from which the popup was opened, but still within the same browser instance (for example, in another frame or iframe), the modal dialog may be obscured. When the mouse is moved across or clicked in the parent display, the modal dialog will be raised to the top. - In Firefox, after closing a modal popup the next mouse click in the parent window is sometimes ignored. - A popup window configured to open in the center of the screen or the center of its parent may open slightly lower than expected.

Functions

12631: Function no longer fails when time column is not first column

In the previous release, the Group by Time (and Unique Value) functions failed if the filter column specified was not the first column returned by the data attachment. This has been corrected.

12720: User prompted to confirm before deleting an active function

The Display Builder Functions dialog has been enhanced so that if you try to remove a function that is being used in the current display, you will receive a dialog warning you that the function is in use and asking you to confirm its removal.

12724: Additional information about functions available

The Display Builder has been enhanced to give you more information about functions as you create and edit them within a display. Global functions are now included. Previously functions defined in global files were available for use in the Attach to Function Data dialog but were not included in the Function dialog. Functions can now have a description. When editing a function you may include a textual description of any length. This information will be saved with the display. Functions are displayed in tabular form with additional information. The function table will display, in addition to the function name: Description Local - true (checked) if the function is defined in the current display Source - if a function is defined in a global or an include file, the name of that file Uses - the number of times the function is used in the current display. The function table may be sorted on any of these columns by clicking the column header. Note that unless a function is defined in the current display (i.e. if it is global or included) it cannot be removed or edited; the Edit Function dialog may be invoked for the function but it will display information only. Note also that an Edit button has been added to the Function dialog; the Edit Function dialog may also be invoked by double-clicking a function as before. Finally, note what happens if you have a global function of the same name as a local function. You will see only the local function in the dialog, and you will get a warning to the console like "Warning: function 'X' from file 'xxx.rtv' already found; second definition ignored". You will see this also if you open for editing a display containing functions that is also defined as a global file. The Edit Function dialog has been enhanced to include a text area for entering a description and to display the global file for a global function, as well as the include file for an included function. It will also display a reminder message about why the function is not editable if it is global or included. The Attach to Function dialog has been enhanced to display the description, if any, for the function selected.

12732: Global functions now supported in alerts

In the prior release, global functions did not work if referenced in an alert definition file. For example, if the value property of obj_alert_limits was attached to a global function, the value remained set at its initial value of zero, regardless of the global function result. This problem is fixed.

12734: Data attachments in included functions are now uneditable

In the Display Builder Edit Function dialog, when editing a function that is not defined in the current display, the editable field in the dialog are presented as read-only. However if a function argument field was attached to data and was double-clicked, the Attach To Data dialog would come up and would not be read-only. This behavior has been changed as follows: if the argument is not attached to data then double-clicking it will have no effect; if it is attached to data, double-clicking it will bring up the Attach To Data dialog, but the dialog will be read-only.

12740: Historian handling of function results has been optimized

The Historian has been enhanced to avoid computing and storing a function result too frequently. For example, say an ADD function is used on a history display to add numeric fields from two Rendezvous messages. In prior releases, the ADD function result would be computed and stored whenever either message was received, even if both messages arrived at nearly the same time. In this release, if both messages are received at nearly the same time the function result will be computed and stored only once, using the values from the newly received messages. Displays that show historical function results in a table or graph should no longer show extra results for each argument update. If a function's arguments and its results are all stored by the historian, a slight difference may be seen between the timestamps of the arguments and the result. The difference should be less than a half- second.

14343: Private functions of global file no longer accessible

In the previous release, it was possible for an object to be attached to a private function from a global file. This is fixed.

14344: Function attachment attaches to global if local deleted

The following enhancement has been made to the Display Builder. If a function defined in the current display is deleted, and objects in the display are attached the function result, and there is a global function with the same name, then if the local function is deleted the attached object(s) will update to show the result of the global function, since that is the function to which they are now attached.

14358: Changing references of filtered function attachments now works

In the previous release, if a function was renamed in the builder and the user opted to update existing attachments to use the new name, and all of those attachments applied a filter to the function result, the attachments were not updated but still referenced the old function name. This is fixed.

14374: REFERENCE and COPY functions update immediately

The REFERENCE and COPY function will update immediately when the table argument is set, rather than waiting until the next expiration of the redraw_rate timer.

Licensing

11820: Headless run_gmsregister available for getting PIN

A new option, -nogui, has been added to the run_gmsregister script. This option will bypass the registration dialog, and instead print the PIN to the console. This is useful for licensing on headless systems.

Local Variables

11220: Global variables implemented

Support has been added for global variables. Global variables are similar in many respects to global functions. In prior releases, an object's property could be attached to a variable either (a) defined in the current display, or (b) defined in another display file that is included by the current display. Note that (a) works best for a variable that is only used on one display, while (b) works best for a variable used on multiple displays, but where the variable's value can be different on each display. If a variable should have the same value on every display where it is used, then a global variable is appropriate. A global variable is also useful when used as an argument of a global function. As with global functions, a global variable is defined in a Global Definition file. Objects on any display can attach to a global variable, and any control object can set its value. A Global Definition file, or global file for short, is simply a .rtv file that has been selected on the Globals tab of the Options dialog. Each global file is loaded when an RTView application starts, and each variable or function in the display that is marked as public becomes a global variable or function. (See the release note on global functions for more information). The variable namespace is flat. If the same public variable name occurs in multiple global definition files, only the first one encountered will be used. If a local variable defined in the current display has the same name as a global variable, the local variable will be used. If an existing configuration uses global functions and any of the global definition files contain local variables, they will become global variables when using this release. If the user does not want an existing variable to be global, it will be necessary to edit the display and uncheck the Public checkbox for the variable. This feature is supported in all deployments. However, if this feature is used in combination with alerts, the behavior may vary by deployment. In a standalone Display Viewer deployment, the data sources for alerts, variables, and functions are all contained within the Viewer application. In the Display Server and Data Server deployments, however, the alert data source resides in the server, and is not affected by changes to variables made in the viewer client. In the Thin Client, the scope of global variables and functions is intentionally limited to a browser session. In other words, if multiple displays are opened in the same browser instance (in multiple tabs or popup windows, for example) those displays will all share the same set of global variables and functions. However, displays opened in a different browser instance (a browser running on a different client, say) will use a separate set of global variables and functions. This is done so that any runtime changes a user makes to the value of a global variable (by clicking on a control object, for example) will not affect the displays on other clients. The Display Server will discard the set of global variables and functions for a client session if it receives no requests from the client for 10 display timeout periods (the default display timeout is 1 minute), or 5 minutes, whichever is longer.

12725: Additional information about variables displayed

The Display Builder has been enhanced to give you more information about variables as you create and edit them within a display. - Global variables are included. Previously variables defined in global files were available for use in the Attach to Variable Data dialog but were not included in the Variables dialog. - Variables are displayed in tabular form with additional information. The variable table will display, in addition to the variable name: Scope  either Local, Included, or Global Source  if a variable is defined in a global or an include file, the name of that file The variable table may be sorted on any of these columns by clicking the column header. Fields in the dialog used to edit the properties of a variable will be selectively disabled depending on the variables scope: - Included and Global variables: cannot remove or change Public state - Global variables: cannot change initial value.

14351: Global definition files can now have spaces in name

In the previous release, a filename that contained spaces could not be specified as a global definition file. This problem is fixed.

Object Library

Control Objects

12630: Empty string supported in control object *listValues

The listValues property of the combo box and list box control objects can now specify an empty string for an item's label or value. This also applies to the radioListValues property of the radio control. For example, if the following string is assigned to the listValues property of a list box, the list box will display 3 items where the 2nd item is an empty string: item1;;item3

12723: Keyboard traversal of control objects improved

To improve keyboard traversal of control objects in a display, an integer property named tabIndex has been added to the following control objects: all text controls (obj_c1text*) button (obj_c1button) combo (obj_c1combobox) checkbox (obj_c1btn_chk) radio button (obj_c1radio) list box (obj_c1tlb) table (obj_table02) The default value of tabIndex is zero. When a display is opened, keyboard focus will be given to the control object on the display with the smallest positive tabIndex, if any. Objects which are disabled, invisible, or have a tabIndex of zero or less will not be considered. If the smallest positive tabIndex is assigned to several objects on a display, the one nearest to the beginning of the display's object list will receive the initial focus. Focus can be transferred from one control to the next by pressing Tab, or to the previous control by pressing Shift+Tab. (In some controls, such as obj_c1textarea, the Ctrl key must also be pressed to transfer focus). In this release, the tabIndex property determines tab order. Controls with a tabIndex <= 0 are last in the tab order. Initial focus is given to the object with the smallest tabIndex value greater than zero, from there the tabbing order proceeds in ascending tabIndex order. If several controls have the same tabIndex, the tab order among them is determined by their order in the display's object list. In the thin client only, a tabIndex of -1000 omits a control object from the tab sequence entirely so the control can only be given focus by clicking on it. For example, say a display has 4 text controls named N1, N2, N3, and N4, and they appear in the display's object list in the following order with these tabIndex values: N1 10 N2 20 N3 20 N4 0 Assume all 4 text controls are visible and enabled. When the display is opened, focus will be assigned to N1, since it has the smallest tabIndex greater than zero. Pressing Tab will transfer focus first to N2, since it has the next larger tabIndex (note that N3 has the same tabIndex but appears after N2 in the object list), then to N3, and finally to N4. A property named defaultButtonFlag has been added to the button control object (obj_c1button). If a display contains a button whose defaultButtonFlag property is true, the button can be activated (clicked) by pressing the Enter key when the display has keyboard focus. The button must also be visible and enabled. If several buttons on a display have defaultButtonFlag checked, it will be ignored on all but the first. The default button is higlighted with an extra border. Limitations: In the Viewer, the following objects give no indication when they have keyboard focus: checkbox, radio button, and listbox (if the selected list item is not visible). Focus traversal of radio buttons differs between the Viewer and the thin client. In the Viewer, Tab transfers focus within a radio group and spacebar selects the focused radio button. In the thin client, the arrow keys transfer focus between buttons within a radio group, and transferring focus from one button in a radio group to another selects the newly focused button. In the thin client, the tabIndex does not apply to tables, tree controls, or accordion controls, so a none of these objects can be given the initial focus nor given focus via the tab key. In the thin client in Firefox, the default button is activated via the Enter key only if another control object has focus when the Enter key is pressed. If no control on the display has focus, nothing occurs when the Enter key is pressed.

Stock Chart

12739: yAxisFormat and yValueFormat properties added to stock chart

Properties named yAxisFormat and yValueFormat have been added to the stock chart. These properties have been available on other graph objects, such as the trend graph and xy graph, in prior releases. The format of the y-axis labels is determined by yAxisFormat. The format of the y values shown on the legend is determined by yValueFormat. Both properties are blank by default, indicating that a format with 2 decimal places (0.00) should be used.

RTView Display Panel

10875: Allow user to specify location, title and modality for dd window

The Drill Down Properties dialog has been enhanced to allow the user to specify Window Position, Window Title and Window mode for newly created Drill Down windows. Window Position =============== Window position can be used to specify the position of newly created Drill Down windows. Window position can be set to one of five modes using Set Window Position combo box. The five position modes are: Default Center of Screen Center of Parent Relative to Screen Relative to Parent Default: This is the previous positioning behavior for new Drill Down windows. The client OS window manager will position the newly created Drill Down window. Center of Screen: The newly created Drill Down window will be centered on the screen the parent window occupies. The parent window is the window the newly created Drill Down window was launched from. Center of Parent: The newly created Drill Down window will be centered on the window from which the newly created Drill Down window was launched. Relative to screen: The newly created Drill Down window will be positioned relative to the screen the parent window occupies. The position of the newly created Drill Down Window is specified in the pixel offset (Pixels from left: and Pixels from top:) of the top left corner of the newly created Drill Down Window from the top left corner of the screen the parent window occupies. The parent window is the window from which the newly created Drill Down window was launched. The user must enter the Pixels from left: and Pixels from top: as integer values. Relative to Parent: The newly created Drill Down window will be positioned relative to the parent window. The position of the newly created Drill Down Window is specified in the pixel offset (Pixels from left: and Pixels from top:) of the top left corner of the newly created Drill Down Window from the top left corner of the parent window. The parent window is the window from which the newly created Drill Down window was launched. The user must enter the Pixels from left: and Pixels from top: as integer values. Window Title: ============= Window Title can be used to specify the Title (text in the title bar) of newly created Drill Down windows. The user can set the title by entering the literal title text in the Window Title: text field. If the title is not set, or is empty, then the existing title mechanism will be used (This is the application name followed by the drill down display file name) Window Mode =========== Window Mode can be used to specify the stacking order and behavior of newly created Drill Down windows. Window Mode can be set to one of the three modes using the Window Mode radio buttons. The three window modes are: Normal Modal Always on top Normal: This is the previous behavior for newly created drill down windows. The newly created Drill Down window will be modeless, that is it allows user input in the newly created Drill Down Window, and any other window created by the application. The stacking order of the newly created window is determined by the setting of the "Drill Down Windows Always on Top" global option. Modal: The newly created Drill Down window will be an application modal dialog, that is it allows user input in only the newly created Drill Down Window, and user input will be ignored in any other window created by the application. The stacking order of the newly created modal window is on top of all the other application windows to prevent it being obscured by them. It does this by using the setAlwaysOnTop property Topmost: The newly created Drill Down window will be a modeless window that has the setAlwaysOnTop property set to true. The newly created Drill Down window will be modeless, that is it allows user input in the newly created Drill Down Window, and any other window created by the application. The stacking order of the newly created Drill Down window is on top of all the other non "topmost windows". This applies independent of the setting of the "Drill Down Windows Always on Top" global option. setAlwaysOnTop property setAlwaysOnTop Note on setAlwaysOnTop from http://java.sun.com/j2se/1.5.0/docs/api/java/awt/window.html#setAlwaysOnTop(boolean) Changes the always-on-top window state. An always-on-top window is a window that stays above all other windows except maybe other always-on-top windows. If there are several always-on-top windows the order in which they stay relative to each other is not specified and is platform dependent. If some other window already is always-on-top then the relative order between these windows is unspecified (depends on platform). No window can be brought to be over always-on-top window except maybe another always-on-top window. All owned windows of an always-on-top window automatically become always-on-top windows. If a window ceases to be always- on-top its owned windows cease to be always-on-top. When an always-on-top window is sent toBack its always-on-top state is set to false. This method makes the window always-on-top if alwaysOnTop is true. If the window is visible, this includes bringing window toFront, then "sticking" it to the top-most position. If the window is not visible it does nothing other than setting the always-on-top property. If later the window is shown, it will be always-on-top. If the Window is already always-on-top, this call does nothing. If alwaysOnTop is false this method changes the state from always- on-top to normal. The window remains top-most but its z-order can be changed in the normal way as for any other window. Does nothing if this Window is not always-on-top. Has no effect on relative z-order of windows if there are no other always-on-top windows. Note: some platforms might not support always-on-top windows. There is no public API to detect if the platform supports always-on- top at runtime. If a SecurityManager is installed, the calling thread must be granted the AWTPermission "setWindowAlwaysOnTop" in order to set the value of this property. If this permission is not granted, this method will throw a SecurityException, and the current value of the property will be left unchanged. The AWTPermission is set using the PolicyTool as described here http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/policytool.html

Transaction Message Monitor

12593: Supported added for queues and temporary destinations

The Transaction Monitor has been enhanced to support standard queues and temporary destinations (both topics and queues) for transactions that use TIBCO EMS. The queue messages are not consumed. For both queues and temporary destinations, the TIBCO system monitor messages are used to get the message, so in order to use these in your transactions, you must use a connection that has permission to receive system monitor messages. The system monitor messages generate additional overhead on your EMS server, see your TIBCO documentation for more information. Note that TIBCO does not guarantee system monitor messages, so we may not receive system monitor messages for some queue or temporary destination messages. This means that the Transaction Monitor may report that a transaction is stalled, when it actually completed. The system monitor messages may also not be sent at the same time as the original message, so the latency values my not be accurate. There is no workaround for this. However, in most cases, they will be sent at about the same time the original message was sent. Queue Support: On the msg line of your transaction definition in TRANSACTIONS.ini, preface your destination with QUEUE: in order to specify a queue. For example: msg QUEUE:status.queue.current $prop:ID Instead of subscribing directly to the queue, the Transaction Monitor will subscribe to the system monitor message for that queue. For example $sys.monitor.Q.r.status.queue.current When this message is received by the Transaction Monitor, the original message is retrieved from the message_bytes field of the system monitor message and processed. Only the header and property information for the original message can be retrieved from the message_bytes field, so the id field for all queue messages must be a property or header. IDs in message fields are not supported for queue messages. The connection for this message must have permission to receive system monitor messages and must be to the sending server (ie the queues home server), since this system monitor message is generated when the queue message is sent by the producer. Temporary Destination Support: Temporary destinations are supported on any message in your transaction definition, except the first message. The first message must be a standard (non-temporary) topic or queue. On the msg line of your transaction definition in TRANSACTIONS.ini, use TEMP_DEST in order to specify a temporary destination. For example: startBusTransaction myTransaction msg status.topic.current ID msg TEMP_DEST $prop:ID interface myInterface endBusTransaction Since the Transaction Monitor does not know in advance which destination a temporary destination will resolve to, it will subscribe to the system monitor messages for all temporary destinations on the each connection in your transaction definition that contains a temporary destination. When the message previous to the temporary destination message in the transaction definition is received (staus.topic.current in the example above), the Transaction Monitor will get the destination from the JMSReplyTo property to determine which temporary destination will be used for the next message in the transaction. This destination is always on the same server that sent the message, so the connection for temporary destination, as well as the previous message containing the JMSReplyTo value, must be to the server that sent the message (ie the home server for the topic or queue). This connection must have permission to receive system monitor messages. By default, if a transaction definition contains a temporary destination the Transaction Monitor will subscribe to these system monitor messages: $sys.monitor.Q.r.$TMP$.> $sys.monitor.T.r.$TMP$.> You can narrow down the number of system monitor messages that will be sent to the Transaction Monitor in 2 ways. First, you can specify that you are only using temporary topics or temporary queues by using the tempdestmode: command line property or the tempdestmode parameter in TMOPTIONS.ini. For example, on the command line: -tempdestmode:TOPIC_ONLY -tempdestmode:QUEUE_ONLY For example in TMOPTIONS.ini: tempdestmode TOPIC_ONLY tempdestmode QUEUE_ONLY If the TOPIC_ONLY option is specified, the Transaction monitor will not subscribe to $sys.monitor.Q.r.$TMP$.>. If the QUEUE_ONLY option is specified, the Transaction Monitor will not subscribe to $sys.monitor.T.r.$TMP$.>. The second way to narrow down the number of system monitor messages that will be sent to the Transaction Monitor is to use the  tempdest: command line argument or tempdest parameter in TMOPTIONS.ini to specify a more specific topic for the system monitor messages. For example, on the command line: -tempdest:$TMP$.MyEmsServer.> For example in TMOPTIONS.ini: tempdest $TMP$.MyEmsServer.> This will be used instead of $TMP$.> in the system monitor message subscriptions. Since TIBCO does not guarantee that the system monitor temporary destination message will arrive after the previous message in the transaction, the Transaction Monitor will store all temporary destination messages that it receives that do not already have a listener. In order to prevent a memory problem, temporary destination messages that have been stored for 5 minutes without any listeners registering for them are removed. This time limit can be changed by using the tempdestexpire: command line option or the tempdestexpire TMOPTIONS.ini parameter. These options take a time argument in milliseconds. For example, on the command line: -tempdestexpire:10000 For example, in TMOPTIONS.ini: tempdestexpire 10000 The above example will delete temporary destination messages that have been stored for more than 10 seconds without a listener. The Transaction Monitor assumes that it will not have multiple transaction instances using the same temporary destination at the same time. For example, the JMSReplyTo value for the message before the temporary destination resolves to a destination $TMP$.12345. If the Transaction Monitor has received a message from that destination that has not expired, it is assumed to be the correct message for the transaction. If the Transaction Monitor has not yet received a message from $TMP$.12345, it will assume that the next message that comes in from that destination is the correct message for the transaction. When a temporary destination message is received, the original message is retrieved from the message_bytes field of the system monitor message and stored until a listener requests it, or until the specified expire time passes. Only the header and property information for the original message can be retrieved from the message_bytes field, so the id field for all temporary destination messages must be a property or header. IDs in temporary destination message fields are not supported.

Version 4.6c1 Release Notes

Alerts

12524: Alert demo added

The Alert Demo has been added to the distribution to illustrate the basic features of the RTView Alert Engine.

12671: Acknowledging multiple alerts now supported

The Acknowledge Alert command has been enhanced to take multiple alert id's. Specify a ; (semicolon) delimited list of alert id's for the ID argument to acknowledge multiple alerts from a single command.

Builder - Options Dialogs

12602: All Application Options settings now restored by Reset button

In the Display Builder Application Options dialog, certain settings were not restored to their previous values if you changed them and then clicked Cancel. These settings included: Tab Setting ---- --------- General Drilldown Windows Always On Top Data Server (All settings) TIBCO EMS Admininstration (All settings) This problem has been fixed.

Commands

12519: Heartbeat feature implemented

A heartbeat feature has been added that allows the user to configure any of the system or data source commands to be executed with a specified periodicity. In addition to the commands, application level substitutions are supported, together with the built-in $appName and $appVersion substitutions. The heartbeat option is configured using the Display Builder, and the heartbeat options are stored in the OPTIONS.ini file. To configure the heartbeat options: Run the Display Builder Select the Tools->Options... Menu Item Select the General List item on the left of the Applications Options dialog. Select the Heartbeat Configuration tab at the right of the Applications Options dialog. You can enable/disable heartbeat using the check box. You can enter the heartbeat period (in milliseconds). You can configure the heartbeat command by selecting the type of command using the drop down list. This will bring up a define command dialog of the selected type. Configure the command using the command dialog. Use "Apply" or "OK" from the heartbeat configuration tab to use the configured heartbeat in the current instance of RTView Builder. Use "Save" to save the configured heartbeat for use by other servers. The heartbeat options are saved in the OPTIONS.ini file.

12538: Send SNMP Trap command implemented

A new Command Type has been added to the RTView System Command: Send SNMP Trap. This enables a display to send an SNMP Trap message such as would be sent from an SNMP Agent to a SNMP Management Station. To configure an object in a display to execute a Send SNMP Trap command, right-click command in the objects properties and select System from the Define Command list. In the Define System Command dialog select Send SNMP Trap from the Command Type drop-down list. Click Define SNMP Trap Message to get to the Define SNMP Command dialog. Here you will see the following: Trap Type: The SNMP version of the trap. Destination Address: The system name or IP address of the receiving system. The default value is 127.0.0.1 (localhost). Destination Port: The UDP port on the receiving system. The default value is 162. The value must be an integer greater than 0. Community Name: The SNMPv2 Community Name string. The default value is 'public'. Enterprise OID: The SNMP Object ID to be used as the sender's Enterprise. The default value is 'snmpTrap' (1.3.6.1.6.3.1.1.5). Generic Trap: Select one of the generic traps. Specific Trap: If the generic trap is 'EnterpriseSpecific' enter an integer value here. The Help button in the dialog will display the above information. The Reset button will reset all fields to the default values. When the command is executed (e.g. by double-clicking the object in the Display Builder) the trap message will be sent. Use of the SNMP Trap command requires outgoing access to UDP port 162 (or a different port if specified in the command) from your installed Java Runtime Environment (if the display is running in an application) or your Web browser (if the display is running in the applet).

Configuration Application

11531: Stand-alone configuration utility added

The Display Builder Application Options dialog is now available in a stand-alone Configuration Utility that may be run independent of the Display Builder to set options for applications and data sources. The Configuration Utility may be run with the command run_configutil and may be given the same command-line arguments as the Display Viewer. The introduction of the stand-alone Configuration Utility imposes new coding requirements on custom option tabs that will be added to the Application Options dialog, because the dialog's parent may now be either a JDialog or a JFrame. Custom option tab classes must be prepared to handle either scenario. The following examples illustrate how this should be done. 1. Declare the dialog parent as a Window (superclass of both JDialog and JFrame) and provide overloaded class constructors for both cases. Previously: // XXX Option Tab class public class XXXOptionTab implements GmsRtViewOptionTabInt, . . . { private JDialog dialogParent; . . . } // XXX Option Tab class constructor public XXXOptionTab (JDialog dialogParent, . . .) { this.dialogParent = dialogParent; . . . } Now: // XXX Option Tab class public class XXXOptionTab implements GmsRtViewOptionTabInt, . . . { private Window dialogParent; . . . } // XXX Option Tab class constructor for JFrame public XXXOptionTab (JFrame dialogParent, . . .) { this((Window)dialogParent, . . .); } // XXX Option Tab class constructor for JDialog public XXXOptionTab (JDialog dialogParent, . . .) { this((Window)dialogParent, . . .); } // XXX Option Tab class constructor common code public XXXOptionTab (Window dialogParent, . . .) { this.dialogParent = dialogParent; . . . } 2. If the option tab brings up subordinate dialogs, provide overloaded class constructors for those classes as well, and construct them according to the actual runtime class of the dialog parent. // XXX Option Tab Sub Dialog class private class XXXSubDialog extends JDialog . . . { . . . } Previously: // XXX Option Tab Sub Dialog class constructor private XXXSubDialog (JDialog parent) { super(parent, ...); setTitle(...); . . . } // Invoking the XXX Option Tab Sub Dialog XXXSubDialog subDialog = new XXXSubDialog(dialogParent); subDialog.setVisible(true); Now: // XXX Option Tab Sub Dialog class constructor for JFrame private XXXSubDialog (JDialog parent) { super(parent, ...); makeXXXSubDialog(parent); } // XXX Option Tab Sub Dialog class constructor for JDialog private XXXSubDialog (JFrame parent) { super(parent, ...); makeXXXSubDialog(parent); } // XXX Option Tab Sub Dialog class constructor, common code private void makeXXXSubDialog (Window parent) { setTitle(...); . . . } // Invoking the XXX Option Tab Sub Dialog XXXSubDialog subDialog = null; if (dialogParent instanceof JFrame) subDialog = new XXXSubDialog((JFrame)dialogParent); else if (dialogParent instanceof JDialog) subDialog = new XXXSubDialog((JDialog)dialogParent); subDialog.setVisible(true);

12567: User warned to save when changes made to Application Options

In the Display Builder Application Options dialog, if you changed values on any tab and then closed the dialog without saving the options you were not warned that you had unsaved changes. Now you will receive a warning dialog if you try to close the dialog or exit the program with unsaved application options. From the warning dialog you can choose to go ahead and close the dialog or the program, or you can decide not to close or exit and return to the options dialog. Note that if you choose Cancel from the options dialog you will not receive the warning. Note also that if you have applied changes and declined to save them (by choosing OK from the warning dialog) you will not be warned again if you reopen and close the dialog. Information for developers of custom data sources: The interface which is implemented by the data sources Application Options dialog tab now includes the following two new members: /** This method is called to update the option tab's local copy of its data. */ public void updateCurrentData (); /** This method is called to check whether data in the option tab has been changed since the last time it was applied. */ public boolean isDataChanged (); These members must be implemented in your dialog tab class.

Data Historian

12665: SQL datasource no longer included in gmsjrtvhistorian.jar

The com.sl.gmsjsqlds package is no longer included in gmsjrtvhistorian.jar, since that package is distributed in gmsjsqlds.jar. This change has no impact on users that use the standard scripts to launch the Data Server, Display Server, and Historian. Custom scripts, however, may need to be changed to include gmsjsqlds.jar in the classpath.

Data Sources

12565: Data source options file processing has changed

A change has been made in how options files are processed for data sources and the RTView AppManager. Previously, all options in all options files that were not processed by the AppManager were applied to all data sources. The new behavior is as follows: 1. OPTIONS.ini is read and processed by the AppManager. Any options not processed there are saved for data sources (step 3). 2. Each available data source is asked if it has an options file. If so, that file is read and the options are applied to that data source only. If any option in that file is not processed by the data source, an error message will be printed to the console. 3. Any options remaining from OPTIONS.ini are applied in turn to each data source that does not have its own options file. If any of those options are not processed by any data source, an error message will be printed to the console.

IBM WebSphere MQ Administration Data Source

12620: Connection parameters in TMOPTIONS.ini are now properly parsed

Connection parameters for IBM WebSphere MQ are now parsed correctly for the Transaction monitoring utility. The connection parameters are described in the RTView User Guide documentation. Connection parameters can be defined on the command line, or in the TMOPTIONS.INI File. Command line parameters are defined in Appendix C: Transaction Monitor Command Line. Options for TMOPTIONS.INI are described in Transaction Monitor Options in the User Guide. Examples of a command line options to use IBM Websphere MQ as a JMS message source would be -jmsfactory:com.ibm.mq.jms.MQTopicConnectionFactory -jmsclient:null -jmsuser:MyUser -jmspassword:MyPassword -jmshostname:MyHost -jmsport:1420 -jmsqueuemanager:PUB_SUB_QM Examples of entries in the TMOPTIONS.INI file would be jmsfactory com.ibm.mq.jms.MQTopicConnectionFactory jmsclient null jmsuser MyUser jmspassword MyPassword jmshostname MyHost jmsport 1420 jmsqueuemanager PUB_SUB_QM

12625: Mechanism for retrieving IBM MQ Server metrics optimized

Previously the the IBMADM (IBM WebSphere MQ Administration) Data source queried for all metrics every update. The IBMADM data source now keeps track of displays that view specific MQ server metric tables (Channels, Queue Managers and Queues). Requests for data to update those (MQ Server metric) tables (at the rate specified by the IBM WebSphere MQ Connections Metrics Update Period) are now only made when displays containing tables attatched to MQ server metric tables are open. The mechanism for requesting Channel metrics has also been further optimized. Some examples: No displays with MQ server metric tables are open. No MQ server metrics are requested at the next IBMADM data source update. A display with only a Queue Manager metrics table is open Only Queue Manager metrics are requested at the next IBMADM data source update. Several displays with Queue Manager and Queue metrics tables are open. Only Queue Manager and Queue metrics are requested at the next IBMADM data source update. A Display with Channel, Queue Manager and Queue metrics tables is open. Channel, Queue Manager and Queue metrics are requested at the next IBMADM data source update.

12626: Metrics Update Period implemented for IBM WebSphere MQ

The IBM WebSphere MQ Connections Options Dialog Tab has been enhanced to include a way to specify the metrics update period. This value is also saved in the IBMADMOPTIONS.ini file when options are saved. Metrics Update Period Enter the time in milliseconds to control how often IBM WebSphere MQ metrics will be queried. Default is 0, which queries according to the update period specified on the Application Options General tab. OTE: Because the Metrics Update Period is superceded by the General Update Period, the amount of time elapsed between queries may be longer than the value entered. For example, if the General Update Period is 2000 milliseconds and the Metrics Update Period is 5000 milliseconds, EMS Server metrics and IBM WebSphere MQ metrics will be queried every six seconds (6000 milliseconds).

JMX Data Source

12634: Date column type now supported in JMX tabular data

Date type columns are now supported in JMX tabular data.

12637: JMX Notifications now supported

Support for JMX notifications has been added. There is an additional choice in the the JMX data attachment dialog. It shows up under the Data Mode: combobox. The choices are "Poll for Values" or "Listen for Notifications". The default "Poll for Values" is the same as the older choice and tells the JMX data source to get all mbean updates by polling the attributes or executing the exposed methods as before. The new choice "Listen for Notifications" changes the title of the Attribute(s)/Operation(s): choice that follows to Attribute(s):. Older .rtv files will default to "Poll for Values" and should function as before where the update happens as the timer specified in Tools | Options | JMX. Newer data attachments that use "Listen for Notifications" do not pay attention to the timer and are registered with the connection to receive notifications, which may be sent by the mbean server at any time. It is the responsibility of the mBean server to send notifications. RTView will only display data received via notifications, if the data attachment is set up that way. The user can see what Notifications are available by creating a data attachment and changing the default Data Mode to "Listen for Notifications". The Attributes and Fields available will then be offered in the comboboxes of the same name, if any. The mBean server must implement the getNotificationInfo() method of javax.management.NotificationBroadcaster to specify what Attribute Change Notifications are sent. See http://java.sun.com/j2se/1.5.0/docs/api/javax/management/NotificationBroadcaster.html The method to be implemented is described as follows in the Java Documentation: public MBeanNotificationInfo[] getNotificationInfo () Returns an array indicating, for each notification this MBean may send, the name of the Java class of the notification and the notification type. It is not illegal for the MBean to send notifications not described in this array. However, some clients of the MBean server may depend on the array being complete for their correct functioning. Returns: the array of possible notifications.

12638: Enhanced support of MBean names that include wildcard

The processing of MBean names that include the "*" wildcard has been enhanced. Previously, only a single additional column would be appended to the table providing the first MBean "key" that was found when resolving the "*" in the MBean name. Now, if the "*" resolves to multiple MBean keys, a column will be added for each key that is found. This provides for better identification of the source of the data that is returned when using the MBean "*" syntax.

12640: URL can be used for JMX Connection in place of host and port

This release adds support for the user to enter a URL instead of host and port in the JMX Connection dialog. There are now two new controls in the Tools -> Options -> JMX Add or Edit Connection dialog. These are Enter URL: and URL:. If the Enter URL checkbox is selected, the host and port fields are ignored and the user may enter a JMX URL in the URL: text field. Previously RTView constructed the URL using the given and port. This method is still available. If the entered URL is valid and a connection is established, RTView works with that connection in the same way that a Host/Port connection works.

12647: Performance improvement to JMX data source

The performance of the JMX data source has been enhanced.

12649: JMX Polling Interval implemented

The JMX data source can now specify four different options for the updating of an object's data. Rather than having a JMX data object update using the display's update period, you can select an alternate method in which each object polls for its data, thereby optimizing the performance of the display. The available options are: 1) Poll Once - RTView will retrieve the object's data only once, for its initial display. Use this setting for data that will not need updating. 2) Poll Every Default Poll Interval - Data will be updated using the display's predefined update interval. This is the default setting and mirrors the functionality found in previous releases. 3) Poll Every Poll Interval - Data will be updated at a user-defined interval. You can specify, in seconds, how often the object should be updated. 4) Poll on Demand - Updates only when a display that uses this data is opened, and when data from any substitution string in use has changed. The Polling Interval options can be found in the JMX Attach to Data dialog. Note: The polling options will be disabled when "Listen for Notifications" is chosen for the Data Mode setting. In this case, data will be updated with each notification.

12701: Missing label in Attach to JMX Data dialog fixed

In the prior release, the "Filter:" label was missing from the Attach to JMX Data Dialog. This has been fixed

12713: Improve performance for large number of MBeans

Performance of the JMX datasource when there are large numbers of MBeans accessed has been improved.

SQL Data Source

12607: RTView no longer leaves open cursors in Oracle

In prior releases, if the SQL data source was configured to use a JDBC connection to Oracle and if SQL queries using that connection failed repeatedly, an Oracle error "maximum open cursors exceeded" could eventually occur. This error could also occur if SQL commands using the connection were executed repeatedly. Both of these problems are fixed.

TIBCO Hawk Data Source

12653: TIBCO Hawk notification events now supported

The TIBCO Hawk Datasource for RTView has been enhanced to support the display of TIBCO Hawk notification events. By default, this feature is turned off. To enable the receipt of TIBCO Hawk notification events, run the RTView builder and access the TIBCO Hawk section of the Tools/Options menu. On the "TIBCO Hawk Methods and Alerts" tab, select the checkbox labeled "Enable Hawk Notifications", then Apply and Save the options. TIBCO Hawk notifications will have an AlertString of "NO_ALERT". Note that you can also enable TIBCO Hawk notifications by starting the builder or viewer with the "enablenotifications" command-line option. For example, run_builder -enablenotifications:true

12654: Hawk data source supports wildcard character in microagent name

The Hawk data source has been enhanced to support a wildcard character in the microagent name for data attachments and commands. The supported syntax for wildcards in microagent names is as follows (where name is the name of the microagent): - name* - Data attachments and commands will use the first instance found for all microagents that start with name on the agent(s) specified. If multiple microagents are found for a data attachment, the data for each will be returned. If multiple microagents are found for a command, the command will execute on each microagent. - name*:X - Data attachments and commands will use the X instance for all microagents that start with name on the agent(s) specified. If multiple microagents are found for a data attachment, the data for each will be returned. If multiple microagents are found for a command, the command will execute on each microagent. - name*:* - Data attachments and commands will use all active instances for all microagents that start with name on the agent(s) specified. If multiple microagents are found for a data attachment, the data for each will be returned. If multiple microagents are found for a command, the command will execute on each microagent.

TIBCO Rendezvous Data Source

11461: Improved parsing of RV messages with same field names

The Rendezvous data source has been improved to better handle messages containing containing multiple fields with the same name, and to expand nested message fields within messages which have an alias specified in RVALIAS.ini. For example, say a message with a subject of x.y.z has two fields named F, one containing an integer value of 123 and the other containing a value of 456. In prior releases, if a table object had its valueTable property attached to RV message subject=x.y.z and message field=*, then the table would have two columns named F but both columns would contain the value 123. In this release, the table will have two columns named F, the first containing 123 and the second containing 456, as expected. As another example, say a message with a subject of ORDERS.CUSTOMERS.NEW has several fields all of which are named Order, and the value of each Order field is an RV message which itself contains two fields named CustomerId and OrderNumber. In this release, the following entry could be added to RVALIAS.ini: NewOrders ORDERS.CUSTOMERS.NEW Order Then, if a table object is attached to NewOrders, the table will have two columns, named CustomerId and OrderNumber, corresponding to the columns in the nested Order message, and it will contain N rows, where N is the number of Order fields appearing in the ORDERS.CUSTOMERS.NEW message. Limitation: If a message contains multiple fields with the same name, then any data attachment that specifies that field name will always get the value of the first field with that name. So, using the message in the first example above, if an RV data attachment is made with message subject=x.y.z and message field=F, the attachment will always get the value of the first F column in the message. There is no way to make an RV data attachment to the second F column.

12704: User can now specify the Network Interface to use with rvtrace

A new option has been added to the TIBCO Rendezvous data source to allow the specification of the Network Interface to use when rvtrace is started. The interface can be set from the TIBCO Rendezvous Monitoring tab of the TIBCO Rendezvous options dialog, or from the command-line using the "-rvds:rvtrace.interface" switch. For example, run_viewer -rvds:rvtrace.interface:\Device\NPF_{12345} where \Device\NPF_{12345} is the network interface on which rvtrace should be started. Note that this is equivalent to running rvtrace from the command-line using the -i switch as follows: rvtrace -i \Device\NPF_{12345} Additional information about determining the Network Interface can be found in the TIBCO Rendezvous Administration manual. Please refer to Chapter 11, "Protocol Monitor (rvtrace)" and in particular, to the document titled "Selecting the Network Interface".

XML Data Source

12655: XML data source time zone parsing problem fixed

In previous releases of RTView, there was a problem with parsing time zone data in the XML data source. It has been fixed.

Display Server

12399: Thin Client performance improvements

This release includes two performance improvements to the Display Server and Thin Client: 1) During a display refresh or drill down, the Thin Client will wait until the new image has finished downloading before using it to replace the old image. This eliminates the screen flash and image banding or striping that occurred in Internet Explorer. 2) For each display, the Display Server will automatically choose the format (png or jpg) that produces the smaller image, in order to reduce the download time for the client. These improvements are discussed in more detail below. 1) This improvement is most noticeable on clients using a slower WAN connection where the image download duration is longer. On a LAN the screen flash and banding were less noticeable. 2) In prior releases, the Display Server used jpg (jpeg) format for all the images it generated. Now, it can also use png format. The Display Server will automatically chose the format that results in the smaller (fewer bytes) image for each display. This means that jpg may be chosen for some displays and png for others. The imagequality option can affect the server's format choice. A higher imagequality value will increase the size of generated jpg images, but will not affect the size of png images (png quality is always 100%). So increasing the value of the imagequality may cause the server to choose png format for more displays. The Display Server is likely to choose jpg format for displays which: - use a jpg file as the display background image - use jpg files as background images on RTView graphs or labels - have many gradients using different colors (especially at lower imagequality values). For all other displays, the server will usually choose png format. The output from the Display Server's -verbose option now indicates which format is used for a display and the size of the generated image. By default the Display Server will automatically choose an image format for each display, as described above. If desired, the Server can be forced to use the same format for all displays via a command-line option, as follows: Use jpg for all displays: run_displayserver -imageformat:jpg Use png for all displays: run_displayserver -imageformat:png These is currently no way to specify the format for individual displays. ***************************** (DEVNOTE: The -imageformat option has existed since 4.2 but may not have been previously documented). *****************************

12618: rtvRefreshInterval can now be set for displays with bg image

In prior releases, the model property named rtvRefreshInterval could not be set in the Display Builder on a display that used a background image. This has been fixed.

12678: Main display now refreshes after executing ds command in popup

In the Thin Client, the display is refreshed after the user clicks on an object that executes a data source command, in order to show the effects of the command, if any, on the display objects. For example, executing an alert acknowledege command may cause changes in a table that displays the current alerts. In prior releases, only the display containing the object that executed the command was refreshed. In this release, if the command object is in a popup window, the main window will also be refreshed.

12681: Browser window resize fixed

In the 4.5c1 release, a browser window is not resized to fit a Thin Client display loaded from panels.jsp or or panels.html, as it was in releases prior to 4.5c1. This problem is fixed.

12683: Combo box values with double quotes now supported

In prior releases, the Thin Client did not support combo box controls or list box controls if their list items contained the double quote character. This is fixed.

12684: Thin Client display refresh performance improved

The performance of the Thin Client display refresh feature has been improved. The Thin Client refreshes a display periodically. As in prior releases, the refresh interval is determined by the DefaultRefreshInterval property of the rtvdisplay servlet or, if set, by each display's rtvRefreshInterval property. An interval value of zero indicates that a display should not be refreshed. In this release, before refreshing a display the Thin Client will first ask the Display Server if any data source has applied data to the display since its last refresh. If not, then there is no need to refresh the display so the refresh is skipped. This is repeated on each refresh cycle. If needless refreshes can be skipped, the performance of the Thin Client and the Display Server is improved. The actual performance gains will vary according to the characteristics of individual displays and the data they display. In general, the displays that will benefit the most are those which (1) show data from asynchronous data sources (RV, Hawk, Alerts), if new data typically arrives at longer intervals than the display's refresh interval, or (2) show data from a polled data source query (SQL, JMX), if the query is static, on-demand, or has a longer poll interval than the display's refresh interval. For example, if a display has a refresh interval of 10 seconds and it contains one table object that shows the current alert data, and typically the alert data only changes once per minute, then the display will typically only refresh once per minute. In prior releases, the display would refresh every 10 seconds whether or not the alert data had changed. Displays that will not benefit from this improvement are those showing data from sources which apply new data at shorter intervals than the display's refresh interval. For example, if a display has a refresh interval of 15 seconds and it shows data from a non-static XML data source which the Display Server polls every 2 seconds, then the display will always be refreshed every 15 seconds, since new XML data is applied every 2 seconds. If a display contains a trend graph object configured with timeShift >= 0, then the display will be refreshed on each interval, even if no new data has been applied since the last refresh. This is necessary in order to shift the graph's time axis. Similarly, if a custom object requires a refresh on each interval, it must define a GMS variable named __dispSrvRefreshRequired (the name begins with 2 underscore characters) of type GMS.G_INTEGER with a value of 1. To support this improvement, the rtvdisplay servlet makes a second connection to the Display Server. If the -verbose option is specified when starting the Display Server, the following output will appear in the Display Server console: connect client 1 connect client 2 This is normal.

Distribution

12383: JMX support added to the Historian

JMX support has been added to the Historian. There are now commands to start and stop data storage, to purge stored data, and to terminate the Historian, as well as properties to examine the status of the Historian and the data configuration files in use by the Historian.

12627: Missing make_war.sh scripts added

Missing scripts servlets/rtvreport/make_war.sh and servlets/rtvportlet/make_war.sh have been added.

Functions

12563: New argument Restrict to Data Combinations for GROUPBYU

The Group By Unique Values function now has an additional argument Restrict to Data Combinations (that defaults to 0). When this argument is 0 the returned data will contain all possible combinations of unique values found in the specified Index Columns (as previously). When this argument is 1, the returned data will be restricted to only those combinations that occur in the data.

12572: Baseline Over Time no longer throws exception for string data

Previously the Baseline Over Time (BASETR) function would throw an exception if the data column was of type String. This is now no longer the case.

12628: FILTERTR no longer throws exception for column type string

Previously the FILTERTR function would throw an exception if the data column was of type String. This is now no longer the case.

12677: Support added for global functions

Support has been added for global functions. In prior releases, an object's property can be attached to a function either (a) defined in the current display, or (b) defined in another display file that is included by the current display. Note that (a) works best for a function that is only used on one display or is simple and so can easily be redefined on each display that uses it, while (b) works best for a function (or a set of functions) that is used on multiple displays. But (b) can be inefficient in some cases. For example, say there is a display file named Inc1.rtv that defines a function named f1. If two displays are opened in the Viewer and both displays include Inc1.rtv, then two copies of F1 are created and the result is computed for each. If the user closes both displays, both copies of F1 are discarded. If the user then opens another display that includes Inc1.rtv, a new copy of F1 will be created and the result computed again. This can be inefficient if computing the result of F1 requires significant CPU time or memory (for example, a complex operation on a large data table). In that case it may be more efficient to specify F1 as a global function. A global function is defined in a Global Definition file and its result is available to objects on any display. A Global Definition file, or global file for short, is simply a .rtv file that has been selected on the Globals tab of the Options dialog. Each global file is loaded when an RTView application starts. Only one instance of each global function is created and its result can be used by objects on multiple displays. Global functions are supported in all deployments. As with any function, a global function is updated whenever its input (argument) values change. A global function will be updated even if none of the currently open displays use the result. Because of this, the current result is immediately available when a display that does use the result is opened. However, avoid defining a function as global if its result is not often needed and computing the result is expensive, otherwise performance may suffer. In the Display Builder, use the Globals tab in the Options Dialog to designate a global file. Click on the Add button to select an rtv file. The selected file will be added to the table of global files. Each row in the table shows the name of the global file and a list of substitutions, if any, which should be applied to the global file when it is loaded. Click in the appropriate column to edit the file name or the substitutions. Click OK, Apply, or Save in the options dialog and the global files will be loaded. To reload a global file that was already loaded, select the corresponding row in the table and click Refresh Selection. This is useful after you've used the Display Builder to make and save changes to a global file and you wish to see the effect on other displays, without restarting the Builder. In some cases, it may be useful for a global function to use substitutions in its inputs and in the function name. The values for those substitutions are specified in the Substitutions column of the table in the Globals tab. This allows the same file to be specified multiple times in the Globals table with different substitutions to create multiple global functions. For example, say you're creating displays that show data from the RTView XML simulator, and you want a global function that sorts the production_table by the Units Completed column, another global function that sorts it by the Units in Production column, and a third global function that sorts by the plant name. This could be accomplished by either of the procedures below. Procedure A. Create three global functions: - Create a new display. - Add a function named Sort.completed that calls the Sort Table function, attach its Table argument to production_table from update.xml, and set its Sort Column Name to 'Units Completed'. - Add a function named Sort.inProd that calls the Sort Table function, attach its Table argument to production_table from update.xml, and set its Sort Column Name to 'Units in Production'. - Add a function named Sort.plant that calls the Sort Table function, attach its Table argument to production_table from update.xml, and set its Sort Column Name to Plant. - For all 3 functions, make sure the Public checkbox in the Edit Function dialog is checked. - Save the display as SortFunc.rtv. - In the Globals tab, add SortFunc.rtv to the list of global files. Procedure B. Create a single global function that uses substitutions: - Create a new display. - Add a function named getSortCol that calls the Get Substitution function on $sortColumn. Uncheck the Public checkbox (more on this later). - Add a function named Sort.$fname that calls the Sort Table function, attach its Table argument to production_table from update.xml, and attach its Sort Column Name to the getSortCol function. Check the Public checkbox. - Save this display as SortFunc.rtv - In the Globals tab, add SortFunc.rtv to the list of global files and specify the following substitutions: $fname:completed $sortColumn:'Units Completed' - Repeat the previous step and specify the following substitutions: $fname:inProd $sortColumn:'Units in Production' - Repeat the previous step and specify the following substitutions: $fname:plant $sortColumn:Plant Both procedures produce 3 global functions named Sort.completed, Sort.inProd, and Sort.plant. Procedure B may look more complicated but it uses fewer functions so it might be easier to maintain. (In this example, the functions are simple so this is not a significant benefit, but a real application might find B useful). Note that procedure B also defines a function named getSortCol. It is intended to be used only as an input to the Sort.$fname function and should not become a global function. The Public option is unchecked when the getSortCol was created, which prevents the function from appearing in the function attachment list, even though it is defined in a global file. Limitation Global functions are not currently supported with alerts.

12682: Set sub function no longer adds invalid listeners

In prior releases, the following problems could occur if the SETSUB function was used to change a substitution string that appeared in a data attachment: - On display callup, the substitution string could sometimes be assigned a blank value, causing syntax errors in the data attachment string. - The initial data attachment was sometimes registered twice, causing the attachment to remain even after the display was dismissed. - The effects of changes to the substitution string were delayed until the next periodic update. These problems are fixed.

12731: Public flag supported by Include File functionality

The Include File functionality now takes advantage of the "public" flag added for global functions. Non-public functions in included files will not be visible to other displays. This is consistent with the behavior of non-public functions in Global Definition files.

GmsTabularData

12603: Improved support for date/time parsing

Support for date/time parsing has been improved, and a mechanism to enter custom date/time formats has been added to the Application Options. The formats entered in the Date Formats tab follow the syntax of the date and time pattern strings documented in the java.text.SimpleDateFormat class.

Java Version Dependencies

12523: Java 1.6 Runtime Environment is now supported

Java 1.6 Runtime Environment is now supported by RTView. In previous versions the Display Builder would crash when run under the Java 1.6 Runtime Environment. This has been fixed.

Local Variables

12621: Display Builder no longer crashes with undefined local var

In the previous release, the Display Builder would throw an exception if the user attempted to asign a value to a local variable that was used in a data attachment but had not been previously defined. This could occur only if an rtv file was modified outside of the Builder, in a text editor for example. This problem is fixed.

Object Library

12688: Antialiasing of text is now the default

Antialiasing of text is now done by default. In the General tab of the Options dialog, you can turn off antialiasing.

Bar Charts

12585: New property yAxisGridMode for greater control of grid lines

A new property has been added to the bar graph to allow additional control overi the alignment of grid lines with the y-axes drawn to the left and right of the bargraph. The property, yAxisGridMode, can have the following values: Bar Axis ( 0 ) - Align grid lines with the left (bar) y-axis. This is the default. Trace Axis ( 1 ) - Align grid lines with the right (trace) y-axis. Bar and Trace Axis ( 2 ) - Draw two sets of grid lines, one aligned with the left y-axis and the other with the right y-axis. Two new properties have been added to the bar graph to allow additional control of the placement and spacing of tick marks on the trace y-axis, which is drawn to the right of the bar graph when the traceYAxisFlag is set. The properties, traceYAxisMajorDivisions, and traceYAxisMinorDivisions specify the number of major tickmarks on the axis and the number of minor tickmarks between each pair of major tickmarks, respectively.

12616: traceYAxisFlag no longer cleared when drawHorizontalFlag set

In the bar graph, the value of the traceYAxisFlag was cleared whenever the drawHorizontalFlag was set. This has been corrected.

Control Objects

12670: Double-clicking *Values properties no longer causes crash

In the Display Builder Object Properties dialog, certain properties have specific dialogs for editing their values, which are invoked by double-clicking the property name, or clicking the property value field to enable the v button and clicking that. These properties include: barProperties columnAlignment columnDisplayNames columnFormat columnsToHide columnProperties commandConfirmText drillDownColumnSubs drillDownTarget filterProperties iconProperties indexColumns listValues radioListValues traceProperties wedgeProperties If these properties are attached to data, double-clicking the property name should bring up an Attach To Data dialog. However there was a problem in the Display Builder such that for listValues or radioListValues, double-clicking an attached property would cause a crash, and for the remainder of the above list, double-clicking an attached property would bring up the value editor dialog rather than an Attach To Data dialog. This problem has been fixed.

Tables

12636: columnResizeEnabledFlag added to table object

A property named columnResizeEnabledFlag has been added to the table object. If the property is checked, the table's columns can be resized by dragging the vertical separators between the column headers. If the property is unchecked, the column widths cannot be resized interactively. The property is checked by default and is located in the Interaction category. The columnResizeEnabledFlag property is supported in Display Builder, Display Viewer, and Thin Client. In the Thin Client, however, runtime changes to the property value are ignored.

12686: The Table Object now displays milliseconds properly

The Table Object will now display times with a precision of milliseconds. A columnFormat ending in "ss.S" can be used to display the time in milliseconds.

12718: Row selection now behaves properly if table row is deleted

The indexColumns property of the table object (obj_table02) can be configured to maintain the row selection across updates to the data table. (See the release note for E12468 for details). In the prior release, the property did not work as expected if any of the selected rows was removed during an update but the total number of rows in the table did not change. This problem is fixed. Note that the indexColumns property is not supported in the thin client.

Trend Charts

12644: Outer Y axis color now follows labelTextColor in Strip Charts

In previous releases, the y axis was drawn in the color of the trace if the yAxisMultiRangeMode was set to Strip Chart and the yAxisPosition was one of the Outer positions. It now draws in the labelTextColor instead.

TIBCO EMS Manager

12579: TIBCO EMS Manager look and feel upgrade

The TIBCO EMS Manager look and feel has been upgraded. All features work exactly as before.

Transaction Message Monitor

12520: Enhancement to maintain summary values between sessions

This release adds the ability to maintain previous summary values when restarting the Transaction Monitor. By adding either the new "-maintainstate" argument to the command line, or "maintainstate" in the TMOPTIONS.INI file, the Transaction Monitor will, when restarted, pick up from where it left off, populating the tranasction and interface summary values as they had been before the shutdown event. Note that only summary values are maintained. No detail information is maintained. The transaction and interface detail data are reset to zero values. Omitting the "maintainstate" argument will retain the previous behavior of clearing all values on restart. How we weight the values for Rate, Latency and Size rolling averages: The manner in which we set up the initial values is based on an average of the last x number of completed interfaces and transactions. This number (x) is determined by taking the last rate value, found in tm_summary.xml, and dividing it by a time unit value. (And this time unit value is calculated by dividing the TM's rateUnit by its calcInterval. ex: the unit of time / the time interval). Once we determine how many past transactions to use to repopulate the TM's initial data tables, we then init each of the table rows with the last found latency, size and rate values. As new transaction messages are received, the rolling averages recommence with the older summary data values expiring, replaced by the new message data.

12613: TM Generator now properly generates table attachments

In the previous release, tables on some of the standard Transaction Monitor displays were always empty. This is fixed.

12646: Transaction Monitor now supports remoting via JMX

The Transaction Monitor now supports remoting via JMX. This allows for remotely pausing and resuming the monitor, checking whether it's in its paused state, resetting all values, and retrieving a table of the transaction and interface names. The JMX Monitor demo has been enhanced to offer support for this functionalty. As well, access is available through the standard java JConsole application. run_tm.bat has been modified to accept a command line argument specifying the port to use. The command line syntax is: -jmxport:9994 Port 9994 is recommended for the Transaction Monitor (and is preset for the JMX Monitor demo).

Version 4.5c1 Release Notes

Alerts

12360: Alerts can now be generated on Japanese OS

In RTView 4.4c1, alerts were not generated on systems using the JST time zone. This has been fixed.

12498: Time constraint removed from alert data source

In RTView 4.4c1, alerts that were more than 24 hours old were removed from the system. This has been fixed, so that these alerts are not removed.

Builder - Editing

12609: Bug with drillDownTarget field fixed

In prior releases, if the bgVisFlag and valueVisFlag properties of an obj_meter06 or obj_meter21 object were assigned different values (that is, if one of those properties was checked and the other was unchecked), then it was not possible to configure the drillDownTarget property on any object in the display. Also, properties associated with bgVisFlag, such as bg3dFlag, bgGradientFlag etc., were hidden when valueVisFlag was unchecked, rather than being hidden when bgVisFlag was checked. This has been fixed.

Data Server

12499: Data Server improved to handle larger data sets

The Data Server performance has been improved. In previous releases, the server sent data formatted as XML text to its Display Viewer clients. Now it sends serialized data objects, allowing the server to handle larger data sets and improving the overall efficiency of the server and client. The Display Viewer will still accept XML data received from custom servers.

Data Sources

IBM WebSphere MQ Administration Data Source

12492: IBM WebSphere MQ Administration data source added

Display Builder You can use IBM Websphere MQ Administration as an IBM Websphere MQ Administration Connection. An IBM Websphere MQ Administration Connection is a named connection to a specified QueueManager. In addition you will also need to specify the Host Name, Port (Number) and QueueManager used by IBM Websphere MQ Administration. You will need to specify the IBM Websphere MQ Administration Connection as follows: Connection Name: The name to use when referencing this IBM Websphere MQ Administration connection in your data attachments. Host Name: The name of the host the IBM Websphere MQ Administration Queue Manager resides on, e.g MyServer. Port (Number): The listener port of the QueueManager you wish to connect to, e.g. 1414. Channel: Client Channel to use for this connection, e.g. SYSTEM.DEF.SVRCONN. These parameters are IBM Websphere MQ Administration specific. Display Builder + Display Viewer At run time you will need to place the IBM Websphere MQ Administration client jars (com.ibm.mq.jar, connector.jar) + PCF jar (com.ibm.mq.pcf-6.0.jar) on the class path to use this functionality. This is normally done by setting the RTV_USERPATH environment variable. The IBM Websphere MQ Administration client jars can be found in the Java\lib directory where you installed the IBM Websphere MQ Administration server, e.g: "C:\Program Files\IBM\WebSphere MQ\Java\lib" The PCF jar can be obtained from the "MS0B: WebSphere MQ Java classes for PCF" support pack as described here: http://www-1.ibm.com/support/docview.wss?rs=203&uid=swg24000668&loc=en_US&cs=utf-8&lang=en

JMS Data Source

11445: Support for IBM WebSphere MQ in JMS and Transaction Monitor

Websphere MQ may now be used as JMS Data source. *Builder* You can use IBM Websphere MQ as a JMS Connection. The JMS connection can be either a Topic connection, or a Queue connection. For a Topic connection you will need to select com.ibm.mq.jms.MQQueueConnectionFactory as the Factory class name. For a Queue connection you will need to select com.ibm.mq.jms.MQTopicConnectionFactory as the Factory class name. In addition you will also need to specify the Host Name, Port (Number) and QueueManager used by WebSphere Host Name: The name of the host the Websphere MQ Queue Manager resides on. e.g MyServer Port (Number): The listener port of the QueueManager you wish to connect to. e.g. 1414 QueueManager: The name of the Queue manager you wish to connect to. e.g. MyQueueManager These parameters are WebSphere MQ specific. You should only use a Topic connection for topic related activities and a queue connection for Queue related activities, otherwise Websphere MQ may give the following message: javax.jms.IllegalStateException: MQJMS1112: JMS1.1 Invalid operation for domain specific object *Builder + Viewer* At run time you will need to place the Websphere MQ JMS client jars (jms.jar, com.ibm.mq.jar, com.ibm.mqjms.jar, connector.jar, dhbcore.jar) on the class path to use this functionality These Jars can be found in the Java\lib directory where you installed the Websphere MQ server e.g. "C:\Program Files\IBM\WebSphere MQ\Java\lib" *JmsSimulator* The Jms Simulator can be used with websphere. New command line arguments are available for configuring hostname, port and queue manager. Note : you may need to explicitly set the client ID to NULL - as it has a non null default. You will need to set the class path as described above. e.g. -jmsfactory:com.ibm.mq.jms.MQTopicConnectionFactory -jmsclient:null -jmsuser:myUser -jmspassword:myPassword -jmshostname:myServer -jmsport:1414 -jmsqueuemanager:myQueueManager *Jms Transaction Simulator * The Jms Transaction Simulator can be used with websphere. New command line arguments are available for configuring hostname, port and queue manager. Note : you may need to explicitly set the client ID to NULL - as it has a non null default. You will need to set the class path as described above. e.g. -jmsfactory:com.ibm.mq.jms.MQTopicConnectionFactory -jmsclient:null -jmsuser:myUser -jmspassword:myPassword -jmshostname:myServer -jmsport:1414 -jmsqueuemanager:myQueueManager *Jms Transaction Monitor Utility * The Transaction Monitor Utility can be used with websphere. New command line arguments are available for configuring hostname, port and queue manager.. Note : you may need to explicitly set the client ID to NULL - as it has a non null default. You will need to set the class path as described above. e.g. -jmsfactory:com.ibm.mq.jms.MQTopicConnectionFactory -jmsclient:null -jmsuser:myUser -jmspassword:myPassword -jmshostname:myServer -jmsport:1414 -jmsqueuemanager:myQueueManager Websphere MQ Specific notes JMS Message properties must be valid Java Identifiers (e.g. no spaces in property name). Websphere MQ Topic syntax does not support spaces in names.

12461: Validation of subs now handled properly by JMS Command dialog

Previously the JMS Command dialog did not process substitutions when validating field values. This has been fixed.

OSISoft PI Data Source

11181: OSIsoft PI data source added

The OSIsoft PI data source provides historical and current data for named data points. Data attachments include a connection to a OSIsoft PI Server, with an optional user name and password, a OSIsoft PI point name, a query mode, start and end dates, and a retrieval mode. Currently no validation is performed on the dsstring, so care must be taken to ensure that the connection, point name, dates, and modes are valid. The Point Name list is populated by querying the list of points from the OSIsoft PI Server specified in the Connection combo box. A filter is provided to narrow down the list of points displayed. The pattern for the filter is defined by the OSIsoft PI WildCard Search function. The query mode identifies the type of data to be retrieved from the OSIsoft PI Server. There are three supported query modes: 1. Historical Data - Only historical data is returned, from the start date to the end date. 2. Historical and Current Data - Historical data from the start date to the present is returned, and then new data is returned as it is added to the OSIsoft PI database. The end date is ignored for this query mode. 3. Current Data - The most current value for the point is returned from the OSIsoft PI database. New values are returned as data is added to the OSIsoft PI database. Both the start and end dates are ignored for this query mode. In all query modes, if a date is left blank the current date is used. So for example, if the end date is left blank in a Historical Data query, data will be returned from the start date to the present. Because the query is for historical data only, the data will only be retrieved once. To cause the data to update as new values are added, specify a Historical and Current Data query mode instead. The retrieval mode specifies the method used to return data from the OSIsoft PI database. This mode applies to both the Historical Data and to the Historical and Current Data query modes, but is ignored for the Current Data query mode. There are two supported retrieval modes: 1. GetArcValueSX - This mode returns all data for the specified interval. If more than the maximum number of points are available, the returned data is truncated so that the final values are not included. 2. PlotValues - This mode divides the specified interval into equal time slices and returns the values of the data at the start and end of each interval, as well as the minimum and maximum values of the data during the interval. In addition, an exception code is returned for each interval. The exception code is a OSIsoft PI error code that indicates whether a problem occurred with the data during the interval. For example, an exception might occur if a piece of equipment were taken off-line for maintenance, or if a network failure prevented the transfer of data to the OSIsoft PI Server. The OSIsoft PI data source also includes an Options dialog that allows the definition of Connections to OSIsoft PI Servers as well as the following data source variables, which are defined in the OSIsoft PI Administration tab. Default Tag Mask - This mask will appear in the Attach to Data dialog when it is first displayed. Maximum Number of Point Names - This option limits the maximum number of point names displayed in the Attach to Data dialog. Maximum Number of Point Values - This option limits the maximum number of points to return in a single data query. For the PlotValues retrieval mode, this option also defines the number of time slices into which the interval is divided.

StreamBase Data Source

12444: StreamBase data source added to RTView

A StreamBase data source has been added to RTView. This data source allows you to view stream data and stream metrics data in RTView and also to send tuples.

12488: StreamBase Application Options dialog implemented

In the Display Builder Application Options dialog and in the standalone Configuration Utility, the StreamBase category now includes three tabs which implement the full set of StreamBase data source options. The tabs and their options are as follows: StreamBase Connections URI - this displays a single connection URI StreamBase Streams - displays the following lists with the ability to add and remove entries: Streams History Streams Simulated Streams StreamBase Administration - displays the following options: Enable Monitor Metrics Write History History Depth Note the following, which appears on the Administration tab: The options "Enable Monitor Metrics" and "History Depth" will not be applied to the current session of RTView. To apply these options, save the initialization file and restart.

12489: Connection definitions implemented for StreamBase

The Display Builder Application Options dialog for the StreamBase Data Source has been enhanced so that connections to StreamBase servers, specified by URI, may be named, and a default connection may be specified. On the Connections tab you will find a list of connections with buttons to add and remove them, and a selector for the default connection. When you add a connection you're given a dialog which allows you to enter the name and the URI of the connection.

12493: StreamBase data source available streams list fixed

In the Display Builder, dialogs for the StreamBase Data Source are fixed. The list of streams available from a given connection previously showed in the dialog even if the server was not sending data to the stream. This pertained to the Application Options dialog, the Attach To Data dialog, and the StreamBase Commands dialog.

12527: Field alignment in StreamBase command dialog fixed

In the Display Builder, the Define StreamBase Command dialog has been improved in appearance, so that the fields line up correctly.

12569: StreamBase displays added to dstutorial

Sample screens illustrating use of the StreamBase data source have been added to the Data Sources Demo.

XML Data Source

12506: XML Data Source memory usage optimized

The amount of memory used by the XML data source when loading a data set containing many duplicate string values has been reduced.

Demos

RV Monitor Demo

12606: Bug in Current Traffic Trends display fixed

In RTView 4.4c1, the Current Traffic Trends display in the rvmonitor demo did not work correctly. This has been fixed.

Display Server

12438: Display Server display preload functionality enhanced

The Display Server can be configured to preload display files. In prior releases this feature was of limited use since a preloaded display was unloaded after a client requested it but then no other client requested it again before the display timeout interval (default 60 seconds) expired. As of this release, a preloaded display will never be unloaded unless the Display Server is restarted or the display cache is cleared from the JMX console.

12465: Errors in Firefox JavaScript console fixed

In prior releases, the Thin Client Browser sometimes caused error messages in the Firefox JavaScript console when changing the foreground and background colors of table cells. The error messages were similar to the following: Error: Expected color but found 'undefined'. This problem is fixed.

12475: Support for -notablecontrols removed

The Display Server notablecontrols option is obsolete and is no longer supported. If the option is specified a warning message will be printed in the Display Server console and will otherwise be ignored.

12573: Graph scrollbar bug fixed

In the previous version of RTView, graph scrollbars would not work in the Thin Client Browser if the display contained one or more functions. This has been fixed.

12580: Incorrect drilldown behavior with Thin Client Browser fixed

In the prior release, the Thin Client Browser treated all drilldowns as though the Open In Named Window option was set, even if the Open In New Window option was actually selected. Also, if the Open In New Window option was selected and the named window was already open, a drilldown to that window would not raise the window, often leaving it obscured by the main browser window. These problems are fixed.

Distribution

12600: Can't stop sims in custom demos if started from SM Launcher

In the previous version of RTView, the EMS Manager option "Edit Display" did not work if the EMS Manager was started from the Start Menu. This has been fixed.

12601: EMS Manager "Edit Display" option fixed

In the previous version of RTView, the "Stop Simulator" button in the Trader Exchange Demo of EMS Manager Example did not work if the EMS Manager was started from the Start Menu. This has been fixed.

Drill Down

12494: Reload of display on initial drill down fixed

In prior releases, if an object's drill down target was set to the current display and current window, the display would be reloaded unnecessarily the first time that the drill down was performed, resetting any local variables, scroll bars, and trace data on the display. This is fixed.

12599: Drill down in graphs and stock chart fixed

In the previous beta release, it was not possible to drill down by a left click on the trend graph, xy graph, or stock chart if its zoomEnableFlag property was checked. This is fixed.

Functions

10382: New include display functionality added

A feature has been added to allow a display to include the contents of another display file. The functions, local variables, and graphical objects from the included file are added to the display. This feature is useful if several displays use a common set of functions and local variables, or require a common set of graphical objects (a set of navigation controls at the top of each display, for example). Previously, it would have been necessary to duplicate those common objects in each display. Now the common objects can be defined and maintained in a separate file, and that file can be included by each display that needs them. The files to be included by a display are specified using the Include Files dialog, opened from the Tools menu in the Display Builder. A display can specify multiple include files. Nesting is supported, that is, an included file can include other files. When a file is removed from Include Files list, all objects, functions, and local variables that were loaded from that file are removed from the current display. When a display includes a file, graphical objects from the included file will appear in the display, and local variables and functions from the included file can be used in data attachments by other objects in the display. In the Display Viewer, objects that are loaded from an included file are treated exactly as objects that are loaded from the display's own file. However, to ensure that all displays that include a file use the same object definitions, the Display Builder does not allow included objects to be modified, nor does it save the included objects to the display's rtv file. That is, the definitions of the included objects do not become a permanent part of the current display. (An exception to this is the initial value of a local variable from an included file, described below). When a graphical object from an included file is selected in the Display Builder, the object is highlighted but no resize handles are drawn. The object can't be moved, scaled, deleted, or re-ordered. It cannot be the target of a Paste Attachments or Paste Properties. The object's properties are shown in the Object Properties window but they can't be changed. The name of the include file, in parentheses, is appended to the object's objName property. An included object can be copied and pasted. The pasted object becomes a part of the current display, not a part of the included file. Functions from an included file are listed in the Functions dialog but cannot be removed or modified. An included function's result can, of course, be used in data attachments. If an included function is copied, it becomes part of the current display. When an included function is displayed in the Edit Function dialog, an extra field labeled "Include File" shows the name of the function's file. Local variables from an included file are listed in the Local Variables dialog but cannot be removed. However, the initial value of an included local variable can be changed in the Local Variables dialog, and the value will be saved in the display's rtv file. This can be useful in cases such as the following: Assume several displays include a file named Header.rtv, which defines a label object to appear at the top of each display, showing the title of the display. The label property of the title object is attached to a local variable named headerTitle, defined in Header.rtv, with its initial value set to "Your Title Goes Here". If a display is configured to include Header.rtv, the title object will appear in the display, showing the text "Your Title Goes Here", and the variable named headerTitle will appear in the Local Variables dialog. If headerTitle is selected, the Remove button will be disabled (since it was loaded from Header.rtv, not the current display) and the initial value can be changed to read "My Display Title". This value will be saved with the current display when it is saved from the Display Builder. The background properties (image, model properties) in an included file are ignored. That is, they are not added to the display that includes the file. The Display Builder will print an error message if a display includes the same file more than once or if the included files are circular (e.g. file A.rtv includes B.rtv which includes A.rtv). If an included file is in the same directory the file that includes it, or a subdirectory, a relative path to the included file is saved in the display's rtv file. Otherwise, an absolute path to the included file is saved. Objects from an included file may have the same name (that is, the same value for the objName property) as objects from other include files or from the display file. This may cause links to attach to the wrong object, since a link's starting and ending nodes are found by name. This can be avoided by assigning a unique value to the objName property of objects in an include file. For example, you might append "_Header" to the name of each object when building an include file named Header.rtv.

11979: Custom function API has been improved

It is possible to perform calculations on your data before it displayed in RTView. A number of built-in functions are available to be used. This new feature allows the user to create custom functions that can be used just as the built-in ones are. For example, you can create a custom function that will take the floating point value of a number and return the rounded integer value. To display the results, attach your functions to objects using the Attach to Function Data dialog. Functions can be given input data as arguments and can return data in four different types: integer, double, string or table. B: IMPLEMENTATION This is an example of how to use the API. Here are the steps to create a Round function that will take the floating point value of a number and return the rounded integer value. You will be creating a java class called MyFunctionHandler that subclasses GmsRtViewCustomFunctionHandler. This will contain all of your custom functions in a single file. You must use the exact name MyFunctionHandler as your class name and filename. 1. Add a GmsRtViewFunctionDescriptor in the getFunctionDescriptors() method. The name of the function to be created in this example is "Round". public Vector getFunctionDescriptors () { // vector of function descriptors Vector<GmsRtViewFunctionDescriptor> v = new Vector<GmsRtViewFunctionDescriptor> // Round GmsRtViewFunctionArgument roundArgs[] = new GmsRtViewFunctionArgument[1]; roundArgs[0] = new GmsRtViewFunctionArgument("Value", GMS.G_DOUBLE); v.addElement(new GmsRtViewFunctionDescriptor("Round", roundArgs, GMS.G_INTEGER, null, "This function rounds the value to the nearest integer.\n", "This is the extended Help description.\n", false)); // return the vector full of functions return v; } Notice that the function is added to a Vector of function descriptors. The creation of the GmsRtViewFunctionDescriptors is done by creating an array of argument objects as GmsRtViewFunctionArgument. In this case only one argument is created called "Value" of type double. The four choices are: GMS.G_INTEGER, GMS.G_DOUBLE, GMS.G_STRING or GMS.G_TABLE. The function is given a return type of GMS.G_INTEGER. If the return type is GMS.G_TABLE an array of return columns is given next, otherwise use null. Finally the descriptor is given the two strings that will appear, when the new Round function is chosen in the Edit Function dialog in the Display Builder. The first string is the brief help sentence or two that shows in the dialog. The Extended Help is the help that is shown if the Help button in the dialog is pressed. 2. Next you need to implement the function logic and attach that logic to the correct place to return the new value. In this example the result is an integer so the implementation is done via the getIntResult() method. Similar methods exist for the other return types: getDoubleResult(), getStringResult() and getTabularResult(). See the RTView User guide for more details. //---------------------------------------------------- // Method for functions that return an integer result //--------------------------------------------------- public int getIntResult (String functionName, GmsRtViewFunctionDescriptor functionDesc, GmsModelVariables functionIcon) { int ret = 0; //-------------------------------------------- // Add an element for each custom function //-------------------------------------------- if (functionName.equals("Round")) { ret = getRoundedValue(functionIcon, functionDesc); } return ret; } Notice that this method actually calls getRoundedValue, which is a private method that has been chosen by the implementer. You are free to implement private methods as you choose in MyFunctionHandler.java. The getRoundedValue() method works as follows: //--------------------------------------------------- // Define a custom function which rounds the value //--------------------------------------------------- private int getRoundedValue (GmsModelVariables functionIcon, GmsRtViewFunctionDescriptor functionDesc) { double num = Double.NaN; try { // get the argument value via the descriptor num = functionDesc.getArgDoubleValue("Value", functionIcon); } catch (Exception e) { // show error message, if argument not found System.out.println(e.getMessage()); } // round to the nearest integer int retval = (int) Math.rint(num); // return the result to the caller return retval; } C: INTEGRATION Compile and link your file to the gmsjrtview.jar and any other libraries that you may need. Create a new jar file containing your class or classes. D: DEPLOYMENT Make sure that the jar file containing your new class is added to RTV_USERPATH and is available at run time.

12485: Function execution enhanced

The function data source has been improved to avoid unnecessary updates to functions, improving performance. No changes are required to custom function handlers.

12597: Functions exception fixed

In the previous release, the functions Filter By Pattern and Filter and Extract Matches would throw an exception if the input table contained a string column that contained nulls. This error has been fixed.

Object Library

Bar Charts

11795: Mouseover for bar graphs fixed

In prior releases, the mouseover tooltips for a bargraph would sometimes be displayed when the mouse was moved over objects in other panels, such as a drilldown window. This has been fixed.

12401: Bug with *AxisMinLabelWidth fixed

Previously you could not set vertAxisMinLabelWidth or yAxisMinLabelWidth to a value less than 10. This has been fixed.

Charts (General)

12487: Grid lines now being drawn correctily

Previously the xy graph, stock chart, and trend graph would occasionally display grid lines outside of the graph area. This has been fixed.

Control Objects

12307: listValues and radioValues properties now support text editor

In the Display Builder property sheet, the listValues and radioValues properties for the radio button, list box, and combo box controls has been enhanced with the option to bring up a text edit dialog by clicking on the "..." button at the end of the property field.

12467: hotkey keyboard activation for buttons added

The button control object (obj_c1button) now supports keyboard activation. An alphanumeric key (A-Z or 0-9) can be assigned to a button's hotKey property. If the user holds the Alt key and presses the corresponding key when the panel containing the button has focus, the button will be activated. If the character that corresponds to a button's hotKey appears in the button label, in upper or lower case, it will be underlined. If multiple buttons in the same display have the same hotKey assignment, only one will be activated when the user presses Alt+hotKey. The same is true if multiple panels are displayed in the Display Viewer and multiple buttons with the same hotKey appear in the panels.

Tables

12466: Support for multiple row selection added

The table object (obj_table02) now supports selection of multiple rows. This is enabled by a new property named multiSelectFlag. By default this property is unchecked. When multiSelectFlag is checked, all selected rows will be highlighted regardless of the value of the rowHighlightEnabledFlag property. When multiSelectFlag is checked, multiple rows can be selected in the table in several ways, for example: - Ctrl+LeftClick on an unselected row to select it, or Ctrl+LeftClick on a selected row to deselect it, without deselecting any other currently selected rows. - Shift+LeftClick on a row to select all rows between it and the nearest selected row. - Press the left mouse button on the first row to be selected, then drag over adjacent rows to select them, then release the mouse. - Click on the first row to be selected, and then hold the Shift key down while pressing the up or down arrow keys to select additional adjacent rows. (Note: In the main window of the Display Builder, the last two actions will move the table). If a drill down target is defined for the table, and if single-click mode is enabled, then any of the above actions will trigger a drill down if the table is displayed in the Display Viewer. If single-click mode is disabled, or if the table is displayed in the Display Builder then to trigger a drill down with multiple rows selected in the table, you must right-click on a selected row and and then pick Drill Down from the popup menu. When a drill down is performed from a table in which multiple rows are selected, each substitution defined in the table's drillDownColumnSubs is assigned a string containing the values from the appropriate column in each of the selected rows. If multiple rows are selected, the column values are separated by semicolons. For example, assume a table contains 2 columns named Airport and Code as follows: Airport Code ------- ----- Baltimore BWI Dallas DFW Denver DEN Also assume the table's drillDownColumnSubs property has these assignments: Airport : $air Code : $code Then, if a drill down is performed from the table with the rows for Dallas and Denver selected, the drill down subs will contain the following values: $air = Dallas;Denver $code = DFW;DEN If instead the table's drillDownColumnSubs property is empty, then on drill down the predefined table substitution named $col1 would contain the value "Dallas;Denver". None of the other predefined table substitutions ($1rowName, $celldata, $colName, etc) or row name subs are affected by selection of multiple rows. These substitutions will contain values from the appropriate columns in the first row that is currently selected in the table. A selected row can be deselected by a Ctrl+LeftClick action. Continuing with the previous example, if you deselect the Denver row but left Dallas selected, then the table's drillDownColumnSubs would be assigned these values: $air = Dallas $code = DFW Limitations: Deslecting all rows in the table will not clear the value of the table's drill down substitutions, they will keep the values from the last row that was selected. Continuing with the previous example where only the row for Dallas was selected in the table, if you then deselected that row, leaving no rows selected, the values for the subs $air and $code would still be Dallas and DFW, respectively. The Thin Client Browser has the following limitations: - Multiple rows can only be selected by a Ctrl+LeftClick on each row. No other actions will select multiple rows. - The selected column is determined only by a mouse click, it cannot be changed by using the arrows keys. - In a table that has the multiSelectFlag property checked, a right click will not select the row under the mouse pointer. - After a table is displayed in the Thin Client Browser, changes to the value of its multiSelectFlag property are ignored. - In Firefox, the popup menu does not open in response to a right-click on a table that has the multiSelectFlag property checked. Instead, a double right-click must be used to open the popup menu.

12468: Ability to keep row selection after updates added

The table object (obj_table02) has been enhanced to restore the row selection after a data update is received that changes the number of rows or the order of rows in the table. A new property named indexColumns has been added to support this feature, as described below. Another new property named scrollToSelectionFlag has been added. If this property is checked, the table will scroll if necessary to keep the first (topmost) selected row visible after a sort or a data update. If indexColumns is left blank (the default) the row selection is maintained using the data row index of the selected rows. For example, assume the user selects rows in the table that correspond to rows 3 and 5 in the valueTable attachment (note that data rows 3 and 5 may be shown in table rows other than 3 and 5 if a sort column has been selected). If the valueTable is then updated by the data source, the table rows that correspond to rows 3 and 5 in the new valueTable will be selected in the table (these rows may appear in different positions than they did before the update, if a sort column is defined). This is sufficient for maintaining the row selection if: - the number of rows in the valueTable data attachment either does not change or new rows are always appended. - the order of the rows in the valueTable data attachment does not change. If either of the above is false, and the row selection needs to be maintained across data updates, then the indexColumns property should be configured. If there is a single column in the valueTable attachment that uniquely identifies each row, then select that column in the Index Columns configuration dialog. To uniquely identify a row, the row's value in the selected column can not be duplicated in any other row, and it must remain unchanged across data updates. (It is okay if rows are added and removed). To select the row label column of the valueTable as an index column, type "empty" in the edit box at the bottom of the Index Columns dialog, then click Add Column, then click the checkbox for the "empty" column. If no single index column exists, select a combination of columns in the Index Columns dialog that will uniquely identify each row in the valueTable. The combined value of the index columns for a row must be unique. For example, if the valueTable contents are as follows ... City State Temperature ---- ----- ----------- Boston MA 35 Springfield PA 37 Springfield IL 22 ... then City and State can be used for indexColumns. But if the contents are as follows .. City State Temperature ---- ----- ----------- Boston MA 35 Springfield PA 37 Springfield IL 22 Springfield PA 40 ... then City and State are not sufficient to use for indexColumns (maybe a County column needs to be added to the data table!). If there is no combination of columns that uniquely identifies a row, then the indexColumns property should not be assigned. It is not necessary for the index columns to be visible in the table, they can be hidden using the columnsToHide property. Limitations: The indexColumns property is ignored by the Thin Client Browser. In addition, the Thin Client Browser will clear the selection in a table if the number of rows in the table is changed by a data update.

12497: Right-click actions on multiple rows in table fixed

In prior releases, the editing feature of obj_table02 only allowed one row or column to be removed at a time, since a right mouse click in a table in edit mode would deselect all cells except the cell under the mouse pointer. This is fixed.

12590: Filter string crash for scalar object fixed

In the prior release, an array bounds exception would be thrown if the valueTable property of an object had an XML attachment with a filter that returned a table with one or more columns but no rows. This is fixed. obj_btlabel01 obj_tilabel03 obj_drumcount01 obj_drumcount02

Trend Charts

12525: Trend graph problem with scalar values fixed

In the previous release, in some conditions if a Display Viewer client requested a scalar value for the traceNValue property of a trend graph object, the Data Server would never send the value and the trend graph would plot no data. This is fixed. Note that this fix does not address the issue in which the trend graph only plots changed scalar values when used with the Data Server. As before, this issue is addressed by unchecking the "Send Changed Data Only" option in the Data Server options dialog. See the Data Server documentation for details.

12617: Data table not sorted by ascending timestamps can be plotted

In the prior release, the trend graph would not plot a data table if its rows were not sorted by ascending timestamps. This is fixed.

XY Charts

12574: XY graph problem with displaying -0 on x axis fixed

In prior releases, the xy graph would sometimes show -0 on an x axis label rather than 0. This is fixed.

TIBCO EMS Manager - Administration

11680: Bridge administration screens added to TIBCO EMS Manager

There is now an separate Manage Bridges screen under EMS Administration and a table of Bridges is included on the Connections, Etc screen under the server under EMS Monitoring. It is possible to add and delete bridges for a chosen server. Two new commands were added to the GmsRtViewJmsAdmDs data source to create_bridge and delete_bridge. These changes require the use of TIBCO EMS 4.2+.

11862: User able to set more EMS Manager Queues and Topics properties

The EMS Manager now allows the user to set the following properties on Queues and Topics. Topics: flowControlMaxBytes, secure, MaxMsgs and overflowPolicy Queues: flowControlMaxBytes, secure, exclusive, maxRedelivery, MaxMsgs and overflowPolicy (The property flowControlMaxBytes like maxMB is set in units of MB or megabytes.) Which properties are fully supported depends on which version of TIBCO EMS is running on both the management computer and the targeted EMS server.

Transaction Message Monitor

12507: RV and JMS Transaction Monitors now a single application

This release combines both the TIBCO Rendezvous and JMS Transaction Monitors into a single application. Users can now, within the one application, configure messages to come from either TIBCO Rendezvous or any flavor of JMS, and the two types can be used within a transaction definition. To support this enhancement, a new file - run_tm.bat - combines the functionality of the current run_jmstm.bat and run_rvtm.bat files. Additionally, two new parameters were added that allow for specifying data sources - defaultds and ds. The defaultds parameter specifies a default data source at the application level, and the ds parameter can be used to override the default data source at the transaction level, the message level, or both. defaultds: The defaultds parameter can be used in the TMOPTIONS.ini file and as a command argument. In both cases, it must be followed by either JMS or TIBCO Rendezvous, depending on the desired default data source. If anything other than JMS or TIBCO Rendezvous is found, the Transaction Monitor will inform the user of the error and set JMS as the default data source. e.g. defaultds jms # used as a parameter in TMOPTIONS.ini -defaultds:jms # used as a command line argument ds: parameter This parameter allows for specifying the data source at the transaction level and/or the message level of the TRANSACTIONS.ini file. This can be accomplished by adding the ds: parameter to the desired message or transaction entry. To specify a TIBCO Rendezvous data source, use ds:rv. For JMS, use ds:jms. e.g. To specify that the transaction "My Transaction" uses a TIBCO Rendezvous data source: startBusTransaction 'My Transaction' ds:rv # sets default to rv msg msgA ID ds:jms # this message uses JMS msg MsgB ID # this defaults back to rv Adding this parameter to any message definition line will override the current transaction-level ds for (only) that message. Adding the parameter to any transaction definition will override the current application level defaultds for (only) that transaction, including all messages within the transaction that do not contain their own ds: overrides. ====================================================== Though the Transaction Monitor now supports both TIBCO Rendezvous and JMS, you are not required to have both types installed. the Transaction Monitor will check for only the message service(s) specified in the TRANSACTION.ini file. If a required service is not found, the Transaction Monitor will exit gracefully leaving an error message explaining the problem.

12575: Transaction Monitor can now send data over a socket conection

With this release, the Transaction Monitor can now send its data over a socket connection. You can enable this functionalty in the Transaction Monitor by adding either a command line argument, or an entry in TMOPTIONS.ini. For the command line, add: -socket This will default to port 4068 If an alternate port is desired, add: -port:xxxx where xxxx is any number above 1024 ex: -socket -port:1234 For TMOPTIONS.ini add: socket This will default to port 4068 If an alternate port is desired, add: port xxxx where xxxx is any number above 1024 ex: socket port 1234 In your corresponding display(s), you'll need to configure the XML sources to read data from the server. To do this, select Tools/Options from the Display Builder menu, then click on the XML tab. In the XML Sources list, double click on the tm_summary.xml entry. This will open the "Edit XML Source" dialog. Change the "XML Source Path" to the following: remote://localhost:4068/tm_summary.xml Repeat this for the tm_detailactive.xml and/or tm_detaildone.xml source entries. If the server is run on a different host than the Display Builder, specifiy the server's host name in place of localhost above. The tm_xxxxxxx.xml files will not be written to when set up to use this socket connection.

Version 4.4c1 Release Notes

Alerts

12232: Alert engine added to RTView

Support for alerts has been added to RTView. Alert definitions are configured in the Display Builder. These alert definitions are then used by the Alert data source to generate alerts and if specified execute commands such as sending email when the alert is generated. Users can view alert data by attaching the objects in their display to tables in the Alert data source. The Alert data source is active in the Display Server and Data Server regardless of whether any clients are connected, so alerts will be generated even if no one is viewing the system.

Builder

12174: Dialogs defaulting to docked status after -resetlayout

In the Display Builder, certain dialogs which are dockable are intended to appear floating the first time they are invoked after the "Reset Layout" command is used. These dialogs include Local Vars, Functions, and Object List. There was a problem such that if a Reset Layout was done and the application closed before any of these dialogs was invoked, then that dialog was invoked on a subsequent run, it would not appear floating but rather would be docked in a default position. This problem has been fixed.

12362: Missing SL Logo fixed

If the Display Builder was invoked from the command line with the name of a display that could not be found, the resulting error dialog did not display the SL icon. This has been fixed.

12435: Incorrect selection with background model properties fixed

In the Display Builder when displaying the Model Properties via the Background Properties dialog, it was possible to see a very small selected object just below and to the left of the editing area. Furthermore clicking on this object would cause a crash. These problems have been fixed.

Builder - Editing

10027: Option added to specify grid properties

The Display Builder has been enhanced with a new dialog, Builder Options, which manages settings for the Display Builder. It is invoked from the Builder Options menu item on the Tools menu. The values set in this dialog are automatically restored on application startup and saved on application exit. The dialog consists of a button panel and two tabbed panels. The button panel includes the buttons Ok, Apply, Default, and Cancel. The Default button will write to default values to the current tab; these values may then be applied. The second panel is titled Grid and includes the following items: Grid Visible: This controls whether the grid is visible. Snap To Grid: This controls whether move or resize operations will be "snapped" to the nearest grid intersection. This setting is independent of the grid visibility. Color This is the color in which the grid lines will be drawn. A sample of the current color is displayed; clicking the sample will bring up a Color Chooser box. Style This is the style of the grid lines; two choices are available in of the drop-down list: Lines and Dots. Default value is Dots. Spacing (Horizontal and Vertical) This is the number of pixels between major divisions in the grid. Valid values are positive numbers. Default value is 64.0. Subdivisions (Horizontal and Vertical) This is the number of subdivisions between each major division. Valid values are positive integers. Default value is 8. Offset (Horizontal and Vertical) This is an offset in pixels that will be applied to the grid lines. Values may be negative. Default value is 0.0.

10907: Escape key has been mapped to cancel mode

In the Display Builder the Escape key will now cancel any current zoom or editing mode.

11412: Option added to show grid lines on screen

The Display Builder has been enhanced with a visible grid that may be used to position and size objects. The grid may be made visible and invisible by means of a new toggle button on the toolbar. The snap-to-grid function is independent of the visibility of the grid and may be turned on and off by means of a second toggle button.

11521: Order and Delete menu items disabled in drill down windows

In the Display Builder, when invoking a popup menu from the Preview window or a drill down window, the following menu items were not always disabled: Delete, Order, Align, Distribute. This has been fixed.

11522: Paste Properties now applies to all selected objects

In the Display Builder, if multiple objects were selected, the Paste Properties commands would apply properties to only the first selected object. This has been corrected so that the properties will be applied to all of the selected objects.

11867: Builder options dialog added

The Display Builder has been enhanced with a new dialog, Builder Options, which manages settings for the Display Builder. It is invoked from the "Builder Options" menu item on the Tools menu. The values set in this dialog are automatically restored on application startup and saved on application exit. The dialog consists of a button panel and a panel titled General. The button panel includes the buttons Ok, Apply, Default, and Cancel. The Default button will write to default values to the current tab; these values may then be applied. The General panel includes the following items: History List Size This is the number of items that will be kept in the History Undo and Redo lists. Valid values are integers in the range 0 - 1000. The default value is 20. Recently Used File List Size This is the number of items that will be listed in the recently-used file list on the File menu. Valid values are integers in the range zero 0 - 9. The default value is 4. Console Window Buffer Size This is the number of lines of text that will be saved in the Console window. Valid values are integers in the range 0 - 5000. The default value is 1500. Keyboard Arrow Movement Amount This is the number of pixels that an object will be moved when the keyboard arrow keys are used. Valid values are numbers in the range 1.0 - 100.0 The default value is 1.0.

12207: Select by Extent button added

In the Display Builder you can select several objects by clicking on the background and drawing a rectangle around the objects you want to select. However if your display is crowded with objects that may be difficult to find a clear space to click on to start your selection. To work around this problem the Display Builder has been enhanced with a select-by-extent mode. This mode is initiated by clicking the toolbar Select By Extent toggle button. When the mode is enabled, clicking on an object will start a select-by-extent operation just as clicking on the display background does normally. The object you clicked on to start the selection will not be included among the selected objects. Otherwise this operation behaves just like a normal select-by-extent operation: any object which is not entirely within the selection extent will also not be included, and the new selection will replace any current selection unless you hold the Control or Shift keys while performing the operation, in which case the new selection will be added to the current selection. The select-by-extent mode remains in effect (as indicated by the state of the toolbar toggle button) until one of the following occurs: 1. You make a selection 2. You click or right-click on the background or any object 3. You press Escape.

12221: Menu item syntax made consistent

In the Display Viewer and the Display Builder menus, items that invoke a dialog should end with "...". This was not always the case, but it has been made consistent.

12370: Support added for .png files are now supported

In the Display Builder, image files in the Portable Network Graphics (PNG) format are now supported in addition to JPG and GIF formats. PNG-format images may be used as display backgrounds, as labels for objects that support image labels, and with a "Display Image" Filter action.

12378: Cursor changes to "+" when in select by extent mode

In the Display Builder when the select-by-extent mode is enabled (using the Select By Extent toolbar button) or when an extent selection operation is initiated by pressing the mouse button while over the display background, cursor will change to a crosshair indicating a select-by-extent operation is in progress.

Builder - Options Dialogs

12299: Tab list added to left side of Options dialog

The Display Builder Application Options dialog has been reorganized into categories; each category represents a related group of tabs. A category may be selected from the list on the left of the dialog and the corresponding tab or tabs will be displayed on the right.

Builder - Property Dialogs

12355: visFlag property fixed

In the previous release, if the user unchecked the visFlag property in the Display Builder property sheet, the selected object would become invisible as expected, but for some objects the visFlag checkbox would remain checked. Clicking on the checkbox again had no effect so the object remained invisible. Objects on the Controls, Graphs, and Tables palettes were not affected by this problem; all other objects were affected. This problem is fixed.

Commands

12301: Email command added to system commands

An email command has been added to the available System commands. In order to use this command from an Applet, it is necessary to add the following to the Java Policy file. (Change the first two to suit the SMTP server being used. The second two are only needed if attachments are to be sent.) -- grant { permission java.net.SocketPermission "sl631", "resolve"; }; grant { permission java.net.SocketPermission "192.9.200.208:25", "accept, connect, listen, resolve"; }; grant { permission java.util.PropertyPermission "user.name", "read"; }; grant { permission java.io.FilePermission "<<ALL FILES>>", "read"; };

12382: Open Browser command now supported in application

In previous releases, the Open Browser command only worked the Display Viewer Applet and the Display Server. It has been enhanced to work in the Display Builder and Display Viewer as well.

12404: Email system command supported in Display Server

The Display Server now supports the email system command. When an email command is executed from a thin client display, the email message is transmitted from the Display Server, so the SMTP host specified in the email command must be accessible from the Display Server host. The path to an attached file, if not absolute, is relative to the working directory of the Display Server. Limitations: If the email command fails, an error message is printed in the Display Server console but the message is not shown on the thin client. Similarly, the commandWindowCloseOnSuccess property is not supported in the thin client. Threshold commands are not supported. (These limitations apply to all commands executed from the thin client).

Data Historian

12412: Historian support for PostgreSQL8.x improved

The Historian supports PostgreSQL 8.x, using the JDBC3 driver included with Postgres. A typical Historian setup for Postgres is as follows: JDBC Driver Class Name: org.postgresql.Driver JDBC Database URL: jdbc:postgresql://localhost/RTVHISTORY The jar file containing the Postgres JDBC3 driver class must be included in the classpath, for example: set RTV_USERPATH=C:\Program Files\PostgreSQL\8.1\jdbc\postgresql-8.1-405.jdbc3.jar As with other datatabase systems, before using the Historian with Postgres and empty database named RTVHISTORY must be created. This can be done with the pgAdminIII application included with Postgres. The Historian will automatically create the tables it needs in the RTVHISTORY database. But if its preferrable to create those tables manually, the following SQL commands should be used. Note that all table and column names are lowercase and are unquoted. CREATE TABLE history ( var_name varchar(100), time_stamp varchar(30), time_stamp_ls varchar(14), var_value float8 ) WITHOUT OIDS; ALTER TABLE history OWNER TO postgres; CREATE TABLE history_s ( var_name varchar(100), time_stamp varchar(30), time_stamp_ls varchar(14), var_svalue varchar(40) ) WITHOUT OIDS; ALTER TABLE history_s OWNER TO postgres;

Data Sources

JMS Admin Data Source (for TIBCO EMS only)

12380: Attach to EMS Administration dialog no longer crashes

In previous versions, the Attach to EMS Administration dialog would sometimes crash if it was opened very quickly after starting the Display Builder. This has been fixed.

JMS Data Source

12442: EMS Servers tab in Options dialog fixed

The EMS Servers tab in the Display Builder Application Options is no longer initially blank when a custom servers.xml file is used and server discovery is disabled.

JMX Data Source

12377: The JMX data source now supports the java.util.Date type

The JMX data source now supports the java.util.Date type.

SQL Data Source

12387: The BIGINT SQL type is now supported.

The BIGINT SQL type is now supported. A column of this type results in a LONG column in the resulting GmsTabularData.

12388: Memory usage has been reduced when processing text columns

Enhancements have been made to the SQL data source to reduce memory usage when processing strings.

12451: SQL query no longer fails in Data Server with -xmlredirect

In prior releases, if the Display Builder or Viewer redirected SQL queries to the Data Server and the xmlredirect option was specified, then SQL queries containing single quotes would fail. This is fixed.

TIBCO Hawk Data Source

12392: Double values > 2E10^7 in a table no longer display incorrectly

In previous releases, double values greater than 21,000,000 from a TIBCO Hawk Microagent were displayed incorrectly. This has been fixed.

TIBCO Rendezvous Data Source

12297: RV Monitor metrics now include % Retrans and % Pkts Missd

The tables and bar graphs in the RV Monitor application have been updated to show the percentages of missed packets to packets received and retransmitted packets to packets sent.

12302: Support added for multiple transports for RV Monitor

The tables and graphs in the Tibco Rendezvous Monitor have been modified to support multiple transports on a single host.

12381: RV monitor now shows hostnames in addition to IP Address

Tables in the RV Monitor now show the host names in addition to the IP addresses.

Demos

GI Demo

12434: GI demo added to the deliverable

The GI demo has been added to the standard release. The GI demo illustrates the integration of RTView with TIBCO GI. The TIBCO GI framework provides the web application frames, with frame content provided by the RTView Display Server (thin-client deployment). Refer to demos\gi\JSXAPPS\SLHawkMonitor\README.txt for details on how to integrate TIBCO GI with RTView.

Display Server

12223: Property added to specify display's refresh rate in Thin Client

In a Display Server deployment, a display is refreshed in the client browser at regular intervals. The interval (15 seconds, by default) is defined in rtvdisplay.properties and can be changed, but it applies to all displays. In this release, a refresh interval can be assigned to each display using a new background model property named rtvRefreshInterval. To assign a Display Server refresh interval to a display, open the display in the Display Builder and click File/Background Properties and in the dialog click Model Properties. In the property sheet, enter a value for rtvRefreshInterval. If the value of rtvRefreshInterval is an empty string (the default) or is a number less than zero, or is not a number, the default refresh interval (defined in rtvdisplay.properties) will be used. If the value of rtvRefreshInterval is zero, the display will not be periodically refreshed. (The user can still request a refresh from the Thin Client popup menu). A positive number specifies the Display Server refresh rate, in seconds. The minimum interval is 5 seconds. A substitute string may be entered as the value of rtvRefreshInterval, for example $myRefreshInterval. The value for the substitute string could be assigned in a drill down to the display. It is also possible to attach rtvRefreshInterval to data. If the 'refresh' parameter is specified in the URL used to open the display, this value overrides any value specified in the display's rtvRefreshInterval property.

12318: New portlet added for viewing displays in a portlet container

This release includes a portlet which can be used to view RTView displays in a JSR 168 compliant portlet container. The portlet has been tested in Liferay/Tomcat but should also work in other JSR 168 compliant portlet containers. The release includes additional configuration files specific to Liferay. For other portlet containers, additional setup may be required.

12373: Display server improved to eliminate blink between page loads

The Thin Client has been improved to eliminate the flash or blink that sometimes occurred when loading a new display. This occurred as the browser cleared the previous page before loading the page for the new display and was most noticeable on large display or in cases where the server response was slow to arrive. In this release, navigating to a new display does not cause the browser to load a new page. As part of this improvement, Back and Next items have been added to the thin client's popup menu. These can be used to recall up to 10 previous displays.

12384: Timestamp provided for -verbose output for Display/Data Server

A timestamp is now included in the diagnostic output from the Data Server and Display Server enabled by the -verbose option.

12390: Bug with logo in headless mode fixed

In the previous release, if the Display Server was run in headless mode and a client viewed panels.html or panels.jsp, the logo panel at the bottom of the page would display an error message. In some cases this would cause subsequent problems loading other displays. This problem is fixed.

12397: Firefox cpu performance improved when connecting to Thin Client

In the previous release, browser CPU usage would increase if a display was left open and refreshing for an extended period in the Thin Client. The problem was more noticeable if multiple panels were used and if the refresh interval was short. This problem is fixed.

12423: obj_table03 no longer crashes display server in -daemon mode

In prior releases, if the Display Server was run with the -daemon option and a client opened a display containing a rotated table object (obj_table03), the server would throw an exception. This is fixed.

12432: Table scrollbars no longer paint outside table in FireFox

In the previous release, when using the Thin Client in Firefox, a table with a width of less than 150 pixels was not drawn correctly. In particular, the table's vertical scrollbar was drawn outside of the table. This is fixed.

12459: Bar graph colors no longer incorrect for multiple bar groups

In the previous release, if a display with a background image also contained a bar graph whose barProperties specified a color index > 32, the Display Server would draw the corresponding bars in white instead of the specified color. This is fixed.

Distribution

12391: Data sources are now found if a final backslash in env variable

In RTView 4.3, the data sources did not load correctly if the supporting environment variables ended with \. This has been fixed.

Functions

10497: Edit Function dialog layout reworked

In the Display Builder, the Edit Function dialog has been given an improved layout that will work better when the dialog is resized.

11539: More help information added to the Edit Function dialog

A Help button has been added to the Edit Function dialog, to bring up a dialog containing a detailed description of the selected function.

12338: The Subtotal By Time function now returns time column as DATE

The Subtotal By Time function previously returned the "Value" column as a STRING even if the first column was of DATE type. The new version of this function now sets the type of the resulting table to be the same type as the original data, as long as the Date Format argument is left blank. If the Date Format argument is specified, the function will return a String in the first column as it did before. NOTE: In previous versions, a null Date Format field would result in a default format used in returning the String column. This behavior is now changed and could result in a visual difference is some displays.

12347: New Filter By Wildcard and Extract Data functions using Regex

Two functions have been added for filtering tables: Filter By Pattern, Filter And Extract Matches. The Filter By Pattern function returns a table containing all rows from the input table where the value of a column matches a pattern. This function takes the following arguments: Table: The input table. Filter Column Name: A string that specifies the name of the column in the input table to which the pattern is applied. If this argument is blank, then the pattern is applied to the row name. Pattern: A string that specifies a pattern. For each row in the input table, if the value in the specified column matches the pattern then the row is included in the result table. Pattern Is Reg Expr: An integer. If zero (the default), then Pattern should contain a string where * is a wildcard that represents any character, including none. If nonzero then Pattern must contain a regular expression as described at http://java.sun.com/j2se/1.5/docs/api/java/util/regex/Pattern.html The Filter And Extract Matches function also returns a table containing all rows from the input table in which the value of a column matches a pattern. The result table includes additional columns that contain each token that matches a group in the pattern. This function takes all of the arguments described above for the Filter By Pattern function, plus the following additional arguments: Number of New Columns: An integer specifying the number of new columns that should be added to the result table, to contain the matching groups extracted from the filter column in the input table. In the result table, the new columns appear to the right of the columns copied from the input table. New Column Names: A string specifying the names for each of the new columns, separated by semicolon. This argument is optional. If Number of Columns is larger than the number of names in Column Names, "Group N" will be used for each additional column, where N = 1,2,. For example, if Filter And Extract Matches is configured as follows: Table: trade_table from update.xml (from XML simulator) Filter Column Name: Customer Pattern: * * Pattern Is Reg Expr: 0 Number of New Columns: 2 New Column Names: FirstName;LastName then the result table will contain 2 additional columns named FirstName and LastName, after all the columns from the trade_table, as follows: Customer Symbol Shares Purchase Current High Low FirstName LastName Alice Chen ABC xx x.x x.x x.x x.x Alice Chen Betty Jones XYZ xx x.x x.x x.x x.x Betty Jones and so on. Note that the token that matches each wildcard in the pattern (in this case the customer's first name and last name) is extracted to a new column. The same result table could be obtained with a regular expression: Pattern: (.+) (.+) PatternIsRegExpr: 0 Note that parentheses are placed around each capturing group in the expression. (These are included implicitly around each * in a wildcard string). For more information on Patterns and capturing groups, see the Java documentation for java.util.regex.Pattern at http://java.sun.com/j2se/1.5/docs/api/java/util/regex/Pattern.html

12351: The Subtotal/Count Unique Values function has been optimized

The Subtotal/Count Unique Value functions previously performed poorly when there was a large number of rows in the table, or if the first column of data was of DATE type. These function has been optimized to perform well in both cases

12352: The Pivot On Unique Values function has been optimized

The Pivot On Unique Values function previously performed poorly when the "Key" column was of DATE type. This function has been optimized to perform well with all data types.

12353: The Pivot On Unique Values function now performs subtotaling

The Pivot On Unique Values function previously replaced the data in the pivot columns when consecutive rows were encountered containing identical pivot name values. This function has been enhanced to now subtotal the data when consecutive pivot names are encountered.

12354: The Subtotal functions now have option to retain columns names

The Subtotal By Time and Unique Value functions now provide an argument that permits the retention of the original columns names. Previously, the subtotal columns were names "Subtotal1..." or "Total1". The new argument "Use Column Names" when set to 1 retains the original column names. A value of 0 maintains existing behavior, useful when a display is built that needs to be independent of the column names in the data.

12356: Count By Bands function added

A new function Count By Bands has been added. This function accepts as arguments a Min Value, Max Value and Number of Bands. It divides the range given by the min and max into bands and counts the number of rows in the Table argument that contain a value that lies within each band. This function returns a table containing one column that holds the midpoint values of each band (one row for each band), and N additional columns, one for each column that was contained in the given Table argument. These columns contain the total counts of values that fall within the calculated bands. If the Return Cumulative Percents argument is set to true (1) then the returned columns will contain the cumulative percentage of the total count in each cell, rather than the individual counts.

12415: New First(n) and Last(n) functions added

Two new functions, First Table Rows and Last Table Rows, have been added. These functions provide the ability to select a given number of rows at the beginning or at the end of a given table. Additionally, it is possible to a specify a set of Index Columns which may be used to group the selected rows by the unique values in the index columns. If Index Columns are specified then the given number of rows will be returned each combination of unique values in the index columns.

12416: Provide Baseline Over Time function added

A new function has been added to provide the ability to calculate a baseline average over time given a time-series data set. The Baseline Over Time function calculates a baseline average of the values in the specified Table over the number of Date Part Intervals and offsets the timestamp to a Reference Time. It can be used to generate a baseline trace which may be plotted in the same chart against a set of current data for comparison purposes.

12420: Count and Subtotal By Time no longer incorrectly rounds days

In previous versions, the Count and Subtotal By Time functions would round the date if multiple date parts were specified. This has been fixed.

12424: New Group By Unique Values Function added

A new function has been added, the Group By Unique Values function. This function is similar to the existing Subtotal By Unique Values function, but is more general. It provides the ability to specify a set of Index Columns along with a predefined Value List. All data in the given table are aggregated and grouped by the given index columns. A Group Type parameter may be set to "SUM", "COUNT", "AVERAGE", "MIN", or "MAX" to indicate the type of aggregation that is desired.

12425: New Group By Time Function added

A new function has been added, the Group By Time function. This function is similar to the existing Subtotal By Time function, but is more general. It provides the ability to specify a Date Column, a Time Range, and an aggregation Interval. All data within the specified range are aggregated by the given time interval. A Group Type parameter may be set to "SUM", "COUNT", "AVERAGE", "MIN", or "MAX" to indicate the type of aggregation that is desired.

12426: New Group By Time and Unique Values Function added

A new function has been added, the Group By Time And Unique Values function. This function is a combination of the Group By Time and the Group By Unique Values, permitting the aggregation of data by both time and index columns. This is the most general of the aggregation functions provided in RTView.

12427: New Filter By Time Range function added

A new function, Filter by Time Range, has been added. This function provides a way to filter a table based on a given Start and End Time. It returns a copy of the given table containing only the rows in which the value in the Time Column falls within the specified Range.

12462: New Reference Function added

A new Reference function has been added. This function makes a reference to a specified table without copying the contents.

Local Variables

12422: Initial value now saved correctly if it contains quotes

In prior releases, the initial value of a local variable could not contain the double quote character. This is fixed.

Object Library

11695: tableStringValues changed to valueTable for all objects

The tableStringValues property has been renamed valueTable. This affects the following objects: obj_aggalertlava, obj_bargraph, obj_objectgrid, obj_pie, obj_radar, obj_table02, obj_table03, obj_xygraph.

12240: Bug in Object Properties for combo boxes has been fixed

A minor bug that was appearing in some of the Object Properties combo boxes has been repaired. When clicking on some combo boxes, the bug caused an incorrect value to be initially selected in a few circumstances. This bug did not impact the user's ability to correctly choose values from the combo box.

12458: Default bgEdgeWidth changed for all rectangle general objects

In the Display Builder, the rectangle objects on the General tab of the Object Palette have been modified to have a bgEdgeWidth value of 1.

Bar Charts

12298: Bar graph no longer fails to show very small values

The obj_bargraph graph would sometimes fail to show any bar when the values were very small (compared to the graph scale) whereas a zero value bar would show as a very small bar. This behavior has been modified so that very small values and zero values will both show a very small bar.

12337: More space added between labels

The calculation used to decide whether to rotate axis labels in the bar graph has been improved. In previous versions of RTView, the labels had to be within 1 pixel of each other before the rotation code was activated. A larger gap is now maintained between horizontal labels.

Charts (General)

12324: Trace marker appearance has been improved

In previous version, markers on traces were often but not always drawn symmetrically. This bug was fixed and now the markers are drawn more symmetrically in most cases.

Control Objects

12229: valueToSet* properties added to check box control object

The checkbox control object (obj_c1btn_chk) has been enhanced to include two new properties, valueToSetChecked and valueToSetUnchecked. The default values are 1 and 0, respectively. A checkbox can be used to set a local variable, by attaching the variable to the varToSet property of the checkbox. If the new valueToSetChecked and valueToSetUnchecked properties are set to their default values (1 and 0), the checkbox will continue to work as in previous versions, setting the local variable to 1 when checked and to 0 when unchecked. To have values other than 1 and 0 placed into the varToSet local variable when the checkbox is checked and unchecked, assign the desired values to valueToSetChecked and valueToSetUnchecked properties. A string or number can be entered for either property, including an empty (zero-length) string. The value property of the checkbox can also be attached to data. Typically it is attached to the same local variable as the varToSet property. For compatibility with previous versions, if valueToSetChecked is 1 and valueToSetUnchecked is 0, then the the checkbox will be checked when its value property can be converted to a nonzero integer value and will be unchecked otherwise. If valueToSetChecked is not 1 or valueToSetUnchecked is not 0, then the checkbox will be checked when its value property equals the the valueToSetChecked property and will be unchecked otherwise.

12262: Text entry and area control Display objects now lose focus

In prior releases, in the Display Builder's preview window and drill down windows, a lost focus event was not delivered to a text control object unless the user clicked on another control object or outside of the window. Clicking on blank space in the window or on a non-control object should also generate a lost focus event. This is fixed.

12311: Color and font support enhanced for controls

Control objects have been enhanced. The fgColor property is now supported on the button, combo box, and list box controls. The labelTextFont and labelTextSize properties are now supported on the button control. The Display Builder allows a value of "Default" to be assigned to the bgColor and fgColor properties of most control objects, indicating that the default color should be used for that property. For example, if Default is assigned to the bgColor and fgColor of a push button, then in the Display Viewer the push button will have the standard Java push button look (black text on a blue/white gradient). In a browser using the RTView thin client, the push button will have the browser's default push button look. This feature is supported on the push button, combo box, and list box controls, and on all text edit controls. "Default" is the initial value for bgColor and fgColor when an instance of any of those controls is made from the Controls palette. To assign Default to bgColor or fgColor through a data attachment, use a value of -1.

12456: Combo box no longer crashes if all entries in listValues are

If the listValues property of a combo box was attached to a table and a nonexistent column name was specified, an array bounds exception was thrown. This is fixed.

Legends

12341: Color thumbnail in legend has been enlarged

The color swatch in the Legend now shows slightly larger and is positioned vertically to be approximately centered. With a legend text font size of 16 points or more, the position is given a slight adjustment to look better in the larger vertical space available.

Links

12406: Links now supported between very small nodes

In versions 4.3c1 and 4.3d1, it was very difficult to create a link between very small nodes. This has been fixed.

12407: Link creation line no longer left in a display

In previous versions, if the user cancelled in the middle of adding a link, the link creation line was left in the display. This has been fixed.

12408: Cloning multiple links now properly shows all links

In previous releases, when multiple links between the same two nodes were copied and pasted, the pasted links drew on top of each other until the display was reloaded. This has been fixed.

Object Grid

12364: Boolean data can now be mapped to integer fields

The object grid has been enhanced so that columns of boolean data can be mapped to integer fields in the Icon Properties dialog.

Tables

11942: Row selection is lost after sorting a table

In the table object (obj_table02) if you selected a row and then resorted the table by clicking on one of the column headers, the selection would stay on the same row number instead of following the data for the originally selected row. This has been fixed.

12165: Column headers now display when a row filter returns no rows

In previous versions, if a row filter resulted in no rows, the object did not display the column headers. This has been fixed.

12176: Drill down no longer occurs when you left-click in edit mode

This bug has been fixed and now drill down does NOT occur when a cell in a obj_table02 is left-clicked, while the table is being edited and drill-down is active.

12212: Support null value for date field

Support for null timestamps has been improved in the SQL and XML data sources. In prior releases, these data sources converted null timestamp to a value of zero, which was displayed as a time near Jan 1 1970 (The actual displayed time depended on the local timezone). In this release, a null timestamp will be displayed as an empty string.

12457: bgBorderFlag added to default background model

In the Display Builder, the default background model has been given an additional property, bgBorderFlag. You will see this property when you open the Background Properties dialog and click Model Properties. Unchecking bgBorderFlag will remove the 1-pixel black line around the outside edges of the background.

Trend Charts

10675: Autoscale on Trend Graph includes all traces

This bug was fixed by adding the yAxisAutoScaleVisTracesOnlyFlag property to the Trend Graph in the Y-Axis category. yAxisAutoScaleVisTracesOnlyFlag is false by default and controls whether invisible traces contribute to the autoscaling of the Y axis. True means include only visible traces and false means include all (even invisible) traces.

12261: Zoom-out of trend graph no longer interrupted by multi-select

In the previous release, the zoom-out feature of the trend graph was erratic in the main editing window of the Display Builder, since a Shift+Click event is also used to deselect an object. Now, if the user performs a zoom-in on a trend graph in the main window, a subsequent Shift+Click on the graph area will perform a zoom-out, as in the Display Viewer.

12330: Option added to round start and end times

The trend graph has been enhanced to allow the time axis endpoints to be rounded for historical traces. In prior versions, if a positive value is specified for the timeShift property, the time axis endpoints are rounded to the nearest multiple of that value in seconds. But a positive timeShift value also causes the time axis to shift at the timeShift interval to include the current time, which is unsuitable for historical traces. In this release, if a negative timeShift value is specified the time axis endpoints will be rounded to the nearest positive multiple of that value in seconds, but the time axis will not shift unless the trace data changes. For example if timeShift = 15 (the default), the time axis endpoints are rounded to the nearest 15 second interval, and the time axis will shift left every 15 seconds to include the current time. In this release, if timeShift = -15, the time axis endpoints are rounded as before but the time axis will only shift if new data is received. So, a graph with historical traces should use a negative timeShift value.

12334: Trace line no longer covered by scrollbar

In prior releases, if a trend graph trace line was drawn at the very bottom of the trace area it was obscured by the graph's horizontal scrollbar. This is fixed.

12441: Support added to plot multiple points at same time

The trend graph can now plot multiple y values with the same x (time) value, as it could in releases prior to 4.3

12445: traceNValue saved to HISTORY_S table

In release 4.3, if a display contained a trend graph with traceNValue (N=1,2,3...) attached to a scalar data value (not a table), and the display was used as a data configuration file in the Historian, the Historian would not store the data in the history table as expected and would be unavailable to the Display Builder and Display Viewer. This problem is fixed.

RTView Display Panel

10052: Add recently opened file list to the File menu

The Display Viewer and Display Builder have been enhanced to display lists of recently-opened files on their respective File menus. You may use these lists to re-open files you have recently opened.

Reporting

12186: Report generated for All EMS Servers include all data

In previous versions, reports generated for the "All EMS Servers" display were missing data. The previously missing data now appears in the generated report.

12285: Display name is no longer the same for all displays

Previously reports generated by the report generator using a report config file containing multiple sections would have all the pages with the name of the first display as their header. Now the header for each page is the name of the display used for the section (unless the report title option is used, in which case the title of the report will be used as the header for all pages in the report).

12346: Rotated table now supported in expanded report

In previous versions, expanded rotated tables (obj-table03) were not included in reports. Rotated tables now appear expanded in reports.

12374: Dotted lines now appear in generated reports

Previously dotted lines did not appear in PDF output. Dotted lines now appear in PDF output.

12375: Size of generated tables and object grids reduced

In previous versions, expanded tables and object grids were too large in generated reports. Generated reports are now scaled such that expanded tables and object grids are the same size in the printed report, as they appear on a 19 inch 1280x1024 display.

12398: Indication added when report is generating

The Display Builder and Display Viewer now display a transient dialog to give an indication that PDF is being generated. The dialog is automatically dismissed when the PDF generation is complete.

12411: Asian characters now appear in pdf output

Previously Asian characters used in objects were not included in pdf output. PDF output will now contain Japanese characters when generated in a Japanese locale. Chinese characters in a Chinese locale, and Korean Characters in a Korean locale are also supported.

12428: Slider object no longer crashes headless report generation

Previously displays containing slider objects would cause errors when attempting to create reports using the Report Generator in headless mode. This has been fixed.

12429: Option added to use only date for generated report

The attribute append_timestamp in the output element of the report configuration file has been enhanced to allow just the date to be used as the timestamp part of the report file name. The values and the effect on the output filename are as follows. Value is the value of the append_timestamp attribute. e.g. append_timestamp = "value" timestamp is the format of the timestamp part of the generated report file name Value Timestamp none <none> false <none> true _yyyyMMdd_HHmmss date_time _yyyyMMdd_HHmmss date_only _yyyyMMdd

12430: Date format in generated reports changed

Previously when reports were generated with the attribute append_timestamp = "true" in the output element of the report configuration file, a long, field separated timestamp was generated. (of the form yyyy_MM_dd_hh_mm_ss ). A more compact timestamp (of the form yyyyMMdd_hhmmss) is now used.

12431: New title attribute supported for report generation

The report configuration file for the report generator now has a new, optional, attribute for the report element - title. When set, the the title value will appear as the title for all pages in the report. e.g. <report name = "report1" title = "My Report" >

12443: Error message displays when trying to overwrite open pdf

Previously, no error message was given when attempting to export a PDF to an output file that was already open by another application (e.g. exporting to a previously generated PDF file, when that file was currently open in acrobat). This error is now reported. The report generator will issue an error on (standard) output. The Display Builder and Display Viewer will raise an error dialog.

Substitution

11977: '\' character in a dd sub no longer saved as '/' character

In prior releases, substitution values in the drill down target property of a non-control object could not contain backslashes. This is fixed.

12455: Spaces in command line arguments no longer break on Windows

In version 4.3d1, command line arguments with spaces were not processed correctly. This has been fixed for Windows. To specify a command line argument with spaces, enclose the entire argument in quotes. For example: run_builder "-sub:mysub:sub value"

TIBCO EMS Manager

12290: Monitor Messages no longer required to browse topics and queues

Previously, in order to browse topics or queues it was necessary to start the EMS Manager with the Monitor Messages option enabled. This limitation has been removed. The EMS Manager will now attempt to make an administrative connection to a server whenever a topic or queue browser is requested. Once an administrative connection has been made, it will remain active so that subsequent topic or queue browsing for the same server will use the existing connection.

Transaction Message Monitor

12231: Support added for header & property fields in JMS TM

The JMS Transaction Monitor now supports getting the transaction id from property and header fields in a JMS message. To specify that the id field is a header, prefix the header field name with $header. For example: msg msgA $header:JMSCorrelationID To specify that the id field is a property, prefix the property field name with $prop. For example: msg msgA $prop:senderID Both the header and property fields can be used in conjunction with other fields when concatenating a transaction id. For example, msg msgA $header:JMSCorrelationID $prop:senderID fieldA The JMS Transaction Monitor does not support XML in either the header or property fields.

12286: Transaction Monitor no longer outputs bad data

In previous releases, there were 2 cases where the Transaction Monitor would output bad data. The first case is when the first message in any transaction definition is used in any other transaction definition. This has been fixed by only allowing one transaction with a given ID to process at a time. There is still one limitation for this. The first message in a transaction definition cannot be used as the first message in any other transaction definition. # The second case where bad data was produced is if one or more messages were skipped in a transaction. For example, if a transaction definition contained 5 messages and the first message then the last message was received without the messages in between, the transaction was completed. This has been fixed. Now if a message in the transaction is skipped, an error message will print to the console that a message was received out of order and the transaction will not be updated.

Version 4.3d1 Release Notes

RTView

Reporting

B12345: Rotated table no longer causes crash when exporting report

In RTView version 4.3c1, exporting a report for a display that contained a rotated table (obj_table03) caused an exception to be thrown and the application to hang. This problem has been fixed.

B12348: Report Save As dialog now shows directories

In RTView version 4.3c1, the Save As dialog for exporting reports did not show directories. This made it difficult to save reports in a directory other than the one containing the display. This has been fixed.

Editing Functionality

B12349: Preview now works for displays with file names containing spaces

In RTView version 4.3c1, the preview window did not work for displays with file names containing spaces. This has been fixed.

Distribution

B12342: All Windows shortcuts now work without RTV_HOME\bin in PATH

In RTView version 4.3c1, many of the Microsoft Windows shortcuts in <install_directory>\shortcuts did not work. This has been fixed.

B12344: Run scripts now work when run as UNIX background processes

In RTView version 4.3c1, some of the run scripts did not work when run as UNIX background processes. This has been fixed.

Version 4.3c1 Release Notes

RTView

Builder Application Body

B12193: Undo stack correct if select an item in a drill down window

In previous RTView releases, if selecting an object in a drill down window deselected an object in the main window, the undo event did not get recorded. This caused the history stack to get corrupted. This problem has been fixed.

B12195: Copy from drill down window fixed

In the Display Builder, if an attempt was made to copy an object from a drill down window to the main display it would fail. This has been fixed.

Reporting

E11400: PDF report generation now supported

PDF reports can now be exported from, or generated using, RTView. The 'export' functionality is available from all interactive deployment options of RTView. For interactive versions of the Display Viewer or Display Builder: The user can choose which RTView display for which they want a report generated. The user can select the kind of report to be exported ('Display' or 'Report') The user can select page layout options (orientation, margins) for the generated report. The user can select where the exported report is to be saved. Instructions for interactive applications Select the type of report you wish to export from the main menu, or from the popup menu on a display. Select the desired output (orientation, margin) options from the Page Setup Dialog. For non-applet applications you can then choose the name of the file you wish the generated report to be saved as using the Save Dialog. The report is then generated and saved. For browser based interaction (applets + Display Server based), once the Page Setup has been set, the generated PDF will be opened in a new browser window. NOTE: Some popup blockers may prevent the creation of this new browser window. Please configure your popup blockers to allow the creation of these new windows if you wish to view and save the generated PDF. If Adobe Acrobat has been configured as the application to view PDF files from within a browser, then the "Save a copy" toolbar button can be used to save the generated PDF file to the local file system from within the browser. Reports can also be generated from the "Report Generator" by means of a configuration file that controls the contents of the generated report(s). Report Generator This is designed to allow the generation of specified reports from the command line by means of a(n XML) report configuration file. It is run by running the run_reportgen script in the directory where the RTView .rtv files reside. It takes the following arguments: -report:<<>report config file name<>> // name of configuration file to be used -verbose // output verbose status information during report generation -silent // supress vebose xml parsing e.g. cd %RTV_HOME%/demos/features run_simdata run_reportgen -report:report.xml A report generator configuration file is an XML file. An example report.xml file is given below. <?xml version="1.0" ?> <rtvreport xmlns="www.sl.com" version="1.0"> <report name = "report1"> <section display = "object_variety.rtv" subs = "" timeout = "0"> <page_setup orientation = "landscape" margin_left = "1.0" margin_right = "1.0" margin_top = "1.0" margin_bottom = "1.0"> </page_setup> </section> <section display = "object_variety2.rtv" subs = "" timeout = "0"> <page_setup orientation = "landscape" margin_left = "1.0" margin_right = "1.0" margin_top = "1.0" margin_bottom = "1.0"> </page_setup> </section> <output filename = "report1" append_timestamp = "true" report_or_display = "report"> </output> </report> <report name = "report2"> <section display = "object_variety3.rtv" subs = "value1:value2 value3:value4" timeout = "0"> <page_setup orientation = "landscape" margin_left = "1.0" margin_right = "1.0" margin_top = "1.0" margin_bottom = "1.0"> </page_setup> </section> <output filename = "report2" append_timestamp = "true" report_or_display = "report"> </output> </report> </rtvreport> The report configuration is contained within the <rtvreport> element. An rtvreport can consist of multiple reports. A report is contained in a <report> element, and has a 'name' attribute. A report consists of multiple <section> elements and an <output> element. A <section element> has a <page_setup> element. A <section element> has the following attributes: display = "object_variety3.rtv" subs = "value1:value2 value3:value4" timeout = "0" 'display' - name of rtv display to use for section 'subs' - any subs values to apply to rtv display 'timeout' - time to wait (in seconds) for data sources to update before producing report for section A <page_setup> element has: 'orientation' element - values are "portrait" or "landscape" margin attributes (values are in inches) margin_left = "1.0" margin_right = "1.0" margin_top = "1.0" margin_bottom = "1.0" An <output> element has the following attributes: filename = "report2" append_timestamp = "true" report_or_display = "report" 'filename' - base name of generated report file - pdf suffix will be added automatically 'append_timestamp' - values are "true" or "false" - append timestamp to file basename - timestamp is a 'version' of ISO date format that allows sorting, and will work on windows filesystems 'report_or_display - kind of report to generate , values are "report" or "display"

Editing Functionality

E10038: Click and drag scaling of objects added

Improvements have been made in the way selected objects are displayed and how they are moved and scaled, as described in the following list. Objects may be selected and unselected as before: by drawing a rectangle around a group of objects, by clicking (with or without Shift and Control modifier keys) on objects, by the keyboard shortcut Control-A, and by using the Object List dialog. Selected objects are outlined with an extent rectangle. Within the selection extent the selected objects (if more than one) are outlined with highlights. The first object selected will be outlined with a broad dashed line and the others with a narrow solid line. The first object (sometimes called the focus object) will have its properties displayed in the property dialog and will be used as the anchor object for align operations. The entire selection may be moved by grabbing with the mouse any object in the selection or any side of the selection extent. The entire selection may be scaled by grabbing with the mouse any of the handles at the corners of the extent and at the midpoints of its sides. Scaling by grabbing a corner handle will cause the objects to be scaled in both width and height, while grabbing a side handle will cause the objects to be scaled in either width or height but not both. (Note the "scale" menu items have been removed.) The mouse cursor will change when over a selected object or an extent side to indicate the object(s) may be moved, and will change when over an extent handle to indicate they may be scaled. These cursor changes replace the textual "move" and "scale" tooltips. The cursor will also change when adding an object from a palette, or via a copy-paste operation, and when adding a link. These cursor changes replace the textual "add" and "connect" tooltips. The extent handles are disabled in drill down windows. The highlights within the selection may be disabled, leaving only the exterior extent rectangle, with the command-line option nohilites.

E12269: Preview Window added to Display Builder

A new "Preview Window" option and toolbar button have been added to the Display Builder. Selecting this option brings up the current display in a Preview Window, so that you can exercise control objects. (Control objects are not active in the main editing window). Once you have made any edits, the Preview button becomes greyed out until you do a Save. This is because the Display Builder cannot do the preview without loading the display from disk.

Command Execution

E12085: Mechanism implemented to notify user of command failure

In this release of RTView, commands executed by a custom data source or a custom command handler can return a status object, indicating whether the command succeeded or failed, and containing an optional error or information message that will be displayed in a dialog window. For the Display Server, the status message is printed to the Display Server console but is not shown on the client.

E12086: Command confirm added for control objects

The commandConfirm property is now supported for controls. The default is false.

E12087: Mechanism implemented to close window on successful command

All objects now support a commandCloseWindowOnSuccess property. The value of this property is a boolean. If true, and if the object is displayed in a popup window, the popup window will be closed after the object is clicked and its command is successfully executed. Custom commands and custom data source commands can be coded to return a status object that indicates whether the command succeeded or failed (E12085). Note that this commandCloseWindowOnSuccess is ignored by the Display Server. Also note that all built-in system and data source commands return a success status, regardless of the actual command results, so for those commands the popup window will always close if commandCloseWindowOnSuccess is true.

E11978: Command confirm text property implemented for objects

All objects now support a commandConfirmText property. The value of this property is a string. When an object is clicked, if a command is defined for the object and the commandConfirm option is checked, the value of commandConfirmText will be displayed in a confirmation dialog. The property value may be attached to data, and may also contain substitutions. For control objects, it may also contain $value.

B12210: Text box in System Command dialog fixed

In the Display Builder Define Command dialog, some of the text boxes would be displayed with their bottom edge truncated after text was entered and the dialog re-displayed. This has been fixed.

Functions

B12183: Attach to Function Data now allows sub in name

In RTView version 4.2c, a bug was introduced that disallows substitutions in the name of a function specified in the Attach to Function Data Dialog. This has been corrected.

Display Server

B12291: Thin Client grid no longer loses rows when table shrinks

In prior RTView releases, if a scrolled grid was displayed on the Thin Client and the user had scrolled down in the grid, and if the grid was then updated with a data table that contained fewer rows, sometimes rows were missing or clipped in the updated grid. This problem is fixed.

B12245: IE browser now works with long URLs from Display Server

The Display Server used to generate URL's that exceeded the Internet Explorer limit of 2048 characters for displays that had a large number of substitutions, or substitutions that contained a lot of characters. This problem has been fixed.

B12185: General SQL query error in Display Server fixed

In the previous RTView release, if the Display Server closed a display at the same time that it was opening another display, and if both displays used the same general SQL query, the query results were discarded and the following error appeared in the Display Server's console window: ERROR: Can't share general SQL query. This has been fixed.

B12243: Command confirm now works correctly in Display Server

In previous versions, the command confirm did not work in the Display Server for datasource commands, and did not include all arguments in the case of system commands. This has been fixed.

B12168: Column headers now centered in Display Server

In the previous release, the Display Server aligned table column header text incorrectly. The text was shifted several pixels to the left to allow room for the sort icon, even when a column was not selected as the sort column. This has been fixed.

B12169: Arrow icon missing on column sort in Display Server

In RTView version 4.2c, a bug was introduced that caused the arrow icon, visible when columns are sorted in a table, to disappear in the Display Server. This has been corrected.

B12170: Scrolling no longer breaks time range in Display Server graphs

In RTView version 4.2c, a bug was introduced that caused scrolling to break the time range when toggling between two time ranges in trend graphs in the Display Server. This has been corrected.

B12226: Stock and XY graphs on mult clients with diff range fixed

In prior releases, the Display Server would sometimes draw a scrolled graph with an incorrect x or y range if multiple clients were viewing the same display and interacting with the scroll bar on the graph. This problem is fixed. PALREV: (360816)

B12172: Trend graph scroll problem with multiple clients fixed

In RTView version 4.2c, if two clients were viewing the same display with a trend graph, and one client changed the time range of the graph using a local variable, the other client would also see this time range if they scrolled. This has been corrected.

E12122: Support for using Display Server output in an HTML DIV tag

A custom JSP tag library is now supported by the Display Server. The tag library, or taglib, allows users to create custom JSP pages containing one or more RTView displays, without writing JSP scriptlet code. This feature requires a servlet container that supports JSP 2.0 such as Tomcat 5.0 or newer. TAGS: The RTView taglib defines two tags: 1. setup - This tag must be included once on each JSP page that uses the RTView taglib. It will insert references to Javascript files and CSS files required by the Display Server. This tag has no attributes. Example: <rtv:setup/> 2. display - This tag inserts an HTML DIV tag containing an RTView display. Note that the setup tag must be included in the JSP page before the first display tag. The display tag has the following attributes: id - (required) the ID for this tag. This must be unique on the JSP page. An id must start with a letter and may contain only letters and digits. displayname - (required) a string specifying an RTView display (.rtv) file name. This should correspond to the name of a display file accessible by the Display Server. refresh - (optional) a positive number defining the rate, in seconds, at which the display inside this DIV should be refreshed. If zero, the DIV is not periodically refreshed. If not specified, the refresh rate is determined by the setting in rtvdisplay.properties. style - (optional) the CSS style to be used for this DIV Example: <rtv:display id="d1" displayname="MyDisplay" refresh=0"/> REQUIREMENTS: There are a several requirements for JSP pages using the RTView taglib: - The taglib must be defined at the top of the JSP page as follows: <%@ taglib prefix="rtv" uri="rtv.tld" %> Note that the file rtv.tld is contained in rtvdisplay.war - For proper operation of the RTView menu, the onmousedown and onkeydown event handler of the page's BODY should be defined as follows: <BODY onmousedown="rtvBodyMouseDown(event)" onkeydown="rtvBodyKeyDown(event)"> If other functions are already assigned to these event handlers, then those functions should call rtvBodyMouseDown and rtvBodyKeyDown. - As mentioned above, the <rtv:setup> tag must be included once per JSP page, before the first display tag. - As mentioned above, the id attribute of each <rtv:display> tag must be unique on the page and may contain only letters and digits. - Each JSP page must include the RTView menu, as follows: <jsp:include page="rtvmenu.html"/> This is typically added near the end of the page's BODY, and should not be enclosed in any elements other than <BODY>. - All .jsp files must be added to the rtvdisplay.war file, which must then be redeployed. EXAMPLE: The following is a simple JSP page using the RTView taglib. <%@ page contentType="text/html;charset=UTF-8"%> <%@ taglib prefix="rtv" uri="rtv.tld" %> <HTML> <BODY topmargin='0' leftmargin='0' onmousedown="rtvBodyMouseDown(event)" onkeydown="rtvBodyKeyDown(event)"> <rtv:setup/> <rtv:display id="d1" displayname="MyDisplay" refresh="0"/> <rtv:display id="d2" displayname="AnotherDisplay" refresh="30"/> <jsp:include page="rtvmenu.html"/> </BODY> </HTML> LIMITATIONS: A separate timer is used for each <rtv:display/> tag that has a nonzero refresh rate. If all of the display tags on a page use the same refresh rate, they may still be refreshed at slightly different times. Also a display's timer is restarted when a drilldown is performed in the display, which may offset its refresh timer from other refresh timers on the page.

E12127: Display Server now runs as a daemon process

The Display Server can now be run on a headless host, as follows: run_displayserver -daemon

Data Server

B12265: Data Servlet sometime fails to reconnect

In prior releases, if the Display Viewer was configured to connect to the Data Servlet via HTTP and if the connection was lost and then quickly restored, the Display Viewer would sometimes ignore subsequent data updates from the Data Server until a different display was opened. This has been fixed.

B12238: Data Server improved to avoid sending redundant data

The Data Server has been improved to avoid sending redundant data when a client adds or changes data listeners.

Transaction Message Monitor

E12187: JMS Transaction Monitor now supports JMSCorrelationID

The JMS Transaction Monitor has been enhanced to allow the use of the JMSCorrelationID as an id field.

Data Sources

E12246: Return command status implemented for all system commands

The handling of system command errors in the Display Viewer has been improved. If a system command fails, a message dialog will be displayed. Also, if the command is invoked from an object in a popup window and the object's commandCloseWindowOnSuccess property is set, the popup window will be closed if the command succeeds but will not if it fails. Previously, the message was only printed in the Display Viewer's console window and if commandCloseWindowOnSuccess was set the popup window was closed whether or not the command succeeded. This change affects these system commands: Execute URL Open Browser Play Audio File Run DOS or Unix Command Note that support for this feature on Custom Commands and Custom Data Source Commands was added in the previous release. Currently, this feature is not supported on Data Source commands. For a DOS or UNIX system command, the Display Viewer checks if the command is started succesfully. It does not check the command's exit status. The Display Server is not affected by this change.

TIBCO RV Datasource - Monitor Feature

E12192: TIBCO Rendezvous Monitor support for RV data source added

The TIBCO Rendezvous data source has been enhanced to support built-in monitoring functions. The metrics produced by these functions are accessible via data attachments to special subjects that start with the name "RTViewDs.". There is a new Display Builder Options tab named "TIBCO Rendezvous Monitoring". On this tab, there is a check box that can be used to control whether the special RTViewDs subject tables are made visible in the data attachment dialog. This is off by default, but may be turned on in order to attach to the monitoring metrics. The following monitoring metrics tables are available: RTViewDs.HostStatusTotal - the latest data for all hosts obtained from the TIBCO Rendezvous information message: _RV.INFO.SYSTEM.HOST.STATUS RTViewDs.HostStatusCurrent - the same as the previous table, except that each numeric value is replaced with a delta from the previous message RTViewDs.HostStatusHistory - a running history of all the HostStatusCurrent rows only sets a property on an object when referenced for the first time; used for trend graph history RTViewDs.HostStatusHistory2 - same as History, but sets a property on an object every time a new row is added; used in history table RTViewDs.ConfigServices - output from tibrvconfig getServices method RTViewDs.ConfigClientTransports - output from tibrvconfig getClientTransports method RTViewDs.MultiCast* - six tables showing all output from rvtrace: PacketSource, PacketDest, PacketTotal SubjectSource, SubjectDest, SubjectTotal In the TIBCO Rendezvous Monitoring dialog, the following options are available: Show Monitor Tables in Data Dialog - Controls whether tables appear in data dialog Monitor Host Status Messages on Start - Controls whether RTView begins monitoring on startup or waits until a display references a HostStatus table Host Status History Depth - Sets the number of rows of data kept for each host. Default = 1000. A value of 0 means keep no history. A value of -1 means it is unbounded. Run Rvtrace on Start - Controls whether rvtrace begins running on startup or waits until a reference is made to a Multicast table Rvtrace Period - Sets the rvtrace update period. Default is 10. A value of 0 means use the default of 10. The following command line options may be used to override any of the default values or those set by the Options Dialog and stored in RVOPTIONS.ini -rvds:showindialog: - true or false -rvds:rtviewds.hostatus.onstart: - true or false -rvds:rtviewds.hoststatus.history: - set to -1, 0, or positive integer -rvds:rtviewds.rvtrace.onstart: - true or false -rvds:rtviewds.rvtrace.period: - set to 0 or positive integer

TIBCO Hawk Data Source

B12184: Objects showing RTViewDs Alert no longer cleared with alerts

In previous releases of RTView, a scalar object (ie, meter, label, scale) that was displaying the Alert column of the RTViewDs microagent would go blank when the cleared alerts were removed. Cleared alerts are only removed if the Rate to Remove Cleared Alerts is set to a value greater than 0 in the TIBCO Hawk Methods and Alerts tab of the Application Options dialog. This problem has been fixed.

B12209: HAWK problem when saving options fixed

A crash would sometimes occur in the TIBCO Hawk data source when saving Options if there was no default console active. This has been corrected.

OLAP Data Source

E12268: Support for multi-byte strings added for ODBO connections

In previous RTView releases, OLAP databases containing multi-byte characters were not supported in the ODBO connection. This has been fixed.

JMS Admin Data Source (for TIBCO EMS only)

B12280: Objects displaying filtered EMS Manager data are now cleared

In previous versions of RTView, filtered data was not cleared from the objects displaying row filtered data in the queue demo in the TIBCO EMS Manager. This has been fixed.

B12281: Queue browser enhanced

The behavior of the queue browser has been changed to provide a snapshot of the queue on each update rather than only displaying new messages in the queue.

Sample Displays and Applications

RV Monitoring Sample Application

E12233: RV Monitor demo has been added

A new demo "rvmonitor" has been added to the demos directory. This demo consists of a set of displays that can be used out-of-the-box to monitor the health and status of a set of TIBCO Rendezvous daemons.

GI Demo

E12247: GI Demo link added to Start Menu

A link to the online GI Demo has been added to the Start Menu.

JMX Monitor

B12241: All substitutions now shown in JMX Monitor for Display Server

In the JMX Monitor, the Display Server Application Manager RNREV: (082906) previously showed only the requested substitutions for each active display. This has been changed so that the current (actual) substitutions are shown instead, including substitutions that are embedded in the display as well as any substitutions made as the results of drilldown-sub (SETSUB) functions on the objects in the display.

Object Library

E12237: Several properties are renamed for consistency

The following object properties have been renamed: command string is now command command confirm is now commandConfirm drill down target is now drillDownTarget

E10664: Text Area object added

A text area control object has been added. The control supports display and entry of multi-line text with optional word wrap. Scrollbars appear in the control as needed. A text area control can be configured to set a local variable or to perform a command. These actions are performed when the control loses focus. The text area control supports properties for font, font size, foreground (text) color, and background color. In this release, these properties are also supported for the single-line text edit control. In prior releases, only the background color property was supported. In the Display Viewer, pressing the tab key inside a text area control will insert a tab character in the text. To move the keyboard focus away from a text area control, either click outside of the control or press Ctrl-Tab. In the Thin Client Browser, pressing the tab key inside a text area will move the keyboard focus.

Tables

B12140: Table Filter Properties dialog fixed to show scrollbars

In the Display Builder the Filter Properties dialog, which lists the filters applied to a table, would not present scrollbars if the list grew longer than the available area. This has been fixed.

B12276: filterProperties applied correctly in Display Server

In prior releases, if the filterProperties of an obj_table02 instance were configured to change row, cell, or text colors but the filter did not apply to any cells when the display was loaded, then any color changes made by the filter on subsequent refreshes were ignored by the Display Servlet. This problem is fixed.

E11893: Local variables and substitutions supported in filterProperties

The filterProperties on a table object can now contain substitute strings and local variable names. These can be used in a filter's column name, comparison value, and action value.

Object Grid

E10305: objectClassName renamed to iconProperties and dialog added

The Object Grid table (obj_objectgrid) now provides a full-featured dialog for editing the iconProperties property. This property used to be called objectClassName. The Icon Properties dialog allows the user to specify the Icon Class Name for the icon object to be displayed in the Object Grid. Most of the objects listed in the various tabs of the Object Palette can be used as icon objects in an Object Grid. Valid objects are automatically listed in the popup menu for the Icon Class Name field. Objects from the Object Palette that do not appear in the Icon Class Name popup menu may not be used as icon objects in the Object Grid. Invalid objects include the tables, controls, links and most of the graphs. Custom objects that do not appear in the Object Palette may be used as icon objects in the Object Grid by typing in the Icon Class Name. Not all of a icon object's properties may be specified through the iconProperties property. The properties that are available for specification are listed in the Icon Properties dialog. The Map column offers three choices for each icon object property: Default, Value and Column. Pick Default if you want to use the default value for the property. If the default value for this property changes in future releases of RTView, your icon object will reflect the new default value. Set Map to Value to specify a particular value for the property. Data attachments, substitutions and local variables may not be used for Property Values. Set Map to Column to specify that the value for a property should be pulled from a particular column in the table that is attached to the Object Grid's tableStringValues property. When Map is set to Column, the Property Value column will automatically display all of the columns in the table from tableStringValues. You may specify the name of a column that is not yet in the attached table by simply typing in the column name. By default, the Object Grid will display one object instance (of type Icon Class Name) for each row in the table attached to the Object Grid's tableStringValues property. Any properties with Map set to Column will pull their values from the column specified and from the row represented by that icon object instance. To display more than one icon object for each row in the attached table, turn on the "Allow multiple icon types" checkbox. Use the Add Icon and Delete Icon buttons to manage the list of icon objects to be displayed for each row in the attached table. If you enter the name of a custom object that is not currently visible to the Display Builder, the Add Property and Delete Property buttons will allow you to manage the properties of your custom object.

Graphs (General)

B12191: New editors for line style, line thickness and marker style

The Object Properties window now offers improved display and editing of properties controlling line style, line thickness and marker style. Previously these properties were displayed and edited simply as numbers, with each number representing a different option index value. Now the line style, line thickness and marker style properties are displayed with descriptive text and edited by choosing from a list of option descriptions. For line style, you may now choose from the following list: No Line Solid Dotted Dashed Dot Dashed This applies to all properties with names ending with LineStyle or TraceStyle, including: trace*LineStyle in the trend graph radialAxisLineStyle in the radar graph radialGridLineStyle in the radar graph valueAxisLineStyle in the radar graph valueGridLineStyle in the radar graph priceTraceLineStyle in the stock chart overlay*LineStyle in the stock chart valueHighAlarmTraceStyle in the trend, stock and xy graphs valueHighWarningTraceStyle in the trend, stock and xy graphs valueLowAlarmTraceStyle in the trend, stock and xy graphs valueLowWarningTraceStyle in the trend, stock and xy graphs For line thickness, you may now choose from the following list: Thin Medium Thick This applies to all properties with names ending with LineThickness, including: trace*LineThickness in the trend graph priceTraceLineThickness in the stock chart overlay*LineThickness in the stock chart For marker style, you may now choose from the following list: No Marker Dot + * o x Filled Circle Filled Diamond Filled Triangle Filled Square Filled Star This applies to all properties with names ending with MarkStyle, including: trace*MarkStyle in the trend graph valueHighAlarmMarkStyle in the trend, bar, radar, stock and xy graphs valueHighWarningMarkStyle in the trend, bar, radar, stock and xy graphs valueLowAlarmMarkStyle in the trend, bar, radar, stock and xy graphs valueLowWarningMarkStyle in the trend, bar, radar, stock and xy graphs

E12204: Support for date formatting of graph labels has been added

Support has been added to allow date formatting of graph labels. In the previous RTView version, the labelColumnFormat property of the bar, pie, radar and xy graphs only allowed for number formatting of numeric graph label data. If the graph label data is of type date, the labelColumnFormat property may use any of the standard Java date formatting strings to format the graph labels. Applying a date format string to numeric label data is not supported. Similarly, applying a numeric format string to date label data is also not supported.

Legends

E11828: Easily scalable legend object added for charts

The legend object (obj_legend) has been added to the Graphs tab of the Object Palette. This new object has been introduced so that legend information may be displayed outside of a graph. The Legend object is especially handy for saving space when displaying multiple graphs that all have the same legend information. The legend object is designed to be used in conjunction with a bar, pie, radar or xy graph. To associate a legend object with a particular graph, set the graphName property of your legend object to match the value displayed in the objName property of your graph object. The legend object will automatically pick up data and formatting information from the associated graph object. Use the legendValueVisFlag to display the data values associated with each legend label. The horizontal space allotted to the data values will automatically adjust to match the length of the longest data value. To reserve a minimum amount of horizontal space for the data values, use the legendValueMinSpace property.

Bar Graphs

E12205: X-axis rotation control enhanced

The label rotation feature on the bar graph has been improved, especially when handling long labels. In previous versions of RTView, long labels were often drawn on top of each other and clipped where they extended beyond the graph area. The horizAxisMinLabelHeight property has been added to the bar graph to control the minimum amount of space that will be reserved for the labels on the horizontal axis. If your axis labels vary over time, this property may be used to reserve a consistent amount of space below the graph for axis labels. The horizAxisLabelRotationAngle property has been added to the bar graph to control the amount of rotation for labels on the horizontal axis. Values for the horizAxisLabelRotationAngle may range from 0 to 90 degrees. Setting the value to 0 will cause the bar graph to automatically pick the optimum angle of rotation.

B12181: Autoscroll when bars resized in Display Server fixed

In prior releases, the Display Server would sometimes draw a scrolled graph with an incorrect x or y range. For example, this occurred on a scrolled bar graph if the minimum bar width was attached to a local variable and the variable's value changed at runtime. This problem is fixed.

E10936: An improved dialog for barProperties is added

An editor dialog has been added for the bar graph barProperties property. This dialog allows the user to view the actual bar colors and fill patterns to be used when plotting bars.

E10937: New dialog for traceProperties

An editor dialog has been added to the bar, radar and xy graphs for the traceProperties property. This dialog allows the user to specify the line color, line style, line width, marker color and marker style used when plotting traces in the graph.

E11542: Editor dialog added for wedgeProperties

An editor dialog has been added to the pie graph for the wedgeProperties property. This dialog allows the user to view the actual wedge color to be used when plotting the pie.

XY Graphs

B12202: mouseOverFlag data corrected for sorted data

A bug in the XY graph that was causing the incorrect data to be displayed in the mouseOverFlag information box has been repaired. This bug was visible when the xValueSortFlag was set to 1 and the x-value data was not already sorted in the tableStringsValues table.

E12200: Support added for reverse plotting on x-axis

The XY graph now offers the option of reversing the orientation of the x-axis. In previous versions of RTView, the x-axis always plotted values increasing from left to right. Turn on the xAxisReverseFlag to reverse the orientation of the x-axis and plot values increasing from right to left.

Trend Graphs

E12159: The trend graph enhanced to accept timestamp information

The trend graph has been enhanced to accept timestamp information along with new values to be plotted. As in previous versions of RTView, if the traceNValue property for a given trace is passed a single scalar value, the scalar value is automatically stamped with the current time and plotted accordingly. If the traceNValue property is passed a table containing timestamps in the first column and values in the second column, the new version of RTView plots the table values using the table timestamps. Note: Since the traceNValue property is now defined as a table in the Object Properties window, entering scalar values directly into the property will still work, but the scalar value will no longer be visible in the Object Properties window.

Control Objects

B12190: Combo box now updates unlisted values correctly

In the previous RTView releases, if a non-editable combo box had its selectedValue property attached to a local variable, and the value of the local variable did not correspond to any of the items in the combo box drop down menu, the combo box would show the previously selected item instead. This has been fixed.

TIBCO EMS Management Application

E12234: EMS Manager problem with Display Server fixed

In the previous release, the Display Server would sometimes throw a null pointer exception when a client viewed the EMS Manager display ems_allservers_api.rtv. This is fixed.

E11742: Support Fault-Tolerant EMS Server connections

The EMS Manager for TIBCO has been enhanced to support fault-tolerant servers. In the EMS Server Topology display, the active server in a fault-tolerant pair will appear in green, with the suffix (A) appended to its URL to indicate its active status. The fault-tolerant standby server will appear in blue, with the suffix (S) appended to its URL to indicate its status. A blue link is drawn between the pair of servers, labeled "FT". The edge widths of both nodes are increased to highlight the pair of servers. If a fault-tolerant node fails, the edges of both nodes in the pair and the link between the nodes will be drawn in red to indicate the failure. The remaining active server will be drawn in green and its label will have the suffix (A!) appended to indicate that it is still active, but that it's fault-tolerant backup has failed. The failed server will be drawn in red and its label will have the suffix (X!) appended to indicate that it has failed. Routes are only created between the active server in a fault-tolerant pair and other networked servers. Two check boxes, "Show Standby Servers" and "Show Inactive Servers", allow standby and inactive servers to be included or excluded in the topology diagram. By default, standby servers are included in the diagram and inactive servers are not shown. In the Navigation tree, the names of fault-tolerant servers will have the same suffix (A), (S), (A!), or (X!) appended as described in the discussion above. In addition, once a server has been added to the Navigation tree, it is never removed. If an individual (i.e. non-fault-tolerant) server becomes inactive, its name will have the suffix (X) appended to indicate that it was a once-active server. The suffix will be removed when the server becomes active again. In the All EMS Servers display, a server in fault-tolerant standby mode will be drawn in blue. In the Manage Routes dialog, only the active server in a fault-tolerant pair will appear in the "Select From Server" table. In the "Select To Server" table, a single entry with the combined URL for the fault-tolerant pair will appear in the list, and the individual servers will not be shown separately. The "Routes" table has also been enhanced to display the combined URL for a fault-tolerant server pair.

TIB EMS Admin Monitoring

B12101: Monitor Messages browsing of queues and topics fixed

In previous RTView releases, if the TIBCO EMS Manager option Monitor Messages was turned off, browsing of queues and topics always went to the local host, rather than the selected server. This has been fixed.

Distribution

B12163: TIBCO Hawk 4.1 and older no longer supported

TIBCO Hawk version 4.1 and earlier is no longer supported by RTView.

B12175: Run scripts no longer fail on Win200 due to command line limit

In previous releases of RTView, some Windows 2000 users were not able to use the run scripts due to a command line limitation of 2048 characters. This problem has been fixed.

Version 4.2c1 Release Notes

RTView

Java Version Dependencies

E12011: RTView has upgraded to Java version 1.5

RTView now requires Java version 1.5.0_01+ to run. Previous versions only required Java version 1.4.2+.

Application Frameworks

E12017: Support suppressing add object buttons in Display Builder

The Display Builder may now be invoked with the command line argument "-noobjecticons", which will remove the add object buttons from the Object Toolbar. The add object buttons include the following: Add Table Add Object Grid Add Bar Graph Add Pie Graph Add Trend Graph Add XY Graph Add Radar Graph Add Label Add Circle Label Add Rectangle Label

E11859: The Display Builder now has a console window

The Display Builder now has a Console Window, which will display text written to the standard output and error streams. The Console Window will display a maximum of 1500 lines, and then start removing lines from the top of its display. The Console Window is displayed by default, and can be invoked from the Tools menu.

E11701: Display Builder now centers small displays in main panel

The Display Builder centers a display in the main panel if the display's modelWidth or modelHeight are smaller than the panel's width or height, and a shadow is drawn at the display's bottom and right edges. In prior releases, the display was always positioned in the top left corner of the main panel. Limitations If a custom background model is used, the Display Builder will center it as described above, but will not draw a shadow.

Multi-Panel Frameworks

B11905: Tab order for widgets is no longer reversed in Display Server

In prior releases, the tab order of control objects (list boxes, buttons, etc.) was reversed by the Display Server, as compared to the Display Builder and Display Viewer. This is fixed.

Applet Functionality

B12053: EMS Manager applet may not draw properly when reloaded

In prior releases, when the EMS Manager was deployed as an applet, the main panel would sometimes go blank after the user opened a popup menu or a popup window. It would redraw when the user clicked inside the panel. This is fixed.

B12044: Problems with Display Builder applet fixed

If the Display Builder was run as an applet, some of the dialogs which edit object properties would fail to come up, and others would be missing the SL icon. These problems have been fixed.

Builder Application Body

B12041: Drill down model save error fixed

In the previous release, if a drill down was performed in the Display Builder to the current window and the drill down display file was located in a subdirectory of the startup directory, then a save of the drill down display would fail with a "File not writeable" error. This has been fixed.

Editing Functionality

B12115: Pasting objects into another display fixed

In the Display Builder, if you copied some objects from one display and pasted them into another, the objects would be ordered as you selected them, rather than keeping the order they had in the original display. This has been fixed.

E11971: Commonly used non-modal dialogs now dockable

In the Display Builder, the Functions, Local Variables, and Object List dialogs have been integrated into the docking framework. They may now be docked to any side of the main window, either in their own tab group or combined with existing tabs. The Display Builder saves and restores the docking configuration of these dialogs as it does for the Object Properties and Object Palette dialogs.

B11945: Keyboard shortcuts now work if dialog has focus

In the Display Builder, the keyboard shortcuts for some file and edit operations that are available in the main window are now available when working in certain dialogs, specifically: Background Properties Application Options Functions Local Variables The keyboard shortcuts available in these dialogs include: Command Shortcut New Ctrl-N Open Ctrl-O Save Ctrl-S Print Ctrl-P Undo Ctrl-Z Redo Ctrl-Y

E11972: Tooltip string added to Undo and Redo buttons

The Undo and Redo buttons on the Display Builder toolbar now have tooltips which display the editing action which will be undone or redone if the button is clicked.

E11671: Common keyboard shortcuts implemented

The following keyboard shortcuts have been added for commands on the File menu of the Display Builder: New Ctrl-N Open Ctrl-O Save Ctrl-S Print Ctrl-P

E11973: Object List auto-scroll fixed

The Display Builder's Object List dialog will now ensure that the selected item is visible, scrolling the list if needed. If there are multiple selected items it will ensure that the item with the lowest index is selected.

B11974: Ghost outline in Object List fixed

In the Display Builder's Object List dialog, when an item was deleted, the next item in the list would become the "focused item" and would have an outline rectangle drawn around it. This rectangle is no longer drawn.

E11851: Select objects by extent now supported in Display Builder

It is now possible to select objects in the Display Builder by drawing an extent rectangle around them. Click and drag the mouse and the objects within the rectangle will be selected.

E11852: Select All option added to Edit menu

The command Select All has been added to the Edit menu. This command may also be invoked by the keyboard shortcut Ctrl-A.

B11325: Pasting multiple objects with links fixed

In the Display Builder, if a selection of nodes and links were copied and pasted, only the nodes would be pasted. This has been fixed. Note that for a link to be included in the set that is pasted, both its nodes must be included as well.

Background Property Dialog

B11883: Background image ghosting in Display Builder fixed

In prior releases, if a background image was used which did not completely fill the Display Builder's main panel, the unused space around the edges of the image would sometimes contain fragments of the image or contents of other frames. This is fixed.

Object Property Dialog

E11850: Support collapsable grouping of Object Properties

The Object Properties dialog in the Display Builder now displays properties in categories. Individual categories can be expanded or collapsed using icons at the left of the category row; all the categories can be expanded or collapsed at once by means of buttons in a toolbar at the top of the dialog. The properties can also be displayed in alphabetic order as in the previous version, and can be switched between categorized and alphabetized view, by using buttons in the same toolbar.

E11776: Object Props and Subs windows re-sizeable

In the Display Builder's Properties dialog, the property table and the substitution panel are now separated by a splitter, so they can be independently resized.

Command Execution

B12116: Empty strings in quotes no longer lost in command execution

Previously, if a command string contained an empty string embedded in single quotes, it was lost before processing. This has been fixed.

E11337: Close Window command added to the Define System Command dialog

The Define System Command dialog now offers a Close Window command. When executed, this command closes the window specified in the Window Name argument. If no Window Name is given, this command closes the window containing the object that is generating the command. The Close Window command may not be used to close the main window.

Functions

B12158: Join function exception with null cell data fixed

In previous releases, the Join function threw a NullPointerException if the cell data in the column specified in the Left Column Name argument was null. This has been fixed.

Display Server

B12136: Display Server now supports quotes and \n in valueToSet

In prior releases, the Display Server did not support pushbuttons and other control objects whose valueToSet property contained double quotes or the backslash-n character sequence. This is fixed.

E12135: Display Server is now instrumented with JMX data

The RTView Display Server has been instrumented with a JMX Management Bean (MBean) that allows it to be monitored and managed using JMX.

B12128: "\" in table text is now displayed in Display Server

Backslashes now appear as table objects in the Display Server. The character sequence \n is interpreted by RTView as an end-of-line character, however. In this case the string will be split into multiple lines and the \n characters will not be displayed.

B10534: SetSubstitution function now supported by Display Server

In the previous Display Server release, if the value of a substitute string is changed by the Set Substitution function, and that substitute is then used in a drill down or a command, the Thin Client would use the original value of the substitute, rather than the value set by the function. This is fixed.

B12055: Display Server no longer ignores columnAlignment property

In prior releases, the Display Server ignored the columnAlignment property on obj_table02 for numeric columns and always used right alignment. This is fixed.

B12054: Column alignment for exported tables is now consistent

In the previous release, numeric columns in a table exported to HTML or Excel were sometimes left aligned rather than right aligned. This is fixed.

E12049: Display Server optimization for gradients

The memory used by the Display Server when rendering displays with gradients has been reduced.

B12046: Problems with Export to Excel feature resolved

In prior releases, there were several issues with the Display Server's Export Table to Excel feature. In Internet Explorer, the export would fail if the display had many substitutions set, making the rtvdisplay servlet URL longer than 256 characters. Also, in Internet Explorer, if the user selected Save rather than Open in the Download dialog, the save would sometimes fail. In Internet Explorer or Firefox, if the user selected Save rather than Open in the Download dialog, the file had a .jsp extension rather than .xls. Lastly, in Firefox, the Excel window was completely obscured by a new, empty Firefox browser window. These problems are fixed. (In Firefox, an empty browser window will still appear on top of the Excel window, but it is now much smaller so it does not obscure Excel).

B12039: Bug causing hidden table columns to be included in export fixed

In the previous release, if a table with hidden columns was exported to HTML or Excel, the Display Server would exclude the hidden columns from the exported table's header as expected, but would not exclude them from the table's rows. This problem occured only if the rowHeaderEnabledFlag property was false. This problem has been fixed.

B12022: Crash during refresh in Display Server fixed

In prior releases, each Display Server refresh adds an entry to the servlet container's error log. The following example is from Tomcat, in %CATALINA_HOME%/logs/localhost_log: java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.coyote.tomcat5.CoyoteResponse.getWriter (CoyoteResponse.java:611) at org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter (CoyoteResponseFacade.java:210) at org.apache.jasper.runtime.JspWriterImpl.initOut (JspWriterImpl.java:167) at org.apache.jasper.runtime.JspWriterImpl.flushBuffer (JspWriterImpl.java:160) at org.apache.jasper.runtime.PageContextImpl.release (PageContextImpl.java:235) at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext (JspFactoryImpl.java:160) at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext (JspFactoryImpl.java:120) at org.apache.jsp.getjpg_jsp._jspService(getjpg_jsp.java:59) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) This has been fixed.

B12016: Display Server exception fixed

In prior releases, the Display Server threw an exception while rendering an obj_table02 instance attached to a table with zero columns and which had its columnDisplayNames property assigned. This is fixed.

B11998: Problem with invisible objects remaining visible fixed

In prior releases of the Display Server, if a control object's visFlag property was initially true but was changed to false before the first display refresh, the control would remain visible. This affected button, text entry, list box, combo box, and checkbox controls. Radio buttons, tables, and non-control display objects were not affected. This problem has been fixed.

B11968: Export to HTML no longer creates borderless cells

In prior releases, the Export Table to HTML feature of the Display Server would generate a table with no borders around any cell that contained a blank string. This is fixed.

B11948: drilldown incorrect from object grid with sort column

In prior releases of the Display Server, a drill down from the object grid would select the incorrect element if the grid's sortColumnName property was set. This is fixed.

B11839: Display Server draws invisible objects with default sizes

In prior releases of the Display Server, if a control object was initially invisible and became visible on a subsequent refresh, it would be drawn using the default size of the control rather than its configured size. This has been fixed.

E11792: Table performance improved in Display Server

The performance of large tables in the Thin Client Browser has been improved. If a table has more than 500 cells (rows x columns), it is displayed in virtual mode. In this mode only the visible cells are rendered by the browser, reducing the time required to display, refresh, and sort a large table. When a table is scrolled in virtual mode, some rows appear blank until the user stops scrolling. By default, virtual mode is enabled for any table that has more than 500 cells (for example, 101 rows x 5 columns). This threshold can be changed by modifying the the VirtualThreshold property in rtvdisplay.properties. See the documentation for more details on modifying rtvdisplay.properties. Support for row headers has also been improved in the Thin Client Browser. The rowHeaderFilterColorsEnabledFlag property is now supported, and the user can resize the row header column interactively, as with the other columns.

E11756: Support for scroll bars on all tables and graphs added

Support for scroll bars has been added to tables and graphs in the Display Server with the following limitation: The scrollbarSize property is not supported in the Display Server. The size of a scrollbar is a platform-dependent, system-wide setting, and cannot be individually specified per-object.

E12003: Slider control object now supported in Display Server

The Display Server now supports the obj_c1scale control object, with the following limitations: - In the Thin Client Browser, the object is drawn as a scrollbar rather than a scale/slider. No tick marks are drawn. - The updateWhileAdjustingFlag, bgColor, and objHeight properties are not supported by the Display Server. - The enabledFlag property is not supported in Firefox.

B11267: Objects not visible in Object Grid generate drill down URLs

In prior releases, if elements in the object grid (obj_objectgrid) were scrolled out of view, the Display Server would still generate clickable areas for these element in the web page, outside of the object grid's extent.

Data Server

E12134: Data Server now instrumented with JMX data

The RTView Data Server has been instrumented with a JMX Management Bean (MBean) that allows it to be monitored and managed using JMX.

B12058: Data Server deadlocking issue fixed

In previous releases, under certain conditions the Data Server would deadlock and stop sending data to clients. This is fixed.

B11949: Support for transient data attachments implemented

The SQL data source supports a new Run Query On Demand update mode for data attachments. In this mode, an SQL query is run each time a display that uses the query is opened and each time a substitution string that appears in the query string is changed. The query is not run periodically.

Data Sources

E12097: Data-driven display refreshes enhancement added

The Display Viewer and Builder have been enhanced to support data-driven display refreshes. In the Display Viewer and Builder, a display must be redrawn in order for new data values to be displayed. This is done periodically according to the Update Period set on the General Options tab. The default Update Period is 2 seconds. Data from an asynchronous data source can arrive at any time between periodic redraws. In prior releases, it was necessary to lower the Update Period if new asychronous data needed to be shown more quickly. This resulted in additional overhead. In this release, a display is automatically redrawn shortly after data is received that affects the display. The rate of data-driven redraws is determined by the Max Data Redraw Rate option, which can be set from the General Options tab. The default is 500 milliseconds (a half second). In most applications this should be suitable. However, in applications that have a continuously high rate of asynchronous data, it may be desirable to set this option to a higher value, or to disable data redraws entirely by using the corresponding checkbox. Please note that the SQL data source is asynchronous as of this release. See the release note for E11457 for details. Other asynchronous data sources include TIBCO Rendezvous, TIBCO Hawk, JMS, and any data source that is delivered via the Data Server. E11457: Multithreaded SQL queries now allowed if JDBC driver used *The SQL data source has been enhanced to use asynchronous multithreading. This can improve overall performance in some configurations. Background: On each update cycle, the SQL data builds a list of the queries that are due for an update based on each query's Update Mode. Each query uses a database connection. Database connections can be predefined on the SQL Options tab. Also, a database connection is defined automatically if an SQL attachment uses a database name that is not defined on the Options tab. In prior releases the SQL data source was single-threaded and synchronous: the data source would execute the first query from the list, wait for the result, and then run the next query on the list. After the last query on the list was completed, the Display Viewer would redraw the display to show the query results. In the Data Server, the query results would be pushed to the clients. A long-running query could result in delays during display callup in the Display Viewer, and delays in sending the results of all queries in the Data Server. In this release the SQL data source is asynchronous and multi-threaded. Two types of multi-threading are supported. (1) One thread per database connection: The SQL data source creates a separate execution thread for each database connection. This allows queries that use different database connections to run concurrently. Queries that use the same connection are still run sequentially. This is the default behavior of the SQL data source. (2) One thread per query: A database connection can be configured to allow concurrent queries. A checkbox to enable this behavior appears on the Add Database dialog, labeled 'Run Queries Concurrently'. If this checkbox is Selected, each query on the connection is run on its own execution thread. By default this option is disabled. This option should be used with caution since it may cause SQL errors when used with some configurations (for example, an ODBC connection to Microsoft SQL Server 2000). In addition, even if no SQL errors occur, this option may degrade performance due to additional database server overhead (for example, if the database server runs on a host with a single CPU, or if all queries to the database use the same table which the server locks during a query, etc). Please refer to your database documentation for guidance. In either configuration, the Display Viewer and Data Server do not wait for the SQL queries to complete. Instead the SQL data source requests a display redraw or a data push when a query completes. The maximum rate for these data-driven redraws is determined by a new option on the General tab named Max Data Redraw Rate. For details please see the release note for E12097. The improvements described above apply to the SQL data source when used in the Display Builder, Display Viewer and Data Server. However, the Display Server still runs the SQL data source in single-threaded/synchronous mode, as in prior releases. This will be addressed in a future release.

E11999: Attach to Data and Define Command dialog layouts improved

The Display Builder Attach to Data and Define Command dialogs have been improved in appearance, and the Define Command dialogs have also been made resizeable.

E11849: Ellipses button (...) added to Attach to Data dialogs

An ellipses button has been added to the Attach to Data dialogs. This button brings up the Select Columns dialog and is equivalent to choosing Select Columns from the popup menu that appears as a result of a right-click on the column-related combination box. The following dialogs now offer the ellipses button: Attach to TIBCO Hawk Data Attach to TIBCO Rendezvous Data Attach to XML Data Attach to SQL Data Attach to JMS Data Attach to TIBCO EMS Administration Data Attach to Function Data

E11987: Property name now shown in function and local var ATD

In the Display Builder, the Attach to Data dialogs for Functions and Local Variables did not display the name of the property being attached. This has been fixed.

SQL Data Source

E11457: Multithreaded SQL queries now allowed if JDBC driver used

The SQL data source has been enhanced to use asynchronous multithreading. This can improve overall performance in some configurations. Background: On each update cycle, the SQL data builds a list of the queries that are due for an update, according to each query's Update Mode. Each query uses a database connection. Database connections can be predefined on the SQL options tab. Also, a database connection is defined automatically if an SQL attachment uses a database name that is not defined on the options tab. In prior releases the SQL data source was single-threaded and synchronous: the data source would execute the first query from the list, wait for the result, and then run the next query on the list, and so on. After the last query on the list was completed, the Display Viewer would redraw the display to show the query results or, in the Data Server, the query results would be pushed to the clients. A long-running query could result in delays during display callup in the Viewer or, in the Data Server, delays in sending the results of all queries. In this release the SQL data source is asynchronous and multi-threaded. Two types of multi-threading are supported. (1) One thread per database connection: The SQL data source creates a separate execution thread for each database connection. This allows queries that use different database connections to run concurrently. Queries that use the same connection are still run sequentially. This is the default behavior of the SQL data source. (2) One thread per query: A database connection can be configured to allow concurrent queries. A checkbox to enable this behavior appears on the Add Database dialog, labeled 'Run Queries Concurrently'. If this checkbox is selected each query on the connection is run on its own excecution thread. By default this option is disabled. This option should be used with caution since it may cause SQL errors when used with some configurations (for example, an ODBC connection to Microsoft SQL Server 2000). In addition, even if no SQL errors occur, this option may degrade performance due to aditional database server overhead (for example, if the database server runs on a host with a single CPU, or if all queries to the database use the same table which the server locks during a query, etc). Please refer to your database documentation for guidance. In either configuration, the Display Viewer and Data Server do not wait for the SQL queries to complete. Instead the SQL data source requests a display redraw or a data push when a query completes. The maximum rate for these data-driven redraws is determined by a new option on the general tab named Max Data Redraw Rate. For details please see the release note for E12097. The improvements described above apply to the SQL data source when used in the Display Builder, Display Viewer, and Data Server. However, the Display Server still runs the SQL data source in single-threaded/synchronous mode, as in prior releases. This will be addressed in a future release.

TIBCO Hawk Data Source

B12144: TIBCO Hawk Methods and Alerts tab now warns that restart needed

In the RTView 4.1c1 release, the note at the bottom of the TIBCO Hawk Methods and Alerts options dialog tab was missing. This has been fixed.

B12113: Cluster agent groups showing wrong agents fixed

A bug in the TIBCO Hawk Agent Groups tab of the Application Options dialog has been fixed. The Selected Agents column was displaying too many agents for some of the automatically-generated agent groups.

B12014: Agents with same name on multiple domains now display correctly

The TIBCO Hawk Data Source now supports the use of the same agent name within different Hawk domains. When specifying an agent name in any of the Hawk data source dialogs, append the connection name, enclosed in parentheses, to specify a connection other than the default connection. For example: Agent1 - This represents Agent1 from the default connection. Agent1(ConnectionA) - This represents Agent1 from ConnectionA. Agent1(ConnectionB) - This represents Agent1 from ConnectionB. This combination of agent name and connection name has been added to the RTViewDs microagent as the DSName property. It is returned in the DSName column of the getAllData and getDSName methods. To attach to data for a particular agent name from all connections containing that agent, append (*) to the Agent Name value. For example: Agent1(*) - This will get Agent1 from all connections. To specify all agents for a particular connection, use the TIBCO Hawk Agent Group that is automatically created for that connection. For example: *:ConnectionB - This represents all agents from ConnectionB.

JMS Data Source

E12137: JMS BytesMessages are now supported

The JMS Datasource has been enhanced to support subscription data source has been enhanced to support subscription to a BytesMessage. Previously BytesMessages were completely ignored. Now, when a BytesMessage is received a table row is produced containing only a single column labeled "". The data contained in the bytes message is presented only as "" and not formatted in any way.

E12118: Standard JMS Message Header added to Properties

The following standard JMS Message Header properties are now available in the Properties portion of a JMS data attachment: JMSCorrelationID, JMSMessageID, JMSType, JMSTimestamp, JMSExpiration, JMSDeliveryMode, JMSPriority, JMSRedelivered, JMSReplyTo.

E12089: Capability to subscribe to durables added

The JMS data source now supports making a durable subscription. When adding topics in the JMS Topic Options dialog, specify the name of the durable along with the Topic name (optional). When RTView subscribes to that topic, it will use the durable subscription that was specified.

E11256: Implemented commands to send JMS topic messages

The JMS data source has been enhanced to provide a command function to send a JMS Topic message. The command dialog allows the user to specify a JMS connection, a topic name, and a series of name/value pairs. You can also select whether the message type is Map or Text.

JMX Data Source

E10549: A JMX data source is now available

A JMX data source has been added to Enteprise RTView. This data source allows you to display the MBean methods and attributes from a JMX instrumented application as well as to execute JMX operations.

NetExpert Data Source

E11885: An Agilent NETeXPERT data source is now available

A beta version of the Agilent NETeXPERT data source is now available by request. Contact SL sales for an evaluation copy.

Sample Displays and Applications

E12091: Demo server upgraded to Tomcat 5.5

The Tomcat demo server included with the RTView installation has been upgraded to Tomcat version 5.5.

B12061: Demo server launcher displays error message on failure

In previous versions of RTView, selecting Start Demo Server from the Start->Programs->RTView->Demos menu would fail silently if the environment variable JAVA_HOME was not set on the system. Now the script displays the error message: *** JAVA_HOME is not defined. Tomcat will require that JAVA_HOME be defined as the root directory of the Java installation; i.e., set JAVA_HOME so that the Java executables such as java.exe are in JAVA_HOME\bin. Please define JAVA_HOME and re-run this script. Press any key to continue . . .

E11950: Stock chart data added to standard XML simulator

The XML simulator has been updated to output sample stock data. The simulator outputs the file stockdata.xml that contains three months of daily data for three stocks, and five days of intra-day data for three stocks.

E11956: Data Source Demo now includes JMX

The Data Source Demo has been updated to include displays for the JMX data source.

SQL Datasource Tutorial

E11774: An Excel SQL/ODBC example has been added to dstutorial

Sample displays that access data from an Excel spreadsheet have been added to the dstutorial example located in the demos/dstutorial directory. Data can be queried from tabular data in an Excel spreadsheet as long as the data is defined as a named range in the spreadsheet. RTView treats the Excel spreadsheet the same way it treats all SQL databases. Refer to the Appendix D - SQL section for more information.

Object Library

E12007: Image list no longer case sensitive

In the Display Builder Object Property and Background Properties dialogs, properties which present a list of image files look for files of type ".gif" and ".jpg". However the Display Builder was not correctly ignoring the case of the file type, so that "file.jpg" would be found but "file.JPG" would not. This has been fixed.

Tables

B12072: Column widths now correct if initial data is not available

A bug that was causing custom column widths in the table (obj_table02) to be ignored has been repaired. The bug was appearing in tables attached to data that was not immediately available when the table was initially displayed.

B12117: Rotated table supports Ctrl-C/V keyboard shortcuts

If a Rotated Table (obj_table03) object was added to a display in the Display Builder and subsequently an attempt was made to copy and paste it into the display using Ctrl-C, this would fail. This problem has been fixed.

E12002: Bitmaps in table cells are now supported

The table object, obj_table02, now supports placing images into table cells. The filterProperties attribute now offers a Display Image action. To display images in a table, add a new filter, specify the Condition as you would for any other filter, choose Display Image for the Action, and specify an image file name. Image files must be of type .gif or .jpg. Image file names may contain spaces, but may not contain any of the following strings, set off by spaces: if then = != > >= => < <= =<

E10924: Dialog interface for columnAlignment and columnsToHide added

The object property editors that operate on column-related attributes have been improved to provide a more consistent user interface. The following list of properties (mostly from obj_table02) now use the new Property Editor dialog: columnAlignment columnDisplayNames columnFormat columnsToHide columnProperties drillDownColumnSubs The formats for each of these property strings have not been modified. Only the dialogs for editing these property strings have changed.

Graphs (General)

E12059: labelFormat property renamed to labelColumnFormat

In the bar (obj_bargraph), pie (obj_pie), radar (obj_radar), and xy (obj_xygraph) graphs, the labelFormat property has been renamed to labelColumnFormat and moved to the Data Format category. The labelColumnFormat property provides formatting for labels in situations where the label column is numeric. Labels may appear along the x-axis or in the legend and mouseOver tooltip information area.

E11844: Improved appearance of rotated text labels

The appearance of rotated text labels in the bar graphs have been improved.

E11835: Support for columnsToHide property added to graphs

The columnsToHide property has been added to the bar, legend, pie, radar and xy graphs. This property allows users to prevent particular columns in the attached data from being used in the graph for plotted data or labels. For graphs with more than one data attachment, the columnsToHide property applies to all data attachments. If the same column name appears in both the labelColumnName and columnsToHide properties, the labelColumnName property takes precedence. Data from the labelColumnName column is used for labels even if that column name appears in the columnsToHide property. All columns from a data attachment are available for use in the drillDownColumnSubs property, including columns that have been excluded from the graph with the columnsToHide property.

Bar Graphs

B12042: Bar graph bars and traces now support NaN values

The bar graph (obj_bargraph) now supports data attachments that contain NaN (not-a-number) values. This allows the bar graph to handle missing or undefined data points when rendering bars and bar traces.

B11955: Bar graph support for more than 255 bars added

In prior releases an exception was thrown if a bar graph contained a group with more than 255 bars. This is fixed.

Stock Chart

B12038: Stock chart in intraday mode no longer plots unneeded data

In prior releases, the stock chart in intraday mode would plot all data points for the first hour of a trading day at the same horizontal position, for days in which daylight savings time was in effect. This is fixed.

Control Objects

E11855: varToSet problem with drill down fixed

In prior releases, if a drill down was applied to a new window from the Display Builder and the drill down display contained a control object and the user changed the value of the control (for example, typed a string into an edit box) the property sheet would sometimes show the new value as the value of the control's varToSet property. This is fixed.

E11854: Text Entry controls now update correctly when tabbed

In prior releases, if a Text Entry control had executeOnFocusLost set and if its value affected the value of another Text Entry control which was next in the tab order, then tabbing from the first Text Entry control to the other did not change the value shown in the second Text Entry control. This is fixed.

E11763: Support for key-value pairs in list and combo box added

The list box and combo box controls now support label-value pairs in the listValues property. This allows the control to display a descriptive label to the user, and set a corresponding value when the label is selected. The pairs can be specified as a string on the listValues property, where a label is separated its corresponding value by a comma, and pairs are separated by a semicolon. For example: listValues: White,0;Black,7;Red,1;Green,2 For the above string, the control's list will display: White Black Red Green If the user selects White, the local variable attached to the varToSet property is set to 0. If the user selects Black, the local var is set to 7, and so on. The listValues property can also be attached to a 2-column table, where the first column has the labels and the second column has the corresponding values. As in prior releases, the listValues property may contain only labels, in which case the values and the labels are the same. For example: listValues: White;Black;Red;Green For the above string, the control's list will display the same labels as above, but in this case if the user selects White, the local variable attached to the varToSet property is set to "White".

TIBCO EMS Management Application

B12048: Single servers now displayed in topology map

Previously, individual servers not connected to any other servers by a route would not appear in the Server Topology Diagram. This problem has been corrected.

EMS Manager Configuration

E11681: SSL available for EMS servers

JMS connections created with RTView using the com.tibco.tibjms.TibjmsTopicConnectionFactory may now use an SSL connection for added security. Additionally, the RTView TIBCO EMS Manager now supports the ability to monitor and administer your TIBCO EMS Servers through an SSL connection. Note: To use the SSL connection, you must have a working knowledge of writing, compiling and deploying Java classes. *** Using SSL in the JMS data source *** To use an SSL JMS connection, you will need to create a Java class named MyJmsDsSSLHandler that extends the GmsRtViewJmsDsSSLHandler class. In MyJmsDsSSLHandler.java, define the following method: public Map getSSLParams (String serverUrl) This method will be called to retrieve the list of SSL parameters for use when RTView creates a TIBCO JMS connection factory. Add gmsjjmsds.jar, located in the lib directory (found in your installation directory), to your classpath when you compile MyJmsDsSSLHandler. The compiled MyJmsDsSSLHandler jar file must be included in the RTView classpath by adding it to the definition for the RTV_USERPATH environment variable. The following is an example of MyJmsDsSSLHandler: import java.util.*; import com.tibco.tibjms.TibjmsSSL; import com.sl.gmsjjmsds.GmsRtViewJmsDsSSLHandler; public class MyJmsDsSSLHandler extends GmsRtViewJmsDsSSLHandler { public Map getSSLParams (String serverUrl) { System.out.println("==> MyJmsDsSSLHandler.getSSLParams"); return null; } } *** Using SSL with RTView TIBCO EMS Manager *** To use SSL with RTView TIBCO EMS Manager, you will need to create a Java class named MyTibJmsSSLHandler that extends the GmsRtViewTibJmsSSLHandler class. In MyTibJmsSSLHandler.java, define the following method: public Map getSSLParams (String serverUrl) This method will be called to retrieve the list of SSL parameters for use when EMS Manager creates a TibjmsAdmin object for use in managing a TIBCO EMS Server. Add gmsjtibjmsadmin.jar, located in the lib directory (found in your installation directory), to your classpath when you compile MyTibJmsSSLHandler. The compiled MyTibJmsSSLHandler jar file must be included in the RTView classpath by adding it to the definition for the RTV_USERPATH environment variable. The following is an example of MyTibJmsSSLHandler: import java.util.*; import com.tibco.tibjms.TibjmsSSL; import com.sl.gmsjtibjmsadmin.GmsRtViewTibJmsSSLHandler; public class MyTibJmsSSLHandler extends GmsRtViewTibJmsSSLHandler { public Map getSSLParams (String serverUrl) { System.out.println("==> MyTibJmsSSLHandler.getSSLParams"); return null; } }

Distribution

B12015: Installation dialog reference to JAVA_HOME fixed

In previous versions of RTView, the installation dialog incorrectly indicated that the JAVA_HOME environment variable was not set if JAVA_HOME was set as a user defined variable for the current user. This has been fixed.

B11529: RTView command prompt launcher fixed

In previous versions, the RTView command prompt link from the Windows Start menu did not work if your installation was not on the C: drive. This has been fixed. A bug that was preventing the labelTextColor property from being applied to the x-axis text in the bar graph has been resolved.

B11303: File association is now set consistently by installer

In previous versions, the file association for display (.rtv) files was not always set correctly by the installer. This has been corrected.

E11858: Registration dialog now can be launched from installation

The RTView installer now allows the user to invoke the registration program.

Version 4.1c1 Release Notes

RTView

RTV File Handling

B11857: File save location bug fixed

In prior releases, if a display was opened in the Display Builder from a directory other than the default directory, and then a drill down to the same file or another file was performed, and that file was then saved, it would be saved to the default directory instead of the selected directory. This has been fixed.

Editing Functionality

E11270: Object List dialog added to Display Builder

An Object List dialog has been added to the Display Builder. Select Object List from the Tools menu to open the Object List dialog. The Object List dialog provides a list of all the objects from the current display. For each object in the current display, the Object List will display the objName property, the object class name, and the objX and objY properties. Selecting any item in the Object List will cause the corresponding object in the display to be selected. Hold down the shift key while selecting in the Object List to extend the list selection. Hold down the control key while selecting in the Object List to add or remove individual items from the current list selection. Press the Select All button (or control-a) to select all of the objects in the current display. Press the Deselect All button to select no objects in the display.

E10167: Implemented key movement in Display Builder

The Display Builder has been enhanced with the ability to move selected objects via the keyboard arrow keys. By default each key press will move the object(s) one pixel in the indicated direction.

E10011: Undo and redo now supported in the Display Builder

The Display Builder has been enhanced with undo and redo capability. Editing operations may be undone and subsequently redone. The Display Builder will keep a history of the last 20 operations. Undo and redo are supported for the following operations: Select Create, Copy/Paste, Delete Connect Move, Scale Align, Order, Distribute Undo and redo are also supported for changes to the following: Object Properties Background Properties Functions Local Variables

E11840: Attach to Data and Define Command dialog implementation changed

The Attach to Data and Define Command dialogs have changed to support undo and redo. They no longer have access to the GmsRtObject that is being edited, instead they have a GmsObjectProperty object. The following changes will need to be made in custom attach to data and define command dialogs when upgrading to 4.1a1. 1. Modify the constructor arguments: public MyAttachToDataDialog (JFrame dialogParent) public MyDefineCommandDialog (JFrame dialogParent) 2. The GmsRtObject object fields is no longer available. Make the following changes: old: if (object.getIcon() instanceof GmsTableVariables) new: if (objProp.isTabular()) old: String dsString = object.getDsString(varName, true); new: String dsString = null; if (objProp.isAttached()) dsString = (String)objProp.getPropertyValue(); old: object.processSubs(String) new: owner.processSubs(String) old: object.processSubsNQ(String) new: owner.processSubsNQ(String) old: varName new: objProp.getName()

E10041: Object alignment functionality has been implemented

Support has been added for aligning and distributing selections of objects. The align operations include Top, Bottom, Left, and Right, which mean that the corresponding edge of the first selected object will be used as a reference and the corresponding edges of the remaining selected objects will be aligned with it. The distribute operations include Horizontal and Vertical, which mean that the selected objects between the first and last, horizontally or vertically, will be spaced evenly in that direction.

E11931: Display Builder interface has been enhanced

The Display Builder menus and toolbar have been enhanced with additional edit items, and have been made sensitive to editing conditions, so that they are disabled if their actions are not applicable to the current conditions.

Object Property Dialog

E11668: Text properties may now be edited using a text entry dialog

Text properties in the properties sheet may now be edited via a text entry dialog. This dialog makes it easier to enter and modify values that have many characters or contain multiple lines of text.

Drill Down

B11914: Local variables supported in drill down branching functions

Previously, you could not use a local variable as the value argument of a drill down branch function, if the value of the local variable is set from a substitution as part of the drilldown (e.g., using drilldownColumnSubs). This problem has been fixed.

B10237: Improvements made to avoid delays displaying SQL and OLAP data

The Display Builder, Display Viewer and Display Server have been improved to avoid delays in displaying SQL and OLAP data. These delays would sometimes occur after changing the value of a substitution or local variable, opening a display, or reconfiguring a data attachment, and were most noticeable if the update period was large or if the 'nohistory' option was used.

Functions

B11827: Copy function now handles Datetime data type properly

In the 4.0a1 release of RTView, the Copy function did not handle a Datetime type column Datetime properly, resulting in an empty column. This problem has been fixed.

E11829: Subtotal by Unique Value enhanced to process multiple columns

The Subtotal By Unique Values function has been enhanced to operate on multiple columns. It expects a minimum of two columns, but may have more than two. The names of the resulting columns will be "Value", for the first column containing unique values, followed by "Total" for the first column with a sum total, and "Total2", "Total3", etc., for additional columns with sum totals.

E11830: Set Lookup Subs function to set subs via lookup table added

A new function has been added to the list of functions. The "Set Substitutions By Lookup" function sets multiple Substitution Strings to values that are obtained using a Lookup Table. The first column in the Lookup Table contains a set of values that is compared against the given Selector. The name of each remaining column is used as the name of a substitution to set. The value to set for each substitution is the value of the field in the corresponding column in the row that matches the Selector. This function returns the value of the Selector.

E11673: Format Date now accepts formatted date string and date object

The Date Format function has been enhanced to accept formatted date strings and date objects.

Security

E11674: Single signon supported for Display Builder and all deployments

The login now supports single singon. For the Display Builder/Viewer application, the username and password can be specified by new command-line parameters, named rtvuser and rtvpass. For example: run_builder -rtvuser:admin -rtvpass:admin The role can be specified by the rtvrole option: run_builder -rtvuser:guest -rtvpass:abc123 -rtvrole:guest If the rtvuser and rtvpass options are used to login but the rtvrole option is not specified, the first role defined for the user is used. For the Display Builder/Viewer applet, the username, password, and role can be specified by applet parameters, using the same names as above. For example: rtvuser="guest" rtvpass="abc123" rtvrole="guest" To avoid having the username and password appear in plain text, a parameter named rtvsign parameter can be used. This parameter takes a sign-on string containing the encrpyted username and password. For example: run_viewer -rtvsign:8I559A5NA8A5864J6J924N0B2 Or, as an applet parameter: rtvsign="8I559A5NA8A5864J6J924N0B2" The sign-on string can be generated with the run_scrambler utility, as follows: run_scrambler <username> <password> For example: run_scrambler admin admin Note that the username may not contain a space. To enter the username and password in a dialog window rather than on the command line, specify the -w option: run_scrambler -w The login features of the Display Server have also been enhanced. The username and password can be specified by new URL parameters, named rtvuser and rtvpass. For example: http://server:port/rtvdisplay/getdisplay.jsp?display=disp1&rtvuser=admin&rtvpass=admin The role can be specified by the URL parameter named rtvrole. Note that it may be necessary to URL-encode the username, password, or role, depending on the characters they contain. To avoid having the username and password appear in plain text, the URL parameter named rtvsign can be used. As described above, this parameter takes a sign-on string containing the encrpyted username and password. For example: getdisplay.jsp?display=disp1&rtvsign=8I559A5NA8A5864J6J924N0B2 The sign-on string will only contain alphanumeric characters, so it need not be URL-encoded. For the Display Server, two additional login features have been added: (1) login from servlet container, (2) login from custom JavaScript. These are described in (1) and (2) below. (1) A general feature of servlet containers (Tomcat, WebLogic, etc) is user authentication: A servlet can be configured to require user login before the web server allows access to the servlet. A servlet's authentication requirements are configured in its web.xml file. The file named web.xml.auth_example, in the rtvdisplay directory, shows how web.xml could be configured for the rtvdisplay servlet. It requires a user to login to the servlet container in order to open any rtvdisplay URL, and grants access to all rtvdisplay server URLs to any authenicated user. (The example web.xml specifies DIGEST authentication mode, which tells the browser to prompt the user for a username and password in a dialog window, and to encrypt the password before sending it to the web server. Most modern browsers and servlet containers support DIGEST mode. Other modes are also defined, but note that support for the authentication modes is determined by the servlet container and browser, not by RTView. For more information on this topic, see http://java.sun.com/developer/Books/certification/scwcd_9.pdf). The rtvdisplay servlet can be configured to accept a username that has been authenticated by the servlet container as the login username for the Display Server. This is done by configuring web.xml as described above, and modifying LoginEnabled property in the rtvdisplay.properties file as follows: LoginEnabled=AUTH After a user has logged in to the servlet container, the username is used to login to the Display Server. To allow a single sign-on to the servlet container and the Display Server, the servlet container login name must match a username defined for the Display Server. It is not necessary for the passwords to match, since its assumed that the username has already been authenticated by the servlet container. For example, the user database for Tomcat is defined in the file <tomcat_home>/conf/tomcat-users.xml. By default, a user named "admin" is defined. The default user database for RTView also defines a user named "admin". If the rtvdisplay files web.xml and rtvdisplay.properties are configured as described above, a user could login to Tomcat as "admin" and the rtvdisplay servlet would then automatically login the "admin" user to the Display Server, without prompting again for username and password. (2) The rtvdisplay servlet also supports login from custom JavaScript, by calling the following JavaScript function: rtvLogin(username, password, role) The function returns the string "ok" if the login is successful, otherwise it returns a string with an error message. The role argument is optional. The password is encrypted before it is sent to the server. To call the rtvLogin function from a custom web page, the page must be included in the rtvdisplay.war file and it must import the rtv.js and rtvx.js script files. An rtvLogout function is also available. These functions use the XMLHttpRequest object that is included with most modern browsers. In Internet Explorer, if scripting of ActiveX objects is disabled, these functions will fail. For example, the following HTML file will present the user with a combo box containing the usernames "admin" and "guest", and a text box for entering a password. When the user clicks OK, the rtvLogin function is called. If the login information is validated by the Display Server, the displays.html file is opened in the browser, otherwise an error dialog appears. ======================= <html> <script src="rtv.js"></script> <script src="rtvx.js"></script> <script> function doLogin () { var user = document.getElementById("usercombo").value; var pwd = document.getElementById("password").value; var msg = rtvLogin(user, pwd); if (msg != "ok") alert(msg); else document.location = "displays.html"; } </script> <body> <div>Please log in</div> <table border="0" cellpadding="2" cellspacing="0"> <tr><td align="right" nowrap>Username:</td> <td align="right"> <select id="usercombo" style="width:120px"> <option value="admin">admin</option> <option value="guest">guest</option> </select> </td></tr> <tr><td align="right" nowrap>Password:</td> <td align="right"><input type="password" id="password" style="width:120px" value="" onkeypress="if (isEnterKey(event)) doLogin()"> </td></tr> <tr><td colspan="2" align="right"> <button onclick="doLogin()">OK </td></tr> </table> </body> </html> Limitation: For Tomcat, single sign-on using Tomcat authentication requires version 5.0.28 or newer.

Display Server

B11958: Occasional crash in Export to HTML fixed

In previous versions, the Thin Client 'Export to HTML' feature would fail if the Display Server had unloaded the display, which was more likely when the refresh=0 option was used. This has been fixed.

B11915: Export to Excel no longer fails in IE if loginEnabled=true

In previous releases, if the Display Server's loginEnabled property was set to true, the Export Table to Excel feature would sometimes fail when used from Internet Explorer. This has been fixed.

E11908: Initial value of mapped local variable now set properly

In prior releases, the initial value of a local variable marked for "Use as Substitution" was not included in the substitutions when a a drilldown or a command was performed by the Display Server. This has been fixed.

B10031: Improved handling of ' in conjunction with -passclientlogin

In the previous release, if the Display Server was run with the -passclientlogin option, and an SQL database was configured with the "use client credentials" option, then some queries containing single quotes would fail with an SQL syntax error. This has been fixed.

B11874: Display Server no longer loads displays in PANELS.ini twice

In prior releases, when a client viewed rtvdisplays/panels.html, the display server would load and update each display listed in PANELS.ini twice, if the display servlet login feature was enabled. This has been fixed.

B11807: drillDownSelectMode supported in Display Server

The Display Server now supports the drillDownSelectMode property. This property is defined on tabular objects such as obj_table02 and obj_bargraph. When set to 'Element Only', the object's drilldown or command can be invoked only by clicking on an element (a bar, a table cell, etc). When set to 'Anywhere', the drilldown or command can be invoked by clicking anywhere on the object (on its border, for example) although if the click is not on an element the table substitutions ($col1, $celldata, etc) will not be set. In prior releases, the Display Server used 'Element Only' mode for all tabular objects, ignoring the drillDownSelectMode property. In this release, the drillDownSelectMode property setting on each object is used. In addition, the following changes were made to improve feedback to the user when moving the mouse over Display Server objects: 1. On a 3D bargraph, a bar can be selected by clicking any edge of the bar, not just its face as in prior releases. Also, a bar's mouseover information will appear when the mouse is over any part of the bar. 2. For tabular objects with a drill down or command: - the browser's status bar text will show 'click to drill down' or 'click to run command' when the mouse is over an element in Element Only mode, or anywhere over the object in Anywhere mode - if the mouse is over an element (bar,cell) in the object, the browser's cursor will change to a hand - if the mouse is over the object but not one of its elements, the cursor won't change to a hand, even in Anywhere mode. This is intentional, to indicate to the user when the mouse is over an element, and that clicking to drill down will set the table substitutions accordingly. Limitations: In Internet Explorer 5.5, the status bar will not show the 'click to drill down' text when the cursor changes to a hand. Also the cursor will not change to a hand when over a table cell. In Firefox, changes to the status bar text are initially disabled. To enable changes, open Firefox's Tools/Options dialog, click the "Advanced..." button near the "Enable Javascript" checkbox, and then click the "Change Status Bar Text" checkbox. In Firefox versions earlier than 1.5, the browser status bar text gets stuck on "Transferring data ..." after the first refresh of a display. Afterwards, it will not change when the mouse is over an object with a drill down or command until another display is opened. Upward Compatibility: If necessary, the old Display Server behavior (always using 'Element Only' mode) can be enabled by specifying the -ddelementonly command line option as follows: run_displayserver -ddelementonly ... or by adding a line to the DISPLAYSERVER.ini file as follows: ddelementonly true

E11812: Add configuration to servlets that prints to logfile

The rtvdisplay and rtvdata servlets have been modified to provide version information. This can be useful in verifying that the version of the servlet matches the version of the installed Display Server and Data Server. The version of the rtvdisplay servlet can be viewed by browsing the following URL: http://host:port/rtvdisplay/version.jsp The version of the rtvdata servlet, along with other diagnostic information, can be viewed by browsing the following URL: http://host:port/rtvdata/test.jsp?test=1 In addition, when each servlet starts, it will print the version information to the standard output of its servlet container. (Tomcat's stdout log file, for example). The rtvdisplay servlet also includes the version string as a comment in each HTML file it generates, as follows: >!-- rtvdisplay servlet: version_string --<

B11814: Rapid clicking of control objects no longer causes problems

When using the Display Server, after the user clicks on an object, if the server response is delayed the user may be able to click on additional objects before the server reply is received. In previous releases, those additional clicks were sometimes lost or ignored. This has been fixed.

E11677: Bundle tomcat directory that contains war file into rtvimage

An Apache-Tomcat 5.0.28 Web Server is now included in the RTView distribution to allow users to run the server and servlet based demo components of RTView without having to set them up on their own Web Server. The Demo Server is located in the servers/jakarta-tomcat-5.0.28-sl directory of the distribution. The following scripts have been added to the distribution to start and stop the Demo Server: run_startup_demoserver starts the Apache-Tomcat Demo Server run_shutdown_demoserver stops the Apache-Tomcat Demo Server The Demo Server runs on the HTTP/1.1 Connector port 8068. The shutdown port is 8069 and the AJP Connector port is 8070. Once the Demo Server is started, you should be able to access both the Rich and Thin Client versions of the following demos: Data Sources ElectroSphere Features Geothermal TIBCO Hawk Monitor You should also be able to run the Rich Client version of: TIBCO EMS Manager To Run Rich/Thin Client Demos ----------------------------- To run a Thin Client demo you must start the Demo Server, start the Display Server in the desired demo directory, start any simulators in the desired demo directory and access the demo in the browser on the localhost on port 8068. To determine the appropriate URL access the Start Programs menu items on Windows or view the file view_displayserver.url in the desired demo directory on UNIX. To run a Rich Client demo you must start the Demo Server (if it is not already running), start any simulators in the desired demo directory, start the Data Server in the desired demo directory, add access the applet in the browser on the localhost on port 8068 (http://localhost:8068/esphere_applet). To determine the appropriate URL access the Start Programs menu items on Windows or view the file view_applet.url in the desired demo directory on UNIX. More detailed instructions are provided in the RTView Documentation. To Modify Rich/Thin Client Demos -------------------------------- If you wish to modify a Thin Client demo you need to recreate the .war file by executing the make_war.bat script in the desired demo directory and then copy the .war file to the Demo Servers web applications directory. The following script has been added to the distribution to copy the specified .war file to the Demo Servers appication directory: install_to_demoserver warfile Note that this script stops the Demo Server if it is running, removes the existing .war file and directory from the Demo Server webapps directory, copies the new war file to the webapps directory and restarts the Demo Server. The script must be run from the directory containing the warfile. If you wish to modify a Rich Client demo or add your own demo, you will need to stop the Demo Server if it is running, copy the desired demo directory to the webapps\ROOT directory of the Demo Server (servers\jakarta-tomcat-5.0.28-sl\webapps\ROOT) and copy the necessary jars from the lib directory.

Data Sources

E11767: Date type implemented for XML, SQL, and Rendezvous data sources

Support for date data types is now fully supported in the XML, SQL and Rendezvous data sources. In XML, columns may now use "date" as a data type. Entries for date columns may be formatted date strings or a number string representing the number of milliseconds since midnight, January 1, 1970. For SQL data sources, the DATE, TIME and TIMESTAMP column types will now be interpreted as dates and not merely date strings. For Rendezvous messages, the DATETIME data type is now interpreted as a date and not simply a date string. No changes have been made to RTView's support for OLAP, Hawk and JMS, since these data sources do not provide a date data type.

SQL Data Source

B11816: SQL column names with hyphens supported

In previous releases, if a column name containing a hyphen was picked from the Column(s) drop-down list in the Attach to SQL Data dialog, the resulting query would fail with syntax errors. This has been fixed.

E11459: Support for commands has been added to the SQL datasource

Support for commands has been added to the SQL data source. The actionCommand property of a control object, or the command string property of a standard object, can be configured to perform an SQL update, insert, or delete operation to modify a database table, or to perform other SQL operations. An SQL Command is configured In the Builder, using the Define SQL Command dialog. In the dialog, a database is selected and the SQL command string is entered. The SQL string can contain substitutions, for example: UPDATE system_table SET Status = 'online' WHERE System = '$systype' The dialog allows selection of the "Run Affected Queries After Command" option. If this option is selected, the SQL data source will re-run any queries that use the same database table that is modified by the command. This is useful for viewing changes to the table immediately, rather than waiting for the next scheduled query update. SQL commands use the same database connections that are used to run SQL queries. If a database has the "Use Client Credentials" option checked in the SQL tab of the options dialog, then an SQL command executed on that database will use the same credentials. If the -sqltime command-line option is specified, the elapsed time and status will be printed when an SQL command is executed. Limitations: The "Run Affected Queries After Command" option is only supported for update, insert, and delete operations in which the name of the database table to be modified is specified explicitly. If a command performs another SQL operation (such as running a stored procedure which modifies tables), then the results of the operation will not be displayed until the next scheduled update of each affected query. Also, display of the modified data may be delayed for other reasons, for example if the database does not commit the results immediately and instead returns the old data on the next query.

TIBCO Hawk Data Source

E11686: Support Multiple Domains for Hawk

RTView now supports multiple connections to TIBCO Hawk on the TIBCO Hawk Communications tab in the Application Options dialog. For each connection, a name must be specified. This name is used to create an Agent Group by the same name that contains all of the agents on that connection. A Connection Name field has also been added to the RTViewDs microagent. A default connection is automatically created. The parameters for this connection can be modified, but it cannot be removed. Users should not create multiple connections with the same parameters as some agents from that connection will be added to one group and some to the other.

JMS Data Source

E11860: SonicMQ factory class name added to the JMS Connection dialog

The SonicMQ factory class name has been added to the JMS Connection dialog to make it easier to create a connection to SonicMQ. See the Setup section of the documentation for information on how to setup your classpath to include the SonicMQ classes.

E11861: Queue browsing now supported for SonicMQ

Queue browsing is now supported for SonicMQ.

Object Library

B11832: Image name handling improved

RTView has been improved to better handle image file names that contain leading or trailing blank spaces.

E11652: transparencyPercent property added to most objects in palette

The ability to apply an alpha composite value has been added to most of the objects in the RTView palette. The transparencyPercent property controls the level of transparency used when drawing the object. Valid values for the transparencyPercent property range from 0 to 100. Use 0, the default, for a fully opaque object. If you are stacking objects, use lower values for objects toward the back of the stack and increase the transparencyPercent for objects stacked in front. Values approaching 100 will increase the level of transparency to the point of invisibility. The transparencyPercent property is not supported in the tables (obj_table02 and obj_table03), in the object grid (obj_objectgrid), or in any of the items in the Controls section of the Object Palette. The transparencyPercent property is not supported when using the -optimizeredraw command line argument.

B11140: The obj_text01 label object now supports rotated drawing

The obj_text01 label object now supports rotated drawing. Set the rotationAngle property to a positive or negative number of degrees of rotation. Use 0 degrees for no rotation.

Links

E11920: Improved link performance

Performance of link drawing has been increased significantly especially for larger numbers of links.

Tables

E11913: Table row limit increased from 10000 to 131072

The maximum number of rows that a table can support has been increased from 10000 to 131072.

E11872: Column reordering in table objects has been disabled

In previous versions of RTView, columns in a table could be reordered by dragging the column header, but this order was not persisted after the display was closed. Reordering the columns by dragging the column header has been disabled. To modify the order of the columns in a table, modify the order of the columns in the data attachment for the table.

B11871: Numeric strings that are integers are not formatted as doubles

The table object (obj_table02) now only applies default formatting to numeric string columns when the column values look like floating point numbers (contain a decimal point).

E11751: Row highlight funtionality added to table

The rowHighlightEnabledFlag property has been added to the table (obj_table02). This property allows an entire row to be highlighted when selected, instead of just a single focused cell. The highlighting of the focused row takes precedence over any filter colors that may be applied to a row.

E11431: Option to lock the first column of a table implemented

The table object (obj_table02) now allows the first column in the data table to be locked through the use of row headers. The rowHeaderEnableFlag turns row headers on or off. The rowHeaderBgColor, rowHeaderTextColor, rowHeaderTextFont, and rowHeaderTextSize properties control the appearance of the row header column. The rowHeaderFilterColorsEnabledFlag controls whether row filter colors are applied to the row header. Row visibility filters are applied to the row header regardless of the setting of this flag. Limitations: 1. The row header column cannot be resized by dragging, although it can be resized using the columnProperties attribute. 2. The row header column cannot be hidden using the columnsToHide property. A warning message will be displayed if this property is changed to include the row header column.

E11696: Option to lock the first column of a table supported

The Data Server now allows the first column in the data table (obj_table02) to be locked through the use of row headers. The properties that control row headers and limitations on the use of row headers are described in release note E11431. Additional Limitations: 1. The rowHeaderFilterColorsEnabledFlag is not supported in the Display Server. Filter colors are only applied to the table cells and not to the row headers.

E11570: Formatting has been implemented for Datetime columns

The table object (obj_table02) now supports formatting of columns containing date/time data. Formatting should be applied using the columnFormat attribute.

E11471: Alternating row colors now supported

The table object (obj_table02) now has an option to display alternating stripes for the row background color. This option may be turned on by checking the cellBgStripedFlag property. The stripe color is based on the cellBgColor. If cellBgColor is white, the stripe color will be gray. Otherwise, it will be a paler version of the cellBgColor.

Graphs (General)

B11870: Auto-scaling enhanced to work with values 10E-4 or smaller

Auto-scaling in all graphs has been improved to now handle data values that are 10E-4 or smaller

E11479: Trace markers in bar, trend and xy graphs have been improved

The trace markers in the bar, trend and xy graphs have been improved to provide the same functionality as the markers in the radar graph. For bar and xy graphs, the marker style index of the traceProperties attribute now supports the following values: 0 = no marker 1 = dot 2 = + 3 = * 4 = o 5 = x 6 = filled circle 7 = filled diamond 8 = filled triangle 9 = filled square 10 = filled star For trend graphs, the above values may be used for the trace*MarkStyle attribute. The bar, trend and xy graphs also now provide the markDefaultSize and markScaleMode attributes. The markDefaultSize attribute specifies the size of the markers in pixels. The markScaleMode attribute allows markers to be scaled increasingly, either by trace or within each trace.

Bar Graphs

B11803: Value font size adjusts to available space for stacked bars

Bar graphs with stacked bars have been improved to prevent crowding and overlapping of bar value labels. In cases where a bar segment is too small to contain a value label, the font size of the value label will be reduced to make the label fit. If a label with a smaller font still does not fit within the bar segment, the label will not be displayed.

B11794: Bar graph flicker bug has been fixed

A bug that was causing the bar graphs to flicker on drill down has been repaired.

E11748: A traceValueDivisor property has been added to the bar graph

A traceValueDivisor property has been added to the bar graph. In previous versions, the trace values were adjusted in conjunction with the bar values via the valueDivisor property. This new property allows trace values to now be adjusted independently of the bar values. Setting traceValueDivisor to zero (the default) will prevent any adjustment of the trace values. It is important to note that previously existing displays may need to be revised in order to continue working in the same manner under the new version of RTView. The valueDivisor property should be copied into the traceValueDivisor property for any bar graph that displays traces and has a non-zero valueDivisor property.

Pie Graphs

B11656: Bug fix has removed gray gap between wedges

A bug that was causing a gray gap to be drawn between two wedges of a pie graph has been repaired.

Radar Graphs

E11836: labelTextAlignX property added to radar graph object

The radar graph now has a labelTextAlignX property. This property provides the option of positioning the graph title label at the left, center or right of the graph.

Stock Chart

B11929: Stock chart no longer throws exception when data column changed

In prior releases, the stock chart would throw an exception if a trace was attached to a data table that contained a timestamp column but no columns of numeric data. This has been fixed.

B11928: Stock chart no longer crashes if scaled to be very narrow

In previous versions, the stock chart would crash in candlestick mode if it was scaled to be very narrow.

B11923: Stock chart y-axis labels no longer clipped by edge of graph

In prior releases, if a stock chart was configured to have one or more overlay traces and no price trace, the y axis labels with large values were partially clipped at the left edge of the chart. This has been fixed.

B11868: Traces update properly now if data object is updated and reused

In the previous release, the stock chart did not update if it was attached to a data table from a custom datasource which updated the existing data table, rather than creating a new table. This has been fixed.

E11939: timeFormat property added to the stock chart

The "timeFormat" property has been added to the stock chart. This property is only used when the timeRangeMode is CONTINUOUS. All other times it is ignored. If left blank, the axis is labelled with a default format, determined based on the range.

E11799: x-axis labels no longer overlap

In prior releases, the time axis labels on the stock chart would overlap under some conditions. This has been fixed.

Control Objects

E11520: Add Radio Button controls

A Radio Button Group control (obj_c1radio) has been added to RTView. This control allows users to create and manage a bank of radio buttons. Use the radioListValues property to specify the labels and values for each radio button. For this property, provide a semicolon- delimited list containing the information for each radio button. For example: Red;Green;Blue If you want the radio button label to be different from the value returned when the radio button is selected, you may provide an optional value property after each label, separated from the label by a comma. For example: Low,25;Medium,50;High,75 You may optionally attach the radioListValues property to a table. The first column of the table will be used for the radio button labels. If the table contains more than one column of data, the second column will be used for the radio button values. Use the selectedValue property to specify which radio button should be turned on. If none of the radio button values match the value given in the selectedValue property, then no change will be made to the state of the radio button group. Use the horizontalGap property to specify the width, in pixels, of the gap that separates radio buttons horizontally. Use the verticalGap property to specify the height, in pixels, of the gap that separates radio buttons vertically. Use the orientationMode property to specify the order in which radio buttons will be laid out in the group. When orientationMode is set to Horizontal, radio buttons will be populated by row. When orientationMode is set to Vertical, radio buttons will be populated by column. For example, suppose a radio button group has room for three rows and three columns of radio buttons and the button labels are A, B, C, D, E, F and G. With orientationMode set to Horizontal, the buttons will appear as: A B C D E F G With orientationMode set to Vertical, the buttons will appear as: A D G B E C F Use the numberOfColumns property to force the radio button group to have a specific number of columns. Specifying zero for this property will allow the radio button group to dynamically choose the number of columns. Use the numberOfRows property to force the radio button group to have a specific number of rows. Specifying zero for this property will allow the radio button group to dynamically choose the number of rows. The pixel dimensions of the radio button group are specified with the objHeight and objWidth properties. If not all of the radio buttons will fit within the group's extent, the radio buttons that fall outside of the extent will not be displayed.

E11700: Radio Button controls added to Display Server

The Display Server now supports radio buttons. There are some limitations: The vertical alignment of a radio button and its label may differ slightly when viewed via the Display Server as compared to the Display Viewer. If the is insufficient space to display the entire label text of a radio button, the Display Viewer and Internet Explorer will display ellipsis. Firefox will clip the label text. The radio button bgColor property is not supported by the display server.

TIBCO EMS Management Application

B11941: Edit Display improved to run on most Windows systems

In previous versions of RTView, the Edit Display option in the TIBCO EMS Manager did not work on some Windows systems. This has been fixed, however the Edit Display option is not supported on Windows 98 (see B11963).

B11837: Trading Exchange Demo displays fixed

In the previous release, the Trading Exchange Demo custom displays in demos/emsdemo did not display data. This has been fixed.

Tree Handling and Navigation

B11818: Font and colors can be configured for RtViewNavTreePanel

The font and colors used by the Display Viewer to display an RtViewNavTreePanel can be configured, by using the new <treefont> and <treecolor> tags in the navtreedata file. Typically, this file is named navtree.xml. The <treefont> tag can appear anywhere in the navtree.xml file, for example: <treefont name="serif" style="bold italic" size="16"> The <treefont> attributes are: name - specifies the font family name style - either "plain", "bold", "italic", or "bold italic". size - font point size. If any of these attributes are omitted, the corresponding default value is used. If the <treefont> tag is omitted entirely, the default tree font is used (typically SansSerif plain 12 point). The <treecolor> tag can appear anywhere in the navtree.xml file, for example: <treecolor text="pink" background="gray" selection="#00B9F3"> The <treecolor> attributes are: text - specifies the text color for the tree labels background - background color for tree and non-selected tree labels selection - background color for selected tree label A color attribute values can be specifed in hex RGB format #rrggbb. For example, cyan is specifed as #00FFFF. Or, one of the following color names can be used: black, white, red, blue, green, yellow, cyan, magenta, gray, lightGray, darkGray, orange, pink. If any of these attributes are omitted, the corresponding default color is used. If the <treecolor> tag is omitted entirely, the default tree colors are used. The font and color of an individual tree node can be specified by using HTML in the node's label attribute. For example, the following label will be drawn in green using a 50 point italic monospaced font: <node label="<html><p style= 'font-family:monospaced;font-style:italic;font-size:50;color:green'> Your Label Goes Here" display="med_panel"> Font settings specified for a label with HTML overrides the <treecolor> and <treefont> settings.

Distribution

B11922: Uninstalling RTView no longer leaves empty menus

In previous version of RTView the uninstall sometimes left an empty menu item. This has been fixed.

E10039: Jar certificates have been updated.

The digital certificates for the jars in previous releases expire in March 2006. This will not cause them to stop functioning. If you are running the Display Viewer Applet with a jar that has an expired certificate, and your browser is configured to present certificate information to the user, the user will see that it is expired. They can still choose to run it. The certificates have been updated, the new expiration date is March 2009.

E11925: Default jars are no longer signed

In previous releases, all of the RTView jars in the lib directory were signed with a digital certificate. The jars in the lib directory are now unsigned. Signed versions of all of the jars are in lib\signed_jars.zip.

Version 4.0a1 Release Notes

RTView

General

E11784: New -timezone option available for setting default timezone

The -timezone command line parameter has been added to set the default timezone used when interpreting and displaying dates. The -timezone parameter should include a Java timezone ID. For example: -timezone:US/Eastern The timezone ID should be a full name from the list below or a custom ID, such as "GMT-8:00". Unrecognized IDs will be treated as GMT. The list of timezone ID values will vary slightly with each Java virtual machine. If you run the RTView Builder with a valid -timezone parameter and then save Application Options, the timezone information will be preserved in the options.ini file. To prevent the -timezone value in the options.ini file from being used, pass "none" as the timezone ID in the command line parameter. For example: -timezone:none See the documentation for valid Timezone ID values.

E11683: XML Server and Image Server have been renamed

The XML Server and Image Server have been renamed. The XML Server has been renamed to the Data Server. Some command line options have also changed: Data Server -xmlout is now -dataout Display Builder and Display Viewer -xmlserver is now -dataserver The options file for the Data Server has been renamed to DATASERVER.ini. XMLSERVER.ini files from previous installations will still work. The xmlservlet has also been renamed and is now distributed in a new directory: \servlets\rtvdata The default URL for the servlet has also changed: http:\\host:port\rtvdata The installation script for the new servlet will not remove the old servlet from your web server. If you would like to remove the old servlet, this must be done manually. The Image Server has been renamed to the Display Server. The following command line option has changed: -image is now -display The options file for the Display Server has been renamed to DISPLAYSERVER.ini. IMAGESERVER.ini files from previous installations will still work. The rtvimage servlet has also been renamed and is now distributed in a new directory: \serlvets\rtvdisplay The default URL has also changed: http:\\host:port\rtvdisplay Several of the properties in rtvdisplay.properties (previously named rtvimage.properties) have changed: ImageServerHost -> DisplayServerHost ImageServerPort -> DisplayServerPort ImageServerTimeout -> DisplayServerTimeout The old property names are still supported. The installation script for the new servlet will not remove the old servlet from your web server. If you would like to remove the old servlet, this must be done manually. To upgrade an existing Display Server deployment: 1. Rename IMAGESERVER.ini to DISPLAYSERVER.ini 2. Modify any references to getimage.jsp to getdisplay.jsp 3. Modify any references to imageFrame to displayFrame 4. Rename rtvimage.properties to rtvdisplay.properties 5. Modify rtvdisplay.properties to use new property names: ImageServerHost -> DisplayServerHost ImageServerPort -> DisplayServerPort ImageServerTimeout->DisplayServerTimeout 6. Modify description and listener in web.xml: Display Server Servlet gmsjsp.rtvdisplay If you are using the rtvimage war file included with your RTView installation, the URL to access the Display Server displays was http://host:port/rtvimage This will now be http://host:port/rtvdisplay

Application Frameworks

E10483: Provide dockable window framework for Display Builder

The Display Builder now uses dockable windows to present the Object Palette and Object Properties dialogs. Window layouts are persisted between application runs. To revert to the initial layout, select Reset Window Layout from the Tools menu.

Object Property Dialog

E10229: Object name property, objName, added to all objects

A new property, objName, has been added to all objects. A name is automatically assigned to each new object when it is added to the display. You can modify this name using the objName property. The name for each object must be unique.

Substitution

B11622: Existing subs removed properly if linked with local variable

Previously, the Remove Existing Substitutions option did not clear subtitutions from a drill down window if the subtitution had a corresponding local variable. This problem has been fixed. When substitutions are cleared, any local variables are restored to their initial values.

Security

B11733: Custom user manager crash fixed

In version 3.0e1, the custom user manager would crash when running with the Data Server if the getPassword() method returned null. This problem has been fixed.

Java Web Start

B10296: Support deployment using Java Web Start

The Display Builder, Display Viewer, Data Server and Registration applications can now be deployed using Java Web Start.

Display Server

B11804: Display server crash fixed

A display server problem has been fixed that caused Internet Explorer to crash occasionally while updating the current display after clicking on an object that changed a substitution or local variable.

B11797: Scrollbar bug in tables with Firefox 1.5 fixed

If using Firefox 1.5 with prior Display Server versions, unwanted scrollbars appear in the column headers, and the table's horizontal and vertical scrollbars do not appear when needed. These problems have been fixed.

E11448: Deployment of multiple Display Servers supported

It is now easier to deploy multiple Display Server applications as the install_to_tomcat scripts have been moved to the "bin" directory and can be used from any Display Server application. The install_to_tomcat script takes one argument, the name of the .war file (without the .war extension), that contains a modified rtvdisplay application. In each application directory there will need to be a script (e.g. make_war.bat) which copies the rtvdisplay.war file from the servlets/rtvdisplay directory and updates it with files unique to that application. With this release, the demos/esphere application has been enhanced to include some sample files so that it can be run via the display server (E11585).

Data Sources

SQL Data Source

B11782: Calculated columns in SQL Server no longer causes crash

A calculated column in SQL Server, which results in a column with no name, previously caused a crash in RTView. This problem has been fixed.

E11783: Maximum Rows option implemented for SQL data attachments

A new field, Maximum Rows, has been implemented to allow you to specify how many rows of data are returned by a SQL query. The maxNumberOfRows object property is still applicable to tables with a SQL data attachment with Maximum Rows set, so you may not see as many rows as you specify in your data attachment if you do not also adjust maxNumberOfRows.

TIBCO Hawk Data Source

E11687: Tibco Hawk 4.6 now supported

RTView now supports TIBCO Hawk 4.6.

E11688: SSL supported for Hawk when running on an EMS transport

TIBCO Hawk 4.6 supports specifying SSL parameters to use when connecting to Hawk agents using an EMS transport. To specify your SSL parameters in RTView, you must implement a MyHawkSSLHandler. See the RTView User Guide for more information on how to setup this class.

OLAP Data Source

E11719: Speed of OLAP queries using Applix Java API has been improved

The OLAP datasource has been modified to improve the performance of database connections that use the Applix Java API. This reduces the time required to perform a query with a large result, and the time required to fill the dimensions tree when browsing a cube.

B11702: Incorrect lost connection errors no longer occur

In the previous release, for some Applix TM1 databases, the OLAP datasource would incorrectly report lost connections when using the Applix Java API. This has been fixed.

B11703: Trailing whitespace no longer causes MDX syntax error

In the previous release, if space characters were typed at the end of the Columns or Rows text field in the OLAP data dialog when using an ODBO connection, the query was constructed incorrectly, causing an MDX syntax error.

B11704: Multiple dimensions in an ODBO slicer are supported

In previous releases, the OLAP data dialog allowed selection of only a single item in the slicer of a query using an ODBO connection. Now, the dialog allows selection of items from multiple dimensions for the slicer. However, only one item from each dimension, which is not already used on the query's column or row axis, may be selected.

E11664: Option added to suppress permissions errors

An option has been added to the OLAP datasource to suppress errors from OLAP queries. A checkbox for this option, labeled "Suppress Query Errors", appears on the OLAP tab in the Options dialog of the Display Builder. From the command line, specify "-olapquiet".

E11435: Asian string support for TM1 Java API connections implemented

OLAP connections using the Applix TM1 Java API now support Japanese characters, on systems running Japanese Windows. Japanese characters may appear in cube names, dimension names, element names, and query results.

JMS Data Source

B11669: Maximum number of messages in Queue Browser can be specified

The queue browsing function now respects a limit to the number of messages that will be browsed from a queue. The default is 1000. This can be changed by specifying the command line options: -jms_maxqueuemsgcount:N where "N" is the maximum number of messages that will be queried from a queue browser for any queue. This option was added to prevent long delays when reading large number of messages from a queue.

E11114: Automatic reconnection to a server is now supported

If an established server connection fails, an attempt is now made to reconnect to the server and reestablish message listeners. This reconnect attempt is made continuously approximately every 30 seconds by default. This can be changed using the command line argument: -jms_minreconnecttime:N where "N" is the minimum number of seconds to wait before attempting to reconnect to the server. This option will be saved to the JMSOPTIONS.ini file if a Save is done in the Options dialog.

JMS Admin Data Source (for TIBCO EMS only)

E11532: "Localhost" in hostnames is substituted with actual host name

The behaviour in the EMS Manager of servers that are listed in the servers.xml file with "localhost" as the hostname has been changed. Previously, the server table would be constructed with the "localhost" retained in the URL. This caused problems with the administration of routes and the selection of servers. Now, the localhost is always substituted with the actual host name that is found on the system on which the EMS Manager is running.

E11721: The default setting for "Enable Monitor Messages" is now false

The default setting for "Enable Monitor Messages" is now false. Enabling monitor messages on a system with many servers can cause high network traffic. Monitor messages should be used carefully and only for debugging the behavior of a system. Refer to the TIBCO documentation for more information about how to use monitor messages.

E11167: Server topology can be discovered via routes

A new option has been added to the TIBCO EMS Administration dialog. If enabled, the "Discover Servers by Routes" option will use the information contained in the server metrics "Routes" table to discover servers that are linked to any of the servers already known. A new server is added to the table only if the route to that server is "active", and is "connected".

E11722: New "Remove All Servers" button added to options

In the TIBCO EMS Servers Option Dialog, there is a new button added to permit the removal of all servers in one operation. Note: Unless "Discover Servers" is turned off, the list will be repopulated immediately with all known servers.

E11659: Use of XML data files for JMS metrics is no longer supported

The "Write Admin Data to External File" option has been removed in this version of the EMS Manager and the JMS Administration Datasource. The use of XML data files for JMS metrics is no longer supported.

B11679: Admin commands are now supported in the Data Server

In the EMS Manager, all admin commands are now implemented in the JMSADM data source. This means that when the EMS Manager is used with the Data Server, the command is issued to the Data Server and the admin function is performed in the server. The client applications no longer needs to make its own connection to the target server.

B11762: Server status no longer toggles if servers.xml contains "admin"

Previously, if a server specification was saved in servers.xml with the user name "admin", that server's status would toggle incorrectly between active and inactive. This problem has been fixed.

B11666: servers.xml is no longer saved as default xml source

Previously, the servers.xml file would get saved out as the default xml source. This no longer occurs.

E11725: Maximum server metrics table size can now be specified

In order to reduce the chance of high cpu utilization or memory usage, a limit has been placed on the reading of topics, queues, connections, and durables. The maximum number of rows that can be read is 1000 by default. If the number of rows in one of these metrics tables is greater than the max, no rows will be read at all. Instead, one row is added to the table with a Name field that has the value "TOO MANY !". The value for the maximum row count can be set using the command line option: -jmsadm_maxmetricsrowcount:N where "N" is the maximum number of rows to query for topics and queues. This value will be saved the .ini file whenever a Save is done from the Options dialog in the Display Builder.

E11731: Pattern-searching now available for topics and queues

The ability to select Topics and Queues by specifying a pattern to match has been added to the JMSADM Datasource and also to the EMS Manager Topics and Queues pages. Patterns are specified in the usual TIBCO fashion, e.g. sample.* or orders.>

E11658: Adding a server with an invalid hostname no longer causes delay

In previous versions of RTView, adding a server with an invalid hostname could cause a delay of up to several seconds. This delay has been minimized in most cases, but still can occur occasionally.

E11644: Mechanism for retrieving EMS Server metrics has been enhanced

The mechanism for retrieving EMS server metrics has been enhanced to minimize overhead and CPU utilization. Previously, all metrics were being retrieved from each server on every metrics update. Now, the ServerInfo metrics are retrieved for each server, but all other metrics are only retrieved if they are being monitored in an open display. In addition, the "All EMS Servers" and the "Server Info" displays no longer have the "keepalive" mode set in the emsmgr_navtree.xml control file. This was done to minimize the server metrics that are regularly being retrieved.

E11654: Add field to EMS Admin dialog to set metrics update period

The EMS Administration Options Dialog Tab has been enhanced to include a way to specify the metrics update period. This value is also saved in the JMSADMOPTIONS.ini file when options are saved.

E11743: Minimum server reconnect time is configurable

The default time to wait before attempting a reconnect to a server that has failed to connect is 30 seconds. It is now possible to configure this time by specifying the command line option: -jmsadm_minreconnecttime:N where N is the number of seconds to wait before attempting a reconnect for admin connections.

Sample Displays and Applications

Esphere Sample Application

E11585: Esphere demo enhanced to show configuration of Display Server

The demos/esphere sample application has been enhanced to show how the RTView Display Server can be configured for an individual application. A "displayserver" subdirectory is now provided which contains a set of files that are used to override some of the HTML, XML, and properties files contained in the standard rtvdisplay.war file contained in the %RTV_HOME%/servlets/rtvdisplay directory. This directory includes several HTML files, including a top-level index.html page that customizes the look of the application and the contents of the side navigation panel. The web.xml file and the rtvdisplay.properties files are used to customize the name of the application and the port used to run the Display Server. The esphere web application is created by running the make_war.bat or make_war.sh script. This script copies the rtvdisplay.war file from servlets/rtvdisplay and updates the file with the contents of the displayserver directory. Once the war file is made, run the install_to_tomcat.bat or install_to_tomcat (unix) script to copy the war file to the Tomcat webapps directory, and stop and start the tomcat servlet engine. After this the webapp can be accessed typically using a URL address like "http://localhost:8080/esphere". At the top level of the directory, the DISPLAYSERVER.ini file is used to configure settings for the RTView Display Server. The port number specified in this file must match the port number specified in the rtvdisplay.properties file. In the demos/esphere directory, you must also start the Display Server application using the command "run_displayserver", in order to generate the displays for the application.

Hawk Monitoring Sample Application

E11610: Hawk Monitoring demo added to the installation

A new demo, "Hawk Monitoring", has been added to the installation. It can be accessed from the demos in the Start Menu or from RTV_HOME/demos/hawkmonitor.

XML JSP Datasource Tutorial

E11611: JSP example displays have been integrated into the DS Tutorial

The DS Tutorial example has been updated to include displays for Java Server Pages. The separate demos/jspdisplays example has been removed.

Object Library

Tables

B11781: columnsToHide inconsistency bug fixed

In prior releases, a hidden column in a table object would become visible if the names or number of the table columns changed after the table was displayed. This has been fixed.

Graphs (General)

B11761: Scrollbar visibility for invisible objects fixed

In prior releases, setting the visFlag property to false did not hide the scrollbars on the bar graph, trend graph, and xy graph objects. This has been fixed.

E11736: New stock chart graph added

1. Overview The stock chart object plots the price of a stock over time. The chart supports intra-day, daily, weekly, monthly, quarterly, and yearly plots. The price data can be plotted as a line, bars, or candlesticks. A candlestick shows the stock's open, high, close, and low price for each time interval. Multiple overlay traces can be configured to show trading volume, to compare the stock's price to that of other stocks or stock indexes, and to show events such as dividend payments, splits, etc. Overlay traces can be bars or lines. Colors, styles, labels, gradient fill, and other properties can be configured for each trace. The chart supports features available on the other RTView graph objects, including: - autoscaling and multiranging on the y axis - a trace legend, either fixed or floating - a sliding cursor - zooming and scrolling - mouseover on trace points - drilldown from trace points 2. Trace data The stock chart supports ten traces: one price trace and up to 9 overlay traces. Each trace has two properties used to provide the trace data, one for the trace's initial (historical) data, and another for new data to update the trace while it is displayed. For the price trace, these properties are named priceTraceHistoryTable and priceTraceCurrentTable, respectively. For an overlay trace, the property names are overlayNHistoryTable and overlayNCurrentTable, where N is the overlay number, from 1 to 9. A history table contains multiple rows of price data, one for each point that will be drawn when the trace is displayed. A current table is expected to contain only one row of data, which is used to either update the last (most recent) point on the trace with new data, or to add a new point to the end of the trace. If a trace displays only historical data (for example, a trace of weekly year-to-date prices) then the current table property need not be assigned. For the price trace, the historical and current table must each contain 5 columns. For an overlay trace the tables must each contain 2 columns. The first column of all tables must contain timestamp data. The timestamp can be a string, specifying a date or a date and time, or it can be a numeric value representing the number of milliseconds since Jan 1 1970 GMT (the conventional Java long timestamp). The table rows do not need to be in time order, the chart will sort them if necessary. For an overlay trace, the second column of each table must contain the data values (price, shares sold, etc) to be plotted. Any additional columns are ignored. For the price trace, the second through fifth column must contain the open, high, low, and close price of the stock, in that order. 3. Time Axis The chart's x axis shows time values, increasing from left to right. By default, the chart's time range is set to match the oldest and newest timestamps in the price trace data tables. The time range can also be controlled by several properties, and also by using the zoom and scroll features, as with the trend graph object. These are described later. In addition, the timeRangeMode property determines the interval between trace data points. The timeRangeMode property has several settings, as described below. However, in most cases the Auto setting will be used, allowing the chart to select the setting that best matches the time intervals in the price trace's data tables. If timeRangeMode is set to Continuous, the chart will plot each point using its corresponding timestamp from the data table. In Continuous mode, the stock chart is very similar in behavior to the trend graph object Intra-day mode is used for viewing price data with time intervals less than one day (hourly, every 15 minutes, every minute, etc). In intra- day mode, the tradeDayBegin and tradeDayEnd properties are used to define the daily start and end times of the trading day. No data is plotted between the end of a trading day and the beginning of the next. The default values are 09:30 and 16:00. The timeRangeMode can also be set to Daily, Weekly, Monthly, or Quarterly, or Yearly. In each of these "periodic" modes, at most one data point is plotted for each trace at the selected period (one point per day, one per week, etc). If the data tables contain data at more frequent intervals than indicated by the mode (for example, timeRangeMode is weekly but the data tables contain daily price data), the chart will aggregate the data to match the mode. This is described in more detail later in this note. If timeRangeMode is set to Auto, the interval between the two most recent data points in the price trace's historical data table is used to select the mode. If the interval is less than 1 minute, then Continuous mode is selected. If it is one minute or more but less than 1 day, intra-day mode is selected. Otherwise, the periodic mode that best matches the data is selected (Daily, Weekly, etc). 4. Time Axis Labels The labels that appear on the time axis vary, in number and format, according to the chart's visible time range, the timeRangeMode, and the trace data. If timeRangeMode is Continuous, the number of time axis labels is controlled by the xAxisMajorDivisions property, as with the trend graph. The labels show the start and end time of the visible time range, and possibly other evenly spaced times between. Note that the time labels and their tick marks may not align exactly with any of the trace's data points. In the other modes, if space allows, time axis tick marks & labels are shown at regular intervals and each aligns with a point in the price trace. For example, a monthly chart with 12 data points would have a tick mark and label showing the 3 letter abbreviation for each month. However, if the chart shows a longer time range, say 5 years of monthly data, then the chart may only show a tick mark and label for January of each year, using the year as the label. The other months would not be labeled. If the user zooms in on the chart, so that fewer months are visible, then more of the months may be labeled. In Intra-day mode, the labels show the hour and minute of the day, day of week, day of month, month of year, and/or year. In Daily and Weekly mode, the labels show the day of the month, month of the year, and/or year. In Monthly mode, the labels show month of the year, and/or year. In Quarterly mode, the labels show quarter (Q1, Q2, etc) and/or year. In Yearly mode, the the labels show years. The first label for an interval may differ from the other labels. For example, if the hours of the day are shown on an intra-day chart, the first label for each trading day will show the day of the week (Mon, Tue, etc) rather than the opening time (09:30). Similarly, on a daily or weekly chart, the first trading day in the month will be labeled with the name of the month, while the other labels will show the day of the month. On a monthly chart with a time range of more than one year, January of each year will be labeled with the year. In any mode, if the trace contains a large number of points, the Continuous time axis labels described earlier are used instead of the interval labels. 5. Time Range The time range of the chart is controlled by the timeRange, timeRangeBegin, and timeRangeEnd properties in a manner similar to the trend graph. If both timeRangeBegin and timeRangeEnd are specified, then their values determining the time range of the graph, and the timeRange property is ignored. If timeRangeBegin but not timeRangeEnd is specified, then the timeRange property is used to determine the chart's end time. If the timeRange is -1, then all data newer than timeRangeBegin is plotted. If timeRangeEnd but not timeRangeBegin is specified, then the timeRange property is used to determine the chart's begin time. If the timeRange is -1, then all data older than timeRangeBegin is plotted. The data time range (which is used if timeRange = -1) is determined by the minimum and maximum timestamp found in the price trace's history table and current table. If both of those tables are empty, the chart uses the minimin and maximum timestamp of the first overlay trace that has its history table and/or current table attached to data. If the timeRange is greater than zero, then its value indicates the number of time units the chart should display. The units are determined by the timeRangeMode, as follows. If timeRangeMode is ... Then the timeRange units are ... ----------------------- -------------------------------- Continuous seconds Intra-day days, if < 900, else seconds Daily days Weekly weeks Monthly months Quarterly quarters (3 months) Yearly years Auto one of the above If timeRangeMode = Auto, and the data interval is one week, and timeRange = 12, the time range of the chart will be set to twelve weeks. The format used for timeRangeBegin and timeRangeEnd is YYYY-MM-DD HH:mm:ss, for example: 2005-07-28 14:58:00 The date can be omitted, for example: 14:58 But if any part of the date is specified, then the string must conform to the YYYY-MM-DD HH:mm:ss time string. The timeRangeBegin and timeRangeEnd properties can also specify milliseconds since Jan 1, 1970. This can be useful if either property is attached to a function that provides timestamps in that format. 6. Y Axis The stock chart supports y-axis autoscaling and multiranging, as in the trend graph, although the stock chart multirange can only be set to on or off. When on, it is equivalent to 'Classic' multiranging in the trendgraph: the y-range for the price trace is shown on outer labels on the y-axis, while the ranges for the overlay traces are shown as inner y-axis labels. No y-axis labels are displayed for an event trace. The stock chart also supports a yAxisPercentFlag property. If checked, each point on each trace is plotted as a percent change from the first (oldest) data point of the trace. The first data point is plotted as 0%. This is useful for comparing the performance of one stock to another stock or index. For that reason, it is most useful when used with yAxisMultiRangeFlag off, so that all traces are plotted against the same y-axis. 7. Overlay traces A chart can have zero to nine overlay traces. Each has its own history and current data table attachments. Typically, the price trace's history and current table will be used to determine the chart's data range and its time range mode (if timeRangeMode = Auto). However, if the price trace's data tables are both empty (not attached) then the first overlay trace that has data is used for that purpose instead. An overlay trace's type can be set to Line, Bar, or Event. For all types, the first column of the trace's historical and current data table must contain timestamps, as described earlier. For Line and Bar types, the second column in the data table must be a numeric value, and is used to supply the Y values for the trace. The Line and Bar types are intended for overlays that display other stock prices or indexes, trading volume, etc. For an Event trace, the second column can contain numeric values or strings. For each row in an event trace's data table, an event marker is drawn near the price trace, using the timestamp for the row. An event marker is a text rectangle containing the first character of the trace's label string. If the cursorFlag or mouseOverFlag is checked, and the mouse is positioned near an event marker, the corresponding value from the second column of the data table is displayed in the chart's mouseover text or it's legend. Event traces are not aggregated (see below). 8. Aggregation As mentioned earlier, if the price trace's data tables contain data at more frequent intervals than indicated by the timeRangeMode property the chart will aggregate the price trace data to match the mode. For example, if timeRangeMode is set to Weekly, but priceTraceHistoryTable contains daily prices, the chart will aggregate the daily prices into weekly prices as follows: open price for week W = open price for first trading day in week W high price for week W = highest price for all trading days in week W low price for week W = lowest price for all trading days in week W close price for week W = close price for last trading day in week W Similar aggregation is done for daily-to-monthly, weekly-to-monthly, monthly-to-yearly, etc. Only the price trace data is aggregated, since it is required to contain open/high/low/close price data. The overlay trace data is not aggregated, since the chart places no requirements on the overlay data (it could represent closing price, high price, average price or volume, etc). On a chart with aggregated price data, an overlay trace may plot multiple Y values at the same time (x) position. 9. Time Zone The time axis labels are affected by the local time zone, and the time zone information, if any, in the data timestamps. The timestamps in the data tables must be one of the following: 1. A string with no time zone, for example: Nov 30, 2005 10:00:00 AM 2. A string with a time zone, for example: Nov 30, 2005 10:00:00 AM EST 3. A timestamp of milliseconds since Jan 1 1970 GMT: 1133326800000 Internally, the stock chart converts types (1) and (2) into GMT (type 3), for efficiency. When a timestamp is displayed on the chart's time axis, legend, etc., it is converted from GMT back into a string. A timestamp of type (1) will be converted to GMT using the local time zone. So when the chart displays the timestamp, it will not be affected by time zone differences. In other words, if the timestamp string in the data is "10:00", the stock chart will display it as "10:00" A timestamp of type (2) will be converted to GMT using the time zone indicated in the string. So when the chart displays the timestamp, it will be affected by time zone differences. In other words, if the timestamp string in the data is "10:00 EST", and if the local time zone is PST, the stock chart will display it as "07:00". A timestamp of type (3) is already in GMT. So when the chart displays the timestamp, it will be converted to a string using the local time zone. The -timezone option can be used when starting the Display Viewer to change the local time zone to a different zone. This can be useful in situations like the following: - price data is from the NY Stock Exchange (US/Eastern time zone) - data timestamps are in GMT or contain a time zone designation - local time zone is US/Pacific - user wants chart to display times in US/Eastern In the above scenario, if the -timezone option is not specified, the chart will display the times as US/Pacific. The -timezone option can be used to display the times as US/Eastern. See the description of the timezone option for more information.

E11481: Graph axis labels now support value formatting

The RTView graphs now offer the option to apply number formatting to axes, values and labels. The trend graph (obj_trendgraph02) now includes the yAxisFormat and yValueFormat properties. The yAxisFormat property provides formatting for the y-axis. The yValueFormat property provides formatting for data values displayed in the legend and popup legend. The bar graph (obj_bargraph) now includes the yAxisFormat, yValueFormat, traceYAxisFormat, traceYValueFormat and labelFormat properties. The yAxisFormat property provides formatting for the y-axis. The yValueFormat property provides formatting for data values displayed on bars and in the legend and mouseOver tooltip information box. The traceYAxisFormat property provides formatting for the trace y-axis. The traceYValueFormat property provides formatting for trace data values displayed in the legend and mouseOver tooltip information box. The labelFormat property provides formatting for labels in situations where the label column is numeric. Labels may appear along the x-axis or in the legend and mouseOver tooltip information area. Note: The yValueFormat property supercedes and replaces the barValuePrecision property. The pie graph (obj_pie) now includes the valueFormat and labelFormat properties. The valueFormat property provides formatting for data values displayed on bars and in the legend and mouseOver tooltip information area. The labelFormat property provides formatting for labels in situations where the label column is numeric. Labels may appear in the legend and mouseOver tooltip information area. The radar graph (obj_radar) now includes the valueAxisFormat, valueFormat and labelFormat properties. The valueAxisFormat property provides formatting for the value axis. The valueFormat property provides formatting for data values displayed in the mouseOver tooltip information box. The labelFormat property provides formatting for labels in situations where the label column is numeric. Labels may appear along the radial axis or in the legend and mouseOver tooltip information area. The XY graph (obj_xygraph) now includes the xAxisFormat, yAxisFormat, xValueFormat, yValueFormat and labelFormat properties. The xAxisFormat and yAxisFormat properties provide formatting for the axes. The xValueFormat and yValueFormat properties provide formatting for data values displayed in the legend and popup legend. The labelFormat property provides formatting for labels in situations where the label column is numeric. Labels may appear in the legend and popup legend.

Bar Graphs

B11780: Display Server Bar Graph now sets correct drill down subs

In the prior release, the Display Server assigned incorrect table substitutions ($col1, $celldata, etc) if a drill down was performed from the trace on a Bar Graph that also displayed bars. This has been fixed.

Trend Graphs

E11095: Trace color and style change color based on alarm threshold

The Trend Graph and XY Graph now allow the color and style of trace lines to be changed when an alarm threshold is crossed. To support this feature, the following properties were added to the Trend Graph and XY Graph: valueHighAlarmTraceColor valueHighWarningTraceColor valueLowAlarmTraceColor valueLowWarningTraceColor valueHighAlarmTraceStyle valueHighWarningTraceStyle valueLowAlarmTraceStyle valueLowWarningTraceStyle For example, if valueHighAlarmEnabledFlag is checked, any segment of a trace line that is above valueHighAlarm is drawn using valueHighAlarmTraceColor and valueHighAlarmTraceStyle. However, if valueHighAlarmTraceStyle is set to -1, the color of the line segment will not be set to valueHighAlarmTraceColor. This is used to support the behavior of prior releases, where only the marker color and style changed when an alarm threshold was crossed.

Pie Graphs

E11533: Gradient option added for Pie Graph wedges

Pie Graph wedges may now be drawn with a gradient by setting the wedgeGradientFlag property.

TIBCO EMS Management Application

B11691: Window icon no longer missing for drill down windows

In previous releases, drill down windows did not use the correct window icon if the Drill Down Windows Always on Top option was deselected. This has been fixed.

E11726: Print option added to popup menu

A "Print ..." menu option has been added to the popup menu that appears on a right mouse press in the main display area. Any display may be printed.

B11670: EMS manager can now be opened in a directory with PANELS.ini

In previous versions, the EMS Manager could not be opened from a directory where a PANELS.ini was present. This behavior has been fixed, and the EMS Manager now references EMSMGR_PANELS.ini instead of PANELS.ini.

TIB EMS Admin Monitoring

E11705: Server topology display added to EMS Manager

A Server Topology display has been added to the EMS Manager. This display shows all servers and any routes that are defined between the servers. An arrow indicates the direction of an "Active" route. A server is colored green if its state is active, red if it is inactive.

E11732: Color indicates status of EMS Servers

In the All Servers display, servers with state "No Connection" are now shown in red.

E11746: -usehawk option added to control accessibility of Hawk displays

The "usehawk" option is now available in the EMS Manager EMSMGR.ini file to control whether Hawk displays are to be provided. This option functions independently from the JMSADM datasource. Even if Hawk is being used to discover servers, you can disable the Hawk Host Details page by setting "usehawk false" in the EMSMGR.ini file. Conversely, if Hawk is NOT being used to discover servers, you can still enable the Hawk Host Details display by setting "usehawk true".

TIB EMS Administration

E11538: Name is automatically generated for new route

In previous versions of the EMS Manager, it was possible to enter an arbitrary name for a route when it was created. However, JMS requires that the route name be the same as the server name to which the route makes a connection. In this version, the route name is automatically set to be the server name of the target server for the newly created route. The Route Name field is editable after selection, so that the route name can be changed if the server is offline but the server's name is known.

E11718: Admin functions can be performed via the Data Server

In previous versions of the EMS Manager a problem existed in that you could not perform admin functions if you were using the Data Server to connect to the Server Metrics. This problem has been fixed.

Tree Handling and Navigation

E11699: EMS Manager no longer crashes if used without navigation tree

If the EMS Manager applet was used without a navigation tree, a crash resulted. This has been fixed.

B11662: Navigation tree redraws correctly on refresh of applet

A problem with refreshing the EMS Manager applet has been fixed. Previously, a grey area would replace the navigation tree in some cases.

Version 3.0e1 Release Notes

RTView

Applet Functionality

E11599: AWT examples have been removed

The AWT examples have been removed from the RTView product.

Viewer Application Body

E11602: Single-click for drill down and commands is now default

The Single-Click for Drill Down and Commands option is now enabled by default. This means that drill down and command execution in the Display Viewer and Display Viewer applet now occur when you single-click instead of when you double-click. You may disable this feature in the General tab of the Application Options dialog or by specifying -nosingleclick on the command line.

Editing Functionality

E11561: Click now deselects objects

When multiple objects are selected, clicking again on one of the objects will now deselect it.

E11559: You can now select multiple objects using shift-click

You may now select multiple objects by holding the shift key down while clicking. This works just like the ctrl-click functionality added in version 3.0d1.

Functions

E11650: New isWindowsOS function has been added

A new function, isWindowsOS, has been added to RTView. This function returns 1 if RTView is not running in an applet and is running on a Windows operating system. Otherwise, it returns 0.

E11633: Set Substitution function is saved at top of display file

Saving rtv files has been enhanced so that Set Substitution functions now appear before any other object information. Get Substitution functions appear after Set Substitution functions and before all other object information.

E11625: Sort Table function now sorts numeric string columns properly

The Sort Table function has been enhanced to properly sort number string columns.

B11598: Percent function no longer ignores min value

A bug where the percent function was ignoring the Min Value has been repaired. If the Min Value is non-zero, the percent calculation is now correct.

B11552: Pivot on Unique Values no longer displays error

A bug in the Pivot on Unique Values function has been repaired. The problem was occurring when the Restrict to Name List field was set to 1 and the Name List value was not defined.

E10464: Average, Max, Min and Sum functions now apply to tabular data

The Average, Max, Min and Sum functions have been enhanced to accept an entire table of input data instead of just a single input data column. These functions can now operate across a table to return a column of result values, one value for each row, or they can operate down a table to return a row of result values, one value for each column. Users may specify a label for the result row or column. If the result is a row of values, users may also specify a column to be populated with the result label. The Combine function has been enhanced to allow tables to be combined vertically, appending rows of one table under the rows of another table. The original horizontal combine, appending columns of one table to the right of another table, has been improved to allow merging of tables with different numbers of rows. Details: The Average function calculates the average within each column or row of the specified Table. All numerical columns will be included in the calculation. To get a column of result values, one value for each row, set Return Column to 1. To get a row of result values, one value for each column, set Return Column to 0. Use Result Label to specify a label for the result row or column. To have the Result Label placed in a particular column (when Return Column is 0), specify a column name in Result Label Column. This function returns a table. The Max function finds the maximum value within each column or row of the specified Table. All numerical columns will be included in the calculation. To get a column of result values, one value for each row, set Return Column to 1. To get a row of result values, one value for each column, set Return Column to 0. Use Result Label to specify a label for the result row or column. To have the Result Label placed in a particular column (when Return Column is 0), specify a column name in Result Label Column. This function returns a table. The Min function finds the minimum value within each column or row of the specified Table. All numerical columns will be included in the calculation. To get a column of result values, one value for each row, set Return Column to 1. To get a row of result values, one value for each column, set Return Column to 0. Use Result Label to specify a label for the result row or column. To have the Result Label placed in a particular column (when Return Column is 0), specify a column name in Result Label Column. This function returns a table. The Sum function calculates the sum within each column or row of the specified Table. All numerical columns will be included in the calculation. To get a column of result values, one value for each row, set Return Column to 1. To get a row of result values, one value for each column, set Return Column to 0. Use Result Label to specify a label for the result row or column. To have the Result Label placed in a particular column (when Return Column is 0), specify a column name in Result Label Column. This function returns a table. The Combine function combines Table 1 and Table 2 into a single table. When Combine Rows is 0, the combined table will contain the columns from Table 1 followed by the columns from Table 2. When Combine Rows is 1, the combined table will contain the rows from Table 1 followed by the rows from Table 2. In addition, when Combine Rows is 1, set Ignore Column Names to 0 to reorder the columns of Table 2 so its column names match Table 1 before merging rows. Set Ignore Column Names to 1 to merge rows without trying to match up columns by name. This function returns a table.

Security

E11566: User and role definitions now support substitutions

User and role definitions now support substitutions. RTView will automatically define 2 substitutions if the application was started with the login: $rtvuser - the user name from the login $rtvrole - the role from the login Additionally, you may specify substitutions to set based on a user or role. The syntax for adding substitutions to a user definition: <user> <name>admin</name> <password>admin</password> <sub name="$sub1" value="value1" /> <sub name="$sub2" value="value2" /> <role>admin</role> </user> The syntax for adding substitutions to a role definition: <role> <name>admin</name> <sub name="role1sub1" value="role1value1"/> <sub name="role1sub2" value="role1value2"/> <displays> <include>ALL</include> </displays> </role>

E11567: No exceptions are generated if no roles are defined for a user

In 3.0d1, RTView would throw an exception if the user name from the login did not have any associated roles. This has been fixed. The fix is to not validate the login if the user does not have any associated roles.

B11555: Users can not write files they do not have permission to view

The role based security has been enhanced so that users are not allowed to save over files they are not allowed to view.

B11553: Backup of users.xml is always generated

In version 3.0d1, the backup of users.xml was not created if there was a path for users.xml. This has been corrected.

Image Server

B11651: Local variable value of text edit controls displayed

In prior releases, if the value property of an obj_c1textedit_i or obj_c1textedit_d object (integer and double edit boxes) was attached to a local variable, the value was not displayed in an imageserver display. The problem did not occur with obj_c1textedit.

B11635: Characters no longer mishandled in drill down from Ajax table

In Image Server displays in the previous release, if a drill down was performed from a cell in an Ajax table object and the cell text contained the <, >, &, or ' characters, substitute strings that used the cell text (for example, $celldata) were assigned incorrect values. This problem has been fixed.

B11634: Default table subs are now mapped to local vars

In prior releases, if an object's drill down target had one or more substitute strings with no values assigned, then default substitutions (for example, $col1) were sometimes assigned incorrect values when the drill down was performed in an Image Server display. This problem has been fixed.

E11615: Support for the -nohtmlcontrol option has been removed

The -nohtmlcontrol option is no longer supported by the Image Server.

B11614: $value now used in display name for drill down from controls

In prior releases, a drill down from a control object in an Image Server display did not replace $value in the drill down display name with the control's current value. This problem has been fixed.

B11613: Edit box is no longer updated while focused

In the previous release, the Image Server would refresh the text in an edit box control even if the edit box had keyboard focus, possibly overwriting text the user was entering. Now, an edit box will be refreshed only if it does not have focus.

B11604: Button value now updated in Image Server displays

In the prior release, the value of a button control's valueToSet property was not updated on Image Server displays, it always kept its initial value even if attached to a local variable. This has been fixed.

E10318: Logout is now available from the Permission Denied screen

When the Image Server displays a "Permission Denied" screen to the user, indicating that the requested display is not viewable given the user's current role, it will also display a Log Off button. This allows the user to login with different credentials.

B11637: Right-clicking inside control object no longer causes problems

In previous versions, the right-click menu in the Image Server would appear in the top left corner of the generated image if the user right-clicked inside a control object. This behavior has been fixed.

E11568: Export to Excel option has been added to Image Server tables

Displays generated by the Image Server now support a context menu. The menu appears when the user right-clicks anywhere in an Image Server display, and contains the entries listed below. 1. Refresh: Refresh the display, without reloading the HTML page 2. Export Table to Excel: Export the selected table object to an Excel spreadsheet, using HTML format. On a Windows client with Excel installed, the spreadsheet will be opened in Excel. If there is no table object under the cursor, this item is grayed-out. 3. Export Table to HTML: Export the selected table object to an HTML table, which will be displayed in a new browser window. If there is no table object under the cursor, this item is grayed-out. 4. Log Off: Log off the current user. This item will appear only if the Image Server login feature is enabled. To open the browser's context menu instead of the Image Server menu, hold down the shift key while right-clicking.

B11575: Column header alignment is now correct in javascript table

In Image Server displays, all table column header text is now center aligned, consistent with the Display Builder and Display Viewer.

B11576: Column width now matchs display if table initially empty

In prior releases, the width and text alignment of columns in the javascript table in Image Server displays was sometimes incorrect, if the table was initially empty, or if columns were added after the table was initially displayed. This has been fixed.

B11582: Mouseover tooltips now consistent

The mouseover tooltips shown in Image Server displays for the bar, radar, and pie graph objects are now consisitent with those shown by the Display Builder and Display Viewer.

B11563: getimage.jsp no longer contains BOM character

On of the Imager Server servlet jsp files, getimage.jsp, contained a BOM character which caused it not to load correctly on some Unix web servers. This has been fixed.

B11558: Chained substitutions with spaces now have correct format

In prior releases, if a control object was configured with a drill down action that used $value in multiple substitutions, and if the control's value contained a space, the 2nd and any subsequent substitutions using $value would be enclosed in single quotes. This has been fixed.

B11557: Chained subs now work in Image Server for in-place drill down

In previous versions, the chained substitutions did not work properly in the Image Server when the drill down target was set to the current display and window. This has been fixed.

E11541: Page no longer reloaded when you drill down to same display

The HTML page for an Image Server display will be updated in place when the user performs a drill down to the current display and panel, or clicks on a control that sets a local variable. In previous versions, these operations would reload the HTML page, causing the display to flash and resetting scrollbars. Note that this change can affect the behavior of the browser refresh button. Since the HTML page is not reloaded in the situations described above, the URL for the browser page is also unchanged. So, a subsequent click on the browser refresh button will reload the page using the initial URL, which will not include any substitutions or local variable changes made by the drilling down to the current page.

E11334: Role based security now supported in Image Server

A. INTRO The Image Server supports the RTView role based security. The rtvimage servlet can be configured to require a client to enter a username and password before viewing any displays from the Image Server. These credentials are validated using the information in the users.xml and roles.xml files or, if defined, custom user manager and role manager classes. B. SETUP By default, the role management features are disabled in the rtvimage servlet. They are enabled as follows: 1. Edit the rtvimage.properties file, found in the demos/rtvimage directory. Change the following line: LoginEnabled=false to this: LoginEnabled=true 2. Run the make_war script 3. Install the new rtvimage.war file on your application server (by running install_to_tomcat.bat, for example). C. LOGIN TO SERVLET When a client browser opens a URL that references the rtvimage servlet (for exmaple, http://myserver/rtvimage/index.html), a login prompt will appear. After the user enters a username and password, these are validated by the Image Server, in the same manner as in the Builder/Viewer. If the credentials are valid, and the username supports multiple roles, the user will be prompted to select a role from a dropdown list. After a valid username and password are entered, the page that was specified in the URL will be displayed in the browser. Otherwise, the user will be prompted to retry logging in. A login remains valid for the life of the client session. A session ends for several reasons, such as closing the browser window (for some browsers, but not all) timeout after a period of client inactivity (typically 30 minutes), or a restart of the app server. A user can explicity logout by clicking the Log Off button in the left frame of rtvimage/index.html, or by browsing to rtvimage/logout.jsp. D. EXCLUDED DISPLAYS According to the role assigned to the user, certain RTView display files may be excluded. Excluded displays will not appear in the display list shown in the left frame of rtvimage/index.html. If a users attemps to drilldown to an excluded display, or specifies an excluded display in a URL, the following message will appear in the browser: Cannot open file <filename> Permission denied for <rolename> E. SUBSTITUTIONS As in the Builder/Viewer, once a user has logged in and been assigned a role, the Image Server will assign the corresponding values to the $rtvuser and $rtvrole substitutions. Any custom substitutions defined for the user and role (in users.xml, roles.xml, or the custom user/role manager classes) will also be defined. These substitutions may affect the displays viewed by the Image Server client. F. MODIFYING CUSTOM HTML Custom HTML files that contain multiple frames using the rtvimage servlet may need to be modified for best results, if the servlet login feature is enabled. Otherwise the login prompt may appear simlutaneously in multiple frames. This can be avoided as follows: 1. If the custom html file is named custom_frames.html, rename it to frame_display.html (for example). 2. create a new custom_frames.html with this content: <html> <script> location.href = "login.jsp?destPath=frame_display.html"; <script> <html> Then, when a user browses to custom_frames.html, the login prompt will appear instead. If a valid login is entered, the browser will then proceed to the custom frameset. G. CUSTOM USER/ROLE MANAGER As in the Display Builder and Display Viewer,the Image Server will use custom user and role manager classes to validate username and passwords, and to provide role names, and custom user and role substitutions. Methods were added to the GmsCustomRoleManager class to allow a single role manager to provide information about multiple roles, queried by role name.

B11153: Commands now supported by the Image Server

The Image Server now supports the following system commands: Drill Down or Set Substitution, Execute Custom Command, Execute URL, Open Browser. The HAWK and RV commands are also supported. If an object is configured with both a command and a drilldown target, a left click on the object will execute the command, while a right click will open the context menu, from which the user can select the command or the drilldown. A command is initiated by clicking on a display object, but the command is actually executed by either the client browser or by the Image Server, as follows: The HAWK and RV commands are always executed by the Image Server. The Drill Down or Set Substitution, Execute URL, and Open Browser commands are always executed by the client browser. A Custom command can be configured to be executed by either the browser or the server, as described below. In the Image Server, custom commands are supported by the file named rtv_custom.js. This file contains the following 2 javascript functions: 1. function rtvGetInvokeCommandOnClient (commandString) This javascript function should return false if the custom command named should be executed by the Image Server. It should return true if the command should be executed by the browser, using the rtvGetInvokeCommandOnClient function below. The default implementation of this function always returns false, so by default all custom commands are invoked by the Image Server. Custom commands that are to be executed by the Image Server must be implemented in MyCommandHandler.java, and MyCommandHandler.class must be found in the Image Server's classpath. See the documentation for more details. 2. function rtvInvokeCommand (commandString, valueString) This javascript function should implement each commandString for which rtvGetInvokeCommandOnClient(commandString) returns true, as described above. The default implementation of rtvInvokeCommand() does nothing. For example, a command named client_echo, which simply displays its arguments in a browser dialog, could be implemented in rtv_custom.js as follows: //////////////////////////// function rtvGetInvokeCommandOnClient (commandString) { switch (commandString) { case 'client_echo': // the custom "client_echo" command should // be run in the client browser, so // return true here return true; default: // all other custom commands should be // run on the server return false; } } function rtvInvokeCommand (commandString, valueString) { switch (commandString) { case 'client_echo': alert("ECHO: " + valueString); break; } } //////////////////////////// Note: The rtvInvokeCommand function is invoked in a hidden IFrame that is a child of the Frame containing the Image Server display, which can be referenced in script as "window.parent". The default implementation of rtv_custom.js is found in rtvimage.war. To replace it, rtvimage.war must be rebuilt and reinstalled on the application server. See the documentation for more information. PAL: 1. Supported browsers are Internet Explorer 5.5 and newer, Netscape 7.1 and newer, and Firefox 1.0 and newer. However, Netscape and Firefox may crash occasionally when closing the browser or navigating between displays. 2. The Image Server does not support these commands: Beep, Play Audio File, Run DOS Command or Unix Shell. 3. Since objects in an Image Server display can now support a command and/or drilldown when clicked, the HREF of these objects in the generated HTML map no longer contains the URL for the drilldown display. Instead it merely contains the URL of the current display.

XML Server

B11450: New option added to send all data over the socket

In previous releases, the XML Server running in socket mode only sent changed data to clients in order to optimize the amount of information being sent over the socket. This can be a problem if you want to plot repeated data in the trend graph. A new option has been added to send all of the data over the socket regardless of whether or not it has changed. To send all data, deselect the Send New Data Only checkbox in the XML Server or use the -sendalldata command line option.

Data Sources

SQL Data Source

E11584: Default update rate for SQL data attachments is now static

In previous versions of RTView, the default Update Mode for SQL data attachments was Run Query Every Update Period. Due to the static nature of SQL data, the default has been changed to Run Query Once (Static Data). This change will not affect existing data attachments.

B11577: \ in column name no longer causes error in generated query

In previous releases of RTView, an invalid query was generated if a column name contained a \. This has been fixed.

E11453: User login credentials now passed into SQL database connection

User login credentials can now be passed into the SQL database connection. To specify that a connection should use the user credentials, select the Use Client Credentials checkbox in the Add Database dialog. If this is selected, the user credentials from the RTView login will be passed into the database. The User Name and Password from the Add Database dialog will not be used. If Use Client Credentials is selected, the connection will only be made if the application is running with the login enabled. When using this feature with the XML Server, you must use the -passclientlogin command line option or select the Use Client Credentials for Database Login option in the XML Server interface in addition to running the Display Viewer or Display Viewer Applet with the login enabled. When using this feature with the Image Server, you must use the -passclientlogin command line option in addition to setting the login enabled flag in the servlet.

TIBCO Hawk Data Source

E11560: TIBCO JMX Microagent now works in Attach to Data Dialog

The TIBCO JMX Microagent now works correctly in the Attach to TIBCO Hawk Data dialog.

E11113: Hawk 4.5 is now supported.

RTView has been enhanced to provide support for attaching to TIBCO Hawk using the TIBCO EMS transport. The default transport still uses a TIBCO Rendezvous rvd transport. To enable the TIBCO EMS transport, select EMS from the Transports menu on the Hawk Communications tab of the Options dialog. You may enter the URL of the EMS Server and a user name and password to log in. If left blank, the following URL will be used: tcp://localhost:7222 In order to use the TIBCO EMS transport, you must also set the TIBJMS_ROOT environment variable to the location of your TIBCO EMS installation. This will already be setup for you if you entered the location of your TIBCO EMS installation in the windows installer.

OLAP Data Source

E11355: Supported added for Applix TM1 aliases, views, and subsets

The OLAP datasource has been enhanced to support several advanced features of Applix TM1, including aliases, views, and subsets. In addition, the OLAP data attachment dialog has been improved to allow selection of elements from multiple dimensions on a single axis (column or row). This enhancement allows crossjoin queries to be configured easily, without using MDX query syntax. These are described in detail, below. A. Configuring OLAP database connections To use OLAP data in RTView displays, an OLAP database connection must be defined. This is done from the OLAP tab in the Builder's options dialog. Two types of OLAP connections are now supported: 1. ODBO 2. Applix Java API ODBO allows connection to any OLAP provider that supports Microsoft's ODBO interface. The Applix Java API supports connections to Applix TM1. Since TM1 supports ODBO, either type of connection can be used for TM1. However, the Applix Java API supports aliases, views, and subsets, but ODBO does not. Also ODBO supports MDX queries, but the Applix Java API does not. The setup for an ODBO connection is unchanged from the previous release. To setup a Applix Java API connection, a database name, user name, and password must be configured. These items are also required for an ODBO connection. For a Applix Java API connection, the following additional items must be configured: TM1 Admin Host: If the TM1 Admin Server runs locally, leave this field blank. Otherwise, enter the name of the host on which the TM1 Admin Server is located. If the Admin Server is not using the port number, append a colon followed by the port number, for example: MyAdminServerHost:4567 See the Applix TM1 documentation for more information on the TM1 Admin Server. TM1 Server Name: A TM1 OLAP database is accessed through a TM1 server. A combo box displays the available servers. If the required name is not displayed, it can be entered manually. An Applix TM1 installation includes a jar file named TM1JavaApi.jar. This file should be included in the RTV_USERPATH environment variable. For example, on Windows: set RTV_USERPATH=C:\Program Files\Applix\bin\classes\TM1JavaApi.jar If TM1JavaApi.jar cannot be found at runtime, the following error will occur when RTView attempts to make a Applix Java API connection: ERROR loading com.sl.gmsjtm1.GmsTm1Connection, java.lang.NoClassDefFoundError B. OLAP Data Attachment Dialog The OLAP Data Attachment Dialog has been modified. After selecting an OLAP database name, the connection type (ODBO or Applix Java API) is displayed in a combo box. The connection type cannot be changed. The items displayed in the Data Attachment Dialog vary according to the connection type, as follows. 1. "Enter MDX Query" checkbox This checkbox will appear only if the connection type is ODBO, since MDX queries are not supported by the Applix Java API. 2. "Use TM1 View" checbox This checkbox will appear only if the connection type is Applix Java API. A View is a predefined query that is stored within a cube in a TM1 server. After selecting a cube from the Cube Name combo box, the views defined for the selected cube are displayed in the View combo box. Select the desired view. No other configuration is required. C. Select Dimensions Dialog The Select Dimensions Dialog is used to select row, column, and slicer dimensions for an OLAP query. It has been modified to support TM1 aliases and subsets, and to allow selection of elements from multiple dimensions on a single axis. In TM1, an alias is an alternate set of labels for the members of a dimension. For example, a Month dimension might contain members whose labels are the numbers 1 through 12. An alias named English could be defined on the Month dimension, with values January, February, etc. Another alias named Spanish could be defined on Month using the Spanish month names. In the Select Dimensions Dialog, a tree in the left panel displays dimensions as the top-level children of the root node. Right click on a dimension node and, if the connection type is Applix Java API, a popup menu appears. The menu contains a radio button for each alias defined for the dimension. Select the desired alias, and each child node of that dimension will display the corresponding alias label. The selected alias is also used when the query is performed, so the alias labels appear in the column or row labels. Select from the popup menu to clear the alias setting. In TM1, a subset is a predefined set of elements from a dimension. If the same set of elements is frequently used in queries, it can be convenient to define a subset and use it when configuring queries, instead of selecting the individual elements each time. In the Select Dimensions Dialog, a dimension's subsets, if any, appear under a child node of the dimension, labeled "Subsets". This is supported only if the connection type is Applix Java API. In previous releases, the Select Dimensions Dialog only allowed elements from one dimension to be selected for a column or row. Now it allows selection of elements from multiple dimensions. This is supported for both OLAP connection types. Elements that belong to the same dimension are automatically grouped together in the Selected Dimensions list. After using the Move Up/Down buttons, the elements may also be regrouped. The Select Dimensions Dialog does not allow elements from a dimension to be added to an axis (column, row, slicer) if the dimension is already in use on another axis. In this case, the Add button is disabled. D. Slicer For ODBO connections only a single slicer item can be selected from the OLAP Data Attachment dialog. For Applix Java API connections a single item from each dimension, which is not used as a column or row dimension, can be selected. In both cases, any dimension that is not specified on the column, row, or slicer axis is used an implied slicer. For TM1, the first child node of the dimension, as displayed in the dimension tree, is used as that dimension's element in the implied slicer. E. OLAP Datasource options The OLAP Datasource supports the following command-line options: -olaptrace This option causes diagnostic messages to be printed to the console when OLAP database connections are made, closed, or lost. -olaptime This option causes diagnostic messages to be printed to the console when each OLAP query is performed -olapretry:nnn This option enables OLAP connection retries. If an OLAP connection fails initially, or (for Applix Java API connections only) is established initially but is later lost, a reconnection will be attempted every nnn seconds. By default, retries are disabled.

JMS Data Source

E11617: Queue browsing is now supported

The JMS Datasource has been enhanced to support browsing the contents of a queue. In the JMS data attachment dialog, it is possible to select either a Topic or a Queue Browser. If a Topic is selected, then the user may enter the name of a Topic, or select one that was previously registered in the JMS Options dialog. A listener for the content of the given topic will be established and all subsequent messages on that topic will be received and displayed in the associated object. If a Queue Browser is selected, the user must enter the name of the queue that is to be browsed. Once entered, a Queue Browser will be created on that queue and the contents of that queue will be polled on every update, but no more often than every five seconds. The contents of the queue at time of the polling are read non-destructively and are displayed in the associated object. Note that this technique can only show the contents of the queue at a specific instant; queued messages that come and go between polling times will not appear in the browser.

JMS Admin Data Source (for TIBCO EMS only)

E11534: New JMS Admin Data Source implemented

The administration and monitoring functions of the TIBCO EMS Manager application have been packaged into an RTView datasource module, providing greater flexibility than previously available. By providing these functions within the datasource, it is now easier to develop displays that access monitoring metrics as they are immediately available within the RTView Builder application. Additionally, the XML Data Server and Display Image Server can be used to present monitoring information easily with no special configuration required.

Sample Displays and Applications

B11268: EMS Manager features now work with shortcuts and launchers

In previous versions, when you started the ems manager from a shortcut or from the launchers, the Edit Display option and the topic and queue simulators would not work unless you had %RTV_HOME%\bin in your PATH environment variable. This has been fixed.

Datasource Tutorial Example

E11609: Datasource demos have been combined into a single tutorial

A Data Source tutorial that illustrates the use of the RTView data sources has been added to the deliverable. In the previous release the data source example displays were organized in a separate directory for each data source. The example displays have been consolidated into a single directory, demo/dstutorial. The Data Source tutorial is designed to be run in the Display Viewer. However, you may also want to view the displays for the data source of interest in the Display Build to view the data attachments.

Object Library

E11632: Default appearance of tables and graphs has changed

The default appearances of the graphs and tables have been modified to be more consistent.

E11205: Meter graphics and properties have been enhanced

The objects of the Meters palette have been enhanced so that they all have 3 configurable alarm ranges and better graphical properties.

Tables

E11556: Copy table values to Excel now includes column headers

Column headers are now copied along with the table content when performing "Copy to Table Values" on tables in RTView.

E11524: Numeric column formatting now supported

The option to apply a format to a column of numbers has been added to the table object (obj_table02). The columnFormat property provides a dialog for associating number formats with particular columns. The Column Format value accepts format strings similar to those used in the Format Number and Format Table Columns functions. The Column Format can be specified as a Java format specification, or with the following shorthand: $ for money values, $$ for money values with additional formatting, or () for non-money values, formatted similar to money. Both positive and negative formats can be supplied, for example: #,###;(#,###). Additionally, text columns containing String data where all the values happen to represent numbers are now treated as if they were number columns. Number formats may be applied to these String columns. The values in these columns will also be treated as numbers for the purpose of sorting. For example, a String column that used to be sorted alphabetically as 11, 5, 9 will now be sorted as 5, 9, 11.

B11298: Column header alignment now correct for multi line tet

A formatting bug in multi-line table column headers has been repaired. Inserting \n tokens into the column header strings for the obj_table02 table object allows the header to have multiple lines. Previously, only the first line of the header was center justified, with subsequent lines left justified. All lines are now center justified.

Object Grid

E11645: New property fgEdgeColor added to object grid

An edge line has been added around the object grid (obj_objectgrid) and a new property, fgEdgeColor, has been added to control the color of this edge line.

Graphs (General)

B11605: Graph images now found in subdirectories

A bug that was causing graph images from subdirectories to not load has been repaired. This bug was present in the background images for graphs as well as the bar graph's bar images.

E11514: Bar, xy, radar and pie graphs now support columnDisplayNames

The option to display alternate column titles has been added to bar, xy, pie and radar graphs. For any of these graphs, use the columnDisplayNames property to to associate alternate display names with columns in the graph's data.

E11476: Transparent colors supported for all filled traces

The option to fill trace areas with gradients and transparent colors has been added to bar, trend, xy and radar graphs. For any of these graphs, set the traceFillStyle property to specify the style for filling under the traces. The options for the traceFillStyle property are None, Solid, Transparent, Gradient and Transparent Gradient. The Transparent and Transparent Gradient options for the traceFillStyle property are not supported by the AWT applet.

E11478: Filled trace areas supported in bar, trend, xy and radar graphs

The option to fill the trace areas has been added to bar, trend, xy and radar graphs. For any of these graphs, set the traceFillStyle property to Solid to fill under the trace with a solid color. Set traceFillStyle to None to remove the fill.

E11433: Gradient background added to legend for all graphs

Gradient backgrounds have been added to the legends of the RTView graphs. For any graph, set the legendBgColor property to a color and check the legendBgGradiendFlag property to put a gradient into the background of the legend.

E11301: Bar, pie, radar, xy graphs now support plotting numeric text

Support for converting string data to numbers has been added to the bar, pie, radar and xy graphs. The ability to specify which column should be used for labels has also been added. For any of these graphs, set the labelColumnName property to the name of a data source column to designate that column as the source for labels. The column may contain any type of data. If the labelColumnName property is left blank, the first non-numeric string data column will be used for labels. For bar graphs, the labelColumnName property designates the bar labels and the traceLabelColumnName property designates the labels for traces plotted within the bar graph.

Bar Graphs

B11627: X-axis clipping bug has been fixed

A bug that was clipping the bar graph's leftmost x-axis label has been repaired.

B11596: Bars now correct if yAxisAutoScaleMode and drawWaterfallFlag on

Two bugs in the bar graphs have been repaired. The first was an inconsistency between waterfall and stacked graphs in the axis range when yAxisAutoScaleMode is on. The axis for waterfall bar graphs did not always include zero while zero was always included in stacked graphs. Waterfall bar graphs now always include zero in the axis range. The second bug occurred in waterfall bar graphs when using a non-zero yValueMin for the axis range with yAxisAutoScaleMode set to Off. In this situation, the bars are now drawn correctly.

B11529: labelTextColor now applies to the x-axis

A bug that was preventing the labelTextColor property from being applied to the x-axis text in the bar graph has been resolved. A bug that was preventing the labelTextColor property from being applied to the x-axis text in the bar graph has been resolved.

TIBCO EMS Management Application

E11286: Built-in displays are now available using Edit Display

It is now easier to edit the EMS Manager built-in displays along with user-customized displays. All the built-in displays are available from the Edit Display popup menu option in the EMS Manager. Also, the JMSADM datasource is available from within the builder, so the data attachments are all available for selection during editing, without any special procedures.

E11287: The EMS Manager displays now work with the Image Server

The EMS Manager Displays now work with the Image Server. Since the monitoring metrics are now obtained via the JMSADM datasource, all displays are viewable in the standard way.

E11288: The EMS Manager displays now work with the XML Server

The EMS Manager Displays now work with the XML Server. Since the monitoring metrics are now obtained via the JMSADM datasource, all displays are viewable in the standard way.

E11170: EMS Manager support for applets improved

It is now possible to run EMS Manager displays in an applet without requiring the use of the navigation tree. Previously one display had to be cached using the navigation tree (the ems_allservers_api All Servers Display). This is no longer required.

EMS Manager Configuration

E11487: TIBCO EMS Servers Option Dialog tab added

The TIBCO EMS Servers Option Dialog tab is now provided in the RTView Builder to allow a user to add, remove, or edit EMS server definitions that will be stored in the servers.xml file. A button on this dialog allows the user to save the modified servers.xml file.

E11591: TIBCO EMS Administration Options Dialog tab added

The TIBCO EMS Administration Option Dialog tab is now provided in the RTView Builder to allow a user to modify and apply options that are relevant to TIBCO EMS monitoring and administration.

E11653: Option added to control the rate at which server metrics apply

Previously, all EMS Servers were monitored at a rate of once every 2 seconds. In this version, an option has been added to control the rate at which server metrics are polled. Any of the RTView applications that access the TIBCO EMS Admin metrics can be started with the -jmsadm_metrics_period:N option to set the period for updates to N milliseconds. The default is 2000 milliseconds (or 2 seconds). This option will be saved in the JMSADMOPTIONS.ini file if the builder is started and used to Save options.

TIB EMS Admin Monitoring

E11238: Browsing message content of queues is now supported

The EMS Manager has been enhanced to provide the ability to browse the contents of a selected queue. In the Monitor Queues display for any server, the user may select a specific queue, then click the button "Browse Selected Queue". A new window will appear that will show the contents of the queue each time it is polled. Polling occurs at the update period of the EMS Manager, but no more often than every five seconds.

E11618: Browsing message content of topics is now supported

The EMS Manager has been enhanced to provide the ability to browse the contents of a selected topic. In the Monitor Topics display for any server, the user may select a specific topic, then click the button "Show Selected Topic". A new window will appear that will show the Topic messages as they are received by the EMS Manager. Up to 100 messages may be displayed, with each new message appearing at the top of the table in this window.

Version 3.0d1 Release Notes

RTView

General

E11349: deleteOnExit() method is no longer used

The File.deleteOnExit() method was used by several classes in RTView in order to delete temporary files that are created when writing XML. This method is no longer used, since it causes a memory leak according to Sun bug #4513817. This may result in the occasional temporary file being left on your system if you unexpectedly terminate any RTView application while it is outputting an XML file.

Multi-Panel Frameworks

B11336: Panels no longer lose aspect ration when resizing

Two new attributes can be specified in the PANELS.ini file: 1. minWidth: This attribute can be specified for a BorderPanel in PANELS.ini. It sets the minimum width for a BorderPanel, in pixels. The default value is 300. The minimum height is determined by the min width and the overall aspect ratio of the panels contained in the BorderPanel. The minWidth attribute can be used to prevent the Viewer from being resized so small that the displays in the BorderPanel are unreadable. Example: <BorderPanel minWidth="500"> <RTViewPanel region="north" display="title.rtv"/> <RTViewPanel region="center" name="main" display="init.rtv"/> </BorderPanel> 2. scrollbars: This attribute can be specified for an RTViewPanel in PANELS.ini to control the visibility of scrollbars in the panel. The permitted values are "as-needed", "never", and "always". The default value is "as-needed". In some cases, setting the scrollbars attribute to "never" on title or footer panels can improve the resize behavior of the Display Viewer. Example: <BorderPanel> <RTViewPanel region="north" display="title.rtv" scrollbars="never"/> <RTViewPanel region="center" name="main" display="init.rtv"/> </BorderPanel>

B11207: Loading new display in border panel no longer causes resize

A bug in multi-panel displays was introduced in 3.0c1 which caused erroroneous drilldown and resizing behaviour. If a display was replaced in one panel of a multi-panel display, the entire set of displays was resized incorrectly. This has been fixed.

E11229: Memory usage reduced for tabbed panels

Memory usage for tabbed panels has been significantly reduced by destroying the pixel buffers for panels that are not visible.

E11198: Tree nodes without associated displays are now supported

In the panel configuration file, PANELS.ini, it is now possible to specify a node in a tree that does not reference an RTView display.

Editing Functionality

E11269: Users can now set the x,y location of an objects

Two new properties have been added to all non-link objects: objX and objY. These properties can be used to set the location of the object in pixels either using the Object Property dialog or from a data attachment. Each object is centered at objX, objY.

E10028: Multiple object selection now supported

Multiple object selection has been implemented. To select multiple objects, hold down the Control key while left-clicking on objects. The objects that are selected can be moved, deleted, copied, pasted, and moved to the back or front as a unit. Object properties and scaling will apply only to the last object selected. If a single link is selected, paste will enable CONNECT mode. If multiple objects including one or more links is selected, the links will not be copied.

Background Property Dialog

B11200: Background Properties dialog now closes with OK button

In the previous version clicking the OK button of the Background Properties dialog was ignored if none of the fields were changed. This bug has been fixed.

Object Property Dialog

E11277: Color chooser displays color index and rgb values in tooltip

The color chooser dialogs have been enhanced to show a tooltip containing the color index as well as the rgb value for each color.

Substitution

B11174: Subs set in Options now applied if display contains local vars

In previous versions of the Display Builder, if a display was loaded which contained any local variables mapped to substitutions, there was a problem with setting those substitution values from the Options/Substitutions dialog. Setting them would only work if the substitution was already defined prior to loading the display. They would fail to be set if created in the Options dialog after the display was loaded. This problem has been fixed.

Drill Down

B11291: Single-Click to Drill Down no longer applies to Display Builder

Setting the Single-Click to Drill Down option in the Display Builder now properly only applies to the Display Viewer.

B11420: Meaning of "Current Display" modified for Named Panels

The meaning of "Current Display" for a named panel has changed in the latest release. Previously, the name of the display contained in the panel from which a drill down was initiated was used in the named panel. This was incorrect. In the new version, Current Display means the display that is currently in the named panel. This change makes it possible to set substitutions in a named panel without having to specify the name of the display that is in that panel.

Command Execution

B11379: URL launched from table no longer contains erroneous "'"

A string containing a "/" at the end will now properly be passed in as a substitution to a command or drilldown.

E11306: Open Browser command now supports window options

A new Browser Window argument has been added to the Open Browser (From Applet Only) Command. In previous versions of RTView, the URL would always be opened in a new browser window. This version gives the user more control over where the URL will be opened. The new Browser Window argument values: Current - open the URL in the frame that contains the applet Parent - open the URL in the applet's parent frame Top - open the URL in the top-level frame of the applet's window New - open the URL in a new browser window. Named - open the URL in the frame or window with the name specified in the Window Name property. If the named frame or window does not exist, a new window will be created with that name.

B11202: Single quotes are now correct in Define Command dialog fields

In previous releases of RTView, single quotes were not handled properly in the Define Command Dialog. This has been fixed.

Functions

E11373: Pivot On Unique Values function added

A new function called "Pivot on Unique Values" has been added. This function provides a way to "pivot" a table based on a column containing unique values. This function returns a table in which row data from the given Table has been rotated into columns. The Pivot Name Column contains values that become new column names in the returned table. The Key Column is used to group rows containing unique names in the Pivot Name Column into a single row. The Pivot Value Column contains the data of interest. All consecutive rows that contain the same value in the Key Column will have the data in the Pivot Value Column placed into the same row of the resulting table, in the appropriate column. To include columns in the returned table for names that are not present in the Pivot Name Column, specify a table column in the Name List argument which contains all possible names. If Restrict to Name List is set to 0 or if the Name List is not specified, all unique values from the Pivot Name Column are included in the returned table, otherwise only values from the Name List will be included.

B11378: The Replace Value function now works for null or "" string

The Replace Value function now works properly with strings that are equal to "".

B11364: Format Number function shows "S" instead of "$" for neg currency

The "$$" format used in the Format Number function incorrectly produced a lead "S" instead of a "$" when formatting negative currency

E11509: The Set Substitution function has been added

A new function has been added, "Set Substitution". This function is passed a Value and the name of a substitution variable to be set. Whenever the Value changes, the value of the named substitution is set.

E11190: Subtotal by Time function no longer crashes on Japanese systems

In previous versions, the Subtotal By Time function threw an exception when RTView was run on a machine with a Japanese locale. This has been fixed.

E11071: Support for date/time processing has been enhanced

A new argument, Date Part, has been added to the Count Unique Values By Time and Subtotal By Time functions. If no value is provided for Date Part, the Interval is assumed to be in seconds. Specify s, m, h, d, w, M, q or y, for seconds, minutes, hours, days, weeks, months, quarters or years, respectively. The Date Format property has been extended to provide support for a Date Part of quarters. Use q, qqq, or qqqq for short, medium or long versions of quarter notation. For example, qqq-yyyy will result in a string of the form Qtr 1-2005. It is important to note, when specifying Date Part, that RTView will act slightly differently when you explicitly specify days or weeks (using d or w) versus when you specify the same amount of time in seconds, minutes or hours. A day is 84,400 seconds and a week is 604,800 seconds. If you use d to specify an Interval, and your collection of periods crosses over a change in daylight savings time, each period will start at midnight, and one period will contain either 23 or 25 hours. If you specify a one-day Interval in seconds, minutes or hours, and your collection of periods crosses over a change in daylight savings time, each period will always contain exactly 24 hours. This means the period start time will shift away from midnight to accommodate the daylight time change. Similarly, if you explicitly specify a week for Date Part using w, your week periods will always start at midnight on the first day of the week as defined by your Java locale. The first day of the week is Sunday for many locales. France starts the week on Monday. If you specify a one-week Interval in seconds, minutes or hours, your periods will start on Thursday and will also be subject to a shift away from midnight to accommodate the daylight time change. Six new functions have also been added: Date Add, Date Compare, Date Difference, Date Now, Date Ceiling and Date Floor. The Date Add function adds a number (which may be negative) to a date/time and returns the resulting date. The Date Compare function compares two date/time arguments, them, and returns -1 if Date 1 is less than Date 2, 0 if the values are equal and 1 if Date 1 is greater than Date 2. The Date Difference function returns the integer number of Date Part intervals by the first date is less than the second date. The Date Now function returns a string representing the current date/time. The Date Ceiling function determines which interval contains the specified date/time, and returns a string representing the starting date/time value of the next interval. The Date Floor function determines which interval contains the specified date/time, and returns a string representing the starting date/time value of that interval. Finally, the name of the DateTime function has been changed to Date Format to make it more consistent with the other date function and to better describe its functionality.

Security

E11233: Role based security is now available

Role management has been added to the RTView Display Builder, Display Viewer, Display Viewer Swing Applet and TIBCO EMS Manager which allows administrators to control access to displays based on a login. Role management is enabled by default, with an initial name and password: User Name: admin Password: admin Administrators can define users and roles in either an xml file format or by implementing two simple Java classes. By default, RTView looks for user definitions in users.xml, which has the following format: <?xml version="1.0"?> <users xmlns="www.sl.com" > <user> <name>user name</name> <password>user password</password> <role>user role1</role> <role>user role2</role> </user> </users> Once this file is created, it will be used by RTView to validate the user login. RTView can save this file with the password encoded. By default, RTView looks for role definitions in roles.xml, which has the following format: <?xml version="1.0"?> <roles xmlns="www.sl.com"> <role> <name>role1</name> <displays> <include>ALL</include> <exclude>admin*.rtv</exclude> </displays> </role> </roles> Administrators can setup the location of these files as well as control whether or not an RTView application requires a login.

Image Server

B11545: executeOnFocusLostFlag for text fields ignored by Image Server

The executeOnFocusLostFlag property for text fields is is now supported in the Image Server.

B11351: Image Server now applies initial local variable values to subs

In prior releases, if a substitution string was used in a data source attachment and a local variable with an initial value was mapped to that substitution, the Image Server did not use the initial value. This has been fixed.

E11293: Displays now update without regenerating whole page

Image Server display updating has been improved. In previous releases, the entire page was regenerated on each update, which caused the display to flash and also reset the scroll position of the browser and any list controls on the display. This no longer occurs. The improved display updates rely on javascript and may not work in older browsers. The minimum versions are: Internet Explorer 5.5 Netscape 7.1 Firefox 1.0 No other browsers have been tested.

B11232: Combo boxes in Image Server now show correct initial selection

If a display generated by the Image Server contains a combo box, and none of the items on its dropdown list are currently selected, then the combo box will appear blank. In prior releases, if none of the items were selected then the first item from the list was displayed in the combo box, which could be misconstrued as an indication that the item was selected. In addition, the user could not select the first item without selecting another item beforehand.

E11212: Multibyte characters supported in file names for Image Server

In prior releases, filenames that contain multibyte (e.g. Asian) characters were not displayed correctly in the Image Server's list of available displays. This has been fixed.

E11213: Multibyte characters supported in substitutions for Image Server

In prior releases, the Image Server did not support multibyte (e.g. Asian) characters in substitutions or as labels for HTML controls. This has been fixed. Note that the system on which the Image Server is run must support multibyte characters, for example by setting the system locale to Japanese.

E11210: A web.xml file now provided for the Image Server Servlet

The Image Server Servlet now includes a web.xml file to comply with the J2EE standard.

E11152: Image Server tables now support scrolling and sorting

Support for tables in Image Server displays has been improved. Table objects in an Image Server display now support scrolling, sorting, and column resizing. Previously, the user could only page up and down in a table, and sorting and column resize were unsupported. The improved table object has a few limitations in Image Server displays, which are listed below. If these are unacceptable, the -notablecontrols option can be specified when starting the Image Server, to enable the old behavior in which table objects are rendered as part of the display image bitmap (with no scrolling or sorting support). Limitations: 1. The scrollbarMode and editDataEnabledFlag properties are not supported by the improved table object in Image Server displays. The default values are used instead. 2. If a sort column is configured on the table in the .rtv file, the table contents will be properly sorted in the Image Server display, but the sort icon will not appear in the column header. If the user picks a different sort column at runtime, the sort icon will be shown in that column's header. 3. If the number of cells in a table (the number of rows times the number of columns) is large, there may be a delay when a table is displayed, refreshed, or sorted. The length of the delay will vary according to the number of table cells and the CPU speed of the client computer. 4. The improved table object relies on javascript and may not work in older browsers. The minimum requirements are: Internet Explorer 5.5 Netscape 7.1 Firefox 1.0 No other browsers have been tested.

E11154: The Image Server now supports local variables

Control objects can now be used to set local variable on displays rendered by the Image Server. In prior releases, local variables could not be set by controls on Image Server displays.

XML Server

B11187: Image Server Servlet does not hardcode location for image map

The Image Servlet no longer requires /rtvimage in the URL. Users can now configure their application server to use a different path in the URL for the servlet, although http://MyHost/rtvimage is still the default.

Data Sources

SQL Data Source

B11194: Excluding tables from Attach to SQL Data menus now supported

RTView now supports two mechanisms to control, and potentially reduce, the list of tables displayed when attaching to a SQL data source. The first mechanism is controlled by the Table Types field in the Add Database dialog. The items listed in this field will control which types of tables will be gathered when querying the metadata of a particular database. Users will need to consult their database manual for the list of table types that are valid for their database. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "ALIAS" and "SYNONYM". If nothing is specified, "TABLE","VIEW" is used. The table types should be entered into the field as a comma-delimited list. It is important to be aware that changing the table types value after metadata has already been pulled from a database will not cause the previously acquired list of tables to be purged. You should save your initialization file and restart the Display Builder to see the changes. The second mechanism for controlling the list of tables displayed when attaching to a SQL data source is the sqlexcludedtables.xml file. This file lists tables that will be removed from the list of available tables for each database. The simplest way to create a sqlexcludedtables.xml file is to start by duplicating and renaming a sqlrepository.xml file. You can create a sqlrepository.xml file by clicking the Save Database Repository button in the SQL tab of the Application Options dialog. Open your new sqlexcludedtables.xml file with a text editor and search for sections describing the tables you want to see displayed in the list when attaching to SQL data from RTView. Table descriptions begin with "<table name=" and end with "</table$gt;". To have a table included in the list displayed by RTView, delete that tables's entire description from the sqlexcludedtables.xml file. Repeat this process so that the sqlexcludedtables.xml file ends up containing descriptions for only the tables that you do not want to see listed in RTView. When you are finished editing the sqlexcludedtables.xml file, place it in your local or RTV_HOME\lib directory in the same manner as you would deploy the sqlrepository.xml file. You do not have to have a sqlrepository.xml file in order to include a sqlexcludedtables.xml file. RTView still will use the sqlexcludedtables.xml file to reduce the list of tables gathered from a live query of a database's metadata. If you do have a sqlrepository.xml file, the sqlexcludedtables.xml file will also be used to reduce the list of tables in the repository. As a final note, if you do have a sqlexcludedtables.xml file and you click the Save Database Repository button, the new sqlrepository.xml file will not contain any of the tables listed in your sqlexcludedtables.xml file. To get a complete list of all available tables in your sqlrepository.xml file, temporarily move or rename your sqlexcludedtables.xml file before running RTView and clicking the Save Database Repository button.

Local Variable Data Source

B11139: Setting a sub in the Options dialog now changes local variables

Setting a substitution in the Options dialog now properly applies that value to any local variables defined in a currently open display.

B11263: Local var initial values now always applied to substitutions

In a drill down window, if no substitutions are defined, local variable values that are mapped to substitutions failed to create the substitution. This bug has been fixed.

OLAP Data Source

E11066: An OLAP data source has been added

An OLAP data source has been added to RTView. This data source allows you to display data from Microsoft SQL Server with Analysis Services and Applix TM1 OLAP databases.

JMS Data Source

B11362: The default TIBCO Factory Class Name has been changed

In previous releases, com.tibco.tibjms.TibjmsConnectionFactory could be used by TIBCO users as the Factory Name for their connections. They must now use com.tibco.tibjms.TibjmsTopicConnectionFactory instead.

Sample Displays and Applications

E11357: A new demo, esphere, has been added to the installation

A new demo, esphere, has been added under the demos directory of RTView.

E11182: Tree and card examples to have been added to the multipanel demo

Examples of the RTViewNavTreePanel and the CardPanel have been added to the demo in demos/multipanel.

Object Library

E11432: bgEdgeWidth and bg3dFlag have been added to tables and graphs

All of the graphs, the tables, and the object grid now have the bgEdgeWidth and bg3dFlag properties available. This provides greater flexibility in controlling the look and feel of custom displays.

B11344: Window resize causes extraneous lines on edges of some objects

On window resize, some objects would have extra border pixels, giving an inconsistent look. This problem has been eliminated.

E11310: obj_pricebox added to the Object Palette

A new object, obj_pricebox, has been added to the Labels tab of the Object Palette. This object is useful for displaying sales and financial data.

B11354: Hidden fields no longer lose data attachments

Previously, a property that could be "hidden" would lose its data attachment when a display was saved and reloaded. This problem has been fixed. Note: an example of a "hidden" property is the "barValueTextPos" property of the bar graph. If the "barValueVisFlag" is turned off, then "barValueTextPos" does not show up. A data attachment to "varValueTextPos" would previously have been lost.

Links

E11271: Range thresholds now supported for links

A new property, valueAlertMode, has been added to the links to support discrete alerts, range alerts and no alerts. When the valueAlertMode property is set to Discrete Alerts, the user can set discrete alert thresholds on the link which will cause the color of the link to change. If valueAlertMode is set to Range Alerts, the user can set range alert thresholds on the link that will cause the color of the link to change. If valueAlertMode is set to No Alerts, all alert behavior is disabled.

B11279: Link thickness no longer inconsistent if same thickness value

Previously, links were sometimes being drawn with inconsistent widths after a zoom or resize operation, even if the links had exactly the same thickness specified. This problem has been corrected for links of the type DIRECT. It has not been corrected for links that are DIRECT_OFFSET, or ORTHOGONAL.

Tables

B11339: Table cell values now display all significant digits

Starting with version 3.0a, numeric columns in the table object were limited to three fraction digits (digits to the right of the decimal point). This limit has been removed.

E11203: Table now limits GmsTabularData size to maxNumRows

Use of insertNewRowsFlag on obj_table02 no longer leaks memory. In prior releases, if a display containing an obj_table02 object with the insertNewRowsFlag property checked was displayed in the Display Viewer for an extended time, an out-of-memory exception could occur. This has been fixed.

Graphs (General)

E11346: Bitmap and gradient added to the plot area for all graphs

Support for gradients and images has been added to the plot area for the trend graph (obj_trendgraph02), radar graph (obj_radar), and XY graph (obj_xygraph). This has also been added to the bar graph - see the release note for E11347. For trend graphs, set the traceBgColor property to a color and check the traceBgGradientFlag property to put a gradient into the background of the graph. To display an image in the background of the graph, specify an image file name in the traceBgImageName property. For radar graphs, set the plotBgColor property to a color and check the plotBgGradientFlag property to put a gradient into the background of the graph. To display an image in the background of the graph, specify an image file name in the plotBgImageName property. Note: The gradient and image background features are not supported by the radar graph in the AWT applet. The AWT applet will ignore the plotBgGradientFlag and plotBgImageName properties when drawing radar graphs. For XY graphs, set the gridBgColor property to a color and check the gridBgGradientFlag property to put a gradient into the background of the graph. To display an image in the background of the graph, specify an image file name in the gridBgImageName property.

Bar Graphs

B11544: bargraph keeps image buffer reference after painting

None needed.

E11377: Support added for bar centering and fit to plot area

The Bar Graph has been enhanced with two new properties. The "barFitFlag" can be used to control whether the bars are scaled to fit the available plot area. The "barCenterFlag" is used to control whether the bars are centered in the plot area. If the "barFitFlag" is false, then the minBarWidth and minSpaceBetween properties precisely control the bar width and spacing. If the bars are not centered, then they are left justified, or top-justified if the bar graph is drawn horizontally.

E11347: Visual improvements added to bars and background

The Bar Graph object has been enhanced to include several new properties that control the visual appearance of the bar and the background grid area. The property "barGradientStyle" can be set to "None", "Shaded", or "Rounded", to control whether the bar is drawn with a gradient style. The default is None. The property "barImage" can be used to place an image on the bars. The image will be stretched to fit the full extent of the bar. The property "gridBgGradientFlag" can be used to draw the grid background area in a gradient style. The property "gridBgImage" can be used to place an image in the grid background area; the image will be stretched to fit the available area in the graph.

B11352: The position of rotated x axis labels is now correct

The position of rotated x axis labels was incorrect and has now been fixed.

E11283: The trace axis now displays correctly if only one trace point

In prior versions, the Y axis labels for traces on the bar graph were missing if the trace lines had only a single point. This problem has been fixed.

B11264: Bar graph autoscale no longer includes 0 if no bars displayed

In prior releases, if a bar graph had traces but no bars. and if yAxisAutoScaleMode was set to On or On-include min/max, the autoscale range would always include zero, even if the trace data did not. This problem has been fixed.

E11265: Scrollable x-axis added to the bar graph

The bar graph object has been enhanced to support scrolling. The scrolling behavior is determined by the bar graph's drawHorizontalFlag property, and several new properties, as described below. If drawHorizontalFlag is off, the bar graph can be configured to display a horizontal scrollbar. This is useful if the bar graph is not wide enough to show all of the bars at once. If drawHorizontalFlag is on, the bar graph can be configured to display a vertical scrollbar. This is useful if the bar graph is not tall enough to show all of the bars at once. Note that a vertical and a horizontal scrollbar will never both appear on the bar graph. The following bar graph properties have been added to support scrolling: 1. minSpacePerBar: If drawHorizontalFlag is off,this property defines the minimum width for each bar, in pixels. If drawHorizontalFlag is on, it defines the minimum height for each bar. Note that the bars may be wider/taller than this value, if the bar graph's width/height allow. The default value is 1 pixel. Typically, a larger value such as 20 pixels would be selected if scrolling is enabled. 2. scrollbarMode: This property is used to enable scrolling. It has the following values: Never: scrollbars are never displayed on the bar graph. This is the default value. Always: If drawHorizontalFlag is off, a horizontal scrollbar is always displayed on the bar graph. If drawHorizontalFlag is on, a vertical scrollbar is always displayed. As Needed: If drawHorizontalFlag is off, a horizontal scrollbar appears on the bar graph if it is too narrow to display all of the bars, where each bar is minSpacePerBar pixels wide. If drawHorizontalFlag is on, a vertical scrollbar appears on the graph if it is too short to display all of the bars, where each bar is minSpacePerBar pixels tall. 3. scrollbarSize: The height in pixels of the horizontal scrollbar, or width of the vertical scrollbar. The default value is -1, which indicates that the standard size (about 18 pixels) should be used.

B11375: Stacked bargraphs changed to use minSpacingBetweenGroups

Previously, the spacing between groups of stacked bars was incorrectly controlled by the property "minSpaceBetweenBars". It has been changed to correctly use "minSpaceBetweenGroups". Note that this change may affect stacked bar graphs that were previously created using the incorrect property.

Trend Graphs

E11356: Object Property dialog only gets updated if value changes

In prior releases, if the trend graph's timeRangeBegin or timeRangeEnd property was attached to data, and if the popup menu from the graph's property sheet was opened in the Display Builder, the menu would be closed on each display update. This has been fixed.

E11272: CPU performance improved when showing a large number of points

The performance of the trend graph when plotting a large number of points per trace has been improved. Note that the trace line thickness and line style should both be set to 1 for traces with many points, for best performance.

E11273: Max number of points for trend graph has been increased to 30000

The upper limit on the trend graph's maxPointsPerTrace property has been increased to 30000. Previously, the limit was 20000.

Pie Graphs

E10309: Wedge colors are now configurable in the pie graph

The "wedgeProperties" property has been added to the Pie Graph object. This works the same way as the barProperties on the Bar Graph. The user can set the color index for each pie wedge with a string of the form "2;3;1" where each color index is separated by a semi-colon.

Control Objects

E11353: Property added to control whether the slider updates on movement

The Slider Control has the new property "updateWhileAdjustingFlag" which controls whether the slider object will cause an update while it is being dragged (adjusting), or only on release of the mouse.

B11112: Text field no longer loses focus too late

In previous releases, the focus lost event on the text field was received after another object had been selected. If a text field executed a command on focus lost and the next selected item executed a command on single click, the text field command was executed second. This has been fixed.

B11183: Text field no longer executes twice on focus lost

In previous releases, the text field executed twice on focus lost if the executeOnFocusLostFlag was selected. This has been fixed.

B10579: Labels no longer redrawing incorrectly if changed by controls

In previous releases, when the value of a label was set from a control, it did not always redraw correctly until the next update pass. This has been fixed.

TIBCO EMS Management Application

B11342: Blank EMS Server name in servers.xml no longer causes exception

A blank server name in the servers.xml file no longer causes a crash.

B11307: High memory usage by run_tibjmsadmin utility fixed

Running the EMS Manager "run_tibjmsadmin" utility program directly was previously resulting in high memory usage. This problem has been corrected.

B11218: All EMS Manager features now work with shortcuts and launchers

In version 3.0c1, the Edit Display option in the EMS Manager only worked when running from the command line. In the EMS Manager demo, the Start Simulation and Stop Simulation buttons only worked when running from the command line. These problems have been fixed.

E11381: User can now specify path for servers.xml

The EMS Manager application may be started with the -servers: command line argument to specify the name of the servers.xml file. In an applet, the "servers" parameter may be specified to do this.

TIB EMS Admin Monitoring

E11246: Detailed monitor page added for Durables

A new page has been added to the EMS Manager for each server which permits detailed monitoring of Durables.

E11252: The "failsafe" attribute added for topics (monitor and admin)

The "failsafe" attribute has been added to all displays related to topics and queues. The failsafe attribute may be set when a topic or queue is created using the Administration pages.

TIB EMS Administration

E11247: Administration page added for Durables

A new page has been added to the EMS Manager that permits the creation, deletion, and purging of Durables.

B11316: Zone Name and Type are now fully supported for Route Management

Route Management now fully supports Zone Name and Type.

Distribution

E11302: EMS Manager shortcuts now in the standard shortcuts directory

The EMS Manager shortcuts have been moved from <installation directory>/demos/emsdemo/shortcuts to <installation directory>/shortcuts.

E11315: Shortcuts directory added to Windows program group

The <installation directory>/shortcuts directory has been added to the RTView program group in the Windows Start menu.

B11209: R30c1 Windows installer now finishes properly on all systems

In the 3.0c1 release, the installer failed on some windows systems. This problem has been fixed.

E11228: RTV_HOME\bin now added to PATH as part of Windows installation

The RTView Windows installation now adds RTV_HOME\bin to the PATH environment variable if the user selects Yes to set RTV_HOME globally on their system. When the installation in RTV_HOME is uninstalled, the RTV_HOME environment variable is removed and RTV_HOME\bin is removed from PATH.

Version 3.0c1 Release Notes

RTView

General

E11106: All scripts now can accept Java options

It is now possible to pass in Java options to all RTView scripts by setting the environment variable RTV_JAVAOPTS to the options you wish to set.

Java Version Dependencies

E11097: RTView applications require proper JVM to run

A method to check the JVM version has been added to the RTView applications. If the JVM version is not 1.4.2 or later, an error message will appear and the application will exit. In cases where there is no user-interface e.g. the Historian running in daemon mode, the error message will be printed on the console before exiting the application.

Multi-Panel Frameworks

B11078: Problem with panel name main has been solved

There was a problem with using the name "main" in any panel when using the new XML format for PANELS.ini. This problem has been corrected.

E11145: Card Panel added for keeping multiple panels active

A new type of panel, a CardPanel, has been added to the panels configuration file. A CardPanel may be used to keep multiple RTViewPanels active in memory, maintaining state, such as trend graphs, or tabular data. Only one of the panels contained in the card panel may be visible at a time. A CardPanel is specified in a panel configuration file as follows: <CardPanel> <RtViewPanel title=" Title " display="display_name"/> <RtViewPanel title=" Title2 " display="display2_name"/> <RtViewPanel title=" Title3 " display="display3_name"/> </CardPanel> After initialization, the first panel is made visible. Subsequently, any drill down that is done using a panelname of "." (Same Window) attempts to find one of the RtViewPanels contained in the CardPanel by matching the display_name and substitutions specified in the drilldown. If the corresponding panel is found it is made visible. If it is not found, then the display in the first RTViewPanel is replaced and the specified substitutions are set.

E10882: Provide a Navigation Tree Panel for navigating displays

The panel configuration file (PANELS.ini) has been enhanced to include a navigation tree panel, the RtViewNavTreePanel. This panel type may be used to describe a navigation tree, used specifically for displaying a hierarchical set of displays and navigating to these displays; additionally, and drill downs performed within the target CardPanel will update the navigation tree to indicate the currently selected display. A navigation tree panel is specified using the XML keyword "RTViewNavTreePanel" and must be used in conjunction with a CardPanel (see E11145) which contains at least one RTViewPanel. The CardPanel must be defined before the RTViewNavTreePanel in the PANELS.ini file and becomes the target panel for any navigation performed in the tree panel. When a display is selected in the navigation tree, the first RTViewPanel contained in the CardPanel is used as the target panel of an implied drill down - effectively the selected display replaces whatever display was currently shown in that target panel, unless the "mode" attribute of the target display is set to "keepalive" (see below), in which case the displays always remains in memory in its own panel within the CardPanel. A typical PANELS.ini file will look like the following: <?xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> <BorderPanel> <CardPanel region="center"> <RtViewPanel title=" Overview " name="main" display="e10882"/> </CardPanel> <RtViewNavTreePanel region="west" width="200" height="432" lineStyle="Angled" navtreedata="navtree.xml"> </RtViewNavTreePanel> </BorderPanel> </panels> Notice that the CardPanel and the RtViewNavTreePanel are defined within a BorderPanel in the "west" and "center" regions typically. The navigation tree panel requires the existence of a CardPanel within the same BorderPanel. The RtViewNavTreePanel has an attribute, "navtreedata", which specifies an xml file that contains a description of all the elements that are to be shown in the navigation tree and various attributes of those nodes: A typical navtreedata XML file looks like: <?xml version="1.0" ?> <navtree xmlns="www.sl.com" version="1.0"> <node label="Top Tree Node" display="test"> <node label="Main Displays" display="e10882"> <node label="Show Value 1" mode="keepalive" display="e10882_2" subs="$valueName:'Element 1' $value:element1_load"> </node> <node label="Show Value 2" mode="keepalive" display="e10882_2" subs="$valueName:'Element 2' $value:element2_load"> </node> </node> <node label="Indirect Return Test" display="e10882_indirect"> </node> </node> </navtree> The "node" element may be nested to any level and describes which tree elements will show up when the tree is initialized. Only the first and second level of nodes will be visible when the navigation tree is activated. A tree node may be expanded using double-click to show elements under it. Each tree node requires a "display" attribute, which indicates the RTView display that will be shown when that node is selected. It also may contain a "label" which is the text that shows up in the tree for that node. If the label is not specified that the name of the display will show up in the tree node label. Additionally, substitutions may be specified using the "subs" attribute where the value is of the form "$sub1:value1 $subs2:value2". If a value contains white space it must be enclosed in single quote marks. A special attribute of the node element, the "mode", may be used to control whether a specified display is to remain in memory or the be swapped out whenever a drill down is performed to it. If the mode attribute is set to "keepalive", the display is loaded into its own private panel (in the associated CardPanel) on initialization and remains in memory during the entire run of the program. When that tree node is selected, the corresponding private panel is made visible within the CardPanel, and the display is shown. This capability is especially useful for applications that require trend graphs where the graph needs to keep collecting data even though the display is not visible.

Applet Functionality

E11116: All RTView jars are now signed

All RTView jars are now signed.

Viewer Application Body

B11088: Print option now works for the Display Builder

In version 3.0b1, the Print option did not work in the Display Builder. This has been fixed.

Background Property Dialog

E10250: User can now specify how to add or remove space from background

The RTView Display Builder Background Properties dialog has been enhanced as follows: 1. Previously increasing the background height would always result in adding space to the top of the display, and shifting any objects in the display down. Now the user will be prompted with a dialog to choose whether they want to add space to the top of the display or to the bottom of the display, with the cancel option as usual. If clicked yes, the behavior will be same as before. Clicking No will add space at the bottom of the display so the object position will not change. 2. When reducing the background size, the user will be prompted with a dialog to choose whether to remove the space from the top of the display or from the bottom of the display. If any existing objects are outside the new background extent, the user will be warned with another dialog and given a choice to continue the operation or cancel. 3. When changing to another model or to a background image, the dialog checks if any existing objects are outside the new background extent. If yes, the user is warned with a dialog and given a choice to continue or cancel.

Substitution

B11197: Single quotes no longer cause unwanted truncation of sub values

In previous versions of RTView, command strings using substitutions that contained single quotes were not processed correctly. This problem has been fixed.

Drill Down

E11094: XML and function tables now set filterfield and filtervalue subs

Two new drill down substitutions are passed down from tables attached to XML or function data if the data attachment contains a filter: $filterfield - the name of filter field $filtervalue - the filter value for the selected row

Image Server

E11105: Imageserver generates HTML control objects for displays

Support for control objects in Image Server displays has been improved. The Image Server will generate HTML controls for combo box, list box, text entry, button, and check box controls, if the object's actionCommand is Drill Down or Set Substitution. This allows full user interaction with these types of controls. In prior releases, control objects were rendered as part of the image, which limited user interaction. If a control object's actionCommand is not Drill Down or Set Substitution, or if the object is disabled or invisible, an HTML control will not be generated and the control will be rendered as part of the image. Users should be aware of the following issues with HTML controls on Image Server displays: 1. By default, displays are refreshed every 15 seconds. On refresh, the display image and its controls are regenerated. So if a user is interacting with a control (e.g. typing text in a text entry field) when the refresh occurs, the control will revert to its initial state. 2. When the user clicks on one of the HTML controls described above, a drill down operation is performed. This will also cause the controls to appear in their initial state, even if the drill down is to the same display. So if a combo box or list box should show the selected value, be sure to configure the selectedValue property of the control to show the value of the same substitution string that is set to the control's value by the drill down action. 3. The HTML controls will be drawn using the browser's default font and color scheme. The control object's bgColor and valueTextFont properties are ignored. 4. In older browsers that do not support CSS, the HTML controls may not be positioned correctly, appearing outside the image. To disable generation of HTML controls and enable the behavior from prior releases, specify the -nohtmlcontrols option on the command line, when starting the Image Server.

B11077: Chained substitutions now work in the Image Server

In previous releases, the Image Server did not process chained substitutions properly. For example if the following substitutions were defined: $sub1:$sub2 $sub2:xyz the Image Server would replace $sub1 with $sub2, instead of the correct value of xyz. This has been fixed.

Data Historian

B11089: Unix crash with obj_xygraph and -daemon option fixed

The Historian no longer crashes when it is run on a Unix server with the -daemon option, the Display is not set, and an xygraph object is used in one of the configuration files.

XML Server

B11126: The XML Servlet is now compatible with BEA WebLogic 8.1.

The XML Servlet is now compatible with BEA WebLogic 8.1.

Transaction Message Monitor

E11072: Transaction Monitor now monitors JMS messages

A JMS version of the Transaction Monitor has been added to RTView which allows you to monitor JMS message transactions.

Data Sources

SQL Data Source

E11147: SQL DECIMAL type now supported

The SQL DECIMAL data type is now supported as a double.

Local Variable Data Source

B11076: Table copy bug has been fixed

Version 3.0b1 introduced a bug in which the data contents of an object such as a table would not be retained in "paste" operation if there was an unused local variable in the same panel. This bug has been fixed.

TIBCO Rendezvous Data Source

E11120: TIBCO Rendezvous XML messages have been added to sample displays

An example has been added to demos\rvdisplays\sample_data.rtv which illustrates how to display XML data from TIBCO Rendezvous messages.

JMS Data Source

E11052: JMS Data Source added to RTView

A JMS data source has been added to RTView. This data source allows you to display JMS message content.

Object Library

E11121: Objects in gmsjmodels.jar are now packaged

The Java classes that implement the RTView display objects now belong to a package named com.sl.gmsjmodels. In prior releases, these classes belonged to the unnamed package. In most cases, this change will have no affect on displays or on custom applications. However, custom application code that relies on the class names of display objects may need to be changed. For example, the following code: if (iconName.equals("obj_table02")) ... should be changed to this: if (iconName.equals("com.sl.gmsjmodels.obj_table02")) ...

Tables

B11123: Sorting or resizing columns prompts user to save

In 3.0b1, the user was not prompted to save their display after resizing or sorting on a column in obj_table02. This bug is now fixed.

B11080: Copy cell value is working again

Copy cell value was broken in 3.0b1. This has been fixed.

Object Grid

E11127: Add the "drillDownSelectMode" property

The "drillDownSelectMode" property has been added to the Object Grid.This property controls whether drill down can be performed anywhere in the grid, or only on a valid icon.

Graphs (General)

B11125: Bug in legend value fixed

In prior releases, decimal values slightly greater or less than zero were sometimes displayed incorrectly in the legend of the trend graph and xy graph. This problem has been fixed.

Bar Graphs

E11081: Bar graph supports a separate vertical axis for traces

The bar graph now supports a separate vertical axis for traces. This is useful when there is a large difference between the range of the bar data and the range of the trace data. The trace axis is enabled by the traceYAxisFlag property. When this property is checked, a vertical axis displaying the trace range will be drawn at the right edge of the bar/trace area. The traces are plotted against this axis. Also, two new properties named traceYAxisValueMin and traceYAxisValueMax will be displayed in the property sheet. If yAxisAutoScaleMode is set to Off or On-Include Min/Max, these two properties will be used in determining the trace range. Note that the yAxisAutoScaleMode and the valueDivisor properties apply to the bars and the traces. The traceYAxisFlag property is not available if drawHorizontalFlag is checked.

Trend Graphs

B11087: Cursor now shows correct values after trace detached from data

In previous releases, if the trend graph's traceXValueTable property was detached from data, incorrect values would be shown in the legend as the cursor was moved, for all following traces. This has been fixed.

E11091: Trend graphs now support use of text labels on the y axis

The trend graph now supports use of text labels on the y axis, such as "On", "Off", etc. These labels will also be shown in the legend, in place of a trace's numeric value. This feature is intended for use on traces which display discrete values. Each y axis label and its corresponding value are defined by the new yAxisValueLabels property. It is a string with this format: value1=label1,value2=label2,... For each value/label pair, a tick mark and label will be drawn on the trace's y axis. A horizontal grid line will be drawn for each tick mark. The labels, tick marks, and grid lines will scroll if the trace is scrolled vertically. The yAxisMajor/MinorDivision property is ignored if yAxisValueLabels is assigned. If the cursor value for a trace matches one of the values in yAxisValueLabels, the corresponding label will be shown in the legend. Otherwise, the numeric value is shown in the legend. If yAxisMultiRangeMode is set to Multiple Axis or Strip Chart mode, yAxisValueLabels is ignored. The y axis labels are assigned for each trace using the traceNYAxisValueLabels property, where N is the trace number. This feature is intended for use with discrete values, where yAxisValueLabels will have a value/label pair for each possible value. A label can be left blank. This will result in a tick mark with no label. For example: 0=Off,1,2=On Labels can contain blanks, but may not contain a comma, which is always treated as a separator. The values do not need to be listed in numerical order.

E11055: Axes, grid, and range improvements to trend graphs

This release contains several trend graph improvements: 1. support for y axis positioning 2. grid visibility properties 3. improved multiranging support //////////////////////////////////////////// 1. Support for y axis positioning A new property named yAxisPosition has been added to the trend graph. It has the following settings: Outer Left Outer Right Outer Mixed Inner Left Inner Right Inner Mixed An outer axis is drawn outside the trace area, with an axis line, tick marks, and tick labels. An inner axis is drawn inside the trace area, with tick labels but no axis line or tick marks. The label text height for both types is yAxisLabelTextHeight. Grid lines are drawn for outer and inner axes. For an inner axis, the bottom/topmost labels may not be aligned with the corresponding grid line, but may instead be aligned with the bottom/top of the trace area, so as not to extend beyond the trace area. The Outer Mixed and Inner Mixed settings place the axes for odd numbered traces on the left, and the axes for even numbered traces on the right. The axis for a lower numbered trace will be closer to the edge of the trace area than the axis for a higher numbered trace. These settings are intended for use when yAxisMultiRangeMode is set to Multiple Axis mode (see below). For all other multirange modes, Outer Mixed is treated as Outer Left. Inner axis labels have been improved over the previous implementation (which was used when yAxisMultiRangeFlag was On). A label will now be drawn for each yAxisMajorDivision, rather than just bottom, mid, and top. Also, an outline is drawn around each label using the trace bg color, so it is not obscured by trace lines. //////////////////////////////////////////// 2. Grid visibility properties Normally, a vertical grid line is drawn for each major tick mark on the x axis, and a horizontal grid line is drawn for each major tick mark on the y axis. The visibility of these grid lines can now be controlled by using the xAxisGridVisFlag and yAxisGridVisFlag properties, respectively. If yAxisMultiRangeMode is set to Multiple Axis or Strip Chart mode (see below), then the horizontal grid line visibility for each trace can be set by using traceNYAxisGridVisFlag, where N is the trace number. //////////////////////////////////////////// 3. Improved multiranging support: The yAxisMultiRange property has been replaced by yAxisMultiRangeMode, which has the following settings: Off, Classic, Multiple Axis, Strip Chart. Off: In this mode, all traces are plotted against a single Y axis. The position of the Y axis is determined by the yAxisPosition property (see below). Classic: This mode preserves the behavior of yAxisMultiRange=On in prior releases: Each trace's range is determined by autoscaling. A single Y axis is drawn on the left edge of the graph, showing the range of trace 1. The ranges of all other traces are shown on labels drawn inside the trace area, using the color of the corresponding trace line. Multiple Axis: In this mode, a Y axis is drawn for each trace. The positions of the Y axes are determined by the yAxisPosition property (see below). If a trace's visFlag is off, then its axis is not drawn. Strip Chart: In this mode, the trace area is divided into horizontal strips, one strip for each visible trace, so that the traces never overlap. (In all other modes, all traces share the same trace area, so the trace lines may overlap). In Strip Chart mode each strip has its own Y axis but all traces share the same X (time) axis. Zooming and scrolling can only be performed horizontally. //////////////////////////////////////////// Additional per-trace properties: When yAxisMultiRangeMode is set to Multiple Axis or Strip Chart, the following additional properties are displayed for each trace: traceNYAxisAutoScaleMode traceNYAxisValueMin traceNYAxisValueMax traceNYAxisGridVisFlag traceNYAxisMinLabelWidth traceNYAxisValueLabels traceNYAxisVisFlag where N is trace number 1,2, etc. Each of these overrides a graph property that applies to all traces when multirange mode is Off or Classic. For example, when multirange mode is Off or Classic, the autoscale mode for all traces is set by yAxisAutoScaleMode, and if yAxisAutoScaleMode=Off the range for all traces is set by yValueMin and yValueMax. But if multirange mode is Multiple Axis or Strip Chart, then the autoscale mode for trace 1 is set by trace1YAxisAutoScaleMode. If trace1YAxisAutoScaleMode is Off, then the range of trace 1 is set by trace1YAxisValueMin and trace1YAxisValueMax. The graph property overridden by each per-trace property is shown below: per-trace property overrides graph property traceNYAxisAutoScaleMode yAxisAutoScaleMode traceNYAxisValueMin yValueMin traceNYAxisValueMax yValueMax traceNYAxisGridVisFlag yAxisGridVisFlag traceNYAxisMinLabelWidth yAxisMinLabelWidth traceNYAxisValueLabels yAxisValueLabels traceNYAxisVisFlag yAxisVisFlag Again, the per-trace properties are visible only if yAxisMultiRangeMode is set to Multiple Axis or Strip Chart.

Control Objects

B11058: executeOnFocusLostFlag is working again

The executeOnFocusLostFlag was broken in 3.0b1 and has now been restored to its previous capabilities.

TIBCO EMS Management Application

E11075: TIBCO EMS Manager Application added to RTView

The TIBCO EMS Manager has been added to RTView. The TIBCO EMS Manager allows you to monitor and administer your TIBCO EMS Servers. Using the TIBCO EMS Manager, you can create and delete topics, queues and routes. You can also monitor your TIBCO EMS Servers using the TIBCO EMS Admin API. The TIBCO EMS Manager application can automatically discover your EMS Servers if you are running the TIBCO Hawk JMS_Controller microagent. In addition to the automatic discovery of your EMS Servers, the TIBCO EMS Manager also allows you to configure which servers to monitor. The navigation tree in the TIBCO EMS Manager contains several built-in displays including displays that are generated for each EMS Server being monitored. You may also add your own custom displays to the TIBCO EMS Manager.

Version 3.0b1 Release Notes

RTView

Application Frameworks

E11007: Default background size and color has been changed

The default background size is now larger and the color has changed.

E11009: An Add Object toolbar has been added to the Display Builder

You can now add frequently used objects to your display using the Add Object toolbar in the Display Builder instead of bringing up the Object Palette.

E11010: Options and grid buttons have been added to the standard toolbar

Two new buttons have been added to the standard toolbar. The options button will bring up the Application Options dialog and the snap to grid button will enable or disable the snap to grid option.

Multi-Panel Frameworks

E11015: Enhanced panel configuration file in XML format has been added

The Multiple Display Panels have been enhanced to include 2 new layouts, a grid layout and a tab layout in addition to the existing border layout. The panel configuration file used to configure the layout of your displays now uses an XML format. The PANELS.ini file format that was provided in prior releases is still supported, but is deprecated. The older file format will not be supported in the release following 3.0b1. By default, RTView will look for a file by the name PANELS.ini in the local directory. If it is not found, it will then look in the lib directory of your RTView installation. Alternatively, the name of the panel configuration file may be specified on the command line, in an applet parameter, or in the OPTIONS.ini file. command line argument: -panelconfig:PANELS.ini applet parameter: name="panelconfig" value="PANELS.ini" OPTIONS.ini: panelconfig PANELS.ini If the value of this argument is blank, then the panel configuration file name will be overridden and no file will be read. The XML formatted file must contain the following lines: two at the beginning, and one at the end. The panel configuration information is inserted between them. <?xml version="1.0" ?> <panels xmlns="www.sl.com" version="1.0"> ... panel configuration ... </panels> In the prior releases, the border panel was supported in a flat text format. In this release, a border panel arrangement would look like: <BorderPanel> <RTViewPanel region="north" name="title_panel" display="title_panel"/> <RTViewPanel region="center" name="main" display="system_table2" subs="$system:WINNT"/> <RTViewPanel region="west" name="display1" display="display1" subs="$title:'Display West'"/> <RTViewPanel region="east" name="display2" display="display1" subs="$title:'Display East'"/> <RTViewPanel region="south" name="display_south" display="display1" subs="$title:'Display South'"/> </BorderPanel> Note that the border region is specified using the "region" attribute. The name of the panel is given in the "name" attribute. The name of the display (.rtv) file is given in the "display" attribute. Substitutions are specified using the "subs" attribute. This release also supports tabbed panels. These may be specified as follows: <TabbedPanel title="Test of Tabbed Panels" placement="left"> <RTViewPanel title=" Table Overview " display="e10484"/> <RTViewPanel title=" Production Table " display="production_table"/> <RTViewPanel title=" System Table " display="system_table"/> <RTViewPanel title=" System Table (WINNT) " display="system_table2" subs="$system:WINNT"/> <RTViewPanel title=" System Table (SOLARIS) " display="system_table2" subs="$system:SOLARIS"/> </TabbedPanel> The title of the tab that will contain the RTViewPanel is specified with the "title" attribute. The placement of the tabs is controlled by the "placement" attribute, which can be one of "top", "bottom", "left", or "right". When using tabbed panels, the panelname does not need to be specified. You can specify a panel name, and do drill down navigation using the name of that panel. However, for convenience, the tabbed panel constructs an internal name for each panel that is a combination of the display name and the substitutions that are assigned to the panel. When you do a drill down to the "Current Window" within any display in your viewer session, and there is a tabbed panel involved, RTView will try to find the correct tab for you. It uses the display name and substitutions that you specify in the drill down to look for the panel that matches, and automatically switches to that tab, instead of replacing the panel in the current window. This release of RTView also supports grid panels. These may be specified as follows: <GridPanel rows="0" columns="2"> <RTViewPanel name="detail1" display="small_panel" subs="$title:'101'"/> <RTViewPanel name="detail2" display="small_panel" subs="$title:'102'"/> <RTViewPanel name="detail3" display="small_panel" subs="$title:'103'"/> <RTViewPanel name="detail4" display="small_panel" subs="$title:'201'"/> <RTViewPanel name="detail5" display="small_panel" subs="$title:'202'"/> <RTViewPanel name="detail6" display="small_panel" subs="$title:'203'"/> </GridPanel> The row and columns counts are specified using the "rows" and "columns" attributes. If either is 0, then RTView will create as many rows and columns as are needed for the RTViewPanels listed. Additionally, when any of these panels are created using the panels configuration file, you may specify a title to be assigned to the outer Window Frame of the application. This is done by including the "title" attribute in the outermost XML element description. This title will show up in the outer window frame. For example: <GridPanel title="Test of Grid Panels" rows="0" columns="3">

E10484: Tab and grid layouts now available for selecting multiple views

Multiple Display Panels have been enhanced to support a tabbed layout and a grid layout. See the release note for E11015 for more information.

Applet Functionality

E11036: A new JavaScript method, doDrilldown, has been added

A JavaScript method, doDrilldown() has been added that allows you to perform a drill down on the Display Viewer Applet programmatically. This method is defined as: void doDrilldown (String panelName, String displayName, String subs) The panelName may be an empty string, in which case, the drill down will operate on the main panel for the application. If the panelName is "*", a new window will be opened to contain the specified rtview. The displayName is the name of the display (.rtv) file that is to be loaded. This parameter may be set to ".", in which case it keeps the same display in the panel. Substitutions are optional and may be specified in the form "$subname:$subvalue $subname2:$subvalue2". Additionally, the subs string may begin with "g$clear" which indicates that all subs are to be removed from the panel before the drill down is performed.

Object Property Dialog

B10980: Horizontal scroll bar added to lists in "Select Columns" Dialog

Horizontal scroll bars are now enabled for the lists in the Select Columns Dialog.

Substitution

B11031: Substitutions with spaces no longer cause problems in SQL query

In previous versions of RTView, a substitution containing spaces could not be used when entering an SQL query. This has been fixed.

B11029: Substitutions containing a space and a ' now parsed correctly

In previous versions of RTView, substitutions containing spaces and ' were not parsed correctly. This has been fixed.

B10967: It is now possible to set a substitution to blank value

In previous versions of RTView, a substitution could not be set to a blank value. This has been fixed.

B10969: Error in "Remove Existing Substitutions" option fixed

The Drill Down Properties dialog option "Remove Existing Substitutions" was exhibiting incorrect behavior; it would cause side effects in displays in other panels. This has been corrected so that the removal of substitutions affects only the drill down target panel.

B10891: Drill down subs no longer affect values in other windows

A bug was introduced into 3.0a1 which caused objects in any window to be affected by any drill down anywhere. The object's data would temporarily be reset to 0 before being refreshed if its data attachment made reference to a substitution variable that was used in another drill down. This problem has been corrected.

E10970: Listeners no longer reattached if drill down subs are identical

If a drill down is done to an existing panel and display, and the specified substitutions are the same as the ones already on the panel, listeners are no longer removed and reattached to their data sources. Previously, the data would be requeried even if the substitution values had not changed.

E10985: Listeners no longer added/removed unless affected by sub change

Substitution processing during drill down has been enhanced to be more efficient. Previously, when substitution variables were changed in a display by a drill down, all objects in that display would have their data attachments reinitialized. Now, only those objects that are directly affected by substitutions that have changed will be affected.

B10992: Chained substitutions now passed by value

The way in which chained substitutions are processed has been changed. Previously a substitution like $data2:$data1 would remain linked, so that if $data1 was changed, $data2 would also change. Now, the substitutions are passed by value rather than reference, so once the substitutions are passed to a drill down they are no longer linked. This means you can change the value of one substitution without changing the other.

B10993: Problem with data attachments using more than one sub fixed

A problem with data attachments that reference more than one substitution has been fixed. This problem sometimes resulted in multiple data points being plotted in a graph for each update.

B10638: Replaced substitutions are now passed into child panels

In previous versions of RTView, changing substitutions on a panel did not cause the change to be seen in panels that were invoked as children of that panel, i.e. using the New Window drill down. This problem has now been fixed.

E10596: Substitution now associated with local variables for ease of use

Substitutions may now be linked with local variables. When a local variable is defined with the same name as a substitution and the "Use As Substitution" option is set, then the local variable automatically takes on the value of that substitution. When the substitution is changed, the local variable is changed and vice-versa. This eliminates the need for using the Get Substitution function to display the value of a substitution; simply make it a local variable instead so it can be used as a data attachment. Similarly, if a local variable is set from a control, such as a drop down list, the associated substitution is automatically set, without having to setup a drill down to set the substitution.

B10642: Existing substitutions can now be passed between sibling panels

It is now possible to pass an existing substitution to a sibling panel, using the following syntax in a drill down: $sub:$sub. When a drill down invokes a "child" window or panel, all substitutions in the current window are known to the new window, since it is a child of the current window. When performing a drill down to a sibling window or panel that already exists, not ALL of the existing substitutions are passed to the sibling, only those explicitly listed in the drilldown parameter.

Drill Down

B10867: A new drillDownSelectMode property added to tabular data objects

The objects that display tabular data now support a property named drillDownSelectMode. This property can be assigned a value of "Anywhere" or "Element Only". If set to Anywhere, the user can drill down by clicking anywhere on the object. If set to Element Only, the user must click on an element to drill down. An element is a cell in a table, a bar or marker in a bar graph, a slice in a pie graph, or a marker on an XY or radar graph. Note that each element corresponds to a specific row and column in the tabular data that is attached to the object. In the standard table (obj_able02), if the rowLabelMode property is set to 1, then a column of row labels is shown. If drillDownSelectMode is set to "Element Only", a drill down can not be performed by clicking in the row label column, since this column does not correspond to an actual data column in the tabular data.

B10851: Drill down file name can now contain spaces or :

Drill down files names can now contain spaces or :.

E10267: Drill down to URL now supported

A URL can now be used as a drill down display name. In prior releases, only a file name could be used. For example, the following URL could be configured as a drill down display name: http://servername/rtvFiles/dd_1.rtv As with other drill down operations, the path portion of the URL is used in subsequent drill downs that do not specify a full path. So for example, if a drill down was done, using the URL above, to dd_1.rtv, and dd_1.rtv contains an object configured to drill down to dd_2.rtv, then dd_2.rtv would be opened with the URL http://servername/rtvFiles/dd_2.rtv. If the URL contains a space, this should be encoded as %20. For example, if the URL of a drill down display is as follows: http://servername/rtvFiles/My Display.rtv you should enter it as follows: http://servername/rtvFiles/My%20Display.rtv

Functions

B10975: Functions now support filtering on *, "*" and empty string

Users can now filter their Function data attachments by *, "*", or and empty string. Filtering by a value of * will return all rows in the table. Filtering by a value of "*" will use * as a literal for comparing cell values. Filtering by an empty string will return all rows where the cell in the specified column contains no text. The Filter By Rows function has also been enhanced to support *, "*" and empty strings.

B10965: No crash when function deleted if links are in the display

In previous versions, the Display Builder crashed when a function was deleted from a display that contained a link. This has been fixed.

E10957: Subtotal By Time function now accepts more date/time types

The Subtotal By Time function has been enhanced so that the date/time column can be in any reasonable format; it will accept a long string (internal date/time format), or a string containing date and/or time.

E10958: A new Count Unique Values By Time Range function has been added

A new function has been added: Count Unique Values By Time Range. This function provides a way to count the number of rows of data that contain a unique value in a table column, sorted by a time stamp contained in another column.

Licensing

E10999: Licensing no longer fails on non-English windows systems

In RTView version 3.0a, licensing failed on some non-English windows systems. This has been fixed.

Localization

E10879: The registration dialog has been internationalized

The registration dialog has been internationalized.

Image Server

E10986: Tabs now supported in Image Server

A more extensive panels configuration capability (PANELS.ini) has been added to this release of RTView. See the release note E11015 for more information. The Image Server supports the new XML format of PANELS.ini and the plain text format from prior releases. The BorderPanel and TabbedPanel layouts are supported by the Image Server. To use this feature in the Image Server: Install the rtvimage servlet, as described in the documentation. Run the Image Server in a directory containing a PANELS.ini file. In a browser, open the following URL, with the appropriate server name for your installation: http://servername/rtvimage/panels.html The Image Server will use HTML Framesets to generate a display with the layout defined in PANELS.ini To specify a different panel configuration file other than PANELS.ini, such as MyPanels.ini, specify a URL as follows: http://servername/rtvimage/panels.jsp?file=MyPanels.ini

DATA SOURCES

E11002: Multiple values can now be specified in Filter Value

The filter functionality of the XML and Function data sources has been enhanced so that multiple values may be specified in the Filter Value field of the Attach To Data Dialog. Previously, only a single value could be listed, but now multiple values may be listed, e.g., Value1;Value2;Value3. Filter values containing a ; must be enclosed in single quotes. This enhancement also applies to the Filter By Row function.

B10959: A mismatch error no longer occurs if column names do not match

In previous releases, RTView reported a column mismatch under any of the following conditions when using the TIBCO Rendezvous data source in a data attachment: 1. If a TIBCO Rendezvous message is received that contains the same fields (columns) as those in earlier messages for the same subject, but the fields are in a different order 2. If a TIBCO Rendezvous message is received that contains one or more fields which did not appear in earlier messages received for the same subject 3. If a TIBCO Rendezvous message is received that is missing one or more fields which appeared in earlier messages received for the same subject 4. If a TIBCO Rendezvous message is received that contains the same fields as those in earlier messages for the same subject, but one or more of the fields in the new message have a different data type than the earlier messages In this release, conditions 1, 2, and 3 will not result in a column mismatch error. Condition 4 will still result in a column mismatch error. If condition (1) occurs, the columns in the new message and the existing table will be matched by name. If condition (2) occurs, the new columns will be added to the existing data table. The new columns will appear after any existing columns. If condition (3) occurs, then the missing columns in the message will be filled with the default values for the data type of the field (zero for int and floating point types, false for boolean, and "N/A" for string). But, if there is an existing entry in the data table for the same subject (that is, there is already a row in the table whose name matches the subject of the new message), then the values from that existing row can be used to fill in the missing values. This "partial row update" feature is enabled for a subject by adding an entry to the RVALIAS.ini file with the keyword partialUpdatesOK, for example: AnyOrderStatus orders.STATUS.* partialUpdatesOK Data attachments that use AnyOrderStatus will have the partial row update feature enabled.

XML Data Source

B10972: XML now supports filtering on *, "*" and empty string

Users can now filter their XML data attachments by *, "*", or an empty string. Filtering by a value of * will return all rows in the table. Filtering by a value of "*" will use * as a literal for comparing cell values. Filtering by an empty string will return all rows where the cell in the specified column contains no text.

SQL Data Source

E11042: static querys continue to run if error and no listeners

In previous versions, static queries that were not sucessful continued to run even if there were no objects attached to them. This has been fixed.

E10871: New option -sqlquote added to allow quotes table names

A new option is supported for the SQL data source. On the command line it is specified as "-sqlquote", and in OPTIONS.ini or an applet parameter it is named "sqlquote" with a value of "true" or "false". When this option is specified, all names that are specified in the Table Name or the Column(s) fields in the Attach to SQL Data dialog will be enclosed in double quotes when the SQL query is performed. This can be useful when attaching to databases which support case-sensitive table and column names, such as PostgreSQL and Oracle, (table and column names are case-insensitive in Microsoft Access and SQL Server, so quoting the table and column names is not required but is harmless). For example, if a table with 2 columns is created in PostgreSQL or Oracle with the following SQL command: create table "MyTable" ("Customer" varchar(20), "Age" int) then the table and columns will have case-sensitive names (because each is quoted) and SQL queries must put those names in double quotes. With the -sqlquote option, the table and column names will be quoted automatically if the following is entered in the Attach to SQL Data dialog: Table Name: MyTable Column(s) : Customer However, if a case-sensitive column name is used in the data attachment filter, it must be enclosed in quotes, even if the -sqlquote option is specified, for example: Filter: "Customer" = 'Alice Chen' Case-sensitive table and column names must also be quoted if the SQL query is entered directly, via the "Enter SQL Query" checkbox, for example: select "Customer" from "MyTable" where "Customer" = 'Alice Chen' Note that if the table is created in PostgreSQL with the following SQL command: select * from MyTable then the table name will be converted to lower case, since it is not quoted. (For Oracle, it would be converted to upper case). Consequently, the table name need not be quoted in queries.

TIBCO Rendezvous Data Source

E10857: XML attributes in TIBCO Rendezvous messages are now supported

You may now display XML attributes contained in TIBCO Rendezvous messages. To display XML attributes, add $attrib= to the end of the field name in your alias definition. You may specify a specific attribute, or you may specify * to show all attributes. If you specify **, all values and all attributes will be displayed.

TIBCO Hawk Data Source

B10868: A microagent with a ":" in its name is now handled properly

The RTView TIBCO Hawk data source now recognizes a microagent with a ":" in its name as long as all ":" in the name are contained within a pair of "(" and ")". For example, the EMS controller microagent is given the name "JMS_controller (tcp://localhost:7222)" by default. This name is now recognized properly.

OBJECT LIBRARY

E10944: New visFlag property added to all objects

A property named visFlag has been added to all display objects. By default, this property is selected. If it is deselected, the object will be invisible in the Display Viewer and Display Builder. An invisible object can still be selected in the Display Builder, by clicking within the object's extent. The visFlag property can be attached to data, such as a local variable, to change its value dynamically.

Tables

B10988: Float data types now respond to filter properties

In previous versions, filterProperties did not get applied to float data. This has been fixed.

B10864: Sort icon fill color now matches column header color

The sort icon in the table header now displays in the header color.

B10865: Sorting now disabled if showSortIconFlag is off

Previously, if the sort icon was disabled (not visible), a click in the column header would still sort the table. Now the sorting is disabled if the sort icon is not visible.

B10866: Color of empty part of table is now configurable

A new property, tableBgColor, has been added to the table which sets the color for the empty part of the table. The default color is gray.

E10856: Multi-line text in table cells and headers is now supported

If the text for a column header or cell contains a newline (\n) character, the text will be displayed as multi-line text.

E10946: User can now set the scrollbar policy on the table

A new property, scrollbarMode, has been added to the table which allows you to set the scrollbar policy for the table. You may set the scrollbar policy to Never, As-Needed or Always.

E10803: Added columnsToHide property to allow hiding columns

Previously, all columns for a data attachment were displayed in the table. This was a problem for users that wanted to sort or filter by, or pass drill down substitution information from, a column that they did not want to display. To hide a column, enter the name of the column in the columnsToHide property. To hide more than one column, separate column names with a semicolon. If a column name contains a semicolon, enclose it in single quotes. For example: Plant;'Column; Name'

B10458: insertNewRowsFlag now works for tables attached to XML or SQL

The insertNewRowsFlag property on the table object (obj_table02) now works for XML and SQL data attachments. In previous releases, it had no effect if the table was attached to the XML or SQL data source.

Object Grid

E11001: Added bgVisFlag property to the Object Grid

The bgVisFlag property has been added to the Object Grid.

Bar Graphs

B10960: Autoscale values now rounded for the bar graph

When yAxisAutoScaleMode is set to "On - Include Min/Max" the y axis labels now scale to rounded values.

XY Graphs

E10953: Scrolling now supported in the XY graph

The XY Graph now supports a property named scrollbarMode, which can be set to one of three values: Never: Scrollbars are never displayed. This is the default value. Always: A horizontal and a vertical scrollbar are always displayed. As Needed: In this mode, a vertical scrollbar appears when the visible Y range is less than the Y range of any of trace on the graph. This will occur if the Y value is outside the range of the yValueMin and yValueMax or if a graph zoom operation is performed. A horizontal scrollbar will appear if the visible X range is less than the X range of all the data that is stored in the graph. This will occur if the X value is outside the range of the xValueMin and xValueMax or if a graph zoom operation is performed. The scrollbarSize property can be used to set the height of the horizontal scrollbar and the width of the vertical scrollbar, in pixels. The default value is -1, which indicates that the platform default (typically about 15 pixels) should be used.

E10954: The XY graph now supports zooming

The XY graph now supports a property named zoomEnabledFlag. If set to true, then a graph zoom operation can be performed as follows: Press the left mouse button in the graph's trace area, at one corner of the rectangular area to be expanded by the zoom. Then drag the cursor to the opposite corner of desired zoom rectangle and release the mouse button. While dragging, a yellow rectangle is drawn to show the zoom rectangle. The color of this rectangle is controlled by the cursorColor property. After the zoom is performed, the labels on the x and y axis will show the range of the zoom rectangle. If the scrollbarMode property is set to As Needed, a horizontal and/or vertical scrollbar may also appear. These can be used to scroll to regions of the graph outside of the zoom rectangle. To zoom out, left click in the graph's trace area while pressing the Shift key. The graph stores a history queue of up to 4 zoom operations. Each of these is restored, in order, by a zoom out. When the zoom history queue is empty, a zoom out will restore the graph to 100% of the x and y range. Note that if the graph has a drill down target and the user clicks rapidly when performing multiple zoom out operations, it may be interpreted as a double-click and a drill down operation will be performed on the display.

Trend Graphs

B10996: Cursor no longer crashes empty trend graph if ctrl key pressed

In previous releases of RTView, a trend graph with no data attachments would crash if the cursorFlag was turned on and the mouse was moved over the trace area with the ctrl key pressed. This has been fixed.

B10968: Pasting static properties no longer causes crash

In previous versions copying and pasting static values from one trend graph to another could crash RTView. This crash has been fixed.

B10961: Y axis limits set correctly if trace visibility is off

In previous versions, the y axis limits might have been set incorrectly if a trend graph had multiple traces with yAxisAutoScale set to ON, yAxisMultiRangeFlag set to OFF and one of the traces was made invisible. This has been fixed.

E10951: timeRangeOfData property added to trend graph to limit history

The trend graph supports a property named timeRangeOfHistory. It specifies the number of seconds of historical data to be loaded into the graph. Normally, the timeRange property determines both the visible time range of the graph and the time range of the historical data loaded into the graph. In some situations it may be useful to load more historical data into the graph, and use the horizontal scrollbar to view the additional data. For example, to configure an instance of the trend graph to have a visible time range of 1 hour and load 2 hours of historical data for trace 1: 1. check the trace1ValueHistoryFlag checkbox 2. set timeRange to 3600 3. timeRangeOfHistoryData to 7200 4. set scrollbarMode to As Needed When the graph is first displayed, it will show one hour of data ending with the current time. The horizontal scroll bar will allow the user to scroll to view data collected up to two hours ago. (This assumes the Historian is properly configured). The default value of timeRangeOfHistory is -1. If timeRangeOfHistory is zero or less, or if it is less than the value of timeRange, then the timeRange property determines the amount of historical data to be retrieved, as in previous releases.

B10950: Cursor and popup legend only show for trace area

The cursor and popup legend have been adjusted to only appear if the mouse pointer is inside the trace area of a trend graph.

B10952: Extreme zoom-in on trend graph or XY graph no longer crashes

In previous versions an exception could be thrown if the graph zoom feature is used to zoom in too many times on a long trace with a traceLineThickness of 1. This has been fixed.

E10943: Zooming now enabled on trend graphs

The Trend Graph now supports a property named zoomEnabledFlag. If set to true, then a graph zoom operation can be performed as follows: Press the left mouse button in the graph's trace area, at one corner of the rectangular area to be expanded by the zoom. Then drag the cursor to the opposite corner of desired zoom rectangle and release the mouse button. While dragging, a yellow rectangle is drawn to show the zoom rectangle. The color of this rectangle is controlled by the cursorColor property. After the zoom is performed, the labels on the x and y axis will show the range of the zoom rectangle. If the scrollbarMode property is set to As Needed, a horizontal and/or vertical scrollbar may also appear. These can be used to scroll to regions of the graph outside of the zoom rectangle. After a zoom is performed on the trend graph, it is paused (time shifts are not performed) until the graph is reset to 100% zoom. To zoom out, left click in the graph's trace area while pressing the Shift key. The graph stores a history queue of up to 4 zoom operations. Each of these is restored, in order, by a zoom out. When the zoom history queue is empty, a zoom out will restore the graph to 100% of the x and y range. Note that if the graph has a drill down target and the user clicks rapidly when performing multiple zoom out operations, it may be interpreted as a double-click and a drill down operation will be performed on the display.

E10855: Scrolling is now supported by trend graphs

The trend graph now supports a property named scrollbarMode, which can be set to one of three values: Never: Scroll bars are never displayed. This is the default value. Always: A horizontal and a vertical scroll bar are always displayed. As Needed: In this mode, a vertical scroll bar appears when the visible Y range is less than the Y range of any of trace on the graph. This occurs when the Y values are outside the yValueMin and yValueMax range or if a graph zoom operation is performed. A horizontal scroll bar will appear if the visible X range is less than the X range of all the data that is stored in the graph. This occurs if the X values are outside the visible time range or if a graph zoom has been performed. The scrollbarSize property can be used to set the height of the horizontal scroll bar and the width of the vertical scroll bar, in pixels. The default value is -1, which indicates that the platform default (typically about 15 pixels) should be used. If either scroll bar appears because a graph zoom has been performed, the trend graph is paused (no time shifts are performed on the trend graph) until the zoom is reset. Also, if the horizontal scroll bar appears because the timeRange property is less than the data time range, the trend graph will be paused if the scroll bar is used to scroll the trend graph's time axis. In this case, scrolling fully to the right will un-pause the trend (time shifts will resume). If new data is received while the trend graph is paused, the horizontal scroll bar knob may shift to the left and decrease in size, although the time axis values will remain the same. This behavior is expected, and indicates the visible time range's position and size in the overall time range of the data.

E10889: Newlines in timeFormat string using "\n" are now supported

Multi-line time axis labels are supported on the trend graph, by specifying '\n' in the timeFormat property. For example, to show month/day on the first line and the time on the second line of the time axis, specify the timeFormat as follows: MM/dd'\n'hh:mm:ss This will display a label similar to the following: 10/18 12:34:56

Radar Graphs

E11025: plotBgColor property added to radar graph

A new property, plotBgColor, been added to the radar graph. This property sets the background color of the plot area.

Control Objects

B10971: Combo box now always displays selected value

In RTView version 3.0a, the selected value of a combo box did not update unless it was attached to a local variable. This has been fixed.

B11020: List box now always displays selected value

In previous versions of RTView, the selected value of a list box did not update unless it was attached to a local variable. This has been fixed.

E10870: enabledFlag property added to all control objects

A property named enabledFlag has been added to all of the control objects. By default, this property is selected. If it is deselected, the control object will be disabled in the Display Viewer. It will ignore mouse and keyboard input and will appear grayed-out. The enabledFlag property can be attached to data, such as a local variable, to change its value dynamically. Note that control objects are always disabled in the main window of the Display Builder, regardless of the enabledFlag setting.

E10869: editableFlag added to text entry control objects

A property named editableFlag has been added to the text entry control objects. By default, this property is selected. If it is deselected, the text in the text entry field cannot be edited in the Display Viewer. However, the mouse and the arrow keys can still be used to move the cursor. This can be useful for displaying read-only text strings that are too long for a label object. Note that text entry controls are always disabled in the main window of the Display Builder, regardless of the editableFlag setting.

Distribution

E10962: Sample HTML files added to Windows program group

Sample applets have been added to the SL-GMS RTView program group in the Windows Start menu under Demos -> Sample Displays.

E10905: RTView command prompt added to program group

Windows users may now open an initialized command prompt from the SL-GMS RTView program group in the Start menu.

E10847: A Japense Windows installer is now available

A Japanese RTView installer is now available for Windows.

Version 3.0a2 Release Notes

RTView

Licensing

B10955: Licensing code added for Windows 2003 Server

In 3.0a1 the licensing scheme did not work with the Windows 2003 Server OS. This has been addressed.

Version 3.0a1 Release Notes

RTView

General

E10829: The selection rectangle is no longer in the Display Viewer

The selection rectangle is no longer drawn in the Display Viewer.

B10838: Memory leak when java applet is refreshed fixed

In previous releases of RTView, a memory leak occurred when the Display Viewer Applet was reloaded, either by refreshing the page in the browser or by leaving the page and returning to it. This has been fixed. In addition to this, Sun also reported a swing component leak in their plugin which was fixed in version 1.4.2_04.

E10731: RTView is now built using Java 1.4.2

RTView is now built using Java version 1.4.2. Users are now be required to use Java version 1.4.2_02+ to run RTView.

E10486: Edit functionality has been removed from the Display Viewer jar

In previous releases, the Display Builder and Display Viewer were packed into gmsjrtview.jar. Now, the Display Builder has been moved to gmsjrtvbuild.jar. This has significantly reduced the size of gmsjrtview.jar which will speed up downloading the Display Viewer Applet.

Image Server

E10821: User can now control the compression of generated bitmaps

An imagequality flag has been added to the Image Server to control the compression of the generated bitmaps.

B10815: Mouseover text shows for all objects with mouseOverFlag on

In previous releases, objects with the mouseOverFlag turned on would only show mouseover text in the Image Server if they also had a drill down target. This has been fixed.

B10792: No delay for initial data on new displays

In previous releases, when a new display was loaded, initial data was delayed for data that was not in an already loaded display. This has been fixed.

B10796: Users can now select trace markers over bars for drill down

In the previous release of RTView, users could not select a trace marker for drill down if it was drawn over a bar. This has been fixed.

Editing Functionality

E10819: Move to Front and Move to Back now available

Two new editing options have been added to RTView, Move to Front and Move to Back. Right-click on an object and choose Move to Front or Move to Back to move the selected object in front of or behind other objects in the Working Area. Objects are always drawn in front of links and swing components are always drawn at the front.

Object Property Dialog

E10808: Color dialog now shows selected color

The color chooser dialog now highlights the selected color and stays open until the user double-clicks on a color. The selected color is applied immediately.

Substitution

B10193: Recursive substitutions no longer crash RTView

In previous releases, recursive substitutions caused RTView to crash. This has been fixed.

Drilldown

B10641: Drill down branch functions now use application substitutions

In previous versions, if a drilldown branching function contained an argument that was set to an application-level substitution, the function would not return the proper value. This has been fixed. PAL0: If a drilldown branching function contains an argument that is set to an application-level substitution, the function will not return the proper value. It works if the argument is set to a literal or a drill down substitution.

E10812: Add Remove Existing Substitutions to Drill Down Properties

Select the Remove Existing Substitutions checkbox to remove existing drill down substitutions on the drill down window.

B10753: Can now load Current Display from a subdirectory

In previous releases, if you drilled down to a display in another directory, then tried to drill down from that display using the Current Display option, it failed. This has been fixed.

Command Execution

E10798: Table substitutions are now applied to commands

When a command is executed by double-clicking on an object that displays tabular data, table substitutions are now applied to the command string before it is executed.

Functions

B10809: Join function now supports using row names

The Join function now supports using row names. If the column name is left blank for the tables being joined, the row name, up to the first : if it contains a :, will be used instead of a column value.

E10801: Two format functions have been added

Two new functions have been added that format numbers. The Format Number function takes a single value and a Java format specification and returns a formatted number. The Format Table function takes a table and a list of column names with corresponding Java format specifications and returns a table with formatted number columns.

Licensing

E10736: Support component and data source licensing

The RTView licensing has been enhanced to support licensing for specific components and data sources. Users with existing RTView keys will not need to change their keys and all previously licensed components will continue to be licensed.

XML Server

E10802: Option to redirect http XML sources has been added

In previous versions of RTView, users were not able to redirect http XML sources through the XML Server. The product has been enhanced to allow this.

E10818: Option added to load initial data which will be cached

A new option, Preload Data for Configuration Files, is available in the XML Server when running in Socket Mode. If enabled, users can specify data configuration files (.rtv) file(s) to be preloaded by the XML Server. The data for these files will be immediately available to any clients that request it later, and will be updated during XML Server updates.

B10223: Enhance XML Server to use HTTPS and Secure Sockets

In this release, https can be used to read an XML data file from a webserver, or to connect to the XML Server (via the XML Servlet). When https is used, the transmitted xml data is encrypted. To use https, a webserver must be configured for https support. This may require the purchase and installation of a certificate from a Certification Authority (CA), such as Verisign. The following URL could be used in an XML data attachment to read XML data file from an https-enabled Tomcat webserver running on MyServer: https://MyServer:8443/rtvdata/update.xml The following HTML snippet configures an applet to use https to connect to the socket XML Server, via the XML servlet, on a host named MyServer: <PARAM NAME="xmlserver" VALUE="remote:https://MyServer:8443/xmlservlet/"> In addition, the XML Server now supports an SSL option which will encrypt the data transmitted on direct (non-http) socket connections to the server. No certificate or https support is required.

Transaction Message Monitor

B10791: Transaction Monitor now supports getting id from XML attribute

The Transaction Monitor now supports getting the id from an XML attribute in a TIBCO Rendezvous message. To specify that the id is in an attribute, append :$attrib=attribute_name to the end of the XML field containing the attribute.

DATASOURCES

XML Datasource

E10835: Spaces now supported in http XML source paths

An XML source can be accessed by a URL beginning with "http:". The end of the URL may contain pairs of parameters and values. In this release, spaces and other non-alphanumeric characters may be included in URL parameter names and values, for example: http://MyServer/getInfo.jsp?name=Dave O'Malley Spaces are still not permitted in the path portion of the URL (the portion between http: and ?).

SQL Datasource

E10431: Query interval added to Attach to SQL Data dialog

The Attach to SQL Data dialog has been enhanced to allow users to control the query interval for each SQL query. The query can be run one time, once every update period or once per user-defined query interval.

Local Datasource

E10827: Color chooser added to Local Variables dialog

If the Local Variable name ends with Color, the Initial Value field will contain a color chooser instead of a text entry field to make setting the initial value for a color variable easier.

OBJECT LIBRARY

E10810: Alarm thresholds added to obj_dualmeter and obj_percentchart

Alarm threshold properties have been added to obj_dualmeter and obj_percentchart.

E10799: Add currency shortcuts to valueFormat property

Many objects that display numeric values have a valueFormat property. This property has been enhanced to accept three shortcuts: $ for US Dollar money values, $$ for US Dollar money values with additional formatting, or () for non-money values that are formatted similar to money.

B10786: Background image of model in subdirectory if image is a URL

In previous releases of RTView, background images set from URLs would not load if the display was not loaded from the directory where RTView was started. This has been fixed.

B10574: First paste of properties between general objects copies alarms

In previous releases of RTView, when pasting properties from an object on the General Palette to another object on the General Palette, you must select the Paste Static or the Paste All Properties option twice to paste all properties. This has been fixed.

Tables

B10795: Setting color and font of cells and headers now supported.

Eight new properties have been added to obj_table02 to support setting the color and font properties for the table cells and headers: cellHeaderBgColor - set the background color of the table cells cellHeaderTextColor - set the text color of the table cells cellHeaderTextFont - set the font of the table cells cellHeaderTextSize - set the text size of the table cells columnHeaderBgColor - set the background color of the table cells Font and background colors applied by the filterProperties take precedence over these properties. columnHeaderTextColor - set the text color of the table headers columnHeaderTextFont - set the font of the table headers columnHeaderTextSize - set the text size of the table headers

Graphs (General)

E10831: cursorColor property added to the trend graph

A new property, cursorColor, has been added to the trend graph. This property allows the user to set the color of the cursor.

E10445: An XY graph has been added

An XY graph, obj_xygraph, is included in this release, for displaying xy data. It is similar in appearance to the trend graph and has many of the same features. However, instead of plotting y data values vs. time, the XY graph plots y values vs. x values. All data values are specified in the data attachment for the tableStringValues property. The first numeric column in the table specifies the x values, and each additional numeric column specifies the y values for one trace. For example, for the following data table, two traces would be drawn and each trace would have 3 points, corresponding to the x values 1, 2, and 3. x 2x 5x ---------- 1 2 5 2 4 10 3 6 15

Trend Graphs

E10832: legendTimeFormat added to trend graph

A new property, legendTimeFormat, has been added to the trend graph that sets the format for the time displayed in the legend using syntax from the Java SimpleDateFormat class. For example, MMMM dd, yyyy hh:mm:ss a would result in the form August 30, 2003 05:32:12 PM. If no format is given, the format specified for timeFormat will be used.

E10813: obj_trendgraph01 has been removed from the Object Palette

The single trace graph, obj_trendgraph01, has been removed from the Object Palette. Users should use obj_trendgraph02 instead with the traceCount set to 1.

E10793: trace*VisFlag property has been added to the trend graph.

A new property, trace*VisFlag, has been added to the trend graph that allows users to set the visibility of each trace.

Radar Graphs

E10763: A radar graph has been added to the Object Palette

A radar graph, obj_radar, has been added to the Graphs tab of the Object Palette. This graph allows users to compare multiple columns and rows of data.

Control Objects

E10830: fgColor has been added to the checkbox

A new property, fgColor, has been added to obj_c1btn_chk. This property allows the user to set the color of the check mark.

B10828: The selected value in the combo box is now updated

The selected value is now updated in obj_c1combobox when the list values change.

E10811: Up to 255 characters can now be entered in text entry objects

The text entry controls have been updated to allow up to 255 characters to be entered.

Distribution

E10555: Installer now available for Windows platforms

An installer is now available for customers using RTView on Windows platforms.

Version 2.0p1 Release Notes

RTView

General

E10755: More color choices are now available

The colors in RTView have been enhanced to include 220 new colors.

Functions

E10775: Sort Table function has been added

A new function, Sort Table, has been added. This function allows you to sort your data before it is displayed in an object.

E10454: Function results are now read by Historian

The Historian will store function results. This can be useful for displaying function results on a historical graph. A function result will be stored by the Historian if the function is defined in one of the display (.rtv) files listed in the Historian configuration and the function result is used as a data attachment for an object in the display file. A function result which is used only as an input to another function, or is not used at all, will not be stored. This is intentional, so that only function results which are displayed, and not intermediate function results, get stored. If a function with the same name is defined in more than one .rtv file listed in the Historian configuration, only the result of the first function will be stored. If a function has multiple arguments which are attached to data (for example, an ADD function where both arguments are attached to SQL queries), duplicate function results (same value and timestamp) may be stored by the Historian.

DME - Data Historian

E10784: Load from history never fails for multiple graph traces

In previous releases of RTView, if several graph traces within a single graph loaded their initial data from the Historian, some of the traces occasionally did not get their data.

B10770: Historian and XML Server no longer have variable limit

In previous releases of RTView, there was a limit to the number of data attachment on a single object that would be stored by the Historian or served by the XML Server. This has been fixed.

DME - XML Server

E10764: XML Server performance with SQL has been enhanced

The XML Server performance when serving SQL data has been improved.

DATASOURCES

SQL Datasource

E10687: Option to make general SQL query now available

The SQL data attachment has been enhanced to allow users to enter their own SQL queries.

E10738: SQL queries are now optimized

The SQL datasource has been enhanced to group multiple queries for different columns on the same table with the same filter into a single query. This results in fewer queries on the database.

OBJECT LIBRARY

E10778: labelTextHeight and labelTextColor properties added to labels

Two new properties, labelTextHeight and labelTextColor, have been added to obj_label05, obj_label05s, obj_label11, obj_label11s, obj_label06 and obj_label14.

B10776: Loading images from URL paths now supported

The objects which support images as well as the background have been enhanced to support loading images from a URL path.

E10773: New meter added

A new meter, obj_speed, has been added to the Meters palette.

Graphs (General)

B10723: valueDivisor property fixed to affect the mouseover data

In previous versions the value displayed in the mouseover popup on graphics was not affected by the valueDivisor property. This has been fixed.

E10774: Changing color/style of markers for thresholds now supported

The trend graphs and bar graph have been enhanced to allow you to change the color and style of the trace markers according to their values.

Bar Graphs

E10759: Specifying fill patterns for individual bars now supported

The bar graph has been enhanced to allow you to set the fill pattern of each bar.

E10741: Waterfall option now available for bar graph

A new property, drawWaterfallFlag, has been added to the bar graph. When this property is enabled, each bar group will draw as an offset stack.

E10742: Specifying colors for individual bars now supported

The bar graph has been enhanced to allow you to set the color of each bar.

E10743: Changing color/style of bars for thresholds now supported

The bar graph has been enhanced to allow you to change the color of the bars according to their values.

E10443: Option to show value on bars now supported

A new property, barValueVisFlag, has been added to the bar graph to allow you to show the values of each bar in a label on the bar.

E10754: Traces now supported on the bar graph

Two properties have been added to support traces on obj_bargraph: 1. traceValueTable: This table defines the trace points to be plotted on the bar graph. For a bar graph drawn vertically, the data values from traceValueTable define the Y values of the trace points, and the X positions of the bars define the X values. For a horizontal bar graph, these roles are reversed. A marker is drawn for each trace point. If there are fewer than two groups of bars, no trace lines are drawn, just a single set of trace markers. If rowSeriesFlag is on, then a trace is drawn for each row in traceValueTable. Each trace contains one point for each column in traceValueTable that contains numerical data. If rowSeriesFlag is off, then a trace is drawn for each column in traceValueTable that contains numerical data. Each trace contains one point for each row in traceValueTable. There are three possible configurations for traceValueTable: - traceValueTable is unattached: No traces are plotted. - traceValueTable and tableStringValues are attached to the same table: In this case, the number of traces will be the same as the number of bars in each group. Trace 1 will be drawn from the top of bar 1 in group 1, to the top of bar 1 in group 2, and so on. Trace 2 will be drawn from the top of bar 2 in group 1, to the top of bar 2 in the group 2, and so on. - traceValueTable and tableStringValues are attached to different tables. If both tables have the same number of rows, and the same number of columns of numeric data, then the behavior is similar to (2) above, except that the Y trace points (X if drawing horizontally) can be anywhere inside, above, or below the corresponding bar, according to the data value from traceValueTable. If the number of rows and or data (numeric) columns in the two tables differ, then the behavior depends on the setting of rowSeriesFlag. The next two paragraphs describe the behavior if rowSeriesFlag is on: If traceValueTable has N fewer data columns than tableStringValues, then no trace points will be plotted for the last N bar groups. If traceValueTable has M more data columns than tableStringValues, then the graph will be extended by M groups containing trace points but no bars. (In the extreme case, if tableStringValues has no data columns, or has no data attachment, each bar group will contain M traces and no bars). If traceValueTable has N fewer rows than tableStringValues, then the last N bars in each group will have no corresponding trace. If traceValueTable has M more rows than tableStringValues, then each bar group will have M more traces than bars. (The visible bars will be sized and spaced as though the M extra bars were visible, to allow room for the extra traces. In the extreme case, if tableStringValues has no rows, or has no data attachment, each bar group will contain M traces and no bars). If rowSeriesFlag is off, then the behavior is described by switching "rows" and "data columns" in the preceding two paragraphs. 2. traceProperties: This string property defines the colors and styles to use for the trace lines and markers. The format of the string is as follows. For each trace, the string contains 5 integer values separated by commas, with a semicolon after the last value. The order is as follows: line_color,line_style,line_width,mark_color,mark_style; Any of the values can be omitted, and the default will be used. So the following string is valid: 5,2,,,3; The entry for a trace can be left empty: 5,2,,12,3;;7 The above will assign non-default styles to trace 1 and 3, and will use the default styles for trace 2 (and any additional traces). The default styles are: line_color: barColor darkened line_style: 1 (solid) line_wdith: 1 mark_color: barColor 2x darkened mark_style: 2 (+) If -1 is specified for line_color, the trace is invisible. The following traceProperties string will make the third trace invisible: ;;-1 3. Other properties: If mouseOverFlag is on, a tooltip will be shown for each trace marker, similar to the tooltip shown for a bar. But mouseOverHighlightFlag has no affect on traces. A drill down can be done by double clicking on a trace marker. The values from the corresponding row and column in traceValueTable will be used for the table drill down string substitutions ($col1, $cellData, etc). If valueDivisor is nonzero, the data values from traceValueTable are divided by it before plotting. If drawStacked flag is on, the data values from traceValueTable are summed before plotting. If drawWaterfallFlag is on, no traces are drawn.

Trend Graphs

E10783: Value now shows in legend if trace attached to valueTable

In the trend graphs in previous releases of RTView, no value was shown in the legend for traces driven by trace*ValueTable or valueTable. This has been corrected to display the value of the last point plotted.

E10765: Users can now change text height of axis tick labels

Two new properties, xAxisLabelTextHeight and yAxisLabelTextHeight, have been added to the trend graphs to allow users to set the height of the axis labels.

E10766: Spacing in trend graph legend now configurable

A new property, legendValueMinSpace, has been added to the trend graphs to allow users to set the space between the value and the label in the legend.

E10781: New properties timeRangeBegin, timeRangeEnd added to trend graph

Two new properties, timeRangeBegin and timeRangeEnd, have been added to the trend graphs to allow you to specify the time to plot in the graph. If only timeRangeBegin is specified, then the timeRange property is added to determine timeRangeEnd. If only timeRangeEnd is specified, then timeRange is subtracted to determine timeRangeBegin. If both are specified, then timeRange is set to the difference between the two and any value entered for timeRange will not be used until either the timeRangeBegin or timeRangeEnd is cleared.

Version 2.0n1 Release Notes

RTView

Substitution

B10029: Substitutions on existing panels now always cleared

In previous versions of RTView, substitutions set on an existing panel were not always cleared. This has been fixed.

DATASOURCES

E10749: Trend graph objects are now always freed

In previous versions of RTView, trend graph objects were not always freed. This has been fixed.

XML Datasource

B10586: XML sources are now read immediately in applets

In previous versions of RTView, when a new window was opened in an Applet, new XML sources are not read until the next update pass. XML sources are now read immediately unless the Applet parameter xmldelay is set to true.

SQL Datasource

B10758: 1.3 JVM no longer crashes when ODBC driver is used

In RTView version 2.0m, if Java 1.3 was used to run the Display Builder or Display Viewer, and if the initial display had SQL data attachments which used the JDBC-ODBC driver, the Java Virtual Machine would occasionally crash shortly after startup. This has been fixed.

OBJECT LIBRARY

Tables

B10760: New property columnAlignment added for obj_table02

You may now set the column alignment for each column in obj_table02 using the columnAlignment property. To specify the alignment for a column, enter the column name followed by a : then the alignment index. The supported column alignment indexes are 1 = align left, 2 = align center and 3 = align right. If the column name contains a space, it must be enclosed in '. You may specify multiple column alignments separated by spaces. For example a table has the following for the columnAlignment property: 'Units Completed':1 Plant:2 'Units in Production':3 The Units Completed column will be left aligned, the Plant column will be center aligned and the Units in Production column will be right aligned. Columns that are not included in the columnAlignment property will use the default alignment, which is center aligned for columns containing checkboxes and left aligned for all other columns.

Object Grid

B10752: Object grid no longer crashes occasionally

In previous versions, if multiple objects were specified in the objectClassName property of the object grid, selecting an object would occasionally crash. This has been fixed.

Version 2.0m2 Release Notes

RTView

Functions

B10750: Cannot edit existing functions

In RTView version 2.0m1, the Edit Function Dialog did not allow you to apply changes to existing functions. This has been fixed.

Version 2.0m1 Release Notes

RTView

Java Version Dependencies

B10593: Background Properties fix for JDK1.4.2

In previous versions of RTView, the Background Properties Dialog fields would not always become enabled when they should when using JDK1.4. This has been fixed.

Image Server

B10696: Image Server servlet no longer bloats tomcat log file

In previous versions of RTView, the Image Server servlet caused a stack trace to be printed to the Tomcat log file each time an image was requested. This did not prevent the servlet from functioning properly, but did cause the log file to grow quickly. This problem has been fixed.

Editing Functionality

B10701: File selectors modified to improve initialization speed

In previous releases, the file selectors in the Background Properties, Object Properties and Drill Down Properties dialogs have recursively searched all subdirectories to build the file list. This was causing the dialogs to be very slow to initialize when the current directory had several levels of directories under it. To speed up dialog initialization, file selectors have been modified to only show the files in the current directory and one subdirectory level beneath it.

Substitution

E10709: User-defined column substitutions now supported

Users may now specify any number of columns from an object's tabular data attachment to include in drill down substitutions using the drillDownColumnSubs property. This property is available on all table objects as well and the bar and pie graphs.

Drilldown

B10714: Scale no longer enabled in drill down windows

In previous version of RTView, the Scale popup menu item was enabled in drill down windows, but set the scale mode on the main window. This has been fixed.

Functions

B10713: Multiple functions with the same name are no longer allowed

In previous versions of RTView, users could define multiple functions by the same name. This caused data attachments to these functions to behave incorrectly. This is no longer allowed. If a previously built display contains more than one function by the same name, only the first one will be added to the display and an error message will print to the console.

DME - Data Historian

B10728: Historian no longer crashes with -daemon with certain objects

In previous versions of RTView, bar and pie graphs caused the XML Server to crash when running in daemon mode. This has been fixed.

E10703: History table names are now configurable

The Historian has been enhanced to allow users to specify the names of the HISTORY and HISTORY_S tables.

DME - XML Server

B10717: XMLServer crashes with -daemon if config files have certain objs

In previous versions of RTView, bar and pie graphs caused the XML Server to crash when running in daemon mode. This has been fixed.

B10695: Functions and local variables now work better with XML Server

In previous versions of RTView, the value of the functions and local variables did not always update correctly when running with the XML Server. This has been fixed.

B10697: Enable Data and Update Rate now work with -xmlserver://

In previous versions of RTView, the value of the Enable Data and Update Rate fields in the Options dialog had no effect when running with the XML Server in socket mode. This has been fixed.

E10707: XML Server now serves XML data, using the -xmlredirect option

When running in socket mode, the XML Server now serves XML data if the Redirect XML Data option is selected in the Options dialog of the Display Builder.

E10702: Servlet option has been added to the XML Server

A servlet option has been added to the XML Server, so that clients can get their data through HTTP requests. This allows the Display Viewer Applet to update displays using the XML Server in Socket mode without having to open additional ports in the firewall.

DATASOURCES

SQL Datasource

E10721: Error handling improved for SQL data source

Two new command line options have been added for the SQL data source. The dbretry option causes RTView to retry connecting to a database after a failed connection attempt at the specified rate. The dbfailedlimit causes RTView to disconnect and reconnect to a database after the specified number of consecutive errors.

E10712: SQL data source now reads a repository file

The SQL data source now reads a repository file to populate the Attach to SQL Data Dialog menu items. If the Get Tables and Columns from Database option in the SQL tab of the Options dialog is selected, the data from the repository will be merged with information queried from the database.

TIBCO Rendezvous Datasource (TibRvView)

E10705: Nested TIBCO Rendezvous messages and embedded XML data supported

RTView has been enhanced to support nested TIBCO Rendezvous messages as well as XML data embedded in TIBCO Rendezvous messages.

TIBCO Hawk Datasource (HawkView)

B10710: getAlertData no longer returns ruleBaseState for all alerts

In previous version of RTView, the getAlertData method returned the TIBCO Hawk ruleBaseState for all alerts rather than the alertState for each individual alert. This problem has been fixed.

OBJECT LIBRARY

E10258: User-defined colors are now supported

J/Developer users can now use background models and custom objects that have been generated with a custom colordef.dat in RTView displays.

Tables

B10718: obj_table03 no longer crashes with invalid column name

In previous versions of RTView, obj_table03 crashed if an invalid column name was specified in the data attachment. This has been fixed.

Version 2.0k Release Notes

RTView

Builder/Viewer Application Body

E10658: New option for single click drill down and command execution

You may now use single click to drill down and execute commands in the Display Viewer. To enable single click, select Single Click for Drill Down and Commands in the Application Options dialog.

E10026: Background model properties made available

Properties of the background model are now available to set and attach to data. This allows J/Developer and J/Net customers to import their converted models into the background of their displays and set the values of renamed variables or attach them to data.

Drilldown

B10680: Drilldown crash fixed

In previous releases of RTView, a crash occurred when drilling down to the same window if a text entry control had focus. This has been fixed.

Licensing

B10653: keys@sl.com now available for requesting license keys

You may now email SL for an RTView license key at keys@sl.com.

DME - Data Historian

E10681: New command line argument to suppress loading history data

A new command line argument and applet parameter have been added to the Display Builder and Display Viewer to suppress loading history data into your displays. To suppress history data from the command line, use -nohistory. To suppress history data from the applet parameters, add a parameter named nohistory and set its value to true.

E10676: Periodic purge options added to Historian

An option to periodically delete records from your database has been added to the RTView Historian.

E10671: Data retrieval from large RTVHISTORY database improved

In previous releases of RTView, when history data was loaded into a graph trace, all data for that object in the history database was loaded. This has been improved to only load as much data as the graph will display.

DME - XML Server

B10552: XML Server enhanced to support socket communication

The XML Server has been enhanced to support socket communication. In previous versions of RTView, the XML Server read configuration files to determine which data to serve. It then output an XML file to be used by the Display Builder and Display Viewer. This functionality is still supported. If running the XML Server in socket mode, data requests are sent from the Display Builder and Display Viewer via the socket and the appropriate data is returned. No configuration files are necessary. See the XML Server section of the documentation for more information on using the XML Server in socket mode.

DATASOURCES

XML Datasource

E10427: History data is now queried through the XML Server

When running the Display Builder, Display Viewer or Display Viewer Applet with the XML Server using the socket option, history data is now queried through the XML Server. In previous versions of RTView, history data was queried directly from the database. When running with the XML Server without the socket option, the history data is loaded directly from the database as before.

SQL Datasource

B10668: Filter field bug in Attach to SQL Data dialog fixed

In previous releases, the Filter field in the Attach to SQL Data dialog and the Column field in the Attach to Function Data dialog did not always reset properly when the Reset button was pushed. This has been fixed.

TIBCO Hawk Datasource (HawkView)

E10679: New option to request existing Hawk Alerts

In previous released of RTView, only alerts that were generated after a data attachment was made were shown in the display. An option has been added to the TIBCO Hawk Method and Alerts tab of the Option dialog to request existing alerts.

OBJECT LIBRARY

E10645: New property, borderPixels, added to Graphs ad Tables

The objects on the Tables and Graphs tabs of the Object Palette all have a new property, borderPixels. This property controls the amount of space between the edge of the object and its contents. The size of some of these objects in existing displays may adjust slightly due to this change.

Tables

E10663: The Standard Table, obj_table02, now supports editing

The Standard Table, obj_table02, now supports editing. Edited data is made available to a Java class which can be customized by the user to update their systems.

Object Grid

B10649: Object grid drilldown bug fixed

In previous releases of RTView, the substitutions passed down from an object grid to a drill down window were incorrect if the object grid was sorted. This has been corrected.

Graphs (General)

B10669: valueDivisor property made consistent for all graphs

In previous releases, the valueDivisor property did not behave the same in all graphs. This has been corrected. The valueDivisor is now applied to the traces as well as yMinValue and yMaxValue.

Trend Graphs

E10662: Additional date/time formats supported in trend graphs

Two new date/time formats are now supported for the *valueTable properties for the trend graphs. The new supported formats are yyyy-mm-dd hh:mm:ss (2004-01-09 12:00:00) and mm/dd/yyyy hh:mm:ss (01/09/2004 12:00:00).

Version 2.0j Release Notes

RTView

General

E10485: Implemented Image Server for non-applet thin client

The RTView Image Server allows users to deploy displays using a browser without applet code being downloaded or executed on the client.

Application Framework

E10289: Support multiple display panels in main window

Multiple display panels are now available in the Display Viewer Application, Display Viewer Applet and Image Server. This allows users to deploy several displays arranged in separate panels within a single window.

Applet Functionality

B10644: SL Logo panel moved to bottom of Display Viewer

The SL logo panel has been moved below the display in the RTView Display Viewer Application and Applet.

B10625: The default display size changed from 570x428 to 576x432

The default display size has been changed from 570x428 to 576x432.

Substitution

B10628: Table data cleared when substitutions change.

In previous versions of RTView, table data was not cleared in an existing window before new drill down substitutions were applied. This has been fixed.

Drilldown

B10603: Close child windows invoked from a drill down window.

Child windows, invoked from within a drill down window, will now be closed when the originating window is closed. Since child windows depend on both path information and substitutions contained in the parent window, they must be closed when the parent is closed.

E10447: Support drill down branching based on a function result

The drill down functionality has been enhanced to include a drill down branch function. If a function is specified, the return value from this function will be appended to the drill down file name. This allows you to drill down to different displays from the same object, depending on the return from this function.

Functions

E10608: Enhanced the Count Unique Values function to use sample values

The Count Unique Values function has been enhanced to allow the user to provide a Value List column and a Restrict To Value List flag.

E10609: Added a Sum By Unique Value function.

A new function has been added, Sum By Unique Values. This function provides a way to subtotal the values in table column, organized in a table according to a corresponding unique values column.

B10611: The Filter By Row function works for any column in table

The previous version of the Filter By Row function only worked if the Filter Column was the first column in the referenced Table. This has been corrected.

E10605: Added Replace Value function

A new function has been added, Replace Value. This function looks up the specified value in the associated list of replacement values. If found, the replacement value is returned. A flag allows you to control whether the original value or no value is returned if no match is found.

E10599: Added Column(s) field to Attach to Function Data dialog

The Attach To Function Data dialog has been enhanced to include a Column(s) field. You may use this field to specify the column(s) from the selected function to use in your data attachment.

E10620: Function list in Edit Function dialog re-organized

The list of functions in the Edit Function dialog has been reordered. The functions are organized into 2 groups. The functions in the first group act on scalar data and the functions in the second group act on tabular data. Within each group, the function names are alphabetized.

TME - Transaction Message Monitor

E10623: Enhanced Transaction Monitor to get id from XML in message

The Transaction Monitor now supports using data nested in xml data within a TIBCO Rendezvous message as the tracking id.

DATASOURCES

XML Datasource

E10624: Performance of the XML parser improved

The performance of the XML parser has been significantly improved.

SQL Datasource

B10036: SQL data attachments interpret BIT SQL type as boolean

Data of type BIT returned from an SQL query is now displayed as a boolean.

E10601: Added Static Data check box to Attach to SQL Data dialog

A Static Data check box has been added to the Attach to SQL Data dialog. If selected, the data for the specified data attachment will only be queried once. This is useful for data that will not change in your database while you are running RTView.

TIBCO Rendezvous Datasource (TibRvView)

E10621: Opaque message values supported

TIBCO Rendezvous message data of type TibrvMsg.OPAQUE can now be displayed.

TIBCO Hawk Datasource (HawkView)

E10606: Added Agent field to RTViewDs getPlatform return

The column Agent has been added to the RTViewDs getPlatform return. It returns a string containing the name of the TIBCO Hawk Agent.

E10607: Added Time to RTViewDs getAlertData return

The column Time has been added to the RTViewDs getAlertData return. It returns a string containing the time that the TIBCO Hawk alert was generated.

SAMPLES (DEMOS)

Hawk Sample Displays

E10392: Sample screens for Solaris Hawk Agents included

The hawkdisplays directory now contains sample displays that show data from Solaris microagents. To access this display for your agent, open sample_agent_tables.rtv and drill down on your Solaris agent.

E10272: Illustrate drill down branching using Agent operating system

The Hawk Displays examples have been enhanced so that drilldown to agent detail results in different displays based on the Agent OS information. A Replace Value function called branch_on_platform is specified as the Drill Down Branch Function. The value returned from the function is appended to the drilldown string. The specified drilldown target is sample_detail_agent.rtv. If the RTViewDS getPlatform returns Windows NT, _winnt is appended to the drilldown string and sample_detail_agent_winnt.rtv becomes the drilldown target. If the RTViewDS getPlatform returns SunOS, _sunos is appended to the drilldown string and sample_detail_agent_sunos.rtv becomes the drilldown target. If RTViewDS getPlatform returns a value not listed in the branch_on_platform function is not listed in the Replacement Values field of the function, the drill down target remains sample_agent_detail.rtv.

OBJECT LIBRARY

E10636: Legend size and borders consistent on pie, bar and trend graphs

The graphs have been enhanced to have consistent legend and border sizes.

E10637: Label visibility on tables and graphs independent of bgVisFlag

The visibility of the label on table and graph objects is no longer dependent on the bgVisFlag. To remove the label, you must now remove the label string in the object properties window. Displays created with previous releases are automatically converted.

Tables

E10402: Added columnDisplayNames to the standard table

The standard table has been enhanced to include the columnDisplayNames property which allows you to modify the name displayed in the column headers.

Graphs (General)

E10472: Enhanced yAxisAutoScaleFlag to provide way to anchor graph axis

In the bar and trend graphs, the yAxisAutoScaleFlag has been changed to yAxisAutoScaleMode, which has 3 possible values; Off, On, and On - Include Min/Max. On and Off behave as before. On - Include Min/Max is an enhancement which causes the scaled min/max range to include the yValueMin and yValueMax property values in the autoscale. This provides a way to anchor the axis in your graph.

Bar Graphs

B10561: Lag in mouseOverHighlight fixed

In previous versions, when dragging the mouse over the bars in a bar graph that has the mouseOverHightlightFlag selected, the next bar is highlighted before the previous bar is unhighlighted. This has been corrected.

Version 2.0i Release Notes

RTView

General

E10560: Changes to RTV file format

The display files written by the Display Builder use XML format. Since XML uses " (the double quote character) to delimit data fields, special handling is required when " appears in a data field. In previous releases, if a " appeared in an object property (in an object's label string, for example), it would be saved in the display file as a two character sequence: \" . However, this does not conform to standard XML format. With this release, the standard XML escape for " will be used. An XML escape begins with an ampersand &, followed by a short sequence of alphabetic characters, and ends with a semicolon. The character sequence in the escape for " is quot. As of this release, display files written by the Display Builder will include a version number. When a display is loaded, the XML parser looks for this version number. If it is found, the parser will expect the XML escape for all " characters that appear in object properties. If the version is not found, the parser expects the old \" sequence. This provides support for displays created in previous releases. With this release, XML escapes will also be used if the &, <, or > characters appear in object properties.

Java Version Dependencies

B10452: Selection of table objects with JDK 1.4

In previous versions of RTView, users running with JDK1.4 had to select the edge of table objects to select empty tables. This has been fixed.

Applet Functionality

E10505: Updated version of jdk plugin downloaded for swing applets

Swing applets require a Java plug-in version 1.3.1_02+. When run in Internet Explorer, the Swing applets included on the deliverable will prompt the user and download the plugin if a Java plugin-in version of 1.3.1_02 or greater is not found. When run in Netscape, they will prompt the user to download the plugin if a Java plugin-in version of 1.3 or greater is not found.

Builder/Viewer Application Body

E10234: Printing added to RTView Display Builder and Viewer

Displays can now be printed from the RTView Display Builder and Display Viewer. To print a display, select Print from the File menu.

Editing Functionality

B10317: List of images now available where appropriate

The Background Properties and Object Properties dialogs have been updated to allow you to select from a list of images, in addition to being able to type an image name in.

Substitution

B10527: Substitution handling now allows for : in substitutions

The substitution handling has been enhanced to allow : in substitution values.

B10528: Substitution handling now allows for spaces in substitutions

The Historian and XMLServer have been enhanced to allow spaces in substitution values.

Drilldown

B10479: Display names in Drill Down Properties dialog now alphabetical

The display names in the Drill Down Properties dialog are now listed in alphabetical order.

Command Execution

E10543: System Commands have been added to RTView

System commands have been added to RTView. These commands allow you to issue DOS or Shell commands, url commands and user defined commands as well as play sounds and open html files in a browser. You may execute these commands manually or configure the objects in your display to automatically execute these commands on a threshold.

E10481: System commands available for threshold and manual execution

You may now configure System commands for threshold and manual execution. If your version of RTView supports TIBCO Hawk and TIBCO Rendezvous, these commands are also available for both threshold and manual execution.

Functions

E10589: New Join, Select, DateTime, and Duration functions

Several new functions have been added to RTView. Each function and its arguments are described in the Function Dialog that is used to select the function. The "Join" function is used to do standard Inner Join of two tables. The left and right tables and join column names are provided by the user as arguments. The "Select" function provides a convenient means of selecting a single column from a table. The "DateTime" function is used to convert a long integer date/time value into a formatted textual date/time string. The format argument allows the user to specify the format of the converted string. If not format is given, the default format results in a string of the form "08/30/03 06:35 AM". The "Duration" function takes a Duration argument in milliseconds and returns a text string representing that Duration. If no Duration Format is specified, the string is returned in the form "15:32" (hours:minutes). The Duration Format may contain any of the characters "ds.", indicating that days, seconds, or milliseconds are to be included in addition to hours and minutes in the returned string.

E10595: Get Substitution function added

A new function has been added, "Get Substitution", which will return the value currently assigned to a substitution parameter. The function takes one string argument, such as "$agent", and returns the value for that substitution. A label can be attached to this function to display the current substitution value.

E10562: Filter by Row function added

The "Filter By Row" function has been added. This function provides the same filter functionality that is available in most data source attachments. You specify the Filter Column Name and the Filter Value. If these match, then the corresponding row is copied from the source Table to the output Table.

B10563: The "Count" function has been modified to return INTEGER

The "Count" function was incorrectly returning a DOUBLE value in the previous version. It now correctly returns an INTEGER.

E10480: Percent and Combine Tables functions added

The following Function Types have been added and are now available in the Edit Function dialog: 1. Percent This Percent function will compute the percentage of the given Value, using the range defined by Min Value and Max Value. All three arguments must be numbers. The percentage is returned as a number between 0 and 100. The calculation performed is: (Value/(MaxValue-MinValue)) * 100. 2. Combine The Combine function combines Table 1 and Table 2 into a single table. Both input tables must have the same number of rows. The combined table will contain all the columns from Table 1 followed by all the columns from Table 2, and will contain the same number of rows as the input tables. The rows in the combined table will be in the same order as in the input tables. The row names from Table 1 are used as the row names in the combined table.

DME - XML Server

B10588: Fix for spaces in history configuration file names

In versions of RTView prior to 2.0i1, the XML Server did not handle spaces correctly in the path for history configuration files. This problem has been fixed.

TME - Transaction Message Monitor

B10551: Id fields in TRANSACTIONS.ini are no longer overwritten

In previous releases, id fields specified in TRANSACTIONS.ini were sometimes overwritten. This has been fixed.

E10440: Permit RV messages coming from different service ports

Users can now specify transport information for each transaction definition and for each message defined in TRANSACTIONS.ini. Two new keywords have been added to TRANSACTIONS.ini to support this: transTransport service network daemon msgTransport service network daemon If no transports are specified for a transaction definition or a message in the TRANSACTIONS.ini file, all messages will be monitored using the service, network and daemon options specified in RVTMOPTIONS.ini or on the command line. If the service network and daemon are specified for a transaction definition, all messages in that definition will be monitored using those settings unless the service network and daemon have been specified for that message. A "-" must be specified for any options left blank. For the following transaction definition, the first and last messages will be monitored using service port 5555. The second message will be monitored using service port 7777. startBusTransaction 'New Service Order' Siebel RoadRunner nso transTransport 5555 - - msg SL.NEW_SERVICE_ORDER.BEGIN.SIEBEL.ORIG DATA msg SL.NEW_SERVICE_ORDER.BEGIN.SIEBEL.CANONICAL DATA msgTransport 7777 - - interface NSO_Siebel-Oracle-IM1 IM1 msg SL.NEW_SERVICE_ORDER.BEGIN.SIEBEL.ORACLE DATA interface NSO_Siebel-Oracle-IM2 IM2 endBusTransaction

DATASOURCES

B10524: Bug with selecting the only first column of data has been fixed

In version 2.0h1, when a data attachment specified the first column of data or specified a subset of the columns in the same order they were returned from the datasource, all columns of data were displayed. This has been fixed.

XML Datasource

B10544: Bug displaying data from static xml source with filter fixed

In previous version of RTView, data attachments to static XML Sources using filters did not return any data. This has been fixed.

E10498: XML Source Definitions have been enhanced

The XML source definitions available on the XML tab in the Options dialog have been enhanced to allow the user to specify more options. An XML source is now defined by the specifying the following fields and options: 1. XML Source Name This field specifies the name of the XML source. The name is used to attach an object to this source in the Attach to XML Data dialog. The name can correspond to the name or URL of an XML file or, by specifying the XML Source Path (see below), it can be a symbolic name or 'alias'. 2. XML Source Path This field specifies the path to the XML file for this source. If this field is left empty, then the XML Source Name is used as the path. The path can be a relative or an absolute file path, or it can be a URL. The path can contain substitutions. 3. Use XML Source Prefix If this option is selected, then the XML Source Prefix (defined on the XML tab of the Options dialog) is prepended to the XML Source Path before reading the XML file. This option is selected by default. 4. Static If this option is selected, the XML source is read only once, at startup. Otherwise, the XML source is read on each update cycle. This option is deselected by default. 5. Contains Substitutions This option can be used to control whether or not an XML source is read. The Display Builder reads each XML source in order to populate the Attach To XML Data dialog menus, even if no objects are attached to it. If the source can't be read, its name is displayed in yellow in the XML tab and in the Attach to XML Data dialog, and an error message is printed on the console. Normally, the Display Builder will read all XML sources at startup, and after an XML source is added or edited. But, if this option is selected, the Display Builder will not read the XML source unless substitutions are defined which apply to the XML Source Path.

SQL Datasource

B10175: Multiple word substitutions now supported for SQL

Multiple word substitutions are now supported in the filter for SQL data attachments.

SAMPLES (DEMOS)

E10032: Tutorial Display have been moved to demos/tutorials

Tutorial displays that were previously included in the rtview/xmldisplays directory have been moved.

E10433: Features and Tutorial Displays have been added to demos

Displays that outline basic features of SL-GMS RTView have been added to the demos/features directory. All features displays are accessible from demos/features/alldisplays_features.rtv. Tutorial displays that describe how to use specific objects and product features have been added to the demos/tutorials directory. All tutorials are accessible from demos/tutorials/alldisplays_tutorials.rtv

OBJECT LIBRARY

E10509: Antialiasing may now be toggled in the Options Dialog

An option to enable or disable antialiasing has been added to the General Tab of the Options Dialog. This option smoothes the graphics in the display. Antialiasing is enabled by default.

Links

E10211: Enhanced link drawing has been added

The Links tab features three link objects. The Direct link draws a straight line between the objects it connects. The Orthogonal link draws a line at right angles between the objects it connects. The Direct Offset link attaches to the object at a right angle, but draws a diagonal line for the remainder of the link. Once a link is in your display, you may switch between the different types of links by setting the linkPathType property. To connect objects, select a link from the Links tab. When you select an object from the Links tab, a green CONNECT tool tip will appear indicating that the application is in Connect mode. Click on two objects in your display to connect them. To cancel Connect mode, right-click.

Tables

B10570: Bug in combining a column filter with a Hide Rows filter fixed

In previous versions of RTView, the table would crash if the filter properties contained a filter which applied to a column and a filter that uses Hide Rows.

Graphs (General)

B10550: Two new properties, timeShift and timeRange, in trendgraphs

The following improvements have been made to the graph objects obj_trendgraph01 and obj_trendgrap02: timeShift: This property defines the interval, in seconds, at which the time axis of the graph should be shifted to the left. A value of zero indicates that the graph should be shifted on every update cycle. With this release, a value of -1 for the timeShift property indicates that the trace should shift only when necessary to plot new points. That is, the trace will not shift until new data is received. The timestamp at the right edge of the trace will correspond to the timestamp of the most recently plotted data point. timeRange: This property indicates the time range of the graph, in seconds. Data with timestamps outside of this range is not plotted. With this release, a value of -1 for timeRange indicates that all available data should be plotted. This can be useful, for example, for plotting all the data stored in an SQL database table. (Note: The maxPointsPerTrace property limits the number of points that can be plotted on a trace. This property's default value is 1000).

E10416: New property drawHorizontalFlag added to bargraphs

The drawHorizontalFlag property has been added to the bar graph. By default the drawHorizontalFlag is not selected and the bars in the graph draw vertically. If the drawHorizontalFlag is selected, the bars in the graph draw horizontally.

Bar Graphs

E10430: New property mouseOverHighlightFlag added to bargraphs

The mouseOverHighlightFlag property has been added to the bar graph. When the mouseOverHighlightFlag is selected, each bar highlights when the mouse is over it.

Input Objects

E10239: Input objects added to palette

Control objects have been added to RTView. These objects are available on the Controls tab in the Object Palette and include text fields, buttons, checkboxes, sliders, list boxes and combo boxes. To learn more about control objects, open the display file controls.rtv (located in the demos/tutorials directory) for an example of how control objects may be utilized in a display.

Distribution

E10531: ERTView directory structure has been reworked

The directory structure of the RTView deliverable has been restructured. The deliverable consists of the following files and directories: MM* Master Media Number (used by SL Technical Support) R* Configuration Files (used by SL Technical Support) bin Directory contains scripts and executables demos Directory contains sample screens and examples docs Directory contains documentation lib Directory contains object libraries (*.jar) rtv_init* Initialization scripts shortcuts Directory contains shortcuts for Windows Platforms When upgrading from a previous version of SL-GMS RTView it is recommended that install in a new directory rather than installing in the same directory as your previous installation.

E10522: Shortcuts (Available For Windows Platforms Only)

Shortcuts can be used to start RTView component, open command windows and run data simulators. In order for shortcuts to work the environment variable RTV_HOME must be set globally on your system. If you did not define RTV_HOME globally, see the Setup section in the RTView User Guide for instructions. The RTView Documentation, DOC.html, is located in the docs subdirectory of your RTView installation directory.

Documentation

D10540: Search engine added to the RTView documentation

A search engine has been added to the RTView documentation. To search the documentation, click on the Search Documentation link in the navigation frame.

Version 2.0h Release Notes

RTView

Applet Functionality

E10428: Javascript methods now available

Three methods have been added to RTView for use with Javascript. These methods can be called on the Display Viewer Applet from Javascript. The method setRTViewName(String displayName) sets the display in the main window. The method addSubstitution(String subString, String subValue) adds a substitution definition to the main display. This will cause all of the substitutions in all windows to be reevaluated. If the substitution string is already defined, the corresponding value will be replaced with the new value. The method removeSubstitution(String subString) removes a substitution definition from the main display. This will cause all of the substitutions in all windows to be reevaluated.

Background Property Dialog

E10435: Gradient fill in background models enabled

A Gradient Fill check box has been added to the Background Properties Dialog. To apply a gradient to the background model check the check box and select OK or Apply.

Substitution

B10302: Substitutions no longer removed when another display opened

In previous versions of RTView, some substitutions added during an editing session on a display would be removed when another display was opened. This problem has been fixed.

Drilldown

E10335: Drilling down into existing window now raises that window

If a drill down action re-uses a window that is already open, the window will be raised to the front so that it is visible. If the drill down window is a Frame, it will first be de-iconified if necessary.

E10336: Option to specify Frame or Dialog now available

By default, the windows used to display drill down targets are "Dialog" windows. These are always stacked in front of the main window, and cannot be iconified. There is now an option to instead use "Frame" windows for drill down. Frame windows can be stacked behind or in front of the main window, and can be iconified. The option is selected by any of the following: 1. From the Options Dialog available under the Tools menu: On the General tab, a checkbox has been added with the label "Drill Down Windows Always on Top"". When this box is checked (the default), Dialog windows are used to display drill down targets. When this box is unchecked, Frame windows are used. 2. From the command-line: To use Frame windows for drill down, specify the "-nodialog" option. Limitation: This option is ignored in the AWT version of the Display Viewer Applet, so Dialog windows are always used for drill down.

E10218: New drilldown options and dialog now available

Several new options have been added for drill down targets. You may now open drill down displays in the same window as the source for the drill down, or re-use a new window for all of your drill downs. The new functionality allows you to control the data shown in an object in your display by drilling down on another object in the same display. A dialog has been added to set these properties. To see an example of the new drill down functionality, go to your RTView installation and open rtview\xmldisplays\tutorial_dd.rtv.

Functions

E10266: Ability to define functions of data variables now provided

The new Functions feature allows you to perform calculations on your data before displaying it in RTView. For example, you can create a function that will calculate the average value of a table column and display the result of the function. The Functions dialog, available under the Tools menu, allows you to create functions. To attach an object in your display to a function you've created, select Function from the Attach To Data popup menu. To see the new Function feature used in a display, go to your RTView installation, and open rtview\xmldisplays\tutorial_function.rtv.

DME - Data Historian

E10385: VAR_NAME field size for creation of tables increased to 100

The VAR_NAME field in the HISTORY and HISTORY_S tables is now created with an initial size of 100. In previous releases, it was created with an initial size of 80, which was causing long variable names to be clipped.

TME - Transaction Message Monitor

E10397: Transaction Monitor now supports multiple nesting levels

The Transaction Monitor now supports multiple levels of nesting for id fields. To specify a nested id field, include all parent fields and the id field separated by "::". For example, parent1::parent2::id.

E10327: Specification of time limit for transactions provided

A new options for expiring transactions has been added to the Transaction Monitor. You may now specify a time limit for transactions. Once a transaction has exceeded the specified limit, it will expire. See E10348 for more information.

E10328: Specification of active transactions now implemented

In previous versions of the Transaction Monitor, a single transaction limit was applied to all transactions. You may now specify the number of active transactions allowed and the time limit for active transactions per transaction definition.

E10322: Summary tables now display counts for various transactions

In previous versions of the Transaction Monitor, the summary tables only contained a count of completed transactions and interfaces. In the current version, the transaction summary table now contains counts for active, completed and expired transactions. The Count column in the transaction summary table has been renamed to Completed. The interface summary table now contains counts for started, processing, completed and expired interfaces. The count column in the interface summary table has been renamed to Completed.

E10323: Transaction output now split into three separate files

In previous versions, the Transaction Monitor output all transaction and interface information into a single file, transactions.xml. In the current version, the information has been split into 3 files. You may now configure which summary and detail tables will be output by the Transaction Monitor. The table names in the output files have been changed. The summary file, tm_summary.xml, contains summary information for transactions and interfaces. It contains 2 tables: TransSummary IntSummary The TransSummary table replaces transactions.xml BusinessTransactionSummary and the IntSummary table replaces transactions.xml TransactionInterfaceSummary. The active transaction detail file, tm_detailactive.xml, contains detail information for all active transactions and their interfaces. It contains 2 tables: TransDetailActive IntDetailActive The TransDetailActive table replaces transactions.xml BusinessTransactionDetail for all active transactions and IntDetailActive replaces transactions.xml TransactionInterfaceDetail for all active transactions. The finished transaction detail file, tm_detaildone.xml, contains detail information for all completed and expired transactions and their interfaces. It contains 2 tables: TransDetailDone IntDetailDone The TransDetailDone table replaces transactions.xml BusinessTransactionDetail for all completed and expired transactions and IntDetailDone replaces transactions.xml TransactionInterfaceDetail for all completed and expired transactions. In the summary tables, the Count column has been renamed to Completed. See E10322 for more information. In all tables the Business Transaction column has been renamed to Transaction Name.

E10324: All command line options now provided in file RVTMOPTIONS.ini

All the command line options, are now available as options in RVTMOPTIONS.ini.

E10326: Size/latency fields for incomplete transactions now update

Previously, the size and latency fields for incomplete transactions and interfaces were always 0. These have been changed to update with the latest values at the time the table is output.

DATASOURCES

XML Datasource

E10282: Requests to open files with HTTP connect using single session

All requests to open files using HTTP now connect using a single HTTP session. The session id is obtained from the first HTTP request made and used in all subsequent requests.

TIB/Hawk Datasource (HawkView)

E10333: Error in handling arguments for Hawk subscriptions corrected

An error in the handling of Hawk subscriptions containing boolean or float arguments has been corrected.

E10459: Add $agent to the agent drop down in Attach to Data Dialog

The substitution $agent is commonly defined as a substitution when attaching to TIB/Hawk data. $agent has been added to the agent list in the TIB/Hawk Attach to Data Dialog as a convenience.

E10332: Users can now set expiration time for cleared alerts

The user may now set an expiration time for cleared alerts. For example, if the expiration time is set to one minute, all cleared alerts will be removed from RTView once a minute. This option may be set using the Options dialog available from the Tools menu. If no expiration time is set, cleared alerts will never be removed.

E10329: Multiple copies of RTViewDs data now stored only once

In previous versions, multiple copies of the same RTViewDs data were stored to the Historian. In the current version, each piece of RTViewDs data will be stored only once.

E10295: Adding Agent Groups through Tool Options Dialog now enabled

TIB/Hawk Agent Groups may be defined in the TIB/Hawk Agent Groups tab of the Tools Options Dialog.

E10277: Agent Groups automatically created for each TIB/Hawk cluster

Agent Groups are automatically created for each TIB/Hawk cluster.

SAMPLES (DEMOS)

E10476: Add sample screen that navigates to all sample displays

A sample screen, rtview/alldisplays/alldisplays.rtv, has been added to the distribution. This is the perfect starting point for first time users. From this displays you can navigate to most other sample displays included on the deliverable.

XML Java Server Pages Demo (JSP)

E10297: jspdisplays demo enhanced to preview limited input capability

The rtview/jspdisplays demo now includes a page containing input objects which can be used to set variables using a URL command. It is a preview of input functionality that will be documented and improved in a subsequent release.

OBJECT LIBRARY

E10276: Display of aggregate status/alert information now provided

An object that displays aggregate status or alert information has been added to the indicators palette. The object, obj_aggalertlava, consists of two rectangles. The top rectangle displays the highest alert color for the aggregate. The bottom rectangle displays the percent of objects in the aggregate at each alert level. This object may be attached to data that returns discreet statuses or alert levels.

E10199: Objects in gmsjmodels.jar have been significantly improved

The objects in gmsjmodels.jar have been significantly improved. There are some new rectangle objects added, which provide gradient fill capability, user-defined images and color dynamics. The objects allow you to specify images and background colors to be displayed on user specified thresholds. The objects are provided in the General Tab of the Object Palette. To see the new General objects used in a display, go to your RTView installation, and open rtview\xmldisplays\tutorial_function.rtv.

Tables

B10316: autoResizeMode property renamed to autoResizeFlag

The autoResizeMode property in obj_table02 and obj_tabl03 has been renamed to autoResizeFlag. Property names in display files created with previous versions of RTView will automatically be converted.

B10314: Two new filter options added to table filters

Two new filter options, top() and bottom(), have been added to the table filters. The top() filter applies the selected action to the top x rows in the table. For example, to apply the filter to the top 10 rows, enter top(10). The bottom() filter applies the selected action to the bottom x rows in the table. For example, to apply the filter to the bottom 15 rows, enter bottom(15). These options are available in the Filter Properties dialog.

B10315: filterProperties no longer applied to wrong column

In previous versions of RTView, the filterProperties in obj_table02 would be applied to the wrong column if the columns were reordered by dragging the column header. This has been fixed.

E10292: Arrow added to obj_table02 to indicate sort location

An arrow has been added to obj_table02 to indicate which column is being sorted and whether it is being sorted ascending or descending. You may toggle the visibility of the indicator with the showSortIconFlag.

E10331: Filter Properties dialog added to configure filterProperties

A dialog has been added to configure the filterProperties for the obj_table02. The Filter Properties dialog allows you to select from the available filters and associated actions.

E10232: Copy and paste capability provided for table cells

You may now copy data from a table in your display to the system clipboard. Two new items have been added to the popup menu for the tables, Copy Table Values and Copy Cell Value. Copy Table Values will copy the entire table to the clipboard and Copy Cell Value will copy the contents of the selected cell.

Graphs (General)

E10449: New property added to set legend background color

A new property, legendBgColor, has been added to obj_pie, obj_trendgraph02 and obj_bargraph. Use this attribute to set the background color of the legend. The bgColor attribute no longer controls the background color of the legend. Displays created with previous versions of RTView will automatically be updated to work with the new property.

E10450: Increasing draw3dDepth property no longer a problem

In previous versions of RTView, increasing the draw3dDepth property could potentially cause the top of stack bars to be drawn incorrectly if the draw3dFlag was off. This has been fixed.

Trend Graphs

E10321: Improvements to obj_trendgraph01 and obj_trengraph02

The trendgraphs (obj_trendgraph01 and obj_trendgraph02) have been modified. The following improvements were made to obj_trendgraph01 (single-trace time trend graph); 1. The autoscale, legend, and cursor features were added. Previously, these were only available only in obj_trendgraph02. 2. The field valueDivisor was added for the trace value. The following improvements were made to obj_trendgraph02 (multi-trace time trend graph); 1. The maximum number of trace counts possible in a graph has been increased from 4 to 10. 2. The field valueDivisor was added for each trace value. 3. A new flag, yAxisMultiRangeFlag, was added. Checking this flag will cause the graph to draw separate y-axis range labels for each trace. In addition, if the yAxisAutoScaleFlag is also checked, a separate y-range is computed for each trace. 4. Pressing the left mouse button while positioned over a trace's legend string or color swatch makes all other traces on the graph temporarily invisible. This can be helpful in locating a trace when several traces overlap. The other traces become visible again when the mouse button is released.

Distribution

E10451: Scripts modified to search local dir for jars and then in lib

The run_builder, run_viewer, run_historian, run_xmlserver scripts have been modified to search first in the local directory for necessary jar files and then in the installation lib directory.


 
SL, SL-GMS, GMS, RTView, SL Corporation, and the SL logo are trademarks or registered trademarks of Sherrill-Lubinski Corporation in the United States and other countries. Copyright © 1998-2015 Sherrill-Lubinski Corporation. All Rights Reserved.

 

JMS, JMX and Java are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. They are mentioned in this document for identification purposes only.