# Modèle de flux dictionnaire

## Modes de règle

Code | Signification
--- | ---
send | transfert en mode envoi (push)
recv | transfert en mode réception (pull)

## Types de tâches

### Log et Trace

Code | Description
--- | ---
LOG | inscrit les logs dans le fichiers spécifiés en path
SNMP | envoie une trap SNMP

### Action sur la location fichier

Code | Description
--- | ---
COPY | Copie le fichier dans le dossier spécifié
COPYRENAME | Copie et renomme le fichier àla location spécifiée
MOVE | Change la location du fichier pour le dossier spécifié
MOVERENAME | Change et renomme la location du fichier pour le dossier spécifié
LINKRENAME | Crée un lien vers le fichier à l’emplacement spécifié
RENAME | Renomme le fichier
DELETE | Supprime le fichier
VALIDFILEPATH | Teste si le fichier est dans l’une des locations spécifiées

### Action sur le fichier

Code | Description
--- | ---
TRANSCODE | Effectue une opération de transcodage
TAR | Crée une archive `TAR`
ZIP | Crée une archive `ZIP`
UNZEROED | Ajoute un octet vide si le fichier est vide (taille = 0)
CHKFILE | Vérifie certaines propriétés du fichier
CHMOD | Modifie le mode d’accès du fichier

Code | Description
--- | ---
EXEC | Execute une commande externe
EXECMOVE | Execute une commande externe
EXECOUTPUT | Execute une commande externe
EXECJAVA | Execute une classe Java externe
RESTART | Redémarre le server R66

### Action pour transférer le fichier

Code | Description
--- | ---
TRANSFER | Crée un nouveau transfert basé sur les informations données dans `path`
RESCHEDULE | Reprogramme la tâche de transfert d’un temps donné en millisecondes
FTP | Transfert synchrone utilisant le protocol FTP

## Constantes

Code | Type | Signification
--- | --- | ---
flow_name | String | Nom du flux
types | PartnerType | Constantes correspondant aux types de partenaires existants. Trois valeurs sont possibles: `types.R66`, `types.GWFTP` et `types.FTP`
true | Bool | Valeur `vrai`
false | Bool | Valeur `faux`
default | Bool | Alias de `true`

Les types de partenaires (types de données `PartnerType`) définis sont les suivants:

Type | Description
--- | ---
GW | Partenaires Waarp Gateway
TRANSFER | Partenaires Waarp Transfer
FTP | Partenaires FTP
SFTP | Partenaires SFTP
HTTP | Partenaires HTTP
R66 | Partenaires Waarp R66 (déprécié)
GWFTP | Partenaires Waarp Gateway FTP (déprécié)
GWSFTP | Partenaires Waarp Gateway SFTP (déprécié)

## Variables concernant les transferts

Ces données correspondent aux propriétés d’un transfert. Elles sont directement accessible pour le transfert en cours de définition (ex: `origin_id`). Pour les données de type `Transfert` listées ci-dessous, elles sont accessibles en tant que propriété de l’objet (ex: `next.origin_id`).

Nom | Type | Description
--- | --- | ---
origin_id | Int | L’id interne de l’instance d’origine du transfert
origin | Instance | Les informations sur l’instance d’origine du transfert
origin_dir | String | Le chemin vers le dossier dans lequel se trouvent les fichiers sur le partenaire d’origine
destination_id | Int | L’id interne de l’instance de destination du transfert
destination | Instance | Les informations sur l’instance de destination du transfert
destination_dir | String | Le chemin vers le dossier dans lequel se trouvent les fichiers sur le partenaire de destination
next | Transfert | Données concernant le (les) transfert(s) suivants dans le flux. Quand cette variable est utilisée (en test ou en substitution), la règle est évaluée pour chaque transfert suivant (Seulement disponible pour les tâches)
final_destinations | []Int | La liste d’identifiants des partenaires de destination du flux
route_index | Int | Index du transfert dans la route courante
last_index | Int | Index du dernier transfert pour la route courante
flow_index | Int | Index du transfert courant dans le flux
flow_name | String | Le nom du flux
name | String | Le nom de la règle
connection | Int | Le sens de la connection entre le site d’origine et le site de destination (`0`: les deux sens, `1`: envoi, `2`: réception)
params | FlowParams | Les paramètres additionels de flux
types | PartnerType | Les types de partenaires

Les paramètres de flux (type `FlowParams`) sont accessibles avec la variable `params`. Ils correspondent aux paramètres définis dans l”écran de définition des paramètres de flux. Ils sont accessibles en séparant le nom du paramètre voulu séparé de l’objet par un point (`.`). Par exemple, pour un paramètre nommé `codepage_in`, le paramètre peut-être utilisé avec `{{params.codepage_in}}`.

## Variables concernant les instances (`Instance`)

Les Instances representent un agent de transfert qui est à l’origine ou en destination d’un transfert.

Les données du type `Instance` listées ci-dessus ont les propriétés suivantes. Elles sont accessibles en les séparant de l’objet par un point (`.`). Exemple: `destination.Name`

