Propriétés des Addons

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’AddonPropriétéTypeDescriptionObligatoireValeur par défaut
[tous]nameStringUn nom pour cette instance.Nonnull
descriptionStringUne description pour cette instance.Nonnull

Les Opérateurs d’évaluation

ID d’AddonPropriétéTypeDescriptionObligatoireValeur par défaut
BETWEENminAccesseurValeur minimum acceptée.Nonnull
maxAccesseurValeur maximum acceptée.Nonnull
COLDISJOINEDAucune
COLEQAucune
COLINAucune
COLINCLUDEDAucune
COLINCLUDESAucune
COLINTERSECTSAucune
COLNEAucune
COLNOTINAucune
EQAucune
EMPTYAucune
GTAucune
GTEAucune
INAucune
LTAucune
LTEAucune
MATCHAucune
NEAucune
NOTCONTAINSAucune
NOTEMPTYAucune
NOTINAucune
NOTMATCHAucune
NOTNULLAucune
NULLAucune

Les Opérateurs logiques

ID d’AddonPropriétéTypeDescriptionObligatoireValeur par défaut
ANDAucune
ORAucune
VALBETWEENconsiderValidatedbooléenCompter les conditions VRAIES ou les conditions FAUSSES.Nontrue
minintNombre minimum de conditions vérifiées (ou non vérifiées).
-1 pour pas de limite.
Non-1
maxintNombre maximum de conditions vérifiées (ou non vérifiées).
-1 pour pas de limite.
Non-1
XORAucune

Les Opérateurs mathématiques

Addon IDPropertyTypeDescriptionMandatoryDefault value
DIVIDED_BYdecimalsRounderDescription de l’arrondi à réaliser ***.NoStrip, 10 decimales, arrondi supérieur.
MINUSAucune
MODULOAucune
MULTIPLIED_BYAucune
PLUSAucune
POWERAucune

Les Accesseurs

