Data Types
A data type defines the structure of a data element in a model. In different notations, data types are attached to different constructs:
-
For workflows, in BPMN, data types define the structure of data objects (and data inputs/oututs), activity inputs and outputs, messages and signals.
-
For decisions, in DMN, data types define the structure of data inputs, the interface of invokable (decision service and business knowledge models) and the output of decisions.
-
For cases, in CMMN, data types define the structure of case file items.
-
For knowledge entity models, data types define the structure of terms.
FEEL Data Types
Trisotech uses FEEL data types from the DMN standard across its modeling and automation suite to define the data structure.
A data type can be of a simple type, a structure of types or a collection of types.
Simple Data Types
Text |
An ordered sequence of Unicode characters. |
Number |
A numeric value. There is no difference between integer and floating point, a single type represents both. |
Boolean |
A true or false value. |
Days and time duration |
A duration expressed using a number of days, hours, minutes and seconds. |
Years and months duration |
A duration expressed using years and months. |
Date and time |
A date and time value that can be expressed using an optional offset from the Universal Coordinated Time (UTC). |
Date |
A date value. |
Time |
A time value. |
File |
A structured data type that represents unstructured data as a file. The file data type has the following attributes: name, extension, created, modified, size, type, author, url. Note that this is not a FEEL defined type. |
Folder |
A structured data type that represents unstructured data as a folder. Available only in Case Modeler. The folder data type has the following attributes: name, created, author, files, folders. Note that this is not a FEEL defined type. |
Any |
Represents any structured data type in an abstract manner. |
Collection of Text |
Collection of text items. |
Collection of Number |
Collection of number items. |
Collection of Boolean |
Collection of boolean items. |
Collection of Days and time duration |
Collection of days and time duration items. |
Collection of Years and months duration |
Collection of years and months items. |
Collection of Date and time |
Collection of date and time items. |
Collection of Date |
Collection of date items. |
Collection of Time |
Collection of time items. |
Collection of File |
Collection of file items. Note that this is not a FEEL defined type. |
Managing Data Types
Data types in a model are centrally managed in a dialog accessible in the notation ribbon under an action called Data Type.


Each data type is listed in the Data Types dialog with some actions available on each of them.
Create collection |
Create a collection of the data type. |
Duplicate |
Create a copy of the data type. |
Details |
Display the details of the data type. |
Edit |
Edit the data type. |
Delete |
Delete the data type. |
Globally, there are actions that can be performed on data types.
Add |
Create a new data type. |
Sort A-Z |
Sort the data type list alphabetically. |
Delete |
Delete all or unused data types. Delete all will remove all local types, all unused reused data types and all reused data types that are only used by other data types that can be deleted or by local element. Data types that are used by reused elements will not be removed. |
Reuse from Graph |
Reuse a data type from another model using the Digital Enterprise Graph. |
Import XSD |
Import one or more data types from XML XSD schemas. It is possible to import from multiple XSDs that import each other. Note that not all constraints expressed in an XSD can be mapped to data types. |
Import JSON |
Import one or more data types from a JSON Schema. Note that not all constraints expressed in a JSON Schema can be mapped to data types. |
Defining a Data Type
When adding a new data type or editing an existing one, the dialog presents its structure and that structure can be edited.

To change the data type of a type or one of its attributes, clicking on the icon will offer different sources for the type.
Simple type |
Select from one of the simple types. |
Existing Type |
Display a window with the data types that are already used by this model. This list can be searched. |
Structure |
Create a new data structure inline. |
Reuse from graph |
Select a data type already defined in another model from the Digital Enterprise Graph. |
Reuse from accelerator |
Select a data type already defined in an accelerator. |
To add a new attribute to a structure, press the icon at the end of the last attribute.
Data types details can be expanded ( ) or collapsed ( ).
Attributes can be reordered using drag and drop.
Right-clicking on an attribute (or using the icon) brings up a contextual menu with localized actions.
Description |
Enter a description for the data type or structure attribute. |
Insert Row Above |
Insert a new attribute row above the current row in a structure. |
Insert Row Below |
Insert a new attribute row below the current row in a structure. |
Delete Row |
Delete the current row in a structure. |
Cut |
Cut the current data type or structure attribute. |
Copy |
Copy the current data type or structure attribute. |
Paste |
Paste a data type. |
Collection |
Toggle the collection attribute of a data type or structure attribute. This displays the collection marker under the label of the data type or structure attribute ( ). |
Refactor as a type |
Transfor an inline-defined structure as a data type that can also be reused by other data types. |
Adding constraints
Clicking on the type label of a data type or structure attribute (Text, Number, …) or "Constraints…" in the contextual menu of the data type, a dialog displays the constraints of that type.

The following type of constraints are available
Range |
Number, Durations and Date/Time data types support entering a range of values. |
Expression |
A FEEL expression that defines the constraint on the type. |
Enumeration |
Most data type allows to enter an enumeration of allowed values for this data type. |
Not null |
The data type can never be set to null. Allowed on most data type. |
Optionals validation code and validation message can be entered for each constraint. It allows to show a custom error message when the constraint is not respected.
An "Allow null" checkbox can be checked for each constraint except the "Not Null" one.
Clicking the "Add Expression" button allows to enter an additional expression constraint that must be met along with the main one. To delete it, click on the at the top right.
To refer to the data type itself in an expression, use the question mark "?".

Siblings (same level) of a data type can be referred in an expression using its name.


Changing the constraint type to "None" will remove the main constraint. If there are additional expression constraints, the first one will be set as the main one.