La majorité des implémentations d’Addon doivent, pour avoir le comportement voulu, être configurées correctement.
Par exemple, l’action SET permettant de positionner une valeur prend 2 paramètres : « source », représentant la valeur source et « target », représentant la cible ou positionner la valeur.
Les tableaux ci-dessous détaillent les propriétés disponibles pour tous les Addons intégrés à MRules. L’ID de certaines propriétés est souligné : celà signifie qu’il s’agit de leur propriété par défaut, c’est-à-dire qu’une valeur affectée à cet Addon sans plus de directive est injectée automatiquement dans cette propriété (cf. Construction de l’instance).
Tous les Addons
Tous les Addons définissent dans tous les cas les propriétés détaillées dans le tableau ci-dessous.
ID d’Addon | Propriété | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
[tous] | name | String | Un nom pour cette instance. | Non | null |
description | String | Une description pour cette instance. | Non | null |
Les Opérateurs d’évaluation
ID d’Addon | Propriété | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
BETWEEN | min | Accesseur | Valeur minimum acceptée. | Non | null |
max | Accesseur | Valeur maximum acceptée. | Non | null | |
COLDISJOINED | Aucune | ||||
COLEQ | Aucune | ||||
COLIN | Aucune | ||||
COLINCLUDED | Aucune | ||||
COLINCLUDES | Aucune | ||||
COLINTERSECTS | Aucune | ||||
COLNE | Aucune | ||||
COLNOTIN | Aucune | ||||
EQ | Aucune | ||||
EMPTY | Aucune | ||||
GT | Aucune | ||||
GTE | Aucune | ||||
IN | Aucune | ||||
LT | Aucune | ||||
LTE | Aucune | ||||
MATCH | Aucune | ||||
NE | Aucune | ||||
NOTCONTAINS | Aucune | ||||
NOTEMPTY | Aucune | ||||
NOTIN | Aucune | ||||
NOTMATCH | Aucune | ||||
NOTNULL | Aucune | ||||
NULL | Aucune |
Les Opérateurs logiques
ID d’Addon | Propriété | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
AND | Aucune | ||||
OR | Aucune | ||||
VALBETWEEN | considerValidated | booléen | Compter les conditions VRAIES ou les conditions FAUSSES. | Non | true |
min | int | Nombre minimum de conditions vérifiées (ou non vérifiées). -1 pour pas de limite. | Non | -1 | |
max | int | Nombre maximum de conditions vérifiées (ou non vérifiées). -1 pour pas de limite. | Non | -1 | |
XOR | Aucune |
Les Opérateurs mathématiques
Addon ID | Property | Type | Description | Mandatory | Default value |
---|---|---|---|---|---|
DIVIDED_BY | decimals | Rounder | Description de l’arrondi à réaliser ***. | No | Strip, 10 decimales, arrondi supérieur. |
MINUS | Aucune | ||||
MODULO | Aucune | ||||
MULTIPLIED_BY | Aucune | ||||
PLUS | Aucune | ||||
POWER | Aucune |
Les Accesseurs
ID d’Addon | Propriété [/ Alias] | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
AVAILABLE | property | String | Propriété dont l'accessibilité doit être vérifiée. | Oui | |
ABS | source | Accesseur | Source de la donnée. Peut être un nombre ou une collection de nombres. | Oui | |
CAST | source | Accesseur | Source de la donnée | Oui | |
targetType | Classe | Type cible | Oui | ||
targetGenericType | Classe | Si le type cible est une collection, précise le type des éléments. | Non | ||
COALESCE | sources / source | Accesseur | Source de la donnée | Oui | |
CONCAT | source | Accesseur | Source des données | Une et une seule | |
values / value | Liste d’Accesseurs | Source des données | |||
separator | String | Séparateur inséré entre chaque item. | Non | null | |
CONDCOUNT | conditions / condition | Liste de Conditions | Liste de conditions à évaluer. | Oui | |
considerValidated | booléen | Compter les conditions VRAIES ou les conditions FAUSSES. | Non | true | |
CONDWRAPPER | condition | Condition | Condition à « wrapper » | Oui | |
COUNT | source | Accesseur | Source des données sur lesquelles compter. | Oui | |
condition | Condition | Condition de comptage. | Non | null | |
DATEDIFF | date1 | Accesseur | Source de la première date | Oui | |
date2 | Accesseur | Source de la seconde date | Oui | ||
field | Accesseur | unité (un caractère parmi YMDhmsz) | Oui | ||
DATEOP | source | Accesseur | Source de la date à modifier | Oui | |
year | Accesseur | Nombre d'années à ajouter | Non | 0 | |
month | Accesseur | Nombre de mois à ajouter | Non | 0 | |
day | Accesseur | Nombre de jours à ajouter | Non | 0 | |
hour | Accesseur | Nombre d'heures à ajouter | Non | 0 | |
minute | Accesseur | Nombre de minutes à ajouter | Non | 0 | |
second | Accesseur | Nombre de secondes à ajouter | Non | 0 | |
milli | Accesseur | Nombre de millisecondes à ajouter | Non | 0 | |
DEFINED | property | String | Nom de la variable dont la définition doit être vérifiée. | Oui | |
EXEWRAPPER | executable | Executable | Executable à « wrapper » | Oui | |
FILTER | source | Accesseur | Source des données sur lesquelles filtrer. | Oui | |
condition | Condition | Condition de filtrage. | Oui | ||
FORMAT | message | Accesseur | Message à formater, contenant des variables sous la forme {{var}}. | Oui | |
arguments / argument | Liste d'arguments, composés d'un nom (String) et d'une valeur (Accesseur) | Nom de la variable à remplacer dans la chaine (ex: "var") et valeur de remplacement. | Non | null | |
ITERATE | source | Accesseur | Source des données | Une et une seule | |
values / value | Liste d’Accesseurs | Source des données | |||
separator | String | Séparateur pour delimitedsource. | Non | ";" | |
MAPENTRIES | source | Accesseur | Source des données | Oui | |
MAPKEYS | source | Accesseur | Source des données | Oui | |
MAPVALUES | source | Accesseur | Source des données | Oui | |
MAX | source | Accesseur | Source des données sur lesquelles chercher. | Oui | |
condition | Condition | Condition de filtrage | Non | ||
on | Liste d’Accesseurs | Sous propriétés sur lesquelles ordonner | Non | Ordre naturel | |
nbElementsToRetrieve | Accesseur | Nombre max d'éléments à récupérer | Non | 1 | |
nullIsMaxValue | booléen | Comment gérer les valeurs nulles | Non | false | |
MIN | source | Accesseur | Source des données sur lesquelles chercher. | Oui | |
condition | Condition | Condition de filtrage | Non | ||
on | Liste d’Accesseurs | Sous propriétés sur lesquelles ordonner | Non | Ordre naturel | |
nbElementsToRetrieve | Accesseur | Nombre max d'éléments à récupérer | Non | 1 | |
nullIsMinValue | booléen | Comment gérer les valeurs nulles | Non | false | |
NEW | className | String | Nom de la classe à instancier | Oui | |
arguments / argument | Liste d’Accesseurs | Valeurs des arguments du constructeur | Non | null | |
argumentsTypes / argumentsType | Liste de String | Types des arguments du constructeur | Non | null | |
NULLIFEMPTY | source | Accesseur | Source de la donnée à vérifier. | Oui | |
PROPERTY | property | String | Propriété à lire ou écrire par introspection. | Oui | |
source | Accesseur | Source de données à introspecter. Permet de surcharger la base fournie par le contexte d’exécution. | Non | null | |
optimizeMultiRead | booléen | Permet de désactiver la mise en cache des données lues. * | Oui | ||
SEARCH | source | Accesseur | Source des données sur lesquelles chercher. | Oui | |
condition | Condition | Condition de recherche. | Oui | ||
SIZE | source | Accesseur | Source de la donnée. | Oui | |
SPLIT | source | Accesseur | Source de la donnée à splitter. | Oui | |
separator | String | Expression régulière utilisée pour splitter la chaîne de caractères source. | Non | ";" | |
SUBPART | source | Accesseur | Source de la donnée. | Oui | |
beginIndex | int | Index de début. | Oui | ||
endIndex | int | Index de fin. -1 pour pas de limite. | Non | -1 | |
TERNARY | condition | Condition | Condition à évaluer | Oui | |
ifTrue | Accesseur | Valeur retournée si VRAI. | Non | null | |
ifFalse | Accesseur | Valeur retournée si FAUX. | Non | null | |
VALUE | type | String | Force la conversion de la valeur vers un type donnée. | Non | null |
value | Object | Valeur constante retournée. | Non | null | |
VALUES | values | Liste d’Accesseurs | Tous les accesseurs dont les valeurs formeront le résultat. | Oui | |
VPROPERTY | property | Accesseur | Récupère dynamiquement à l'exécution le nom de la propriété à accéder | Oui | |
ROUND | source | Accesseur | Source de la donnée à arrondir | Oui | |
decimals | Rounder | Description de l’arrondi à réaliser ***. | Non | « 0 » | |
AVERAGE MOD MULTIPLY POW SUBTRACT SUM | Source **** | Accesseur | Source des données. | Au moins l’une des deux | |
values / value **** | Liste d’Accesseurs | Source des données. | |||
property | Accesseur | Sous propriété pour acceder aux nombres. | Non | null | |
condition | Condition | Condition pour prise en compte de l’item courant. Permet de réaliser les SOMME.SI d’Excel. | Non | null | |
decimals | Rounder | Description de l’arrondi à réaliser ***. | Non | « 0 » | |
coefficientsSource (AVERAGE seulement) ***** | Accesseur | Obtention d’éventuels coefficients. | Non | null | |
coefficientsValues (AVERAGE seulement) ***** | Liste d’Accesseurs | Obtention d’éventuels coefficients. | Non | null | |
coefficientsProperty (AVERAGE seulement) ***** | Liste d’Accesseurs | Sous propriété permettant l'obtention d’éventuels coefficients. | Non | null | |
SINGLE_MATH | left | Accesseur | Opérande de gauche | Oui | |
right | Accesseur | Opérande de droite | Oui | ||
operator | Opérateur mathématique | Définition de l'opérateur à utiliser pour le calcul | Oui |
* Propriété avancée. Son utilisation peut avoir des conséquences sur les performances globales des exécutions.
** Dans une compilation standard, cette propriété est inutile la plupart du temps : le type cible est déterminé automatiquement.
*** La classe Rounder permet d’effectuer des arrondis de nombres. Une représentation sous forme de chaîne de caractères est possible, sous la forme
[T|F]{0,1}[0-9]*[RoundingMode Value]{0,1}
Avec :
- T|F : supprimer les zéros non représentatifs (i.e. à droite de la partie décimal) : True ou False. True si non précisé.
- Nombre de décimales.
- RoundingMode : CEILING, DOWN, FLOOR, HALF_DOWN, HALF_EVEN, HALF_UP, UNNECESSARY, UP.
Exemple : “2UP” signifie 2 décimales, arrondi supérieur.
**** « source » et « values » peuvent avoir des sémantiques différentes :
- Si un seul est fourni, ce sera la source de toutes les valeurs. Idéal pour les sommes, moyennes, etc …
- S’ils sont tous les deux fournis, « source » fournira le premier nombre (ou les premiers si elle doit être itérée) et « values » fournira les nombres suivant. Pensé pour les soustractions.
***** « coefficient » et « coefficients » peuvent avoir des sémantiques différentes :
- Si seulement « coefficients » est fourni, il doit fournir des nombres et sera la source de tous les coefficients.
- If seulement « coefficient » est fourni, il sera utilisé pour lire une sous-propriété des valeurs itérées.
- ‘ils sont tous les deux fournis, « coefficients » sera itéré et « coefficient » sera utilisé pour lire une sous-propriété des coefficient itérés.
Les Actions
ID d’Addon | Propriété [/ Alias] | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
ADD | source | Accesseur | Donnée source. | Oui | |
target | Accesseur | Collection cible. | Oui | ||
ADDALL | source | Accesseur | Source (Collection, Tableau, Iterable, ...) | Oui | |
target | Accesseur | Collection cible. | Oui | ||
CLEAR | target | Accesseur | Objet (Collection, Map, etc) cible. | Oui | |
DEF | source | Accesseur | Source de la donnée positionnée en variable | Oui | |
var | String | Nom de la variable | Oui | ||
type | String | Type de la variable (peut occasionner un cast) | Non | null | |
EXEC | command | Accesseur | Commande système à exécuter. | Oui | |
var | String | Variable accueillant éventuellement le code retour | Non | null | |
type | String | Type de la variable accueillant le code retour. | Non | null | |
FLOWCONTROL | command | String | Commande de contrôle d’exécution *. | Oui | |
appliesTo | String | Eventuel nom de l’addon sur lequel la commande s’applique. | Non | null | |
message | Accesseur | Eventuel message en cas de levée d’erreur. | Non | null | |
sources / source | Accesseur | Source(s) des données à écrire. | Oui | ||
error | booléen | Eventuellement, écrire sur le flux d’erreur. | Non | false | |
PRINTF | message | Accesseur | Message à formater, contenant des variables sous la forme {{var}}. | Oui | |
arguments / argument | Liste d'arguments, composés d'un nom (String) et d'une valeur (Accesseur) | Nom de la variable à remplacer dans la chaine (ex: "var") et valeur de remplacement. | Non | null | |
error | booléen | Eventuellement, écrire sur le flux d’erreur. | Non | false | |
error | booléen | Eventuellement, écrire sur le flux d’erreur. | Non | false | |
RESET_CACHE | None | ||||
SET | source | Accesseur | Donnée source. | Oui | |
SORT | target | Accesseur | Donnée cible. | Oui | |
asc | booléen | Le tri doit-il être ascendant ou descendant ? | Non | true | |
nullFirst | booléen | Si une valeur est nulle, doit-elle être placée au début ou à la fin ? | Non | true | |
by | Accesseur | Si le tri doit être fait par rapport à une ou plusieurs sous propriétés. | Non | null | |
inplace | booléen | Le tri doit-il être fait directement sur la collection cible ou une nouvelle instance doit-elle être crée ? | Non | true |
* Les différentes commandes de contrôle de flux sont :
- DONTSTOP: si le bloc cible a la propriété « stopAtFirstValidatedCondition » à true, force le non respect de cette directive. « appliesTo » précise le bloc cible de la commande. Sinon, le premier parent est ciblé.
- STOP: Stoppe l’exécution. « appliesTo » peut préciser un bloc à stopper. Sinon, le premier parent est arrêté et l’exécution passe au suivant.
- RESTART: Redémarre l’exécution. « appliesTo » peut préciser un bloc à redémarrer.Sinon, le premier parent est redémarré.
- CONTINUE: Commande spécifique à l’Addon « FOREACH », pour passer directement au prochain élément.
- RAISEERROR: Lève une erreur, ayant un code « RAISEERROR », contenant la valeur de la propriété optionnelle « message » si présente. La propriété « appliesTo »est ignorée si présente.
Les Exécutables
ID d’Addon | Propriété [/ Alias] | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
ACCEXEC | accessor | Accesseur | L'Accesseur à "wrapper" | Oui | |
BLOCK | executables / executable | Liste d’Exécutables | Ce qui sera exécuté dans le bloc. | Non | null |
stopAtFirstValidatedCondition | booléen | Si une condition signale que son évaluation est positive, arrêter l’exécution ? | Non | false | |
FOREACH | executables / executable | Liste d’Exécutables | Ce qui sera exécuté à chaque itération. | Non | null |
source | Accesseur | Source des données à itérer | Oui | ||
var | String | Nom de la variable | Oui | ||
indexVar | String | Nom de la variable contenant le numéro d’ordre de l’item courant dans l’itération. | Non | null | |
type | String | Type de la variable (peut occasionner un cast) | Non | null | |
stopAtFirstValidatedCondition | booléen | Si une condition signale que son évaluation est positive, arrêter l’exécution ? | Non | false | |
resetCache * | booléen | Vider le cache du contexte à chaque itération ? | Non | false | |
FOREACHNUMBER | executables / executable | Liste d’Exécutables | Ce qui sera exécuté à chaque itération. | Non | null |
start | Accesseur | Valeur de départ | Non | 0 | |
end | Accesseur | Valeur de fin | Oui | Au moins une des deux. | |
iterations | Accesseur | Nombre maximum d'itération (si valeur de fin est précisée elle ne sera pas dépassée) | Oui | ||
increment | Accesseur | Valeur ajoutée à chaque itération | Non | 1 | |
var | String | Nom de la variable | Oui | ||
indexVar | String | Nom de la variable contenant le numéro d’ordre de l’item courant dans l’itération. | Non | null | |
type | String | Type de la variable (peut occasionner un cast) | Non | null | |
stopAtFirstValidatedCondition | booléen | Si une condition signale que son évaluation est positive, arrêter l’exécution ? | Non | false | |
resetCache * | booléen | Vider le cache du contexte à chaque itération ? | Non | false | |
INDEX | source | Accesseur | Source de la valeur à retrouver dans l’index. | Oui | |
index | Map [Object --> Liste d’Exécutables] | Ce qu’il faut exécuter en fonction de la valeur source. | Oui | ||
defaultRedirect | Object | Si la valeur n’est pas trouvée dans l’index, faire les actions associées à cette valeur. | Non | null | |
defaultActions / defaultAction | Liste d’Exécutables | Si la valeur n’est pas trouvée dans l’index, exécuter ces actions. | Non | null | |
stopAtFirstValidatedCondition | booléen | Si une condition signale que son évaluation est positive, arrêter l’exécution ? | Non | true | |
stopAtFirstValidatedDefaultCondition | booléen | Idem que précédemment, pour les actions par défaut. | Non | false | |
RULE | condition | Condition | Condition à évaluer | Non | null |
thens / then | Liste d’Exécutables | Actions à effectuer si VRAI. (VRAI si pas de condition fournie). | Non | null | |
elses / else | Liste d’Exécutables | Actions à effectuer si FAUX. | Non | null | |
stopAtFirstValidatedCondition | booléen | Si une condition signale que son évaluation est positive, arrêter l’exécution ? | Non | false |
* Propriété avancée. Son utilisation peut avoir des conséquences sur les performances globales des exécutions.
Les Conditions
ID d’Addon | Propriété [/ Alias] | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
NOT | condition | Condition | Condition dont il faut inverser le résultat. | Oui | |
not | booléen | Permet d'inverser le résultat. | Non | false | |
ACCWRAPPER | accessor | Accesseur | Accesseur dont le résultat doit être « wrappé » pour être interprété en tant que Condition. | Oui | |
not | booléen | Permet d'inverser le résultat. | Non | false | |
CONDSET | not | booléen | Permet d'inverser le résultat. | Non | false |
operator | Opérateur logique | Opérateur à appliquer entre chaque évaluation de condition. | Oui | ||
conditions / condition | Liste de condition | Liste de Conditions à évaluer. | Oui | ||
EVAL | not | booléen | Permet d'inverser le résultat. | Non | false |
source | Accesseur | Permet d'obtenir la valeur source, en général depuis les beans d'entrée ou les variables. | Oui | ||
operator | Opérateur d'évaluation | Action à effectuer sur les valeurs (égalité, inégalité, ...) | Oui | ||
reference | Accesseur | Permet d'obtenir la valeur de référence, en général depuis une constante. | Oui | ||
iterationOperator | Opérateur logique | Si au moins l'une des source ou référence est itérable, donne l'opérateur logique à appliquer entre chaque évaluation. | Oui en cas d'itération. | ||
optimizeMultiEval * | booléen | Permet de forcer la désactivation de la mise en cache de résultat. | Non | true |
* Propriété avancée. Son utilisation peut avoir des conséquences sur les performances globales des exécutions.
Les Fabriques de Contexte
ID d’Addon | Propriété [/ Alias] | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
CONTEXT | classIn | String | Nom complet de la classe du Bean d'entrée / sortie (ou nom court si le package fait partie des imports). | Oui | |
INOUTCONTEXT | classIn | String | Nom complet de la classe du Bean d'entrée (ou nom court si le package fait partie des imports). | Oui | |
classOut | String | Nom complet de la classe du Bean de sortie (ou nom court si le package fait partie des imports). | Non | Valeur de classIn | |
LISTCONTEXT | classProperties / classProperty | Liste de MListContextClassProperty | Liste de descripteurs des différents objets pouvant être placés dans le contexte. | Oui | |
LISTCONTEXT > MListContextClassProperty | className | String | Nom de la classe à décrire | Oui | |
name | String | Nom du getter virtuel qui sera créé dans le contexte pour cette classe. Si multiple, contiendra une Collection. Sinon contiendra directement l'instance. | Oui | ||
multiple | booléen | Peut-on avoir plusieurs instances de cet objet dans le contexte ? | Non | false |
Le Rule Set
ID d’Addon | Propriété [/ Alias] | Type | Description | Obligatoire | Valeur par défaut |
---|---|---|---|---|---|
RULEEXECUTIONSET | contextFactory | Fabrique de contexte | Implémentation de factory de contexte à utiliser. | Non | null |
defaultObjectFilter | String | Nom de la classe de filtre d’objets à utiliser avec les Sessions (cf. JSR 94 Specs). | Non | null | |
loggerName | String | Permet de surcharger le nom du logger pour cette instance. | Non | Valeur de la propriété « name ». | |
stopAtFirstValidatedCondition | booléen | Si une condition signale que son évaluation est positive, arrêter l’exécution ? | Non | true | |
executables / executable | Liste d’Executables | Liste des Exécutables à invoquer lors d’une exécution. | Oui |