Benachrichtigungen

Notifications dienen dazu, dass der Verwender der API über Ereignisse vom DMS-Server aus informiert wird. Für jedes unterstützte Ereignis existiert eine Action-Eigenschaft, welche man auf eine passende Handlermethode setzen kann. Die in diesem Dokument angegebenen Methodennamen für die Handler sind natürlich nur Beispiele.

Anmerkung zu Threading: Die Methoden werden aus einem beliebigen Thread heraus aufgerufen.

Anmerkung zu offline Notifications: Ab Documents.OnPremise Version 8.7.0 können die Notifications persistiert werden und die Notifications erreichen den Empfänger über eine persistente Queue, sodass der Empfänger keine Ereignisse verpasst, die der abonniert hat, auch wenn die Anwendung nicht läuft. Wenn die API Anwendung heruntergefahren wird oder abgestürzt ist, sollten die verpassten Ereignisse verfügbar sein, sobald die Anwendung wieder läuft. Nur Ereignisse, die erfolgreich verarbeitet wurden, werden aus der Persistenz entfernt.

Um Notifications zu persistieren und offline zur Verfügung zu stellen, muss eine persistente Queue angelegt werden, dafür muss in der Anwendung die folgende LSB-Konfigurationen für die Erstellung der persistenten Queue vorgenommen werden:

public class LsbConfig : ILsbConfiguration  
{  
    public string RabbitMqHostname { get; set; } = "localhost";  
    public int    RabbitMqPort     { get; set; } = 5672;  
    public string RabbitMqUsername { get; set; } = "stpuser";  
    public string RabbitMqPassword { get; set; } = "stp.";  
    public string PersistentIdentifier { get; }  = "main";  
    public ushort PersistentPrefetchCount { get; } = 1;  
    public bool   UsePersistentQueue { get; } = true;  
}

UsePersistentQueue = true : Eine persistente Queue wird angelegt. Die Notifications erreichen die Anwendung durch diese persistente Queue. PersistentIdentifier : Der Name der persistenten Queue. Falls kein Name vorgegeben ist, wird der Standard Name ‘main’ gesetzt. PersistentPrefetchCount : Anzahl der Threads, die Notifications verarbeiten. Standard Wert ist eins. Das ist dafür gedacht, um die Verarbeitungsreihfolge der Notifications zu garantieren. Wenn bspw. ein Dokument mehrmals hintereinander geändert wird, sollte mit PersistentPrefetchCount = 1 sicher gestellt werden, dass die Reihfolge von Notifications beim Empfänger erhalten bleibt. Nachteil mit dem Wert eins ist, dass die Verarbeitung von Notifications mehr Zeit kosten könnte. Wenn die Notifications Reihfolge der Anwendung nicht wichtig ist, kann ein Wert größer eins in der Config eingegeben werden, um bessere Performance zu erzielen. PersistentPrefetchCount darf jedoch nicht größer als CPU Anzahl sein.

Wenn der Aufrufer (API) die persistente Queue erwartet aber der Kunde noch eine ältere Documents.OnPremise Version(älter als 8.7.0) hat, funktionieren Notifications wie bisher (Online funktioniert alles), nur offline gehen die Events verloren.

Dokumentbenachrichtigungen

Dokument importiert

dms.Notifications.DocumentImported = DocumentImportedHandler;

Dieser Handler wird immer aufgerufen, wenn ein neues Dokument ins LEXolution.DMS importiert wurde. Als Argument erhält man die Dokumentdaten.

Dokument gelöscht

dms.Notifications.DocumentDeleted = DocumentDeletedHandler;

Dieser Handler wird immer aufgerufen, wenn ein Dokument ans LEXolution.DMS gelöscht wurde. Als Argument erhält man die Dokumentdaten.

Dokumentdaten geändert, Inhalt geändert

dms.Notifications.DocumentDataChanged = DocumentDataChangedHandler;
dms.Notifications.DocumentContentChanged = DocumentContentChangedHandler;

Dieser Handler wird immer aufgerufen, wenn ein Dokument geändert wurde. Unterschieden wird hier nach “Indexdaten” oder “Inhalt des Dokuments”. Als Argument erhält man die Dokumentdaten.

