Conditions
Sommaire
Les conditions : visible if
Introduction
Cette colonne permet de définir les conditions d’apparition d’une question, de contenu d’un document, d’une section, ou même d’un document dans son entièreté.
Si le champ Visible if est laissé vide, l’entité concernée apparaîtra en toute circonstance.
Les règles conditionnelles permettent donc de rendre dynamiques des interfaces ou des documents sans que ce “dynamisme” n’ait besoin d’être codé techniquement par un développeur : ce n’est que du paramétrage.
Pour définir une règle d’apparition, il faut impérativement utiliser le format suivant : MA_VARIABLE = ‘VALEUR’
On remplacera MA_VARIABLE par le nom de la variable qui doit provoquer la règle d’apparition, et VALEUR par la valeur associée à cette variable qui doit provoquer la règle d’apparition.
- A noter : il est aussi possible d'utiliser d'autres opérateurs que
=
, et notamment :>
<
>=
<=
!=
Les conditions composées
De plus, la colonne “Visible IF” permet d’utiliser des conditions composées, en utilisant les connecteurs “OU” ainsi que “ET”.
Pour utiliser l’opérateur “or”, la syntaxe à suivre est la suivante : MA_VARIABLE1 = ‘VALEUR2’ or MA_VARIABLE2 = ‘VALEUR1’
Pour utiliser l’opérateur “and”, la syntaxe à suivre, très similaire, est la suivante : MA_VARIABLE1 = ‘VALEUR2’ and MA_VARIABLE2 = ‘VALEUR1’
Les différents opérateurs
Au-delà des conditions simples & composées, qui sont les plus courantes pour produire des documents juridiques, on peut aussi utiliser :
- des opérateurs de comparaison ( ≤, ≥ , <, >, ==, != etc.)
- des opérateurs arithmétiques : + , - (moins) , / (divisé par) , * (multiplié par)
- des primitives ; càd des nombres (12, 3.5, -123 …), des chaînes de caractères (“abcde” toujours contenues entre deux guillemets), ou des booléens (true ou false).
- des variables, préalablement référencées dans le datastore courant, et dans le même format (uniquement des majuscules et des tirets-bas). Ex: AGE, FIRSTNAME…
- des fonctions de traitement, faciles à repérer car leur format est spécifique : elles sont en minuscules et se terminent par une paire de parenthèses permettant de spécifier des paramètres séparées par des virgules.
Exemple : now() , contains("damien", "dam") , etc... Remarquez que même si la fonction ne nécessite aucun paramètre, la paire de parenthèses reste visible.
Important : une règle est évaluée à chaque fois qu’une des variables qui la compose vient à changer.
Exemples
Exemples de règles conditionnelles :
- AGE >= 18 (VRAI si la variable AGE est supérieure ou égale à 18 ; une erreur est remontée si la variable AGE n’est pas de type “numeric” car on ne peut comparer avec ≥ que des nombres).
- NAME matches /dam/ (VRAI si la variable NAME correspond à la regExp /dam/, autrement dit, si NAME contient la chaine “dam”. La condition est validée pour les valeurs de NAME telles que “damien”, “adam”, ou “amsterdam” ; une erreur est remontée si la variable NAME n’est pas du type ‘string’ car une regExp ne s’applique que sur des chaînes de caractères).
- date_before(EVENTDATE, now()) vaut VRAI si la variable EVENTDATE est antérieure à la date actuelle ; une erreur est remontée si la variable EVENTDATE n’est pas du type ‘date’. Nb: la fonction now() renvoie automatiquement le “datetime” actuel.
- ACCEPT_RULES = true and AGE > 18 : VRAI si la variable ACCEPT_RULES vaut “true” ET que la variable AGE est strictement supérieure au nombre 18 ; si la variable AGE n’est pas de type “numeric”, une erreur sera remontée comme dans le premier exemple. Cette règle peut aussi s’écrire avec des parenthèses (facultatives) afin de rendre plus lisibles les sous-conditions autour de l’opérateur “and”. Exemple : (ACCEPT_RULES = true) and (AGE > 18) Aussi, il est bon de noter que l’écriture
- ACCEPT_RULES and AGE > 18 aurait le même résultat. En effet, le "= true" peut s’avérer facultatif puisque par défaut une variable valide une condition si sa valeur ne vaut pas NULL, 0 (zero) ou “false”.
La syntaxe de ces conditions est améliorée avec des fonctions :
- la fonction contains(string, needle) pour lequel string et needle sont obligatoirement deux chaînes de caractères et qui vaudra VRAI si needle est contenu dans la chaîne string, peu importe la casse (majuscule ou minuscule) des deux chaînes.
- la fonction begins_with(string, needle), pour lequel string et needle sont obligatoirement deux chaînes de caractères, et qui vaut VRAI si la chaîne string commence par la chaîne needle peu importe la casse (majuscule ou minuscule) des deux chaines.
- la fonction ends_with(string, needle), avec string et needle obligatoirement des chaînes de caractères, qui vaut VRAI si la chaîne string se termine par la chaîne needle peu importe la casse (majuscule ou minuscule) des deux chaines.
- la fonction now() qui est de type “date” et qui a toujours pour valeur la date actuelle.
- la fonction date_before(date1, date2), avec date1 et date2 obligatoirement des variables de type “date”, qui vaut VRAI si date2 correspond à une date future à date1.
- la fonction date_year(date), avec date obligatoirement une variable de type “date”, qui retourne simplement l’année de cette date (ex: 2017). Idem pour date_month(date) avec le mois correspondant, pour date_day(date) le jour du mois, pour date_weekday(date) le jour de la semaine, pour date_hour(date) l’heure, et pour date_minute(date) les minutes correspondantes.
- la fonction date_sum(date, num, what num) avec date étant obligatoirement une variable de type “date”, num un nombre entier (positif ou négatif) et what une chaine de caractère parmi “year”, “month”, “day”, “hour”, “minute” ou “second”. Cette fonction retourne une date après lui avoir appliqué une somme d’un nombre num de temps what. Par exemple, si la date est le 20/08/2017 12:20:09, que num vaut 3 et que what vaut ‘day’, la date sera avancée de 3 jours, et la valeur retournée sera le 23/08/2017 12:20:09. Si what vaut “year”, et num vaut 10, la date retournée sera le 20/08/2027 12:20:09. La valeur de num peut-être négative afin d’obtenir une date inférieure à la date passée en paramètre. Cette fonction s’avère intéressante dans de nombreux cas. Par exemple, pour calculer à partir d’une date de naissance si la personne est majeure :
- date_sum(BIRTHDATE, 18, 'year') ≤ now() ou vu autrement,
- date_sum(now(), -18, 'year') ≥ BIRTHDATE