Handler - Validator
Validator -käsittelijä käyttää Python -lauseketta yläattribuutin arvon validointiin. Käsittelijä laskee lausekkeen arvon ja näyttää virheen, jos lauseke palauttaa arvon false .
Lisätietoja Pythonista löytyy osoitteesta www.python.org. Pikaopas Pythoniin löytyy osoitteesta www.python.org/doc/tut. Efecte käyttää Python -toteutusta nimeltä Jython. Jython -kohtainen dokumentaatio on saatavilla osoitteessa www.jython.org.
Validator-käsittelijä validoi arvon vain silloin, kun data luodaan tai sitä muokataan käyttöliittymän kautta: tavallisessa tietokortin muokkauksessa tai monimuokkauksessa (monimuokkaus versiosta 4.1 4113 alkaen). Huomaa: Tietokortteja monimuokattaessa validointi voi epäonnistua, koska tietokortin muut kentät eivät täsmää validoinnin kanssa, mikä estää tietokortin tallentamisen. Tarkistusta ei suoriteta, jos lähdedata tuodaan Matrix42:een.
Data katsotaan kelvolliseksi, jos lausekkeen tai skriptin tulos on jokin seuraavista:
- Tyhjä merkkijono (''
tai""). - Muu luku kuin nolla (0).
Jythonkäyttää arvoa 1 totuusarvon True sijaan. - Onnistunut säännöllisen lausekkeen täsmäys.
Huomioi seuraavat virhetapaukset:
- Ei-tyhjä merkkijono tulkitaan virheilmoitukseksi.
- 0 on virheellinen. Se voi olla totuusarvolausekkeen tulos.
-
Noneon virheellinen. Epäonnistunut säännöllisen lausekkeen täsmäys palauttaa arvonNone.
Voit käyttää Validator-käsittelijää esimerkiksi eri attribuuttien arvojen vertailuun niiden yksilöllisten attribuuttikoodien avulla yläattribuutin metadatassa.
Yläattribuutin arvoon voi viitata muuttujalla moniker _current.
Esimerkiksi varmistaaksesi, että yläattribuutti Amount on suurempi kuin Q2, liitä Validator-käsittelijä attribuuttiin Amount ja määritä seuraava Python Validator metadatan expression-kenttään: _current>[attributeCodeQ2] . Tallennettaessa Validator-käsittelijä laskee lausekkeen arvon ja palauttaa käyttäjälle virheen, jos ehto ei täyty.
Seuraavat taulukot sisältävät tietoa Validator-käsittelijän attribuuttiasetuksista ja metadatavaatimuksista. Pakolliset metatiedot on esitetty Required attribute metadata-taulukossa.
Validator-käsittelijän konfigurointi poikkeaa muista käsittelijöistä. Tarvittavat metadatan nimet on annettu valmiiksi, pääkäyttäjän tarvitsee antaa vain arvot.
Taulukko 1. Attribuutin asetukset
| Käsittelijän nimi | Tietotyyppi |
|---|---|
Validator |
Any |
Taulukko 2. Pakollinen attribuutin metadata
| Nimi | Arvo | Kuvaus |
|---|---|---|
expression |
[Python-lauseke] |
Kelvollinen Jos lauseketta ei voida jäsentää, viitatun attribuutin arvo on tyhjä tai tapahtuu tuntematon virhe, validointi menee läpi ja tallennus jatkuu. |
defaultErrortext |
[text_validator_error] | Virheteksti, joka palautetaan käyttäjälle validoinnin epäonnistuessa. Tämä voi olla pelkkää tekstiä tai esitystekstin koodi, joka tulkitaan käyttäjän valitsemalle kielelle. text_validator_error on oletusarvoinen errorcode. |
isScript |
[on | off] |
Kun arvo on Skriptit ovat lausekkeita tehokkaampia ja voivat sisältää useita rivejä, silmukoita ja muita ohjausrakenteita. Ne ovat myös monimutkaisempia määrittää. Katso skriptiesimerkit alla. Jos haluat tulkita lausekkeen skriptinä, valitse tämä asetus. Tulosarvo on asetettava muuttujaan nimeltä Lisää esimerkkikonfiguraatioita on saatavilla alla. HUOM! Tämä toiminnallisuus ei välttämättä ole käytettävissä järjestelmässäsi lisensoinnista riippuen. |
invalidOnError |
[on | off] |
Kun arvo on on, lausekkeen suorittamisessa tapahtuva virhe aiheuttaa sen, että attribuutin arvo tulkitaan virheelliseksi. |
Taulukko 3. Valinnainen attribuutin metadata
| Nimi | Arvo | Kuvaus |
|---|---|---|
alwaysExecute |
true/false |
Jos tämä on true, lauseke suoritetaan (root-oikeuksin) tietokorttia tallennettaessa, kun tällä attribuutilla on arvo. Oletusarvo on false. |
Validator-käsittelijä mahdollistaa myös pääsyn viitattuihin tietokortteihin. Nykyiseen korttiin voi viitata sanalla this, ja muihin tietokortteihin niiden luokka-attribuuttikoodilla, joka on määritetty yläkortissa. Tällä hetkellä tuetut menetelmät viitatuille tietokorteille ovat:
Taulukko 4. Tietokortin käyttömenetelmät
| Menetelmä | Palauttaa | Esimerkki |
|---|---|---|
get(attributecode) |
Yksittäinen arvo, joka löytyy annetun attribuuttikoodin kentästä. Jos attribuutti on moniarvoinen, palautetaan ensimmäinen arvo. Jos attribuutti on viite, palautetaan PythonEntity -objekti. |
this.get("support_person").get("email") |
getAll(attributecode) |
Taulukko, joka sisältää annetun attribuuttikoodin kentästä löytyvät arvot. Jos attribuutti on viite, palautetaan PythonEntity-objektien taulukko. |
max(getAll("product_prices")) |
Skriptiesimerkkejä
Varmista, että nykyisen attribuutin arvo on välillä 50–100:
50<_current<100Tarkista, että nykyisen kentän pituus on tasan 8
len(_current)==8Oletetaan: 1) "car" on yksittäisarvoinen viite _this_ template 2) "limit" kokonaislukuattribuutti of _car_ template 3) Tarkista, että nykyisen attribuutin arvo on pienempi kuin yksittäisen car-viitteen raja-arvo
_current<car.get("car_limit")Päätä virheilmoitus nykyisen attribuutin ja koodilla speed_limit olevan attribuutin perusteella. Vaatii isScript -asetuksen:
if _current>speed_limit:
_result='The value must be smaller than the speed limit!'
elif _current<0:
_result='The value must be larger than zero!'Tarkista, että nykyinen kenttä täsmää annettuun säännölliseen lausekkeeseen, jossa syötteen on oltava muotoa EFECTE-nnnnnn, jossa n on numero:
re.match(r"EFECTE-\d{6}",_current)Tarkista, että nykyinen kenttä täsmää annettuun säännölliseen lausekkeeseen, jossa syötteen on alettava kirjaimella A ja numerolla:
re.match(r"A\d.*",_current)Jos jobstate -attribuutin arvo on Closed ja travel_time tai actual_work_time -attribuutti on tyhjä, näytä virheilmoitus.
errorText = ""
if (this.get("jobstate")=="Closed" and this.get("travel_time")==None):
errorText=errorText + "<br/>Please fill in the 'Travel time' field"
if (this.get("jobstate")=="Closed" and this.get("actual_work_time")==None):
errorText=errorText + "<br/>Please fill in the 'Actual work time' field"
if (errorText != "" ):
_result=errorTextTable of Contents