Catalogues de propriétés obligatoires


Les catalogues permettent de spécifier les propriétés obligatoires sur une entité. Ces propriétés impactent le calcul de la note d'avancement de ce produit quand elles ne sont pas renseignées. Un catalogue permet également de spécifier des champs et des listes à auditer.


Ces catalogues sont définis au format JSON sur l'instance directement: Entrepôt > Système > Catalogues de propriétés > Catalogs


Chaque catalogue contient un certain nombre de champs obligatoires ou optionel dans sa définition:

Identifiant Type Obligatoire Description
id texte Oui l'identifiant unique du catalogue (ex: "inco");
label texte Oui le nom affiché de ce catalogue (ex: "EU 1169/2011 (INCO)");
entityType tableau Non permet de filtrer l'application du catalogue à un type précis d'entité (ex: ['bcpg:finishedProduct'] appliquera ce catalogue uniquement aux produits finis).
entityFilter texte Non permet de filtrer l'application du catalogue à un entité grâce à une formule SPEL ( ex: "hierarchy1 != null" ou "spel(hierarchy1 != null)" appliquera ce catalogue uniquement aux entités avec une famille).
fields tableau Oui la liste des champs à renseigner pour que l'entité soit validée (ex: ["bcpg:legalName", "bcpg:storageConditionsRef"] créera un catalogue où le libellé légal ainsi que les conditions de conditionnement doivent être renseignées);
uniqueFields tableau non la liste des champs à valeur unique (ex: ["bcpg:erpcode", "cm:name"]). Si une valeur est dupliquée, le champ sera renseigné dans le catalogue
auditedFields tableau Non la liste des champs ou listes prises en comptes lors de la mise à jour de la date de modification du catalogue.(ex: ["bcpg:legalName", "compoList"]). Lorsque l'un des champs de cette liste est modifié, la date du catalogue sera actualisée
i18nMessages Objet Non mapping champs / labels permettant de spécifier un libellé pour un champ obligatoir. ex : {"bcpg:clients":"associé", "cm:title":"becpg.forms.field.tradeName"} pour bcpg:clients on utilise le nouveau label associé. pour cm:title on utilise une clé de langue, cette clé de langue doit être déclarée dans un fichier de langue Core (Alfresco)
locales tableau Non la liste des langues auxquelles s'applique le catalogue. Si ce champ n'est pas présent, les langues des rapports seront choisies (s'il y en a), sinon la langue du système sera la langue sélectionnée. Une langue est définie par un code de deux lettres selon la norme ISO-639-1
https://fr.wikipedia.org/wiki/Liste\_des\_codes\_ISO\_639-1

Il est possible d'indiquer une alternative entre deux champs dans une liste en les séparant par le symbole "|". (ex: ["bcpg:useByDate|bcpg:bestBeforeDate"]).

Pour les champs multilingues, il est possible de rendre obligatoire ce champ uniquement pour une langue: il faut faire suivre le champ d'un underscore et de la langue, par exemple bcpg:legalName_pl force le renseignement du champ libellé légal en polonais, quelque soit la langue choisie dans le catalogue ou les rapports.

Il est également possible de créer des champs de type formule en préfixant le champ par formula{id}|. Par exemple formula1|isLiquid() ou formula1|spel(isLiquid()).

L'id de la formule peut ensuite être utilisé pour spécifier son libellé:

"i18nMessages": {
    "formula1" : "becpg.forms.field.tradeName",
    "formula2" : "formula2.missingKey"
}

Vous pouvez ainsi utiliser des formules SPEL pour tester qu'une liste est renseigné ou vide par exemple:

formula1|spel(costList.?[value != null].size() == costList.size()) test si toutes les valeurs des coûts sont renseignés

Ci-dessous des exemples de catalogues :

 [
    {
        "id": "incoFinishedProduct",
        "label": "EU 1169/2011 (INCO)",
        "entityType": [
            "bcpg:finishedProduct"
        ],
        "uniqueFields": [
            "bcpg:erpCode",
            "cm:name"
        ],
        "fields": [
            "bcpg:legalName",
            "bcpg:precautionOfUseRef",
            "bcpg:useByDate|bcpg:bestBeforeDate",
            "bcpg:storageConditionsRef",
            "cm:title"
        ]
    },
    {
        "id": "incoRawMaterials",
        "label": "EU1169/2011 (INCO)",
        "entityType": [
            "bcpg:rawMaterial"
        ],
        "uniqueFields": [
            "bcpg:erpCode",
            "cm:name"
        ],
        "fields": [
            "bcpg:legalName"
        ]
    }
]

Il est recommandé de vérifier la validité du tableau JSON (sans antislash) grâce à un parser avant de lancer l'instance - http://json.parser.online.fr/

N.B : Il faut vider les caches une fois le fichier modifié.

Démarche facile pour ajouter/supprimer un champ du catalogue :

  1. Aller sur Entrepôt>Système>Catalogue de propriétés;
  2. Mettre le curseur sur "Catalogs" et cliquer sur "Télécharger";
  3. Ouvrir le fichier avec un éditeur de texte (Atom par exemple);
  4. Ajouter ou supprimer une ligne;
  5. Retourner sur l'instance et cliquer sur "Plus" puis "Importer une nouvelle version" et choisir le fichier tout juste modifié.

results matching ""

    No results matching ""