Catalogues


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

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é puis reformuler les produits.


Chaque catalogue contient un certain nombre de champs obligatoires ou optionnels 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 à une 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 obligatoire.
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"]).

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é
  6. Reformuler les produits

Utiliser un champ renommé dans le catalogue

Utiliser le paramètre i18nMessages dans le catalogue pour aussi surcharger le nom du champ.

        "i18nMessages" :{
            "cm:title":"becpg.forms.field.tradeName" 
        },

Champs multilingues

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.

Formules

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ée ou vide par exemple:

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

Exemples

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" 
        ],
        "i18nMessages": {
            "cm:title": "Trade name" 
        },
        "auditedFields": [
            "bcpg:legalName",
            "cm:title",
            "cm:description" 
        ],
        "modifiedField": "bcpg:modifiedCatalog1",
        "entityFilter": "@beCPG.assocValue(nodeRef,\"bcpg:entityTplRef\")!=null && (@beCPG.assocValue(nodeRef,\"bcpg:entityTplRef\").toString()!=\"workspace://SpacesStore/7d1bf1c6-dc17-42ee-8314-cca9d6d30515\")" 
    },
    {
        "id": "incoRawMaterials",
        "label": "EU1169/2011 (INCO)",
        "entityType": [
            "bcpg:rawMaterial" 
        ],
        "uniqueFields": [
            "bcpg:erpCode",
            "cm:name" 
        ],
        "fields": [
            "bcpg:legalName" 
        ]
    }
]

results matching ""

    No results matching ""