Connecteur

Un connecteur CSV permet d’exporter les données via des fichiers CSV. Il permet de configurer les données à exporter et les règles de transformation sont paramétrables dans un « Mapping ». Il est également possible de développer un connecteur spécifique pour prendre en compte des règles métier spécifiques et pour envoyer les données dans un format spécifique.

beCPG mets à disposition un connecteur standard permettant d'extraire des entités et leurs listes au format CSV, ou bien des documents (images, fiches techniques) au format natif.

Installation

Installer Java JDK 8 sur votre machine télécharger et dé-zipper le fichier becpg-connector-3.2.0-distribution.zip

Configuration

Pour configurer le connecteur, il est nécessaire d'éditer le fichier becpg-connector.properties

Tout d'abord, vous devez indiquer l'adresse du serveur beCPG :

remote.scheme=http
remote.host=localhost
remote.port=8080
remote.login=admin
remote.password=becpg

Il faut également indiquer l'emplacement de destination des fichiers CSV (par défaut dans le dossier courant)

connector.dest.path=.

Attention : les chemins doivent s'écrire sous windows c:\\Temp\\becpg-connector (ou c:/Temp/becpg-connector)

Il est possible d'envoyer une notification par e-mail à la fin de l’exécution du connecteur :

notify.enabled=false
connector.notify.from=support@becpg.fr
connector.notify.to=support@becpg.fr

mail.smtp.host=localhost
mail.smtp.port=25

Il est également possible d'envoyer les fichiers par FTP à la fin de l’exécution du connecteur :

ftp.enabled=false
ftp.host= 
ftp.port=21
ftp.login= 
ftp.password=
ftp.destFolder=
ftp.deleteOnSuccess=false

Configuration standard

Configuration des entités à extraire

La liste des entités à extraire est configurée par une requête de recherche où % est remplacé par la date de dernier import. Cette date est stockée dans le fichier lastImport qui peut être modifié ou supprimé manuellement.

