Variables in workflows and contracts
This section describes the interactions between workflows and contracts, including the variables that can be configured in a workflow and are initialized in the contract. The filters to be configured in a contract against specific triggers and how to use custom scripts, through a service called Script Task, are given as well.
BOOLEAN
Boolean
Select True/False
CLUSTER
Cluster
Select with the Cluster List
CODE_PAGE
File Code Page
Select with the enum (/ghibli-rest/v2/resources/enums/Charsets)
COMPRESSION
Compression
Select with the enum (/ghibli-rest/v2/resources/enums/Compression)
COMPRESSION_STRATEGY_LEVEL
Compression strategy level
Select with the enum (/ghibli-rest/v2/resources/enums/CompressionStrategyLevel)
CRON_EXPRESSION
Cron expression
Cron expr wizard
DATE
Date
Input type date
DATETIME
Date time
Input type date-time
DECIMAL
Decimal
Input type numeric
ENUM
List
Input type string
EOL
File End of Line type
Select with the enum (/ghibli-rest/v2/resources/enums/ResourceEol)
EXPRESSION
Expression
Input type text
FILE
File
Input type text
INTEGER
Integer
Input type numeric
LONG
Long
Input type numeric
RESOURCE_PROFILE
Resource profile
SECURITY_CHIPER_ALGO
Security Cipher Algorithm
Select with the enum (/ghibli-rest/v2/resources/enums/SecurityCipherAlgorithm)
SECURITY_OPERATION
Security Operation
Select with the enum (/ghibli-rest/v2/resources/enums/SecurityOperation)
SECURITY_SIGNATURE_HASH_ALGO
Security Signature Hash Algorithm
Select with the enum (/ghibli-rest/v2/resources/enums/SecuritySignatureHashAlgo)
STRING
String
Input type time
TIME
Time
Input type time format hh:mm:ss SSS
TIMEZONE
Time zone
Select with the Timezone List
TRANSFER_PROFILE
Transfer profile
VIRTUAL_PATH
Virtual path
Filter
A Filter field is associated with each flow template triggered by a NewFile or an IncomingTransfer event, and a new instance is fired only when the filter is satisfied.
If the Filter is empty, a new instance is created regardless of the file.
The syntax used in the expression uses Groovy scripting. You do not need to know the entire Groovy language. It is enough to know its operators to build correct expressions that return a true or false variable.
=
equal
!=
different
<
less than
<=
less than or equal
>
greater than
>=
greater than or equal
&&
logical "and"
||
logical "or"
!
logical "not"
These operators will work on objects and their properties.
Below you can find some examples of real cases.
Trigger Type: NEW FILE
File variable created when the NewFile trigger starts an instance. It is referred to as file and its values come from the filesetEvent with a nature like this:
Trigger Type: INCOMING/OUTGOING TRANSFER
File variable created when the IncomingTransfer trigger or the OutgoingTransfer trigger starts an instance. It is referred to as file and its values come from the transferEvent with a nature like this:
Trigger Type: INCOMING UPDATE METADATA
File variable created when the IncomingUpdateMetadata trigger starts an instance. It is referred to as file and its values come from the filesetMetadataEvent with a nature like this:
Here below, you can find a couple of examples to better understand how the Filter behaves, according to sample data provided, with some of the following expressions specified in the contract:
Expression:
file.registryId==666
Result:
FALSE, no instance will be created
Expression:
file.registryId==11
Result:
TRUE, a new instance will be created
Expression:
file.name=="myFileName.txt" && filesetEvent.clusterName=="clusterFake"
Result:
FALSE, no instance will be created
Expression:
file.name=="myFileName.txt" && filesetEvent.clusterName=="cluster1"
Result:
TRUE, a new instance will be created
Expressions that will return TRUE according to above provided data:
file.name.contains("ileNam") && file.extension == "txt"
file.name.matches("myFileName.txt")
file.name.matches("myFileNam(.*)")
file.name.startsWith("myFil")
Syntax scripting Filter field
- Syntax Boolean matches(String regex) - Meaning Tests whether this string matches the desired regular expression (with regular expression syntax). - Parameters Regex − the expression for comparison.
- Syntax Boolean startsWith(String prefix) - Meaning Tests whether this string starts with the specified prefix. - Parameters Prefix – The prefix to search for
- Syntax Boolean endsWith(String suffix) - Meaning Tests whether this string ends with the specified suffix. - Parameters Suffix – The suffix to search for
- Syntax Boolean isEmpty() - Meaning Tests whether this string has a value. - Parameters NA
Scripting and Script Task
A Script Task is executed by a business process engine. The modeler or implementer defines a script in a language that the engine can interpret. When the Task is ready to start, the engine will execute the script. When the script is completed, the Task will also be completed.
— BPMN 2.0.2 Standard, 10.3.3, Script Task
In Primeur Data Mover, Script Tasks are used to execute scripts in a JSR-223 compatible scripting language, for instance, JavaScript or Groovy.
Scripts Tasks are mainly used to perform simple calculations or operations.
Here we leave snippets of an example used when developing Script Tasks to clarify the usage of some basic scripting operations and their syntax.
Example: DataType Conversion
testMe
is a Process Variable inside a running instance, its type is int but we need to convert it to a String because we need to place it into a Map<String,String>
.
This is the result according to the content of a Log Info Service Task containing:
The resulting log, once set testMe as an int variable assigned with 2 as value will be:
Last updated