Everything you want to know about values

Values in Boomi Flow are similar to variables in the programming paradigm. They are containers that have a name, and contain data. This data can be numbers, text, dates, instances of a type (say, Type: Customer), or another value.

Boomi Flow separates values from the structure and logic of the flow – this allows you to translate the contents of a value to a different language, run A/B testing, or switch databases – without affecting the rest of the flow.

Values can be created before you start building a flow, and then imported; or created on the go, as you are building the flow. Values can be populated with data during the course of a flow (say, from user inputs), as well. You can also add default data, while creating a value.

Boomi Flow has no reserved keywords for value names. The value name is not an unique identifier; a tenant can have multiple values with the same name. However, it is best not to create duplicate values, as this may cause confusion in the future.

It is recommended that you create a naming convention for your values, and use it consistently for all your flows. It is good design principle to create a value once, and reuse it subsequently in different flows.



Primitive kinds

Every value in Boomi Flow is associated with a kind. You assign a kind to a value while you are creating it. You can also create a value of a certain kind, and redefine it during editing to a different kind.

Boomi Flow comes with nine primitive kinds:

  1. Boolean
  2. Content
  3. Date/Time
  4. List
  5. Number
  6. Object
  7. Password
  8. String
  9. Encrypted
1. Boolean

A Boolean value can be used to test for a Yes/No outcome in the flow. Use this to flag specific outcomes if a condition is met. Example: Say, you need to change the route of a flow, depending on whether a person calling in is the primary policy holder of an insurance or a dependent. Use IsPrimaryPolicyHolder as a Boolean value.


2. Content

Rich text that supports formatting. Use this to store formatted text like Disclaimer Policy or email templates. Works with merge fields.


3. Date/Time

Use this to store date/time in your flows. You can use this to select a default date while creating the value as well.


4. List

A list is a list of objects. Use this when you do not know how many of a certain kind of value you will have. Example: Say, you need to store the details of insurance policy holders and their dependents. The number of dependents for each policy holder will vary, and you do not know how many dependents they may have. Use a list to store the details of dependents.

When you create a list, you need to specify the type of the list you are building. For example, ‘List of Policy Holders’. You can select from a list of available types, or create a custom type. Lists can have various properties associated to the data.

A picklist is a special kind of list, available as a custom type. Use this to store a list of values that remain constant, and/or needs to be reused in multiple flows. Example: A picklist of salutation – Mr., Mrs., Ms.


5. Number

Can be used to store positive or negative numbers, as well as decimals. Numbers can go up to 1.7976931348623157E+308. Use this to store threshold figures. Example: Say, an approval process flow requires the sales director to sign off on all deals that are over $1 million. If you store the $1 million in a Number, you can then use a Decision element to auto-approve all transactions below this threshold number. Going forward, if you need to change this threshold figure, you can do so easily, without affecting the rest of the flow. For more complex mathematical operations, use Macros.


6. Object

Like lists, objects must also have a type associated with them. An object allows you to store complex data, as defined by the type. For example, an object can store all of the properties of a Lead, Contact, or Account. An object is an instance of a type.


7. Password

Can store any UTF-8 character. Use this to store passwords and sensitive content that you do not want other builders to see. Passwords are automatically masked, and not served in Boomi Flow. (If you need to edit a Password, you need to enter your password again; the field appears blank in the Drawing Tool.)


8. String

Stores unformatted UTF-8 characters. Use Strings to store copy of text messages, or email subjects.


9. Encrypted

Use this to store content that needs to be encrypted, like credit card information or medical records. Like passwords, encrypted values are also not served – if you need to edit them, the Drawing Tool does not show the default value. Boomi Flow uses PCI-compliant encryption. Boomi Flow is also compliant with the HIPAA security requirements, for storing protected health information.



System values

System values are values assigned dynamically by the Boomi Flow engine during runtime, and include information about the flow, the person who starts the flow, users in the flow, geolocation data of the user, etc.

All system values can be referenced from within a flow.

System values are not shown in the list of values. Builders can not edit a system value.

System values are prefixed with a ‘$’ sign. The $ prefix is not reserved, and it is allowed for builders to create value names with a $ sign at the beginning. However, do so only if you have a very good reason, to avoid confusion in the future.

Boomi Flow comes with 44 system values.

