Skip to main content

Softyflow BPMN Process Components

This guide provides comprehensive documentation for all available BPMN components in Softyflow's Process Modeler and their configuration options.

This comprehensive palette shows all available BPMN components in Softyflow's Process Modeler, including tasks, events, gateways, and flow elements for building complete workflow automation.
This comprehensive palette shows all available BPMN components in Softyflow's Process Modeler, including tasks, events, gateways, and flow elements for building complete workflow automation.

1. Task ComponentsDirect link to 1. Task Components

1.1. Empty Task (Normal Task)Direct link to 1.1. Empty Task (Normal Task)

Element Type: bpmn:Task

An Empty Task, also called a Normal Task, represents a generic unit of work within the process that doesn’t have a predefined behavior. It can execute custom scripts, perform calculations, or serve as a placeholder for automation logic defined via Input/Output variables.

Empty Tasks are frequently used for **intermediate processing steps** or **backend automation**, where logic is executed automatically without user interaction.
Empty Tasks are frequently used for **intermediate processing steps** or **backend automation**, where logic is executed automatically without user interaction.

1.2. User Task (Manual Task)Direct link to 1.2. User Task (Manual Task)

Element Type: bpmn:UserTask

User Tasks represent manual work that needs to be done by a human user. These tasks appear in user task baskets and can be assigned to specific users or roles.

The User Task element represents manual work that requires human interaction, appearing in user task lists for assignment and completion.
The User Task element represents manual work that requires human interaction, appearing in user task lists for assignment and completion.

1.2.1. Configuration OptionsDirect link to 1.2.1. Configuration Options

1.2.1.1. Users and RolesDirect link to 1.2.1.1. Users and Roles
  • Users: Assign tasks to specific users by email

    • Supports dynamic assignment using variables: {{ userEmails }}
    • Can assign to multiple users with comma-separated emails
    • Special variables: {{SF_initiator}}, {{SF_latestValidator}}
  • Roles: Assign tasks to user groups/roles

    • Supports dynamic assignment using variables: {{ roleId }}
    • Can assign to multiple roles with comma-separated IDs
    • Special role: public (accessible to all users)
  • reCAPTCHA: Enable for public tasks to prevent spam and fraudulent activities

  • Observers: Users/roles that can view the task in read-only mode

This configuration panel allows you to assign tasks to specific users, roles, or observers, with support for dynamic assignment using process variables.
This configuration panel allows you to assign tasks to specific users, roles, or observers, with support for dynamic assignment using process variables.
1.2.1.2. Interface ConfigurationDirect link to 1.2.1.2. Interface Configuration
  • Interface: Select a web interface (UI) for task execution
  • Screen: Choose specific screen within the selected interface
The interface configuration links the task to a specific web interface and screen, determining what form users interact with when completing the task.
The interface configuration links the task to a specific web interface and screen, determining what form users interact with when completing the task.
1.2.1.3. Task PriorityDirect link to 1.2.1.3. Task Priority
  • Due in: Set task due date in minutes
  • Priority: Set task priority level
    • Very Low, Low, Medium, High, Very High
  • Description: Task description text
  • Hide In Task Basket: Option to hide task from task basket view
Task priority settings allow you to set due dates, priority levels, descriptions, and visibility options to manage task urgency and organization.
Task priority settings allow you to set due dates, priority levels, descriptions, and visibility options to manage task urgency and organization.
1.2.1.4. Notification SettingsDirect link to 1.2.1.4. Notification Settings
  • Send notification email: Enable/disable email notifications
  • Provider: Choose email provider (default: Softyflow provider)
  • Mail Subject: Email subject line (supports variables)
  • Mail Template: Visual email template editor
  • Advanced Settings:
    • Send UAT mail to SF_initiator: Send test emails to process initiator
    • From: Custom sender email
    • Cc: Carbon copy recipients
    • Reply to: Reply-to addresses
    • Attachments: File attachments from project files
The notification settings enable automatic email alerts for task assignments, with customizable templates, providers, and advanced options for recipients and attachments.
The notification settings enable automatic email alerts for task assignments, with customizable templates, providers, and advanced options for recipients and attachments.

1.3. Send Task (Mail Task)Direct link to 1.3. Send Task (Mail Task)

Element Type: bpmn:SendTask

The Send Task element automates email delivery during process execution, sending notifications or information without requiring human interaction.

The Send Task element automates email delivery during process execution, sending notifications or information without requiring human interaction.
The Send Task element automates email delivery during process execution, sending notifications or information without requiring human interaction.

1.3.1. Configuration OptionsDirect link to 1.3.1. Configuration Options

