Deployment Configuration Properties

The FTM deployment environment can support multiple applications and application versions and it is not unusual to have multiple deployment environments for development, test and production. To dynamically support multiple deployment environments without making code changes it is essential that some properties externalized for configuration at deployment time. A typical FTM deployable flow should support at least the following configuration properties promoted up to the BAR file.
  • Application Name
  • Application Version
  • Database Schema
  • Data source
An application flow should also promote any other key properties that may need to be configured per deployment such as input queue names. These properties can then be modified using the BAR file editor as shown below, or by using the IBM® App Connect Toolkit.
Figure 1. BAR file editor showing deployment configuration properties
BAReditorNewDbSchema.jpg

Properties promoted to the BAR file are typically one or more node properties that have been promoted up through the flows and subflows or a user defined property (UDP). A user-defined property (UDP) is a property that is defined when a message flow is constructed using the message flow editor and is supported by a specific variable declaration in the ESQL or Java™ code.

The typical properties for application name, application version and database schema shown above are UDPs. An example of UDP definition in the message flow editor is shown in the following figure.

Figure 2. User-Defined Property to define the database schema
UserPropsForDbSchema.jpg

In FTM, these UDP values must be used to initialize other code and variables prior to an application interacting with the database or cache APIs so it is important for top level application flows to call the correct initialization functions.

In the case of transmission wrapper flows (inbound transmission mappings) call the function INIT_PTF_CONST() as shown in
Figure 3. Initializing UDPs in the transmission wrapper flows
CREATE COMPUTE MODULE IdentifyChannelByName

    DECLARE rEnv REFERENCE TO Environment;
    
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        --------------------------------------------
        -- Call the Core PT Flow Initialization Code
        --------------------------------------------
        CALL INIT_PTF_CONST(rEnv);
        .....
        .....
        RETURN FALSE;

    END;

END MODULE;

In the case of event processing wrapper flows it is not usually necessary to do any specific initialization because the core event processing subflow does this and it is not usual to invoke application code prior to this.

After initialization, the FTM APIs provide API functions to access key configuration properties that are usually customized or not known at development time.
Table 1. APIs for retrieving core configuration properties
API Function Description
CREATE FUNCTION DB_SCHEMA() 
RETURNS CHAR;
Returns the name of the database schema as a string value.
CREATE FUNCTION GetApplication()
RETURNS CHAR;
Returns the name of the application as a string value.
CREATE FUNCTION GetApplicationId()
RETURNS INTEGER;
Returns the database allocated ID of the application as an integer value.
CREATE FUNCTION GetAppVer()
RETURNS CHAR;
Returns the application version name as a string value.
CREATE FUNCTION IsSpecificAppVersion()
RETURNS BOOLEAN;
Returns true if a specific application version is being executed, false if it is defaulting to the most current version.
CREATE FUNCTION GetAppVerId() 
RETURNS INTEGER;
Returns the database allocated ID of the application version as an integer value.