Rapports et fiches techniques

Ce document présente le paramétrage et l'administration des exports de recherche (Excel ou BIRT) ou des rapports de fiches produits BIRT pour le logiciel beCPG. Elle est destinée aux administrateurs du logiciel beCPG.

Pré-requis :

  • Eclipse Birt,
  • Du plugin eclipse RessourceBundle,
  • DE connaissances de base sur :
    • XPATH (optionnel),
    • Javascript
  • D'un accès en mode admin au PLM.

Les Exports de recherche


Exports de recherche : EXCEL


Les exports de recherche Excel sont faciles à créer.

Un fichier Excel correspond à un seul type d'entité (produit fini, MP, ...)

Il comprend plusieurs onglets. Chaque onglet correspond à une liste de l'entité (propriété, ingrédients, composition, ....). Le premier onglet correspond toujours à la liste propriété de l'entité. C'est au niveau de ce premier onglet que vous devez définir le type d'entités sur lequel porte votre recherche.

C'est à vous de définir : quelle entité, quelles listes et quels champs vous interessent.

Pour pouvoir créer votre fichier, vous allez avoir besoin de connaître les noms des champs internes à beCPG (voir Comment retrouver les champs internes à beCPG ?

Premier onglet

Définir le type d'entités :

Quelque soit l'onglet, il y a aura toujours une information dans la case A1 de votre fichier EXCEL.

Dans le cadre du 1er onglet :

  • A1 : TYPE
  • A2 : le type d'entité sur lequel porte votre recherche (bcpg:finishedProduct, bcpg:rawMaterial, ...)
TYPE bcpg:finishedProduct
COLUMNS cm:name bcpg:code bcpg:erpCode bcpg:productHierarchy1 bcpg:productHierarchy2
# Nom Code Code Becpg Code ERP Famille Sous famille

Autres onglets

Sur les onglets suivants vous pouvez extraire les datalists de l'entité soit le contenu des différentes listes.

  • A1: TYPE
  • A2: La liste sur laquel porte votre extraction

Exemple la liste "Composition"

TYPE bcpg:compoList
COLUMNS bcpg:erpCode bcpg:compoListProduct bcpg:compoListProduct_bcpg:productHierarchy1
# Code Erp Composant de la recette Famille du composant

Spécificités

Vous pouvez utiliser le prefix entity_ pour afficher des propriétés de l'entité dans les onglets de type datalists.

  • Export des datalists en colonne

Depuis la version 2.5, il est également possible d'afficher les datalists d'une entité en colonne, c'est-à-dire que vous n'aurez plus besoin de créer plusieurs onglets pour avoir les éléments d'une datalist liés à un produit. Avec ce nouvel export, vous aurez les champs de votre entité suivis des éléments de la datalist sur la même ligne.

Formule à utiliser :
nom_de_la_datalist [ nom_de_l'association # élément_de_recherche == " valeur_de_recherche " ]_ champ_a_afficher

Exemple:
Export de la présence fortuite de l'allergène "Soja et produits à base de soja" des produits finis

bcpg:allergenList[bcpg:allergenListAllergen#bcpg:allergenCode == "FX5"]_bcpg:allergenListInVoluntary

TYPE bcpg:finishedProduct
COLUMNS cm:name bcpg:code bcpg:erpCode bcpg:allergenList[bcpg:allergenListAllergen#bcpg:allergenCode == "FX5"]_bcpg:allergenListInVoluntary
# Nom Code Becpg Code ERP Présence fortuite de soja et produits à base de soja
  • Les caractéristiques dynamiques :

Dans les listes composition, emballage ou la liste des process, il est possible d'avoir des caractéristiques dynamiques. Si vous souhaitez la liste des caractéristiques dynamiques, par entité :

TYPE bcpg:dynamicCharactList
COLUMNS bcpg:code bcpg:dynamicCharactTitle bcpg:productHierarchy1 bcpg:productHierarchy2
# Code Becpg Caracteristiques dynamiques

Si vous récupérez la valeur d'une caractéristique dynamique spécifique de la liste composition par exemple, votre entête de colonne se construira de la manière suivante : dyn_nom_de_propriété

Exemple :

TYPE bcpg:compoList
COLUMNS bcpg:erpCode bcpg:compoListProduct dyn_nom_de_la_caract_dynamique
# Code Erp Composant de la recette nom de la caract dynamique
  • Multiniveaux et Formules

Pour les types bcpg:compoList et bcpg:packagingList vous pouvez utiliser des paramètres d'extraction multiniveau (AllLevel, MaxLevel2, OnlyLevel2) ainsi que des formules dont les entêtes de colonne se construiront de la manière suivante : formula|props["nom de la formule"] (exemple en indiquant dans l'entête de colonne : formula|props["qty"])

TYPE bcpg:compoList OnlyLevel2
COLUMNS bcpg:erpCode bcpg:compoListProduct bcpg:compoListProduct_bcpg:erpCode
# Code Erp de l'entité Produit Composant Code ERP du composant

Fonction tableur

Utiliser les résultats de vos recherches en intégrant un onglet supplémentaire avec des formules EXCEL (rechercheV, rechercheH, ....) Pour identifier l'onglet qui utilise la fonction tableur d'EXCEL, la première case (A1) doit contenir le symbole #.

Vous pouvez aussi définir une colonne en y insérant une formule EXCEL directement ou un texte du type:

excel|SUM(A1:A10)


Exports de recherche : BIRT


Uniquement pour les rapports : BIRT

  • La définition des données à exporter pour le rapport, est définit dans ExportSearchQuery.xml. Ce fichier définit les attributs du produit à exporter pour l'exécution du rapport :
    • propriétés du produit (nom, état, etc...);
    • associations du produit (fournisseurs, clients, etc...);
    • caractéristiques du produit (coûts, nutriments, allergènes, etc...).

Pour créer ou modifier un rapport BIRT, se référer au chapitre « Modification d'un modèle de rapport produit ».

Installation des exports de recherche

Ces rapports sont définis dans le dossier : /Système/Rapports/Exports de recherche

Ces rapports sont des rapports BIRT qui exportent le résultat d'une recherche.

L'ajout d'un nouveau rapport se fait ainsi :

  1. Ajouter un dossier;
  2. Dans le dossier, ajouter le rapport BIRT ou EXCEL en renseignant le nom et ses métadonnées. Le nom sera affiché sur la page de résultats d'une recherche avancée. L'extension du fichier doit être xls pour un rapport EXCEL et rptdesign pour un rapport BIRT.
  3. Définir les permissions sur le dossier du rapport. Les personnes doivent avoir la permission en lecture pour voir le rapport dans le résultat d'une recherche.

Comment retrouver les champs internes à beCPG

Les champs internes se trouvent à 2 endroits, sur les propriétés d'un produit et au niveau de sa liste (composition, emballage, etc).

Pour retrouver les champs internes liés aux propriétés, il faut effectuer une édition multiple :

Pour accéder aux champs internes liés aux listes :

Rapport fiche Produit

Cette vidéo présente la modification d'un rapport BIRT:



Installation


Les différentes versions de BIRT sont accessibles à cette page: http://download.eclipse.org/birt/downloads/

Version pour windows: http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/R-R1-4\_3\_0-201306131152/birt-rcp-report-designer-4_3_0.zip


Les rapports Fiche Produit


Il existe 2 types de rapports pour les fiches "Produit":

  • rapport système (toujours généré par le système, en automatique);
  • rapport utilisateur (choisi par l'utilisateur lorsqu'il édite le produit). Ce type de rapport est un rapport à la demande.

Les rapports de fiches Produit sont définis dans le dossier /Système/Rapports/Rapports de fiche produit.

L'ajout d'un nouveau rapport se fait ainsi (vous pouvez copier un rapport de produit) :

  1. Ajouter un dossier;
  2. Ajouter le fichier *.rptdesign puis éditer ses métadonnées :

Il est aussi possible de renseigner un type général. Le rapport avec le type général sera visible pour toutes les entités:

  • Type général : http://www.bcpg.fr/model/becpg/1.0 product
  • Le type de modèle:
    • Modèle système pour indiquer si le rapport est généré automatiquement pour ce type de produit. Dans le cas où ce rapport n'est pas un rapport système, l'utilisateur doit le sélectionner lorsqu'il édite le produit.
    • Modèle par défaut, pour indiquer que le rapport est le rapport par défaut du produit, c'est à dire, que ce sera le rapport affiché lorsque l'on sera sur la fiche du produit. Il ne peut y avoir qu'un rapport par défaut pour un type de produit. Les rapports qui ne sont pas des rapports par défaut sont mis dans le dossier « Documents » du produit lors de la génération du rapport.
  • L'extension du rapport

Lorsqu'un produit est créé ou édité, le système génère un rapport par modèle de rapport associé au produit.


Modification d'un modèle de rapport produit


Chaque rapport beCPG possède un modèle BIRT dont l'extension est *.rptdesign.

Introduction à BIRT

Environnement Birt

beCPG se base sur la solution de reporting BIRT (Business Intelligence and Reporting Tools).

  • Reporting: synthétiser des données sous forme de rapports.

  • BIRT: Un outil de reporting "Open Source" reposant sur Eclipse. Un outil graphique, c’est-à-dire qu’il dispose d’une palette permettant de sélectionner l’élément devant être placé sur le rapport.

Le rapport BIRT peut être connecté avec une base de données afin de pouvoir afficher le résultat d’une requête sur une feuille de travail. Pour cela, il est nécessaire d’ajouter une « Data Source » permettant de se connecter à la base de données.

Ensuite, une « Data set », contenant la requête, est ajoutée pour générer des requêtes statiques mais aussi dynamiques en ajoutant des paramètres modifiables lors de l’exécution du rapport.

Le « Data cube » permet de créer un tableau croisé. Cela permet notamment l’affichage de données par colonne et le calcul du total automatique pour les statistiques.

L'exécution d'un rapport beCPG se fait ainsi :

  1. Génération de la source de données XML par le moteur beCPG
  2. Chargement du modèle BIRT
  3. Exécution du rapport qui donnera une sortie .pdf, .docx, ou .xlsx

Design du rapport

Le design du rapport se fait dans le designer Eclipse où l'on trouve :

  • La boite à outil (Palette) qui fournit des contrôles de rendu tels que : des tableaux, listes, zone de texte etc...
  • La source de données XML (Data Explorer);
  • La mise en forme du rapport (Layout);
  • La page maître (Master page): pour modifier l'entête et le pied de page;
  • La prévisualisation du rapport (Preview).

Le paramétrage d'un rapport consiste donc à :

  • disposer les contrôles de rendu zone de texte, tableau
  • définir où seront placées les données via du drag 'n drop des attributs de la source de données, dans le rapport.

Création du rapport

  1. Window > Open perspective > Other > Report Design
  2. File> New> Project> Business Intelligence and Reporting Tools> Report project, puis nommer le projet.
  3. File> New> Report puis nommer le rapport et choisir la trame de départ.

Exploration des données (Data Explorer)

Pour explorer les données, il faut sélectionner l'onglet « Data Explorer ».

Un exemple de source de données XML est :

<entity name="Assortiment 8 sushis" code="1009"
    store-identifier="SpacesStore"
    productQty="0.200" productUnit="kg" productState="ToValidate"
    productEAN="8001456682" 
/>

L'XML peut être obtenu via l'API beCPG:

Avec :

  • {@SERVEUR} : Adresse IP du serveur,
  • {PORT} : Le numero du port de communication (optionnel),
  • {NODE_REF} : identifiant d'un produit (disponible dans l'url du navigateur quand on est sur un produit sous la forme 'workspace://SpacesStore/2aad6284-afc2-4d89-8bbf-bd3dd50ff1bc').

Cette url affiche l'XML qui peut être sauvegardé sur son pc en faisant "sauvegarder sous".

Pour indenter l'XML: xmllint --format datasource.xml > datasource-pretty-print.xml

Choix de la source de données (datasource)

Pour modifier une source de données, voici la procédure à suivre :

  • Data explorer> Data source> New data source;
  • Sélectionner « XML Data Source » ;
  • Clic droit, « Edit »;
  • Faire Browse pour aller chercher la data source;
  • Sélectionner le XML sauvegardé sur son pc;
  • Cliquer sur « Test connection » et renseigner le compte et mot de passe de l'admin.
  • Sii « Ping succeedeed » apparait, c’est OK.
  • Appuyer sur « Finish ».

Choix du XML

Data Sets

Les dataset permettent de requêter la datasource et de sélectionner les attributs.

  1. Data set> New data set puis cliquer sur la data source précédemment rentrée et cliquer sur OK.
  2. Sélectionner la donnée à requêter (XPath qui permet de sélectionner les nœuds XML qui alimentent le dataset)
  3. Sélectionner les attributs des nœuds XML qui alimentent les colonnes du dataset

Ajout d'une propriété

Il est possible de prévisualiser le contenu du dataset en cliquant sur "Preview results". Une fois que le dataset est paramétré, il faut glisser déposer ses données dans le rapport.

Vue du rapport

Les vues de rapport sont sélectionnées par les onglets en bas de la section principale

Layout

Permet de construire le rapport :

  • Ajout des contrôles
  • Ajout des données

Page maître (Master page)

La page maître permet de renseigner :

  • Les entêtes et pieds de page du rapport
  • la largeur, la hauteur du rapport

Script

Il est possible de programmer des fonctions utilisables dans le rapport en les stockant dans l’onglet « Script ». Ces scripts peuvent être exécutés à différente étape d'exécution du rapport selon l'évènement. Un script peut être définit sur un élément précis ou sur le rapport.

XML Source

  • Affiche le XML du rapport.

Preview

  • Affiche la prévisualisation du rapport, comme s'il était exécuté par beCPG: Run> View report> Format de sortie (PDF).

Palette de contrôles

La palette est sélectionnée par l'onglet « Palette ». Cela permet notamment d'ajouter un texte en dur.

  • Contrôles disponibles

    • Label : à utiliser par défaut pour afficher du texte statique,
    • Text
    • Dynamic Text: texte dynamique. Exemple : pour mettre en gras des mots sur l’étiquette, on utilise des balises HTML,
    • Data : Rarement nécessaire car les données sont ajoutées depuis Exporer data
    • Image
    • Grid : tableau statique (on peut mettre des tables dedans),
    • List : liste dynamique en fonction du nombre de ligne du dataset,
    • Table : tableau dynamique en fonction du nombre de ligne du dataset (on peut mettre des listes dedans),
    • Chart : graphique,
    • Cross tab : tableau croisé dynamique.
  • Ajout d'un contrôle dans le rapport

L'ajout d'un contrôle se fait par glisser-déposer.

  • Ajout d'une image

L'ajout d'une image statique est simple.

L'ajout d'un image dynamique est plus complexe, il s'agit du cas où le moteur beCPG récupère une image associée au produit et l'envoie à la datasource du rapport lors de l'exécution. La procédure est la suivante :

  • Ajouter l'image
  • Dynamic Image en référençant l'id de l'image passé à la datasource, ex : row["productImage"]
  • Expression pour les champs de type données

Les champs de type données peuvent être soumis à des conditions ou être la concaténation de plusieurs attributs, ex : "Emballage : " + dataSetRow["palletBoxName"] + ", tare indicative (g) : " + dataSetRow["pmBoxTare"] + ", dimensions (mm) : " + dataSetRow["pmBoxDimensions"]

Pour éditer cette mise en forme, il faut faire :

  1. Clic droit sur l'attribut data
  2. Edit Value/Expression
  3. Renseigner l'expression

Visibilité

Il est possible de masquer des champs ou des images selon des conditions. Pour cela, il faut :

  • Afficher les propriétés du contrôle
  • Sélectionner l'onglet Visibility
  • Renseigner l'expression qui indique quand masquer le contrôle

Mise en forme

Il est possible de définir des styles de mise en forme dans un rapport, pour cela :

  • Clic droit sur un contrôle
  • Style => New Style

Ensuite, les styles peuvent être appliqués aux contrôles, édités ou supprimés en faisant un clique droit sur un contrôle, puis Style.


Déploiement


Une fois le rapport édité sous eclipse, le sauvegarder au format .rptdesign.

  1. Fiches techniques: se place dans Entrepôt> Système> Rapports> Rapports de fiche produit> Entité et déposer le rapport
  2. Fichiers de langues (properties): se place dans Entrepôt> Système> Rapports> Rapports de fiche produit et déposer le rapport

Pour les fichiers .rptdesign > Changer le type > Modèle de rapport

Dans "Editer les propriétés":

  • Cocher Modèle système si le rapport doit être attribué à tous les produits de même type.
  • Cocher Modèle par défaut s'il existe plusieurs modèles et que celui-ci doit être affiché par défaut.
  • Si rien n'est coché, il faudra aller dans le produit concerné et sélectionner le rapport à la main via le bouton "paramètres rapport"

Pour que le rapport soit traduit en différentes langues, sélectionner des fichiers de langues associées. Sélectionner également les différentes langues concernées dans la liste déroulante. Puis sélectionner les différentes langues dans les 'paramètres rapport' d'un produit.

Rapport JXLS


Présentation du rapport JXLS


Le format JXLS est utile pour pouvoir réaliser un rapport de format libre, directement depuis un éditeur de fichier XLSX comme Excel. Ce type de fichier est basé sur l'utilisation de formules SpEL pour l'extraction des données.

Cette fonctionnalité a été ajoutée à beCPG 3.2.1 - 13/02/2020

Pour en savoir plus: http://jxls.sourceforge.net/


Paramétrage


Voici un exemple de fichier JXLS :

Utilisation des notes

Les notes jouent un rôle très important dans le fichier JXLS. Il faut en effet les utiliser dans 3 situations :

  • La définition du fichier et des formules

Cette note est obligatoire et est mise généralement dans la cellule A1.

Dans notre exemple, où les formules s'appliquent de A1 jusqu'à E20:

jx:area(lastCell="E20")
  • Les datalists

Pour les datalists, la note doit être mise sur la case de la première colonne. Dans notre exemple, pour la datalist composition, elle est mise en A14. Cette note sert à définir la datalist à exporter et à délimiter la dernière cellule à considérer comme faisant partie de la datalist. Dans notre exemple, il s'agit de B14.

jx:each(items="compoListView.compoList" var="dataListItem" lastCell="B14")

La valeur associée à items dépend de la datalist à exporter. Ici, il s'agit de la liste composition, mais pour la liste packaging cela devient :

jx:each(items="packagingListView.packagingList" var="dataListItem" lastCell="B14")

La valeur de var est TOUJOURS "dataListItem".

Il est également possible de faire des exports de datalists en colonne en rajoutant direction="RIGHT", comme pour l'export Nutriments de notre exemple :

jx:each(items="nutList" var="dataListItem" lastCell="A20" direction="RIGHT")

Il est également important de noter que lors de l'export, les dimensions des tableaux vont automatiquement s'effectuer : si une datalist a 3 valeurs, alors l'export va considérer 3 lignes et décaler l'ensemble de 3 lignes. Donc, pas de risque de chevauchement.

  • Les images :

La note sert ici à définir les dimensions de l'image en cellule et d'appeler l'image à exporter. Dans notre exemple :

jx:image(lastCell="E8" src="IMG_Img0" imageType="PNG")

Le nom dans src est toujours précédé par "IMG_".

L'export des champs

L'export des champs se fait en SpEL, donc les formules doivent être comprise entre :

${...}

Comme par exemple pour l'export du code beCPG:

${@beCPG.propValue(nodeRef,'bcpg:code')}

Merci de lire la section SpEL de notre documentation pour savoir comment l'utiliser.

https://docs.becpg.fr/fr/development/spel_formulas.html


Déploiement


Une fois que le fichier XLSX est terminé, il faut le déployer. Pour ce faire, il faut suivre la même procédure de déploiement que pour les rapports BIRT, en choisissant XLSX comme format de rapport, et en renommant l'extension en .jxls.

ATTENTION : à chaque fois que vous allez mettre à jour le rapport, le fichier reprendra l'extension .xlsx : il faudra remettre manuellement le bon format, .jxls.

Extracteur


Paramétrage de l'extracteur (Partie 1)


Introduction

L'extracteur permet de créer la datasource. La version 2.1 de beCPG offre la possibilité d'extraire des données spécifiques via des paramètres prédéfinis.

Les paramètres se placent dans le fichier [instance]/becpg/classes/beCPG.properties. Les paramètres avec un astérisque, dans le titre, peuvent prendre plusieurs valeurs, les valeurs doivent être séparées par une virgule ",".

Paramètres

  • becpg.reportServerUrl : Ce paramètre permet d'indiquer le serveur sur lequel se trouve le module BIRT.

  • beCPG.report.name.format : Ce paramètre indique au module BIRT, comment codifier le nom du rapport généré.

    • Valeur par défaut:

      beCPG.report.name.format={entity_cm:name} - {report_cm:name} - {locale}

  • beCPG.entity.report.mltext.fields {#beCPG-entityreportmltextfields} : Permet d'extraire toutes les langues saisies d'un champs.

Exemple: Si le champs nom légale (bcpg:legalName) est saisie en 2 langues (anglais et français), et qu'il faut afficher ces 2 langues dans le rapport, la configuration nécessaire est la suivante :

> beCPG.entity.report.mltext.fields=bcpg:legalName
  • beCPG.product.report.multiLevel {#beCPG-productreportmultiLevel} : Permet d'activer l'extraction en multi-niveau. Elle peut prendre 2 valeurs possibles, 'true' et 'false'.

    • Exemple : Si ce paramètre est :

    • Faux : seuls les éléments de niveau 1 sont remontés (voir image ci-dessous, encadré en rouge).

    • Vrai : les éléments de tous les niveaux sont remontés.

- Valeur par défaut:
> beCPG.product.report.multiLevel=false
  • beCPG.product.report.priceBreaks {#beCPG-productreportpriceBreaks} : Permet d'afficher la liste coût en fonction des quantités d'achats. Elle prend 2 valeurs possibles, 'true' et 'false'.

Par défaut, sa valeur est à faux.

  • beCPG.product.report.assocsToExtract {#beCPG-productreportassocsToExtract} : Les champs 'Titre' et le champs 'Clients' sont des propriétés d'un produit fini; le premier est une propriété simple et la seconde est une propriété associée (association). Par défaut, l'extracteur remonte uniquement le champs 'name' de l'association mais il arrive que l'on veuille récupérer toutes les données d'un client ( adresse, Tel, Fax, etc). Pour ce faire, ce paramètre permet d'extraire sur un produit, toutes les propriétés d'une association.

    • Valeur par défaut:

      beCPG.product.report.assocsToExtract=bcpg:plants,bcpg:suppliers,bcpg:storageConditionsRef,bcpg:precautionOfUseRef

  • beCPG.product.report.assocsToExtractWithImage {#beCPG-productreportassocsToExtractWithImage} : Un Produit Fini possède une propriété 'Clients', qui permet d'associer une entité client au produit. Par défaut, l'extracteur ne remonte pas les images du client lors de l'extraction du produit Fini. Pour ce faire, ce paramètre permet d'indiquer à l'extracteur qu'il faut remonter les images du client dans la datasource.

Exemple: Pour remonter les images du client, passer la valeur bcpg:clients:

> beCPG.product.report.assocsToExtractWithImage=bcpg:clients

Valeur par défaut:

> beCPG.product.report.assocsToExtractWithImage=
  • beCPG.product.report.assocsToExtractWithDataList {#beCPG-productreportassocsToExtractWithDataList} : Similaire à "beCPG.product.report.assocsToExtract" mais permet d'extraire la dataList d'une association.

    • Valeur par défaut:

      beCPG.product.report.assocsToExtractWithDataList=

  • beCPG.product.report.componentDatalistsToExtract {#beCPG-productreportcomponentDatalistsToExtract} : Un composant peut être une "Matière Première" (MP), un Semi-Fini (SF),un "Emballage" ou un "Kit Emballage". Un produit contient des composants dans chacune de ses listes (Compositions, Emballages, etc). Lors d'une extraction simple, les composants sont extraits sans leurs Listes. Ce paramètre rend possible l'extraction des listes des composants.

    • Exemple : La configuration suivante permet d'extraire la dataList des composants de la composition d'un produit :

      beCPG.product.report.componentDatalistsToExtract=bcpg:compoListProduct

    • Valeur par défaut:

      beCPG.product.report.componentDatalistsToExtract=


Paramétrage de l'extracteur (Partie 2)


Introduction

Comme vous avez pu le constater, le paramétrage de l’extracteur se fait dans le fichier beCPG.properties et nécessitait le redémarrage du serveur pour prendre en compte la nouvelle configuration.

Aujourd’hui, depuis la version 2.2.2, il est possible de paramétrer l’extracteur de rapport directement dans le PLM et sans avoir besoin de redémarrer le serveur.

Principes

BeCPG est installé sur un système avec une configuration par défaut de l’extracteur (beCPG.properties). Cette configuration peut être surchargée via le nouveau champs Paramètres texte situé dans le formulaire d’édition de propriété d’un rapport. (voir encadré vert de l’image ci-dessous).

Cette surcharge de configuration ne nécessite pas le redémarrage du serveur et est prise en compte immédiatement pour les prochaines extractions.

Paramètre texte contient un objet JSON qui comprend une liste de clés.

Voyons en un 1er temps la liste des clés disponibles puis en un second temps, leurs rôles et pour finir , un cas d’utilisation.

Liste des clés

  • iterationKey
  • params
  • prefs
    • extractInMultiLevel
    • componentDataListsToExtract
    • extractPriceBreaks
    • mlTextFields
    • assocsToExtract
    • assocsToExtractWithDataList
    • assocsToExtractWithImage
  • nameFormat
  • titleFormat

Rôle des clés

iterationKey : permet de spécifier sur quelle liste il faut effectuer une itération sur chaque composant qu’elle contient. Elle est utilisée en partenariat avec la clé params.

params : est un tableau de paramètres. Chaque paramètre comporte 2 clés :

** id :** est un nom d’une variable donné arbitrairement pour pouvoir l’exploiter avec d’autre clés, tel que nameFormat et titleFormat.

** prop :** permet de spécifier la valeur à récupérer pour la stocker dans id.

prefs : est un objet et permet de régler le comportement de l’extracteur. La liste des paramètres pris en compte est :

REMARQUE : POur voir les rôles, voir Extracteur - Partie 1

nameFormat : permet de codifier le nom du rapport PDF. Par défaut, la codification est la suivante : {entity_cm:name } - {report_cm :name} - {locale} : ce qui donne «Quiche Lorraine – Fiche technique - fr» pour le PF Quiche Lorraine.

Exemple : Si l’on souhaite faire apparaître le code beCPG d’un composant de la composition, nameFormat aura la valeur : {entity_cm:name} – {report_cm:name} - {locale}– {param1} {param1} est une variable qui est définit dans le JSON, nous verrons comment la définir lors du Cas d'utilisation.

titleFormat : permet de codifier le nom du rapport placé dans la liste des rapports. La liste des rapports générés se trouve dans la liste Fiches techniques d’une entité.

Cas d'utilisation {#cas-dutilisation}

Prenons l’exemple d’un fournisseur qui possède plusieurs usines et vous avez besoin de générer un rapport par usine pour ce fournisseur. Chaque rapport doit contenir dans leur nom, le nom de l’usine en question. Pour se faire, vous aurez au préalable créé la liste «Fiches Techniques» sur le modèle fournisseur. Une fois, le rapport fournisseur crée et déployé il vous reste à placer dans paramètre texte le JSON suivant afin de terminer la configuration du rapport :

{
   iterationKey : "bcpg:plant",
   params : [{
      id: "param1",
      prop : "cm:name"
   }],
   prefs : {
      assocsToExtract : "bcpg:plants,bcpg:suppliers,bcpg:storageConditionsRef,bcpg:precautionOfUseRef,bcpg:nutListNut",
      assocsToExtractWithDataList : "bcpg:compoListProduct"
   },
   nameFormat : "{entity_cm:name}- {report_cm:name}  - {locale} - {param1} ",
   titleFormat : " {report_cm:name} -  {locale} - {param1}"
}

Puis à générer les rapports du fournisseur.

À savoir

  • Le tableau params s’utilise avec la clé iterationKey. Il est donc inutile d’utiliser l’un sans l’autre.
  • Si vous avez surchargé une clé (mlTextfields, assocsToExtract,…) et que vous l’enlevez du Paramètre texte, l’extracteur utilisera la valeur par défaut.

  • Les Paramètres définis dans la clé params du JSON sont extrait dans la dataSource (XML) du rapport.

Exemple :

  • Si vous avez params qui vaut :
{
   ...
   params : [{
      id: "nomUsine"
      prop: "cm:name"
   },
   {
      id: "nomCertifUsine"
      prop: "bcpg:plantCertifications|cm:name"
   }],
   ...
}

Le Noeud XML correspondant au résultat du paramètre JSON sera :

<entity>
...
<reportParams>
   <nomUsine nodeRef="workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143" prop="cm:name" value="Usine XY"/>
   <nomCertifUsine nodeRef="workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143" prop="bcpg:plantCertifications|cm:name" value="Certification X1"/>
</reportParams>
</entity>

Remarquez que :

  • Le nom du noeud est la valeur spécifiée dans id.
  • L'attribut nodeRef est le nodeRef du composants courant.
  • L'attribut prop est la chaîne de texte saisie dans le JSON.
  • L'attribut value est la valeur stockée dans "nomUsine".

Il existe 2 solutions pour récupérer la dataSource contenant le noeud reportParams. La 1ère est d'activer le mode debug en Java. La 2nd est de consulter l'attribut rep:reportTextParameters du noeud du rapport généré.

Nous allons voir la seconde solution, moins lourde à effectuer :

Après avoir configuré le rapport et l'avoir généré :

  1. aller dans le dossier Document** de l'entité (fournisseur dans notre exemple)
  2. cliquer sur un rapport PDF.
  3. récupérer le nodeRefs du document PDF
  4. retrouver le document via le navigateur de noeud. (Pour savoir comment récupérer un nodeRef et utiliser le navigateur de noeud, lire ceci. Une fois sur le noeud du document, son attribut rep:reportTextParameters contient un JSON sous la forme :
{
  "titleFormat":" {report_cm:name} - {nomUsine} - (fr - {locale} )",
  "nameFormat":"{entity_cm:name} - {report_cm:name} - {nomUsine} - (fr - {locale} )",
  "params":[
    {
      "nodeRef":"workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143","prop":"cm:name","id":"nomUsine","value":"Usine XY"
    },
    {
      "nodeRef":"workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143","prop":"bcpg:plantCertifications|cm:name","id":"nomCertifUsine","value":"Certification X1"
    }
  ],
  "prefs":{...}
  ...
}

Avec le système de correspondance vous êtes en mesure de reconstituer le noeud XML [reportParams>]{style="text-align:left;"} pour vos tests en local.


Paramétrage de l'extracteur (Partie 3)


Filtrage de données

1- Filtrage par sous-type de rapport :

Ce filtrage vous permettez de masquer les lignes d’une liste dans un rapport.

Au début il faut ajouter les sous-types de rapport dans la liste : Sous-type de rapport\ Administration beCPG >Listes de valeurs >Sous-types de rapport

Ensuite, déclarer le sous-type de rapport sur les modèles de rapport

Le mécanisme de filtrage par sous-type de rapport se base sur l'ajout d'une nouvelle colonne sous-type de rapport dans une liste

Exemple : Dans la liste "nutriments" on peut masquer les nutriments selon l’algorithme suivant :

Par défaut le système affichera les nutriments dans tous les rapports si le sous-type de rapport n’est pas choisi sur une ligne (nutriment). Une fois vous cochez le sous-type de rapport sur une ligne de nutriment, les autres lignes seront masquées dans le rapport.

2- Filtrage par les paramètres rapport

Vous pouvez masquer une liste, une propriété ou un élément d’une liste dans tous les rapports ou dans un sous-type de rapport spécifique\ Dans la liste Paramètres rapports vous ajoutez des paramètres sous forme de :

[show/hide]#[(reportKind|optionnel)]#[listName/propertyName/assocName]

show : selectionné , affiche l'élement (par défaut ce dernier est masqué)

hide : selectionné , masque l'élement (par défaut ce dernier est affiché)

reportKind : c’est une option pour dire dans quel modèle de rapport vous allez masquer ou afficher l’élément.

La dernière partie c’est le nom de l’élément que vous voulez masquer et qui peut être une liste, une propriété ou une association

NB : Pour les propriétés de l’entité il faut spécifier le préfixe exemple : cm_name mais ce n'est pas le cas pour les noms des listes ou le nom d'une colonnes (propriété d'une liste). Pour les noms des listes, mettre un "s" à la fin. Exemple: allergenLists

Maintenant il ne vous reste qu'à cocher les paramètres sur votre produit (entité).\ Fiches techniques >Paramétrer les rapports

Création d'une liste "Fiches Techniques" et création d'une liste "Documents"


Introduction


Les entités (Produit-Fini, Matière Première, etc) possèdent des listes par défaut ("Fiches Techniques", "Composition",...). Certaines entités n'en possèdent pas certaines, par exemple, la liste "Fiches Techniques" pour le Fournisseur.


Procédure


Pour rajouter une liste "Fiches Techniques" sur le modèle Fournisseur, il faut :

1. Sélection le modèle "Fournisseur" situé dans "Entrepôt > Système > Modèles d'entités" .

2. Cliquer sur "Nouvelle liste" (cf image ci-dessous, encadré en rouge) puis dans la liste des types, sélectionner "Vue personnalisée" (cf image ci-dessous, encadré en vert).

\

3. Puis remplir les champs du formulaire avec le même valeur que l'image ci-dessous puis enregistrer:

La nouvelle liste Fiches Techniques est ainsi créée.

4. Si vous souhaitez créer une liste document (si elle n'existe pas encore), la procédure est la même. Il faut simplement modifier à cette étape les champs suivant : "Nom de la vue personnalisé", mettre : View-documents

"Titre", mettre : Documents

Bonnes Pratiques - BIRT


Dans la section Rapports et fiches produits vous vous êtes familiarisé avec le Designer Birt. Notamment avec les onglets: explorateur de données (contient les jeux de données, la dataSource, etc), la Palette (contient les éléments label, grille, image,…), le Layout (vue permettant la mise en forme).

Durant vos divers utilisation de Birt Designer, vous avez sûrement remarqué l’onglet Outline qui côtoie l’onglet navigateur. Cet onglet, présente la structure du rapport, (cf: image ci dessous).

Ce recueil de bonne pratique abordera certaines sections présent dans la structure.


Déclaration d'une fonction


Il y a des cas où un développeur déclare une même fonction dans plusieurs éléments (text, data, Dynamic text,...) du rapport. Procéder de cette manière alourdit le rapport et lorsqu'une maintenance est effectuée sur cette même fonction, cela entraîne une modification sur chaque élément qui la contient.

Afin d'optimiser le temps de maintenance, la meilleur façon de procéder est mutualiser la fonction dans l'événement "Initialize" du rapport. La fonction est alors disponible dans tout le rapport.

Avantage de la mutualisation d'une fonction :

  • Rapport moins lourd via l'absence de la duplication de fonction.
  • Réduction du temps de maintenance.

Utilisation d'Alias


L’utilisation d’un Alias au niveau des champs d’une dataSet s’avère utile lorsque la clé d’un champs diffère trop du nom affiché au client. L’utilisation de l’alias permet de gagner du temps lorsqu’il faut chercher un champs pour un traitement spécifique.


Gestion des images dans Birt


Afin de minimiser la taille du rapport, s'assurer qu'après chaque modification de rapport, que toutes les "images intégrées" non utilisées, soient supprimées.

Pour une raison d'efficacité, effectuer la suppression, l'ajout et le renommage d'image via l'onglet Outline d'éclipse.


Gestion des scripts (événement)


Birt offre la possibilité de définir des script JS, à différent niveau d'événement (Initialize, onPrepare, onRender,...). Lorsqu'un événement contient du code, l'événement s'affiche alors dans la section Scripts de l'onglet Outline. Il est alors possible d’avoir une vision globale de tous les éléments du rapport, ayant un script associé à un événement.

Avant la livraison d’un rapport, vérifier qu’aucun script, non utilisé, reste dans le rapport.

Pour en savoir plus sur les événements et scripts BIRT, lire cette documentation .


Excel


Lorsque la présence de tableau (Grille ou Table) imbriqué est couplé avec des conditions de visibilité pour certaines cellules, il est possible, lors de la génération du rapport, qu'un décalage de colonne se présente pour certaines données.

Il est donc conseillé d'éviter au maximum l'imbrication de tableau (Grille ou Table) afin de garder un contrôle sur le rendu.

results matching ""

    No results matching ""