Détacher l'attribut d’un objet métier pour créer un nouvel objet métier et nettoyer les données

Version

?

Description

Cas d’usage :
J’ai un processus métier qui est actuellement outillé par un onglet dans un fichier excel, c’est une liste de commandes. En repartant des données contenues dans cet onglet, je souhaite créer une application simplicité.

J’importe mon fichier et je crée l’objet métier «commande» à partir des colonnes existantes dans le fichier.

En analysant mon nouvel objet dans Simplicité, je vois que ma commande a un attribut qui contient des valeurs «M.» «Mr» «Mme», «Mlle» et «Mme». et il m’apparait intéressant de créer une table « civilité». Je veux donc détacher l’attribut pour en faire un objet séparé.

Je sélectionne donc l’attribut dans l’objet «commande», je clique sur «détacher» et quand le processus me demande le nom du nouvel objet métier, je saisis «civilité». (Je peux aussi directement demander le détachement dans le modèle graphique)

Le nouvel objet est créé avec le lien vers l’objet principal. Le nouvel objet est peuplé avec les différentes valeurs distinctes et les items de l’objet principal font référence à la bonne civilité.

Un peu plus tard, je rajoute manuellement un champ « détail » dans mon objet «civilité» et je renseigne «M. → monsieur» «Mme → madame». En arrivant à «Mr», je me rends compte qu’il y a un problème de qualité des données et que «Mr» est un mauvais doublon de «M.».

Je retourne sur l’objet métier et je clique sur «nettoyer» (faudra trouver un autre verbe). Je sélectionne l’ensemble des valeurs qu’il faut remplacer et, en regard, la nouvelle valeur qui doit être injectée. Par exemple ici :

|Mr| => |M.|
|MMe| => |Mme|

Je confirme les modifications
Comme la ligne « M. » existe déjà, la ligne «Mr» est supprimée des civilités et les lignes de «commandes» qui faisaient référence à «Mr» pointent maintenant sur «M.».

Bonjour,

Merci pour votre proposition à confronter avec les fonctionnalités qui existent déjà :

  • Il est possible de générer un objet basique à partir d’une liste de valeur existante :

image

Cette méthode est toujours marquée comme expérimentale car très peu utilisée, elle génère un objet égal au nom de l’ENUM (et remplace de mémoire les valeurs en base par des foreign-key vers ce nouvel objet lors du design donc pas en prod).

Il faut compléter/corriger l’objet qui ne respecte pas les conventions syntaxiques de son projet, et écrire le patch SQL qui remplace les code ENUM par des foreign-key (passer d’un varchar à un integer pas toujours possible en fonction de sa base… il est préférable de créer une autre colonne le temps de la migration, et de supprimer la colonne de l’enum à la fin).

  • Au niveau de votre action “nettoyer”, il existe déjà une fonctionnalité de “merge” native si l’objet possède l’option et que l’utilisateur peut sélectionner en liste + modifier + supprimer l’objet.

Cela permet de fusionner / dédoublonner jusqu’à 5 lignes d’un objet métier, donc cela peut tout à fait répondre à votre besoin de fusionner “M.” et “Mr” dans un seul / en changeant également toutes les foreign-keys des objets liés vers le master conservé.

En liste, il faut sélectionner N lignes + action “Merge/Fusionner” > Ecran de sélection des champs + relations à conserver sur l’objet master (1ère colonne).

Merci pour ce retour.

Effectivement la fonction “fusionner” répond au besoin, j’étais passé à côté.

Pour le 1er point, votre réponse m’amène à repréciser certains points du cas d’usage décrit :

  • il n’y pas avoir besoin de créer un objet métier avant de faire l’import d’un fichier excel. Les noms et types d’attributs sont générés/proposés en fonction du contenu du fichier.
  • je n’y avait pas pensé, mais générer une liste à partir d’un attribut txt est intéressant

Transformer un attribut texte en une liste pour ensuite créer un objet métier comme vous le proposez parait quand même compliqué. Mais si c’est le plus simple et que la méthode masque cet étape intermédiaire, à la limite pourquoi pas.

Je n’ai pas bien compris le corrections à faire avec le patch SQL et la colonne temporaire, mais la méthode doit probablement pouvoir masquer cette complexité.

Cordialement

Bonjour

Évidemment il serait egalemet utile de pouvoir sélectionner plusieurs colonnes pour en faire un nouvel objet.
Toujours dans l’exemple des commandes ci-dessus, selectionner civilite nom et prenom pour faire un objet “client”.

Cordialement