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
Section titled “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
Section titled “Example Usage”// Route based on user roleoutputs.getUserRole.role === 'admin'
// Check numeric thresholdsoutputs.checkBalance.amount > 1000
// Complex conditions with multiple criteriaoutputs.userInfo.active && outputs.userInfo.subscription === 'premium'Use Cases
Section titled “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
Transform Block
Section titled “Transform Block”Creates new output events by evaluating JavaScript expressions. Primary block for data transformation, restructuring, and computation within flows.
Expression Capabilities
Section titled “Expression Capabilities”Data Restructuring
Section titled “Data Restructuring”// Flatten nested data{ userId: outputs.userInfo.profile.id, userName: outputs.userInfo.profile.name, isActive: outputs.userStatus.active}Calculations and Computations
Section titled “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
Section titled “Conditional Data Creation”// Create different output structures based on conditionsoutputs.userInfo.role === 'admin' ? { adminData: outputs.userInfo, permissions: 'full', dashboardUrl: '/admin-dashboard'} : { userData: outputs.userInfo, permissions: 'limited', dashboardUrl: '/user-dashboard'}String Manipulation and Formatting
Section titled “String Manipulation and Formatting”// 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
Section titled “Advanced Expression Patterns”Anonymous Functions for Complex Logic
Section titled “Anonymous Functions for Complex Logic”(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
Section titled “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