Business Logic Blocks
Business logic blocks provide decision-making and data transformation capabilities for implementing conditional logic and data processing in your flows.
Condition Block
Evaluates JavaScript expressions based on incoming event data and routes events to one of two outputs (true or false) based on the result.
Example Usage
| // Route based on user role
outputs.getUserRole.role === 'admin'
// Check numeric thresholds
outputs.checkBalance.amount > 1000
// Complex conditions with multiple criteria
outputs.userInfo.active && outputs.userInfo.subscription === 'premium'
|
Use Cases
- User access control: Route different user types to appropriate processing paths
- Data validation: Direct valid vs invalid data to different handling workflows
- Business rule enforcement: Implement conditional logic based on business requirements
- Error handling: Route successful vs failed operations to appropriate response flows
Creates new output events by evaluating JavaScript expressions. Primary block for data transformation, restructuring, and computation within flows.
Expression Capabilities
Data Restructuring
| // Flatten nested data
{
userId: outputs.userInfo.profile.id,
userName: outputs.userInfo.profile.name,
isActive: outputs.userStatus.active
}
|
Calculations and Computations
| // Calculate totals and percentages
{
originalData: outputs.salesData,
totalSales: outputs.salesData.reduce((sum, item) => sum + item.amount, 0),
averageOrder: outputs.salesData.length > 0 ?
outputs.salesData.reduce((sum, item) => sum + item.amount, 0) / outputs.salesData.length : 0
}
|
Conditional Data Creation
| // Create different output structures based on conditions
outputs.userInfo.role === 'admin' ? {
adminData: outputs.userInfo,
permissions: 'full',
dashboardUrl: '/admin-dashboard'
} : {
userData: outputs.userInfo,
permissions: 'limited',
dashboardUrl: '/user-dashboard'
}
|
| // Format and combine text data
{
welcomeMessage: `Hello ${outputs.userInfo.name}, your account balance is $${outputs.accountInfo.balance}`,
displayName: outputs.userInfo.firstName + ' ' + outputs.userInfo.lastName,
formattedDate: new Date(outputs.eventData.timestamp).toLocaleDateString()
}
|
Advanced Expression Patterns
Anonymous Functions for Complex Logic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | (function() {
const user = outputs.userInfo;
const preferences = outputs.userPreferences;
// Complex processing logic
let recommendedActions = [];
if (user.lastLoginDays > 30) {
recommendedActions.push('re-engagement');
}
if (preferences.notifications === false) {
recommendedActions.push('enable-notifications');
}
return {
user: user,
recommendations: recommendedActions,
priority: recommendedActions.length > 0 ? 'high' : 'low'
};
})()
|
Use Cases
- Data formatting: Convert data between different formats and structures
- Message templating: Create formatted messages for notifications or responses
- Calculation workflows: Perform mathematical operations on incoming data
- Data aggregation: Combine and summarize information from multiple sources