Nom | Type | Description
--- | --- | ---
Name | String | Identifiant R66 d’un partenaire
Partner | Partner | Les informations sur le partenaire de l’instance
Interface | Interface | Les informations sur l’interface de l’instance
IsClient | Bool | `true` si le partenaire a un client actif
IsServer | Bool | `true` si le partenaire a un serveur actif

## Variables concernant les partenaires (`Partner`)

Les données du type `Partner` listées ci-dessus ont les propriétés suivantes. Elles sont accessibles en les séparant de l’objet par un point (`.`). Exemple: `destination.Name`

Nom | Type | Description
--- | --- | ---
ID | Int | L’identifiant interne du partenaire
Name | String | Identifiant R66 d’un partenaire
SiteId | Int | L’identifiant du site auquel le partenaire est rattaché
Type | PartnerType | Le type du partenaire
IsClient | Bool | `true` si le partenaire a un client actif
IsServer | Bool | `true` si le partenaire a un serveur actif
Description | String | La descriptions données au partenaire
Data | PartnerData | Liste des données additionnelles associées aux partenaires
Autosync | Bool | `true` si le partenaire est mis à jour via un référentiel externe, `false` sinon
IsExternal | Bool | `true` si le partenaire est un partenaire externe
Gateway | Int | L’identifiant interne du partenaire à laquelle le partenaire est rattaché (pour les partenaires FTP, SFTP et HTTP)

Les données additionnelles associées aux partenaires (type `PartnerData`) sont accessibles en les séparant de l’objet par un point (`.`). Les variables disponibles sont les suivantes :

Nom | Type | Description
--- | --- | ---
env | String | L’environnement du partenaire
appName | String | Le nom de l’application correspondant au partenaire
idApp | String | L’identifiant de l’application correspondant au partenaire
hostName | String | L’identifiant du serveur sur lequel est installé le partenaire

## Variables concernant les interfaces (`Interface`)

Les données du type `Interface` listées ci-dessus ont les propriétés suivantes. Elles sont accessibles en les séparant de l’objet par un point (`.`). Exemple: `destination.Interface.Name`

Nom | Type | Description
--- | --- | ---
ID | Int | L’identifiant interne du partenaire
Name | String | Identifiant R66 d’un partenaire
Protocol | String | Le protocole de l’interface
IsClient | Bool | `true` si le partenaire a un client actif
IsServer | Bool | `true` si le partenaire a un serveur actif
Autosync | Bool | `true` si le partenaire est mis à jour via un référentiel externe, `false` sinon
Address | String | L’adresse IP ou le nom d’hôte pour joindre le serveur du partenaire
Port | Int | Le port pour joindre le serveur du partenaire
Data | InterfaceData | Liste des données additionnelles associées aux partenaires

Les données additionnelles associées aux interfaces (type `InterfaceData`) sont accessibles en les séparant de l’objet par un point (`.`). Les variables disponibles dépendent du protocole de l’interface.

Pour le protocole R66 :

Nom | Type | Description
--- | --- | ---
serverLogin | String | Le nom d’utilisateur de l’interface quand elle est serveur
serverPassword | String | Le mot de passe de l’interface quand elle est serveur
clientLogin | String | Le nom d’utilisateur de l’interface quand elle est cliente
clientPassword | String | Le mot de passe de l’interface quand elle est cliente

Pour le protocole R66-TLS :

Nom | Type | Description
--- | --- | ---
serverLogin | String | Le nom d’utilisateur de l’interface quand elle est serveur
serverPassword | String | Le mot de passe de l’interface quand elle est serveur
serverPrivateKey | String | La clé privée de l’interface quand elle est serveur
serverCertificate | String | Le certificat de l’interface quand elle est serveur
clientLogin | String | Le nom d’utilisateur de l’interface quand elle est cliente
authentMode | String | Le mode d’authentification pour l’interface (« password » ou « password-certificate »)
clientPassword | String | Le mot de passe de l’interface quand elle est cliente
clientPrivateKey | String | La clé privée de l’interface quand elle est cliente et que le mode d’authentification est « password-certificate »
clientCertificate | String | Le certificat de l’interface quand elle est cliente et que le mode d’authentification est « password-certificate »

Pour le protocole SFTP :

Nom | Type | Description
--- | --- | ---
serverPrivateKey | String | La clé privée de l’interface quand elle est serveur
serverCertificate | String | Le certificat de l’interface quand elle est serveur
clientLogin | String | Le nom d’utilisateur de l’interface quand elle est cliente
authentMode | String | Le mode d’authentification pour l’interface (« password », « publicKey » ou « password-publicKey »)
clientPassword | String | Le mot de passe de l’interface quand elle est cliente
clientPrivateKey | String | La clé privée de l’interface quand elle est cliente et que le mode d’authentification utilise une clef publique
clientPublicKey | String | La clef publique de l’interface quand elle est cliente et que le mode d’authentification utilise une clef publique

Pour le protocole HTTP :

