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 this script:

// 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.