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.
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”
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”
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”
Ajout du connecteur JDBC
- Maintenant, allez dans l’onglet “Connectors” du menu Endpoint
- Veuillez à ce qu’on soit toujours dans le space “Fetch”
- Cliquez sur “New Connector” et remplissez les champs comme l’image ci-dessous :
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”
- 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 |
- 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”
- Cliquez sur “New Property”
- Remplissez les champs comme l’image qui suit :
- 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”
- 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” xmlns:u=”http://www.systar.com/aluminium/camel-util”> <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=$&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} > 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> |
- 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.
- 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.
Paramétrage du mapping Commande
- Allez dans le menu Endpoints et cliquez sur “Mappings”.
- Veuillez à ce que le champ In space soit “FRM – Integration”
- Appuyez sur “New Mapping”
- Entrez le nom “createCommande”
- Ajoutez les paramètres suivants en cliquant sur Add parameter
- Cliquez ensuite Add Instance Operation, appuyez sur select an entity et sélectionnez “Commande”.
- 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
- Dans la partie Resolution
- Changez Error if instance of Commande not found at resolution time par “Create an instance of Commande if not found at resolution time or after”
- Changez le menu déroulant à droite de Parameter par “ID”
- Dans la partie Operations, appuyez sur – Add an operation –. Sélectionnez “Change value(s) of attribut”
- Sélectionnez Montant en appuyant sur select
- Paramétrez comme suit:
- Recommencez l’opération pour les attributs: Nom, Nombre d’items, R – Global, R – Canal de Vente
- Cliquez à nouveau sur Add Instance Operation
- Scrollez vers le bas, cliquez sur select entity puis sélectionnez l’entité Commande
- Paramétrez comme l’image suivante:
- Dans OPERATIONS, appuyez sur – Add an operation – , sélectionnez “Unbind key”
- 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 :
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”
- 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” xmlns:u=”http://www.systar.com/aluminium/camel-util”> <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&doneFileName=${file:name}.done&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”
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.
Apparaît alors un tableau avec les instances des attributs Commande.
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 :
- Quelles sont les principales fonctions d’ADI ?
- Comment créer un un simple Dashboard avec ADI ?
- Comment créer un dashboard avec agrégations sous ADI ?
- Comment créer un connecteur Database dans ADI ?
- Comment créer un modèle de données avec ADI ?
- …
Une vidéo démo est également disponible sur notre chaîne YouTube.
Depuis 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