Miten kirjoitan VBScript-koodin M-Filesia varten?
- automaattisten ominaisuusarvojen laskenta
- ominaisuuksien arvojen automaattinen tarkistus
- tilasiirtymien aktivointi
- mukautettujen toimintojen suorittaminen työnkulun tilassa
- mukautettujen ehtojen määritteleminen tiettyyn tilaan tai tietystä tilasta siirrettäville kohteille
- tiettyjen tapahtumien tapahtuessa suoritettavien mukautettujen tapahtumien määrittäminen
Edellä olevia linkkejä napsauttamalla näet ohjeet VBScript-koodin lisäämisestä kussakin tapauksessa.
Edellä mainituissa tapauksissa voit käyttää ja hallita dokumenttivarastossa olevia kohteita M-Files APIn ja VBScriptin avulla.
VBScriptin perusteet
Seuraavassa käsitellään VBScriptin perusasioita, joilla pääset alkuun. Huomaa, että tässä raapaistaan vain pintaa. Katso lisäohjeita kohdasta Hyödyllisiä ohjeita. Jos et ole kokenut komentosarjojen kirjoittaja etkä tunne muuttujien ja funktioiden kaltaisia käsitteitä, kannattaa lukea ensin aloittelijalle suunnattu opas, kuten Learn Beginning Scripting.
Lauseet
Dim szPropertyName
szPropertyName = PropertyDef.Name
Jos haluat jakaa lauseen eri riveille, voit käyttää alaviivaa (_) osoittamassa, että lause jatkuu seuraavalla rivillä:Err.Raise MFScriptCancel, _ "The document vault already contains an object with the same title. Please choose another title."
Kommentit
' Get the title of the object. Dim szCurrentTitle szCurrentTitle = oCurrentTitleProp.GetValueAsUnlocalizedTextHyvä periaate on lisätä kommentti kaikkien sellaisten koodirivien yläpuolelle, joiden merkityksen ymmärtämisessä lukijalla voi olla vaikeuksia.
Muuttujat
Dim
: Dim szCurrentTitlePropMuuttujille määritetään arvot yhtäsuuruusmerkillä (=). Sinun tulisi aina määritellä muuttujat, ennen kuin määrität niille uusia arvoja:
Dim szCurrentTitleProp
szCurrentTitleProp = PropertyValues.SearchForProperty( iTitleProperty ).GetValueAsUnlocalizedText
Option Explicit
-lauseella voit pakottaa käyttämään muuttujamäärittelyä. Jos yrität käyttää määrittelemätöntä muuttujaa komentosarjassa, jossa on käytössä Option Explicit
, komentosarja ei toimi. Esimerkiksi seuraava komentosarja ei toimi, koska muuttujaa szValue
ei ole määritelty, ennen kuin sille on määritelty arvo:Option Explicit
szValue = PropertyValue.GetValueAsUnlocalizedText
M-Files-komentosarjoja tehdessäsi sinulla on käytettävissä joukkoa ennalta määriteltyjä muuttujia. Voit käyttää esimerkiksi muuttujaa PropertyValue
ominaisuuden arvon hakemiseen. Katso täydellinen luettelo ennalta määritellyistä muuttujista kohdasta Käytettävissä olevat VBScript-muuttujat.- "sz" – merkkijono
- "o" – objekti
- "i" – kokonaisluku
- "b" – totuusarvo
- "f" – liukuluku
- "d" – päiväys
Vakiot
Const iMaxNumberOfItems = 50
Huomaa, että sinun on määritettävä vakiolle literaaliarvo. Et voi käyttää muuttujaa, toista vakiota tai funktiota vakion alustamiseen.Objektit
Set
. Voit luoda uuden instanssin M-Files APIn objektista ja määrittää sen muuttujaan seuraavasti:Dim oTitleSearch
Set oTitleSearch = CreateObject( "MFilesAPI.SearchCondition" )
Objektit ovat komponentteja, joilla on omat ominaisuutensa ja metodinsa. Metodit ovat tietylle objektille kuuluvia funktioita, joita voidaan käyttää objektin kontekstissa. Ominaisuuksia taas käytetään objektin arvojen näyttämiseen tai määrittämiseen. Objektin ominaisuuksissa ja metodeissa käytetään pistenotaatiota:oTitleSearch.Set oTitleExpression, MFConditionTypeEqual, oTitleTypedValueMetodin argumentit, kuten
oTitleExpression
, MFConditionTypeEqual
ja oTitleTypedValue
edellä olevassa esimerkissä, luetellaan metodin jälkeen erotettuna pilkuilla. Parametrit välitetään joko arvona tai viittauksena. Jos metodi käyttää parametria arvona, se kopioi argumenttina välitetyn arvon, ja näin ollen alkuperäinen arvo jää muuttumattomaksi. Jos metodi taas käyttää parametria viittauksena, metodin argumenttiin mahdollisesti aiheuttamat muutokset vaikuttavat myös alkuperäiseen viittaukseen. Jos tarkoitus on käyttää parametrin oletusarvoa, tulisi käyttää arvoa Nothing
.Tehdessäsi komentosarjoja M-Filesiin hyödynnät VBScriptissä käytettävissä olevia objekteja ja ennen kaikkea M-Files APIssa käytettävissä olevia objekteja. Katso tarkat tiedot M-Files API -dokumentaatiosta.
Merkkijonojen yhdistäminen
&
-operaattoria:' 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 & " / " & szCustomerEdellä olevassa esimerkissä muuttujaan
szName
tallennettu tarjouksen otsikko on tulos seuraavien komentosarjojen yhdistämisestä:- merkkijonoliteraali
Proposal #
- muuttujaan
szNumber
tallennettu tarjousnumero - toinen merkkijonoliteraali
/
- asiakkaan nimi, joka on tallennettu
szCustomer
-muuttujaan
VbCrLF
-vakion merkkijonoilla:Err.Raise MFScriptCancel, _ "The document vault already contains an object with the same title." & VbCrLF & "Please choose another title."
Virheiden tuottaminen
Raise
-metodia ja Err
-objektia:Err.Raise MFScriptCancel, "The property """ & szPropertyName & """ must have a value of at least 10 characters."Metodi käyttää virhenumeroa ja kuvausta parametreina. M-Filesin komentosarjoissa käytetään
MFScriptCancel
-muuttujaa, koska se tallentaa M-Filesin virhenumeron.If-lauseet
If
-lauseita käytetään lauseryhmän suorittamiseen, jos If
-lause saa arvon tosi:If Len( szValue ) < 10 Then Err.Raise MFScriptCancel, "The property """ & szPropertyName & """ must have a value of at least 10 characters." End Ifif-lohkon on päätyttävä
End If
-lauseeseen. Kaikki If
- ja End If
-lauseiden välissä olevat lauseet suoritetaan, jos If
- ja Then
-lauseiden välissä oleva ehto saa arvon tosi. Voit käyttää And
-operaattoria määritelläksesi useita ehtoja, joiden kaikkien arvon on oltava tosi if-lohkon suorittamiseksi. Or
-operaattorilla voit määritellä useita operaattoreita, joista yhden on oltava tosi, jotta if-lohko suoritetaan. Voit käyttää ehdon määrittelyyn seuraavia vertailuoperaattoreita:==
tarkistaa, onko kahden operandin arvo sama vai ei: jos on, ehto saa arvon tosi.<>
tarkistaa, onko kahden operandin arvo sama vai ei: jos ei ole, ehto saa arvon tosi.>
tarkistaa, onko vasemmanpuoleisen operandin arvo suurempi kuin oikeanpuoleisen operandin: jos on, ehto saa arvon tosi.<
tarkistaa, onko vasemmanpuoleisen operandin arvo pienempi kuin oikeanpuoleisen operandin: jos on, ehto saa arvon tosi.>=
tarkistaa, onko vasemmanpuoleisen operandin arvo suurempi tai yhtä suuri kuin oikeanpuoleisen operandin: jos on, ehto saa arvon tosi.<=
tarkistaa, onko vasemmanpuoleisen operandin arvo pienempi tai yhtä suuri kuin oikeanpuoleisen operandin: jos on, ehto saa arvon tosi.
If
-lauseen toiseen If
-lauseeseen tai esimerkiksi Else
-lauseeseen sisäkkäiseksi tai luoda komentosarjaan syvemmän haarautumislogiikan käyttämällä ElseIf
-lausetta.Funktiot ja alirutiinit
Sub CloseFile() oMyFile.Close Set oMyFile = Nothing End SubVoit myös määritellä funktion käyttämään useita kertoja koodin osaa, joka palauttaa jonkin arvon:
Function IsOdd( iValue ) If iValue MOD 2 = 0 Then ' Even value. IsOdd = False Else ' Odd value. IsOdd = True End If End FunctionVoit kutsua alirutiinin tai funktion komentosarjastasi yksinkertaisesti viittaamalla siihen nimellä:
Closefile()
IsOdd( 5 )
Hyödyllisiä ohjeita
- M-Files API -dokumentaatio
- Käytettävissä olevat VBScript-muuttujat
M-Files APIn dokumentaatiossa käsitellään kattavasti M-Files APIn objektit, metodit, rajapinnat, ominaisuudet ja luetteloinnit, joita voit hyödyntää VBScript-koodissa. Jälkimmäisessä ohjeessa puolestaan listataan ja selitetään kaikki muuttujat, joilla on ennalta määritelty arvo ja joita voit käyttää VBScript-koodissasi.
Näiden kahden ohjeen lisäksi kannattaa tutustua seuraaviin ulkoisiin sivustoihin:
Esimerkki
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 IfEnsin määritellään muuttujat
szPropertyName
ja szValue
, minkä jälkeen tarkistettavan ominaisuuden ja sen arvon nimi tallennetaan määriteltyihin muuttujiin. Käytämme GetValueAsUnlocalizedText
-metodia (katso lisätietoja
M-Files API -dokumentaatiosta), jotta saamme ominaisuuden arvon lokalisoimattomana tekstinä. Ehtona ominaisuuden arvon vahvistamiselle on, että arvon pituuden on oltava vähintään 10 merkkiä. Tämä ehto arvioidaan If
-lauseessa. Olemme määritelleet If
-lauseen ehdossa, että ominaisuuden pituuden on oltava vähemmän kuin 10 merkkiä, jotta If
-lauseen sisällä oleva lause suoritetaan. Jos ominaisuuden arvossa on 10 merkkiä tai enemmän, If
-koodilohkoa ei suoriteta ja komentosarjan suorittaminen lopetetaan.
If-lohkossa käyttäjälle lähetetään virheilmoitus, jossa sanotaan, että käyttäjän antamassa ominaisuuden arvossa on oltava vähintään 10 merkkiä. Käyttäjän on siis annettava pidempi arvo. Virheilmoituksen näyttämisen jälkeen näkyviin tulee taas metatietokortti, jotta käyttäjä voi muokata virheellistä ominaisuuden arvoa.
Katso täydelliset ohjeet ominaisuuksien arvojen tarkistuksesta VBScriptillä kohdasta Ominaisuuksien arvojen automaattinen tarkistus.