How to setup the launch of Delft-FEWS

This page describes the various elements involved in launching a Delft-FEWS application, what has changed in the 2018.02 compared to previous versions and provides a step-by-step guide on how to set up a Delft-FEWS client yourself.

New structure of the Delft-FEWS binaries - boot build and base builds

With the 2018.02 (and later) release(s), the structure of the Delft-FEWS binaries has changed compared to previous versions. The highlights are:

  1. a new concept is introduced with a boot build and a local base build repository (localBaseBuildRepository). This concept is explained on the wiki page of the new Forecasting Shell Servers.
    This concept is not only used by the ForecastingShell server but extends to the Operator Clients and Config Manager application.
  2. The Delft-FEWS boot build requires a zip / msi / rpm for installlation obtained by Delft-FEWS support. Once unzipped in a local hard disk in a directory of choice it can be used as the boot build.
  3. This unzipped folder now contains the Java Runtime Environment (JRE). There is no need to install Java separately anymore for Operator Clients / Config Manager.
  4. Also part of the boot build is a new application called the createShortcuts tool in the bin folder is to be used for setting up a Stand alone client / Operator Client and/or Config Manager.
  5. If after creating a shortcut you use it to start the application, it takes an executable from your boot build to initiate the launch process. During the launch process the clientConfig, and other necessary files are downloaded from the central database.  

Note that the patch.jar patch mechanism is not applicable to the createShortCuts application.

Boot build vs base build terminology

The terminology further explained:

  1. When Deltares supplies the Delft-FEWS binaries, this is often referred to as the base build.
  2. When installing a Delft-FEWS base build to run Delft-FEWS Operator client, ConfigManager or Forecasting Shell server on a host machine, it will function as the boot build.
  3. In most cases, updating Delft-FEWS can be done by uploading the base build. Only in a few cases when the boot build does not work properly it is required to replace the boot build.
  4. When migrating to a new release, it is possible to do so by uploading a new patch and base build via the Admin Interface. For Operator Clients and Forecasting Shell servers use the Config Manager to upload a new patch. Note: migrating to a new release will still require changes to the database schema, this needs to be done before uploading the patch and base build of the new release.

Linux

Use the createShortcuts application from the bin/linux directory of the boot build for setting up a Stand alone client / Operator Client and or Config Manager. It needs to be made executable first. When running the createShortcuts.exe application successfully, it will make:

Windows

Use the createShortcuts.exe application from the bin\windows directory of the boot build for setting up a Stand alone client / Operator Client and or Config Manager. When running the createShortcuts.exe application successfully, it will make:

Content of the Region Home folder

If you have uploaded a basebuild via the admin interface, with a number below the patch number, this will be downloaded to a localBaseBuildRepository (\%LOCALAPPDATA%\fews\localBaseBuildRepository on Windows or ~/.cache/fews/localBaseBuildRepository on Linux). Only the differences between the boot build and basebuilds are downloaded. The patch (in the region home) determines which basebuild will be used and the basebuild plus the patch determine the further behaviour of your Operator Client. 

Since the 2018.02 the region home folder only contains data that can be removed. All data in this folder will be rebuild (with all relevant files) from the central database when the user logs into the system again. The region home contains the user settings, global properties, the active patch, module datasets (e.g. for running models locally on client) and the localDatastore (if you do not use Direct Database Access). Index files for the Operator Clients are now no longer maintained locally but by the Forecasting Shell servers (see table with information about status of Forecasting Shell Servers). Note that with Citrix it is best to use the Direct Database Access client.

The Operator Client uses the Delft-FEWS.exe and Delft-FEWSc.exe from the boot build.  The Delft-FEWS1.exe, Delft-FEWS2.exe, Delft-FEWS3.exe and Delft-FEWS4.exe are optional and will only be used to ensure the Delft-FEWS button are not grouped on the Taskbar when a user runs multiple operator clients locally on 1 desktop.

All operating system specific files are found in their respective folders in the Delft-FEWS binaries folder. 


The createShortcuts application

