Documentation: Flowy Steps
Flowy Steps
Steps are individual work flow elements that allow the quick and effective configuration of workflows.
Each step, independent of their type, has some basic properties:
Name | Description |
---|---|
Step ID | Is an automatically ID, uniquely assigned within each process for a step. |
Name | Defines the name of the step. |
Visual ID | An unique ID, only assigned by the Flowy front-end for a clearer process visualisation. |
Enabled | Only active steps are processed during execution. |
Cache storage | Defines if cache should be persisted. Please note that this setting depends on the same setting on process level. Cache is only persisted, when logging is enabled. |
Logging | Defines if logs should be persisted. Please note that this setting depends on the same setting on process level. |
Out of the box, Flowy supports the following types of steps:
- Code steps: enable the creation of manual code, i.e.
JavaScript
orGroovy
- Control steps: this includes steps like
For Each
,While
andUnset Variable
that can be used to control the flow - Input and/or output steps: there are steps that provide reading and writing capabilities, i.e.
JDBC
orREST
- Plugin steps: enable the usage of custom or Hub-shared plugins
The following chapters describe the different step types. For each step, a table describes when the cache and/or scripting can be used.
ChatGPT
Enables the usage of ChatGPT.
Field | Cache support | Scripting support |
---|---|---|
scriptEngine | no | no |
credentialName | yes | no |
model | no | no |
messsage.role | no | no |
messsage.content | yes | yes |
targetObject | yes | no |
This step might throw an exception:
Name | Description |
---|---|
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
CloudFront
Enables the usage of CloudFront.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
credentialName | yes | no |
action.CREATE | ||
fields.domainName | yes | no |
fields.domainId | yes | no |
fields.distributionComment | no | no |
fields.targetObject | yes | no |
action.LIST | ||
fields.targetObject | yes | no |
action.UPDATE | ||
fields.distributionId | yes | no |
fields.distributionComment | no | no |
fields.targetObject | yes | no |
action.DELETE | ||
fields.targetObject | yes | no |
This step might throw an exception:
Name | Description |
---|---|
CloudFrontException | For all problems encountered with the AWS CloudFront service. |
Credentials
Enables the creation, modification respective enabling/disabling of credentials at the runtime of processes.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
fields.targetObject | yes | no |
fields.type | no | no |
fields.name | yes | no |
fields.roles | yes | no |
fields.values.* | yes | no |
fields.queryName | yes | no |
This step does not throw any exceptions.
CSV File
This step allows the convenient creation of CSV files based on dynamic data. The support for JSONPath makes it very powerful as it makes the transformation of complex data structures into CSV convenient.
Furthermore, the reverse conversion from CSV to JSON is also easily possible.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
targetObject | yes | no |
source | yes | no |
filters | yes | no |
includeHeaders | no | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
IOException | The IOException is simply an exception that is thrown when an I/O error occurs. |
InvalidCsvSourceStepException | For JSON_TO_CSV action source should be an array, CSV_TO_JSON action requires source as a string. |
Encoder
This step offers a versatile encoding and decoding utility, enabling users to change text encoding, encode HTML special characters, and perform URL encoding and decoding. It supports a wide range of character encodings and ensures web content is safely prepared for display or transmission.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
converts | no | no |
converts.sourceObject | yes | no |
converts.targetObject | yes | no |
converts.sourceEncoding | no | no |
converts.targetEncoding | no | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
IllegalArgumentException | SourceObject and/or targetObject is not a valid string. |
ESC/POS convertor
This step enables the conversion of an image to the ESC/POS format.
Field | Cache support | Scripting support |
---|---|---|
sourceObject | yes | no |
targetObject | yes | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
targetObject | Is thrown when an I/O error occurs. |
Execute External Command
This step enabled the execution of other applications. Data can be provided through command line parameters as well as through standard input. Result wise it provides the result code, the standard output as well as error.
Field | Cache support | Scripting support |
---|---|---|
input | yes | yes |
command | yes | yes |
resultCode | yes | no |
resultErrors | yes | no |
targetObject | yes | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
IOException | The IOException is simply an exception that is thrown when an I/O error occurs. |
Execute Process
This step enables the execution of other Flowy processes. The execution can be carried out in three modes:
- asynchronous,
- synchronous and
- inline.
In synchronous execution, the parent process pauses until the children have completed their execution. Input values can be passed to the children (input mapping) and output values can be received from them ( output mapping).
In asynchronous execution, the triggering events for the children are generated, allowing the parent process to continue processing without interruption. In this mode, data can only be passed into the child processes using the input mapping.
It's important to note that both synchronous and asynchronous executions adhere to specific settings such as maximum processing duration and maximum simultaneous executions. Careful planning of parent-child executions and adjustments based on available resources are recommended.
In inline execution, the referenced children processes are executed within the thread of the parent, resembling the functionality of functions in many programming languages. Input and output mapping are supported. In this case, the timeout and execution settings of the children processes are ignored.
Field | Cache support | Scripting support |
---|---|---|
processName | no | no |
action | no | no |
input | yes | no |
output | yes | no |
childEventIdPath | yes | no |
priority | no | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
ChildProcessNotFoundException | Child process was not found. |
ChildEventOfParentProcessNotFoundException | Child event for parent process was not found. |
ChildProcessTimeoutException | Child process for parent process ran into a timeout. |
ProcessDisabledException | Child process for parent process was disabled. |
For Each
This step provides an easy way to execute operations multiple times. For this, a Query
condition must be defined. For each of the records found, the loop will be executed once.
Record Name
defines the variable name which provides access to the currently to-be-processed record.
Field | Cache support | Scripting support |
---|---|---|
query | yes | no |
steps | no | no |
recordName | yes | no |
Formatting
Allows the formatting of numbers to the desired format.
You can find information about patterns respective locales on the provided links.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
converts.sourceObject | yes | no |
converts.targetObject | yes | no |
fields.locale | no | no |
fields.pattern | no | no |
fields.groupingSeparator | yes | no |
fields.decimalSeparator | yes | no |
This step might throw an exception:
Name | Description |
---|---|
IllegalArgumentException | For wrong pattern or invalid input data. |
FTP/SFTP
Allows the communication with FTP respective SFTP servers.
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
path | yes | no |
action | no | no |
targetObject | yes | no |
oldPath | yes | no |
This step might throw an exception:
Name | Description |
---|---|
IOException | The IOException is simply an exception that is thrown when an I/O error occurs. |
FtpException | FFor all problems encountered with the FTP/SFTP service. |
GraphQL
Enables declarative data fetching using GraphQL query language from http(s) sources (using REST credentials).
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
targetUrl | yes | yes |
headers | yes | yes |
query | no | no |
variables | yes | yes |
targetObject | yes | no |
responseCode | yes | no |
timeout | no | no |
It is possible to reference to an REST credential. In this case, fields defined within this credentials can be used in the format #name
within the headers, variables and targetUrl fields.
This step might throw one of the following exceptions:
Name | Description |
---|---|
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
IllegalArgumentException | Provided url string is not a valid URI. |
Groovy
The Groovy step provides a powerful way to execute Groovy code directly within a process. Such code can contain as many lines as necessary. The result will be stored into the variable of the defined name.
The step does not guarantee a certain execution order. Please use multiple steps if your workflow depends on that.
Field | Cache support | Scripting support |
---|---|---|
libraryName | no | no |
set | yes | yes |
credentialName | no | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
MultipleCompilationErrorsException or CompilationFailedException | Thrown when compilation fails from source errors. |
MissingPropertyException | An exception occurred if a dynamic property dispatch fails with an unknown property. |
MissingClassException | An exception occurred if a dynamic method dispatch fails with an unknown class. |
MissingFieldException | An exception occurred if a dynamic field dispatch fails with an unknown field. |
MissingMethodException | An exception occurred if a dynamic method dispatch fails with an unknown method. |
GroovyRuntimeException | An exception thrown by the interpreter. |
StringWriterIOException | An IO exception occurred trying to append to a StringWriter which should never happen. |
iCalendar
Allows the creation of an file in iCalendar format.
Field | Cache support | Scripting support |
---|---|---|
organizer | yes | no |
summary | yes | no |
description | yes | no |
startTime | yes | no |
endTime | yes | no |
participants.name | yes | no |
participants.email | yes | no |
alarm.alarmTime | yes | no |
alarm.alarmDescription | yes | no |
recurrence.frequency | yes | no |
recurrence.frequencyInterval | yes | no |
status | yes | no |
url | yes | no |
location | yes | no |
targetObject | yes | no |
Image
The Image step provides capabilities to download and manipulate images. It offers the following actions:
- Convert: converts images from their current file format to another one
- Crop: cuts out a rectangle from an image
- Download: fetch image from an URL
- From template: generates an image based on a selected template
- Info: provides details about the image for further processing
- Rescale: adjusts the width and/or height of the image
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
targetObject | yes | no |
fields.source | yes | no |
fields.type | no | no |
fields.height | yes | yes |
fields.width | yes | yes |
fields.positionX | yes | yes |
fields.positionY | yes | yes |
fields.variables | yes | no |
fields.locale | no | no |
fields.textTemplate | yes | no |
This step might throw one of the following exceptions:
Action | Name | Description |
---|---|---|
All | IOException | The IOException is simply an exception that is thrown when an I/O error occurs. |
Download | MalformedURLException | Thrown to indicate that a malformed URL has occurred. Either no legal protocol could be found in a specification string or the string could not be parsed.. |
From Template | XRRuntimeException | An html renderer exception. |
Imap
The Imap step provides methods to process emails accessible through the IMAP protocol. This is supported by all modern email servers and providers.
Please refer to the SMTP step if you're looking for ways to send emails.
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
action | no | no |
folder | yes | yes |
fields.targetObject | no | yes |
fields.sender | yes | yes |
fields.recipient | yes | yes |
fields.subject | yes | yes |
fields.body | yes | yes |
fields.readType | no | no |
fields.maxResults | no | no |
fields.emailId | yes | yes |
This step might throw one of the following exceptions:
Name | Description |
---|---|
NoSuchProviderException | This exception is thrown when Session attempts to instantiate a Provider that doesn't exist. |
MessagingException | The base class for all exceptions thrown by the Messaging cases. |
ImapMessageNotFoundException | Message was not found. |
JDBC
Using the ConnectionTimeout
value in the JDBC credential, you can set the maximum number of milliseconds that the system will wait for a connection from the pool. If this time is exceeded without a connection becoming available, a SQLException will be thrown.
The lowest acceptable connection timeout is 250 ms, the default is 30000 ms (30 seconds).
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
credentialName | no | no |
query | yes | no |
targetObject | yes | no |
The JDBC step has builtin methods for a convenient usage of variables. In detail:
Method | Description | Example usage |
---|---|---|
f_array | Converts provided cache variable to an array with square brackets; a cache variable containing [1, 2, 3, 4] becomes array[1, 2, 3, 4] | SELECT * FROM user WHERE id = ANY(f_array($.userids)) |
f_list | Converts provided cache variable to an array with round brackets; hence a cache variable containing [1, 2, 3, 4] becomes (1, 2, 3, 4) | SELECT * FROM user WHERE id IN f_list($.ids) |
f_query | Using the Query Builder step, its easy to prepare dynamic query conditions. The f_query method allows the usage of dynamic condition that rely on variable interpretation | SELECT * FROM records WHERE f_query($.mycondition) |
Queries can be entered in the following format:
// pass condition generated using Query Builder:
SELECT * FROM tbl f_query($.queryCondition)"
// combine dynamic conditions generated using Query Builder with an additional variable:
SELECT * FROM tbl WHERE f_query($.queryCondition) AND date = $.d"
This step might throw one of the following exceptions:
Name | Description |
---|---|
SQLException | Generic SQL exception. |
NotSingleResultException | This exception is thrown when the result set contains more than one record, although single result was expected. |
JavaScript
The JavaScript step provides a powerful way of using JavaScript code directly within a process. Such code can contain as many lines as necessary. The result will be stored into the variable of the defined name.
The step does not guarantee a certain execution order. Please use multiple steps if your workflow depends on that.
Due to the JavaScript engine limitations it is not possible to assign an object value right away to a variable. Instead, the following approach should be used:
X = 123
And this script has to be mapped to the desired Flowy variable which will contain the content(s) of X
.
It is possible to throw Exceptions and catch them using a Try/Catch step in the following way:
class CustomJsException extends Error { constructor(message) {
super(message);
this.name = this.constructor.name;
}
}
throw new CustomJsException("custom message");
The catch must have the name of CustomJsException
to fire in this case.
Field | Cache support | Scripting support |
---|---|---|
libraryName | no | no |
set | yes | yes |
credentialName | no | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
PolyglotException | Thrown in case the JS language code parsing or evaluation failed. |
LibraryDisabledException | Thrown if a referenced library is disabled. |
MissedLibraryArtifactException | Thrown if the artifact was not uploaded for the referenced library. |
InvalidLibraryTypeException | Thrown if a referenced library has an invalid type. |
JWT
The JWT step generates a JWT token based on the provided values.
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
targetObject | yes | no |
payload | yes | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
NoSuchAlgorithmException | Required algorithm is not available. |
InvalidKeySpecException | This is the exception in case of invalid key specifications. |
InvalidKeyException | Thrown if the Key is insufficient or explicitly disallowed by the JWT specification for the specified algorithm. |
LDAP
Enables the communication with LDAP servers.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
credentialName | yes | no |
action.BIND | ||
fields.objectClassAttributes | no | no |
fields.dn | no | no |
fields.attributeValues.name | no | no |
fields.attributeValues.value | no | no |
action.SEARCH | ||
fields.dn | no | no |
fields.filter | no | no |
fields.searchKey | no | no |
fields.targetObject | yes | no |
action.MODIFY | ||
fields.dn | no | no |
fields.attributeValues.name | no | no |
fields.attributeValues.value | no | no |
This step might throw an exception:
Name | Description |
---|---|
NestedRuntimeException | In case of any issues with the LDAP service. |
Log
This step logs a desired entry, it is useful for debugging complex processes.
Field | Cache support | Scripting support |
---|---|---|
message | yes | no |
Messaging
Enables the sending of messages to Kafka.
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
service | no | no |
message | yes | yes |
messageKey | yes | yes |
Mongo DB
For this step you need to specify the details within an Mongo DB credential. Within the URL, you can define connectTimeout
and socketTimeout
:
- The connection timeout is the number of milliseconds the driver will wait before a new connection attempt is aborted
- The socket timeout is the number of milliseconds an send or receive on a socket can take before timing out
Information
Please note that this step type can be also used to connect to Amazon DocumentDB.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
credentialName | yes | no |
collectionName | no | no |
query | yes | no |
projection | no | no |
queryUpdate | yes | no |
targetObject | yes | no |
The Mongo DB step has builtin methods for a convenient usage of variables. In detail:
Method | Description | Example usage |
---|---|---|
f_query | Using the Query Builder step, its easy to prepare dynamic query conditions. The f_query method allows the usage of dynamic condition that rely on variable interpretation | {f_query($.queryCondition)} |
Queries can be entered in the following format:
// pass dynamic conditions generated using Query Builder offers two possibilites:
{$.queryCondition}
$.queryCondition
// combine dynamic query with static values
{$.queryCondition is_active: $.isActive, email: "user@mail.com"}
This step might throw one of the following exceptions:
Name | Description |
---|---|
MongoException | Base class for Mongo exeptions. Precise exception depends on the Mongo drivers and might include: MongoChangeStreamException, MongoClientException, MongoConfigurationException, MongoSecurityException, MongoTimeoutException, MongoWaitQueueFullException, MongoExecutionTimeoutException, MongoGridFSException, MongoIncompatibleDriverException, MongoInternalException, MongoInterruptedException, MongoServerException, BulkWriteException, MongoBulkWriteException, MongoCommandException, MongoNodeIsRecoveringException, MongoNotPrimaryException, MongoQueryException, MongoCursorNotFoundException, MongoWriteConcernException, MongoWriteException, WriteConcernException, DuplicateKeyException, MongoSocketException, MongoSocketClosedException, MongoSocketOpenException, MongoSocketReadException, MongoSocketReadTimeoutException, MongoSocketWriteException |
OCR
This step allows the usage of OCR.
Field | Cache support | Scripting support |
---|---|---|
language | yes | no |
image | yes | no |
targetObject | yes | no |
This step might throw an exception:
Name | Description |
---|---|
TesseractException | For all problems encountered with the Tesseract service. |
IOException | Is thrown when an I/O error occurs. |
Outlook
This step allows the managed of Outlook appointments.
Field | Cache support | Scripting support |
---|---|---|
credentialName | yes | no |
action | no | no |
action.CREATE | ||
fields.subject | yes | no |
fields.subject | yes | no |
fields.body.contentType | yes | no |
fields.body.content | yes | no |
fields.start.dateTime | yes | no |
fields.start.timeZone | yes | no |
fields.end.dateTime | yes | no |
fields.end.timeZone | yes | no |
fields.location | yes | no |
fields.attendees.address | yes | no |
fields.attendees.name | yes | no |
fields.attendees.type | yes | no |
fields.reminderMinutesBeforeStart | yes | no |
fields.recurrence.pattern | yes | no |
fields.recurrence.range | yes | no |
fields.calendarId | yes | no |
fields.userId | yes | no |
fields.targetObject | yes | no |
action.LIST | ||
fields.calendarId | yes | no |
fields.targetObject | yes | no |
fields.userId | yes | no |
action.UPDATE | ||
fields.eventId | yes | no |
fields.subject | yes | no |
fields.body.contentType | yes | no |
fields.body.content | yes | no |
fields.start.dateTime | yes | no |
fields.start.timeZone | yes | no |
fields.end.dateTime | yes | no |
fields.end.timeZone | yes | no |
fields.location | yes | no |
fields.attendees.address | yes | no |
fields.attendees.name | yes | no |
fields.attendees.type | yes | no |
fields.reminderMinutesBeforeStart | yes | no |
fields.recurrence.pattern | yes | no |
fields.recurrence.range | yes | no |
fields.calendarId | yes | no |
fields.userId | yes | no |
fields.targetObject | yes | no |
action.DELETE | ||
fields.eventId | yes | no |
fields.calendarId | yes | no |
fields.userId | yes | no |
action.AUTH | ||
fields.expiresIn | no | no |
This step might throw an exception:
Name | Description |
---|---|
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
Paymentsense Connect-E
This step allows the usage of the Connect-E API provided by Paymentsense.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
credentialName | no | no |
targetObject | yes | no |
create access token parameters | no | no |
cross reference payment parameters | no | no |
parameters.accessToken | yes | no |
This step might throw an exception:
Name | Description |
---|---|
RestClientException | RestClientException will be thrown in case a request fails because of a server error response, failure to decode the response, or a low level I/O error. |
Paymentsense PAC
This step allows the usage of the PAC API provided by Paymentsense.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
credentialName | no | no |
targetObject | yes | no |
parameters.terminalId | yes | no |
parameters.reportType | no | no |
parameters.requestId | yes | no |
parameters.accepted | no | no |
parameters.transaction.* | no | no |
This step might throw an exception:
Name | Description |
---|---|
RestClientException | RestClientException will be thrown in case a request fails because of a server error response, failure to decode the response, or a low level I/O error. |
This step allows the creation of PDF files. For this it relies on a template to which variables can be passed on in the usual format. Please see Flyingsaucerproject for details on output format and other questions.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
fields.textTemplate | yes | no |
fields.locale | no | no |
fields.variables | yes | no |
fields.sourceObject | yes | no |
fields.pageNumber | yes | no |
targetObject | yes | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
IOException | Signals that an I/O exception of some sort has occurred. This class is the general class of exceptions produced by failed or interrupted I/O operations. |
DocumentException | PDF generation exception. |
IndexOutOfBoundsException | Signals that page number exceeds document length. |
Plugin
Enables the usage of custom build Plug-Ins.
Field | Cache support | Scripting support |
---|---|---|
action | yes | no |
pluginName | no | no |
pluginSettingName | no | no |
pluginCredentialName | no | no |
input | yes | no |
output | yes | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
PluginDisabledException | Plugin was disabled. |
PluginNotFoundException | Plugin was not found. |
PluginSettingDisabledException | Plugin setting was disabled. |
PluginSettingNotFoundException | Plugin setting was not found. |
BundleException | Exception used to indicate that a bundle lifecycle problem occurred. |
ClassNotFoundException | Thrown when an application tries to load in a class through its string name but no definition for the class with the specified name could be found. |
NoSuchMethodException | Thrown when a particular method cannot be found. |
InvocationTargetException | Is a checked exception that wraps an exception thrown by an invoked method or constructor. |
Process Settings
Allows the usage of generic settings. This is useful for managing differences in Flowy environments.
Field | Cache support | Scripting support |
---|---|---|
processSettingName | no | no |
targetObject | yes | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
ProcessSettingsDisabledException | Process settings was disabled. |
ProcessSettingsNotFoundException | Process settings was not found. |
Python
The Python step, facilitated by the Jep library, allows for the execution of Python code. Jep, which stands for Java Embedded Python, integrates CPython into Java via the Java Native Interface (JNI). This use of the native Python interpreter significantly outperforms alternative methods in terms of speed.
Moreover, Jep provides access to high-quality Python modules, including both native CPython extensions and Python-based modules. It operates cross-platform, enhancing its versatility. However, it's important to note that a local Python installation is required for it to function.
Field | Cache support | Scripting support |
---|---|---|
libraryName | no | no |
set | yes | yes |
credentialName | no | no |
Please note, within set:
execution
(optional): this is the code that should be executed; can not return resultresult
(required): must contain code that returns result
When both values are provided, both will be executed in the order they are listed above.
Example #1:
# execution:
a = 2
b = 5
c = a + b
# result:
c
Example #2 (same outcome as above):
# execution:
a = 2
b = 5
# result:
a + b
This step might throw an exceptions:
Name | Description |
---|---|
JepException | In case of syntax errors. |
QR
Allows the creation of QR codes.
Field | Cache support | Scripting support |
---|---|---|
size | no | no |
content | yes | no |
errorCorrectionLevel | no | no |
targetObject | yes | no |
This step might throw an exceptions:
Name | Description |
---|---|
IOException | Is thrown when an I/O error occurs. |
QRDataTooBigException | Happens when the input data is too long. |
Query Builder
Enables the convenient preparation of query conditions. The provided condition
is validated and, if confirmed as true, the values of query
will be appended to the targetObject
.
Field | Cache support | Scripting support |
---|---|---|
scriptEngine | no | no |
targetObject | yes | no |
condition | yes | yes |
query | yes | no |
If used within an JDBC step, please refer to the f_query
method.
This step might throw one of the following exceptions:
Name | Description |
---|---|
PolyglotException | Thrown in case the JS language code parsing or evaluation failed. |
MultipleCompilationErrorsException or CompilationFailedException | Thrown when compilation fails from source errors. |
MissingPropertyException | An exception occurred if a dynamic property dispatch fails with an unknown property. |
MissingClassException | An exception occurred if a dynamic method dispatch fails with an unknown class. |
MissingFieldException | An exception occurred if a dynamic field dispatch fails with an unknown field. |
MissingMethodException | An exception occurred if a dynamic method dispatch fails with an unknown method. |
GroovyRuntimeException | An exception thrown by the interpreter. |
StringWriterIOException | An IO exception occurred trying to append to a StringWriter which should never happen. |
REST
This is a very powerful step enabling to access REST services provided by third parties.
Optionally it is possible use a Rest credential. Values defined from a credential can be accessed using the #name
respectively cached values in the $.name
format. This is possible in the headers
, query params
as well as target URL
fields.
By default, the body will be mapped based on the Content-Type
header property. Alternatively the body can be fully adjusted manually by enabling Body Script
.
Please note:
- The HTTP response code will be written to the defined REST response code target object, while the response data itself will be stored in the REST response content target object.
- Cookies will be automatically passed along in subsequent REST steps within the same process.
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
targetUrl | yes | yes |
action | no | no |
queryParams | yes | yes |
body | yes | yes |
bodyScript | yes | yes |
headers | yes | yes |
targetObject | yes | no |
restResponseCode | yes | no |
timeout | no | no |
It is possible to reference to an REST credential. In this case, fields defined within this credentials can be used in the format #name
within the body, headers, query params and targetUrl fields.
This step might throw one of the following exceptions:
Name | Description |
---|---|
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
IllegalArgumentException | Provided url string is not a valid URI. |
S3
The S3 step provides methods to read and write data to S3.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
credentialName | no | no |
fields.path | yes | no |
fields.targetObject | yes | no |
fields.key | yes | no |
fields.content | yes | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
S3BucketRequiredException | S3 bucket is empty or null. |
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
IOException | Signals that an I/O exception of some sort has occurred. This class is the general class of exceptions produced by failed or interrupted I/O operations. |
NoSuchKeyException | The specified S3 key does not exist. |
InvalidObjectStateException | Object is archived and inaccessible until restored. |
SdkException | Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for catch all scenarios. |
SdkClientException | If any client side error occurs such as an IO related failure, failure to get credentials, etc. |
S3Exception | Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. |
NoSuchBucketException | The specified bucket does not exist. |
Security
This step utilizes AES-256 GCM for encryption/decryption.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
variables | yes | no |
method | no | no |
credentialName | no | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
JsonMappingException | Checked exception used to signal fatal problems with mapping of content, distinct from low-level I/O problems. |
NoSuchAlgorithmException | This exception is thrown when a particular cryptographic algorithm is requested but is not available in the environment. |
InvalidKeySpecException | This is the exception for invalid key specifications. |
NoSuchPaddingException | This exception is thrown when a particular padding mechanism is requested but is not available in the environment. |
InvalidKeyException | This is the exception for invalid Keys (invalid encoding, wrong length, uninitialized, etc). |
InvalidAlgorithmParameterException | This is the exception for invalid or inappropriate algorithm parameters. |
IllegalBlockSizeException | This exception is thrown when the length of data provided to a block cipher is incorrect, i.e., does not match the block size of the cipher. |
BadPaddingException | This exception is thrown when a particular padding mechanism is expected for the input data but the data is not padded properly. |
Slack
The Slack step enables the sending of messages to Slack channels. Optionally, it provides capabilities to use templates.
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
message | yes | yes |
locale | no | no |
textTemplate | yes | no |
variables | yes | no |
channelId | yes | yes |
This step might throw one of the following exceptions:
Name | Description |
---|---|
IOException | Signals that an I/O exception of some sort has occurred. This class is the general class of exceptions produced by failed or interrupted I/O operations. |
SlackApiException | HTTP Api exceptions either on client or server. |
SMTP
The SMTP step enables the sending of emails from a Flowy process. It requires an SMTP credential respective an template. Within the credential the following timeouts are available:
connectionTimeout
: the connection timeout value in milliseconds. Default is infinite timeout.timeout
: read timeout value in milliseconds. Default is infinite timeout.writeTimeout
: write timeout value in milliseconds. Default is infinite timeout.
The following variables are mandatory:
to
: the recipients email addresssubject
: the subject of the emailfrom
: the senders email address - please note that this value is frequently overwritten by the SMTP server and hence might not get applied
Additional variables can be passed on as needed.
The SMTP step also supports file attachments.
Field | Cache support | Scripting support |
---|---|---|
to | yes | no |
from | yes | no |
cc | yes | no |
bcc | yes | no |
credentialName | yes | no |
textTemplate | no | no |
locale | no | no |
async | no | no |
variables | yes | no |
attachments.name | yes | no |
attachments.content | yes | no |
attachments.contentType | no | no |
This step might throw one of the following exceptions:
Name | Description |
---|---|
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
MessagingException | The base class for all exceptions thrown by the Messaging classes. |
SSH
Allows the communication with an SSH server.
Field | Cache support | Scripting support |
---|---|---|
credentialName | yes | no |
command | yes | no |
timeout | no | no |
targetObject | yes | no |
This step might throw an exceptions:
Name | Description |
---|---|
JschException | For all problems encountered with the Jsch service. |
Storage
Allows the quick and effective storage and retrieval of data (both simple strings as well as complex JSON objects). Records are stored in the Flowy database and clean up periodically through a own job.
Please note than on a lookup, if the key is not found or already expired, the targetObject
will be set to null
.
Field | Cache support | Scripting support |
---|---|---|
scriptEngine | no | no |
key | yes | yes |
targetObject | yes | no |
expiresIn | yes | yes |
value | yes | yes |
This step might throw the same exceptions (combined) as the Groovy and JavaScript steps.
Switch
The switch structure provides flow control based on conditions. It also serves as replacement for if/else.
The script engine can be defined at this level.
Each switch
must contain at least one condition. This condition shall be written in the selected script language.
Every condition is evaluated once: if it matches, the according block of code is executed and the evaluation is stopped.
An else
branch can be defined by setting "else" as condition. This will get executed if none of the other conditions match.
Field | Cache support | Scripting support |
---|---|---|
scriptEngine | no | no |
conditions | yes | yes |
Timer
The Timer step offers a convenient way to efficiently track and measure durations.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
targetObject | yes | no |
startTime | yes | no |
Try/Catch
This steps enables the handling of exception occurring during the executions of steps. It contains:
- a try block - which is attempted to be executed.
- one or multiple catch blocks: these are executed if the configured exception happens during the execution of any steps within the try block.
- a finally block - executed regardless of the result.
If an exception happens for which there is no according catch block defined, Flowy will proceed with the the next step after the Try/Catch step (if existing).
The order in which the exceptions are defined is important, as the first matching one will be caught. Hence, the most specific one should be defined first, the more generic ones later.
Please crosscheck the JavaScript step description for details on how to use Try/Catch on Javascript exceptions.
Twilio
The Twilio step enables you to send text messages through the Twilio service. Optionally, it is possible to use templates.
Field | Cache support | Scripting support |
---|---|---|
credentialName | no | no |
message | yes | yes |
locale | no | no |
textTemplate | yes | no |
variables | yes | no |
from | yes | yes |
to | yes | yes |
This step might throw an exception:
Name | Description |
---|---|
RestClientException | Base class for exceptions thrown by HTTP client in case a request fails because of a server error response, failure to decode the response, or a low level I/O error. |
Unset Variables
The Unset step provides a simple way to remove variables during run-time that are no longer needed.
Field | Cache support | Scripting support |
---|---|---|
variables | yes | no |
User
The User step provides the necessary methods to create, read and validate user accounts and credentials. This enables the usage of the flexible usage of Flowy accounts within the processes.
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
fields.targetObject | yes | no |
fields.email | yes | no |
fields.name | yes | no |
fields.roles | yes | no |
fields.password | yes | no |
fields.userId | yes | no |
fields.apiKey | yes | no |
fields.roles | yes | no |
This step might throw an exception:
Name | Description |
---|---|
InvalidUserIdException | User id is not valid number. |
UUID
This step generates an UUID in version 4.
Field | Cache support | Scripting support |
---|---|---|
targetObject | yes | no |
While
This step provides an easy way to implement loops. A Query
condition must be defined and the looping will be repeated as long as this condition is true.
Field | Cache support | Scripting support |
---|---|---|
scriptEngine | no | no |
query | yes | yes |
steps | no | no |
XLS
Allows the conversion of data between JSON and XLS format (in both directions).
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
source | yes | no |
includeHeaders | no | no |
targetObject | yes | no |
This step might throw an exceptions:
Name | Description |
---|---|
IOException | Is thrown when an I/O error occurs. |
XSLT
Allows the conversion of an XML, using an XSLT, to a different format.
Field | Cache support | Scripting support |
---|---|---|
xml | yes | no |
xslt | yes | no |
targetObject | yes | no |
This step might throw an exceptions:
Name | Description |
---|---|
IOException | In case the transformation failed. |
YAML
Allows the conversion of data between JSON and YAML format (in both directions).
Field | Cache support | Scripting support |
---|---|---|
action | no | no |
source | yes | no |
targetObject | yes | no |
This step might throw an exceptions:
Name | Description |
---|---|
JsonProcessingException | For all problems encountered when processing (parsing, generating) JSON content that are not pure I/O problems. |
JsonMappingException | For signal fatal problems with mapping of content, distinct from low-level I/O problems. |
ZIP
Allows the compression respective decompression of cache objects.
Field | Cache support | Scripting support |
---|---|---|
targetObject | yes | no |
action | no | no |
fields.entries.name | yes | no |
fields.entries.path | yes | no |
fields.entries.content | yes | no |
sourceObject | yes | no |
targetObject | yes | no |