Que buena pregunta y me gustaría escuchar cómo validan ustedes su negocio. 

Validar el negocio no es para menos un tema trivial. A que llamamos validar el negocio? Bien cuando digo validar el negocio, estoy refiriendome a que debemos asegurarnos que estamos trabajando con instancias válidas de nuestras clases del modelo de dominio, es decir que nuestros objetos tengan un estado válido con el que se pueda trabajar. Y a qué me refiero con trabajar? Trabajar con el objeto seria intentar persistirlo, ó enviarlo a otro ambiente por medio de serialización binaria, o también podria ser el caso en el uso de ambientes compartidos de objetos.

Citemos un ejemplo, donde tenemos la entidad Venta, que tiene campos como ser FechaEmision, NroVenta, Total, SubTotal, TotalImpuestos,Notas.

Podríamos validar este objeto de varias maneras: la popular y de la cual no soy partidario, es hacerlo de forma procedural e ir preguntado propiedad a propiedad si es válida cada una. Este enfoque se empieza a complicar si por cada propiedad tengo varias reglas a cumplir, por ejemplo:

  • Tiene que ser mayor a 0 (cero)
  • Tiene que ser menor a 50.
  • La suma de X y de Y tiene que dar igual a él.
  • Debe ser igual que una propiedad de otro objeto, de una clase diferente.

Ahora bien, se imaginan la cantidad de sentencias If solamente para la validación de una propiedad de un objeto.

Una opción más automatizada, es pensar que cada regla es un método, que acepta parámetros para la validación, y que luego, configuramos a que un objeto sea validado por un cierto numero de reglas. Y Cuando deseamos validar un objeto hacemos:

bool resultado = Validator.CheckAll(myOrden);

Lo que sucederia es que CheckAll iría checkeando regla a regla si se cumple, obteniendo el resultado acerca de la validez del objeto. Asi también podremos obtener un detalle sobre cuales reglas se han roto y cuales no.

Este enfoque es al cual le tengo más confianza y es el que profesan frameworks como CSLA.Net de Rockford Lothka, ya maduro y utilizado en diferentes ambientes de producción.

Ahora también el Enterprise Library viene con su framework de Validación para usarlo en el negocio: Validation Enterprise Library.

Ahora, si se dan cuenta, con este enfoque, una vez escritas las reglas, no necesitamos volver a escribirlas, solamente las aplicamos a quienes queremos.

Ahora bien, dicho esto…como lo hacen uds ?

Tagged with:
 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>