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 drei 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

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
✓ 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

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 (falls nicht vorhanden)
  • 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

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)
  • Verwendet den WinLine-Pfad für die Workflow-Schritt-Erstellung
  • Benötigt separate Mesonic WebService-Lizenz

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"
  },
  "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": "MesoWorker Scheduler",
    "MailWorkerJob": {
      "scheduler": "0/30 * * * * ?",
      "enabled": true,
      "startnow": false
    },
    "OrderLineWorkerJob": {
      "scheduler": "0 */5 * * * ?",
      "enabled": true,
      "startnow": false
    },
    "NoRuleWarningJob": {
      "scheduler": "0 0 8 * * ?",
      "enabled": true,
      "startnow": false
    },
    "AppointmentWorkerJob": {
      "scheduler": "0 */10 * * * ?",
      "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)
  • 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)
      - WinLineServer__Url=http://winline-server:8080
      
      # 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=MesoWorker 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__AppointmentWorkerJob__scheduler=0 */10 * * * ?
      - Quartz__AppointmentWorkerJob__enabled=true
      - Quartz__AppointmentWorkerJob__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 * * * * ? = Alle 30 Sekunden (Mail-Dienst)
  • 0 */5 * * * ? = Alle 5 Minuten (Workflow-Erzeugung)
  • 0 */10 * * * ? = Alle 10 Minuten (Terminsynchronisation)
  • 0 0 8 * * ? = Täglich um 8:00 Uhr (Überwachungsdienst)