At Swiss Re, we have several distinct staging environments:
- EXP: Experimental, used for testing new versions and anything that requires interrupting the system
- DEV: Development, where workflows are designed, created, and fine-tuned
- ITE: Integrated Test Environment: testing & validation of workflows using real-world data
- PROD: Production
Each system runs on its own dedicated hardware, and has its own dedicated & independent database. To further ensure separation of the staging environments, we have chosen unique user names, TCP/IP port numbers, UC4 system names, and UC4 client IDs for each of the UC4 systems.
Our typical way of working with the systems has been to launch the UC4 GUI and open multiple connections, with each connection appearing in it own tab at the bottom of the GUI window. I have personally chosen to stick to a convention wherein I always choose the same color for each stage:
- EXP: yellow
- DEV: blue
- ITE: green
- PROD: red
The color cues at the top of GUI windows serve as a useful reminder of which UC4 system I am working with, and help to reduce the likelihood that a command intended for EXP or DEV is accidentally issued in PROD.
However, I have been dissatisfied with this approach for the following reasons:
- The GUI provides no way to force the user to use a particular color for a given UC4 system. This limits the usefulness of the color feature.
- The GUI provides no way to specify a particular client ID for each UC4 system.
- The GUI has a bug that causes it always to select thelast system alphabetically when the System Overview window is opened, regardless of which UC4 connection is active. Because "PROD" is the last system alphabetically in our environment, this bug has on several occasions led us to accidentally issue commands to stop agents oreven Automation Engine processes inPROD when we intended to stop them in one of the other less critical UC4 systems.
I have been looking for potential solutions to these problems. I submitted a product enhancement request firstname.lastname@example.org, suggesting that it should be possible to name the colors in the uc4config.xml file, and to specify a limited subset of colors for each connection. (I also suggested that it should be possible to specify the client ID of each connection.) I have not received any feedback to this request so far; so in the mean time, I have developed an effective work-around.
My solution is to makedistinct GUI configuration files for each UC4 system.
- Create ashortcut to ucdj.exe, and specify an INI file specific to the UC4 system:
- In theucdj-DEV.inifile, specify login_dat.xml and uc4config.xml files particular to the UC4 system:
... -O%TEMP%/uc4/login_dat-DEV.xml -I%TEMP%/uc4/uc4config-DEV.xml
- In theuc4config-DEV.xmlfile, remove all color definitions and connection definitions except those associated with that particular UC4 system:
...If desired, specify unique locations for the log and trace files too.
<color b="255" g="152" r="42"/>
<color b="255" g="255" r="255"/>
<connection name="UC4 DEV" system="UC4_DEV">
(connection info for UC4_DEV)
This approach has several advantages, but also a few disadvantages:
- Complete separation of each staging environment, reducing the likelihood of running errant commands in the wrong system
- Ability to hard-code color(s) and client ID for each system, simplifying logging in, and providing consistent & reliable color cues to further reduce the incidence of operator error
- Modal dialog boxes that appear block access to only one UC4 system.
Possibility to specify a unique task bar icon for each system
Update 1, 2013.12.01: This does not work, because the UC4 GUI changes its task bar icon after launch to ucdj.jar/com/uc4/ucdf/images/uc432.png.
Update 2, 2013.12.02:It is technically possible to specify a particular task bar icon, but doing so is not straightforward. Seecomment #1030, below.
- Optional separation of GUI logs by system
- UC4 GUI Icons/windows are not grouped together in task bar
- Not quite as easy to switch between systems
- Multiple JREs running means increased CPU & memory usage