ID d’AddonPropriété [/ Alias]TypeDescriptionObligatoireValeur par défaut
AVAILABLEpropertyStringPropriété dont l'accessibilité doit être vérifiée.Oui
ABSsourceAccesseurSource de la donnée. Peut être un nombre ou une collection de nombres.Oui
CASTsourceAccesseurSource de la donnéeOui
targetTypeClasseType cibleOui
targetGenericTypeClasseSi le type cible est une collection, précise le type des éléments.Non
COALESCEsources / sourceAccesseurSource de la donnéeOui
CONCATsourceAccesseurSource des donnéesUne et une seule
values / valueListe d’AccesseursSource des données
separatorStringSéparateur inséré entre chaque item.Nonnull
CONDCOUNTconditions / conditionListe de ConditionsListe de conditions à évaluer.Oui
considerValidatedbooléenCompter les conditions VRAIES ou les conditions FAUSSES.Nontrue
CONDWRAPPERconditionConditionCondition à « wrapper »Oui
COUNTsourceAccesseurSource des données sur lesquelles compter.Oui
conditionConditionCondition de comptage.Nonnull
DATEDIFFdate1AccesseurSource de la première dateOui
date2AccesseurSource de la seconde dateOui
fieldAccesseurunité (un caractère parmi YMDhmsz)Oui
DATEOPsourceAccesseurSource de la date à modifierOui
yearAccesseurNombre d'années à ajouterNon0
monthAccesseurNombre de mois à ajouterNon0
dayAccesseurNombre de jours à ajouterNon0
hourAccesseurNombre d'heures à ajouterNon0
minuteAccesseurNombre de minutes à ajouterNon0
secondAccesseurNombre de secondes à ajouterNon0
milliAccesseurNombre de millisecondes à ajouterNon0
DEFINEDpropertyStringNom de la variable dont la définition doit être vérifiée.Oui
EXEWRAPPERexecutableExecutableExecutable à « wrapper »Oui
FILTERsourceAccesseurSource des données sur lesquelles filtrer.Oui
conditionConditionCondition de filtrage.Oui
FORMATmessageAccesseurMessage à formater, contenant des variables sous la forme {{var}}.Oui
arguments / argumentListe 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.Nonnull
ITERATEsourceAccesseurSource des donnéesUne et une seule
values / valueListe d’AccesseursSource des données
separatorStringSéparateur pour delimitedsource.Non";"
MAPENTRIESsourceAccesseurSource des donnéesOui
MAPKEYSsourceAccesseurSource des donnéesOui
MAPVALUESsourceAccesseurSource des donnéesOui
MAXsourceAccesseurSource des données sur lesquelles chercher.Oui
conditionConditionCondition de filtrageNon
onListe d’AccesseursSous propriétés sur lesquelles ordonnerNonOrdre naturel
nbElementsToRetrieveAccesseurNombre max d'éléments à récupérerNon1
nullIsMaxValuebooléenComment gérer les valeurs nullesNonfalse
MINsourceAccesseurSource des données sur lesquelles chercher.Oui
conditionConditionCondition de filtrageNon
onListe d’AccesseursSous propriétés sur lesquelles ordonnerNonOrdre naturel
nbElementsToRetrieveAccesseurNombre max d'éléments à récupérerNon1
nullIsMinValuebooléenComment gérer les valeurs nullesNonfalse
NEWclassNameStringNom de la classe à instancierOui
arguments / argumentListe d’AccesseursValeurs des arguments du constructeurNonnull
argumentsTypes / argumentsTypeListe de StringTypes des arguments du constructeurNonnull
NULLIFEMPTYsourceAccesseurSource de la donnée à vérifier.Oui
PROPERTYpropertyStringPropriété à lire ou écrire par introspection.Oui
sourceAccesseurSource de données à introspecter. Permet de surcharger la base fournie par le contexte d’exécution.Nonnull
optimizeMultiReadbooléenPermet de désactiver la mise en cache des données lues. *Oui
SEARCHsourceAccesseurSource des données sur lesquelles chercher.Oui
conditionConditionCondition de recherche.Oui
SIZEsourceAccesseurSource de la donnée.Oui
SPLITsourceAccesseurSource de la donnée à splitter.Oui
separatorStringExpression régulière utilisée pour splitter la chaîne de caractères source.Non";"
SUBPARTsourceAccesseurSource de la donnée.Oui
beginIndexintIndex de début.Oui
endIndexintIndex de fin.
-1 pour pas de limite.
Non-1
TERNARYconditionConditionCondition à évaluerOui
ifTrueAccesseurValeur retournée si VRAI.Nonnull
ifFalseAccesseurValeur retournée si FAUX.Nonnull
VALUEtypeStringForce la conversion de la valeur vers un type donnée.Nonnull
valueObjectValeur constante retournée.Nonnull
VALUESvaluesListe d’AccesseursTous les accesseurs dont les valeurs formeront le résultat.Oui
VPROPERTYpropertyAccesseurRécupère dynamiquement à l'exécution le nom de la propriété à accéderOui
ROUNDsourceAccesseurSource de la donnée à arrondirOui
decimalsRounderDescription de l’arrondi à réaliser ***.Non« 0 »
AVERAGE
MOD
MULTIPLY
POW
SUBTRACT
SUM
Source ****AccesseurSource des données.Au moins l’une des deux
values / value ****Liste d’AccesseursSource des données.
propertyAccesseurSous propriété pour acceder aux nombres.Nonnull
conditionConditionCondition pour prise en compte de l’item courant. Permet de réaliser les SOMME.SI d’Excel.Nonnull
decimalsRounderDescription de l’arrondi à réaliser ***.Non« 0 »
coefficientsSource (AVERAGE seulement) *****AccesseurObtention d’éventuels coefficients.Nonnull
coefficientsValues (AVERAGE seulement) *****Liste d’AccesseursObtention d’éventuels coefficients.Nonnull
coefficientsProperty (AVERAGE seulement) *****Liste d’AccesseursSous propriété permettant l'obtention d’éventuels coefficients.Nonnull
SINGLE_MATHleftAccesseurOpérande de gaucheOui
rightAccesseurOpérande de droiteOui
operatorOpérateur mathématiqueDéfinition de l'opérateur à utiliser pour le calculOui

