Introduzione
Navigare nel mondo dei sistemi IBM i, e in particolare nella gestione dei file di spool (o file di coda di stampa), può spesso rivelarsi complesso, soprattutto quando si cerca di integrarli in applicazioni moderne. Storicamente, tale integrazione ha richiesto una conoscenza approfondita delle API del sistema IBM i, limitando l'accesso a una nicchia di sviluppatori specializzati.
Con NTi, è ora possibile semplificare e automatizzare questa gestione direttamente da un ambiente .NET in poche righe.
In questo articolo presento un nuovo metodo integrato in NTi per elencare, filtrare e scaricare i file di spool utilizzando l'oggetto NTiSpooledFile.
Contesto
Per consentire una gestione semplificata dei file di spool con le applicazioni .NET, NTi incapsula specificamente tre API di sistema: QUSCRTUS, QUSLSPL e QUSRTVUS, fornendo un'astrazione che ne facilita l'uso senza richiedere un'approfondita conoscenza dei comandi IBM i.
- QUSCRTUS : crea uno spazio utente temporaneo per la memorizzazione dei dati.
- QUSLSPL : elenca i file di spool in base a criteri definiti.
- QUSRTVUS : recupera i dati dallo spazio utente creato.
Utilizzo di NTi per gestire i file in spooling
Il metodo ListSpooledFiles() è stato progettato per facilitare l'elencazione dei file in spool in base a criteri specifici come la coda di uscita, l'utente, il tipo di modulo e i dati dell'utente.
Passo 1: apertura della connessione NTi
Nella nostra applicazione, il DBConnectionService gestisce la connessione all'IBM i, estraendo la stringa di connessione necessaria e inizializzando la NTiConnection.
public class SpoolFilesService
{
private readonly NTiConnection _conn;
public SpoolFilesService(DbConnectionService dbConnection)
{
_conn = dbConnection.conn;
}
}
Passo 2: elencare i file in spooling
Ora possiamo usare NTiSpooledFile per interrogare ed elencare i file in spool disponibili. Ciò avviene chiamando il metodo ListSpooledFiles(), che filtra i file in base ai criteri specificati dai parametri.
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;
}
Passo 3: Recupero e download dei dati dei file di spooling
Per ogni file di spool identificato, i dati possono essere recuperati o scaricati usando il metodo GetSpooledFileData(), che interagisce direttamente con l'oggetto NTiSpooledFile.
public byte[] DownloadSpooledFile(NTiSpooledFile file)
{
try
{
_conn.Open();
return _conn.GetSpooledFileData(file);
}
catch (Exception ex)
{
Console.WriteLine($"Errore nel recupero del file : {ex.Message}");
return null;
}
finally
{
if (_conn.State == ConnectionState.Open)
{
_conn.Close();
}
}
}
Controllore API
Un controller API viene utilizzato per recuperare e gestire i file di spool, consentendo a qualsiasi interfaccia web di elencare o scaricare i file di spool con i parametri desiderati.
Per il download, un oggetto contenente metadati viene passato come parametro per identificare il file da scaricare.
[HttpPost("downloadFile")]
public IActionResult DownloadFile([FromBody] NTiSpooledFile file)
{
try
{
var data = _spoolFilesService.DownloadSpooledFile(file);
if (data == null || data.Length == 0)
{
return NotFound("File non trovato.");
}
return File(data, "application/octet-stream", $"{file.FileName}.afp");
}
catch (Exception ex)
{
return StatusCode(500, $"Errore interno del server: {ex.Message}");
}
}
Utilizzo di ADP Workbench Viewer per visualizzare i file Spoule
Una volta scaricato il nostro file spoule, per visualizzarlo in modo efficiente e semplificato, utilizziamo AFP Workbench Viewer per Windows disponibile [qui] (https://dl.ricohsoftware.com/downloads/aa9a248e-101c-4aa6-b109-1cf7403f3b4f).
Conclusione
Con NTi, lo sviluppo di soluzioni su misura per la gestione dei file di spool su IBM i diventa non solo più rapido, ma anche più semplice ed efficace. Come si può vedere dal nostro esempio, in poche righe siamo riusciti a mettere in atto una soluzione efficace e facilmente adattabile che semplifica notevolmente la gestione dei file di spool. Questo approccio può essere personalizzato per soddisfare le esigenze specifiche dei vostri progetti, senza complessità tecniche.
Per saperne di più e provare NTi, non esitate a contattarci.
Quentin Destrade