1.3.1.1. RecipientsDirect link to 1.3.1.1. Recipients
  • To Users: Email recipients (users)
  • To Roles: Email recipients (roles/groups)
This panel configures email recipients for send tasks, supporting both direct user email addresses and role-based group assignments.
This panel configures email recipients for send tasks, supporting both direct user email addresses and role-based group assignments.
1.3.1.2. Mail ConfigurationDirect link to 1.3.1.2. Mail Configuration
  • Provider: Email service provider
  • Mail Subject: Email subject (supports variables like {{ taskId }})
  • Mail Template: Visual email body editor
  • Advanced Settings: Same as User Task notification settings
The mail configuration panel allows you to define the email subject and compose the message body using process variables for dynamic content.
The mail configuration panel allows you to define the email subject and compose the message body using process variables for dynamic content.

Mail Template

The visual email template editor provides a drag-and-drop interface for designing professional email layouts with dynamic content and formatting options.
The visual email template editor provides a drag-and-drop interface for designing professional email layouts with dynamic content and formatting options.

1.4. Sub ProcessDirect link to 1.4. Sub Process

Element Type: bpmn:SubProcess

Sub Processes allow embedding and executing other processes within the current process.

The Sub Process element allows you to embed and execute other processes within the current workflow, enabling process modularity and reusability.
The Sub Process element allows you to embed and execute other processes within the current workflow, enabling process modularity and reusability.

1.4.1. Configuration OptionsDirect link to 1.4.1. Configuration Options

  • Sub Process: Select the process to execute
  • Parallel Multi-Instance: Enable parallel execution of multiple instances
  • Parallel Array: Variable containing array values for multi-instance execution
This configuration panel enables you to select which process to execute as a subprocess and configure parallel multi-instance execution for processing arrays of data.
This configuration panel enables you to select which process to execute as a subprocess and configure parallel multi-instance execution for processing arrays of data.

2. Gateway ComponentsDirect link to 2. Gateway Components

Gateways control the divergence and convergence of process flows based on defined conditions.

2.1. Exclusive Gateway (XOR)Direct link to 2.1. Exclusive Gateway (XOR)

Exclusive Gateways create decision points in the process flow where only one path can be taken based on conditions.

  • Used to model decisions based on conditions.
  • Only one outgoing path is selected (mutually exclusive).
Exclusive Gateways create decision points where only one outgoing path is selected based on conditional expressions, directing workflow to the appropriate branch.
Exclusive Gateways create decision points where only one outgoing path is selected based on conditional expressions, directing workflow to the appropriate branch.

2.2. Parallel GatewayDirect link to 2.2. Parallel Gateway

  • Used to fork the process into multiple parallel paths.
  • Can also join multiple incoming paths into one.
Parallel Gateways enable simultaneous execution of multiple workflow paths, allowing tasks to run concurrently and synchronizing them when all paths complete.
Parallel Gateways enable simultaneous execution of multiple workflow paths, allowing tasks to run concurrently and synchronizing them when all paths complete.

3. Event ComponentsDirect link to 3. Event Components

3.1. Boundary EventsDirect link to 3.1. Boundary Events

Element Type: bpmn:BoundaryEvent

Boundary Events are attached to activities and can interrupt or run parallel to the main activity.

3.1.1. Timer EventsDirect link to 3.1.1. Timer Events

Event Definition: bpmn:TimerEventDefinition

3.1.1.1. Interrupting Timer (One-time)Direct link to 3.1.1.1. Interrupting Timer (One-time)
  • Start in: Time to wait before triggering (in minutes)
  • Supports variable-based delays: {{ delay }}
  • Interrupts the main activity when triggered
3.1.1.2. Non-Interrupting Timer (Recurring)Direct link to 3.1.1.2. Non-Interrupting Timer (Recurring)
  • Every: Recurring interval (in minutes)
  • Runs periodically without interrupting the main activity
  • Continues until the main activity completes
Timer events enable time-based workflow automation, triggering actions after specified delays or at recurring intervals, with support for both interrupting and non-interrupting behavior.
Timer events enable time-based workflow automation, triggering actions after specified delays or at recurring intervals, with support for both interrupting and non-interrupting behavior.

3.1.2. Error EventsDirect link to 3.1.2. Error Events

Event Definition: bpmn:ErrorEventDefinition

  • Catches errors from the attached activity
  • Provides error handling and recovery mechanisms
  • Can define error-specific handling logic
Error events provide error handling mechanisms by catching exceptions from activities and redirecting workflow to error recovery paths.
Error events provide error handling mechanisms by catching exceptions from activities and redirecting workflow to error recovery paths.

