Funcionalidad de la capa de negocio

LIBP-0012 (Libro de pautas)

La capa lógica de negocios ocupa un lugar primordial en la construcción de una infraestructura de software que nos permitirá el crecimiento y la extensión de servicios para todas las aplicaciones existentes y futuras.

La definición de los limites de cada capa nos permitirá definir correctamente la colaboración que proveerá cada una de ellas y descubriremos que la capa intermedia es inevitablemente la lógica de negocios. Esto permitirá obtener una infraestructura robusta y lista para la extensión y el crecimiento como proveedora de servicios. Existen tres tipos de componentes de negocio fundamentales:

  • Reglas de negocio, implementan la funcionalidad de negocio del sistema.
  • Entidades de negocio, representan las entidades del sistema.
  • Workflow, implementan procesos de negocio en los cuales participan entidades y lógica de negocio.

Pautas

TítuloCarácter
Elementos que conforman la capa de negocioObligatoria
Reglas de negocioObligatoria
Validaciones de los datosObligatoria
Comunicaciones entre capas. La entidad de negocio.Obligatoria
TransaccionesObligatoria
Tratamiento de excepciones en la capaObligatoria
Encapsular la capa en serviciosObligatoria
Control sobre el uso de serviciosObligatoria

Elementos que conforman la capa de negocio

La capa de negocio consta de la lógica del sistema: reglas de negocio, workflow de negocio, operaciones no persistentes. Todas las operaciones persistentes son delegadas a la capa de acceso de datos.

Reglas de negocio

Toda regla de negocio debe ser implementada en esta capa.

La capa de negocio debería ser vista como un conjunto de servicios expuestos a las capas de presentación de las aplicaciones. La idea es que todos los módulos que requieren una funcionalidad la encuentren en un solo lugar y con una sola versión, no hay réplica de funcionalidades en un formulario u otro lugar.

Validaciones de los datos

Esta capa debe de garantizar que los datos requeridos para procesarla fueron debidamente validados, y solo si es exitosa la validación se puede iniciar el flujo del proceso de negocio.

Para ello debe comprobarse la validez de los datos obtenidos desde la capa de presentación para preservar a la aplicación de ataques de código malintencionado.

Comunicaciones entre capas. La entidad de negocio.

Es muy importante definir la estrategia de comunicación entre las capas. Se crean entidades que carecen de métodos, solo tienen propiedades, campos y posiblemente atributos, que nos pueden servir para almacenar la información como la asociación de las propiedades a las columnas de la base de datos. La comunicación entre capas se establece mediante objetos del modelo.

Transacciones

El manejo de las transacciones debe de realizarse desde la capa de negocio, no desde la capa de acceso a datos. La capa de acceso a datos proporciona los datos pero las transacciones de los mismos se manejan desde la capa de negocio.

Tratamiento de excepciones en la capa

Se debe de establecer un modelo de excepciones que se propague a la capa de presentación. Las excepciones son generadas desde la capa de acceso a datos y deben ser encapsuladas en esta capa para trasladarlas de forma correcta a la capa superior.

Encapsular la capa en servicios

Los servicios de negocio son el “puente” entre un usuario y los servicios de datos. Responden a peticiones del usuario (u otros servicios de negocio) para ejecutar una tarea de este tipo. Cumplen con esto aplicando procedimientos formales y reglas de negocio a los datos relevantes. Cuando los datos necesarios residen en un servidor de bases de datos, garantizan los servicios de datos indispensables para cumplir con la tarea de negocio o aplicar su regla. Esto aísla al usuario de la interacción directa con la base de datos.

Control sobre el uso de servicios

El control de acceso al servicio de negocio debe hacerse en la capa de negocio, puesto que podemos tener distintas capas de presentación. El control se puede hacer a nivel de servicio vertical (cada fachada) o a nivel de método dentro de cada servicio.