ADI Axway

L’objectif de ce tutoriel est de montrer comment créer un connecteur de type JDBC et intégrer des données d’une base de données SQL server dans ADI.

Note : l’intégration est adaptée au besoin final afin d’afficher dans les dashboards le nombre de commandes totales et/ou le nombre de commandes par type de canal.

Voici un échantillon des données que nous souhaitons intégrer dans ADI.

integrer-donnees-adi-1

 

Intégration des données pour créer le connecteur JDBC

 

Dans cette partie, vous allez voir comment intégrer les données d’une base de données pour pouvoir alimenter l’entité commande, Canal de vente que vous venez tout juste de créer (Voir la vidéo modèle de données). Dans cet exemple vous allez récupérer la liste de commandes en utilisant une requête SQL
  • Allez dans l’onglet “Data Integration” en cliquant sur l’icône de la barre de menu en foncé à gauche.  Choisir le space “FRM – Fetch

integrer-donnees-adi-2

Ajout de la librairie Axway

  • Dans la partie de droite: Details, entrez le nom “Axway”
  • Dans Library jar files, appuyez sur “Upload library jar” et sélectionnez le fichier “axway-2.13-SNAPSHOT.jar” précédemment téléchargé.
  • Cliquez sur “Save”

 

integrer-donnees-adi-3

 

Intégration des données de l’entité Commande

Ajout de la librairie ojdbc5

L’ajout d’un connecteur ojdbc qui va permettre à l’application de lancer des requêtes sur la base de données puis de récupérer les données.

  • Dans la partie de droite: Details, entrez le nom “JDBC”
  • Dans Library jar files, appuyez sur “Upload library jar” et sélectionnez le fichier “ojdbc5.jar” précédemment téléchargé.
  • Cliquez sur “Save”

 

integrer-donnees-adi-4

Ajout du connecteur JDBC

  • Maintenant, allez dans l’onglet “Connectors” du menu Endpoint

integrer-donnees-adi-5

  • Veuillez à ce qu’on soit toujours dans le space “Fetch”
  • Cliquez sur “New Connector” et remplissez les champs comme l’image ci-dessous :

integrer-donnees-adi-6

Création de la route d’intégration : Création du fichier CSV et du fichier .done

Configuration de la ressource

  • Revenez dans le menu Transformations et cliquez sur “Resources”.
  • Veuillez à ce que le champ In space soit “FRM – Fetch

 

integrer-donnees-adi-7

  • Cliquez sur “New Resource
  • Dans la partie de gauche DETAILS, entrez le nom ”List_Commande
  • Laissez le champ Type coché sur “Text” et Charset sur “UTF-8
  • Dans la partie Content, entrez la requête suivante:

 

SELECT

ID,

MONTANT,

NOM,

NB_ITEMS,

CANAL,

TO_CHAR (DATE_DEBUT, ‘DD/MM/YYYY HH24:MI:SS’) AS DATE_DEBUT

FROM Commande1

integrer-donnees-adi-8

  • Cliquez sur “Save

Configuration de la propriété

  • Revenez dans le menu Transformations et cliquez sur “Resources”.
  • Veuillez à ce que le champ In space soit “FRM – Fetch

integrer-donnees-adi-9

  • Cliquez sur “New Property
  • Remplissez les champs comme l’image qui suit :

 

integrer-donnees-adi-10

  • Cliquez sur “Save
Création de la route d’intégration
  • Revenez dans le menu Transformations et cliquez sur “Routes”.
  • Veuillez à ce que le champ In space soit “FRM – Fetch

integrer-donnees-adi-11

  • Cliquez sur “New Routing Context
  • Remplissez les champs suivants:
    • Name : init_create_Commande
    • Options : Manual start
    • Librairies : None
    • Dans le grand champ, entrez la route suivante :

 

<?xml version=”1.0″ encoding=”UTF-8″?>

<routes xmlns=”http://camel.apache.org/schema/spring&#8221; xmlns:u=”http://www.systar.com/aluminium/camel-util”&gt;

<route>

<!–        –>

<!– Forcer l’exécution de la route lors de son démarrage –>

<!–    –>

<from uri=”timer:SQL_Suivi_Commande?repeatCount=1″/>

<to uri=”direct:startQuery”/>

</route>

<route>

<from uri=”direct:startQuery”/>

<setHeader headerName=”pollDate”>

<u:date-format pattern=”yyyyMMdd”>

<u:date-add date=”NOW” scalar=”0″ type=”days”/>

</u:date-format>

</setHeader>

<!–        –>

<!–Appelle de la ressource: List_Commande –>

<!–        –>

<to uri=”string-template:tnd-resource:List_Commande?delimiterStart=$&amp;delimiterStop=$”/>

<setHeader headerName=”jdbcQuery”>