* 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’AddonPropriété [/ Alias]TypeDescriptionObligatoireValeur par défaut
ADDsourceAccesseurDonnée source.Oui
targetAccesseurCollection cible.Oui
ADDALLsourceAccesseurSource (Collection, Tableau, Iterable, ...)Oui
targetAccesseurCollection cible.Oui
CLEARtargetAccesseurObjet (Collection, Map, etc) cible.Oui
DEFsourceAccesseurSource de la donnée positionnée en variableOui
varStringNom de la variableOui
typeStringType de la variable (peut occasionner un cast)Nonnull
EXECcommandAccesseurCommande système à exécuter.Oui
varStringVariable accueillant éventuellement le code retourNonnull
typeStringType de la variable accueillant le code retour.Nonnull
FLOWCONTROLcommandStringCommande de contrôle d’exécution *.Oui
appliesToStringEventuel nom de l’addon sur lequel la commande s’applique.Nonnull
messageAccesseurEventuel message en cas de levée d’erreur.Nonnull
PRINTsources / sourceAccesseurSource(s) des données à écrire.Oui
errorbooléenEventuellement, écrire sur le flux d’erreur.Nonfalse
PRINTFmessageAccesseurMessage à formater, contenant des variables sous la forme {{var}}.Oui
arguments / argumentListe 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.Nonnull
errorbooléenEventuellement, écrire sur le flux d’erreur.Nonfalse
errorbooléenEventuellement, écrire sur le flux d’erreur.Nonfalse
RESET_CACHENone
SETsourceAccesseurDonnée source.Oui
SORTtargetAccesseurDonnée cible.Oui
ascbooléenLe tri doit-il être ascendant ou descendant ?Nontrue
nullFirstbooléenSi une valeur est nulle, doit-elle être placée au début ou à la fin ?Nontrue
byAccesseurSi le tri doit être fait par rapport à une ou plusieurs sous propriétés.Nonnull
inplacebooléenLe tri doit-il être fait directement sur la collection cible ou une nouvelle instance doit-elle être crée ?Nontrue

* 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’AddonPropriété [/ Alias]TypeDescriptionObligatoireValeur par défaut
ACCEXECaccessorAccesseurL'Accesseur à "wrapper"Oui
BLOCKexecutables / executableListe d’ExécutablesCe qui sera exécuté dans le bloc.Nonnull
stopAtFirstValidatedConditionbooléenSi une condition signale que son évaluation est positive, arrêter l’exécution ?Nonfalse
FOREACHexecutables / executableListe d’ExécutablesCe qui sera exécuté à chaque itération.Nonnull
sourceAccesseurSource des données à itérerOui
varStringNom de la variableOui
indexVarStringNom de la variable contenant le numéro d’ordre de l’item courant dans l’itération.Nonnull
typeStringType de la variable (peut occasionner un cast)Nonnull
stopAtFirstValidatedConditionbooléenSi une condition signale que son évaluation est positive, arrêter l’exécution ?Nonfalse
resetCache *booléenVider le cache du contexte à chaque itération ?Nonfalse
FOREACHNUMBERexecutables / executableListe d’ExécutablesCe qui sera exécuté à chaque itération.Nonnull
startAccesseurValeur de départNon0
endAccesseurValeur de finOuiAu moins une des deux.
iterationsAccesseurNombre maximum d'itération (si valeur de fin est précisée elle ne sera pas dépassée)Oui
incrementAccesseurValeur ajoutée à chaque itérationNon1
varStringNom de la variableOui
indexVarStringNom de la variable contenant le numéro d’ordre de l’item courant dans l’itération.Nonnull
typeStringType de la variable (peut occasionner un cast)Nonnull
stopAtFirstValidatedConditionbooléenSi une condition signale que son évaluation est positive, arrêter l’exécution ?Nonfalse
resetCache *booléenVider le cache du contexte à chaque itération ?Nonfalse
INDEXsourceAccesseurSource de la valeur à retrouver dans l’index.Oui
indexMap [Object --> Liste d’Exécutables]Ce qu’il faut exécuter en fonction de la valeur source.Oui
defaultRedirectObjectSi la valeur n’est pas trouvée dans l’index, faire les actions associées à cette valeur.Nonnull
defaultActions / defaultActionListe d’ExécutablesSi la valeur n’est pas trouvée dans l’index, exécuter ces actions.Nonnull
stopAtFirstValidatedConditionbooléenSi une condition signale que son évaluation est positive, arrêter l’exécution ?Nontrue
stopAtFirstValidatedDefaultConditionbooléenIdem que précédemment, pour les actions par défaut.Nonfalse
RULEconditionConditionCondition à évaluerNonnull
thens / thenListe d’ExécutablesActions à effectuer si VRAI.
(VRAI si pas de condition fournie).
Nonnull
elses / elseListe d’ExécutablesActions à effectuer si FAUX.Nonnull
stopAtFirstValidatedConditionbooléenSi une condition signale que son évaluation est positive, arrêter l’exécution ?Nonfalse

