Release 3.0 - Added Features And Bug Fixes


The current full Dataworks Enterprise release is 3.0.1, released in November 2002.

The main focus of this release have been to provide support in the following areas:

In addition, there have been a number of feature enhancements to individual modules as well as maintenance fixes. These are described in detail below.

As with all full releases of Dataworks Enterprise, all previous patches are rolled up into a single install.

Note on version 3

Please note that version 3.0.0 build 181 has been immediately superseded by version 3.0.1 build 182. Build 182 contains an important fix in the RTCache.dll and RemoteClnt.exe modules.

Bug fixes

Version 3.0.1
A problem occurs with a particular sequence of requests using renames requested over a RemoteClient/Server connection. Once in this state, images in response to requests maybe overwritten by the image of a different request. This fix required a change in RTCache.dll and RemoteClnt.exe.

New features

The following lists new modules added to Dataworks Enterprise since version 2.3.

This module provides support for XML queries and responses against Dataworks Enterprise core APIs. The principle component is a COM object that accepts an XML request, using a language based on XSLT, and returns a XML text stream corresponding to the result of that request.
The processing of that request can be referred to as inflation, whereby values within the xml request are substitued for the result of Dataworks Enterprise data requests. This can include iteration of values (for example from a list request) to control further processing including nested Dataworks Enterprise requests.
The request language is compatible with a sub-set of XSLT providing most of the output formating abilities, templates, variables, and a compatible function syntax for select statements. Addtionally there a Dataworks Enterprise-specific extensions to enable access to Dataworks Enterprise data.

The functionality is easilly deployed as a web service supporting developments where COM is not appropriate but a http based query-response is suitable. As a web service, it suits either a two tier development model where the X-Press service delivers 'data xml' in order to be transformed (with normal XSLT) to a web page, or a single tier where X-Press outputs html directly (or other text formats like csv).

Source View

This module provides an interface to allow the operator to view and manage multiple routes within the core system. It is available from the Tools... menu of the launcher. It displays a list of all routes in the local cache with underlying routing and cost information as well as statistics relating to the use of that route.

Audit Server

This new Dataworks Enterprise source collects Audit information from clients and makes this information available as a file.

TKO and TKOMap

This module provides an interface to TKO either as a query tool or as a source to the Resolution service. This tool is only installed as a central system service. Users needing to get access to this data should contact their sales representative.


This module provides an interface to GlobalILX Trade Servers to provide intraday data to Dataworks Enterprise users. This tool is only installed as a central system service. Users needing to get access to this data should contact their sales representative.

Trace Manager

This is a new Trace Manager module which is less CPU intensive than the previous version.


The following lists bug fixes and changes to Dataworks Enterprise, by module.
  1. Resolving multithreading issues and support for multithreaded apartments.
  2. Provide load-balancing in the core code. New implementation of FailOver.
  3. Auditing provision, upgrades to permissioning and support for "end to end" requests.
  4. Support for custom interfaces in VB (improves event performance by a factor of two).
  5. Performance improvements for stats collection and the ability to remotely reset the statistics.
  6. Allow internal "names" to be deleted when no longer in use (fixes a potential leak).
  7. New utility functions for getting paths and directory names.
  8. Fix: Buffer overflow on large trace functions.
  9. Setting RTPartial field indicator disables compression.
  10. More robust on closedown and when there are multiple versions of the cache DLL installed.
  11. Fix: Memory leak when copying arrays of complex type.
  12. Fix: Blocking mode error on chain requests.
  13. Fix: RTPrincipal2 and RTDataRef2 coclass objects could not be instantiated.
Source Monitor 2
  1. Improve handling of form visibility under launcher - previously always came up hidden when run under launcher.
  2. Fix test controls for Datatsream and StoreSvr.
  3. In user input control allow CR on any text box to submit request (previously only instrument part).
  4. Add "login" option for Dataworks Enterprise permissioning.
  5. Add "symbol set" and "options" text boxes to user input control (viewable in field list from right click menu).
  6. Add "follow link" option to field list control.
