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
MailWorkerJobfür automatischen E-Mail-Versand aus CRM-Workflows - Aktiviert
NoRuleWarningJobfür Warnungen bei fehlenden Mail-Empfängern
- Aktiviert
-
MESO-WSBELEG - Mesonic WorkerService Erweiterung Belegzeilenworkflows
- Aktiviert
OrderLineWorkerJobfür automatische Workflow-Erzeugung aus Bestelldateizeilen
- Aktiviert
-
MESO-WSGRAPH - Mesonic WorkerService Erweiterung Graph API Terminabgleich
- Aktiviert
AppointmentWorkerJobfür Terminsynchronisation über Microsoft Graph API
- Aktiviert
-
MESO-WSOP - Mesonic WorkerService Erweiterung Offene Posten
- Aktiviert
OpenItemWorkerJobfü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
WirdMussbeimvor dem ersten Startautomatischerstellt werden (fallssiehenichtDatenbank-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:
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.exenicht 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
MesoArchivWeb (optional):
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)
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-passmit Ihren Datenbankzugangsdaten - Ersetzen Sie
winline-server,winline-user,passwortmit Ihren WinLine-Zugangsdaten - Ersetzen Sie
12345undLIZENZNUMMERmit Ihrer Lizenz - Passen Sie
smtp.firma.de,smtp-user,smtp-passwortan 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=truenur temporär zur Fehlerdiagnose (siehe SMTP-Debug-Modus) - Wichtig für Linux-Container: Der
MesospoolServiceUrlist bei Linux-Containern zwingend erforderlich, da diemesospool.exeaus 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 Siesourcean Ihren WinLine-Server an. Der Container greift dann über/app/winlinedarauf zu.
Cron-Expressions für Job-Zeitplanung:
=0/30* * * * * ?AlleJede30 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)