<simple>${body}</simple>

</setHeader>

<log message=”[Mind7] Requête supervision commande local : ${header[jdbcQuery]}”/>

<!–        –>

<!–Appelle à la base de données : Dem_ADI –>

<!–        –>

<to uri=”jdbc:Demo_ADI”/>

<choice>

<when>

<simple>${header.CamelJdbcRowCount} &gt; 0</simple>

<log message=”[Mind7] Requête supervision commande local – Ecrire fichier csv avec ${header.CamelJdbcRowCount} résultats”/>

<marshal>

<custom ref=”JDBC_TO_CSV”/>

</marshal>

<setHeader headerName=”file”>

<!–        –>

<!–Définition du nom du fichier: ${header.pollDate}_Supervision_Commande_local –>

<!–        –>

 

<simple>${header.pollDate}_Supervision_Commande_local</simple>

</setHeader>

<!–        –>

<!–Définition de la propriété: Supervision_commandes. Cette propriété représente l’adresse du –>

<!–répertoire où sera généré le fichier tampon –>

<!–        –>

 

<to uri=”file:{{Supervision_commandes}}?fileName=${header.file}.csv”/>

<log message=”[Mind7] Requête supervision des commandes local – Fetch terminé OK”/>

<setBody>

<simple>${header.jdbcQuery}</simple>

</setBody>

 

 

 

<!–        –>

<!– Définition du fichier .done qui aura exactement le même nom que le fichier csv et dans le même répertoire –>

<!– avec l’extension .done –>

<!–        –>

 

<to uri=”file:{{Supervision_commandes}}?fileName=${header.file}.csv.done”/>

</when>

<otherwise>

<log message=”[Mind7] Requête supervision des commandes local – pas de données”/>

</otherwise>

</choice>

</route>

</routes>

integrer-donnees-adi-12

 

  • Cliquez ensuite sur “Save
  • Appuyez sur l’action -> pour lancer la route puis appuyez sur le bouton  pour regarder les logs.
  • Cochez “Info”, vous devriez avoir les mêmes messages.

integrer-donnees-adi-13

 

  • Si vous ouvrez votre explorateur de fichier et ouvrez le fichier formation dans data du chemin suivant: C:\Demo_ADI\Data\Adi. Vous devriez voir deux fichiers. Un fichier CSV et un fichier .done.

connecteur JDBC

Paramétrage du mapping Commande

  • Allez dans le menu Endpoints et cliquez sur “Mappings”.
  • Veuillez à ce que le champ In space soit “FRM – Integration

connecteur JDBC

  • Appuyez sur “New Mapping
  • Entrez le nom “createCommande
  • Ajoutez les paramètres suivants en cliquant sur Add parameter

connecteur JDBC

 

  • Cliquez ensuite Add Instance Operation, appuyez sur select an entity et sélectionnez “Commande”.

connecteur JDBC

 

  • Appuyez sur “Done
  • Paramétrez comme les images qui suivent:
    • Dans la partie Default Times
  • Résolution: Parameter dans le champ qui suit remplacez Now par “dateDebut
  • Operations begin: Parameter dans le champ qui suit remplacez Now par “dateDebut
  • Operations end: Constant laissez le champ vide

connecteur JDBC

  • Dans la partie Resolution
  • Changez Error if instance of Commande not found at resolution time parCreate an instance of Commande if not found at resolution time or after
  • Changez le menu déroulant à droite de Parameter par “ID

connecteur JDBC

 

  • Dans la partie Operations, appuyez sur – Add an operation –. Sélectionnez “Change value(s) of attribut

connecteur JDBC

  • Sélectionnez Montant en appuyant sur select

  connecteur JDBC

  • Paramétrez comme suit:

connecteur JDBC

  • Recommencez l’opération pour les attributs: Nom, Nombre d’items, R – Global, R – Canal de Vente

connecteur JDBC

connecteur JDBC

  • Cliquez à nouveau sur Add Instance Operation

  connecteur JDBC

 

  • Scrollez vers le bas, cliquez sur select entity puis sélectionnez l’entité Commande
  • Paramétrez comme l’image suivante:

connecteur JDBC

 

  • Dans OPERATIONS, appuyez sur – Add an operation – , sélectionnez “Unbind key”

 

connecteur JDBC

 

  • Cliquez sur “Save

 

Création de la route d’intégration: Absorption du fichier CSV et du fichier .done pour le connecteur JDBC

Configuration de la propriété

  • Revenez dans le menu Transformations et cliquez sur “Properties”.
  • Veuillez à ce que le champ In space soit “FRM – Integration
  • Cliquez sur “New Property
  • Remplissez les champs comme l’image qui suit :

connecteur JDBC

 

