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 dreivier 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-Übersichten und Mahnungen

    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, GraphApiGraphApi, 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
    • WirdMuss beimvor dem ersten Start automatisch erstellt werden (fallssiehe nichtDatenbank-Ersteinrichtung), vorhanden)alternativ automatische Erstellung bei entsprechenden DB-Berechtigungen
    • 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",
            "DefaultCompany": "500M",
            "ValidationInterval": "01:00:00"
          },
          "MailSettings": {
            "EmailFrom": "[email protected]",
            "DisplayName": "MesoWorkerService",
            "SmtpHost": "smtp.firma.de",
            "SmtpPort": 587,
            "SmtpUser": "smtp-user",
            "SmtpPass": "smtp-passwort",
            "UseSSL": false,
            "UseStartTls": true,
            "AdminMailRecipients": ["[email protected]"]
          },
          "SmtpDebug": {
            "Enabled": false,
            "SaveEmlToDirectory": ""
          },
          "Quartz": {
            "quartz.scheduler.instanceName": "MesoWorkerMeso Worker Services Scheduler",
            "MailWorkerJob": {
              "scheduler": "0/30* * * * * ?",
              "enabled": true,
              "startnow": true
            },
            "NoRuleWarningJob": {
              "scheduler": "0 0 8 * * ?",
              "enabled": true,
              "startnow": false
            },
            "OrderLineWorkerJob": {
              "scheduler": "0 */5 * * * ?",
              "enabled": true,
              "startnow": false
            },
            "NoRuleWarningJob": {
              "scheduler": "0 0 8 * * ?",
              "enabled": true,
              "startnow": falsetrue
            },
            "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 MailSettings: E-Mail-Versand-Konfiguration (wird meist über Admin-Oberfläche verwaltet) 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

        Portainer Stack Konfiguration

        Bei Container-Deployment erfolgt die Konfiguration über Umgebungsvariablen:

        version: '3.8'
        
        services:
          mesoworkerservice-ui:
            image: ghcr.io/css-edv-support/mesoworkerservice-blazor:latest
            container_name: mesoworkerservice-ui
            restart: unless-stopped
            ports:
              - "8012:5000"
            environment:
              - ASPNETCORE_ENVIRONMENT=Production
              - ASPNETCORE_URLS=http://+:5000
              - TZ=Europe/Berlin
              
              # Datenbank (erforderlich)
              - ConnectionStrings__ConnectionString=Data Source=SQL-SERVER;Initial Catalog=MesoWorkerDb;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true
              - ConnectionStrings__WinLineSystemDBConnectionString=Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true
        
          mesoworkerservice:
            image: ghcr.io/css-edv-support/mesoworkerservice-service:latest
            container_name: mesoworkerservice
            restart: unless-stopped
            ports:
              - "8013:5000"
            
            # Volume-Mapping für WinLine-Pfad (erforderlich für Linux-Container)
            volumes:
              - type: bind
                source: //winline-server/WinLine  # Windows UNC-Pfad
                target: /app/winline               # Linux-Mountpoint im Container
                read_only: true
            
            environment:
              # Container-Konfiguration
              - ASPNETCORE_ENVIRONMENT=Production
              - DOTNET_RUNNING_IN_CONTAINER=true
              - ASPNETCORE_URLS=http://+:5000
              - TZ=Europe/Berlin
              - LANG=de_DE.UTF-8
              
              # Lizenzierung (erforderlich)
              - LICENSE_CUSTOMER_NR=12345
              - LICENSE_LICENSE_NR=LIZENZNUMMER
              
              # Datenbankverbindungen (erforderlich)
              - ConnectionStrings__ConnectionString=Data Source=SQL-SERVER;Initial Catalog=MesoWorkerDb;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true
              - ConnectionStrings__WinLineSystemDBConnectionString=Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true
              
              # WinLine-Konfiguration (erforderlich)
              - WinLineSettings__WinLinePath=/app/winline/
              - WinLineSettings__MesospoolServiceUrl=http://winline-server:42024
              - WinLineSettings__TemplateForWorkflowImport=101
              
              # WinLine Server (optional, nur für Workflow-Schritte)Schritte und OP-Blatt)
              - WinLineServer__Url=http://winline-server:8080
        
              # MesoArchivWeb (optional, für Archiv-Anhänge)
              - MesoArchivWeb__BaseUrl=http://archiv-server:5000
              - MesoArchivWeb__JwtSecret=IHR-JWT-SECRET
        
              # Session-Einstellungen
              - SessionSettings__MinimumSessions=1
              - SessionSettings__DefaultUser=winline-user
              - SessionSettings__DefaultPassword=passwort
              - SessionSettings__DefaultCompany=500M
              - SessionSettings__ValidationInterval=01:00:00
              
              # E-Mail-Konfiguration (optional, kann über Admin-UI konfiguriert werden)
              - [email protected]
              - MailSettings__DisplayName=MesoWorkerService
              - MailSettings__SmtpHost=smtp.firma.de
              - MailSettings__SmtpPort=587
              - MailSettings__SmtpUser=smtp-user
              - MailSettings__SmtpPass=smtp-passwort
              - MailSettings__UseSSL=false
              - MailSettings__UseStartTls=true
              - [email protected]
        
              # SMTP-Debug-Modus (optional, nur zur Fehlerdiagnose)
              - SmtpDebug__Enabled=false
              - SmtpDebug__SaveEmlToDirectory=
        
              # Job-Konfiguration
              - Quartz__quartz.scheduler.instanceName=MesoWorkerMeso Worker Services Scheduler Production
              - Quartz__MailWorkerJob__scheduler=0/30* * * * * ?
              - Quartz__MailWorkerJob__enabled=true
              - Quartz__MailWorkerJob__startnow=false
              - Quartz__OrderLineWorkerJob__scheduler=0 */5 * * * ?
              - Quartz__OrderLineWorkerJob__enabled=true
              - Quartz__OrderLineWorkerJob__startnow=false
              - Quartz__NoRuleWarningJob__scheduler=0 0 8 * * ?
              - Quartz__NoRuleWarningJob__enabled=true
              - Quartz__NoRuleWarningJob__startnow=false
              - Quartz__OrderLineWorkerJob__scheduler=0 */5 * * * ?
              - Quartz__OrderLineWorkerJob__enabled=true
              - Quartz__OrderLineWorkerJob__startnow=true
              - Quartz__AppointmentWorkerJob__scheduler=0 */10 * * * ?
              - Quartz__AppointmentWorkerJob__enabled=true
              - Quartz__AppointmentWorkerJob__startnow=true
              - Quartz__OpenItemWorkerJob__scheduler=0 0 7 * * ?
              - Quartz__OpenItemWorkerJob__enabled=true
              - Quartz__OpenItemWorkerJob__startnow=false
              
              # Protokollierung
              - Logging__LogLevel__Default=Information
              - Logging__LogLevel__Microsoft.Hosting.Lifetime=Information
              - Serilog__MinimumLevel__Default=Information
              - Serilog__MinimumLevel__Override__Microsoft=Information
              - Serilog__MinimumLevel__Override__System=Warning
        
            healthcheck:
              test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
              interval: 3600s
              timeout: 10s
              retries: 3
              start_period: 60s
            
            deploy:
              resources:
                limits:
                  memory: 1G
                  cpus: '1.0'
                reservations:
                  memory: 512M
                  cpus: '0.5'
        

        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
        • Passen Sie smtp.firma.de, smtp-user, smtp-passwort an Ihren SMTP-Server an
        • Die E-Mail-Einstellungen können auch später über die Admin-Oberfläche konfiguriert werden
        • 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:

        • 0/30* * * * * ? = AlleJede 30 SekundenSekunde (Mail-Dienst)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)