State values User values Boolean values
$JoinURI $User
$State/ID  $User/Brand $True
$State/Parent ID  $User/Country $False
$State/External ID  $User/Directory ID
$State/Flow ID  $User/Directory Name
$State/ Flow Version ID  $User/Role ID
$State/Flow Developer Name  $User/Role Name
$State/Is Done?  $User/Primary Group ID
$State/ Owner ID  $User/Primary Group Name
$State/Owner User ID  $User/Email
$State/Owner First Name  $User First Name
$State/Owner Last Name  $User/Language
$State/Owner Username  $User/Last Name
$State/Owner Email  $User/Language
$State/Owner Name  $User/User ID
$State/Date Created  $User/Username
$State/Date Modified  $User/Variant
$State/Current Map Element ID  $User/Current Latitude
$State/Current Map Element Developer Name  $User/Current Longitude
$State/Join Uri  $User/Location Accuracy
 $Current Altitude
 $User/Altitude Accuracy
 $User/Current Heading
 $User/Current Speed
 $User/Location Timestamp

Boomi Flow system values include values that store flow state information, values that store user information, and two Boolean values, that contain the Boolean True and False respectively, as data.

1. $JoinUri

screen-shot-2016-10-18-at-4-43-20-pm-minishadow

Every time a flow is run, it generates a new URI by the Boomi Flow player (you can find this URI in the browser tab that opens when you click Run in a flow). This URI is stored in the $JoinURI value.

The flow needs to have run at least once for the $JoinUri to be generated. The Boomi Flow engine automatically populates and subsequently updates the $JoinURI value every time a flow is run. The $JoinURI is all you need to resume a flow that is already running.

Some apps require more than one end-user accessing a running flow at the same time. Sharing the $JoinUri, lets a user transfer control of the flow to another user. For example: In an app that automates approval, a Sales Manager can transfer control of the flow to the Director of Sales, for deals worth over $1 million. The Director can then approve the deal, and pass control back to the Sales Manager.


2. $State/ID

screen-shot-2016-10-18-at-4-43-20-pm-minishadow

Every time a flow is run, it generates a new flow state. The State ID is a unique identifier that identifies these states. The $State/ID value stores this ID. Once a flow is completed from start to finish, all the state information is flushed from the Boomi Flow servers.

Running a flow generates a new URI by the Boomi Flow player (you can find this URI in the browser tab that opens when you click Run in a flow). The string at the end of the URI (right after “join=…”) is the State ID.


3. $State/Parent ID

If there is a flow running a subflow, the $State/Parent ID value contains the ID of the parent flow state, that initiated the sub-flow. Use this to return the sub-flow back to the parent flow state.


4. $State/External ID

Boomi Flow lets developers tag a flow state, and subsequently load it, with a unique ID. Use this if you can not say beforehand what the state will be. Example: You can use the $State/External ID to tag a flow state with invoice number (instead of an ID generated by the Boomi Flow engine).


5.  $State/Flow ID

screen-shot-2016-10-25-at-2-21-43-am-minishadow

The $State/Flow ID stores the unique identifier generated for each flow. You can find the Flow ID at the bottom of your canvas. The Flow ID remains the same throughout the life-cycle of the flow.


6. $State/Flow Version ID

screen-shot-2016-10-21-at-2-12-01-pm-minishadow

The $State/Flow Version ID stores the unique identifier generated for each version of the flow. Every time you change the flow, a new version ID is generated. You can find the Flow Version ID at the bottom of your canvas.


7. $State/Flow Developer Name

This value contains the name of the flow, as named by the builder. You can easily rename a flow, at which point the $State/Flow Developer Name is updated with the new data.


8. $State/Is Done?

Stores the state of the flow as False (is running) and True (completed execution). When a flow is run, the value of $State/Is Done? is False. At the end of runtime, the value of  $State/Is Done? is changed to True. You can check the data of the $State/Is Done? value to determine if a flow has completed execution. A flow is considered done when it reaches a map element that does not have any outbound outcomes.


9. $State/Owner ID

The person who first runs the flow is called the ‘Owner’ of the flow, and is assigned a unique identifier by Boomi Flow. The $State/Owner ID stores this ID. If the flow uses a swimlane where the owner has no access to the flow, the user doing the authentication becomes the new Owner, with the $State/Owner ID updated accordingly.


10. $State/Owner User ID

The person who first runs the flow is called the ‘Owner’ of the flow. The $State/Owner User ID value contains the User ID of the user, as stored in the user directory from which the flow received the user. For example, if a user is logged in into Salesforce, the $State/Owner User ID would be the User ID of the user in Salesforce.