Nom | Type | Description
--- | --- | ---
clientLogin | String | Le nom d’utilisateur de l’interface quand elle est cliente
clientPassword | String | Le mot de passe de l’interface quand elle est cliente

Pour le protocole HTTPS :

Nom | Type | Description
--- | --- | ---
serverPrivateKey | String | La clé privée de l’interface quand elle est serveur
serverCertificate | String | Le certificat de l’interface quand elle est serveur
clientLogin | String | Le nom d’utilisateur de l’interface quand elle est cliente
authentMode | String | Le mode d’authentification pour l’interface (« basic », « certificate » ou « basic-certificate »)
clientPassword | String | Le mot de passe de l’interface quand elle est cliente et que le mode d’authentification utilise un mot de passe
clientPrivateKey | String | La clé privée de l’interface quand elle est cliente et que le mode d’authentification utilise un certificat
clientPublicKey | String | La clef publique de l’interface quand elle est cliente et que le mode d’authentification utilise un certificat

Pour le protocole FTP :

Nom | Type | Description
--- | --- | ---
clientLogin | String | Le nom d’utilisateur de l’interface quand elle est cliente
clientPassword | String | Le mot de passe de l’interface quand elle est cliente
serverMode | String | Le mode de transfert de données pour l’interface quand elle est serveur (« passive » ou « active »)
passiveMinPort | Int | Le port passif minimum utilisé par l’interface et que le mode du serveur est « passive »
passiveMaxPort | Int | Le port passif maximum utilisé par l’interface et que le mode du serveur est « passive »
activeMinPort | Int | Le port actif minimum utilisé par l’interface quand elle est cliente et que le mode du serveur est « active »
activeMaxPort | Int | Le port actif maximum utilisé par l’interface quand elle est cliente et que le mode du serveur est « active »

Pour le protocole HTTPS :

Nom | Type | Description
--- | --- | ---
serverCertificate | String | Le certificat de l’interface quand elle est serveur
secureMode | String | Le mode de connexion TLS pour l’interface (« implicit » ou « explicit »)
clientLogin | String | Le nom d’utilisateur de l’interface quand elle est cliente
clientPassword | String | Le mot de passe de l’interface quand elle est cliente
serverMode | String | Le mode de transfert de données pour l’interface quand elle est serveur (« passive » ou « active »)
passiveMinPort | Int | Le port passif minimum utilisé par l’interface et que le mode du serveur est « passive »
passiveMaxPort | Int | Le port passif maximum utilisé par l’interface et que le mode du serveur est « passive »
activeMinPort | Int | Le port actif minimum utilisé par l’interface quand elle est cliente et que le mode du serveur est « active »
activeMaxPort | Int | Le port actif maximum utilisé par l’interface quand elle est cliente et que le mode du serveur est « active »

## Variables de transfert R66

Les variables interprétées par Waarp R66, Waarp Transfer et Waarp Gateway sont les suivantes:

Nom | Description
--- | ---
#TRUEFULLPATH# | Location complète du fichier
#TRUEFILENAME# | Current FILENAME (basename) (change in retrieval part)
#ORIGINALFULLPATH# | Original full path FILENAME (before changing in retrieval part)
#ORIGINALFILENAME# | Original FILENAME (basename) (before changing in retrieval part)
#FILESIZE# | Taille du fichier
#INPATH# | Location du dossier de réception
#OUTPATH# | Location du dossier d’envoie
#WORKPATH# | Location du dossier de travail (dossier des fichiers en cours de transfert)
#ARCHPATH# | Location du dossier d’archive
#HOMEPATH# | Home path (to enable for instance relative path commands)
#RULE# | Règle utilisée
#DATE# | La date actuelle au format yyyyMMdd
#HOUR# | L’heure actuelle au format HHmmss
#REMOTEHOST# | Remote host id (if not the initiator of the call)
#REMOTEHOSTIP# | Remote host IP (if not the initiator of the call)
#LOCALHOST# | Id du localhost
#LOCALHOSTIP# | IP du localhost
#TRANSFERID# | L’ID du transfert
#REQUESTERHOST# | Requester host Id
#REQUESTEDHOST# | Requested host Id
#FULLTRANSFERID# | Full Transfer Id as TRANSFERID_REQUESTERHOST_REQUESTEDHOST
#RANKTRANSFER# | Current or final RANK of block
#BLOCKSIZE# | La taille de bloc utilisée.
#ERRORMSG# | Le message d’erreur actuel ou NoError si aucune erreur ne s’est produite avant cet appel
#ERRORCODE# | Le code d’erreur actuel ou `-` (Unknow) si aucune erreur ne s’est produite avant cet appel
#ERRORSTRCODE# | Le message du code d’erreur actuel ou « Unknow » si aucune erreur ne s’est produite avant cet appel
#NOWAIT# | Used by Exec type task to specify that the command will be executed in asynchronous mode, without waiting any result from it
#LOCALEXEC# | Used by Exec type task to specify that the command will be executed not locally (within the JVM) but outside using a LocalExec