Documentation: Flowy Objects
Flowy Objects
Flowy relies on the following objects:
- Triggers: provide the capability to create events, either when certain conditions are met or through external calls; details can be found on the triggers page
- Events: details on what properties events have and their execution order
- Processes: specify the business logic including actions and reactions to fulfil them
- Steps: steps are the smallest building block; they can either execute specific actions (i.e. send an email or generate an CSV file) or even execute custom code; details can be found on the steps page
- Credentials: provide access to external systems either in a plain, encrypted or mixture or both
- Entities: allow the definition of data structures, their correlation as well as the generation of objects
- Templates & Translations: provide templating and localisation capability
- Validations: provide an efficient way to perform basic checks on parameters before processing
- Plugins: allow the definition of plugins that can be used within processes
- Storage: offers process-specific, temporary data isolation with unique keys and controlled access
- Modules: allow the grouping of Flowy objects for simpler handling
- Libraries: provide a centralized solution for managing software libraries, streamlining JavaScript and Groovy step execution efficiently
- Settings: allow the definition of parameters
- History: learn about Flowy's versioning capabilites
Names must be unique per object type.
Flowy objects are automatically version controlled, with the intentional exception for credentials; learn more about versioning in Flowy.
Events
In Flowy, triggers firing results in events, enhancing system traceability. Each trigger type has a unique event type, capturing diverse initiation actions.
Every event consists of input data that initiated it, and potentially, an output result. Events also log any errors during trigger firing for debugging and process refinement. Crucially, events are persisted, stored for future analysis or audit, marking the start and end of each execution. This gives insights into system activations, aiding in understanding process lifecycles.
To manage the execution order of events, each event is equipped with a priority
property. It contains a numeric value ranging from 1 to 128, with 64 being the default value.
Events are executed based on two main criteria:
- Priority value: Lower numeric values take precedence. For instance, an event with a priority of 5 will be executed before an event with a priority of 65.
- Creation timestamp: If two events possess the same priority, the system uses the
createdOn
timestamp to determine the sequence. The event created earlier will be executed first.
Events can be triggered internally within a workflow (i.e. through an Execute Process step) or externally from other systems, users, or services through the execution of an trigger.
Therefore, Flowy's events are key to system functionality, enhancing transparency, traceability, and performance improvement.
Processes
Flowy process are collections of steps. Each step accomplishes a specific task. Please refer to the processes page for details.
Credentials
Credential are intended for storage of system specific configuration. They are directly related to the according step, hence i.e. SMTP credentials can be only used in the email
step.
Please refer to the credentials page for details.
Entities
Entities are central to defining data structures and delineating their interrelationships, with the added functionality of supporting version control for both the entities themselves and their persistence layers throughout their lifecycle. This allows for precise tracking and management of any modifications to the entity definitions and structures.
Flowy offers support for generating the persistence layer, which is adaptable to various target systems. Furthermore, Flowy facilitates the creation of customizable triggers, validations, and processes for Create, Read, Update, and Delete (CRUD) operations. This functionality is designed to streamline standard tasks, reducing manual workload by automating routine processes while maintaining a consistent approach to entity integrity and operational efficiency.
HINT
Setting the data type to BigInt or Integer for the
Primary Key
field means that its values will be auto-incremented and assigned. ForPrimary Key
having other data types, the value will need to be set.
Templates & Translations
Templates can be used to separate representation from the actual data. They are usable through various steps and enable central management.
Translations can be embedded both into templates or managed separately.
Details can be found on the template & translation page.

