Proprio
stamattina sul treno ho finito di scrivere le ultime righe e a pranzo ho fatto
l'upload
Sono state inserite novità interessanti:
La stampa dei messaggi di errore è fatta con un
sistema a provider molto semplice ma comodo. Adesso si possono usare dei
Formatter già predefiniti o scriversene di propri solamente estendendo e
completando un FormatterBase.
Corretto qualcosina sullo ShortCircuit. Serve a
cortocircuitare la valutazione delle regole, alla prima non validata si
interrompe direttamente il processo. In un sistema UserInterfaceLess è
comodo.
Ovviamente ha perfettamente senso anche non usarlo...in una maschera
complessa mi piacerebbe vedere tutti i vari errori e non fermarmi al
primo.
Un sistema di valutazione delle regole con la
definizione di una priorità per ogni regola.
Il contesto di validazione è adesso astratto, e
vengono forniti due sue implementazioni concrete:
ValidationContext (quello
di prima) e
ValidationContextPrePost, che in più ha la possibilità di
definire regole su due liste distinte: PreConditions e PostConditions. In più
accetta il riferimento ad un oggetto ICommand che deve implementare il
meccanismo tipico di un command pattern (Execute, Commit, Rollback).
In questo modo il context applica le regole
PreConditions, lancia la execute del command e applica successivamente le regole
di PostConditions. Tipico in scenari con trigger su database da controllare dopo
l'esecuzione di un comando e applicare successivamente altre regole di
validazione, (ovviamente in contesto transazionale...in modo da
rollbakkkkare)
Qualche considerazione:
Innanzitutto...ho saputo che oltre ai singoli, c'è
anche qualche gruppo di lavoro che usa NRuleValidator come libreria di
riferimento e mi fa molto piacere...
Mi fa piacere anche vedere che nascono i
primi thread sul sito da cui sono venute molte di queste idee appena pubblicate.
Grazie a tutti i vari collaboratori
Prossimi passi:
a
breve: sicuramente integrazione di Unit Test e
degli esempi (che non sono allineati a questa versione), documentazione, e
i due componenti di aggancio alle WinForm e alle WebForm.
un po più a
lungo termine: il Validation Designer fatto con i DSL Tools, che sta prendendo
piede, per quello sfrutterò tantissimo Spring.NET per la parte di
configurazione.
Qui dove scaricare la versione:
http://workspaces.gotdotnet.com/NRuleValidator