Création de la route d’intégration pour le connecteur JDBC

  • Revenez dans le menu Transformations et cliquez sur “Routes”.
  • Veuillez à ce que le champ In space soit “FRM – Integration

connecteur JDBC

  • Cliquez sur “New Routing Context
  • Remplissez les champs suivants:
    • Name : integration_Commande
    • Options: Manual start
    • Librairies: None

Dans le grand champ, entrez la route suivante :

<?xml version=”1.0″ encoding=”UTF-8″?>

<routes xmlns=”http://camel.apache.org/schema/spring&#8221; xmlns:u=”http://www.systar.com/aluminium/camel-util”&gt;

<route>

<!–        –>

<!– Intégration du fichier à partir du chemin présent dans la propriété Supervision_commandes –>

<!– L’intégration débute lorsqu’il existe un fichier .done du même nom que le fichier à intégrer. –>

<!– Si l’intégration du fichier ne se déroule pas correctement, il est déplacé dans le .error ->

<!–        –>

 

<from uri=”file:{{Supervision_commandes}}?noop=false&amp;doneFileName=${file:name}.done&amp;moveFailed=.error”/>

<log message=”Lecture du fichier CSV”/>

<unmarshal>

<csv delimiter=”;” skipHeaderRecord=”true”/>

</unmarshal>

<!–        –>

<!–Interprétation du fichier .csv→

<!–Initialisation et transformation des données  si nécessaire –>

<!–        –>

 

<split>

<!– Simply iterate the body : each iteration is of type List<String> –>

<simple>${body}</simple>

<setHeader headerName=”dateformat”>

<u:date-format pattern=”dd/MM/yyyy”>

<u:date-parse pattern=”dd/MM/yyyy HH:mm:ss”>

<simple>${body[5]}</simple>

</u:date-parse>

</u:date-format>

</setHeader>

<setHeader headerName=”dateEnd”>

<u:date-parse pattern=”dd/MM/yyyy HH:mm:ss”>

<simple>${header.dateformat} 23:58:00</simple>

</u:date-parse>

</setHeader>

<setHeader headerName=”dateDebut”>

<u:date-parse pattern=”dd/MM/yyyy HH:mm:ss”>

<simple>body[5]</simple>

</u:date-parse>

</setHeader>

<setBody>

<u:map-create>

<u:map-entry key=”ID”>

<simple>body[0]</simple>

</u:map-entry>

<u:map-entry key=”MONTANT”>

<simple>body[1]</simple>

</u:map-entry>

<u:map-entry key=”NOM”>

<simple>body[2]</simple>

</u:map-entry>

<u:map-entry key=”NBITEMS”>

<simple>body[3]</simple>

</u:map-entry>

<u:map-entry key=”CANAL”>

<simple>body[4]</simple>

</u:map-entry>

<u:map-entry key=”dateDebut”>

<header>dateDebut</header>

</u:map-entry>

<u:map-entry key=”dateEnd”>

<header>dateEnd</header>

</u:map-entry>

</u:map-create>

</setBody>

 

<!–        –>

<!– Matching de variables avec les attributs de la supervision par le→

<!– mapping: createCommande –>

<!–        –>

 

<log message=”${body}”/>

<to uri=”tnd-absorption:createCommande”/>

</split>

<log message=”[Mind7] Mapping Flux Commande local – OK”/>

</route>

</routes>

A présent, revenez dans l’onglet “Routes” du menu transformation, puis lancez le bonton ->.

Vérifiez les logs en appuyant sur le bouton, puis cochez “info

connecteur JDBC

Vous devriez avoir le message : ”[Mind7] Mapping Flux Commande local – OK

Vérifier avec Explore

  • Appuyez sur le bouton “lampe” à gauche de l’écran pour atteindre l’écran Explore
  • Appuyez sur Commande pour le choix des entités, puis ID, MONTANT, Nom, Nombre d’items.

connecteur JDBC

Apparaît alors un tableau avec les instances des attributs Commande.

 

connecteur JDBC

 

Le tutoriel est désormais terminé, vous avez réussi l’intégration des données d’un connecteur JDBC.

D’autres tutoriels d’ADI sont aussi disponibles sur le site :

Une vidéo démo est également disponible sur notre chaîne YouTube.

 


AlexisDepuis plus de 15 ans maintenant, je travaille sur des sujets liés à la BI et à l’amélioration des processus. J’ai participé à un grand nombre de projets en tant que leader technique sur de nombreuses technologies. De nature pédagogue, je donne également des cours de langage de programmation.

N’hésitez pas à me faire un retour sur cet article ou à me contacter sur LinkedIn pour échanger sur ces sujets!

Alexis

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Abonnez-vous à notre newsletter

Saisissez votre adresse e-mail pour vous abonner à ce blog et recevoir les derniers articles publiés!