Händelsehanterare

Med händelsehanterare kan du definiera olika åtgärder som utförs när vissa händelser sker. Det gäller till exempel när ett objekt har modifierats eller innan ett nytt element i en värdelista skapas och så vidare. Åtgärderna anges med hjälp av variabler, allmänna funktioner i VBScript och M-Files API.

Exempel på hur händelsehanterare kan användas:

  • Objektbehörigheter kan ställas in så att de ändras automatiskt när objektegenskaper ändras.
  • Vissa grundläggande dokument kan läggas till i varje nytt projekt via en fördefinierad projektmodell.
  • Angivna Word-dokument kan alltid sparas som PDF-filer, så att när en Word-fil checkas in sparas den även i PDF-format på servern.
  • Data som är kopplade till foton, till exempel datum och bildstorlek, kan automatiskt läggas till i fotodokumentets metadata.
  • Om användaren lägger till ett nytt värde i värdelistan kan händelsehanteraren användas för att kontrollera att det tillagda värdet anges korrekt.
  • Du kan förhindra inloggning till M-Files utanför kontorstimmar, till exempel på kvällar och helger.
  • Du kan övervaka hur vissa filer hämtas, förhindra hämtning av ett stort antal filer eller ställa in så att ett larm om misstänkta hämtningar skickas till administratören.
Notera: Dokumentationen om M-Files API finns på www.m-files.com/api/documentation/latest. Mer information om att använda VBScript i M-Files finns i Hur skriver jag VBScript-kod för M-Files-syften?-självstudierna.

Gör följande steg för att skapa en ny händelsehanterare:

  1. Öppna M-Files Admin.
  2. I trädvyn på vänster sida visar du den önskade anslutningen till M-Files Server.
  3. Klicka på det dokumentvalv du vill ha (fortfarande i trädvyn på vänster sida) och välj Händelsehanterare i kontextmenyn.
    Resultat:Dialogrutan Händelsehanterare öppnas.
  4. Klicka på knappen Lägg till händelsehanterare....
    Resultat:Dialogrutan Lägg till händelsehanterare öppnas.
  5. Använd menyn Välj händelse för att välja den händelse som du vill skapa en händelsehanterare för.
    Exempel:Om du vill skapa en händelsehanterare som anropas när ett nytt objekt är på väg att skapas väljer du händelsen BeforeCreateNewObjectFinalize.
    Listan över tillgängliga händelser och deras beskrivningar finns i Tillgängliga händelsehanterare
  6. I fältet Namn anger du ett beskrivande namn för den nya händelsehanteraren och klickar på OK för att stänga dialogrutan Lägg till händelsehanterare.
    Exempel:Sök efter dubblettitlar.
    Om du har mer än en händelsehanterare av samma typ kan du ändra i vilken ordning allt utförs. Det gör du genom att välja händelsehanteraren i dialogrutan Händelsehanterare och klicka på uppåt- eller nedåtknappen längs det högre hörnet av dialogrutan.
  7. Tillbaka i dialogrutan Händelsehanterare klickar du på Redigera kod.
    Resultat:Fönstret Redigera VBScript-kod öppnas.
  8. Ange den kod som ska utföras när händelsehanteraren anropas och stäng sedan fönstret Redigera VBScript.
    Exempel:Följande kod i händelsen BeforeCreateNewObjectFinalize skulle kunna användas för att visa ett felmeddelande när användaren är på väg att skapa ett nytt objekt (det vill säga, metadatakortet fylls i med den nödvändiga informationen och användaren klickar på Skapa) och dokumentvalvet redan innehåller ett objekt med samma 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
  9. Tillbaka i dialogrutan Händelsehanterare klickar du på OK för att spara ändringarna och stänga dialogrutan Händelsehanterare.
Den nya händelsehanteraren läggs till i det valda dokumentvalvet och den kod som du har definierat utförs varje gång händelsehanteraren anropas.