11. $State/Owner First Name

The person who first runs the flow is called the ‘Owner’ of the flow. If the flow is using a third-party service for authentication, this value stores the first name of the flow Owner.


12. $State/Owner Last Name

The person who first runs the flow is called the ‘Owner’ of the flow. If the flow is using a third-party service for authentication, this value stores the last name of the flow owner.


13. $State/Owner Username

The person who first runs the flow is called the ‘Owner’ of the flow. Username is the user name of the flow owner, based on the login details of that user in the third-party service.


14. $State/Owner Email

The person who first runs the flow is called the ‘Owner’ of the flow. If the flow is using a third-party service for authentication, this value stores the email address of the flow owner.


15. $State/Owner Name

The person who first runs the flow is called the ‘Owner’ of the flow. If the flow is using a third-party service for authentication, this value stores the name of the flow owner.


16. $State/Date Created

The person who first runs the flow is called the ‘Owner’ of the flow. Th $State/Date Created Value stores the date, and the time in UTC, when the flow was first run by the Owner.


17. $State/Date Modified

The $State/Date Modified value stores the date, and the time in UTC, when flow control goes back to Boomi Flow. This happens generally, when you hit an outcome, for example, click a check box.


18. $State/Current Map Element ID

Every Map element in a flow has a unique identifier. The $State/Current Map Element ID contains the ID of the element the flow is currently on.


19. $State/Current Map Element Developer Name

Every Map element in a flow has a name. The $State/Current Map Element Developer Name stores this data. It is not illegal in Boomi Flow to have multiple elements with the same name.


20. $State/Join Uri

Same as $JoinUri. 


21. $User/Brand

Boomi Flow follows ISO internationalization standards, and uses Language, Country and Variant when translating the content of your flows, along with a fourth custom Brand property. For example, you might use the Brand property to handle scenarios where the flow can run under the same language configuration, but a different customer brand. Another example, would be to use the Brand property to do things like A/B testing using the translation framework.


22. $User/Country

Boomi Flow follows ISO internationalization standards, and uses Language, Country and Variant when translating the content of your flows, along with a fourth custom Brand property. The $User/Country is the country code for the content being delivered to the user running the flow.


23. $User/Directory ID

Stores the unique identifier of the user directory from which the received the user. For example, if a user is logged in into Salesforce, the $User/Directory ID Value would contain the ID of the Salesforce org, which the user was using to log in.


24. $User/Directory Name

Stores the name of the user directory from which the flow received the user. For example, if a user is logged in into Salesforce, the $User/Directory Name would contain the name of the Salesforce org, which the user was using to log in. Two directories may have the same name.


25. $User/Role ID

Identity management systems may have assigned roles and IDs. The $User/Role ID stores the role ID of the user. Example: In Salesforce, a Role ID is a unique, 16-character alphanumeric string.


26. $User/Role Name

Identity management systems may have assigned roles and IDs. The $User/Role Name stores the name of the role for the user of the flow. A Role Name can be duplicated across directories. Example: A user is CEO of a company, with $User/Role Name as CEO. Her role continues to be CEO, when she is authenticated using Salesforce, and when she is authenticated using Box.


27. $User/Primary Group Id

A flow can have swimlanes, restricting access to parts of the flow to certain groups of users. A user can belong to multiple groups. The $User/Primary Group ID value stores the ID of that one group, that lets a user access a swimlane. Example: Pepper Potts is a CFO, and belongs to the Finance group (ID: 331.78), the North America group (ID: 17.29), and the Compliance – SOX group (ID: 206.13). If she is accessing a swimlane restricted to the Compliance – Sox group only, her $User/Primary Group ID value will be 206.13.


28. $User/Primary Group Name

A flow can have swimlanes, restricting access to parts of the flow to certain groups of users. A user can belong to multiple groups. The $User/Primary Group Name value stores the name of that one group, that lets a user access a swimlane. Example: Pepper Potts is a CFO, and belongs to the Finance group, the North America group, and the Compliance – SOX group. If she is accessing a swimlane restricted to the Compliance – Sox group only, her $User/Primary Group Name value will be Compliance – Sox.


29. $User/Email

Stores the email of the user, as listed in the third-party directory system in the service used for authentication.


30. $User/First Name

Stores the first name of the user, as listed in the third-party directory system in the service used for authentication.


31. $User/Language

