Extraire dynamiquement les valeurs métier des traces

Extraire dynamiquement les valeurs métier des traces

Objectif(s)

Limiter le travail des développeurs, en faisant en sorte que le moteur de EFR puisse s’occuper d’extraire les clefs métier des traces, sans que le développeur n’ait à les expliciter.

Principe

Par défaut, les clés métiers sont communiquées dans la trace envoyée epar API. cf. Publier des traces de transport

Toutefois, il est possible de déléguer l’extraction à EFR. Ainsi, toutes les traces d’une même médiation seront lues et interprétées. Le body ou les headers du message peuvent être la source de ces clés métier.

Si l’analyse est conforme, la valeur extraite sera ajoutée aux clées métiers de la trace.

Démarche

Dans la vue d’une médiation, utiliser la vue tabulaire pour se rendre sur “Clefs métier”.

image-20250401-132348.png
Onglet correspondant dans la vue d’une médiation.

En cliquant sur une bouton “Ajouter une clef métier”, le dialogue suivant apparaîtra :

image-20250401-132451.png
Dialogue de configuration d’une nouvelle extraction de valeur métier
  • Le nom est le nom de la clef métier qui sera créée. Elle doit être unique au sein de la médiation.

  • La source désigne l’origine de la valeur métier à extraire. Il s’agit soit du body, soit des headers.

  • La technologie désigne quel sera le moyen d’extraire la donnée de la source.

    • Le jsonpath permet de sortir des données JSON avec le langage JSONPATH.

    • Le xpath traite du XML avec le langage XMLPATH.

    • Le csv_with_header extrait un contenu CSV en utilisant le header pour les noms de colonnes,

    • Le csv_without_header extrait un contenu CSV en utilisant l’alphabet pur les noms de colonnes.

    • le mode none conserve l’intégralité de la valeur fournie.

  • Le chemin va paramétrer la technologie afin d’extraire la valeur dans la source.

    • Dans le cas où la source est le body, et dans le cas de la technologie jsonpath ou du xpath, la valeur attendue sera de la forme $.foo ou //foo. Si la technologie est “none”, le chemin sera sans effet.

    • Dans le cas où la source est les headers, alors le chemin est le nom du header à lire. La technologie sera ignorée.

Cas spécifique du CSV

Il n’existe pas de formalisme pour le CSV. Celui-ci est donc transformé en JSON pour être interprété.

Les noms des champs utilisés sont pour:

  • csv_with_header: la 1ere ligne du CSV contient les noms des colonnes ;

  • csv_without_header: utilise l’alphabet pour déclarer des noms de colonnes. Comme sur Excel, les colonnes commencent à A, vont jusqu'à Z. La limite est de 27 colonnes.

Principe de transformation:

  • Un fichier CSV contient N lignes. Un tableau est la base à manipuler.

  • Chaque colonne est un élément à plat.

  • La liste des séparateurs est: “;” , “,” et “|”.

Exemple csv_with_header:

Version CSV

colonne1;colonne2;colonne3 A;B;Facture-110 A;B;Facture-abc A;B;Facture-xyz

Version transformée en JSON

[ { colonne1:A, colonne2:B ,colonne3:Facture-110 }, { colonne1:A, colonne2:B ,colonne3:Facture-abc }, { colonne1:A, colonne2:B ,colonne3:Facture-xyz } }

Exemple csv_without_header:

Version CSV

001;abc;Facture-110 002;abc;Facture-abc 003;def;Facture-xyz

Version transformée en JSON

[ { A:001, B:abc ,C:Facture-110 }, { A:002, B:abc ,C:Facture-abc }, { A:003, B:def ,C:Facture-xyz } }

Exemples

Technologie

Message

Configuration

Résultat

Technologie

Message

Configuration

Résultat

XML

<content> <a>A</a> <b>B</b> <bp>Facture-110</bp> </content>
  • nom: Facture

  • source: BODY

  • Chemin: /content/bp

  • Facture: Facture-110

JSON

{ "a": "A", "b": "B", "bp": "Facture-110" }
  • nom: Facture

  • source: BODY

  • Chemin: $.bp

  • Facture: Facture-110

CSV_WITH_HEADER

colonne1;colonne2;colonne3 A;B;Facture-110 A;B;Facture-abc A;B;Facture-xyz
  • nom: Facture

  • source: BODY

  • Chemin: $.*.colonne3

  • Facture: Facture-110

  • Facture: Facture-abc

  • Facture: Facture-xyz

CSV_WITHOUT_HEADER

A; B; Facture-110; A; B; Facture-abc; A; B; Facture-xyz;
  • nom: Facture

  • source: BODY

  • Chemin: $.*.C

  • Facture: Facture-110

  • Facture: Facture-abc

  • Facture: Facture-xyz

NONE

 

  • nom: Facture

  • source: HEADER

  • Facture: Facture-110 (valeur dans un en-tête).

Historique

Date

Commentaires

Date

Commentaires

2025-04-01

Création de la page.

 Sep 1, 2025

 Ajout de la prise en compte du format CSV et du séparateur “|” .

Ce contenu est soumis au droit à Copyright. Il ne doit pas être utilisé sans accord de la société Middleware Editions.