
MESO-NotificationService
AddOn für die Mesonic WinLine ©
Stand: 11.03.2025
MESO-NotifierService Dokumentation
ℹ️ Download dieser Dokumentation als pdf
Übersicht
Der MESO-NotifierService Dienst (als Docker-Container) veröffentlicht
Redis Messages sobald Änderungen an
SQL-Tabellen (INSERT, UPDATE, DELETE) durchgeführt wurden. Dazu werden
frei konfigurierbare Tabellen oder MesoXPO©-Objekte überwacht und
entsprechende Nachrichten für INSERTED
,
UPDATED
und DELETED
an einen konfigurierbaren
Redis-Dienst und optional beliebige WebHooks gesendet.
Die zu überwachenden Tabellen und Spalten werden in der
appsettings.json
Datei bzw. der Docker-Compose
spezifiziert.
In dieser können sowohl manuell eigene Tabellen/Spalten zur Überwachung spezifiziert werden, als auch durch Angabe der im MESO-XPO Framework (© Tobias Forbrich - CSS EDV Support) enthaltenen Klassen-Bezeichnungen für alle bekannten Mesonic WinLine © Tabellen aus dem Repository automatisch alle Spalten der jeweiligen Tabelle überwacht werden.
Einsatzzwecke
Der Dienst richtet sich vor allem an Mesonic MDP - Partner, die (verteilte) Anwendungen entwickeln möchten, welche in Echtzeit auf Änderungen in WinLine© Daten reagieren möchten. Z.B. für Datenübertragungen an Fremdsysteme, Push-Benachrichtungen (SMS, eMail) etc.
C# Beispielcode
Ein Beispiel für einen Redis-Subscriber in C#, der Nachrichten vom Kanal “t170” abonniert und verarbeitet. Für die Implementierung wird hier die StackExchange.Redis-Bibliothek verwendet.
Hinzufügen der StackExchange.Redis-Bibliothek:
.Redis dotnet add package StackExchange
Beispielcode für einen Redis-Subscriber, der auf Änderungen in der T170 Tabelle reagiert:
using System;
using StackExchange.Redis;
using System.Text.Json;
// Eine mögliche C#-Klass für eine Entität der Tabelle t170
public class Fall
{
public string Mesocomp { get; set; }
public int Mesokey { get; set; }
public int Schrittnummer { get; set; }
public int Id { get; set; }
}
public class Message
{
public string Action { get; set; }
public string TableName { get; set; }
public string KeyValue { get; set; }
public DateTime Timestamp { get; set; }
public string EntityType { get; set; }
public Fall Entity { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Verbindung zu Redis herstellen
= ConnectionMultiplexer.Connect("localhost");
ConnectionMultiplexer redis
// Subscriber-Instanz erstellen
= redis.GetSubscriber();
ISubscriber subscriber
// Kanal abonnieren
.Subscribe("t170", (channel, message) =>
subscriber{
// JSON-Nachricht deserialisieren
var jsonMessage = message.ToString();
var deserializedMessage = JsonSerializer.Deserialize<Message>(jsonMessage);
// Verarbeiten der deserialisierten Nachricht
.WriteLine($"Action: {deserializedMessage.Action}");
Console.WriteLine($"TableName: {deserializedMessage.TableName}");
Console.WriteLine($"KeyValue: {deserializedMessage.KeyValue}");
Console.WriteLine($"Timestamp: {deserializedMessage.Timestamp}");
Console.WriteLine($"EntityType: {deserializedMessage.EntityType}");
Console.WriteLine($"Entity Mesocomp: {deserializedMessage.Entity.Mesocomp}");
Console.WriteLine($"Entity Fall-Id: {deserializedMessage.Entity.Id}");
Console// Weitere Felder nach Bedarf ausgeben
});
.WriteLine("Abonniert auf Kanal 't170'. Drücken Sie eine beliebige Taste, um zu beenden...");
Console.ReadKey();
Console}
}
Voraussetzungen
- Docker Host
- alternativ kann die Anwendung auch als .NET 8 Dienst für Windows bereitgestellt werden
- SQL Server ab 2016 mit den erforderlichen Berechtigungen um den
Message Broker für die
SqlTableDependency
einzurichten- Es wird dieses NuGet-Paket eingebunden
- Redis-Server zur Speicherung und Distribution der Datenänderungs-Nachrichten
Konfiguration
Der Dienst wird über die appsettings.json
Datei
konfiguriert. Unten ist eine Beispielkonfiguration aufgeführt.
In Docker werden die Einstellungen als Environment Variable aufgeführt.
appsettings.json
{
"ConnectionStrings": {
"WinLineConnectionString": "Data Source=demoserver;User ID=meso;Password=xxxxxxx;Initial Catalog=CWLDATEN",
"RedisConnectionString": "localhost:6379"
},
"AppSettings": {
"InstanceIdForRedisMessages": "DEMO",
"ForwardWebHookUrls": [
"https://hook1",
"https://hook2"
],
"MesoXpoObjectsToMonitor": [
"Projektstamm",
"CrmIncidencesUndSchritte"
],
"TablesToMonitor": [
{
"TableName": "t001",
"EntityName": "Company",
"KeyProperty": "Mesoprim",
"ColumnMappings": [
{
"ColumnName": "mesocomp",
"Name": "Mesocomp",
"Type": "System.String"
},
{
"ColumnName": "mesoyear",
"Name": "Mesoyear",
"Type": "System.Int32"
},
{
"ColumnName": "mesoprim",
"Name": "Mesoprim",
"Type": "System.String"
},
{
"ColumnName": "c000",
"Name": "Company",
"Type": "System.String"
}
]
},
{
"TableName": "t024",
"EntityName": "ProductBase",
"KeyProperty": "Mesoprim",
"ColumnMappings": [
{
"ColumnName": "mesocomp",
"Name": "Mesocomp",
"Type": "System.String"
},
{
"ColumnName": "mesoyear",
"Name": "Mesoyear",
"Type": "System.Int32"
},
{
"ColumnName": "mesoprim",
"Name": "Mesoprim",
"Type": "System.String"
},
{
"ColumnName": "c002",
"Name": "Number",
"Type": "System.String"
},
{
"ColumnName": "c003",
"Name": "Name",
"Type": "System.String"
},
{
"ColumnName": "c068",
"Name": "BatchOrSerialNumber",
"Type": "System.String"
},
{
"ColumnName": "c014",
"Name": "ExtensionFlag",
"Type": "System.Int32"
},
{
"ColumnName": "c038",
"Name": "InactiveSince",
"Type": "System.DateTime"
},
{
"ColumnName": "c071",
"Name": "DateCreated",
"Type": "System.DateTime"
},
{
"ColumnName": "c072",
"Name": "DateChanged",
"Type": "System.DateTime"
}
]
},
{
"TableName": "t055",
"EntityName": "Account",
"KeyProperty": "Mesoprim",
"ColumnMappings": [
{
"ColumnName": "mesocomp",
"Name": "Mesocomp",
"Type": "System.String"
},
{
"ColumnName": "mesoyear",
"Name": "Mesoyear",
"Type": "System.Int32"
},
{
"ColumnName": "mesoprim",
"Name": "Mesoprim",
"Type": "System.String"
},
{
"ColumnName": "c002",
"Name": "Number",
"Type": "System.String"
},
{
"ColumnName": "c003",
"Name": "Name",
"Type": "System.String"
},
{
"ColumnName": "c004",
"Name": "AccountType",
"Type": "System.String"
},
{
"ColumnName": "c086",
"Name": "DateCreated",
"Type": "System.DateTime"
},
{
"ColumnName": "c087",
"Name": "DateChanged",
"Type": "System.DateTime"
}
]
},
{
"TableName": "t043",
"EntityName": "PriceList",
"KeyProperty": "Mesokey",
"ColumnMappings": [
{
"ColumnName": "mesocomp",
"Name": "Mesocomp",
"Type": "System.String"
},
{
"ColumnName": "mesoyear",
"Name": "Mesoyear",
"Type": "System.Int32"
},
{
"ColumnName": "mesokey",
"Name": "Mesokey",
"Type": "System.Int32"
},
{
"ColumnName": "c000",
"Name": "ProductNumber",
"Type": "System.String"
},
{
"ColumnName": "c001",
"Name": "PriceType",
"Type": "System.String"
},
{
"ColumnName": "c002",
"Name": "PriceList",
"Type": "System.Int32"
},
{
"ColumnName": "c003",
"Name": "AccountNumber",
"Type": "System.String"
},
{
"ColumnName": "c004",
"Name": "ValidFrom",
"Type": "System.DateTime"
},
{
"ColumnName": "c005",
"Name": "ValidTo",
"Type": "System.DateTime"
},
{
"ColumnName": "c006",
"Name": "Quantity",
"Type": "System.Double"
},
{
"ColumnName": "c013",
"Name": "Price",
"Type": "System.Double"
},
{
"ColumnName": "c035",
"Name": "DateCreated",
"Type": "System.DateTime"
},
{
"ColumnName": "c036",
"Name": "DateChanged",
"Type": "System.DateTime"
}
]
}
]
}
}
ConnectionStrings
- WinLineConnectionString: Verbindungszeichenfolge für die zu überwachende SQL Server-Datenbank.
- RedisConnectionString: Verbindungszeichenfolge für den Redis-Server, an den Benachrichtigungen gesendet werden.
AppSettings
ForwardWebHookUrls
:Optionale Liste von WebHook-Urls, an welche die Json-Nachricht über eine Datenänderung weitergeletet werden soll (z.B. zur Integration in Automatisierungsplattformen).
MesoXpoObjectsToMonitor
:Liste der MESO-XPO Framework-Klassennamen, die überwacht werden sollen. Der Dienst überwacht automatisch alle in diesen Klassen angegebenen Eigenschaften mit Ausnahme von Memo-Feldern.
TablesToMonitor
:Liste der zu überwachenden Tabellen, einschließlich Spaltenzuordnungen.
Hinweis zur Auflistung
TablesToMonitor
Eigenschaft
TableName
:Tabellenname der zu überwachenden Tabelle in der Datenbank.
Eigenschaft
EntityName
:Klassenname der Entität, welcher in der Redis-Nachricht verwendet wird. Es dürfen hier keine Sonderzeichen oder Leerzeichen verwendet werden.
Eigenschaft
KeyProperty
Name der Eigenschaft aus den
ColumnMappings
welche in der Redis-Nachricht in der EigenschaftKeyValue
übertragen wirdEigenschaft
ColumnMappings
:Liste der zu überwachenden Spalten der Tablle
Hinweis zur Auflistung
ColumnMappings
Eigenschaft
ColumnName
:zu überwachende Spalte in der Tabelle.
Eigenschaft
Name
:Eigenschaftsname innerhalb der Entität, welcher in der Redis-Nachricht verwendet wird. Es dürfen hier keine Sonderzeichen oder Leerzeichen verwendet werden.
Eigenschaft
Type
:.NET Datentyp der Spalte
docker-compose Beispiel
version: '3.9'
services:
mesonotifier-demo:
image: ghcr.io/css-edv-support/mesonotificationservice:latest
container_name: mesonotifier-demo
restart: unless-stopped
hostname: mesonotifier-demo
ports:
- "8123:8080"
networks:
- proxy
environment:
- AppSettings__InstanceIdForRedisMessages=demo
- AppSettings__MesoXpoObjectsToMonitor__0=Projektstamm
- AppSettings__MesoXpoObjectsToMonitor__1=CrmIncidencesUndSchritte
- AppSettings__TablesToMonitor__0__ColumnMappings__0__ColumnName=mesocomp
- AppSettings__TablesToMonitor__0__ColumnMappings__0__Name=Mesocomp
- AppSettings__TablesToMonitor__0__ColumnMappings__0__Type=System.String
- AppSettings__TablesToMonitor__0__ColumnMappings__1__ColumnName=mesoyear
- AppSettings__TablesToMonitor__0__ColumnMappings__1__Name=Mesoyear
- AppSettings__TablesToMonitor__0__ColumnMappings__1__Type=System.Int32
- AppSettings__TablesToMonitor__0__ColumnMappings__2__ColumnName=mesoprim
- AppSettings__TablesToMonitor__0__ColumnMappings__2__Name=Mesoprim
- AppSettings__TablesToMonitor__0__ColumnMappings__2__Type=System.String
- AppSettings__TablesToMonitor__0__ColumnMappings__3__ColumnName=c000
- AppSettings__TablesToMonitor__0__ColumnMappings__3__Name=Company
- AppSettings__TablesToMonitor__0__ColumnMappings__3__Type=System.String
- AppSettings__TablesToMonitor__0__EntityName=Company
- AppSettings__TablesToMonitor__0__TableName=t001
- AppSettings__TablesToMonitor__1__ColumnMappings__0__ColumnName=mesocomp
- AppSettings__TablesToMonitor__1__ColumnMappings__0__Name=Mesocomp
- AppSettings__TablesToMonitor__1__ColumnMappings__0__Type=System.String
- AppSettings__TablesToMonitor__1__ColumnMappings__1__ColumnName=mesoyear
- AppSettings__TablesToMonitor__1__ColumnMappings__1__Name=Mesoyear
- AppSettings__TablesToMonitor__1__ColumnMappings__1__Type=System.Int32
- AppSettings__TablesToMonitor__1__ColumnMappings__2__ColumnName=mesoprim
- AppSettings__TablesToMonitor__1__ColumnMappings__2__Name=Mesoprim
- AppSettings__TablesToMonitor__1__ColumnMappings__2__Type=System.String
- AppSettings__TablesToMonitor__1__ColumnMappings__3__ColumnName=c002
- AppSettings__TablesToMonitor__1__ColumnMappings__3__Name=Number
- AppSettings__TablesToMonitor__1__ColumnMappings__3__Type=System.String
- AppSettings__TablesToMonitor__1__ColumnMappings__4__ColumnName=c003
- AppSettings__TablesToMonitor__1__ColumnMappings__4__Name=Name
- AppSettings__TablesToMonitor__1__ColumnMappings__4__Type=System.String
- AppSettings__TablesToMonitor__1__ColumnMappings__5__ColumnName=c068
- AppSettings__TablesToMonitor__1__ColumnMappings__5__Name=BatchOrSerialNumber
- AppSettings__TablesToMonitor__1__ColumnMappings__5__Type=System.String
- AppSettings__TablesToMonitor__1__ColumnMappings__6__ColumnName=c014
- AppSettings__TablesToMonitor__1__ColumnMappings__6__Name=ExtensionFlag
- AppSettings__TablesToMonitor__1__ColumnMappings__6__Type=System.Int32
- AppSettings__TablesToMonitor__1__ColumnMappings__7__ColumnName=c038
- AppSettings__TablesToMonitor__1__ColumnMappings__7__Name=InactiveSince
- AppSettings__TablesToMonitor__1__ColumnMappings__7__Type=System.DateTime
- AppSettings__TablesToMonitor__1__ColumnMappings__8__ColumnName=c071
- AppSettings__TablesToMonitor__1__ColumnMappings__8__Name=DateCreated
- AppSettings__TablesToMonitor__1__ColumnMappings__8__Type=System.DateTime
- AppSettings__TablesToMonitor__1__ColumnMappings__9__ColumnName=c072
- AppSettings__TablesToMonitor__1__ColumnMappings__9__Name=DateChanged
- AppSettings__TablesToMonitor__1__ColumnMappings__9__Type=System.DateTime
- AppSettings__TablesToMonitor__1__EntityName=ProductBase
- AppSettings__TablesToMonitor__1__TableName=t024
- AppSettings__TablesToMonitor__2__ColumnMappings__0__ColumnName=mesocomp
- AppSettings__TablesToMonitor__2__ColumnMappings__0__Name=Mesocomp
- AppSettings__TablesToMonitor__2__ColumnMappings__0__Type=System.String
- AppSettings__TablesToMonitor__2__ColumnMappings__1__ColumnName=mesoyear
- AppSettings__TablesToMonitor__2__ColumnMappings__1__Name=Mesoyear
- AppSettings__TablesToMonitor__2__ColumnMappings__1__Type=System.Int32
- AppSettings__TablesToMonitor__2__ColumnMappings__2__ColumnName=mesoprim
- AppSettings__TablesToMonitor__2__ColumnMappings__2__Name=Mesoprim
- AppSettings__TablesToMonitor__2__ColumnMappings__2__Type=System.String
- AppSettings__TablesToMonitor__2__ColumnMappings__3__ColumnName=c002
- AppSettings__TablesToMonitor__2__ColumnMappings__3__Name=Number
- AppSettings__TablesToMonitor__2__ColumnMappings__3__Type=System.String
- AppSettings__TablesToMonitor__2__ColumnMappings__4__ColumnName=c003
- AppSettings__TablesToMonitor__2__ColumnMappings__4__Name=Name
- AppSettings__TablesToMonitor__2__ColumnMappings__4__Type=System.String
- AppSettings__TablesToMonitor__2__ColumnMappings__5__ColumnName=c004
- AppSettings__TablesToMonitor__2__ColumnMappings__5__Name=AccountType
- AppSettings__TablesToMonitor__2__ColumnMappings__5__Type=System.String
- AppSettings__TablesToMonitor__2__ColumnMappings__6__ColumnName=c086
- AppSettings__TablesToMonitor__2__ColumnMappings__6__Name=DateCreated
- AppSettings__TablesToMonitor__2__ColumnMappings__6__Type=System.DateTime
- AppSettings__TablesToMonitor__2__ColumnMappings__7__ColumnName=c087
- AppSettings__TablesToMonitor__2__ColumnMappings__7__Name=DateChanged
- AppSettings__TablesToMonitor__2__ColumnMappings__7__Type=System.DateTime
- AppSettings__TablesToMonitor__2__EntityName=Account
- AppSettings__TablesToMonitor__2__TableName=t055
- AppSettings__TablesToMonitor__3__ColumnMappings__0__ColumnName=mesocomp
- AppSettings__TablesToMonitor__3__ColumnMappings__0__Name=Mesocomp
- AppSettings__TablesToMonitor__3__ColumnMappings__0__Type=System.String
- AppSettings__TablesToMonitor__3__ColumnMappings__1__ColumnName=mesoyear
- AppSettings__TablesToMonitor__3__ColumnMappings__1__Name=Mesoyear
- AppSettings__TablesToMonitor__3__ColumnMappings__1__Type=System.Int32
- AppSettings__TablesToMonitor__3__ColumnMappings__10__ColumnName=c013
- AppSettings__TablesToMonitor__3__ColumnMappings__10__Name=Price
- AppSettings__TablesToMonitor__3__ColumnMappings__10__Type=System.Double
- AppSettings__TablesToMonitor__3__ColumnMappings__11__ColumnName=c035
- AppSettings__TablesToMonitor__3__ColumnMappings__11__Name=DateCreated
- AppSettings__TablesToMonitor__3__ColumnMappings__11__Type=System.DateTime
- AppSettings__TablesToMonitor__3__ColumnMappings__12__ColumnName=c036
- AppSettings__TablesToMonitor__3__ColumnMappings__12__Name=DateChanged
- AppSettings__TablesToMonitor__3__ColumnMappings__12__Type=System.DateTime
- AppSettings__TablesToMonitor__3__ColumnMappings__2__ColumnName=mesokey
- AppSettings__TablesToMonitor__3__ColumnMappings__2__Name=Mesokey
- AppSettings__TablesToMonitor__3__ColumnMappings__2__Type=System.Int32
- AppSettings__TablesToMonitor__3__ColumnMappings__3__ColumnName=c000
- AppSettings__TablesToMonitor__3__ColumnMappings__3__Name=ProductNumber
- AppSettings__TablesToMonitor__3__ColumnMappings__3__Type=System.String
- AppSettings__TablesToMonitor__3__ColumnMappings__4__ColumnName=c001
- AppSettings__TablesToMonitor__3__ColumnMappings__4__Name=PriceType
- AppSettings__TablesToMonitor__3__ColumnMappings__4__Type=System.String
- AppSettings__TablesToMonitor__3__ColumnMappings__5__ColumnName=c002
- AppSettings__TablesToMonitor__3__ColumnMappings__5__Name=PriceList
- AppSettings__TablesToMonitor__3__ColumnMappings__5__Type=System.Int32
- AppSettings__TablesToMonitor__3__ColumnMappings__6__ColumnName=c003
- AppSettings__TablesToMonitor__3__ColumnMappings__6__Name=AccountNumber
- AppSettings__TablesToMonitor__3__ColumnMappings__6__Type=System.String
- AppSettings__TablesToMonitor__3__ColumnMappings__7__ColumnName=c004
- AppSettings__TablesToMonitor__3__ColumnMappings__7__Name=ValidFrom
- AppSettings__TablesToMonitor__3__ColumnMappings__7__Type=System.DateTime
- AppSettings__TablesToMonitor__3__ColumnMappings__8__ColumnName=c005
- AppSettings__TablesToMonitor__3__ColumnMappings__8__Name=ValidTo
- AppSettings__TablesToMonitor__3__ColumnMappings__8__Type=System.DateTime
- AppSettings__TablesToMonitor__3__ColumnMappings__9__ColumnName=c006
- AppSettings__TablesToMonitor__3__ColumnMappings__9__Name=Quantity
- AppSettings__TablesToMonitor__3__ColumnMappings__9__Type=System.Double
- AppSettings__TablesToMonitor__3__EntityName=PriceList
- AppSettings__TablesToMonitor__3__TableName=t043
- ConnectionStrings__RedisConnectionString=redisserver:6379
- ConnectionStrings__WinLineConnectionString=Data Source=<SERVER>;User ID=meso;Password=<Pass>;Initial Catalog=CWLDATEN
- Serilog__MinimumLevel__Default=Debug
- Serilog__MinimumLevel__Override__Microsoft=Information
- Serilog__MinimumLevel__Override__System=Warning
- Serilog__WriteTo__0__Name=Console
- Serilog__WriteTo__1__Args__path=logs/log-.txt
- Serilog__WriteTo__1__Args__rollingInterval=Day
- Serilog__WriteTo__1__Name=File
networks:
proxy:
external: true
Zur Erzeugung der Umgebungsvariablen ist dieses Tool Json to environment converter hilfreich.
Voraussetzungen
Für die Benachrichtigung werden SqlTableDependencies
erstellt, welche am SQL Server die Service Broker Funktionalität in
Verbindung mit Tabellen-Triggern erzeugt. Hierzu sind folgende
Vorraussetzungen nötig:
- Stellen Sie sicher, dass der SQL Server Service Broker für die Datenbank aktiviert ist:
ALTER DATABASE [Datenbankname] SET ENABLE_BROKER;
- Stellen Sie sicher, dass der im
WinLineConnectionString
angegebene Benutzerdb_owner
der Datenbank ist
USE DATABASE [Datenbankname];
'meso' sp_changedbowner
Hinweise zu den Redis Nachrichten
Es empfiehlt sich eine UI zur Überwachung der Redis-Datenbank, z.B. Redis Insight zu verwenden.

