Introduction
Naviguer dans l’univers des systèmes IBM i, et notamment dans la gestion des fichiers spoules (ou fichiers d’attente d’impression) peut souvent s’avérer complexe, surtout lorsque l’on cherche à les intégrer dans des applications modernes. Historiquement, cette intégration nécessite une connaissance approfondie des API System IBM i, limitant ainsi l’accès à une niche de développeurs spécialisés.
Avec NTi, il est désormais possible de simplifier et d’automatiser cette gestion directement depuis un environnement .NET en quelques lignes seulement.
Dans cet article, je vous présente une méthode inédite et intégrée à NTi pour lister, filtrer et télécharger les fichiers spoules en utilisant l’objet NTiSpooledFile.
Contexte
Pour permettre une gestion simplifiée des fichiers spoules avec des applications .NET, NTi encapsule spécifiquement trois API système: QUSCRTUS, QUSLSPL, et QUSRTVUS, offrant une abstraction qui facilite leur utilisation sans nécessiter une expertise approfondie des commandes IBM i.
- QUSCRTUS : crée un espace utilisateur temporaire pour stocker les données.
- QUSLSPL : liste les fichiers spoules basés sur des critères définis.
- QUSRTVUS : récupère les données de l’espace utilisateur créé.
Utilisation de NTi pour gérer les fichiers spoules
La méthode ListSpooledFiles() est conçue pour faciliter le listage des fichiers spoules en fonction des critères spécifiques comme la file d’attente de sortie, l’utilisateur, le type de formulaire et les données utilisateur.
Etape 1: Ouverture de la connexion NTi
Dans notre application, le service DBConnectionService gère la connexion avec l’IBM i, extrayant la chaîne de connexion nécessaire et initialisant NTiConnection.
public class SpoolFilesService
{
private readonly NTiConnection _conn;
public SpoolFilesService(DbConnectionService dbConnection)
{
_conn = dbConnection.conn;
}
}
Etape 2: Listing des Fichiers Spoules
Nous pouvons désormais utiliser NTiSpooledFile pour interroger et lister les fichiers spoules disponibles. Cette opération est effectuée en appelant la méthode ListSpooledFiles() qui filtre les fichiers selon les critères spécifiés par les paramètres.
public List<NTiSpooledFile> ListAndFilterSpooledFiles(string filterOutqueue, string filterUser, string filterFormType, string filterUserData)
{
_conn.Open();
var spooledFiles = _conn.ListSpooledFiles(filterOutqueue, filterUser, filterFormType, filterUserData);
_conn.Close();
return spooledFiles;
}
Etape 3: Récupération et téléchargement des données des fichiers spoules
Pour chaque fichier spoule identifié, les données peuvent être extraites ou téléchargées en utilisant la méthode GetSpooledFileData() qui interagit directement avec l’objet NTiSpooledFile.
public byte[] DownloadSpooledFile(NTiSpooledFile file)
{
try
{
_conn.Open();
return _conn.GetSpooledFileData(file);
}
catch (Exception ex)
{
Console.WriteLine($"Erreur lors de la récupération du fichier : {ex.Message}");
return null;
}
finally
{
if (_conn.State == ConnectionState.Open)
{
_conn.Close();
}
}
}
Contrôleur d'API
Un Contrôleur d'API est utilisé pour la récupération et la gestion des fichiers spoules, permettant à n’importe quelle interface web de venir lister ou télécharger les fichiers spoules avec les paramètres souhaités.
Pour le téléchargement, un objet contenant les métadonnées est passé en paramètre afin d’identifier le fichier à télécharger.
[HttpPost("downloadFile")]
public IActionResult DownloadFile([FromBody] NTiSpooledFile file)
{
try
{
var data = _spoolFilesService.DownloadSpooledFile(file);
if (data == null || data.Length == 0)
{
return NotFound("Fichier non trouvé.");
}
return File(data, "application/octet-stream", $"{file.FileName}.afp");
}
catch (Exception ex)
{
return StatusCode(500, $"Erreur interne du serveur: {ex.Message}");
}
}
Utilisation du Viewer ADP Workbench pour visualiser les fichiers Spoules
Une fois notre fichier spoule téléchargé, pour le visualiser efficacement de manière simplifié, nous utilisons AFP Workbench Viewer for Windows disponible ici.
Conclusion
Avec NTi, développer des solutions sur mesure pour la gestion des fichiers spoules sur IBM i devient non seulement plus rapide mais aussi plus simple et efficace. Comme vous avez pu le voir dans notre exemple, nous avons pu mettre en place en seulement quelques lignes une solution efficace et facilement adaptable qui simplifie considérablement la gestion des fichiers spoules. Cette approche peut être personnalisée pour répondre précisément aux besoins spécifiques de vos projets, sans complexité technique.
Pour en savoir plus et essayer NTi, n'hésitez pas à nous contacter.
Quentin Destrade