7. Sunucu Taraflı Doğrulama
Doğrulama kurallarını tanımlamak için özel XML isim uzayları (namespaces) kullanmak yerine Gizli Özellik (Hidden Property) desenini kullanıyoruz.
Mekanizma
- "Kural Alanı" (Rule Field), "Gerçek Alanı" (Real Field) hedefleyen bir form özelliği olarak tanımlanır
- İsimlendirme Kuralı: Kural Alanı Kimliği (ID)
rule_{HedefAlanKimliği}şeklinde olmalıdır - Görünürlük: Kullanıcı arayüzünde (UI) gösterilmesini önlemek için Kural Alanı
readable="false"değerine sahip olmalıdır - Depolama: Doğrulama kuralı dizesi,
defaultniteliğinde saklanır
Doğrulama Sözdizimi (Syntax)
Kurallar, XML uyumluluğu için parantezli keyword(args) biçimini kullanır.
Dize (String) Doğrulaması
| Anahtar Kelime | Argümanlar | Örnek | Açıklama |
|---|---|---|---|
| regex | (desen) |
regex(^.+@.+$) |
Düzenli İfadeye (Regular Expression) göre doğrular |
| length | (min-max) |
length(10-200) |
Minimum ve maksimum uzunluk arasında (sınırlar dahil) |
| lengthMin | (min) |
lengthMin(10) |
En az min uzunluk |
| lengthMax | (max) |
lengthMax(200) |
En fazla max uzunluk |
Sayısal Doğrulama
| Anahtar Kelime | Argümanlar | Örnek | Açıklama |
|---|---|---|---|
| number | (min-max) |
number(18-65) |
Minimum ve maksimum değer arasında (sınırlar dahil) |
| numberMin | (min) |
numberMin(18) |
Değer en az min |
| numberMax | (max) |
numberMax(100) |
Değer en fazla max |
Tam Doğrulama Örneği
<userTask id="registration" name="User Registration">
<extensionElements>
<!-- Email Field -->
<activiti:formProperty id="email" name="Email Address" type="string" required="true"/>
<activiti:formProperty id="rule_email" type="string" default="regex(^.+@.+\..+$)" readable="false"/>
<!-- Age Field -->
<activiti:formProperty id="age" name="Age" type="long" required="true"/>
<activiti:formProperty id="rule_age" type="string" default="number(18-65)" readable="false"/>
<!-- Description Field -->
<activiti:formProperty id="bio" name="Short Bio" type="string">
<activiti:value id="type" name="textarea"/>
</activiti:formProperty>
<activiti:formProperty id="rule_bio" type="string" default="length(10-500)" readable="false"/>
</extensionElements>
</userTask>