This guide is covering the following:
✅ Retrieving security details dynamically
✅ Extracting specific user attributes
✅ Fetching configuration parameters
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": {}
}
}
}
}
}
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);
// 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);
# Retrieve security details
security_details = additionalData.get("securityDetails")
# Extract owner details from the Default swimlane
email = security_details["Default"]["owner"]["details"]["email"]
username = security_details["Default"]["owner"]["username"]
first_name = security_details["Default"]["owner"]["details"]["firstName"]
last_name = security_details["Default"]["owner"]["details"]["lastName"]
# Store extracted details in the output
output["email"] = email
output["username"] = username
output["firstName"] = first_name
output["lastName"] = last_name
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
)
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"
}
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 Name | Description | Example Value |
---|
commissionPercentage | The percentage used to calculate the commission | 0.05 (5%) |
Configuration parameters can be modified in:
➡ FlowX.AI Designer → Your Project → Configuration Parameters
Process flow
User Inputs an Amount
In a User task we have an input UI element where the user provides an amount (userInputAmount
).
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);
Calculate Commission
Formula used to calculate the commission:
commissionValue=userInputAmount×commissionPercentageStore 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.