Direkt zum Hauptinhalt

Konfiguration

Die Konfiguration des MesoWorkerService erfolgt je nach Installationsmethode unterschiedlich:

  • Windows-Dienst: Über die Datei appsettings.json
  • Container: Über Umgebungsvariablen

Lizenzierung

Für den Betrieb des MesoWorkerService benötigen Sie eine gültige Lizenz, die Sie von Ihrem Mesonic Partner erhalten.

Erforderliche Angaben:

  • Kundennummer: Identifiziert den Lizenzinhaber
  • Lizenznummer: Aktiviert die Software

Wichtig: Ohne gültige Lizenz startet der Service nicht.

Verfügbare Module

Der MesoWorkerService besteht aus einem Basisprodukt und vier optionalen Modulen. Jedes Modul muss separat lizenziert werden:

Basisprodukt:

  • MESO-WorkerService - Grundfunktionalität des Dienstes (erforderlich)

Module:

  • MESO-WSMAIL - Mesonic WorkerService Erweiterung Mailservice

    • Aktiviert MailWorkerJob für automatischen E-Mail-Versand aus CRM-Workflows
    • Aktiviert NoRuleWarningJob für Warnungen bei fehlenden Mail-Empfängern
  • MESO-WSBELEG - Mesonic WorkerService Erweiterung Belegzeilenworkflows

    • Aktiviert OrderLineWorkerJob für automatische Workflow-Erzeugung aus Bestelldateizeilen
  • MESO-WSGRAPH - Mesonic WorkerService Erweiterung Graph API Terminabgleich

    • Aktiviert AppointmentWorkerJob für Terminsynchronisation über Microsoft Graph API
  • MESO-WSOP - Mesonic WorkerService Erweiterung Offene Posten

    • Aktiviert OpenItemWorkerJob für automatischen Versand von OP-Infos

Modulprüfung beim Start:

Beim Start des Services werden automatisch alle lizenzierten Module erkannt und nur die entsprechenden Jobs aktiviert. Im Log sehen Sie:

Licensed modules: Mail, OrderLine, GraphApi, OpenItem
✓ MESO-WSMAIL (Mailservice) - MailWorkerJob and NoRuleWarningJob will be activated
✓ MESO-WSBELEG (Belegzeilenworkflows) - OrderLineWorkerJob will be activated
✓ MESO-WSGRAPH (Graph API Terminabgleich) - AppointmentWorkerJob will be activated
✓ MESO-WSOP (Offene Posten) - OpenItemWorkerJob will be activated

Falls ein Modul nicht lizenziert ist, wird der entsprechende Job übersprungen:

Job MailWorkerJob requires module Mail which is not licensed - skipping registration

Hinweis: Das Basisprodukt MESO-WorkerService muss immer lizenziert sein. Die Module können je nach Bedarf einzeln oder in Kombination lizenziert werden.

Datenbankverbindungen

Der MesoWorkerService benötigt Zugriff auf zwei Datenbanken:

1. Anwendungsdatenbank (MesoWorkerDb)

  • Speichert Konfigurationsdaten, Mail-Journal und Protokolle
  • Wird beim ersten Start automatisch erstellt (SQL-Benutzer benötigt CREATE DATABASE-Rechte)
  • Connection String Format: Data Source=SERVER;Initial Catalog=MesoWorkerDb;...

2. WinLine Systemdatenbank (CWLSYSTEM)

  • Zugriff auf WinLine Mandanten und Systemdaten
  • Connection String Format: Data Source=SERVER;Initial Catalog=CWLSYSTEM;...

Authentifizierungsoptionen:

  • Windows-Authentifizierung: Integrated Security=true
  • SQL-Authentifizierung: User ID=user;Password=pass

Wichtig: Für Container-Deployment muss SQL-Authentifizierung verwendet werden, da Windows-Authentifizierung in Containern nicht unterstützt wird.

WinLine-Integration