Boomi Flow follows ISO internationalization standards, and uses Language, Country and Variant when translating the content of your flows. Boomi Flow also supports a fourth property for Brand. The $User/Language is the language code for the content being delivered to the user running the flow.


32. $User/User ID

Stores the User ID of the user, as listed in the third-party directory system in the service used for authentication.


33. $User/Username

Stores the user name of the user, as listed in the third-party directory system in the service used for authentication.


34. $User/Variant

Boomi Flow follows ISO internationalization standards, and uses Language, Country and Variant when translating the content of your flows. Boomi Flow also supports a fourth property for Brand. $User/Variant stores the dialect (or variant, as ISO puts it) of the language that the user is seeing in the app.


35. $User/Current Latitude

Stores the current latitude of the app user. Is device dependent. Needs Location enabled in the player. You can find more information on the HTML Geolocation API here.


36. $User/Current Longitude

Stores the current longitude of the app user. Is device dependent. Needs Location enabled in the player. You can find more information on the HTML Geolocation API here.


37. $User/Location Accuracy

Stores a numeric value representing the accuracy of the location information. You can find more information on the HTML Geolocation API here.


38. $User/Current Altitude

The $User/Current Altitude value stores the current altitude of the app user. Is device dependent. Needs Location enabled in the player. You can find more information on the HTML Geolocation API here.


39. $User/Altitude Accuracy

Stores a numeric value representing the accuracy of the altitude information. You can find more information on the HTML Geolocation API here.


40. $User/Current Heading

The $User/Current Heading stores the current heading of the app user. Is device dependent, needs compass capabilities. Needs Location enabled in the player. You can find more information on the HTML Geolocation API here.


41. $User/Current Speed

The $User/Current Speed stores the current speed of the app user. Is device dependent, needs GPS capabilities. Needs Location enabled in the player.


42. $User/Location Timestamp

Stores the time of the location where the user is accessing the flow. The data stored in this value changes with time, or if the flow is refreshed. Can be referenced within a flow to create time-specific actions; for example, show an alert at 5.30 pm. Needs Location enabled in the player. You can find more information on the HTML Geolocation API here.


43. $True

Stores the Boolean value True.


44. $False

Stores the Boolean value False.



Creating/editing/deleting values

Values can be created before you start building a flow, and then imported; or created on the go, as you are building the flow. Values can be populated with data during the course of a flow (say, from user inputs), as well. You can also add default data, while creating a value.

A Boomi Flow tenant can have multiple values with the same name. It is recommended you follow a naming convention to make it easy to find specific values in the future, to understand what a value contains, and to avoid naming collisions. You can use any identifier naming convention you want (for example, a style preferred by your company), but be consistent in using whatever style you choose.


Creating values

Values can be created in two ways. You can either click Values on the sidebar from the Home tab, and then New Values; or you can click Select or create a New Value, as and when prompted, while building your flow. Created once, values can be reused subsequently in all flows within the same tenant.

While creating a value, you have advanced configuration options. You can find these options, by clicking on the + icon next to Advanced.


Editing values

Values can be edited by clicking Values on the sidebar from the Home tab, and clicking the pencil next to the value you want to edit. The content of values can also change dynamically during the execution of an app.

If you create a value in one flow; reuse it in another, and edit the value in that flow; the value gets updated for that flow, as well as the original flow where the value was initially created. Subsequent flows in the tenant that references that value, will be using the updated value with the updated data.

If you do not want a value to be changed, check the box that says Do not allow changes to this value while creating the value.


Deleting values 

Values can be deleted by clicking Values on the sidebar from the Home tab, and clicking the trash can icon next to the value you want to delete. Deleting a value deletes it not just for a particular flow, but for the entire tenant.

If you create a value, and subsequently decide to remove it from a flow, the value is not deleted, but continues to exist in the tenant. The data contained in a value can be edited/deleted during runtime.

Note:  If you try to delete a value that is referenced in a flow, you will get the error message: Element cannot be deleted due to dependencies.Parameter name: Element.Dependencies. If you get a dependencies error, check your email for the Boomi Flow system-generated detailed error message. This message lists where your dependencies may be, including in any map elements, etc. that reference the value. 

Check out the glossary for a definition of terms and key concepts that appear in the Boomi Flow website, Drawing Tool, technical documentation, blogs, and marketing communications.

If you need to take a closer look, click on the images to enlarge them. Have a question? Click the Help button on the bottom right-hand corner of this page to ask.