Validations
Ensure accurate input data with ease by utilizing validations. These powerful tools not only check data for correct structure and data types, but also enable the implementation of additional rules, such as minimum and maximum values or length requirements.
Details can be found on the validations page.
Plugins
Plugins allow the usage of custom build code right within regular Flowy processes. They can be also shared as part of modules. Trustworthiness must be ensured if plugins are obtained from insecure sources.
Storage
Storage is designed to be an efficient, temporary repository for data. It serves the specific purpose of associating each data entry with a unique process, ensuring that the entry is accessible exclusively within the scope of that process.
To identify entries within storage, each is assigned a distinct key. These keys are required to be unique within the context of each process, ensuring that each process maintains a separate namespace for its entries. However, it is permissible to reuse keys across different processes. Such reuse will result in separate storage entries, effectively isolating the data sets despite the shared key nomenclature.
The ability to access a storage entry is strictly governed by the permission settings of the process to which it is associated. Permissions must be explicitly defined to ensure proper access control, safeguarding the data against unauthorized access and maintaining the integrity of the process-specific data storage.
Modules
Modules provide an easy and effective way to collect any combination of Flowy objects. As modules, they can be easily exported, imported as well as shared through the Hub function.
Local Modules
Local modules serve as a powerful organizational tool within Flowy, allowing users to cluster any mix of objects together. This feature is particularly beneficial for those looking to streamline the processes of exporting and importing workflows. Moreover, it facilitates the automatic generation of Swagger files for REST triggers.
By encapsulating related objects into a single module, developers can enhance modularity and reusability within their projects, making the management of complex workflows more straightforward.
Module Hub Functionality
Expanding beyond the confines of individual usage, Flowy introduces the Module Hub functionality. This feature allows users to upload their modules, making them accessible to a broader audience. The Module Hub acts as a centralized repository where users can share their work or incorporate modules created by others into their projects.
Access and Sharing through the Module Hub
The Module Hub is accessible to users who have configured one or more credentials of the Flowy type. These credentials are the gateway to a seamless exchange of modules, enabling both the upload and download of modules to and from remote instances.
The Module Hub is a testament to the platform's commitment to fostering collaboration and knowledge sharing. It empowers users to share Flowy objects not only within their organization but also with the wider Flowy community. This collaborative feature significantly enhances the utility and dynamism of Flowy, paving the way for a more interconnected and resourceful user experience.
Warning
Using modules from unknown or untrusted sources in Flowy's Module Hub can pose security risks, such as data breaches or unauthorized system access. We urge users to exercise caution and review modules for safety before use. Flowy is not responsible for any harm resulting from the use of externally sourced modules. Users are advised to verify module authenticity, test in safe environments, and stay informed on security practices. Your use of modules is at your own risk.
Libraries
Libraries serve as a powerful tool, providing a centralized solution for managing software libraries, thereby optimizing the execution of JavaScript and Groovy steps. In addition to management, they also facilitate the effortless loading of existing libraries.
Note
Groovy libraries can not be unloaded at the moment. This limitation will be address in a future release.
Settings
Settings represent configuration values. They are intentionally separated from the processes to have a clear demarcation line.
Flowy supports several types of settings:
- Frontend: is currently used exclusively by the Flowy front-end, hence only one entry named
DEFAULT FRONTEND
is needed. - Instance: allows the configuration of instance-related settings. This enables the usage of servers of different capacities within the same environment.
- Process: this setting can be dynamically access from processes using the
Process Settings
step. It is a convenient way to have i.e. different settings on development, testing and production environments while relying on the very same process. - Plugin: allows the configuration of settings for plugins. Please note that currently there is no differentiation between plugin neither by name nor type.
Please note that setting values can not be encrypted.
Frontend settings
Front-end settings enable the flexible configuration of the admin interface. They are shared across all admin users.
Instance settings
Instance settings must be defined for each running Flowy instance. They are referenced by the Name
which must correlate with the flowy.core.instance-id
defined in their configuration file.
Admin instances only require a name property; currently there are no further settings configurable.
For processing instances, the following values must be configured:
Max Processing Threads
: sets the amount of threads for processes executions in the thread poolMax Trigger Http Threads
: defines the amount of threads handling REST triggers callsMax Trigger Http Processing Duration
andUnit
: defines the maximum duration execution
Process settings
This settings enable the separation of workflow and configuration. Using them, the same process can be run in different environments with different parameters.
Plugin settings
Plugin settings allows the plug-in configuration to be separated cleanly from the actual process.
User and role management
Flowy supports both unauthenticated as well as authenticated users. Please refer to the Permissions section for details.
History
The permission model for accessing objects works in the following way:
- If the history entry has roles associated, these permissions are applied.
- If in the above cases there are no roles, only users having the "SUPER_USER" role will be able to access the history.
For more detailed information on the specific roles and permissions, please refer to the Permissions page.
Please note that history is by default deleted after 90 days. The according setting can be adjusted in the Global Settings / Admin.