Attendre l'ajout de lignes dans une table
Ce scénario décrit un Job lisant la table d'une base de données dans l'attente d'un ajout de données dans cette table, pour ensuite exécuter un sous-Job. Lorsque des données sont ajoutées, le sous-Job effectue un Select* sur la table et affiche le contenu des données insérées dans la console standard.
-
Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : tMysqlConnection, tWaitForSqlData, tMysqlInput, tLogRow.
-
Connectez le composant tMysqlConnection au composant tWaitforSqlData à l'aide un lien OnSubjobOK, disponible via le clic-droit.
-
Puis connectez le composant tWaitForSqlData au sous-Job à l'aide d'un lien Iterate puisqu'aucune donnée n'est transférée pour le moment. En effet, le tWaitForSqlData effectue seulement des boucles jusqu'à ce que la condition soit rencontrée.
-
Dans le sous-Job à exécuter si la condition est rencontrée, le composant tMysqlInput est connecté au tLogRow. Puisque cette connexion sert à transférer des données, utilisez un lien de type Row main.
-
Maintenant, paramétrez la connexion à la table devant être vérifiée à intervalles réguliers. Dans l'onglet Basic settings de la vue Component du composant tMysqlConnection, paramétrez les propriétés de connexion à la base de données.
-
Renseignez les champs Host, Port, Database, Username, Password pour ouvrir une connexion à la base de données.
-
Dans le champ Encoding, sélectionnez l'encodage adéquat, si nécessaire.
-
Puis, sélectionnez le composant tWaitForSqlData, et dans l'onglet Basic settings de la vue Component, paramétrez ses propriétés.
-
Dans le champ Wait at each iteration, paramétrez en secondes l'intervalle entre chaque itération.
-
Dans le champ Max iterations, saisissez le nombre d'itérations maximum à effectuer avant que le Job ne s'arrête.
-
Pour utiliser le composant tWaitForSqlData, il faut qu'une connexion soit ouverte pour effectuer le nombre de boucles défini. Sélectionnez la connexion adéquate (s'il y en a plusieurs) dans la liste déroulante Component List.
-
Dans le champ Table to scan, saisissez le nom de la table à scanner. Dans cet exemple : test_datatypes.
-
Dans les champs Trigger action when rowcount is et Value, sélectionnez la condition à respecter afin de lancer le sous-Job. Pour cet exemple, le nombre de lignes à prendre en compte dans la table scannée soit être supérieur ou égal à 1, ainsi sélectionnez be greater or equal to 1.
-
Dans le champ Then, sélectionnez l'action à effectuer lorsque la condition est respectée avant que le nombre maximum d'itérations défini ne soit atteint. Dans cet exemple, dès que la condition est respectée, la boucle devrait s'arrêter.
-
Puis paramétrez le sous-Job à exécuter lorsque la condition est respectée. Dans cet exemple, le sous-Job sélectionne les données de la table scannée et les affiche dans la console.
-
Sélectionnez le composant tMysqlInput, et dans l'onglet Basic settings de la vue Component, paramétrez la connexion à la table.
-
Si la connexion est stockée dans le référentiel, sélectionnez-la dans la liste déroulante. Sinon, cochez la case Use an existing connection et sélectionnez le composant de connexion correspondant dans la liste.
-
Dans cet exemple, le schéma correspondant à la structure de la table est stocké dans le Repository.
-
Dans le champ Table Name, renseignez le nom de la table à partir de laquelle les données seront extraites, Test_datatypes.
-
Puis dans le champ Query, saisissez la commande Select permettant d'extraire le contenu de la table.
-
Pour cet exemple, laissez les propriétés par défaut du composant tLogRow.
Avant d'exécuter le Job, assurez-vous que la table à scanner (test_datatypes) est bien vide, afin que la condition (greater or equal to 1) soit rencontrée. Puis exécutez le Job via le raccourci F6. Avant la fin de la boucle, ajoutez une ou deux lignes à la table test_datatypes afin que la condition soit rencontrée.
Le Job s'arrête lorsque les données ajoutées à la table sont détectées lors de la boucle et le contenu de la table est affiché dans la console.