Build Manager

The Build Manager handles the process of compiling the configured Integration flows into a .JAR file and packaging them into a TAR file or docker repository.


Symantec Version Controls are supported to ensure evolving GLU.Engine builds are traceable and properly version controlled and tagged. In addition, any built GLU.Engine that is for an Environment that is not flagged as the ‘Production’ environment will be tagged as a ‘SNAPSHOT’. If the built GLU.Engine is for Production deployment it will be tagged as ‘RELEASED’. The version control will then need to be incremented to make changes to a ‘RELEASED’ GLU.Engine.


The .JAR can be deployed into the Clients own Docker container or a .JAR file as a Springboot contained executable can be deployed to a server or VM.


The Test Cycle defined by the Release Manager will dictate the sequence of Environments that any particular build process will follow. The Build Manager tracks the SDLC sequence of each build doing so ensures that the applicable API / Connector environment HOST parameters are included in the build. This eliminates the need for a DevOps engineer to manually apply End-Point IP address / URL parameters to the deployed GLU.Engine. Rather all those parameters are natively included in the build by the Build Manager.


The built component can then be downloaded and deployed into the applicable server depending on the stage of the SDLC process for that particular build.


All builds going back in time are stored by GLU with full version history visible, older builds are securely archived into GLU’s long-term archive and can be retrieved via Support Desk Request.


The Build Manager has an ‘GLU.Engine Settings’ configuration panel that enables the definition of various configuration settings for any specific build to be included in that build. See the screenshot example below.


Logging related settings such as log levels, log file locations and log file names can be defined.

It is possible to set the path of the log files such that if run from a docker image it is possible to configure the volume in the docker-compose file to redirect the path and file defined in the console to a volume outside the container image.

i.e.

    volumes:
       - /var/log/gluEngineName/gluware.log:/log/gluware.log


Java Management Extensions (JMX) properties are available through the GLU.Engine APIs. JMX provides a standard mechanism to monitor and manage applications. By default Spring Boot will expose management endpoints as JMX MBeans under the org.springframework.boot domain however since


If your application contains more than one Spring ApplicationContext you may find that names clash. To solve this you can set the endpoints.jmx.unique-names in the GLU ‘Application Settings’ property to ‘true’ so that MBean names are always unique.


If you don’t want to expose endpoints over JMX you can set the endpoints.jmx.enabled property to ‘false’.


Jolokia is a JMX-HTTP bridge giving an alternative method of accessing JMX beans. With Spring Boot you can use your application.properties, simply prefix the parameter with jolokia.config.debug property to ‘true’.


For additional detail on JMX monitoring see this resource.


Actuator endpoints allow you to monitor and interact with your GLU application. Spring Boot includes a number of built-in endpoints and you can also add your own. For example, the health endpoint provides basic application health information on your Application.


Click here or additional detail.

Splitting an array and parallel processing

Splitting an array and parallel processing are commonly employed in to enhance efficiency and optimise resource utilisation when dealing with large datasets or complex tasks.

Splitting an Array


It is possible to take a large payload and use the Splitter function to break it up into multiple elements to be orchestrated.

In the example below we will take a payload and store each element in a table of a database.

Body Payload

See below this simple array:

{
“report”: [
{
“reportLine”: {
“glcode”: “AG82652-3635”,
“name”: “Sticky Buns”,
“balance”: “500”
}
},
{
“reportLine”: {
“glcode”: “AG82634-3635”,
“name”: “Iced Donuts”,
“balance”: “2800”
}
}
]
}

This is an array called “report” containing elements made up of a class called “reportLine”.

Target Table

The intended table structure is as follows:

Each item from the array will occupy a distinct row within the table. Furthermore, the attributes of each class instance will be appropriately assigned to the corresponding column names.

glCodeNameBalance
AG82652-3635Sticky Buns500
AG82634-3635Iced Donuts2800

Console Configuration

Request Parameters setup

To configure the marshaling set up the Request Parameters as per the example below. The Object / Collection path stipulates the path within which to find and store the class element being unmarshalled called ‘glcode’.

Properties

Unmarshaling

Handler setup

To orchestrate the splitting of each element in the incoming payload, you need to set up a Handler specifically for splitting the payload. Below are the steps outlined based on the numbered diagram and accompanying table:

