Tutoriels

Gérer les fichiers spool IBM i, AS/400 depuis .NET avec NTi Toolbox

ParQuentin Destrade

image d’illustration de l’article

Contenu détaillé de l’article:Gérer les fichiers spool IBM i, AS/400 depuis .NET avec NTi Toolbox

La gestion des fichiers spool IBM i depuis .NET se résume ici à quelques appels de méthodes, grâce aux extensions ListSpooledFiles() et GetSpooledFileData() intégrées à l'extension NTi Toolbox.

Contexte

Naviguer dans l'univers des systèmes IBM i, et notamment dans la gestion des fichiers spool (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 système IBM i, limitant ainsi l'accès à une niche de développeurs spécialisés.

Avec NTi Toolbox, il est désormais possible de simplifier et d'automatiser cette gestion directement depuis un environnement .NET en quelques lignes seulement, grâce à l'objet NTiSpooledFile et aux méthodes ListSpooledFiles() et GetSpooledFileData() qui encapsulent la complexité des appels API sous-jacents.

Installation

NTi Toolbox s'installe via NuGet :

dotnet add package Aumerial.Toolbox

Puis importer l'espace de noms :

using Aumerial.Toolbox;

Étape 1 - Ouvrir la connexion

Le service DBConnectionService gère la connexion avec l'IBM i et initialise NTiConnection :

public class SpoolFilesService
{
    private readonly NTiConnection _conn;

    public SpoolFilesService(DbConnectionService dbConnection)
    {
        _conn = dbConnection.conn;
    }
}

Étape 2 - Lister et filtrer les fichiers spool

La méthode ListSpooledFiles() est conçue pour faciliter le listage des fichiers spool en fonction de critères spécifiques : la file d'attente de sortie, l'utilisateur, le type de formulaire et les données utilisateur :

public List ListAndFilterSpooledFiles(
    string filterOutqueue, 
    string filterUser, 
    string filterFormType, 
    string filterUserData)
{
    _conn.Open();
    var spooledFiles = _conn.ListSpooledFiles(filterOutqueue, filterUser, filterFormType, filterUserData);
    _conn.Close();
    return spooledFiles;
}

Étape 3 - Récupérer et télécharger un fichier spool

Pour chaque fichier spool identifié, les données peuvent être extraites grâce à 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();
        }
    }
}

Étape 4 - Contrôleur d'API

Le contrôleur expose les fonctionnalités de listage et de téléchargement à n'importe quelle interface web. Pour le téléchargement, un objet contenant les métadonnées est passé en paramètre afin d'identifier le fichier à récupérer :

[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 : {ex.Message}");
    }
}

Visualisation avec AFP Workbench Viewer

Une fois le fichier spool téléchargé, il peut être visualisé avec AFP Workbench Viewer for Windows, disponible gratuitement :

Fichier spoule récupéré et affiché dans AFP Workbench Viewer for Windows

Conclusion

Avec NTi Toolbox, développer des solutions sur mesure pour la gestion des fichiers spool sur IBM i devient non seulement plus rapide mais aussi plus simple. En quelques lignes de C#, il est possible de mettre en place une solution efficace et facilement adaptable, sans expertise des API système requise et sans complexité technique ajoutée.


Quentin Destrade

Démarrez dès maintenant

Récupérez votre licence d’essai gratuite en ligne
et connectez vos applications .NET à votre IBM i en quelques minutes.

Créez votre compte

Connectez-vous au portail Aumerial, générez votre licence d’essai et activez NTi sur votre IBM i en quelques instants.

Démarrer l’essai

Ajouter NTi à votre projet

Installez NTi Data Provider depuis NuGet dans Visual Studio et référencez-le dans votre projet .NET.

Voir la documentation

Besoin d’aide ?

Si vous avez des questions sur nos outils ou sur les options de licence, notre équipe est disponible pour vous aider.

Nous contacter
30 jours d’essai gratuit activation immédiate sans engagement aucun composant à installer côté IBM i