Channel-Namen
Die Channel werden mit der phyiskalischen Bezeichnung der Tabelle
benannt - z.B. T024
.
Nachrichteninhalt
Es wird eine Nachricht vom Typ DataEntityMessage
im
json
Format bereitgestellt, die folgende Eigenschaften
beinhaltet:
public record DataEntityMessage
{
public string InstanceId { get; set; }
public string Action { get; set; }
public string TableName { get; set; }
public string KeyValue { get; set; }
public DateTime Timestamp { get; } = DateTime.Now;
public string EntityType => Entity.GetType().Name;
public object Entity { get; set; }
}
Hierbei wird die Eigenschaft Entity
mit einem
generischin Typ auf Basis der Tabelleneigenschaften erzeugt.
Folgend eine Beispielnachricht für die Tabelle T055
, die
in o.g. Beispiel-Konfiguration manuell in den
TablesToMonitor
angegeben wurde:
{
"Action": "Updated",
"TableName": "t055",
"Timestamp": "2024-05-18T14:59:41.4975989+00:00",
"KeyValue": "10003-500M-1476",
"EntityType": "DynamicEntity_Account",
"Entity": {
"Mesocomp": "500M",
"Mesoyear": 1476,
"Mesoprim": "10003-500M-1476",
"Number": "10003",
"Name": "Auermann Sport GmbH",
"AccountType": "2",
"DateCreated": "2010-01-01T08:51:00",
"DateChanged": "2024-05-18T16:59:41"
}
}
Folgend eine Beispielnachricht für das Meso-XPO Objekt
Projektstamm
, welches in o.g. Beispiel-Konfiguration
manuell in den MesoXpoObjectsToMontior
angegeben wurde:
{
"InstanceId": "DEMO",
"Action": "Updated",
"TableName": "T060",
"KeyValue": "2024-0001-500M-1488",
"Timestamp": "2024-05-18T17:06:10.373056+02:00",
"EntityType": "DynamicEntity_Projektstamm",
"Entity": {
"Mesocomp": "500M",
"Mesoyear": 1488,
"Mesoprim": "2024-0001-500M-1488",
"Mesosafe": 0,
"ts": "AAAAAABQnhE=",
"ProjektEndePreSales": null,
"Bezeichnung1": "adfcsx",
"Typenflags": null,
"StatusPostSales": 0,
"Zusatzfelder": "060-2024-0001",
"ProjektEndePostSales": null,
"ProjektumfangPostsalesAktuell": 0,
"Projektverantwortlicher": 0,
"Bild": null,
"ProjektfortschrittSatzAktuell": 0,
"Aktionsliste": null,
"GuidEigenschaft": null,
"Parentkey": null,
"Kostentraeger": null,
"AbschlusswahrscheinlichkeitSatzAktuell": 0,
"InaktivSeit": null,
"Debitor": null,
"Projektnummer": "2024-0001",
"Vertreter": 0,
"EximKennzeichen": 1,
"Bezeichnung2": "bez 4",
"StatusPreSales": 0,
"KzKostentraegerErforderlich": 0,
"Projektgruppe": null,
"Usernr": 0,
"Zusatzleiste": "060-0000",
"ProjektumfangPresalesAktuell": 0,
"ProjektBeginn": "2024-05-18T00:00:00",
"KzKundenprojektKampagne": 0
}
}
Api Methoden
Der MESO-NotfierDienst stellt folgende Api-Methoden zur Verfügung
(sofern über die Docker-Konfiguration der Zugriff auf den internen
Standardport 8080
konfiguriert wurde:
ActiveChannels
Liefert alle redis-Kanäle, in welchen Nachrichten publiziert wurden (als Datensätze geändert/erzeugt/gelöscht wurden)
Beispiel
http://<Hostname>/redis/activechannels
messages/{channel}
Liefert alle Nachrichten im angegebenen Kanal
Beispiel http://<Hostname>/redis/messages/t055
subscribedchannels
Liefert alle Kanäle, die von einem Redis-Subscriber Abonniert wurden
Beispiel
http://<Hostname>/redis/subscribedchannels
Lizenzhinweise
MESO-NotifierService
Bitte wenden Sie sich hierzu an Ihren Mesonic-Partner oder an Tobias Forbrich - CSS EDV Support
NuGet-Paket: SqlTableDependency
Urheber: Copyright (c) 2017-2018 Christian Del Bianco. All rights reserved.
Lizenz: Dieses Paket wird unter der MIT-Lizenz verwendet. Die MIT-Lizenz erlaubt es, die Software zu nutzen, zu kopieren, zu verändern, zu fusionieren, zu veröffentlichen, zu vertreiben, zu unterlizenzieren und/oder zu verkaufen, solange die Urheberrechtsvermerke und die Erlaubnisvermerke in allen Kopien oder wesentlichen Teilen der Software enthalten sind.