TFUtils - NewsHelper Object
  1. Add 30 second timeout to request processing.
TFUtils - Large Document Services
  1. Support for delivery of large documents through Dataworks Enterprise.
NewsReal & NewsSvr
  1. Source status maintained in line with that of the Content Indexer.
  1. Support for Expiry added.
  2. Additional checking on validity of symbol values.
  3. Support for multiple roles in access to database.
  4. Better handling of inaccessible database servers.
  1. Selecting a module no longer deletes program from the list. Instead it highlights programs from the selected module.
  2. Launch admin object reimplemented as a singleton to support DCOM connections.
  3. Launcher optionally provides pipe redirection for StdOut and StdErr.
  4. Probe sets CRT Library error mode to StdErr by default.
  5. Columns may be reorder in task, tool and process views.
  6. Tidy redundant menu separators.
  7. Support -Server <servername> in RTMonitor.
Dataworks Enterprise Client
  1. Allows requests from specific source routes in order to overide inbuilt load-balancing mechanism.
  2. New Host route information display for complex routes that involve load-balancing across multiple sources.
  3. FIX: Login password is now always overwritten if save option is selected. Previously only saved if successful login.
  1. Now shows APCNotify version information.
  2. Capability to Publish results to an external HTTP server.
  1. Fix: Use of thread local storage fails on Web Servers causing very slow response times. TLS now replaced by Spin Lock.
  1. Addition of CLR Primary Interop Assembly for .Net Support.
  2. New Dataworks Enterprise client examples which are radically simplified making them a better instructional tool.
  3. Addition of new interfaces reflecting changes in the cache API.
  4. Addition of C# Example.
Stove Server
  1. Looks for image renames from upstream source and passes down (configurable).
  2. Supports mirroring "symbol set" configuration of upstream source.
  3. Supports mirroring "symbol set" and "options" in requests.
  4. Config option to allow store server to "logon" using Dataworks Enterprise permissioning when making client requests.
  5. More flexible expiry time options; including fixed intraday times.
  6. Looks for "__CONTENTEXPIRYUTC" field in "upstream" records indicating time this record should be refreshed.
  7. Adds "__CONTENTEXPIRYUTC" field to all records indicating time this record will be refreshed.
  8. Uses Dataworks Enterprise API call SetExpiryTime to set item expiry.
  9. Changes to caching algorithm to improve performance and fix problem with long requests incorrectly picking up cache files from other requests.
ADO Handler
  1. Improve error handling and detection of error conditions, particularly from Oracle database connections.
  2. Add option to configure "connection monitoring" request, standard will be "/NOW". This request acts as a "ping" of the database, refreshing every minute, and updates the "_SOURCE" status record used by monitoring.
  3. Add configuration options to support returning arrays of variant values including nulls from the database - previously would always convert null's to a well-known type, such as double's set to zero.
Datastream Handler (History source)
Note that the Datastream handler is updated as part of this release. However it is not generally deployed to a "client site" - a client will normally access Dataworks Enterprise-Datastream content by connecting to the main Dataworks Enterprise infrastructure in Thomson. The deployment of new versions of Dataworks Enterprise on that infrastructure normally follows some time after general releases of Dataworks Enterprise.
  1. Supports permissioned requests against Datastream (if so configured) and integration with Dataworks Enterprise Permissions system.
  2. Add "~#xxx" request modifier to override default Datastream id and use that supplied in request.
  3. Add "~CAP" template to return capital structure items.
  4. Add "~IDTP" template to return intraday datatypes, with an expiry time every 30 minutes.
  5. Adds "__CONTENTEXPIRYUTC" field to all records indicating time this record will be refreshed.
  6. Add "~NOW" request to indicate connection to the Datastream mainframe. This record is automatcially refreshed every minute and updates the "_SOURCE" status record used by monitoring.
  7. Uses Dataworks Enterprise API call SetExpiryTime to set individual item expiry.
  8. Status monitoring records are pushed into cache and update on a timer to reduce impact on handler performance. Also include time of last update from the server.
  9. Fix bug handling Navigator searches containing special characters.
  10. More error conditions will exit the handler rather than return Fail statuses.
  1. The search for collateral information against domicile instruments is now done fully on the ingest side. Previously this was also partially done on the outbound server side. This produced ana anomaly in that data returned in a request for a single instrument did not fully match that returned when the instrument was part of the result set of a complex query. This fix now ensures the data is identical regarldess of the request format.
  2. FIX: Ingest of the CUG field would crop CUG values that were greater than 1000. e.g. CUG 1234 became 234.