connector.query.template=(@cm\\:created:[%s TO MAX] OR @cm\\:modified:[%s TO MAX]) AND ( ASPECT:\"bcpg:productAspect\" OR TYPE:\"bcpg:client\" OR TYPE:\"bcpg:supplier\" ) 

Dans l'exemple, toutes les entités de type produit ainsi que les clients et fournisseurs modifiés ou créés depuis le dernier import sont extraits.

Configuration des champs à extraire

Pour chaque type d'entités renvoyées, il faut définir les champs à exporter dans le fichier CSV.

Exemple pour le type produit fini :

mapping.csv.bcpg_finishedProduct=bcpg:code,bcpg:erpCode,cm:name,cm:title,bcpg:eanCode,bcpg:code,bcpg:legalName,cm:description,bcpg:entityTplRef\
                    ,bcpg:productHierarchy1,bcpg:productHierarchy2,bcpg:bestBeforeDate,bcpg:certificateDate,bcpg:contractDate\
                    ,bcpg:foodContact,bcpg:netWeightUnit,bcpg:numberOfServings,bcpg:packagingDescription,bcpg:periodAfterOpening\
                    ,bcpg:precautionOfUseRef,bcpg:preparationTips,bcpg:priceCurrency,bcpg:productComments,bcpg:productDensity\
                    ,bcpg:productMicrobioCriteriaRef,bcpg:productQty,bcpg:productSpecifications,bcpg:productState,bcpg:productUnit\
                    ,bcpg:projectedQty,bcpg:servingSize,bcpg:startEffectivity,bcpg:storageConditionsRef\
                    ,bcpg:supplierPlants,bcpg:suppliers,bcpg:suppliers|bcpg:code,bcpg:suppliers|bcpg:erpCode\
                    ,bcpg:clients,bcpg:clients|bcpg:code,bcpg:clients|bcpg:erpCode,bcpg:unitPrice,bcpg:useByDate

Enfin, il faut également configurer les listes à exporter.

Exemple pour la liste nutriment et emballages :

mapping.csv.nutList=article|bcpg:code,article|bcpg:erpCode,bcpg:nutListNut,bcpg:nutListValue,bcpg:nutListFormulatedValue,bcpg:nutListUnit
mapping.csv.packagingList=article|bcpg:code,article|bcpg:erpCode,bcpg:packagingListProduct,bcpg:packagingListProduct|bcpg:erpCode,bcpg:packagingListQty,bcpg:packagingListUnit,bcpg:packagingListLossPerc,bcpg:packagingListPkgLevel,bcpg:packagingListIsMaster

Configuration des champs multi-langues

Le connecteur standard permet aussi l'exportation des valeurs multi-langues d'un champ de type "d:mltext".

Donc, pour exporter les différentes valeurs de ce champ, il suffit d'ajouter à la fin du nom le code "locale" de la langue concernée.

Exemple :

cm:description_en, pour exporter la description en Anglais.

bcpg:legalName_ja_JP, pour exporter la valeur du libellé légale en Japonais.

Configurer l'export des codes ISO de l'association geoOrigin

Vous pouvez exporter le code ISO de l'association origine géographique en utilisant le format assoc_name|bcpg:geoOriginISOCode

Exemple :

Pour exporter les codes ISO de l'association bcpg:ingListGeoOrigin dans la liste des ingrédients

mapping.csv.ingList=article|bcpg:code,article|bcpg:erpCode,bcpg:ingListQtyPerc,bcpg:ingListGeoOrigin|bcpg:geoOriginISOCode

Configuration du connecteur de documents

Le connecteur de documents est un plugin du connecteur standard. Vous devez donc tout d'abord l'activer en saisissant la ligne suivante dans le fichier becpg-connector.properties

connector.plugin.class=fr.becpg.connector.plugin.StandardDocumentVisitor

A noter que cette ligne est présente par défaut dans le fichier mais commentée par un # en début de ligne, il suffit alors de supprimer ce caractère.

Une fois que le plugin est pris en compte dans la configuration, vous pouvez modifier quels fichiers seront extraits pour chaque type d'entité (produit fini, matière première, etc)

Chaque entité aura un mapping défini comme ceci :

mapping.document.bcpg_<type de l'entité> = <champs à extraire>

Des mappings par défaut sont fournis avec le connecteur, permettant d'extraire les fiches techniques clients et l'image du produit, et ce pour les produits finis, semi-finis et les matières premières.

mapping.document.bcpg_finishedProduct=/Images/produit.jpg|img_produit${bcpg:erpCode}.jpg;/Documents/${cm:name} - Fiche Technique Client.pdf|FT_client${bcpg:erpCode}.pdf
mapping.document.bcpg_rawMaterial=/Images/produit.jpg|img_produit${bcpg:erpCode}.jpg;/Documents/${cm:name} - Fiche Technique Client.pdf|FT_client${bcpg:erpCode}.pdf
mapping.document.bcpg_semiFinishedProduct=/Images/produit.jpg|img_produit${bcpg:erpCode}.jpg;/Documents/${cm:name} - Fiche Technique Client.pdf|FT_client${bcpg:erpCode}.pdf

On constate que chaque entité à extraire est formée de la même façon :

  • On a d'un côté le chemin sur l'instance du fichier à extraire
  • Ensuite, un trait vertical |
  • Suivi du nom (et chemin) du fichier extrait. Ceci permet de choisir comment sera nommé votre fichier, et s'il doit être rangé dans un autre dossier.

Ensuite, il est important de constater que chaque entité à extraire est séparée de la suivante par des points virgules ;

Deux variables seront encodées et utilisables dans le nom du fichier source (sur le système beCPG) et cibles (extraites sur votre système), le code erp du produit en question, et son nom. On peut donc imaginer extraire les fiches techniques dans un dossier ayant pour nom "code ERP - nom de l'entité" :

/Documents/${cm:name} - Fiche Technique Client.pdf|${bcpg:erpCode} - ${cm:name}/FT_client${bcpg:erpCode}.pdf

Configuration du connecteur de workflows

Le connecteur de workflow permet d'exporter les workflows et leurs tâches au format CSV. Vous pouvez l'activer en saisissant la ligne suivante dans le fichier becpg-connector.properties

connector.plugin.class=fr.becpg.connector.plugin.WorkflowCSVVisitor

Les mapping suivants sont disponibles pour configurer les champs à extraire:

mapping.csv.workflow_instances=id,name,title,description\
                                ,package|cm:name,formula|props["package\\|path"]!=null ?props["package\\|path"].split("/")[props["package\\|path"].split("/").length-1]:""\
                                ,isActive,startDate,priority,message,endDate,dueDate,initiator.userName,initiator.firstName,initiator.lastName

mapping.csv.workflow_tasks=workflowInstance|id,workflowInstance|name,id,state,name,title,description,bpm:completionDate,bpm:workflowDueDate

La propriété connector.query.template permet de filter les workflows:

connector.query.template=startedAfter=%sZ

Les valeurs possibles sont:

 state,initiator,priority
 ,dueBefore,dueAfter,
 ,definitionId,definitionName,
 ,startedBefore,startedAfter
 ,completedBefore,completedAfter,exclude

Configuration du connecteur multiniveaux

Le « Connecteur de Multi-niveau » est un plugin du connecteur standard. Il permet d’extraire en format CSV les entités (produits finis, produits semi-finis), leurs listes « Compositions », « Emballages en multi-niveau » ainsi que les autres listes (nutriments, ingrédients, ext.). Ce plugin permet également d’extraire le niveau de chaque composant (produit semi fini, matière première) et sa quantité au niveau du produit.

En d’autres termes, le plugin permet d’extraire la composition d'un semi-fini présent dans la composition d’un produit fini, celle d’un semi-fini présent dans la composition d’un autre semi-fini et ainsi de suite. De plus, il permet d’afficher le niveau de chaque composant.

Exemple :

Composition d’un produit fini :

Calcul de la quantité de semi-fini au niveau du produit

Le niveau du Semi-fini C est égal à 3. Ainsi, pour calculer sa quantité au niveau du produit, il faut commencer par calculer la quantité de Semi-fini B au niveau du produit en appliquant la règle de trois :

QTE de Semi-fini B = (Poids du Semi-fini B / Poids du Semi-fini A) * Pois de Semi-fini A au niveau du produit 
  • Poids du Semi-fini A = Somme des ses composants et on peut la trouver aussi dans les caractéristiques formulées

  • QTE de Semi-fini B = (0.31 / 0.66) * 5 = 2,348 Kg.

Ce résultat est la quantité que vous utiliserez pour calculer la quantité de Semi-fini C, et ainsi de suite à chaque fois que vous descendez dans le niveau de composition.

Dans l’exemple :

  • La quantité de Semi-fini B au niveau du produit => après le calcul = 2,348 kg.

  • Le poids de Semi-fini B = 0,17 kg ;

  • La quantité de Semi-fini C utilisée dans la composition du Semi-fini B = 0,1 kg.

  • La quantité de Semi-fini C utilisée au niveau du produit = (0,1 / 0,17) * 2,348 = 1,381 kg.

Le raisonnement est le même pour calculer la quantité de matière première MP 3 au niveau du produit en utilisant cette fois le résultat 1,381 kg.

Le plugin multi-niveau permet également de calculer les valeurs suivantes :

  • Nombre de produits par emballage PCB.

  • Nombre de colis par palette dans chaque niveau d’emballage (primaire, secondaire, tertiaire).

  • La quantité d’emballage par produit c’est à dire la quantité d’emballage utilisée par unité de produit.

De plus, il met à disposition les valeurs des caractéristiques formulées (caractéristiques dynamiques). Documentation sur les caractéristiques formulées

Ces caractéristiques sont extraites et vous pouvez les afficher directement et/ou les utiliser pour faire des calculs comme expliqués dans la partie : les formules SPEL.

N.B : les noms de ces propriétés sont bien les noms renseignés dans l’application à l’exception près qu’il faut remplacer les espaces par un tiret du 8 ( ) et ajouter le préfixe **dyn** au début du nom.

Par exemple :

  • Nom de propriété : « qty en multiniveau ».
  • Nom extrait: « dyn_qty_en_multiniveau ».

Configuration

Comme dans le connecteur standard, pour activer le connecteur multi-niveau, il suffit de saisir la ligne suivante dans le fichier becpg-connector.properties :

connector.plugin.class=fr.becpg.connector.plugin.MultiLevelCSVVisitor

Cette ligne débute par un # dans le fichier de configuration qu’il faut supprimer.

Une fois que le plugin est pris en compte dans la configuration, vous pouvez modifier les fichiers qui seront extraits pour chaque type d'entité (Produit fini, matière première, etc). Chaque entité aura un mapping défini comme ceci :

mapping.document.bcpg_<type de l'entité> = <champs à extraire>

Configuration des entités à extraire

Sachant que le plugin est dédié aux 2 type d’entités (produit fini et produit semi-fini), les fichiers csv sont indisponibles pour les autres types d’entités (clients, fournisseurs, ext.).

Ainsi, la requête de recherche est assez similaire à la requête du connecteur standard. En revanche, dans ce cas, il n’y a pas besoin d’importer les entités de type client et fournisseur (supplier).

connector.query.template=(@cm\\:created:[%s TO MAX] OR @cm\\:modified:[%s TO MAX]) AND ( TYPE:\"bcpg:finishedProduct\" OR TYPE:\"bcpg:semiFinishedProduct\")

Les formules SPEL

Spring fournit un langage pour interroger et manipuler les objets Java. Grâce à SPEL vous pouvez personnaliser les colonnes qui seront affichées. Les formules ou les expressions utilisées pour faire des calculs ou des tests seront présentes dans le mapping de fichiers csv, que ce soit dans le mapping des entités ou dans le mapping des listes de données.

Exemple :

Pour calculer la quantité d’un composant par palette, on utilise la formules suivante :

formula|props["nbProductsPkgLevel3"]!=null ? props["nbProductsPkgLevel3"] * props["qty"] : props["qty"] 

Si la quantité de produits dans la palette (nbProductsPkgLevel3) n’est pas vide, multiplier cette dernière par la quantité de composants au niveau du produit. Sinon, afficher la quantité de composant au niveau du produit.

La création d’une formule dans une colonne nécessite trois parties :

  • Partie 1 : le mot formula (mot statique), utilisé pour dire que cette colonne est une formule SPEL.
  • Partie 2 : un trait vertical | ;
  • Partie 3 : la formule elle-même.

La formule la plus simple est d’afficher la valeur d’une propriété (standard, dynamique, calculé).

Exemple :

 formula|props["bcpg:erpCode"] 

Permet d'obtenir le code ERP de l'entité

La liste props contient quant à elle toutes les propriétés d’une entité ou d’une liste de données. Par la suite, vous pouvez récupérer la valeur d’une propriété en passant le nom de cette dernière entre 2 crochets : props[ "NOM_PROPRIÉTÉ"]

Pour faire des formules compliquées en utilisant des conditions :

 formula|props["qty"] != null ? props["qty"] / prop["bcpg:compoListQty"] : props["qty"] 

Ce qui signifie :

Si la propriété qty n’est pas vide (null), calculer le pourcentage (qty / compoListQty ). Sinon, afficher la qty

Dans les formules SPEL vous pouvez faire des opérations mathématiques, logiques ou personnaliser l’affichage de données.

N.B : des fonctions comme sum, avg, .. sont disponibles Pour échapper les caractères spéciaux , ou | il faut utiliser \, ou \|

Pour plus d’info sur le langage SPEL :

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/expressions.html

Utilisation

Sous linux, exécuter la commande suivante dans un terminal :

./becpg-connector.sh

Sous windows, double-cliquer sur le fichier becpg-connector.bat

Les fichiers csv sont créés dans connector.dest.path

Exemple de fichiers obtenus :

csv/:
bcpg_client.csv           bcpg_semiFinishedProduct.csv  compoList.csv  organoList.csv     physicoChemList.csv
bcpg_finishedProduct.csv  bcpg_supplier.csv             nutList.csv    packagingList.csv

results matching ""

    No results matching ""