Comment écrire le code VBScript code pour M-Files ?
- calcul des valeurs de propriétés automatiques
- validation automatique des valeurs de propriété
- changement des transitions d'étapes
- réalisation d’actions personnalisées dans une étape de workflow
- indication de conditions personnalisées pour les étapes de workflow pour les objets à déplacer dans ledit état ou hors de ce dernier
- définition d’événements personnalisés qui sont exécutés lorsque des événements spécifiques ont lieu
Cliquez sur les liens ci-dessus pour obtenir des instructions sur l’ajout du code VBScript dans chaque cas.
Vous pouvez accéder aux objets contenus dans le coffre et les gérer au moyen d’API et de VBScript de M-Files dans les circonstances susmentionnées.
Principes de base VBScript
Vous trouverez ci-dessous quelques rudiments de VBScript pour vous permettre de démarrer. Veuillez noter que nous ne faisons ici qu’effleurer le sujet. Consultez Ressources utiles pour de plus amples instructions. Si vous débutez dans le scriptage et n’êtes pas familiarisé avec les concepts tels que les variables et les fonctions, il peut être utile de lire tout d’abord un guide de scriptage pour débutant comme Learn Beginning Scripting.
Expressions
Dim szPropertyName
szPropertyName = PropertyDef.Name
Si vous souhaitez diviser une expression en plusieurs lignes, vous pouvez utiliser le tiret bas (_) pour indiquer qu’une expression se poursuit à la ligne suivante :Err.Raise MFScriptCancel, _ "The document vault already contains an object with the same title. Please choose another title."
Commentaires
' Get the title of the object. Dim szCurrentTitle szCurrentTitle = oCurrentTitleProp.GetValueAsUnlocalizedTextIl s’agit d’une bonne approche pour ajouter un commentaire au-dessus de toute ligne d’un code qui ne vous semble pas être instinctivement évident pour le lecteur.
Variables
Dim
: Dim szCurrentTitlePropLes valeurs sont assignées aux variables à l’aide du signe égal (=). Vous devriez toujours déclarer vos variables avant de leur assigner de nouvelles valeurs :
Dim szCurrentTitleProp
szCurrentTitleProp = PropertyValues.SearchForProperty( iTitleProperty ).GetValueAsUnlocalizedText
Vous pouvez utiliser l’expression Option Explicit
pour forcer une déclaration explicite de toutes les variables. Si vous essayez d’utiliser une variable non déclarée lorsque Option Explicit
est activé dans votre script, votre script ne fonctionnera pas. Par exemple, le script suivant ne fonctionnerait pas puisque la variable szValue
n’a pas été déclarée avant de lui assigner une valeur :Option Explicit
szValue = PropertyValue.GetValueAsUnlocalizedText
Si vous effectuez le scriptage dans M-Files, vous avez un nombre de variables prédéfinies à votre disposition. La variable PropertyValue
peut, par exemple, être utilisée pour récupérer la valeur d’une propriété. Consultez Variables VBScript disponibles pour obtenir la liste complète des variables prédéfinies.- "sz" pour les textes
- "o" pour les objets
- "i" pour les nombres entiers
- "b" pour les booléens
- "f" pour les nombres flottants
- "d" pour les dates
Constantes
Const iMaxNumberOfItems = 50
Veuillez noter que vous devez assigner une valeur littérale à une constante. Vous ne pouvez pas utiliser de variable, une autre constante ou une fonction pour initialiser une constante.Objets
Set
. Vous pouvez créer une nouvelle instance d’un objet API de M-Files et l’assigner à une variable de la façon suivante :Dim oTitleSearch
Set oTitleSearch = CreateObject( "MFilesAPI.SearchCondition" )
Les objets sont des composants qui ont leurs propres propriétés et méthodes. Les méthodes sont des fonctions qui appartiennent à un objet spécifique et qui peuvent être utilisées dans le contexte de l’objet. Les propriétés sont, quant à elles, utilisées pour afficher ou configurer les valeurs d’un objet. Vous pouvez accéder aux propriétés et méthodes d’un objet à l’aide d’une notation par points :oTitleSearch.Set oTitleExpression, MFConditionTypeEqual, oTitleTypedValueLes arguments d’une méthode comme
oTitleExpression
, MFConditionTypeEqual
et oTitleTypedValue
dans l’exemple ci-dessus sont listés après la méthode et sont séparés par une virgule. Les paramètres sont transmis soit par une valeur soit par une référence. Si une méthode prend un paramètre comme valeur, la méthode copie la valeur transmise en tant qu’argument et la valeur originale n’est de la sorte pas modifiée. Si, par contre, une méthode prend un paramètre comme référence, tout changement provoqué par la méthode sur l’argument a également un impact sur la référence originale. La valeur Nothing
doit être utilisée si la valeur par défaut du paramètre est utilisée.Lors du scriptage dans M-Files, vous tirerez profit des objets disponibles dans VBScript et, plus important encore, des objets disponibles dans l’API de M-Files. Reportez-vous à la documentation M-Files API pour obtenir des informations complètes.
Concaténer des textes
&
:' 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 & " / " & szCustomerDans l’exemple ci-dessus, le titre de proposition, enregistré dans la variable
szName
, est le résultat de la concaténation des textes suivants :- texte littéral
Proposal #
- le numéro de proposition, enregistré dans la variable
szNumber
- un autre texte littéral
/
- le nom du client, enregistré dans la variable
szCustomer
VbCrLF
avec vos textes :Err.Raise MFScriptCancel, _ "The document vault already contains an object with the same title." & VbCrLF & "Please choose another title."
Génération d’erreurs
Raise
de l’objet Err
:Err.Raise MFScriptCancel, "The property """ & szPropertyName & """ must have a value of at least 10 characters."La méthode prend le numéro et la description de l’erreur pour paramètres. À des fins de scriptage M-Files, la variable
MFScriptCancel
est utilisée puisqu’elle enregistre le numéro de l’erreur de M-Files.Expressions If
If
sont utilisées pour exécuter un groupe d’expressions si la condition indiquée dans l’expression If
s’avère vraie :If Len( szValue ) < 10 Then Err.Raise MFScriptCancel, "The property """ & szPropertyName & """ must have a value of at least 10 characters." End IfLe bloc If doit terminer avec une expression
End If
. Toutes les expressions comprises entre If
et End If
sont exécutées si la condition indiquée entre If
et Then
s’avère vraie. Vous pouvez utiliser l’opérateur And
pour indiquer plusieurs conditions qui doivent toutes être vraies pour que le bloc If soit exécuté ou bien l’opérateur Or
pour indiquer plusieurs opérateurs, dont l’un doit être vrai pour que le bloc if soit exécuté. Vous pouvez utiliser les opérateurs de comparaison suivants pour définir la condition :==
vérifie si la valeur de deux opérandes est identique ou non ; si c’est le cas, la condition est vraie.<>
vérifie si la valeur de deux opérandes est identique ou non ; si ce n’est pas le cas, la condition est vraie.>
vérifie si la valeur de l’opérande de gauche est supérieure à la valeur de l’opérande de droite ; si c’est le cas, la condition est vraie.<
vérifie si la valeur de l’opérande de gauche est inférieure à la valeur de l’opérande de droite ; si c’est le cas, la condition est vraie.>=
vérifie si la valeur de l’opérande de gauche est supérieure ou égale à la valeur de l’opérande de droite ; si c’est le cas, la condition est vraie.<=
vérifie si la valeur de l’opérande de gauche est inférieure ou égale à la valeur de l’opérande de droite ; si c’est le cas, la condition est vraie.
If
à l’intérieur d’une autre expression If
ou d’une expression Else
par exemple, ou bien vous pouvez utiliser une expression ElseIf
pour créer une logique arborescente plus poussée dans votre script.Fonctions et sous-programmes
Sub CloseFile() oMyFile.Close Set oMyFile = Nothing End SubVous pouvez sinon définir une fonction pour utiliser plusieurs fois une section de code qui renvoie une valeur d’un certain type :
Function IsOdd( iValue ) If iValue MOD 2 = 0 Then ' Even value. IsOdd = False Else ' Odd value. IsOdd = True End If End FunctionPour faire appel à un sous-programme ou à une fonction dans votre script, il vous suffit de vous y référer par son nom :
Closefile()
IsOdd( 5 )
Ressources utiles
- Documentation M-Files API
- Variables VBScript disponibles
La documentation API de M-Files est une référence exhaustive aux objets API, méthodes, interfaces, propriétés et énumérations de M-Files dont vous pouvez tirer profit au sein du code VBScript. La dernière ressource, quant à elle, liste et explique toutes les variables avec les valeurs préassignées que vous pouvez facilement utiliser dans votre code VBScript.
En sus des deux ressources susmentionnées, les sites externes suivants peuvent vous être utiles :
Exemple
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 IfTout d’abord, les variables
szPropertyName
et szValue
sont déclarées. Ensuite, le nom de la propriété et la valeur correspondante que nous validons sont enregistrés dans les variables que nous venons de déclarer. Nous utilisons la méthode GetValueAsUnlocalizedText
(reportez-vous à la documentation
M-Files API pour plus d'informations) pour obtenir la valeur de propriété en tant que texte non localisé. Notre condition pour valider la valeur de la propriété : la valeur doit avoir au moins 10 caractères. Nous évaluons cette condition dans une expression If
. Nous avons défini dans la condition de l’expression If
que la longueur de la propriété doit être inférieure à 10 caractères pour que l’expression à l’intérieur de l’expression If
puisse être exécutée. Si la valeur de la propriété a 10 caractères ou plus, le bloc du code If
n’est pas exécuté et l’exécution du script est terminée.
Dans le bloc If, nous envoyons un message d’erreur à l’utilisateur dans lequel nous indiquons que la valeur de la propriété saisie par l’utilisateur doit avoir au moins 10 caractères ; on enjoint de la sorte à l’utilisateur d’ajouter une valeur plus longue. Une fois le message d’erreur affiché, la fiche de métadonnées s’affiche de nouveau, ce qui permet à l’utilisateur de modifier la valeur de la propriété non valide.
Pour obtenir des instructions complètes sur la validation des valeurs de propriété avec VBScript, consultez Validation automatique des valeurs de propriété.