Ereignishandler

Mit Ereignishandlern können Sie Vorgänge festlegen, die automatisch ausgeführt werden, wenn bestimmte Ereignisse eintreten. Zum Beispiel nachdem ein Objekt bearbeitet wurde oder bevor ein neues Werteliste-Element erstellt wird.

Wichtig: Wenn Sie neue Erweiterungen entwickeln oder bestehende bearbeiten, empfehlen wir, VBScript-Inhalte für zukünftige Kompatibilität durch Vault Application Framework (VAF)-kompatiblen Code zu ersetzen. Weitere Informationen zu den Vorteilen von VAF gegenüber VBScript finden Sie unter The Vault Application Framework in M-Files Developer Portal.

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.

So erstellen Sie einen Ereignishandler:

  1. M-Files Admin Öffnen.
  2. In der hierarchischen Ansicht auf der linken Seite, eine Verbindung zum M-Files Server erweitern.
  3. Öffnen Sie das Kontextmenü für eine Dokumentenverwaltung.
  4. Wählen Sie Ereignishandler aus.
    Ergebnis:Das Eventhandler Dialogfeld wird geöffnet.
  5. Wählen Sie Ereignishandler hinzufügen aus.
    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:Um einen neuen Ereignishandler zu erstellen, der immer dann aufgerufen wird, wenn ein neues Objekt erstellt wird, wählen Sie das EreignisBeforeCreateNewObjectFinalize aus.
    Für die Liste von verfügbaren Ereignissen und deren Beschreibung, siehe Verfügbare Ereignishandler
  7. Geben Sie in Name einen Namen für den neuen Ereignishandler ein und wählen Sie OK aus.
    Beispiel:Auf doppelt erstellte Titel prüfen.
    Falls Sie mehr als einen Ereignishandler des gleichen Typs haben, können Sie die Ausführungsreihenfolge durch Auswahl des Ereignishandlers im Dialogfeld Ereignishandler und Klicken auf die Auf- bzw. Ab-Schaltfläche ändern.
  8. Klicken Sie zurück im Ereignishandler Dialogfeld auf Details.
    Ergebnis:Das Dialogfeld VBScript – Details wird geöffnet.
  9. Geben Sie den Code ein, der ausgeführt werden soll, wenn der Ereignishandler aufgerufen wird, und schließen Sie anschließend das Dialogfeld VBScript – Details.
    Beispiel:Dieser Code im Ereignis BeforeCreateNewObjectFinalize könnte verwendet werden, um dem Benutzer in folgender Situation einen Fehler anzuzeigen: Sie sind dabei, ein Dokument zu erstellen (das Metadatenformular ist ausgefüllt und der Benutzer wählt Erstellen), und die Dokumentenverwaltung enthält ein Objekt mit demselben Titel:
    ' 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. Wählen Sie zurück im Dialogfeld Ereignishandler OK aus, um die Änderungen zu speichern und das Dialogfeld Ereignishandler zu schließen.
Der neue Ereignishandler wird der ausgewählten Dokumentenverwaltung hinzugefügt und Ihr Code wird immer dann ausgeführt, wenn der Ereignishandler aufgerufen wird.