* Propriété avancée. Son utilisation peut avoir des conséquences sur les performances globales des exécutions.

Les Conditions

ID d’AddonPropriété [/ Alias]TypeDescriptionObligatoireValeur par défaut
NOTconditionConditionCondition dont il faut inverser le résultat.Oui
notbooléenPermet d'inverser le résultat.Nonfalse
ACCWRAPPERaccessorAccesseurAccesseur dont le résultat doit être « wrappé » pour être interprété en tant que Condition.Oui
notbooléenPermet d'inverser le résultat.Nonfalse
CONDSETnotbooléenPermet d'inverser le résultat.Nonfalse
operatorOpérateur logiqueOpérateur à appliquer entre chaque évaluation de condition.Oui
conditions / conditionListe de conditionListe de Conditions à évaluer.Oui
EVALnotbooléenPermet d'inverser le résultat.Nonfalse
sourceAccesseurPermet d'obtenir la valeur source, en général depuis les beans d'entrée ou les variables.Oui
operatorOpérateur d'évaluationAction à effectuer sur les valeurs (égalité, inégalité, ...)Oui
referenceAccesseurPermet d'obtenir la valeur de référence, en général depuis une constante.Oui
iterationOperatorOpérateur logiqueSi 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éenPermet de forcer la désactivation de la mise en cache de résultat.Nontrue

* Propriété avancée. Son utilisation peut avoir des conséquences sur les performances globales des exécutions.

Les Fabriques de Contexte

ID d’AddonPropriété [/ Alias]TypeDescriptionObligatoireValeur par défaut
CONTEXTclassInStringNom complet de la classe du Bean d'entrée / sortie (ou nom court si le package fait partie des imports).Oui
INOUTCONTEXTclassInStringNom complet de la classe du Bean d'entrée (ou nom court si le package fait partie des imports).Oui
classOutStringNom complet de la classe du Bean de sortie (ou nom court si le package fait partie des imports).NonValeur de classIn
LISTCONTEXTclassProperties / classPropertyListe de MListContextClassPropertyListe de descripteurs des différents objets pouvant être placés dans le contexte.Oui
LISTCONTEXT >
MListContextClassProperty
classNameStringNom de la classe à décrireOui
nameStringNom du getter virtuel qui sera créé dans le contexte pour cette classe. Si multiple, contiendra une Collection. Sinon contiendra directement l'instance.Oui
multiplebooléenPeut-on avoir plusieurs instances de cet objet dans le contexte ?Nonfalse

Le Rule Set

ID d’AddonPropriété [/ Alias]TypeDescriptionObligatoireValeur par défaut
RULEEXECUTIONSETcontextFactoryFabrique de contexteImplémentation de factory de contexte à utiliser.Nonnull
defaultObjectFilterStringNom de la classe de filtre d’objets à utiliser avec les Sessions (cf. JSR 94 Specs).Nonnull
loggerNameStringPermet de surcharger le nom du logger pour cette instance.NonValeur de la propriété « name ».
stopAtFirstValidatedConditionbooléenSi une condition signale que son évaluation est positive, arrêter l’exécution ?Nontrue
executables / executableListe d’ExecutablesListe des Exécutables à invoquer lors d’une exécution.Oui