Sources de Données Externes (EDS) - Guide Complet
Aperçu
Les Sources de Données Externes (EDS) sont une fonctionnalité essentielle de la plateforme Softyflow, permettant à vos applications de se connecter et d'interagir de manière transparente avec une gamme variée de systèmes et de bases de données externes. En configurant une EDS, vous pouvez lire, écrire et manipuler des données provenant de systèmes d'entreprise existants, d'API tierces, d'entrepôts de données cloud, et plus encore, le tout dans l'environnement de développement unifié de Softyflow.
Ce guide fournit une procédure complète pour configurer chaque type d'EDS pris en charge, gérer les droits d'accès dans différents environnements et respecter les meilleures pratiques en matière de sécurité, de performance et de maintenabilité.
Types d'EDS Pris en Charge
Softyflow offre un support robuste et prêt à l'emploi pour les types de sources de données externes suivants :
- Bases de Données Relationnelles : MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server
- Entrepôts de Données Cloud : Snowflake
- Intégrations d'API : API REST entièrement personnalisables
- Services d'Annuaire : LDAP (actuellement en Bêta)
2. Configuration des EDS par Type
Les sections suivantes fournissent des instructions détaillées pour configurer les paramètres de connexion spécifiques et les options avancées pour chaque source de données prise en charge. Toutes les configurations sont gérées dans l'IDE de Softyflow en naviguant vers Ressources → Base de Données Externe (EDS).
2.1. MySQL
MySQL est l'un des systèmes de gestion de bases de données relationnelles open-source les plus populaires au monde, connu pour sa fiabilité, ses performances et sa facilité d'utilisation.
Étapes de Configuration :
- Dans la section EDS, créez une nouvelle source de données et sélectionnez "MySQL" comme type.
- Remplissez les paramètres de connexion requis (Hôte, Utilisateur, Mot de passe, Base de données) pour chaque environnement : TEST, UAT et PROD.
- (Optionnel) Configurez les paramètres avancés à l'aide d'un objet JSON dans le champ
optionspour un contrôle plus fin du comportement de la connexion. - Crucialement, utilisez le bouton Tester la Connexion pour chaque environnement avant de sauvegarder afin de valider que les paramètres sont corrects et que la base de données est accessible.

Options Avancées Courantes :
Le champ options JSON permet une configuration avancée pour répondre à des besoins spécifiques de sécurité ou de performance.
{
"charset": "utf8mb4",
"timezone": "Z",
"ssl": {
"rejectUnauthorized": true,
"ca": "..."
},
"acquireTimeout": 30000,
"timeout": 60000
}
charset: Définit l'encodage des caractères.utf8mb4est fortement recommandé pour prendre en charge une gamme complète de caractères Unicode, y compris les emojis.timezone: Définit le fuseau horaire de la base de données (par exemple,Zpour UTC).ssl: Configure SSL pour une connexion sécurisée et chiffrée. Il est essentiel de réglerrejectUnauthorizedsurtrueen production.acquireTimeout: Le temps maximum (en millisecondes) à attendre pour une connexion depuis le pool.timeout: Le temps maximum (en millisecondes) pendant lequel une requête est autorisée à s'exécuter avant d'être annulée.
2.2. PostgreSQL
PostgreSQL est un système de base de données objet-relationnel open-source puissant, réputé pour sa conformité aux normes, sa fiabilité et son ensemble de fonctionnalités étendu.
Paramètres de Connexion : La configuration pour PostgreSQL est similaire à celle de MySQL, nécessitant les détails standards d'hôte, utilisateur, mot de passe et base de données.

Exemple de Configuration Avancée :
Cet objet JSON configure une connexion PostgreSQL sécurisée avec des délais d'attente spécifiques. L'objet ssl peut désactiver le rejet des certificats non autorisés, ce qui est utile pour les environnements de développement avec des certificats auto-signés, mais doit être évité en production.
{
"ssl": {
"rejectUnauthorized": false,
"ca": "...",
"key": "...",
"cert": "..."
},
"statement_timeout": 30000,
"query_timeout": 30000,
"application_name": "Softyflow"
}
statement_timeout: Annule toute instruction qui prend plus que le nombre de millisecondes spécifié. Cela empêche les requêtes de longue durée d'impacter les performances globales de la base de données.application_name: Définit un nom d'application personnalisé dans les logs de PostgreSQL, facilitant l'identification et le débogage des activités liées à Softyflow.
2.3. Oracle Database
Oracle Database est un système de gestion de base de données multi-modèle largement utilisé dans les environnements d'entreprise à grande échelle.
Paramètres de Connexion :
La configuration nécessite un user, un password et un connectString. L'objet options peut être utilisé pour configurer le pool de connexions, ce qui améliore considérablement les performances en réutilisant les connexions de base de données établies.

