- Introduction de nouveaux mécanismes
- Réecriture de l'evaluation et du parsing des règles.
- Les règles peuvent apparaître dans les formules de calcul
- Introduction d'un AST en bonne et due forme
- Réecriture de buildRuleDependancies.
- Ajout d'une passe pour la désambiguation des références
- Réecriture de rendNonApplicable et de remplace
- Réimplémentation de parentDependancy
Voir #1191
Nous utilisions jusqu'à présent le code suivant pour évaluer la situation:
> mapObjIndexed(value => evaluateExpression(value), situation)
c'est à dire une évaluation ligne par ligne. Or si certaines valeurs de
la situation contiennent des références, il faut les évaluer dans le bon
ordre.
Avec cette modification, seul le parsage est fait lorsqu'on appelle
`setSituation` et l'évaluation est faite ultérieurement lorsque c'est
nécessaire avec la même logique que pour les règles.
L'implémentation a pour effet de bord de ne plus supprimer l'utilisation
de true / false dans la situation qui doivent être remplacés par "oui"
et "non".
Build a dependencies graph and detect cycles:
* Types and guards for nodes of the ParsedRules AST
* Simple visitor framework for the nodes and their `formule` sub-nodes
* Build a directed graph for dependencies using @dagrejs/graphlib
Le mécanisme "allègement" proposaient ces deux paramètres ajoutant
beaucoup de complexité pour une seule utilisation dans la base de règle
qui peut être remplacée par une formule littérale.
Closes#1119
Ce commit supprime le concept de "contrôle" au sein du moteur, en les
remplaçant par des règles publicodes classiques. Cela permet notamment
d'uniformiser les règles d'applicabilité (désactivation via espace de
nom ou "rend non applicable" par exemple) ainsi que d'accéder à la
valeur d'un contrôle donné avec le nom de la règle correspondante.
Par ailleurs renomme le concept de "contrôle" en "notifcation" dans la
partie mon-entreprise/.
Donne l'occasion d'experimenter avec la génération automatique de formulaire
en publicodes. Pas mal de question à creuser, mais quelques pistes interessantes