Hosting

Das Hosting einer GP-Komponente teilt sich in die Bereiche der Benutzeroberflächen, Workflows und Services auf.

Hosting von UIs

Das Hosting der PresentationEngine erfolgt derzeit über den IIS. Dabei hat diese einen dedizierten Anwendungspool namens Schleupen Presentation. In den konkreten Worker-Prozessen (w3wp.exe) sind die Bestandteile der einzelnen GP-Komponenten enthalten. 

Hosting von UIs

Ausgeführt werden diese Worker-Prozesse auf Hosts mit der DeploymentRolle PresentationServer.

Besonderheit:

Die Assemblies für die UIs der einzelnen GP-Komponenten werden im sogenannten PR.Storage (%ProgramData%\Schleupen.CS\PR.Storage) abgelegt und in die PresentationEngine auf Anforderung geladen. Die Anforderung kann das Laden eines DialogFlows, DialogSteps etc. sein.

Hosting von Workflows

Hingegen werden Workflows über MassTransit in den Prozessen "Schleupen.CS.PI.BPE.Workflows.MassTransit.WorkflowHostCli.exe" gehostet, die wiederum durch den sogenannten ProcessHost verwaltet werden.

Der ProcessHost ist ein Windows-Dienst, der auf einem Host mit der Deploymentrolle WorkflowBackendServer ausgeführt wird.

Unter C:\ProgramData\Schleupen.CS\Nomad\Jobs liegenden die Beschreibungen, die bestimmen, welche WorkflowHosts ("WorkflowHostCli.exe"s) durch den ProcessHost gestartet werden.

Der ProcessHost startet dann anhand dieser Jobbeschreibungen die Prozesse: 

Ein Jobbeschreibung hat dabei z.B. folgenden Inhalt:

job "Schleupen.CS.its_Workflows" {
    type = "service"
    task "wf" {
    config {
        command = "C:\\Program Files\\Schleupen\\Schleupen.CS.PI.BPE.Workflows.MassTransit\\WorkflowHosting\\Schleupen.CS.PI.BPE.Workflows.MassTransit.WorkflowHostCli.exe"
        args    = ["--Name", "Schleupen.CS.its"]
    }
    restart {
        interval = "10m"
        attempts = 10
        delay    = "15s"
        mode     = "delay"
    }
  }
}

Der Beispiel-Parameter "Schleupen.CS.its" für die "WorkflowHostCli.exe" fungiert dabei als Filterkritierium der Workflows, die sich unter dem Verzeichnis %Programdata%\Schleupen.CS\Workflows durch die Installation abgelegt werden und in dem "WorkflowHostCli.exe" dann gehostet werden.

Das "WorkflowHostCli.exe" startet dabei jeweils einen "MassTransit-Host"​​' pro Workflow-Typ:

IBusControl busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
    cfg.Host(new Uri(RabbitMqConstants.Endpoints.HostAddress), "<a workflow type>", h =>
    {
        ...
    });

    cfg.ReceiveEndpoint("<a workflow type>", e =>
    {
        ...
    });
    ...
});

Damit ist ein Prozess jeweils Subscriber pro Workflow-Typ einer RabbitMQ-Queue.

Resilienzmechanismen

  • Retry-Mechanismus von MassTransit mit folgendem Verhalten: exponential backup. Nach Ablauf wird die Nachricht in den Deadletter-Store verschoben.
  • Transactional Outbox von MassTransit
  • Circuit Breaker bei der Zustellung von Nachrichten an die Consumer, siehe: Killswitch

Anmerkung: Wir befinden uns derzeit auf dem Weg der Containerisierung! Das bedeutet, dass sich hier Änderungen von dieser Darstellung ergeben können. 

Hosting von Services

Die Services werden analog zu Services von Ländern gehostet und abgelegt: Siehe Hosting Länder.

Cookie Consent mit Real Cookie Banner