Formats de Chaîne de Connexion : Softyflow prend en charge plusieurs formats de chaîne de connexion Oracle standard :
- Easy Connect / Easy Connect Plus :
hostname:port/service_name - Format de Nommage en Deux Parties (TNS) : `(DESCRIPTION=...)(CONNECT_DATA=(SERVICE_NAME=...)))
2.4. Microsoft SQL Server
Microsoft SQL Server est un système de gestion de base de données relationnelle complet de Microsoft, offrant une large gamme d'outils pour la gestion des données, l'informatique décisionnelle et l'analytique.
Paramètres de Connexion :
La configuration inclut user, password, database et l'adresse du server. L'objet options est particulièrement important pour gérer le chiffrement et l'authentification.

Méthodes d'Authentification Alternatives : En plus de l'authentification SQL standard, Softyflow prend en charge l'Authentification Windows (NTLM) et Azure Active Directory pour une intégration transparente avec les écosystèmes Microsoft.
- Authentification Windows (NTLM) :
{
"domain": "VOTRE_DOMAINE",
"authentication": {
"type": "ntlm",
"options": {
"userName": "nomdutilisateur",
"password": "motdepasse"
}
}
}
- Authentification par Mot de Passe Azure Active Directory :
{
"authentication": {
"type": "azure-active-directory-password",
"options": {
"userName": "utilisateur@votredomaine.com",
"password": "motdepasse"
}
}
}
2.5. Snowflake
Snowflake est une plateforme d'entrepôt de données moderne et native du cloud, conçue pour des performances et une évolutivité élevées.
Paramètres de Connexion :
La configuration nécessite votre identifiant de compte Snowflake (account, par exemple, xy12345.east-us-2.azure), votre username et votre password. Vous pouvez également spécifier la database, le warehouse et le schema par défaut pour simplifier les requêtes.

Authentification par Paire de Clés (pour MFA) :
Pour une sécurité renforcée, en particulier lorsque l'authentification multi-facteurs est activée, vous devriez utiliser l'authentification par paire de clés. Cette méthode utilise une privateKey et une passphrase optionnelle au lieu d'un mot de passe.
{
"authenticator": "snowflake_jwt",
"privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY-----\n...\n-----END ENCRYPTED PRIVATE KEY-----",
"passphrase": "votre_phrase_de_passe_de_cle"
}
2.6. API
Le type de source de données API est un outil polyvalent qui vous permet d'intégrer n'importe quelle API RESTful ou service web dans votre application Softyflow. C'est idéal pour se connecter à des microservices, des systèmes hérités ou des plateformes SaaS tierces comme Stripe, Salesforce ou Google Maps. Pour des informations plus détaillées, vous pouvez également consulter la documentation API dédiée.
Configuration de Base :
La configuration principale établit une baseURL pour toutes les requêtes, un timeout global et une connectionUrl pour les vérifications de santé. Vous pouvez également définir des headers globaux (par exemple, pour une clé d'API) et un runScript qui s'exécute avant l'appel de tout point de terminaison—parfait pour des tâches comme la récupération dynamique et la mise en cache d'un jeton d'authentification OAuth 2.0.

Configuration des Points de Terminaison :
Chaque EDS API peut avoir plusieurs points de terminaison, qui mappent des opérations de données standard (comme lister, récupérer, mettre à jour) à des appels d'API spécifiques. Vous définissez la method HTTP, la value de l'URL, les en-têtes et les paramètres pour chacun. Un script de response vous permet de transformer les données entrantes pour qu'elles correspondent au modèle de données de votre application.

Types de Points de Terminaison Disponibles :
retrieve: Récupérer un seul enregistrement par son ID.list: Récupérer plusieurs enregistrements, avec prise en charge intégrée de la pagination et du filtrage.count: Compter le nombre total d'enregistrements qui correspondent à une requête.insert: Créer un nouvel enregistrement.insertMany: Créer plusieurs enregistrements en un seul appel d'API.update: Modifier un enregistrement existant.delete: Supprimer un enregistrement.execute: Un type flexible pour les opérations personnalisées qui ne correspondent pas au modèle CRUD standard (Créer, Lire, Mettre à jour, Supprimer).
Variables de Contexte Disponibles : Dans la configuration de votre point de terminaison, vous pouvez utiliser des variables de contexte dynamiques pour construire vos requêtes, permettant des intégrations puissantes et pilotées par les données.

SF_source: Un objet contenant les paramètres de la requête envoyés depuis le widget frontal ou l'action (par exemple, termes de recherche, filtres).SF_table: Le nom de la table ou de la ressource interrogée.SF_postData: La charge utile de données pour les opérationsPOST,PUTouPATCH.SF_limit: Le nombre maximum d'enregistrements à récupérer (pour la pagination).SF_sortby: Le nom du champ par lequel trier les résultats.SF_page: Le numéro de page actuel pour la pagination.SF_direction: La direction du tri (1pour ascendant,-1for descendant).
2.7. LDAP (Bêta)
L'intégration LDAP (Lightweight Directory Access Protocol) permet à Softyflow de se connecter à des services d'annuaire comme Microsoft Active Directory ou OpenLDAP. C'est utile pour authentifier des utilisateurs ou récupérer des informations sur les utilisateurs. Veuillez noter que cette fonctionnalité est actuellement en Bêta et peut évoluer.
Paramètres de Connexion :
La configuration nécessite l'URL (URL) du serveur, un DN (Distinguished Name) de liaison d'un compte de service, et son password. L'objet options permet un réglage fin, y compris tlsOptions pour gérer les connexions sécurisées et les certificats auto-signés.

Configuration LDAPS (LDAP Sécurisé) :
Pour une connexion sécurisée sur SSL/TLS, utilisez le protocole ldaps:// dans l'URL et fournissez les informations nécessaires de l'autorité de certification (CA) pour garantir que l'identité du serveur est fiable.
{
"URL": "ldaps://ldap.example.com:636/",
"DN": "cn=service_account,ou=services,dc=example,dc=com",
"password": "mot_de_passe_compte_service",
"options": {
"tlsOptions": {
"ca": ["-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"],
"rejectUnauthorized": true
}
}
}
3. Environnement et Contrôle d'Accès
3.1. Configuration Multi-Environnement
Softyflow est conçu pour supporter un cycle de vie DevOps professionnel en fournissant trois environnements distincts et isolés pour chaque configuration EDS :
- TEST : Utilisé pour le développement initial et les tests unitaires sur la machine locale d'un développeur.
- UAT : Un environnement partagé pour les Tests d'Acceptation Utilisateur et l'assurance qualité, reflétant étroitement la production.
- PROD : L'environnement de production en direct accessible par les utilisateurs finaux.
Cette séparation fondamentale vous permet d'utiliser des identifiants de base de données, des points de terminaison d'API ou des adresses de serveur différents pour chaque étape, créant un pipeline de déploiement sûr et fiable du développement à la production.
3.2. Contrôle d'Accès Basé sur les Rôles (RBAC)
La sécurisation de vos données est primordiale. Softyflow permet un contrôle granulaire de l'accès aux données en vous permettant de définir quels rôles d'utilisateurs peuvent effectuer des actions spécifiques (Créer, Lire, Mettre à jour, Supprimer). Les droits d'accès sont configurés via un objet JSON simple mais puissant qui mappe les permissions à vos groupes d'utilisateurs définis. Pour plus de détails sur la création et la gestion des rôles d'utilisateurs, veuillez consulter notre documentation sur la Gestion des Rôles.

Permissions Disponibles :
create: Autorise les utilisateurs du groupe spécifié à insérer de nouveaux enregistrements.read: Autorise les utilisateurs à interroger et récupérer des données.update: Autorise les utilisateurs à modifier des enregistrements existants.delete: Autorise les utilisateurs à supprimer des enregistrements de la source de données.
4. Intégration avec les Widgets de l'Interface Web
Les Sources de Données Externes (EDS) sont principalement utilisées pour peupler et interagir avec les widgets dans le Modeleur Web de Softyflow, permettant la création d'interfaces utilisateur dynamiques et pilotées par les données. Cette intégration vous permet de lier des composants d'interface utilisateur directement à vos bases de données externes, offrant un flux d'informations transparent entre vos systèmes et vos applications Softyflow.
Configuration et Liaison de Données
Dans le Modeleur Web, les widgets qui prennent en charge la liaison de données (par exemple, les Sélecteurs, les Tableaux, les Autocomplétions) peuvent être configurés pour utiliser une EDS comme source de données. Cela se fait généralement via le panneau de configuration du widget, où vous pouvez sélectionner l'EDS souhaitée et spécifier la requête ou la méthode pour récupérer les données.

Le processus de liaison implique :
- Sélectionner la Source de Données : Choisir "EDS" comme type de source de données.
- Spécifier la Base de Données : Sélectionner la connexion EDS pré-configurée (par exemple, "Test Mysql").
- Définir la Récupération des Données : Écrire une requête SQL ou sélectionner une méthode prédéfinie pour récupérer les données requises. Par exemple, une requête
SELECT id, name FROM categoriespourrait peupler un menu déroulant avec des options de catégories.
Cas d'Utilisation Courants
- Menus Déroulants Dynamiques : Peupler des widgets
Selectavec des options récupérées d'une table de base de données, comme une liste de pays, de produits ou de rôles d'utilisateurs. - Tableaux de Données : Afficher des enregistrements d'une base de données externe dans un widget
Table, avec prise en charge de la pagination, du tri et du filtrage. - Champs d'Autocomplétion : Fournir des suggestions dans les champs de texte en interrogeant une base de données pour des résultats correspondants au fur et à mesure que l'utilisateur tape.
- Vues Maître-Détail : Créer des interfaces utilisateur interactives où la sélection d'un élément dans un widget (par exemple, un client dans une liste) met à jour dynamiquement un autre widget (par exemple, un tableau montrant les commandes de ce client).
Cette intégration directe abstrait la complexité de l'accès aux données, permettant aux développeurs de se concentrer sur la construction de l'expérience utilisateur sans écrire de code backend extensif pour la récupération des données.
Pour des exemples d'implémentation plus détaillés et des configurations avancées, veuillez vous référer à la section Utilisation dans les Widgets de notre guide de développement.
5. Tester la Connexion
Avant de sauvegarder toute configuration d'EDS, il est essentiel d'utiliser le bouton Tester la Connexion disponible pour chaque environnement (TEST, UAT, PROD).
- Un test réussi affichera un message de confirmation, indiquant que Softyflow a pu établir une connexion avec le système externe en utilisant les identifiants et les paramètres fournis.
- Un test infructueux renverra un message d'erreur. Ces messages sont conçus pour être informatifs et constituent la première étape du diagnostic du problème.
Les messages d'erreur courants incluent :
- "Connection timed out" : Softyflow n'a pas pu atteindre le serveur. Il s'agit généralement d'un problème de réseau.
- "Authentication failed" / "Invalid credentials" : Le nom d'utilisateur ou le mot de passe est incorrect.
- "Database not found" : Le serveur a été atteint, mais la base de données spécifiée n'existe pas.
- "SSL/TLS error" : Il y a un problème avec la configuration du certificat de sécurité.
6. Meilleures Pratiques de Sécurité
6.1. Gestion des Identifiants :
Ne jamais coder en dur les identifiants directement dans les fichiers de configuration. Utilisez des variables d'environnement ou un système de gestion des secrets dédié (comme HashiCorp Vault ou AWS Secrets Manager) pour gérer les informations sensibles. Faites pivoter régulièrement les mots de passe et les clés d'API.
6.2. Protection des Données :
Activez toujours le chiffrement en transit (SSL/TLS) pour toutes les connexions de base de données et d'API, en particulier dans les environnements UAT et PROD. Assainissez toutes les entrées fournies par l'utilisateur côté serveur pour prévenir l'injection SQL et autres attaques par injection.
6.3. Contrôle d'Accès :
Appliquez le principe du moindre privilège. N'accordez que les permissions dont un rôle d'utilisateur a absolument besoin pour accomplir ses fonctions. Auditez régulièrement les journaux d'accès aux données pour surveiller toute activité suspecte.
7. Dépannage
7.1. Problèmes de Réseau et de Pare-feu
- Symptôme : "Connection timed out" ou "Cannot reach server".
- Solutions :
- Vérifier l'Hôte et le Port : Vérifiez que l'adresse/le nom d'hôte du serveur et le port sont corrects.
- Règles de Pare-feu : Confirmez qu'il n'y a pas de règles de pare-feu sur le serveur Softyflow, le serveur de base de données, ou tout périphérique réseau intermédiaire (comme un groupe de sécurité cloud) qui bloquerait le trafic sur le port spécifié.
- Ping/Telnet : Depuis la machine exécutant Softyflow, essayez de faire un
pingsur l'hôte de la base de données ou utiliseztelnet <hôte> <port>pour vérifier la connectivité réseau de base.
7.2. Erreurs d'Identifiants et de Permissions
- Symptôme : "Authentication failed," "Access denied," ou des erreurs similaires liées aux identifiants.
- Solutions :
- Vérifier les Identifiants : Vérifiez attentivement le nom d'utilisateur, le mot de passe et tout autre jeton d'authentification (par exemple, le domaine pour NTLM).
- Permissions de l'Utilisateur : Assurez-vous que l'utilisateur de la base de données dispose des permissions nécessaires. Par exemple, l'utilisateur doit avoir la permission de se connecter à la base de données depuis l'adresse IP du serveur Softyflow.
- Expiration du Mot de Passe : Vérifiez si le mot de passe du compte de service a expiré.
7.3. Erreurs de Requête et de Point de Terminaison d'API
- Symptôme : Erreurs de syntaxe SQL, point de terminaison d'API non trouvé (404), ou requête malformée (400).
- Solutions :
- Test Externe : Isolez le problème en testant la requête SQL ou la requête API exacte à l'aide d'un outil externe (comme DBeaver pour SQL ou Postman/cURL pour les API). Cela aide à déterminer si le problème se situe dans la requête elle-même ou dans la configuration de Softyflow.
- Vérifier les Chemins et les Méthodes : Pour les API, confirmez que la
baseURL, le chemin du point de terminaison et la méthode HTTP sont tous corrects. Une erreur courante est d'utiliserGETau lieu dePOST. - Vérifier les Paramètres : Assurez-vous que tous les paramètres, en-têtes et données de charge utile requis sont envoyés dans le format correct.
7.4. Problèmes SSL/TLS et de Certificats
- Symptôme : "Untrusted certificate," "Certificate has expired," ou "SSL handshake failed."
- Solutions :
- Validité du Certificat : Assurez-vous que le certificat SSL du serveur est valide, n'a pas expiré et est émis par une Autorité de Certification (CA) de confiance.
- Certificats Auto-signés : Pour les environnements de développement utilisant des certificats auto-signés, vous devrez peut-être configurer la connexion pour lui faire confiance (par exemple, en réglant
rejectUnauthorizedsurfalsedans les options JSON). Cela ne doit jamais être fait en production. - Chaîne de Certificats Complète : Certaines bases de données exigent que le client dispose de la chaîne de certificats complète, y compris les certificats intermédiaires. Assurez-vous que la propriété
cadans vos optionssslest correctement configurée.
8. Optimisation des Performances
8.1. Optimisation des Requêtes :
Assurez-vous que les tables de la base de données ont des index appropriés sur les colonnes fréquemment utilisées dans les clauses WHERE, JOIN et ORDER BY. Utilisez des requêtes efficaces et limitez toujours les jeux de résultats avec un filtrage strict et une pagination côté serveur.
8.2. Gestion des Connexions :
Configurez le pool de connexions avec des paramètres de taille et de délai d'attente appropriés pour équilibrer les performances et la consommation de ressources. Un pool correctement réglé minimise la surcharge liée à l'établissement de nouvelles connexions.
8.3. Mise en Cache :
Pour les données qui ne changent pas souvent (par exemple, une liste de pays, des catégories de produits), mettez en œuvre une stratégie de mise en cache pour réduire la charge sur le système externe et améliorer la réactivité de l'application. Assurez-vous d'avoir un plan clair d'invalidation du cache.
Ce guide complet couvre tous les aspects de la configuration des EDS dans Softyflow.