Handler Parameters

ParameterConsole LabelExample ValueDescription
1Parameter, None, ExpressionNoneTo show the splitter options this needs to be set to ‘None’.
2ACTIONROUTE TOIndicates how the splitter will be used.
3Not from listNot tickedBETA description to follow.
4FLOW CODE: Choose the flow code of the orchestration which will be triggered for each element of the arraysplitterRoute944482Flowcode of the orchestration which will be executed
5ENABLE THREAD POOL: FALSEFALSESee Throttle Type 2: Concurrent Requests using Thread Pools
6SplitterSelect this to call the flow code for each element in the array
7Parallel ProcessingNot tickedIf this is ticked then each orchestration will be run in parallel. To be used to speed up the processing.
8StreamingNot tickedBETA description to follow.
9Stop on ExceptionNot tickedBETA description to follow.
10Skip FirstNot tickedBETA description to follow.
11TIMEOUT0BETA description to follow.
12DELIMITERBlankTo be used for SFTP, FTP, and FILE functions see FTP / SFTP Connectors & FTP/S
13Concatenate responseUN TICKEDTick if the response from each of the Orchestration of the elements needs to be returned back as a Response to the API
14unlabelledreportProvide the name of the array (as defined in the Request Parameters
15COMBINED ROUTEBLANKBETA description to follow.

ENDPOINT MANAGER PANEL

Each element within the array will be stored in the database, with each element occupying a single row. Below outlines the configuration steps for the ENDPOINT MANAGER PANEL:

REQUEST MANAGER PANEL

The below shows the setup of the REQUEST MANAGER PANEL, specifically configured with a mySQL DB connector to insert rows into a table:

insert into report(glCode,Name,Balance) value (${glcode},${name},${balance})

RESPONSE MANAGER PANEL

Ensure to include the appropriate Response Manager properties to avoid failure in case the Response Manager panel is incomplete.

Please refer to Response Manager for further details on how to complete the response manager panel.

Parallel Processing

When parallel processing is enabled, the Splitter uses a thread pool to process the messages concurrently. The thread pool is, by default, configured to use 10 threads, making it up to 10 times faster.

Redirect to other transactions

It is possible to redirect the flow of the transaction from one transaction to another based on conditions defined in a Handler on the request parameters. Similarly, it is possible to redirect Orchestrations (within a Transaction Set) from one orchestration to another based on conditions defined in the Handler on the response parameters.

Example: Transaction – to – Transaction routing

Diagram Example: It is possible to have the API request handler redirect the transaction flow to the “Balance Enquiry” transaction.

When setting this up, the Flow Codes drop down box will show all the flow codes in the API.

Example: Orchestration – to – Orchestration routing

Diagram Example: A response handler can redirect the flow to a different orchestration – e.g. the “Insert Endpoint Response into Database” Orchestration.

Example: Orchestration – to – Transaction routing

An orchestration can route to another transaction within the integration. Important to note here the connector setup is important.

Request Manager

The Request Manager is used to define the details of an incoming request. The contents of this block will vary depending on the type of API it is connected to (see the Transaction manager for API configuration details).

Within the control panel, you can specify the structure of the request:


The Transaction defined in the request manager can be triggered in several ways. The most common is for it to be triggered from an API call inbound to the GLU.Engine. However, it is also to trigger the transaction through setting up a schedule to trigger itself OR on startup of the GLU.Engine, at which the transaction can be set up to only run once on startup.

Scheduled Tick Box

The Schedule and the “run on startup” are mutually exclusive.

Currently, Scheduler, Quartz, Cron & Timer are features that are available to use. 

Scheduler

The scheduler feature can be set up for all the REST methods, i.e. PATCH, POST, etc. 

The Scheduler feature allows repeatable transactions to be triggered by a scheduler. Each time the API is triggered, it is like a new API request triggering the transaction. This means Derived Parameters and Handlers in the API Request are all actioned. It is also possible to set default values in the inbound parameters and these will take effect. 

The Scheduler feature enables the automation of repeatable transactions via scheduling. Each time the scheduler runs the API call triggered is treated as a new request and all associated Derived Parameters and Handlers are executed. Request parameters associated with the API will be passed as null unless default values are set at which point these will be taken for the transaction.


Delay:

  • This is the value for the delay between each transaction being repeated.
  • This value cannot be 0.
  • example: 10
  • (If left empty then the default value will apply of 500)

Initial Delay:

  • This is the delay before the first transaction is issued.
  • This value can be 0.
  • example: 5
  • (If left empty then the default value will apply of 1000)

Repeat Count:

  • This is the number of times which the transactions will be iterated.
  • If this value is set to 0 then it will repeat for ever.
  • example: 6
  • (If left empty then the default value will apply of 0)

Time Unit:

  • for INITIAL DEALY and DELAY.
  • POSSIBLE Values: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS
  • example: SECONDS

Trigger API:

  • Is used to start an API repetitively at a fixed time based on the configuration.
  • It works in the same way as a cron job is scheduled in Linux.

Quartz

Quartz allows you to schedule repeated running of an API based on a frequency from the point the GLU.Engine starts up. The counter settings all happen from the point the GLU.Engine has started.

Repeat Count:

With this feature, you can define how many times a job should be repeated. By setting the repeat count to a specific number, such as 3, Quartz will automatically execute the job the specified number of times.

Repeat Interval:

This feature determines the time gap between consecutive job executions. By setting a repeat interval, such as 10 seconds (10,000 milliseconds), Quartz will schedule the job to run at regular intervals, ensuring efficient and timely execution.

Trigger Start Delay:

This feature allows you to introduce an initial delay before a job starts executing. By specifying a delay in milliseconds, such as 5 seconds (50,000 milliseconds), you can ensure that the job begins its execution after a specific interval from the scheduler’s start.

Time Zone:

To ensure consistent scheduling across different time zones, Quartz provides a parameter to specify the time zone in which the scheduler operates. You can set the desired time zone, such as “GMT” or “America/New_York,” ensuring that the scheduled jobs align with the intended time zone, regardless of the system’s default setting.

Cron

The schedule expression can be made of 5 to 7 parts that represent the timing of the job. When expressions are composed of 6 parts, the first items is the “seconds” part (and year is considered missing). Each field represents a specific unit of time and can have a range of values:

  • Field 1 (Seconds):
    • Represents seconds (0-59 or *).
    • Optional.
  • Field 2 (Minutes):
    • Represents minutes (0-59 or *).
  • Field 3 (Hours):
    • Represents hours (0-23 or *).
  • Field 4 (Day of the Month):
    • Represents the day of the month (1-31 or *).
  • Field 5 (Month):
    • Represents the month (1-12 or *).
  • Field 6 (Day of the Week):
    • Represents the day of the week (0-7; both 0 and 7 represent Sunday or ? or MON-FRI).
  • Field 7 (Year):
    • Represents the year.
    • Optional.

Examples:

  1. 0/3 10 * * * ?:
    • Triggers an API every three seconds only in the tenth minute of each hour.
  2. 0/2 * * * ?:
    • 5 parts, an API call every two minutes.
  3. 0 0/2 * * * MON-FRI 2030:
    • 7 parts, an event every two minutes for weekdays only in the year 2030.

Timer

An Inbound Connector needs to be configured, typically as a simple REST Inbound Connector. It’s against this Connector that the scheduler configuration is defined. Additionally, it is also possible that even though the transaction is scheduled to run as ‘self-initiated’, this Inbound Connecter API can also be called from an external system.

The API Context Name is not applicable in this case however the MethodContent TypeSave Request As, and Add to INFO Logs are all applicable.


PERIOD:

  • Similar to DELAY in Scheduler.
  • Represents the value for the delay between each transaction being repeated, measured in microseconds.
  • This value cannot be 0.
  • Example: 1000 (for 1000 microseconds, 1 second).
  • If left empty, the default value of 500 microseconds will apply.

DELAY:

  • Similar to INITIAL DELAY in Scheduler.
  • Represents the delay before the first transaction is issued, measured in microseconds.
  • This value can be 0.
  • Example: 2000 (for 2000 microseconds, 2 seconds).
  • If left empty, the default value of 1000 microseconds will apply.

REPEAT COUNT:

  • This parameter defines the number of times the transactions will be iterated.
  • If set to 0, the process will repeat indefinitely.
  • Example: 6
  • If left empty, the default value of 0 will be applied.

Run once on startup Tick Box

If this is ticked then the Transaction will trigger itself only on the startup of the GLU.Engine. This will work with all inbound protocols.

Context Name

Within the Request Manager Control Panel, follow these steps to assign a ‘Context Name’ for a particular API call:

  1. Common Path:
    • Define the ‘Common Path’ in the Connectors section of the Request Manager Control Panel. This is the shared part of the API URL that is common to multiple calls.
    Example: https://devportal.com/api
  2. Context Name:
    • The ‘Context Name’ is the part of the URL that comes after the ‘Common Path’. It is essentially the unique identifier for a specific transaction type.
    Example (for the provided URL): /clients/8a85877a5e4ef2b767/loans
  3. Combining Common Path and Context Name:
    • The full path or URL for a particular API call is created by combining the ‘Common Path’ and the ‘Context Name’.
    Example (full URL): https://devportal.com/api/clients/8a85877a5e4ef2b767/loans
  4. Forward Slash ‘/’ Recommendation:
    • It’s recommended for consistency to add a ‘forward slash’ ‘/’ to the front of your ‘Context Name’. However, this isn’t mandatory, as GLU will automatically add it when building the URLs if it’s not provided.
    Example (with recommended forward slash): /clients/8a85877a5e4ef2b767/loansExample (without forward slash, added automatically by GLU): clients/8a85877a5e4ef2b767/loans

By assigning a unique ‘Context Name’, you can differentiate between different Transaction Types of transactions within the Request Manager Control Panel.

Context Name with Parameters

GLU allows for the use of a parameter within the definition of the context name. The parameter can be defined inside the context name when using the syntax: {parameterA} See below for example:


To successfully unmarshal this parameter, the following three items must be included in the configuration:

  1. A request parameter must be created
  2. The unmarshalling parameter attribute Name must be aligned to the context name
  3. The source ‘From’ must be selected as the header.


Context Name & Route Versioning

Route Versioning is where you include a version indicator such as /v1/ or /v2/ into the URI via the Context Name field, is generally considered to be a clear and concise mechanism for the API user to ensure they are consuming the correct API version and to reference the correct documentation.

In this way, you can expose multiple versions of an API on the same GLU.Engine until such time as ‘legacy’ versions are ready to be deprecated at which time you can simply remove that version from the config. In such cases, it is advisable to include a Handler to return a 30x HTTP Response Code with an appropriate Error Message to advise any system that attempts to connect to a deprecated API version that that version is no longer in use.

As an alternative to Route Versioning is to include the versioning in the Header information. This article provides some further insight into the topic of API Version Controls. See article on versioning

Method

Based on the Initiating System Protocol the ‘Method’ drop-down options will be presented.

The available request types vary depending on the overarching API specification.

Selecting either GET or DELETE (available for HTTP/REST calls) will remove the ability to define a Content Type (see below).

Save Request As

The “Save Request As” field is used to record the datetimestamp of when the transaction was initiated in a variable which could then be used later in the Application.

This is used if for instance an audit of when the APIs need to be recorded in a Database. The parameter as part of orchestration could record the value in a database.

Add To INFO Logs

This check box should be ticked if the value from the Save Request As (i.e. the datetimestamp API is triggered) should be put in the logs.

This is put in the Logs if the logging is set to INFO.

Throttle Panel

Controls the number of transactions to put through for a period of time, i.e. 5000 transactions in 400ms

see Managing Load with Throttles for details.

Time Period (milliseconds)

The Time period the number of transactions will be controlled to. i.e. 400ms

Requests Per Time Period

The number of transactions to control i.e. 5000

Handling Special Characters

The following characters are considered special characters in JSON:

  1. Double quotes (“)
  2. Backslash ()
  3. Newline (\n)
  4. Carriage return (\r)
  5. Tab (\t)
  6. Backspace (\b)
  7. Form feed (\f)

Important to note: By default, the GLU.Engine will not make changes to any special characters within JSON payloads during the integration flow.

Unescape JSON Special Characters

GLU provides the capability to ‘unescape’ these characters – i.e. to remove the backslash ‘\’ characters from a JSON payload. The process of unescaping JSON characters is the reverse of the escaping process, and it involves converting the encoded special characters back into their original form. This allows special characters within JSON payloads to be properly interpreted and used by applications that receive them.

To perform the unescape operation, choose “Unescape JSON” from the Decoder dropdown menu in the Response Manager Panel.

Example 1

Original JSON payload:

{
\”TRANSACTION_ID\”:\”5930551\”
}

Unescaped JSON payload:

{
“TRANSACTION_ID”:”5930551″
}

Example 2

Original JSON payload:

{
\”test\”:\”backslash \\ and double quotes ‘\”\”
}

Unescaped JSON payload:

{
“test”:”backslash \ and double quotes ‘””
}

Retain escaped JSON Special Characters

The GLU.Engine introduces the “Retain Escaped JSON” feature, providing users with the ability to preserve the integrity of JSON data containing escaped characters. This feature ensures that special characters remain intact during data transmission or storage, preventing misinterpretation and maintaining the accuracy of the original data structure.

The ability to retain escaped JSON characters can be utilised in both API requests and orchestration responses.

GLU Formulas

Like GLU Functions, GLU Formulas are versatile tools for derived parameters, request, and response handlers. 

Note: FORMULAs involve mathematical calculations and are always prefixed with the ‘=’ symbol. FUNCTIONs are not preceded by any symbol. 

Addition Formula

The Addition Formula is implemented as follows: 

=${amountOne}+${amountTwo}+${amountThree}+...

This formula performs the summation of a set of values (Integer or Float). When utilised in a Derived Parameter, it returns the SUM of the specified values. 

Example

formulaSum =${amountOne}+${amountTwo}+${amountThree} 

Given: 

  • `amountOne = 2` 
  •  `amountTwo = 3` 
  •  `amountThree = 5` 

The result is: 

  •  `formulaSum = 10` 

This shows that the `formulaSum` Derived Parameter returns the product of the values assigned to `amountOne`, `amountTwo`, and `amountThree`. In the provided example, the SUM yields a value of 10. 

Multiplication Formula

The Multiplication Formula is implemented as follows: 

=${amountOne}*${amountTwo}*${amountThree}*…

This formula serves the purpose of multiplying a set of values, whether they are integers or floats. When utilised in the creation of a Derived Parameter, it yields the PRODUCT of the specified values. 

Example

formulaMultiply =${amountOne}*${amountTwo}*${amount Three} 

Given: 

  •  `amountOne = 2` 
  •  `amountTwo = 3` 
  •  `amountThree = 5` 

The result is: 

  • formulaMultiply = 30  

This shows that the formulaMultiply Derived Parameter returns the product of the values assigned to `amountOne`, `amountTwo`, and `amount Three`. In the provided example, the multiplication yields a value of 30. 


Division Formula

The Division Formula is implemented as follows: 

=${amountOne}/${amountTwo}

This formula is designed to divide one value, whether it is an integer or float, by another. When employed in the creation of a Derived Parameter, it yields the QUOTIENT of the specified values. 

Example

formulaDivide =${amountOne}/${amountTwo} 

Given: 

  •  `amountOne = 550` 
  •  `amountTwo = 100` 

The result is: 

  • formulaDivide = 5.5 

In this example, the formulaDivide Derived Parameter produces the outcome of dividing the value of `amountOne` by the value of `amountTwo`, resulting in a quotient of 5.5. 

Using Handlers

Handlers enable business rules/logic to be applied to the flow and based on those rules the transaction flow can take different paths or actions that can be triggered in the flows to ultimately conclude with the ‘Response’ to the Initiating System.

Handlers can be added to any Inbound API Request or Response or any downstream system Response.

  • A Handler on an Inbound API Request could for example trigger the routing of the request to another Inbound API on the same GLU.Engine. See here for more: Redirect to other transactions
  • A Handler on an Inbound API Response could for example trigger the flow to be re-routed or it could trigger a param matching a certain value or values to trigger it to be over-written etc.
    • NOTE: Up to 100 values can be used. Using more than this may require a higher Thread Stack Size – this can be added in Build Manager JVM Arguments: -Xss3m
  • A Handler on the Response to an outbound Connector call is the most widely used mechanism for orchestrating your flows. See here for more: Orchestration Response Handlers

Handlers enable business rules/logic to be applied to the flow and based on those rules the transaction flow can take different paths to ultimately conclude with the ‘Response’ to the Initiating System. A Request Handler can allow multiple transactions or actions to be accessed from one API request. Request Handlers can be configured based on Request Parameter Content or for Request Conditions:

Generate Parameters from a Template

Within the ‘Parameters Manager Control Panel’ for any Request or Response configuration find the ‘Load Template to Generate Parameters’ tool. If there is an existing JSON structure of the variables required, the parameters can be added through the use of a template using the ‘Generate Parameters’ tool.


Clicking this tool opens up a pop-up box into which you can paste the template for the payload. The ‘Content Type’ that you have specified for the Request or Response in the ‘Request / Response Manager Control Panel’ will determine the template format that you will need to paste e.g. JSON or XML format.

Additional Options:

  • The ‘Add Only New Parameters’ checkbox enables you to avoid duplicating auto-generated parameters when making updates to the template you are loading.
  • The ‘Path Not Included’ checkbox informs GLU to ignore the missing path if it’s missing from the template.

When pasting your template, check it’s formatted correctly by clicking on the ‘Format’ button and make any corrections needed.


Thereafter by clicking on ‘Generate Parameters’, GLU will auto-create all parameters in the Template within the applicable Request / Response Parameter set. Additionally, the ‘collection path’ for each parameter is auto-populated. This is tremendously useful especially when the template has a ‘deep’ tree structure. If your variables JSON looks like this:

{
“input”: {
“beneficiary”: {
“bankAccount”: {
“name”: “Sample Account”,
“bankId”: “absa”,
“accountNumber”: “1234567890”,
“accountType”: “current”,
“beneficiaryType”: “private”,
“reference”: “TestBeneficiary”
}
}
}


The beneficiaryType parameter will have the marshaling object/collection path set as input.beneficiary.bankAccount.


This will ensure that when the variables JSON is generated from the Outbound Request parameters, the beneficiaryType parameter will be generated in the JSON payload in the correct position.

For each parameter that is added through a template load, GLU parameters need to be mapped.


This feature provides the most efficient mechanism to quickly generate Request and Response payloads. We recommend that you use ‘working’ sample test message templates too (as often sample templates in API specifications are not 100% correct).

Parameter Validation

Validation rules can be created for two main types of parameters:

  1. Inbound API Parameters (Request Parameters): These are parameters passed to APIs as part of the inbound request.
  2. Response Parameters from Connectors in Orchestration (Response Parameters): These are parameters generated as responses from connectors within an orchestration.

Depending on the type of parameter, various types of validation are available.

Hash is described in the GLU Functions & Formulas article.

Min/Max Length

The min/max length validation applies to text parameters, specifying the acceptable character length, and to numeric parameters (integer or float), defining the allowable number of digits.

Here’s how it works:

  • If the min length is left null, only the max length is enforced.
  • If the max length is left null, only the min length is enforced.

Example:

Suppose we set Min = 2 and Max = 4:

  • “hello world” would fail as it exceeds the max length of 4 characters.
  • “h” would fail as it falls short of the min length of 2 characters.
  • “hell” would pass as it falls within the range of 2 to 4 characters.
  • Integer “232” would pass as it falls within the range of 2 to 4 digits.
  • Integer “23” would pass as it matches the min length of 2 digits.
  • Integer “2324” would pass as it matches the max length of 4 digits.

Example Use Case:

You could validate the length of an incoming parameter to route it to a specific action based on its length. To achieve this, you can create a Derived Parameter to calculate length then add a Handler to route based on the Derived Parameter value (i.e. length). In this case, the Derived Parameter formula might look like this: ${token_num}.length()

Min/Max Value

The min/max value validation applies to numeric parameters, specifying the acceptable range of values.

Here’s how it works:

  • If the min value is left null, only the max value is enforced.
  • If the max value is left null, only the min value is enforced.

Example:

Suppose we set Min = 2 and Max = 4:

  • Integer “27” would fail as it exceeds the max value of 4.
  • Integer “1” would fail as it falls short of the min value of 2.
  • Integer “3” would pass as it falls within the range of 2 to 4.
  • Integer “2” would pass as it matches the min value of 2.
  • Integer “4” would pass as it matches the max value of 4.

Regex

Regex (regular expression) validation allows you to define complex patterns for parameter values using regular expressions.

Here’s how it works:

  • Enter the regular expression pattern into the regex field.
  • You can use online resources like regex cheat sheets or testers to build and test your regular expressions before configuring them in the validation.

Example:

Suppose we set RegEx (Alpha Only) as [a-zA-Z]*:

  • String “hello_world” would fail as it contains a special character.
  • String “hello2” would fail as it contains a number.
  • String “helloWorld” would pass as it contains only letters (alpha only).

Date Format


The format field should be used to set the required date format for the parameter.

For instance, if the date format is set to dd-mm-yyyy:

  • If “23-OCT-2019” is passed in as a date, it would not pass the validation, and an error would be raised.
  • However, if “23-10-2019” is passed in as a date, it would pass validation.

Date formats adhere to the ISO 8601 standard. The recommended date format is “2012-04-23T18:25:43.511Z”.

It is recommended to ensure date formats used:

  1. Human-readable yet succinct: Choose formats that are easy for humans to interpret at a glance but also compact to save space and improve readability.
  2. Sorting order: Opt for formats that allow for correct sorting, ensuring that dates are arranged chronologically when sorted alphabetically.
  3. Include fractional seconds: Incorporate fractional seconds whenever possible, as this can aid in accurately establishing the chronology of events, especially in high-frequency systems.
  4. Compliance with ISO 8601: Ensure that the chosen date formats conform to the ISO 8601 standard, which provides a globally recognized and standardized format for representing dates and times.

For a more detailed view of date formatting please refer to GLU Formulas & Functions

Image

For an image parameter, setting a default value means that if no image base64 value is provided for the parameter, the default base64 value will be used instead.

This base64 image decoder can be used to extract a base64 image string.

All data types have a default value field, which can be set if the parameter is passed in without a value set.

Default

The default value needs to adhere to the data type it configures and needs to adhere to the validation rules applied.

Required

All validation rules include a Boolean option to indicate whether the field is required or not

If the Required checkbox is checked, default values cannot be entered. This means that if a parameter is marked as required and no value is provided for it, the validation will fail.

Masking Sensitive Data/Parameters in Logs

Parameters in your messages can sometimes contain sensitive information, and revealing these values in logs poses a security risk. GLU.Engines generate two types of logs where values may need to be controlled:

  1. PAYLOAD Logs: These logs include parameters within the payload of a message.
  2. PARAM Logs: These logs print parameters separately.

PAYLOAD masks

The PAYLOAD mask specifically targets parameters within the payload when they are printed in logs. However, it does not mask the value when it is unmarshalling. To mask values when unmarshalled, adds a mask for the full string as it prints in the logs. PARAM masks are used to mask the value in the logs when it is unmarshalled.


To mask PAYLOAD values:

  1. Go to the ‘Transaction’ level within the Transaction Manager Panel.
  2. Use the ‘Mask PAYLOAD Values in Logs’ field.
  3. Define the ‘tags’ for any values that need to be masked along with the GLU reserved word “GLU_MASK” (e.g., “username”:”GLU_MASK”). This will replace the value for “username” with “**********”.



Since tags are used, any payload value can be masked, not just parameter values within the payload. Tags to be masked can be copied from your payload template configuration and will vary depending on the type of payload (XML, JSON, SQL call, etc.).

The GLU_MASK value masks the full line, so if you specify “username”: “GLU_MASK”, the value will also be included in the masking of “username” (e.g., “**********”).

PARAM Masking

Unchecking the ‘Mask PARAM Value in Logs’ checkbox (which is checked by default) ensures that parameters’ values are not masked in logs.

Any payload tag (PAYLOAD logs) or parameter name (PARAM logs) configured to be masked will be masked in all logs (INFO, WARN, DEBUG, etc.) associated with a particular transaction.

Fill the form and we’ll contact you shortly

    I agree with

    cookies
    We uses cookies to make your experience on this website better. Learn more
    Accept cookies