As mentioned above, the creation of the Delft-FEWS (start-up) shortcuts has changed and this is now handled with the createShortcuts application. This application (createShortcuts.exe file) can be found in the build package in the directory of the relevant operating system (Windows or Linux). With this application, shortcuts can be created for Stand Alone (SA), Operator Client (OC) or Configuration Manager (CM) applications of Delft-FEWS. For Linux it is necessary to run setExecutePermissions.sh to set proper execute permissions for the Delft-FEWS programs. A step-by-step guide on how to do this is listed below. The application opens a menu that looks like this:

As can be seen from this, the options for creating shortcuts are:

Create shortcut with database connection

The database connection options require a URL to the database server on which the Delft-FEWS central database is located. When the database server has no single sign on enabled and the username and password are not embedded in the URL, the user will receive a pop-up once, allowing him/her to enter these credentials, which are then saved (secure on Windows) for that specific shortcut. In certain circumstances another pop-up will appear with the relevant (valid) *clientConfig.xml files in the database, so that the user can select the right one. When the database connection option is selected, shortcuts can only be created at the Desktop and/or Start Menu.

Embedding the database credentials in the URL should not be used when the database server is accessible from the internet. When the URL contains credentials the complete URL is encrypted in the shortcut file (.sh/.desktop/.lnk). This requires a build > 87619. The shortcut can be transferred to other desktops or other users without asking the (other) users for database credentials. One can also encrypt the complete database connection string through the F12 option → S-clipboard → encrypt password. In that case, use the encrypted connection string but add the @ sign before it. Note that at anytime, both encrypted and unencrypted passwords can be entered, where it is recommended to share encrypted passwords only.

Examples of possible database URLs:

  1. jdbc:sqlserver://dummy_hostname:1433;database=dummy_databasename;user=dummy_username;password=dummy_password
  2. jdbc:postgresql://dummy_hostname/dummy_databasename?user=dummy_username&password=dummy_password"
  3. jdbc:oracle:thin:dummy_username/dummy_password@dummy_hostname:1521:dummy_databasename
  4. jdbc:vjdbc:servlet:https://dummy_hostname/FewsDatabaseHttpsProxy;user=dummy_username;password=dummy_accesskey;

When possible always enable single sign on in the database server so database credentials are not needed at all.

Notice that with this option, all folders and files are placed in the %appdata% (local) folder, which is cleaned after closing the client


Multiple FEWS schemas/systems in a single database (since 2022.01)

It is now possible to have multiple FEWS schemas/systems in a single (managed) database instance. By this you only need a single database and you can use a single OC/CM shortcut to access multiple FEWS systems.

When the database contains multiple FEWS schemas and the schema is not specified in the URL the OC/CM user gets automatically a pop-up to select the desired FEWS schema.

The schema creation script should be executed for every schema. Every FEWS schema/system can use a different FEWS version.

For non-OC/CM database connections and if you want to use a non-default schema you have to add the desired schema to the database URL.

  1. jdbc:sqlserver://dummy_hostname:1433;database=dummy_databasename;user=dummy_username;password=dummy_password;currentSchema=test
  2. jdbc:postgresql://dummy_hostname/dummy_databasename?user=dummy_username&password=dummy_password%currentSchema=test
  3. jdbc:oracle:thin:dummy_username/dummy_password@dummy_hostname:1521:dummy_databasename/currentSchema=test




Create shortcut with existing clientConfig.xml

For the third option the path to an existing clientConfig.xml file can be entered directly, obtained by clicking on the Browse button or, alternatively, a completely new clientConfig.xml can be created by clicking the New button. This last option will by default create a clientConfig.xml file for a Stand Alone application (which could be edited to make it suitable for an Operator Client application). More information on what should be included in the clientConfig.xml file can be found at: Root Configuration Files for Operator Client and Forecasting Shell Servers. When this option is selected, shortcuts can be created at three possible locations (Desktop, Start Menu and/or Region Home directory, which is the same as the location of the clientConfig.xml file).

When information is entered correctly and the Create Shortcuts button is pressed, the shortcuts are created and the user is informed with a pop-up window:

When an invalid URL or path is entered, a similar pop-up window is shown, informing the user of the specific error without attempting to create the shortcuts. 

Notice that with this option, all folders and files are placed in the same folder as the selected clientConfig.xml

Debug menu

The Debug option allows for more advanced options, as can be seen from the pop-up window that will appear:

