Ereignishandler

Mithilfe der Ereignishandler können Sie unterschiedliche Vorgänge definieren, die dann ausgeführt werden, wenn ein bestimmtes Ereignis eintritt, z. B. dann, wenn ein Objekt geändert wird, bevor ein neues Element in der Werteliste erstellt wird. Die Vorgänge werden mittels Variablen, allgemeinen Funktionen von VBScript und der M-Files API festgelegt.

Beispiele für die Verwendung von Ereignishandlern:

  • Objektberechtigungen können so festgelegt werden, dass sie sich automatisch ändern, wenn die Objekteigenschaften geändert werden.
  • Bestimmte grundlegende Dokumente können über ein vordefiniertes Projektmodell zu jedem neuen Projekt hinzugefügt werden.
  • Bestimmte Worddokumente können immer als PDF-Dateien gespeichert werden, sodass eine Worddatei beim Einchecken auch auf dem Server immer als PDF-Datei gespeichert wird.
  • Fotodaten, z. B. Datum und Bildgröße, können den Metadaten des Fotodokuments automatisch hinzugefügt werden.
  • Wenn der Benutzer der Werteliste einen neuen Wert hinzufügt, kann mithilfe des Ereignishandlers überprüft werden, ob der hinzugefügte Wert korrekt eingegeben wurde.
  • Das Anmelden bei M-Files außerhalb der Arbeitszeit, z. B. nachts oder an Wochenenden, kann verhindert werden.
  • Das Herunterladen bestimmter Dateien kann überwacht, das Herunterladen einer großen Anzahl an Dateien verhindert oder ein Alarm bezüglich verdächtiger Downloads an den Administrator gesendet werden.
Hinweis: Die M-Files API Dokumentation ist online verfügbar: M-Files API. Weitere Information über die Anwendung von VBScript in M-Files finden Sie im Wie schreibt man einen VBScript-Code für M-Files Zwecke? Tutorial.

Folgende Schritte ausführen, um einen neuen Ereignishandler zu erstellen:

  1. M-Files Admin öffnen.
  2. In der hierarchischen Ansicht auf der linken Seite, eine Verbindung zum M-Files Server erweitern.
  3. Mit der rechten Maustaste auf eine Dokumentenverwaltung klicken.
  4. Auf Ereignishandler klicken.
    Ergebnis:Das Eventhandler Dialogfeld wird geöffnet.
  5. Auf die Ereignishandler hinzufügen... Schaltfläche klicken.
    Ergebnis:Das Ereignishandler hinzufügen... Dialogfeld wird geöffnet.
  6. Das Ereignis auswählen Dropdown-Menü benutzen, um das Ereignis auszuwählen, für das ein Ereignishandler erstellt werden soll.
    Beispiel:Falls Sie einen neuen Ereignishandler erstellen wollen, der immer dann aufgerufen wird, wenn ein neues Objekt erstellt wird, das BeforeCreateNewObjectFinalize Ereignis auswählen.
    Für die Liste von verfügbaren Ereignissen und deren Beschreibung, siehe Verfügbare Ereignishandler
  7. Im Name Feld eine Beschreibung für den neuen Ereignishandler eintragen und auf OK klicken, um das Ereignishandler hinzufügen Dialogfeld zu schließen.
    Beispiel:Auf doppelt erstellte Titel prüfen.
    Falls Sie mehr als einen Ereignishandler des gleichen Typs haben, können Sie dessen Ausführungsbefehl durch Auswahl des Ereignishandlers im Ereignishandler Dialogfeld auswählen und anschließend die Auf- bzw. Ab-Schaltfläche an der rechten Ecke des Dialogfelds anklicken.
  8. Zurück im Ereignishandler Dialogfeld, auf Code bearbeiten klicken.
    Ergebnis:Das VBScript-Code bearbeiten Fenster wird geöffnet.
  9. Den auszuführenden Code eingeben, wenn der Ereignishandler aufgerufen wird und anschließend das VBScript bearbeiten Fenster schließen.
    Beispiel:Folgender Code sollte für das BeforeCreateNewObjectFinalize Ereignis benutzt werden, um dem Benutzer eine Fehlermeldung anzuzeigen, wenn ein neues Objekt erstellt wird (das Metadatenformular wird mit der erforderlichen Information ausgefüllt und der Benutzer klickt auf die Erstellen Schaltfläche) und in der Dokumentenverwaltung bereits ein Objekt mit demselben Titel vorhanden ist:
    ' The ID of the title property.
    
    Dim titleProperty
    titleProperty = MFBuiltInPropertyDefNameOrTitle
    
    ' Find the title property of the current object.
    
    Dim currentTitleProp
    currentTitleProp = PropertyValues.SearchForProperty(titleProperty)
    
    ' Get the title of the object.
    
    Dim currentTitle
    currentTitle = currentTitleProp.Value
    
    ' Search for objects on the basis of title.
    
    Dim titleSearch
    Set titleSearch = CreateObject("MFilesAPI.SearchCondition")
    Dim titleExpression
    Set titleExpression = CreateObject("MFilesAPI.Expression")
    titleExpression.SetPropertyValueExpression titleProperty, MFParentChildBehaviorNone, Nothing
    Dim titleTypedValue
    Set titleTypedValue = CreateObject("MFilesAPI.TypedValue")
    titleTypedValue.SetValue MFDatatypeText, currentTitle
    titleSearch.Set titleExpression, MFConditionTypeEqual, titleTypedValue
    Dim SearchResults
    Set SearchResults = Vault.ObjectSearchOperations.SearchForObjectsByCondition(titleSearch, false)
    
    ' If an existing object with the same title was found, raise an error.
    
    If SearchResults.Count > 1 Then
    
        Err.Raise MFScriptCancel, _
        "The document vault already contains an object with the same title. Please choose another title."
    
    End if
  10. Zurück im Ereignishandler Dialogfeld auf OK klicken, um die Änderungen zu speichern und das Ereignishandler Dialogfeld zu schließen.
Der neue Ereignishandler wird der Dokumentenverwaltung hinzugefügt und der von Ihnen definierte Code wird immer dann ausgeführt, wenn der Ereignishandler aufgerufen wird.