WinLine-Pfad:

  • Pfad zur WinLine-Installation (z.B. C:\WinLine\ oder /app/winline/)
  • Erforderlich für Zugriff auf WinLine-Konfigurationsdateien
  • Wichtig für Container (Linux): Der WinLine-Pfad ist typischerweise eine Windows-UNC-Freigabe (z.B. \\winline-server\WinLine), die als Linux-Mountpoint oder Volume in den Container eingebunden werden muss
  • Wird auch für die Erstellung von CRM-Workflow-Schritten über den WinLine WebService benötigt

TemplateForWorkflowImport:

  • Template-ID (numerisch) für den Workflow-Import beim Erstellen von CRM-Workflow-Schritten
  • Wird vom Mail-Dienst (Workflow-Schritt-Erstellung) und von der Workflow-Erzeugung aus Bestelldateizeilen verwendet
  • Beispiel: 101 — muss einer gültigen Workflow-Vorlage in WinLine entsprechen
  • Bei Wert 0 oder fehlender Konfiguration wird die Workflow-Schritt-Erstellung übersprungen

Mesospool Service:

  • URL zum Mesospool-Service für Dokumentenarchivierung
  • Format: http://server:42024
  • Erforderlich für Anhang-Funktionen
  • Wichtig für Container (Linux): Bei Linux-Containern ist der Mesospool-Service zwingend erforderlich, da die unter WinLinePath vorhandene mesospool.exe nicht unter Linux lauffähig ist
  • Wird generell zur Konvertierung von Archiv-Dateien im WinLine .SPL-Format in PDF-Dateien verwendet
  • Falls keine .SPL-Dateien vorliegen, ist der Service optional

WinLine Server (optional):

  • URL zum WinLine WebService (z.B. http://server:8080)
  • Erforderlich wenn automatische CRM-Workflow-Schritte erstellt werden sollen (z.B. für Workflow-Erzeugung aus Bestelldateizeilen)
  • Erforderlich für den Download des OP-Blatts aus FIBU als PDF-Anhang im OP-Modul
  • Verwendet den WinLine-Pfad für die Workflow-Schritt-Erstellung
  • Benötigt separate Mesonic WebService-Lizenz

MesoArchivWeb (optional):

  • BaseUrl: URL zum MesoArchivWeb-Dokumentenarchiv (z.B. http://archiv-server:5000)
  • JwtSecret: Gemeinsames JWT-Secret für die Authentifizierung zwischen MesoWorkerService und MesoArchivWeb
  • Erforderlich für das Anhängen von Archiv-Dokumenten (Originalrechnungen) im OP-Modul und Mail-Dienst
  • Ermöglicht das Erzeugen externer Archiv-Links ({ArchivLinkExt:...}) in OP-Vorlagen

Session-Einstellungen:

  • Standard-Anmeldedaten für WinLine-Sessions
  • Mindestanzahl aktiver Sessions
  • Validierungsintervall für Sessions

Windows-Dienst Konfiguration

Bei der Windows-Dienst-Installation erfolgt die Konfiguration über die Datei appsettings.json:

{
  "Kestrel": {
    "Endpoints": {
      "Http": { "Url": "http://0.0.0.0:5000" }
    }
  },
  "License": {
    "CustomerNr": "12345",
    "LicenseNr": "LIZENZNUMMER"
  },
  "ConnectionStrings": {
    "ConnectionString": "Data Source=SQL-SERVER;Initial Catalog=MesoWorkerDb;Integrated Security=true;TrustServerCertificate=true",
    "WinLineSystemDBConnectionString": "Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;Integrated Security=true;TrustServerCertificate=true"
  },
  "WinLineSettings": {
    "WinLinePath": "C:\\WinLine\\",
    "MesospoolServiceUrl": "http://winline-server:42024",
    "TemplateForWorkflowImport": 101
  },
  "WinLineServer": {
    "Url": "http://winline-server:8080"
  },
  "MesoArchivWeb": {
    "BaseUrl": "http://archiv-server:5000",
    "JwtSecret": "IHR-JWT-SECRET"
  },
  "SessionSettings": {
    "MinimumSessions": 1,
    "DefaultUser": "winline-user",
    "DefaultPassword": "passwort",
    "ValidationInterval": "01:00:00"
  },
  "SmtpDebug": {
    "Enabled": false,
    "SaveEmlToDirectory": ""
  },
  "Quartz": {
    "quartz.scheduler.instanceName": "Meso Worker Services Scheduler",
    "MailWorkerJob": {
      "scheduler": "* * * * * ?",
      "enabled": true,
      "startnow": true
    },
    "NoRuleWarningJob": {
      "scheduler": "0 0 8 * * ?",
      "enabled": true,
      "startnow": false
    },
    "OrderLineWorkerJob": {
      "scheduler": "0 */5 * * * ?",
      "enabled": true,
      "startnow": true
    },
    "AppointmentWorkerJob": {
      "scheduler": "0 */10 * * * ?",
      "enabled": true,
      "startnow": true
    },
    "OpenItemWorkerJob": {
      "scheduler": "0 0 7 * * ?",
      "enabled": true,
      "startnow": false
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Information",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/MesoWorkerService-.txt",
          "rollingInterval": "Day"
        }
      }
    ]
  }
}

