Wie schreibt man einen VBScript-Code für M-Files Zwecke?
- Zur Berechnung von automatischen Eigenschaftswerten
- Zur automatische Validierung von Eigenschaftswerten
- Zur Auslösung von Statuswechseln
- Zur Ausführung von benutzerdefinierten Aktionen in einem Workflow-Status
- Zur Festlegung von benutzerdefinierten Bedingungen für Workflow-Status für Objekte, die in einen oder aus einem besagten Status versetzt werden müssen
- Zur Bestimmung von benutzerdefinierten Ereignissen, die ausgeführt werden, wenn bestimmte Ereignisse eintreten
Siehe die oben genannten Links für Anweisungen hinsichtlich dem Hinzufügen von VBScript-Code in jeder Instanz.
Sie können über M-Files API und VBScript auf Objekte zugreifen, die in der Dokumentenverwaltung vorhanden sind und diese verwalten, sofern die oben genannten Bedingungen gegeben sind.
VBScript Grundlagen
Nachfolgend finden einige elementare Grundlagen von VBScript, um Ihnen den Einstieg zu erleichtern. Beachten Sie, dass wir das Thema dabei nur sehr oberflächlich behandeln. Siehe Nützliche Ressourcen für weitere Informationen. Falls Sie ein Neuling sind auf dem Gebiet des Skriptens oder nicht vertraut sind mit den Konzepten von Variablen und Funktionen, kann es hilfreich sein, dass Sie zuerst eine Anleitung für Anfänger, wie beispielsweise Learn Beginning Scripting, lesen.
Anweisungen
Dim szPropertyName
szPropertyName = PropertyDef.Name
Falls Sie eine Anweisung in zwei Linien darstellen wollen, müssen Sie einen Unterstrich verwenden (_), um anzugeben, das die Anweisung auf der folgenden Zeile fortgesetzt wird: Err.Raise MFScriptCancel, _ "The document vault already contains an object with the same title. Please choose another title."
Kommentare
' Get the title of the object. Dim szCurrentTitle szCurrentTitle = oCurrentTitleProp.GetValueAsUnlocalizedTextEs ist dabei ratsam, einen Kommentar über der Codezeile anzubringen, die Ihres Erachtens für den Leser nicht unmittelbar verständlich ist.
Variablen
Dim
Schlüsselworts deklariert: Dim szCurrentTitlePropWerte werden Variablen durch Verwendung des Gleichheitszeichens (=) zugewiesen. Sie sollten Ihre Variablen immer festlegen, bevor Sie ihnen neue Werte zuweisen:
Dim szCurrentTitleProp
szCurrentTitleProp = PropertyValues.SearchForProperty( iTitleProperty ).GetValueAsUnlocalizedText
Sie können dazu die Option Explicit
Anweisung verwenden, um eine ausdrückliche Festlegung von allen Variablen zu erzwingen. Falls Sie versuchen, eine nicht deklarierte Variable zu verwenden, wenn Option Explicit
in Ihrem Skript aktiviert ist, funktioniert das Skript nicht. Das folgende Script funktioniert beispielsweise nicht, wenn die Variable szValue
nicht festgelegt wurde, bevor ihr ein Wert zugewiesen wird: Option Explicit
szValue = PropertyValue.GetValueAsUnlocalizedText
Falls Sie in M-Files skripten, steht Ihnen eine Anzahl von vordefinierten Variablen zur Verfügung. Die Variablen PropertyValue
können zum Beispiel dazu verwendet werden, um den Wert einer Eigenschaft festzulegen. Siehe Verfügbare VBScript-Variablen für eine vollständige Liste von vordefinierten Variablen.- „sz“ für Zeichenfolgen
- „o“ für Objekte
- „i“ für Integer
- „b“ für Boole‘sch
- "f" for Gleitkomma-Zahlen
- „d“ für Daten
Konstanten
Const iMaxNumberOfItems = 50
Beachten Sie, dass Sie einer Konstante einen Buchstabenwert zuweisen müssen. Sie können keine Variable, andere Konstante oder Funktion verwenden, um eine Konstante zu initialisieren.Objekte
Set
Anweisung zugewiesen. Sie können eine neue Instanz eines M-Files API-Objekts erstellen und dieses auf folgende Art und Weise einer Variablen zuweisen: Dim oTitleSearch
Set oTitleSearch = CreateObject( "MFilesAPI.SearchCondition" )
Objekte sind Komponenten, die ihre eigenen Eigenschaften und Methoden aufweisen. Methoden sind Funktionen, die zu einem spezifischen Objekt gehören und im Kontext mit diesem Objekt verwendet werden können. Andererseits dienen die Eigenschaften dazu, die Werte eines Objekts anzuzeigen oder festzulegen. Sie können auf die Eigenschaften und Methoden eines Objekts zugreifen, indem Sie die Punktnotation verwenden: oTitleSearch.Set oTitleExpression, MFConditionTypeEqual, oTitleTypedValueMethodenargumente wie
oTitleExpression
, MFConditionTypeEqual
, und oTitleTypedValue
im oben genannten Beispiel werden nach der Methode aufgelistet und durch Komma getrennt. Parameter werden entweder durch Wert oder Referenz weitergegeben. Falls eine Methode einen Parameter anhand eines Werts übernimmt, kopiert die Methode den Wert als Argument, weshalb der Originalwert unverändert bleibt. Falls andererseits eine Methode einen Parameter durch Referenz übernimmt, schlagen sich alle Änderungen, die die Methode auf das Argument ausüben kann auch in der Originalreferenz nieder. Der Wert Nothing
sollte verwendet werden, wenn der standardmäßige Parameterwert nicht benutzt werden kann.Wenn Sie in M-Files skripten, können Sie einen Vorteil aus den verfügbaren Objekten ziehen, die in VBScript und insbesondere in M-Files API verfügbar sind. Siehe die M-Files API-Dokumentation für weitere Einzelheiten.
Verknüpfung von Zeichenfolgen
&
Operator verwenden: ' Get proposal number. Dim szNumber szNumber = PropertyValues.SearchForProperty( 1156 ).TypedValue.DisplayValue ' Get customer. Dim szCustomer szCustomer = PropertyValues.SearchForProperty( 1288 ).TypedValue.DisplayValue ' Create proposal title. Dim szName szName = "Proposal #" & szNumber & " / " & szCustomerIn den oben genannten Beispielen, ist der vorgeschlagene Titel, der in der Variable
szName
gespeichert wird, das Resultat einer Verknüpfung der folgenden Zeichenfolgen:- Zeichenfolge aus Buchstaben
Proposal #
- die vorgeschlagene Nummer, die in der
szNumber
Variablen gespeichert ist - eine andere Zeichenfolge aus Buchstaben
/
- den in der
szCustomer
Variablen gespeicherten Kundennamen
VbCrLF
Konstante mit Ihren Zeichenfolgen verknüpfen: Err.Raise MFScriptCancel, _ "The document vault already contains an object with the same title." & VbCrLF & "Please choose another title."
Fehlermeldung ausgeben
Raise
Methode des Err
Objekts verwenden: Err.Raise MFScriptCancel, "The property """ & szPropertyName & """ must have a value of at least 10 characters."Die Methode übernimmt die Fehlernummer und Beschreibung als Parameter. Für M-Files Skriptzwecke wird die
MFScriptCancel
Variable verwendet, da sie die M-Files Fehlernummer speichert.„If“ Anweisungen
If
Anweisungen werden dazu verwendet, eine Gruppe von Anweisungen auszuführen, falls die Bedingung, die in der If
Anweisung festgelegt wurde, wahr ist: If Len( szValue ) < 10 Then Err.Raise MFScriptCancel, "The property """ & szPropertyName & """ must have a value of at least 10 characters." End IfDer „If“ Block muss mit einer
End If
Anweisung beendet werden. Alle Anweisungen zwischen If
und End If
werden ausgeführt falls die Bedingung, die zwischen If
und Then
festgelegt ist, als wahr gilt. Sie können den And
Operator verwenden, um zahlreiche Bedingungen festzulegen, die alle erfüllt sein müssen, damit der Block ausgeführt werden kann oder den Or
Operator verwenden, um zahlreiche Operatoren festzulegen, von denen einer wahr sein muss, damit der Block ausgeführt werden kann. Sie können folgende Vergleichsoperatoren benutzen, um die Bedingung festzulegen:==
prüft, ob der Wert der zwei Operanden gleich ist oder nicht. Falls ja, ist die Bedingung wahr.<>
prüft, ob der Wert der zwei Operanden gleich ist oder nicht. Falls nein, ist die Bedingung wahr.>
prüft, ob der Wert des linken Operanden größer ist als der Wert des rechten Operanden. Falls ja, ist die Bedingung wahr.<
prüft, ob der Wert des linken Operanden kleiner ist wie der Wert des rechten Operanden. Falls ja, ist die Bedingung wahr.>=
prüft, ob der Wert des linken Operanden größer oder gleich ist wie der Wert des rechten Operanden. Falls ja, ist die Bedingung "wahr"<=
prüft, ob der Wert des linken Operanden kleiner oder gleich ist wie der Wert des rechten Operanden. Falls ja, dann ist die Bedingung "wahr"
If
Anweisung innerhalb einer anderen If
, sagen wir einer Else
Anweisung verschachteln, oder die ElseIf
Anweisung benutzen, um eine tiefere logische Verzweigung in Ihrem Skript zu erreichen.Funktionen und Unterroutinen
Sub CloseFile() oMyFile.Close Set oMyFile = Nothing End SubOder Sie können eine Funktion definieren, um mehrmals einen Codeabschnitt zu verwenden, der einen bestimmten Wert ausgeben soll:
Function IsOdd( iValue ) If iValue MOD 2 = 0 Then ' Even value. IsOdd = False Else ' Odd value. IsOdd = True End If End FunctionUm eine Unterroutine oder Funktion in Ihrem Skript aufzurufen, einfach den Namen bezeichnen:
Closefile()
IsOdd( 5 )
Nützliche Ressourcen
- M-Files API-Dokumentation
- Verfügbare VBScript-Variablen
Die M-Files API-Dokumentation beinhaltet umfassendes Referenzmaterial für M-Files API-Objekte, Methoden, Schnittstellen, Eigenschaften und Aufzählungen, dass Sie diese vorteilhaft in VBScript-Codes verwenden können. Die genannte Ressource listet und erläutert andererseits alle Variablen mit zuvor festgelegten Werten auf, die sie direkt in Ihrem VBScript-Code übernehmen können.
Zusätzlich zu den bereits erwähnten Ressourcen können sich folgende externen Webseiten als hilfreich erweisen:
Beispiel
Option Explicit Dim szPropertyName, szValue szPropertyName = PropertyDef.Name szValue = PropertyValue.GetValueAsUnlocalizedText If Len( szValue ) < 10 Then Err.Raise MFScriptCancel, "The property """ & szPropertyName & """ must have a value of at least 10 characters." End IfZuerst werden die Variablen
szPropertyName
und szValue
deklariert, anschließend wird der Name der Eigenschaft und dessen Wert, den wir validieren, in den Variablen gespeichert, die wir soeben deklariert haben. Wir verwenden die GetValueAsUnlocalizedText
Methode (siehe die
M-Files API-Dokumentation für weitere Informationen), um den Eigenschaftswert als nicht lokalisierten Text zu erhalten. Unsere Bedingung zur Validierung des Eigenschaftswerts hängt davon ab, dass der Wert mindestens 10 Zeichen aufweisen muss. Wir evaluieren diese Bedingung nun anhand einer If
Anweisung. Wir haben in der Bedingung der If
-Anweisung festgehalten, dass die Länge der Eigenschaft weniger als 10 Zeichen betragen soll, damit die Anweisung innerhalb der If
-Anweisung ausgeführt wird. Falls ein Eigenschaftswert 10 Zeichen oder mehr aufweist, wird der If
Codeblock nicht ausgeführt und die Ausführung des Skripts ist damit beendet.
Im „If“ Block senden wir eine Fehlermeldung an den Benutzer, in der wir angeben, dass der Eigenschaftswert, den der Benutzer eingegeben hat, mindestens 10 Zeichen aufweisen muss, so dass der Benutzer deshalb dazu angehalten wird, einen längeren Wert einzugeben. Nach der Anzeige der Fehlermeldung, wird das Metadatenformular erneut eingeblendet und ermöglicht es dem Benutzer, die ungültigen Eigenschaftswerte zu ändern.
Für eine vollständige Anleitung zur Validierung von Eigenschaftswerten mit VBScript siehe Automatische Validierung der Eigenschaftswerte.