Excel Addin
  1. RTImport now supports optional parameters for supplying Options and SymbolSet data.
  2. Added RTSnapShot and RTSnapshotEx formulas. RTImport makes non-blocking (asynchronous) requests against a source. As such, the formula usually returns 0 when first called against an instrument. This is because the data is usually not immediately available when first requested. When the asynchronous request is eventually fulfilled, the data is pasted into the cell. Some workbook implementations require that the formula does not return until the data has been successfully returned. To this end RTSnapshot and RTSnapshotEx have been added to provide blocking requests against a source. Both formulas should be used with the workbook in manual calculation mode. RTSnapshot drops all the requests immediately after all the calculations have been performed. RTSnapshotEx keeps all the requested items on watch (as per RTImport) in the event that the manual calculation needs to be continually repeated. Although the items are kept on request, RTSnapshotEx ignores any data updates until the next manual recaclulation is performed.
  3. Added alias methods Press_RT, Press_Snap and Press_SnapEx for formulas RTImport, RTSnapshot and RTSnapshotEx, respectively.
  4. Since RTSnapshot and RTSnapshotEx make blocking calls, they can produce a slow response if many requests are made. This is due to the fact that each Excel formula has to block until the data is retrieved. e.g. making 1000 separate snapshot requests, will require each call to block whilst it retrieves the individual instrument. The best route is to have all items on request prior to making the RTSnapshot calls. To enable this, new methods, RTSnapshotPreRequest and RTSnapshotExPreRequest have been added to allow all the instruments to be prerequested prior to the RTSnapshot calls being performed. This ensures all the instruments are requested asynchronously, only blocking when Excel calls the relevant formula. This method should always be cut and repasted into the workbook prior to saving it. As the last formula added, it is the first formula called when the manual calculation is invoked, thereby ensuring the items are requested before the other formulas are called.
Remote Server
  1. Upgraded comms protocol to support load-balancing and "end to end" permissioned requests.
  2. Finder broadcast socket is now disabled by default.
  3. Configuration now enables incoming connections that have undergone NAT addressing to be assigned to group membership based on true IP address.
  4. FIX: GroupMember configuration entries were not being read properly under certain configurations.
  5. FIX: Bug in versions 2.3.0 Build 163 when interfacing between hubs running versions 2.1.x. Internal buffer optimisation did not correctly cater for downloading to versions 2.1.x, resulting in data being discarded. This fix was patched in 2.3.1 build 164.
Remote Client
  1. Added support for load-balancing and "end to end" permissioned requests.
  2. FIX: GPF occurred on modules that used Finder Socket protocol to listen for available Remote Servers. The GPF occurred due to a race condition where a RC came up just as a RS was closing down. The RC received a delete message before an update message from the Finder protocol resulting in a GPF. Code now caters for this condition.
  1. The database schema has been redesigned around an account hierarchy. Users are assigned to one specific account, but can inherit properties and entitlements from that account and all its ascendants.
  2. The database now supports properties required for auditing and "end to end" requests. These properties are returned as part of the Account data.
  3. Checks for changes to Account contents are now synchronised against the database's timestamp.
  4. FIX: The field filtering mode of permissioning had an error whereby a field mask of 0 (display fundamental fields only) resulted in an access denied state on the entire record.
  5. FIX: The STATISTICS request now updates properly.

Do not hesitate to contact us at for further information.