Documentation: Flowy Objects


Please support us to improve our service. We would like to use statistics anonymously.

We do not pass on your data! You can find more information in our privacy policy.

Decline

< Back to documentation

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. For Primary 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.

A simple template
A simple template

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 pool
  • Max Trigger Http Threads: defines the amount of threads handling REST triggers calls
  • Max Trigger Http Processing Duration and Unit: 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.