36:Appendix D Ultra

From coolearthwiki
Jump to: navigation, search

Whistle has many features, one of which is the ability to perform certain transactions with or without a database connection. This document attempts to explain how to use this feature, dubbed “Whistle Ultra”, and outlines the different executables that together make it all work.

The main purpose of developing Whistle Ultra is to allow production to continue during a network outage with minimal inconvenience to users. To accomplish this, Whistle Ultra will run on standalone computers located on the production floor. These computers will generally have local printers for labels and reports and will be running several Whistle services as well as the Whistle Ultra executable.

Ultra Settings

Several new System Settings have been added to Whistle for Ultra. These are:

The primary checkbox for Ultra. You must turn this on to activate all the features of Ultra.
Ultra track#
The next tracking number Ultra will use for Production. This is automatically incremented after each pallet is produced. This number must be unique for each Ultra computer in a warehouse to avoid tracking number conflicts.
A unique number used to generate EIA control numbers when offline. Incremented after each EIA file is produced.
How often (in minutes) Ultra should attempt to reconnect to the database when disconnected. Note attempting a reconnect can take some time.
XML Path
The directory in which to store the XML files produced when DB is disconnected. This should be the same directory the “transaction_monitor” is using.

Ultra Caches

With the “IsUltra” setting enabled the behavior of the Whistle cache files is modified. The files are saved as ASCII text, tab-delimited. The string “ULTRA” is inserted in the name of the file (e.g. “types_xxx.txt” becomes “typesULTRA_xxx.txt”. The first line of the file contains the name of the cache. The second line of the file declares the number of rows, e.g. RowCount = 269 The third line shows the column names. Data begins on the fourth line.

Here is an example from a “bins” cache text file:

WSL ULTRA "bins" Cache File (Version 0)
RowCount = 124
Bin	Depth	Width	Height	Locn	Type	Row	Col
1A	1000000.00	1000000.00	1000000.00	STOCK	STAGE	0	0
1B	1000000.00	1000000.00	1000000.00	STOCK	STAGE	0	0
1C	1000000.00	1000000.00	1000000.00	STOCK	STAGE	0	0

In addition, two more caches have been added to Ultra to support logging into Whistle during network outages. These are the “user” cache and the “user parameters” cache. You must log onto Whistle Ultra at least once with a database connection established in order to build and use these caches. Once these caches are loaded, it is possible to log out and back into Whistle without a DB connection.

An additional Ultra cache storing Purchase Orders has also been added.


The caches in Ultra are kept up-to-date by a Windows Service called “cachekeeper”. The cachekeeper service refreshes all Whistle caches at a predetermined interval (cachekeeper setting “UpdateTimeMins”). When Whistle Ultra detects a network outage, it automatically loads the most recent cachekeeper caches and continues without a DB connection.

Here is an example cachekeeper settings file (named “cachekeeper.cfg”), which must contain all the following tags:


Ultra Transactions

Although Ultra supports logging into Whistle without a database connection, most Whistle screens will not function when the network is down. In most cases, unsupported screens will display the message “Unable to connect to database. Retry?” when attempting any transactions. Ultra currently supports only two screens in the Production menu: “Report Production” and “Fresh Pack”.

Ultra also supports printing certain tickets and reports during network outages. These new printing features are described later in this document (see “Ultra Offline Printing”).

Ultra Production

The Report Production and Fresh Pack screens behave identically with or without a DB connection. Validation of user entries is accomplished by using the improved caches. The new “PO” cache allows Whistle to validate order numbers and provide users with a list of all active PO’s.

When the network is goes down, Ultra will notify the user of a lost DB connection and ask if the user wishes to continue without. If so, Ultra will begin saving production transactions as local XML files (in the directory specified by the “XML Path” setting). The title of the Whistle Windows console will change to indicate that the network is down and that XML transactions are pending. Ultra will then attempt to reconnect to the database automatically at an interval specified by the System Setting “UltraRetryMin”. Upon reconnection, the Windows console title will revert back to the original title and Ultra will revert to producing ATF files for EIA. Note that Ultra does not try to reconnect if the system is idle. In other words, the user must be actively reporting pallets in order for a reconnection to occur.


The transaction_monitor is the Windows Service that sends the offline XML transactions to the WhistleServer for processing. While the network is down, the transaction_monitor waits patiently and attempts reconnects frequently. When a connection to the WhistleServer is established, the transaction_monitor forwards the XML files to the WhistleServer where they are processed and forwarded to EIA. Upon success, the transaction_monitor stores the XML files in a local directory specified by the “ProcessedTransactionPath” tag in the config file. If an error occurs while communicating the file to the WhistleServer, the file may be placed in an error folder (also specified in the config file). In nearly all cases, the transaction_monitor will continue to attempt delivery of the file until it is successful.

The transaction_monitor config file is called “tm_win.cfg”. Here is an example:

# transaction monitor settings file


The WhistleServer is an executable that runs on a central application server. It can be built as either a service or stand-alone executable (currently stand-alone). The server has a direct connection to the database and processes the XML files generated by Whistle Ultra. A single server executable can handle many warehouses and users simultaneously. Successful delivery of an XML file to the WhistleServer does not guarantee that the file will be successfully processed by the server. Invalid user entries that go undetected by Whistle Ultra could still cause a file to error out of the WhistleServer. The WhistleServer has its own error directory and will place any failed files there. These files should be marked with an error message at the end of the file.

The WhistleServer config file, “whslist.cfg”, should look like the following:

               <odbcPass>password goes here</odbcPass>
     … next warehouse goes here …
     … continue more warehouses here …

Ultra Offline Printing

Whistle Ultra has the ability to reprint tickets when the network is down, but only for those pallets produced during an outage. This function is accomplished by using the “Print Ticket” window when no DB connection is present. Without a network connection, Whistle can only print to local printers connected directly to the computer running Ultra. These computers must also have the Whistle printing components installed and running (“printserver”, “printengine”, and layout files). To facilitate this process, the “printserver” application has been built as a Windows Service.

Ultra records the production of each pallet created during the network outage to a new pallet log file. The pallet log file contains all information necessary to reprint a pallet label offline. These files are created daily as needed and have the naming convention “040429_ultra.txt” where the 6-digit number represents the day the pallet was produced (YYMMDD). Note this date may not correspond with the “Tran Date” of the pallet. (For example, a pallet produced at 3am may have a transaction date for the day before.) Here is an example pallet log file:

1244	STOCK	114-957	 	1800.00	LB	9502	2007-05-24 00:00:00	CS	EDC	EVAR	ELM	
1245	STOCK	114-957	 	1800.00	LB	9502	2007-05-24 00:00:00	CS	EDC	EVAR	ELM	
1246	STOCK	114-957	 	1800.00	LB	9502	2007-05-24 00:00:00	CS	EDC	EVAR	ELM	
1248	STOCK	114-957	 	1800.00	LB	9502	2007-05-24 00:00:00	CS	EDC	EVAR	ELM	
1254	STOCK	131-253	NULL	100.00	LB	ETHAL	2007-05-24 00:00:00	CS	EDC			

In addition to reprinting tickets Ultra uses the pallet log file to generate summary reports of pallets produced during the network outage. Two new summary reports have been added: “Transaction History” and “Production Summary”. These reports are accessible from the Production Menu. For both reports, users need only enter the date the pallet log file was created. The Transaction History report provides pallet-level information sorted by Item. The Production Summary provides an item-level summary sorted by Reason.

Ultra Installation

A complete installation of Whistle Ultra consists of many files, executables, and Windows services. To ease the process an Installer has been written to copy all necessary components and install the services. The installer is a DOS batch file called “Setup.bat” and has been tested on Windows 2000 and XP. It is unlikely that the installer will work correctly on older versions of Windows.

The default install directory is “C:\Coolearth”. This location can be changed by manually editing the “Setup.bat” file. The installer automatically launches the DOS program “edit” for each config file installed. This allows the Administrator the opportunity to setup the service config files before installing and launching the services. Services are installed using the DOS program “sc.exe”.

Services can be uninstalled using the batch file “Uninstall.bat”. This will not delete any copied files; it simply uninstalls the services.

The following files make up the complete Whistle Ultra install package for each stand-alone computer:

  • wms.exe Whistle 3.4+ or greater.
  • whistle.cfg The Whistle config file, with the “IsUltra” checkbox enabled.
  • cachekeeper.exe Service that reloads all caches automatically at a specified interval.
  • cachekeeper.cfg “cachekeeper” config file.
  • transaction_monitor.exe Service that sends XML files to WhistleServer.
  • tm_win.cfg “transaction_monitor” config file.


  • printserver.exe Service that handles print jobs for Whistle on the local machine.
  • printengine.exe Executable launched automatically by printserver for each print job.
  • ContainerLabel.txt Default pallet ticket layout file.
  • TransHistoryReport.txt Default transaction history report layout file.
  • ProdSummaryReport.txt Default production summary report layout file.


  • curses_apid.dll DLL required by Whistle
  • MFC42D.dll required Microsoft DLL
  • MSVCP60D.dll required Microsoft DLL
  • MSVCRTD.dll required Microsoft DLL

These files should be installed on a central server with DB connectivity:

  • WhistleServer.exe server that communicates with transaction_monitor, handling and processing XML files
  • whslist.cfg WhistleServer config file