3.2. Start EventsDirect link to 3.2. Start Events

Element Type: bpmn:StartEvent

Start Events define where process instances begin execution.

Start Events define the entry points for process instances, marking where workflow execution begins and initializing the process with starting variables. They can only be triggered by a single user who initiates the process execution.
Start Events define the entry points for process instances, marking where workflow execution begins and initializing the process with starting variables. They can only be triggered by a single user who initiates the process execution.

3.3. End EventsDirect link to 3.3. End Events

Element Type: bpmn:EndEvent

End Events mark the completion points of process instances, finalizing the workflow execution and storing the final state of process variables.

End Events mark the completion points of process instances, finalizing the workflow execution and storing the final state of process variables.
End Events mark the completion points of process instances, finalizing the workflow execution and storing the final state of process variables.
## 4. Flow Components ### 4.1. Sequence Flow **Element Type**: `bpmn:SequenceFlow`

Sequence Flows connect process elements and define the execution order.

4.1.1. Configuration OptionsDirect link to 4.1.1. Configuration Options

  • Conditional Flows: Add JavaScript conditions to control flow
  • Default Flows: Fallback paths when no conditions are met
  • Variable access for condition evaluation
Sequence flows connect process elements and define execution order, with support for conditional expressions to control which paths are taken during workflow execution.
Sequence flows connect process elements and define execution order, with support for conditional expressions to control which paths are taken during workflow execution.

5. Input/Output VariablesDirect link to 5. Input/Output Variables

Available for Empty Task, User Tasks, Send Tasks, and Sub Processes.

I/O Variables define values evaluated before (Input) or after (Output) task execution.

5.0.1. Input ParametersDirect link to 5.0.1. Input Parameters

  • Process data before task execution
  • Transform external data for task consumption
  • Set up task-specific variables

5.0.2. Output ParametersDirect link to 5.0.2. Output Parameters

  • Process data after task completion
  • Transform task results for process consumption
  • Update process variables

5.1. Variable TypesDirect link to 5.1. Variable Types

5.1.1. ScriptsDirect link to 5.1.1. Scripts

  • Type: script
  • Language: JavaScript
  • Execution: Server-side execution
  • Use Cases: Complex data manipulation, calculations, API calls
Script-based input/output variables enable complex data manipulation using JavaScript, with server-side execution for calculations, API calls, and business logic processing.
Script-based input/output variables enable complex data manipulation using JavaScript, with server-side execution for calculations, API calls, and business logic processing.

5.1.2. ExpressionsDirect link to 5.1.2. Expressions

  • Type: expression
  • Language: JavaScript expressions
  • Execution: Simple value assignments and transformations
  • Use Cases: Variable mapping, simple calculations
Expression-based variables provide simple value assignments and transformations using JavaScript expressions, ideal for variable mapping and straightforward calculations.
Expression-based variables provide simple value assignments and transformations using JavaScript expressions, ideal for variable mapping and straightforward calculations.

5.1.3. ActionsDirect link to 5.1.3. Actions

  • Type: action
  • UI-Based: Visual function builder
  • Capabilities: UI components, database operations, file handling
  • Return Value: Configurable return data
Action-based variables provide a visual function builder for database operations, file handling, and UI components, enabling complex workflows without writing code.
Action-based variables provide a visual function builder for database operations, file handling, and UI components, enabling complex workflows without writing code.

6. Advanced FeaturesDirect link to 6. Advanced Features

6.1. System Variables ReferenceDirect link to 6.1. System Variables Reference

The following system variables are automatically available in all process contexts:

VariableTypeDescriptionAvailable In
SF_initiatorObjectProcess initiator user information (email, name, id)All tasks and scripts
SF_latestValidatorObjectUser who completed the most recent taskAll tasks and scripts
SF_modeStringExecution mode: "test", "uat", or "prod"All contexts
SF_versionStringProcess version identifierAll contexts
instanceIdStringUnique process instance identifierAll contexts
projectIdStringCurrent project identifierAll contexts
nextTaskIdStringIdentifier of the next task to executeProcess flow
SF_loop_variablesAnyCurrent array element in multi-instance executionMulti-instance subprocesses only
SF_loop_indexNumberCurrent iteration index (0-based)Multi-instance subprocesses only
SF_sub_process_dataObjectData returned from subprocess executionParent process after subprocess
SF_sub_process_resArrayArray of results from parallel subprocess instancesParent process after multi-instance
SF_last_activity_nameStringName of the last executed activityAll contexts
SF_involved_usersArrayAll users who have participated in the processAll contexts
SF_involved_validatorsArrayAll users who have validated tasksAll contexts
SF_involved_rolesArrayAll roles assigned to tasksAll contexts
SF_observerArrayObserver roles for the processAll contexts
SF_priorityStringCurrent process priority levelAll contexts
SF_descriptionStringProcess description textAll contexts

