Einführung
Die Navigation in der Welt der IBM i-Systeme und insbesondere die Verwaltung von Spool-Dateien (oder Druckwarteschlangen-Dateien) kann sich oft als kompliziert erweisen, insbesondere wenn man versucht, sie in moderne Anwendungen zu integrieren. Historisch bedingt erfordert diese Integration eine gründliche Kenntnis der IBM i-System-APIs, wodurch der Zugang auf eine Nische von spezialisierten Entwicklern beschränkt ist.
Mit NTi ist es nun möglich, diese Verwaltung direkt aus einer .NET-Umgebung heraus in nur wenigen Zeilen zu vereinfachen und zu automatisieren.
In diesem Artikel stelle ich Ihnen eine neuartige, in NTi integrierte Methode zum Auflisten, Filtern und Herunterladen von Spool-Dateien mithilfe des Objekts NTiSpooledFile vor.
Kontext
Um eine vereinfachte Verwaltung von Spoule-Dateien mit .NET-Anwendungen zu ermöglichen, kapselt NTi speziell drei System-APIs: QUSCRTUS, QUSLSPL und QUSRTVUS, die eine Abstraktion bieten, die ihre Verwendung ohne tiefgehende Kenntnisse der IBM i-Befehle vereinfacht.
- QUSCRTUS : erstellt einen temporären Benutzerbereich zum Speichern von Daten.
- QUSLSPL : liste les fichiers spoules basés sur des critères définis.
- QUSRTVUS : listet Spoules-Dateien auf, die auf definierten Kriterien basieren.
Verwendung von NTi zur Verwaltung von Spole-Dateien
Die Methode ListSpooledFiles() wurde entwickelt, um das Auflisten von Spool-Dateien nach bestimmten Kriterien wie Ausgabewarteschlange, Benutzer, Formulartyp und Benutzerdaten zu erleichtern.
Schritt 1: Öffnen der NTi-Verbindung
In unserer Anwendung verwaltet der DBConnectionService die Verbindung mit der IBM i, indem er den erforderlichen Verbindungsstring extrahiert und NTiConnection initialisiert.
public class SpoolFilesService
{
private readonly NTiConnection _conn;
public SpoolFilesService(DbConnectionService dbConnection)
{
_conn = dbConnection.conn;
}
}
Schritt 2: Auflistung der Spool-Dateien
Wir können nun NTiSpooledFile verwenden, um die verfügbaren Spoules-Dateien abzufragen und aufzulisten. Dies geschieht durch Aufruf der Methode ListSpooledFiles(), die die Dateien nach den in den Parametern angegebenen Kriterien filtert.
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;
}
Schritt 3: Abrufen und Herunterladen von Daten aus Spool-Dateien
Für jede identifizierte Spool-Datei können die Daten mithilfe der Methode GetSpooledFileData(), die direkt mit dem Objekt NTiSpooledFile interagiert, abgerufen oder heruntergeladen werden.
public byte[] DownloadSpooledFile(NTiSpooledFile file)
{
try
{
_conn.Open();
return _conn.GetSpooledFileData(file);
}
catch (Exception ex)
{
Console.WriteLine($"Fehler beim Abrufen der Datei : {ex.Message}");
return null;
}
finally
{
if (_conn.State == ConnectionState.Open)
{
_conn.Close();
}
}
}
API-Controller
Ein API-Controller wird zum Abrufen und Verwalten von Spool-Dateien verwendet. Er ermöglicht es jeder beliebigen Webschnittstelle, Spool-Dateien mit den gewünschten Parametern aufzulisten oder herunterzuladen.
Für den Download wird ein Objekt mit Metadaten als Parameter übergeben, um die herunterzuladende Datei zu identifizieren.
[HttpPost("downloadFile")]
public IActionResult DownloadFile([FromBody] NTiSpooledFile file)
{
try
{
var data = _spoolFilesService.DownloadSpooledFile(file);
if (data == null || data.Length == 0)
{
return NotFound("Datei nicht gefunden.");
}
return File(data, "application/octet-stream", $"{file.FileName}.afp");
}
catch (Exception ex)
{
return StatusCode(500, $"Interner Serverfehler: {ex.Message}");
}
}
Verwendung des ADP Workbench Viewers zum Betrachten von Spool-Dateien.
Nachdem wir unsere Spoule-Datei heruntergeladen haben, verwenden wir zum effizienten Betrachten auf vereinfachte Weise den AFP Workbench Viewer für Windows, der hier verfügbar ist.
Fazit
Mit NTi wird die Entwicklung von maßgeschneiderten Lösungen für die Verwaltung von Spool-Dateien auf IBM i nicht nur schneller, sondern auch einfacher und effektiver. Wie Sie in unserem Beispiel gesehen haben, konnten wir in nur wenigen Zeilen eine effiziente und leicht anpassbare Lösung implementieren, die die Verwaltung von Spool-Dateien erheblich vereinfacht. Dieser Ansatz kann so angepasst werden, dass er ohne technische Komplexität genau auf die spezifischen Anforderungen Ihrer Projekte zugeschnitten ist.
Wenn Sie mehr erfahren und NTi ausprobieren möchten, wenden Sie sich bitte an Kontakt.
Quentin Destrade