> Tech > Peupler une base de données Notes avec un jeu de résultats AS/400

Peupler une base de données Notes avec un jeu de résultats AS/400

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

On peut aussi réutiliser les exemples de code précédents pour peupler des items indépendants dans un formulaire Lotus Notes avec les champs provenant d'une requête AS/400. Dans ce scénario, il existe une relation de un à  un entre chaque champ dans chaque enregistrement du jeu de résultats et chaque item

Peupler une base de données Notes avec un jeu de résultats AS/400

dans chaque document Notes. Ce modèle écarte le risque d’atteindre la limite de taille de 64 K sur un item Notes.

Prenons, par exemple, le formulaire Lotus Notes Credit Profile (figure 6). Les items Status, ShopNo, OwnerNo, CredRef et Terms seront tous mis à  jour par un agent Java traitant une requête JDBC et renvoyant un jeu de résultats en provenance de l’AS/400. On supposera que les autres champs du formulaire sont calculés.

Le code source de la figure 7 génère une suite de nouveaux documents dans la base de données Lotus Notes, avec le contenu des items Notes (listés ci-dessus) peuplés avec les champs correspondants dans le jeu de résultats de la requête. La méthode computeWithForm de la classe Document est invoquée pour rafraîchir les champs calculés dans le formulaire avant de sauvegarder le document. L’agent termine après avoir effectué une itération complète dans le jeu de résultats.

Il en résulte une base de données Notes peuplée des résultats d’une requête AS/400. Pour obtenir des représentations logiques supplémentaires de ces données, on peut créer des Lotus Notes Views and Folders supplémentaires via le client Lotus Notes ou un navigateur.

On ne voudra pas toujours peupler une base de données avec la totalité des jeux de résultats de nouveaux documents. Parfois, on souhaitera mettre à  jour des documents existants, en ajoutant de nouveaux documents intéressants du jeu de résultats et en éliminant les documents non intéressants. (Le code source de la figure 8 à  l’adresse http://www.as400network.com montre comment faire cela par une approche « single-threaded ».

Ajoutons à  présent un élément de conception de vue cachée à  notre base de données Notes, constitué d’une colonne unique représentant le champ ShopNo dans chaque document. Assurons-nous que la vue est triée sur cette colonne. Dans notre programme, nous accèderons à  cette vue par le nom (ou alias) ByShopNoIndex. Cette vue représente l’index trié à  l’aide duquel nous ferons des itérations dans nos documents Notes.

L’instruction SQL imbriquée dans notre programme met en oeuvre un tri pour renvoyer le jeu de résultats ByShop#. L’agent applique ensuite une comparaison linéaire par itération destinée à  comparer les clés Shop Number des deux listes triées. Une liste représente la vue triée ByShopNoIndex et l’autre représente le jeu de résultats AS/400 trié renvoyé par l’intermédiaire de JDBC.

En invoquant la chaîne du jeu de résultats CompareTo et en transmettant la valeur de l’item ShopNo depuis le document courant comme l’argument, nous pouvons déterminer l’état de mise à  jour du document Notes en comparant les clés d’index des deux listes triées. Si les deux clés Shop Number sont égales, nous pouvons mettre à  jour les champs d’un document existant à  partir de l’enregistrement de résultats JDBC correspondant. Si la valeur de Shop# dans le jeu de résultats est inférieure à  celle de l’item ShopNo dans le document Notes courant, nous savons (puisque les deux listes sont triées) que l’enregistrement dans le jeu de résultats n’a pas de document Notes correspondant. Par conséquent, un nouveau document est créé et ajouté à  la base de données. Si la valeur de Shop# dans le jeu de résultats est supérieure à  celle de l’item ShopNo dans le document Notes courant, nous savons que l’enregistrement correspondant à  ce document Notes ne fait plus partie de ce jeu de résultats, et l’état du document est changé en « B ».

C’est une manière fonctionnelle de mettre à  jour des documents, mais elle n’a rien de « très Java » car elle utilise un algorithme procédural compliqué. Java fournit un bien meilleur moyen en utilisant des threads synchronisés.

Téléchargez cette ressource

Préparer l’entreprise à l’IA et aux technologies interconnectées

Préparer l’entreprise à l’IA et aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010