Usage Examples:

// Access initiator email
let requesterEmail = SF_initiator.email;

// Check execution mode
if (SF_mode === "prod") {
  // Production-only logic
}

// Access loop data in multi-instance
let currentItem = SF_loop_variables;
let itemIndex = SF_loop_index;

6.2. Variable InterpolationDirect link to 6.2. Variable Interpolation

  • Syntax: {{ variableName }}
  • Supported in: Email subjects, templates, assignments, conditions
  • Dynamic evaluation during runtime

6.3. Multi-Instance ExecutionDirect link to 6.3. Multi-Instance Execution

6.3.1. Parallel Multi-InstanceDirect link to 6.3.1. Parallel Multi-Instance

  • Execute multiple instances of sub-processes simultaneously
  • Array-based instance creation
  • Independent variable scopes per instance

7. Best PracticesDirect link to 7. Best Practices

This section consolidates best practices from across the process documentation suite.

7.1. Process DesignDirect link to 7.1. Process Design

  • Start Simple: Begin with basic flows before adding complexity
  • Use Descriptive Names: All elements should have clear, business-friendly names
  • Modular Design: Break complex processes into subprocesses
  • Plan Error Handling: Define error paths for critical operations
  • Document Your Process: Add descriptions and comments for future maintainers

7.2. Variable ManagementDirect link to 7.2. Variable Management

  • Consistent Naming: Use camelCase and descriptive names
  • Avoid System Prefixes: Don't start variables with SF_
  • Document Complex Scripts: Add comments explaining business logic
  • Test Before Deployment: Validate all scripts in test mode
  • Minimize Scope: Keep variable usage as local as possible

7.3. Data Transformation (Input/Output)Direct link to 7.3. Data Transformation (Input/Output)

  • Choose the Right Type:
    • Expressions for simple values
    • Scripts for complex logic
    • Actions for database operations
  • Performance: Minimize external API calls in critical paths
  • Error Handling: Always use try-catch in complex scripts
  • Type Validation: Ensure data types match expectations

7.4. Email ConfigurationDirect link to 7.4. Email Configuration

  • Test Templates: Always test in UAT mode first
  • Use Variables: Create dynamic, personalized content
  • Provider Selection: Configure appropriate providers per environment
  • Compliance: Include unsubscribe options where required

7.5. Subprocess UsageDirect link to 7.5. Subprocess Usage

  • Clear Interfaces: Document expected input/output variables
  • Error Handling: Implement error handling in both parent and subprocess
  • Performance: Monitor parallel execution limits
  • Testing: Test subprocesses independently before integration

7.6. Measures and ReportingDirect link to 7.6. Measures and Reporting

  • Meaningful Names: Use business-friendly measure labels
  • Consistent Naming: Follow conventions across all processes
  • Appropriate Types: Match measure types to data types
  • Handle Null Values: Use conditional logic for missing data
  • Test Expressions: Validate with various scenarios

7.7. SecurityDirect link to 7.7. Security

  • Enable reCAPTCHA: For public tasks to prevent spam
  • Validate Input: Always validate user input in scripts
  • Role-Based Access: Use proper role assignments
  • Secure Credentials: Never hardcode API keys or passwords
  • Audit Logging: Enable logging for sensitive operations

7.8. Performance OptimizationDirect link to 7.8. Performance Optimization

  • Limit Parallel Tasks: Avoid resource exhaustion
  • Optimize Queries: Use indexed fields in database queries
  • Cache When Possible: Store frequently-accessed data
  • Monitor Execution: Track subprocess and task execution times
  • Set Appropriate Timeouts: Configure realistic timeout values

7.9. Testing and DeploymentDirect link to 7.9. Testing and Deployment

  • Test Mode First: Always test in test environment
  • Gradual Rollout: Test → UAT → Production
  • Version Control: Track process version changes
  • Backup Before Changes: Save current version before major updates
  • Monitor After Deployment: Watch for errors in production

7.10. MaintenanceDirect link to 7.10. Maintenance

  • Regular Reviews: Periodically review and optimize processes
  • Update Documentation: Keep process descriptions current
  • Clean Up Unused: Remove deprecated processes and variables
  • Monitor Performance: Track metrics and optimize bottlenecks
  • User Feedback: Incorporate user suggestions and issues

This comprehensive guide covers all available BPMN components in Softyflow. Each component can be combined to create sophisticated workflow automation solutions that meet your business requirements.