Primeur Online Docs
Data Mover 1.20
Data Mover 1.20
  • 🚀GETTING STARTED
    • What is Primeur Data Mover
    • Main features of Primeur Data Mover
    • Primeur Data Mover deployment
    • Navigate through Primeur Data Mover
  • 📚INFRASTRUCTURE
    • STENG, clusters and servers
      • Adding a cluster and a STENG
      • Deleting a STENG
    • DMZ Gateways
      • Blocking users automatically at the DMZ level 🚀
    • DMZ Clusters
      • Load balancing across active DMZ clusters for outbound file transfers 🚀
  • 👥Actors
    • Who are the actors
    • Create your first actor
    • Configure an actor 🚀
      • Users Tab
      • Groups Tab
      • VFS Tab
      • File Resource Tab
      • Connection Contract Tab
      • Client Connections Tab
    • Search files by actor
    • Actor Lineage 🚀
      • Aggregation of flows by protocol 🚀
      • Lineage with connection contracts 🚀
      • Lineage with input, mediation and output contracts 🚀
      • Lineage with any contract type 🚀
  • 🗄️VIRTUAL FILE SYSTEMS
    • Virtual File Systems (VFS) 🚀
      • Creating a VFS 🚀
      • Configuring a VFS
      • Adding Virtual Paths
      • Modifying and Deleting a VFS
    • Searching files in all VFS
    • Storage Classes 🚀
      • Storage Class: SMB v3 or later versions 🚀
      • Storage Class: Azure Blob Storage 🚀
      • Storage Class: Amazon S3 🚀
      • Storage Class: Google Storage 🚀
      • Storage Class: Local File System 🚀
    • Retention Classes
  • 📝Contracts
    • What is a contract
    • Create your first contract
      • Create an Input Contract
        • Define the contract info
        • Associate the contract with the actor
        • Define the contract actions
        • Set the contract variables
      • Create a Mediation Contract
      • Create an Output Contract
      • Create a Connection Contract
        • Create a contract clause
        • Associate the VFS with file processing rules
        • File Processing Rules
    • Managing contracts 🚀
    • File Resources
      • Creating File Resources
      • Navigating File Resources
      • How to use File Resources
  • 🧱Workflows
    • What is a workflow
    • Create your first workflow template
    • Trigger types
      • Trigger types for input contracts
      • Trigger types for mediation and output contracts
    • Service tasks
      • Standard service tasks
      • Triggerable service tasks 🚀
      • Spazio selectors and filebox metadata management
      • Error management
    • Variables
      • Variables in workflows and contracts
      • Handling process variables
    • Workflow templates
      • System workflow templates
        • Workflow templates for input contracts
        • Workflow templates for mediation contracts
        • Workflow templates for output contracts
      • Custom workflow templates
        • Workflow template toolbar
        • Workflow template Shape repository panel
        • Workflow template working area
        • Workflow template BPMN-diagram panel
      • Error workflow templates
    • Editing workflow templates
    • DataFlow Instance Context (DFIC) 🚀
  • 🛸TRANSPORT PROTOCOLS AND CONNECTORS
    • Data Mover client and server roles
    • Client Connections
      • Client Connection: FTP
      • Client Connection: FTPS
      • Client Connection: SFTP
      • Client Connection: HTTP
      • Client Connection: HTTPS
      • Client Connection: PESIT
      • Client Connection: SMB v3 or later versions
      • Client Connection: POP3 or IMAP
      • Client Connection: SMTP
      • Client Connection: PR4/PR4S
      • Client Connection: PR5
      • Client Connection: PR5S
      • Client Connection: HDFS
      • Client Connection: HDFSS
      • Client Connection: Amazon S3 🚀
      • Client Connection: Google Cloud Storage
        • Credentials
      • Client Connection: Azure Blob Storage
      • Client Connection: IBM Sterling Connect:Direct
      • Client Connections retry settings
    • Server Connections 🚀
      • Server Connection: FTP
      • Server Connection: FTPS
      • Server Connection: SFTP
      • Server Connection: HTTP
      • Server Connection: HTTPS
      • Server Connection: PeSIT
      • Server Connection: PR4
      • Server Connection: PR5
      • Server Connection: PR5S 🚀
      • Server Connection: IBM Sterling Connect:Direct
    • Protocol Connections Reference
    • Stopping all servers in one go
  • 💻API
    • HTTP MFT Rest API
    • Job Manager APIs 🚀
    • SFTP Server sessions APIs 🚀
    • Audit Logs APIs 🚀
  • 🔓Security
    • Identity and Access Management
    • Users & Groups
      • Setting the password policy
      • Creating Internal Users 🚀
      • Creating Internal Groups
      • Creating External Users
      • Creating External Groups
    • Key Stores and Trust Stores
      • Key Store 🚀
        • Creating a Key 🚀
        • Creating a Certificate 🚀
        • Importing a Key or a Certificate
        • Creating a Symmetric key
        • Examples
      • Trust Store 🚀
        • Importing Keys 🚀
        • Importing Certificates
      • Untrusted Cache 🚀
      • Trusting Keys and Certificates
      • PGP Key Store and PGP Trust Store
        • PGP Key Store
        • Importing keys into the PGP Trust Store
    • ICAP
      • Configuring ICAP
      • Defining an ICAP rule
  • 🎧FILE EVENT LISTENER
    • What is the File Event Listener
    • Configuring File Event Listeners
      • Setting the File Event Listener Engine
      • Defining a contract for the File Event Listener
      • Setting events to be monitored 🚀
    • RegEx Rules 🚀
    • Monitoring File Event Listeners
  • 👑FILE MANAGER
    • What is the File Manager
    • Logging into File Manager
    • Managing the File Manager 🚀
      • The list of results
      • Creating new folders
      • Uploading files
      • Downloading files 🚀
      • Searching for files and folders
      • Deleting files 🚀
      • Bulk actions 🚀
    • File Manager and VFS
    • Customizing File Manager externals
      • The configuration-wui.json file 🚀
      • How to customize the Login window and the logo
      • How to customize the footer
      • How to configure the Upload with Metadata option
      • How to customize bulk actions 🚀
  • 🧑‍⚖️FILE ROUTING
    • What is File Routing 🚀
    • Routing Rules
      • The Rules tab
      • The Categories tab
      • The Output tab
    • How to create a rule 🚀
      • Add metadata 🚀
      • Select ACTIONS
      • Select OUTPUTS
      • Policy for the selection of metadata rules
    • Configuration of the environment in Data One
      • Set up Storage Classes
      • Set up Retention Classes
      • Configure the Actor
      • Set up File Resources
    • Associate the Routing Rule with a Contract
    • Example
  • 📩NOTIFICATION CHANNELS
    • What are Notification Channels
    • Configuring the default Email Notification Channel
    • Configuring a new Email Notification Channel
    • Trusting Certificates
    • Managing Templates
      • Data Watcher Macros
      • Contract Macros
      • ICAP Macros
      • Central Log Macros
      • Email Templates
      • Editing default templates
      • Loading a new template
  • 💬LOGS & AUDIT
    • Logs 🚀
      • Logs options 🚀
      • Troubleshooting error analysis in Logs
    • Audit Options 🚀
      • Export audit logs 🚀
      • List of Audit entity types 🚀
      • Audit message codes 🚀
    • Log Notifiers 🚀
      • FEL message codes
  • 🕒MONITORING
    • Jobs
      • Details about Jobs 🚀
      • jobman.sh CLI
    • Job Manager
    • Job Queues
      • Managing Job Queues
    • File Transfers
      • Ongoing
      • Finished
      • Reports
    • File Transfers Rules
      • Configuring Rules
  • 🧐HOW TO...
    • ... use different DNS names 🚀
    • ... configure a Cron Expression
    • ... configure an application
    • ... customize the header
    • ... run searches in Data Watcher 🚀
    • ... use Data Shaper graphs in Data Mover contracts
    • ... modify DMCFG and deploy it
    • ... tune Data One data retention
    • ... fine tune Data Mover
      • Email sender for the Notification Channel
  • 🗒️RELEASE NOTES
    • Data One 1.20.10
    • Data One 1.20.9
    • Data One 1.20.8
    • Data One 1.20.7
      • Data One 1.20.7.1
    • Data One 1.20.6
    • Data One 1.20.5
    • Data One 1.20.4
    • Data One 1.20.3
    • Data One 1.20.2
    • Data One 1.20.1
    • Data One 1.20.0