Step-by-step: how to create a SA (2018.02 and upward)

For this step-by-step guide, we assume that a Windows operating system is used. To create an OC or CM application, most of the steps are similar, with the exception of steps 4 (a SA application is not required), step 6 (a clientConfig.xml file is required for an OC and requires additional elements, see documentation) and step 8 (select the relevant option for an OC or CM).

  1. Create a new folder (somewhere on your system) where the application will be located. We'll use /FEWS/201802/ in this example.
  2. Create a /bin/ folder in this (201802) folder.
  3. Copy/extract the FEWS build package in this /bin/ folder.
  4. Copy a (Stand Alone) application folder into this (201802) folder. This is the Region Home folder for this application. We'll use /FEWS/201802/Example_SA/ in this example.
  5. Copy the patch into the Region Home folder (Example_SA). The directory structure should now look similar to this (some elements are optional):
  6. Open the clientConfig.xml file here, if it exists, and check if it contains at minimum the configuration below. More configuration options are available (see its XML schema and/or documentation page: Root Configuration Files for Operator Client and Forecasting Shell Servers). If the file does not exist, it can either be created manually with this minimum configuration or, alternatively, it can be created automatically during step 8.

    <?xml version="1.0" encoding="UTF-8"?>
    <clientConfiguration xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/clientConfig.xsd">
        <clientType>Stand alone</clientType>
    </clientConfiguration>


  7. Navigate to /FEWS/201802/bin/windows/ and double-click createShortcuts.exe.
  8. Click the option to use a clientConfig.xml file, navigate to the relevant folder (/FEWS/201802/Example_SA) using the Browse button and click on the clientConfig.xml file there. Alternatively, if it does not exist yet it can now be created automatically using the New button (make sure to place it in the same /FEWS/201802/Example_SA folder). Depending on your choices, the menu will look similar to this:
  9. Select the location(s) to place the shortcut(s) and click on 'Create shortcuts'.
  10. The next time you would like to start the application you can use any of the just created shortcuts.


For Citrix kind of installations, one can edit or create shortcuts in a different way. This is explained here.

How to create a Delft-FEWS portable package (shortcut with relative path) - Steps to follow (Windows)

If you want to share a Delft-FEWS application and you want to distrubute a 'ready-to-launch' (SA) package regardless the location on a computer, please follow the steps below. In this way, after unzipping the package, the user only have to double-click the *lnk file in the Region_Home and the application launches (so CreateShortcuts.exe can be avoided by the end user).

  1. Create your Delft-FEWS Stand-Alone application (in Delft-FEWS terminology: Region_Home folder), anywhere on your system;
  2. Add an appropriate *patch.jar in the root of this folder (if it is not in there yet. It might be there already)
  3. Copy a Delft-FEWS binaries /bin/ folder INSIDE the Stand-Alone application folder;
  4. Navigate into the bin/windows folder, locate the CreateShortcuts.exe and run it;
  5. Create a shortcut to the clientConfig.xml in your Stand-Alone application folder (tick the box 'Region Home' only);
  6. Close the CreateShortcuts.exe;
  7. Test if the newly created *.lnk file works
  8. Close Delft-FEWS again.
  9. Use a file-packer (e.g. WinZip) to zip up the Delft-FEWS Stand Alone Application as a whole. This is now the distributable package!


Launch Delft-FEWS from a batch or so file and start a workflow

.bat

C:\fews\bin\windows\Delft-FEWS.exe -Dregion.home=d:\fews\FEWS_GW


C:\fews\bin\windows\Delft-FEWS.exe -Dregion.home=d:\fews\FEWS_GW runIfdTask=d:\temp\taskProperties.xml


C:\fews\bin\windows\Delft-FEWS.exe -Dregion.home=d:\fews\FEWS_GW runIfdTaskAutoSaveToServer=d:\temp\taskProperties.xml


.so

/fews/bin/linux/jre/bin/java -Dregion.home=/fews/FEWS_GW -Xmx100m -Djava.library.path=/fews/bin/linux -XX:ErrorFile=./jvm-error.txt -XX:-UsePerfData -cp "/fews/bin/*" Delft.FEWS runIfdTask=/temp/taskProperties.xml