This guide is covering the following:βœ… Retrieving security details dynamically
βœ… Extracting specific user attributes
βœ… Fetching configuration parameters

Extracting security details

Security details (securityDetails) store user-related data, including email, username, roles, and permissions. These values are stored in additionalData.securityDetails and can be accessed dynamically within a process.

Retrieve security details

Use the following business rule to fetch and store security details:
// Retrieve security details from additionalData
securityDetails = additionalData.get("securityDetails");

// Store the extracted security details
output.put("securityDetails", securityDetails);
Example output:
{
    "securityDetails": {
        "Default": {
            "owner": {
                "username": "user@email.com",
                "identifier": "f08b1452-7c4c-415c-ad6d-8bb2d2d14600",
                "details": {
                    "firstName": "John",
                    "lastName": "Snow",
                    "email": "user@email.com",
                    "jwt": "your_jwt",
                    "roles": [],
                    "groups": [
                        "/Users/Flowx_demo",
                        "/superAdmin"
                    ],
                    "attributes": {}
                }
            }
        }
    }
}

Extract specific owner details

To retrieve specific attributes, such as email, username, first name, and last name, use one of the following scripts (JS or Python):
// Retrieve security details
securityDetails = additionalData.get("securityDetails");
// Extract owner details from the Default swimlane
email = securityDetails.Default.owner.details.email;
username = securityDetails.Default.owner.username;
firstName = securityDetails.Default.owner.details.firstName;
lastName = securityDetails.Default.owner.details.lastName;

// Store extracted details in the output
output.put("email", email);
output.put("username", username);
output.put("firstName", firstName);
output.put("lastName", lastName);
Extracted values:
  • Owner Email (securityDetails.Default.owner.details.email)
  • Username (securityDetails.Default.owner.username)
  • First Name (securityDetails.Default.owner.details.firstName)
  • Last Name (securityDetails.Default.owner.details.lastName)

Dynamic extraction by swimlane

If your application uses multiple swimlanes, retrieve the owner details dynamically:
// Get security details
securityDetails = additionalData.get("securityDetails");

// Extract owner details based on the swimlane
ownerDetails = securityDetails.Default.owner.details;

<Info>
Default is the swimlane name in this example. Replace it with your swimlane name.
</Info>

// Store extracted values in the process instance
output.put("email", ownerDetails.email);
output.put("username", securityDetails.Default.owner.username);
output.put("firstName", ownerDetails.firstName);
output.put("lastName", ownerDetails.lastName);
Example output:
{
  "email": "user@email.com",
  "username": "user@email.com",
  "firstName": "John",
  "lastName": "Snow"
}

Extracting values from configuration parameters

To make business rules flexible, store configuration values in project configuration parameters instead of hardcoding them.

Retrieve configuration parameters

Use a business rule to fetch and store configuration parameter values dynamically:
// Retrieve a configuration parameter (e.g., commission percentage)
commissionPercentage = additionalData.applicationConfiguration.get("commissionPercentage");

// Store the retrieved value in output in the process instance
output.put("commissionPercentage", commissionPercentage);

Example use case: commission calculation

This example shows how to calculate a commission value dynamically using a configuration parameter.

Configuration parameters

Parameter NameDescriptionExample Value
commissionPercentageThe percentage used to calculate the commission0.05 (5%)
Configuration parameters can be modified in:➑ FlowX.AI Designer β†’ Your Project β†’ Configuration Parameters

Process flow

1

User Inputs an Amount

In a User task we have an input UI element where the user provides an amount (userInputAmount).
2

Retrieve Commission Percentage from Configuration

In the next node, a Service Task fetches the commissionPercentage from the configuration parameters.
Business rule used:
// Retrieve user input
amount = input.get("userInputAmount");

// Retrieve a value from configuration
commissionPercentage = additionalData.applicationConfiguration.get("commissionPercentage");


// Apply the configuration value
commissionValue = amount * commissionPercentage;

// Store the calculated result in the process instance
output.put("commissionValue", commissionValue);

3

Calculate Commission

Formula used to calculate the commission:commissionValue=userInputAmountΓ—commissionPercentage\text{commissionValue} = \text{userInputAmount} \times \text{commissionPercentage}
4

Store and Output the Result

The computed commissionValue is stored for further processing.Final result:
Why Use Configuration Parameters?βœ… Keep business rules flexible by avoiding hardcoded values.
βœ… Adapt calculations dynamically based on environment settings.
βœ… Simplify updates by modifying values in the project configuration rather than editing business rules.