Powered by GitBook
On this page
  • Filter
  • Trigger Type: NEW FILE
  • Trigger Type: INCOMING/OUTGOING TRANSFER
  • Trigger Type: INCOMING UPDATE METADATA
  • Scripting and Script Task
  1. Workflows
  2. Variables

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.

Name
Field
Description

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.

Operator
Purpose

=

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:

file {
  registryId = 11
  clusterName = "cluster1"
  virtualPath = "part1-vfs:/inbox"
  virtualFolder = "/inbox"
  virtualFS = "part1-vfs"
  name = "myFileName.txt"
  nameNoExtension = "myFileName"
  extension = "txt"
  absoluteFileName = "/home/ghibli/vfs/internal-volume/myFileName.txt.A00069E0.B0EA621E"
}
filesetEvent {
  fsrFilesetId = 9
  internalFile = true
  absoluteFilename = "/home/ghibli/vfs/internal-volume/myFileName.txt.A00067B6.B8519525"
  fileAccessUrl = "file:/home/ghibli/vfs/internal-volume/myFileName.txt.A00067B6.B8519525"
  originalFileName = "myFileName.txt"
  resourceId = "3f18857208cc5640d2fa0ab7a596ea28d40a923d"
  virtualPath = "part1-vfs:/inbox"
  creationTimestamp = null
  updateTimestamp = null
  databox = "part1-vfs:/inbox"
  databoxVersion = 0
  peerId = null
  clusterName = "cluster1"
  eventUTCDate = "Thu Jul 19 11:35:44 CEST 2018"
  timezoneId = "Europe/Rome"
  userName = null
  errorMessage = null
  errorMsgArgs = null
}

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:

