Application Info
Der ApplicationInfoClient ermöglicht es, grundlegende Informationen über die ProcessCube® Engine abzurufen. Dies ist besonders nützlich für Health Checks, Version-Abfragen und die Ermittlung der verbundenen Authority-Adresse.
Client erstellen
using ProcessCube.Engine;
var engineAddress = "http://localhost:8000";
var client = ClientFactory.CreateApplicationInfoClient(engineAddress);Engine-Informationen abrufen
GetApplicationInfoAsync()
Ruft grundlegende Informationen über die Engine ab:
using ProcessCube.Engine;
var engineAddress = "http://localhost:8000";
var client = ClientFactory.CreateApplicationInfoClient(engineAddress);
// Engine-Informationen abrufen
var info = await client.GetApplicationInfoAsync();
Console.WriteLine($"Engine Name: {info.Name}");
Console.WriteLine($"Version: {info.Version}");
Console.WriteLine($"Description: {info.Description}");Die GetApplicationInfoAsync()-Methode benötigt keine Authentifizierung und kann für Health Checks verwendet werden.
Authority-Adresse ermitteln
GetAuthorityAddressAsync()
Ermittelt die Adresse der verbundenen Authority:
using ProcessCube.Engine;
var engineAddress = "http://localhost:8000";
var client = ClientFactory.CreateApplicationInfoClient(engineAddress);
// Authority-Adresse abrufen
var authorityAddress = await client.GetAuthorityAddressAsync();
Console.WriteLine($"Authority URL: {authorityAddress}");Wenn keine Authority konfiguriert ist, gibt die Methode null zurück.
Vollständiges Beispiel
using ProcessCube.Engine;
var engineAddress = "http://localhost:8000";
var client = ClientFactory.CreateApplicationInfoClient(engineAddress);
try
{
// Engine-Informationen abrufen
var info = await client.GetApplicationInfoAsync();
Console.WriteLine($"Process Engine: {info.Name} @ {info.Version}");
// Authority-Adresse ermitteln
var authorityAddress = await client.GetAuthorityAddressAsync();
if (authorityAddress != null)
{
Console.WriteLine($"Connected Authority: {authorityAddress}");
}
else
{
Console.WriteLine("Keine Authority konfiguriert");
}
}
catch (HttpRequestException ex)
{
Console.WriteLine($"Verbindungsfehler: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Fehler: {ex.Message}");
}Health Check Integration
Die Application Info API eignet sich ideal für Health Checks in ASP.NET Core:
using Microsoft.Extensions.Diagnostics.HealthChecks;
using ProcessCube.Engine;
public class ProcessCubeHealthCheck : IHealthCheck
{
private readonly string _engineAddress;
public ProcessCubeHealthCheck(string engineAddress)
{
_engineAddress = engineAddress;
}
public async Task<HealthCheckResult> CheckHealthAsync(
HealthCheckContext context,
CancellationToken cancellationToken = default)
{
try
{
var client = ClientFactory.CreateApplicationInfoClient(_engineAddress);
var info = await client.GetApplicationInfoAsync();
var data = new Dictionary<string, object>
{
{ "engine_name", info.Name },
{ "engine_version", info.Version }
};
return HealthCheckResult.Healthy(
$"Engine {info.Name} erreichbar",
data
);
}
catch (Exception ex)
{
return HealthCheckResult.Unhealthy(
"Engine nicht erreichbar",
ex
);
}
}
}
// Registrierung in Startup.cs
services.AddHealthChecks()
.AddCheck<ProcessCubeHealthCheck>("processcube_engine");Version-Kompatibilität prüfen
using ProcessCube.Engine;
using System.Text.RegularExpressions;
var engineAddress = "http://localhost:8000";
var client = ClientFactory.CreateApplicationInfoClient(engineAddress);
var info = await client.GetApplicationInfoAsync();
// Version parsen (z.B. "12.3.0")
var versionMatch = Regex.Match(info.Version, @"(\d+)\.(\d+)\.(\d+)");
if (versionMatch.Success)
{
var major = int.Parse(versionMatch.Groups[1].Value);
var minor = int.Parse(versionMatch.Groups[2].Value);
var patch = int.Parse(versionMatch.Groups[3].Value);
// Mindestversion prüfen
if (major >= 12)
{
Console.WriteLine("Engine-Version ist kompatibel");
}
else
{
Console.WriteLine("Warnung: Engine-Version könnte veraltet sein");
}
}ApplicationInfo Properties
Die ApplicationInfo-Klasse enthält folgende Properties:
| Property | Typ | Beschreibung |
|---|---|---|
Name | string | Name der Engine (z.B. “ProcessCube Engine”) |
Version | string | Versions-String (z.B. “12.3.0”) |
Description | string | Beschreibung der Engine-Instanz |
Best Practice: Rufen Sie die Engine-Informationen beim Anwendungsstart ab, um die Konnektivität zu prüfen und die Version zu loggen.
Fehlerbehandlung
using ProcessCube.Engine;
using ProcessCube.Engine.Client.Exceptions;
var engineAddress = "http://localhost:8000";
var client = ClientFactory.CreateApplicationInfoClient(engineAddress);
try
{
var info = await client.GetApplicationInfoAsync();
Console.WriteLine($"Engine: {info.Name} @ {info.Version}");
}
catch (HttpRequestException ex)
{
// Netzwerk-Fehler oder Engine nicht erreichbar
Console.WriteLine($"Verbindungsfehler: {ex.Message}");
Console.WriteLine("Prüfen Sie, ob die Engine läuft und die URL korrekt ist");
}
catch (TaskCanceledException ex)
{
// Timeout
Console.WriteLine($"Timeout: {ex.Message}");
}
catch (Exception ex)
{
// Sonstige Fehler
Console.WriteLine($"Unerwarteter Fehler: {ex.Message}");
}Nächste Schritte
- Prozess-Verwaltung - Prozesse auflisten und verwalten
- Authentifizierung - Mit Authority verbinden
- Getting Started - Grundlagen und Installation