Wichtige Einstellungen:

  • Kestrel: Web-Server-Konfiguration (Standard: Port 5000)
  • License: Kundennummer und Lizenznummer (erforderlich)
  • ConnectionStrings: Datenbankverbindungen (erforderlich)
  • WinLineSettings: WinLine-Integration (erforderlich)
  • WinLineServer: URL zum WinLine WebService (optional, für Workflow-Schritte und OP-Blatt)
  • MesoArchivWeb: Verbindung zum Dokumentenarchiv (optional, für Archiv-Anhänge im OP-Modul und Mail-Dienst)
  • SessionSettings: WinLine-Session-Verwaltung
  • SmtpDebug: SMTP-Diagnose-Modus für E-Mail-Fehlerbehebung (siehe SMTP-Debug-Modus)
  • Quartz: Job-Zeitplanung für automatische Ausführungen (Cron-Expressions)
  • Logging/Serilog: Protokollierungseinstellungen

Umgebungsvariablen (Container-Deployment)

Bei Container-Deployment erfolgt die Konfiguration über Umgebungsvariablen. Eine vollständige Stack-Definition mit allen Umgebungsvariablen und Platzhaltern finden Sie in der Schritt-für-Schritt-Anleitung: Installation mit Portainer.

Konfigurationshinweise:

  • Ersetzen Sie SQL-SERVER, sql-user, sql-pass mit Ihren Datenbankzugangsdaten
  • Ersetzen Sie winline-server, winline-user, passwort mit Ihren WinLine-Zugangsdaten
  • Ersetzen Sie 12345 und LIZENZNUMMER mit Ihrer Lizenz
  • Die E-Mail-Einstellungen (SMTP-Server, Absender etc.) werden über die Admin-Oberfläche konfiguriert
  • SmtpDebug: Aktivieren Sie SmtpDebug__Enabled=true nur temporär zur Fehlerdiagnose (siehe SMTP-Debug-Modus)
  • Wichtig für Linux-Container: Der MesospoolServiceUrl ist bei Linux-Containern zwingend erforderlich, da die mesospool.exe aus dem WinLinePath nicht unter Linux lauffähig ist. Dieser Service wird zur Konvertierung von WinLine .SPL-Archivdateien in PDF verwendet.
  • Volume-Mapping für WinLine-Pfad: Der WinLine-Pfad (typischerweise eine Windows-UNC-Freigabe wie \\winline-server\WinLine) muss als Volume in den Container eingebunden werden. Passen Sie source an Ihren WinLine-Server an. Der Container greift dann über /app/winline darauf zu.

Cron-Expressions für Job-Zeitplanung:

  • * * * * * ? = Jede Sekunde (Mail-Dienst, Standard)
  • 0 */5 * * * ? = Alle 5 Minuten (Workflow-Erzeugung)
  • 0 */10 * * * ? = Alle 10 Minuten (Terminsynchronisation)
  • 0 0 7 * * ? = Täglich um 7:00 Uhr (OP-Versand)
  • 0 0 8 * * ? = Täglich um 8:00 Uhr (Überwachungsdienst)