Neue Version für ein Dokument angelegt

dms.Notifications.DocumentNewVersionCreated = DocumentNewVersionCreatedHandler;

Dieser Handler wird immer aufgerufen, wenn der Inhalt eines Dokuments als neue Version gespeichert, oder ein komplett anderer Inhalt als neue Version importiert wurde. Als Argument erhält man die Dokumentdaten.

Akten-/Ordnerbenachrichtigungen

Die Behandlung erfolgt hier nicht nach Akten und Ordnern unterschieden. Darum lauten die Namen der Benachrichtigung ganz allgemein: Container.

Container erstellt

dms.Notifications.ContainerCreated = ContainerCreatedHandler;

Dieser Handler wird immer aufgerufen, wenn eine neue Akte oder ein neuer Ordner in LEXolution.DMS erstellt wurde. Als Argument erhält man die Containerdaten. Je nach tatsächlichem Typ müssen diese in DmsDossierData oder DmsFolderData gecastet werden.

Containerdaten geändert

dms.Notifications.ContainerDataChanged = ContainerDataChangedHandler;

Dieser Handler wird immer aufgerufen, wenn an einer Akte oder einem Ordner die Daten geändert wurden. Als Argument erhält man die Containerdaten. Je nach tatsächlichem Typ müssen diese in DmsDossierData oder DmsFolderData gecastet werden.

Container gelöscht

dms.Notifications.ContainerDeleted = ContainerDeletedHandler;

Dieser Handler wird immer aufgerufen, wenn eine Akte oder ein Ordner aus LEXolution.DMS gelöscht wurde. Als Argument erhält man die Containerdaten. Je nach tatsächlichem Typ müssen diese in DmsDossierData oder DmsFolderData gecastet werden.

Aufgabenbenachrichtigungen

Hier gibt es aktuell nur eine sehr allgemein gehaltene Benachrichtigung, wenn bei irgendeinem Benutzer/irgendeiner Gruppe Aufgaben erstellt/geändert/abgeschlossen/… wurden.

Aufgaben geändert

dms.Notifications.TasksChanged = TasksChangedHandler;

Dieser Handler wird immer aufgerufen, wenn an irgendeiner aktiven Aufgabe eine Änderung erfolgt ist, oder eine neue Aufgabe erstellt wurde. Es werden keine Daten mitgegeben. Der Verwender der API muss also die Liste der aktiven Aufgaben für den aktuellen Anwender neu laden. Die Benachrichtigung erfolgt nur dann, wenn es die Aufgabenliste des aktiven Benutzers betrifft.

Sonstige Benachrichtigungen

Zugriffsrechte geändert

dms.Notifications.AccessRightsChanged = AccessRightsChangedHandler;

Dieser Handler wird immer aufgerufen, wenn sich an einem beliebigen Objekt die Zugriffsrechte geändert haben. Als Argument erhält man die betroffenen Objekt-Ids und die neuen Zugriffsrechte. Objekte können sowohl Dokumente, als auch Akten oder Ordner sein.

Favoriten geändert

dms.Notifications.FavoriteChanged = FavoriteChangedHandler;

Dieser Handler wird immer aufgerufen, wenn Änderungen an den Favoriten des aktiven Benutzers gemacht wurden. Als Argument erhält man die gemachte Änderung.

Renditionbenachrichtigungen

Rendition erstellt

dms.Notifications.NewRenditionCreated = NewRenditionCreatedHandler;

Dieser Handler wird immer aufgerufen, wenn eine neue Rendition ins LEXolution.DMS importiert wurde. Als Argument erhält man die Renditiondaten.

Rendition geändert

dms.Notifications.RenditionChanged = RenditionChangedHandler;

Dieser Handler wird immer aufgerufen, wenn die Inhalt der Rendition geändert wurde. Als Argument erhält man die Renditiondaten.

Rendition gelöscht

dms.Notifications.RenditionDeleted = RenditionDeletedHandler;

Dieser Handler wird immer aufgerufen, wenn eine Rendition ans LEXolution.DMS gelöscht wurde. Als Argument erhält man die Renditiondaten.

Verknüpfung mit