file {
  registryId = 11
  clusterName = "cluster1"
  virtualPath = "part1-vfs:/inbox"
  virtualFolder = "/inbox"
  virtualFS = "part1-vfs"
  name = "myFileName.txt"
  nameNoExtension = "myFileName"
  extension = "txt"
  absoluteFileName = "/home/ghibli/vfs/internal-volume/myFileName.txt.A00069E0.B0EA621E"
}
transferEvent {
  eventId = "/b3705c37-a39c-423b-a0a2-3a8dbb6d39bc/86df2978-720c-46f8-bf34-aa9be4d0384c"
  eventType = "NOTIFICATION"
  eventUTCDate = "2020-06-12 09:55:59,995 +0200"
  timezoneId = "CET"
  emitterType = "TRANSPORT"
  eventSeverity = "OK"
  eventClassification = "TRANSFER_EVENT"
  peerId = "peer1"
  clusterName = "cluster1"
  userName = "part1"
  errorMessage = null
  errorMsgArgs = null
  transferId = 2018
  transferStatus = "COMPLETED"
  direction = "PUSH"
  mode = "SERVER"
  fsrFilesetId = 55
  filesize = 0
  sourceFile = "/test8.txt"
  destinationFile = "//IVNQM1/LOCALE/test8.txt"
  protocol = "FTP"
  tag = "test8.txt"
  transferRetry = 0
  sender = "172.18.0.1"
  contract = null
  contractVersion = 0
  databox = "part1-vfs:/IVNQM1/LOCALE"
  databoxVersion = 0
  partner = "part1
  partnerVersion = 0
  incomingcall = null
}

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:

file {
  registryId = 11
  clusterName = "cluster1"
  virtualPath = "part1-vfs:/inbox"
  virtualFolder = "/inbox"
  virtualFS = "part1-vfs"
  name = "myFileName.txt"
  nameNoExtension = "myFileName"
  extension = "txt"
  absoluteFileName = "/home/ghibli/vfs/internal-volume/myFileName.txt.
A00069E0.B0EA621E"
}

filesetMetadataEvent {
  fsrFilesetId = 9
  internalFile = true
  absoluteFilename = "/home/ghibli/vfs/internal-volume/myFileName.txt.
A00067B6.B8519525"
  fileAccessUrl = "file:/home/ghibli/vfs/internal-volume/myFileName.txt.
A00067B6.B8519525"
  originalFileName = "myFileName.txt"
  resourceId = "3f18857208cc5640d2fa0ab7a596ea28d40a923d"
  virtualPath = "part1-vfs:/inbox"
  creationTimestamp = null
  updateTimestamp = null
  databox = "part1-vfs:/inbox"
  databoxVersion = 0
  peerId = null
  clusterName = "cluster1"
  eventUTCDate = "Thu Jul 19 11:35:44 CEST 2018"
  timezoneId = "Europe/Rome"
  userName = null
  errorMessage = null
  errorMsgArgs = null
  metadata = {
    key1 = "value1"
    key2 = "value2"
  }
}

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:

TESTVARIABLE: ${testMe} - TOSTRING: ${execution.getVariable("testMe").concat("")} 
-  APPENDSTR: ${execution.getVariable("testMe").concat("example")} 
-  ADDNUMBER: ${execution.getVariable("testMe") +5}

The resulting log, once set testMe as an int variable assigned with 2 as value will be:

2018-07-30 16:18:00,264 
INFO  [com.primeur.ghibli.workflow.bpm.boundary.services.log.BpmLogInfoService] (pool-13-thread-1247) 
TESTVARIABLE: 2 - TOSTRING: 2 - APPENDSTR: 2example  - ADDNUMBER: 7
PreviousVariablesNextHandling process variables

Last updated 23 days ago

( all the file resources associated with the selected partner and company)

( all the remote servers associated with the selected partner and company)

( all the virtual paths associated with the selected partner and company)

🧱
Cascader
Cascader
Cascader