Stackflows
HomePricingContactBPMN Academy
  • Introduction to StackFlows
  • Getting started
    • 🚀 How to start?
    • ❓FAQ
    • 🤗 Our community
    • 📖 Definitions
    • 📚 Knowledge base
  • Products
    • Studio
      • Collaboration with others
        • Comments
        • Model share
      • Model categories
      • Model design
        • Node types
          • Start node
          • Task
          • User task
            • User task forms (Custom fields)
          • Business rule (DMN) task
          • Service (external) task
          • Call another process
          • End node
          • Gateway
        • Start (Test) process
        • Data mapping
        • Data forms
        • Flow conditions
        • Time formats
        • Token simulation
        • Process real-time simulation
        • General model settings
        • Advanced model settings
      • Model deployment
        • Deployment errors
      • Process execution (Start)
        • Manual process start
        • Process start by email
        • Process start with webhook
        • Process start via API
      • Process execution errors
      • Insights and analytics
        • Model real-time activity
        • Heatmap insights
      • Embedded BPMN Studio
      • Basic features
        • Model versions
        • Version compare
        • Process tags
        • Model import/export
        • Model draft version
        • Model notes
    • App (User area)
      • Dashboard and metrics
      • User tasks
      • Workflows
      • User management
      • Organization structure (Tree)
      • Organization settings
    • Core features
      • Variables
      • Organization (Business) units
      • Tags
      • Profiles
      • Environments
    • Apps & Connectors
      • Make.com integration
      • Custom app integration
      • Camunda 7 connection
      • App & Integration profiles
  • BPMN & DMN modelling
    • Introduction of BPMN
  • API
    • API Introduction
    • API reference
  • Subscriptions & Billing
    • Introduction
  • Troubleshooting
    • How to report a problem?
  • Policies
    • Terms of services
    • Privacy
    • Data processing
Powered by GitBook
On this page
  • Setting conditionals
  • Available conditional expression
  • Basic operators
  • Text operators
  • Numeric operators
  • Date & Time operators
  • Boolean operators
  • Array operators
  1. Products
  2. Studio
  3. Model design

Flow conditions

PreviousData formsNextTime formats

Last updated 1 year ago

BPMN flow conditions are expressions used to determine the path of execution in a BPMN process based on specific criteria. They enable dynamic routing of process instances by evaluating the conditions at runtime and choosing the appropriate sequence flow.

Setting conditionals

Setting conditions with regex involves using regular expressions to define a pattern that a particular piece of data must match. When the data matches the specified regex pattern, the condition is met, allowing for actions or decisions to be taken based on that match.

  1. Select flow (arrow)

  2. Go to ADVANCED SETTINGS

  3. Go to Conditions

  4. Select Type=Expression

  5. Provide a conditional expression

Available conditional expression

Basic operators

Name
Conditional expression
Description

Exists

${value != null}

"Value cannot be empty"

Does not exists

${value == null}

"Value is empty"

Text operators

Name
Conditional expression
Description

Equals to "John"

${FirstName.equalsIgnoreCase('John')}

"The first name exactly matches 'John'."

Equals to "John" (case sensitive)

${FirstName.equals('John')}

"The first name matches 'John' with exact letter casing."

Not equals to "John"

${!FirstName.equalsIgnoreCase('John')}

"The first name does not match 'John'."

Not equals to "John" (case sensitive)

${!FirstName.equals('John')}

"The first name does not match 'John' with exact letter casing."

Not contains "John"

${!FirstName.containsIgnoreCase('John')}

"The first name does not have 'John' anywhere within it."

Not contains "John" (case sensitive)

${!FirstName.contains('John')}

"The first name does not have 'John' anywhere within it."

Contains "John"

${FirstName.containsIgnoreCase('John')}

"The first name has 'John' somewhere within it."

Contains "John" (case sensitive)

${FirstName.contains('John')}

"The first name has 'John' somewhere within it."

Does not contains "John"

${!FirstName.containsIgnoreCase('John')}

"The first name does not have 'John' anywhere within it."

Does not contains "John" (case sensitive)

${!FirstName.contains('John')}

"The first name does not have 'John' anywhere within it."

Starts with "John"

${FirstName.startsWithIgnoreCase('John')}

"The first name begins with 'John'."

Starts with "John" (case sensitive)

${FirstName.startsWith('John')}

"The first name begins with 'John'."

Does not start with "John"

${!FirstName.startsWithIgnoreCase('John')}

"The first name does not begin with 'John'."

Does not start with "John" (case sensitive)

${!FirstName.startsWith('John')}

"The first name does not begin with 'John'."

Ends with "John"

${FirstName.endsWithIgnoreCase('John')}

"The first name concludes with 'John'."

Ends with "John" (case sensitive)

${FirstName.endsWith('John')}

"The first name concludes with 'John'."

Does not end with "John"

${!FirstName.endsWithIgnoreCase('John')}

"The first name does not conclude with 'John'."

Does not end with "John" (case sensitive)

${!FirstName.endsWith('John')}

"The first name does not conclude with 'John'."

Numeric operators

Name
Conditional expression
Description

Equal to 100

${NumericValue == 100}

"The numeric value is exactly 100."

Not equal to 100

${NumericValue != 100}

"The numeric value is not 100."

Greater than 100

${NumericValue > 100}

"The numeric value is greater than 100."

Less than 100

${NumericValue < 100}

"The numeric value is less than 100."

Greater than or equal to 100

${NumericValue >= 100}

"The numeric value is 100 or greater."

Less than or equal to 100

${NumericValue <= 100}

"The numeric value is 100 or less."

Date & Time operators

Name
Conditional expression
Description

Equal to targetDate

${DateTimeValue.equals(targetDate)}

"The DateTime value matches the target date."

Not equal to targetDate

${!DateTimeValue.equals(targetDate)}

"The DateTime value doesn't match the target date."

Greater than targetDate

${DateTimeValue.after(targetDate)}

"The DateTime value is after the target date."

Less than targetDate

${DateTimeValue.before(targetDate)}

"The DateTime value is before the target date."

Greater than or equal to targetDate

`${DateTimeValue.after(targetDate)

"The DateTime value is after or today the target date."

Less than or equal to targetDate

`${DateTimeValue.before(targetDate)

"The DateTime value is earlier or today the target date."

Boolean operators

Name
Conditional expression
Description

Equal to true

${BooleanValue == true}

"The boolean value is true."

Not equal to true

${BooleanValue != true}

"The boolean value is not true."

Array operators

Name
Conditional expression
Description

Contains 'John'

${Value.contains('John')}

"The list contains the string 'John'."

Contains 'John' (Case sensitive)

${Value.stream().anyMatch(str -> str.equals('John'))}

"The list contains the string 'John' with exact letter casing."

Does not contain 'John'

${!Value.contains('John')}

"The DateTime value is after the target date."

Does not contain 'John' (Case sensitive)

${ArrayListValue.stream().noneMatch(str -> str.equals('John'))}

"The list does not contain the string 'John' with exact letter casing."