Sunteți pe pagina 1din 50

Lgica de Negocios

Esteban Calabria 2007

Lgica de Negocios
Para organizar el Layer de Negocios
Transaction Script Table Module Domain Module Service Layer Scripting

Conceptos Previos

Glanularidad Interfaces
Coarse Grained
Mtodos con muchos parmetros SOA Distribucin Un procesamiento completo para un servicio

Fine Grained
Mtodos con pocos parmetros Domain Model Contiene un conjunto de operaciones separadas Mas Flexibilidad

Transaction Script

Transaction Script
Organiza la lgica de la aplicacin en procedimientos que resuelven la funcionalidad que la aplicacin requiere

Transaction Script
Es un procedimiento que:
Toma el input de la presentacin Lo procesa y realiza los clculos y validaciones que correspondan Guarda los datos en una base de datos Devuelve un resultado a la presentacin

Transaction Script
Opciones de Implementacin:
Organizar en un conjunto de Mtodos Organizar en un conjunto de Clases.
Clases con Interfaces Coarse-Grained.
Permite distribucin

Utilizando el patrn Command


Fine-Grained

Transaction Script
Coarse-Grained Transaction Script:

interface FacturaScript +AgregarFactura(in Fecha : Date, in Cliente : int, in Vencimiento : Date, in Lista De Precios : int, in ....) : int

Transaction Script
Fine-Grained Transaction Script:

Transaction Script
Problema a Resolver
Como comunico mi capa de Transaction Scrtipts con las otras capas de mi aplicacin

Opciones
ID RecordSets Algn Tipo de Dato Abstracto Iteradores DTO XML

Transaction Script
Ejemplo
Se desea listar las ventas del ultimo perodo Para ello debemos comunicarnos con la capa de la interfaz grafica

ScriptVentas +VentasUltimoPeriodo() : ???

Transaction Script
Opciones
Devolver un RecordSet con las ventas del ultimo perodo Devolver un Iterador a las ventas del ultimo Perodo Devolver una coleccin de DTO Ventas Devuelve un XML que contiene la coleccin de Ventas

Transaction Script
Consecuencias
Ve a la aplicacin como una serie de transacciones Existen varios componentes de negocios. Cada componentes de negocios tienen mtodos que corresponden directamente con la funcionalidad que la aplicacin requiere.

Transaction Script
Consecuencias
Se pueden generar distintos niveles de transaction script para eliminar el cdigo duplicado Son un buen punto para incluir
Manejo de transacciones (strart transaccin / commit) Seguridad

Transaction Script
Ventajas
Es un modelo procedural simple que todos los desarrolladores entienden. Fcil de comprender y rpido de desarrollar para problemas no muy complejos Un procedimiento para cada accin Cada procedimiento maneja la transaccin

Transaction Script
Desventajas:
Es propenso a que aparezca cdigo duplicado Carece de la flexibilidad que poseen otras formas de organizacin. Se dificulta mantener el software (realizar correcciones, agregar funcionalidades) a medida que los requerimientos cambian.

Table Module

Table Module

Table Module
Una instancia que maneja toda la lgica de negocios para todas las filas de una tabla o vista de la base de datos Se ajusta muy bien si el entorno donde trabajamos esta preparado para trabajar con RecordSets como por ejemplo Delphi o .NET.

Table Module

Table Module
Consecuencia
Este patrn representa un punto medio de complejidad entre los otros dos. El diseo se hace ms dependiente a la plataforma que elijamos Se ajusta muy bien con los DataSets de ADO.NET Es ms difcil montar pruebas automaticas y hacer unit testing

Table Module
Esta directamente relacionado con el patrn de Arquitectura Recordset En el grfico podemos apreciar la implementacin de .NET de ese patron mediante la clase DataSet

Domain Module

Domain Module
Una red de objetos interconectados que incorporan tanto los datos como el comportamiento

Domain Module
Temas a tener en cuenta
Mapeo entre los objetos y la base de datos Generacin de Ids. Colecciones Fuertemente tipadas

Domain Module
Temas a tener en cuenta
Mapeo entre los objetos y la base de datos Generacin de Ids. Colecciones Fuertemente tipadas

Domain Module
Patrones Relacionados
Lazy Load Data Mapper Identity Field

Domain Module
Permite aplicar tcnicas y patrones conocido (GOF) para trabajar con objetos.
Creacionales
Abstract Factory Builder. Factory Method Prototype. Singleton

Estructurales
Adapter Bridge Composite Decorator Facade code. Flyweight Proxy

Comportamiento
Command Iterator Mediator Memento Observer State Strategy Template method Visitor

Domain Model
Ideas para organizar domain module
Divisin vertical (en Capas)

Domain Model
Divisin horizontal segn funcionalidad (paquetes)

Domain Module
Desventajas
Requiere mayor preparacin y conocimientos por parte del equipo de desarrollo. No aprovecha la capacidad de determinados entornos para trabajar alrededor de RecordSets

Eleccin de la forma de Organizar la lgica de negocios

Layer de Negocios
Criterios para elegir
Complejidad del problema Perspectiva de cambio del software a futuro Entorno de Desarrollo Equipo de Trabajo

Complejidad del problema

Ejemplo

Layer De Negocios
Se tiene que disear un sistema para 3 clientes distintos Los tres clientes manejan presupuesto Dependiendo ciertas circunstancias los presupuestos se aprueban automticamente Cada cliente tiene un criterio de aprobacin diferente

En mi empresa los presupuestos se aprueban automaticamente si el cliente tiene cuenta corriente y el saldo de la misma es positivo

Juan Perez

En mi empresa si el cierre del ultimo ejercicio fue positivo y se pronostica que no habr inflacin en los proximos 3 meses, el presupuesto se aprueba automaticamente

Pedro Ramirez

Si mercurio se encuentra alineado con jupiter y neptuno y hay luna llena entonces el presupuesto se aprueba directamente

Ernesto Horangel

Ejemplo Con Transaction Script


If ( Cliente=Juan Perez ) { Aprobado = TieneCuentaCorriente(IDcliente) and SaldoPositivo(IDCliente); } Else If ( Cliente=Pedro Ramirez) { () }

Else If (Cliente=Ernesto Horangel) {


()

Ejemplo Con Domain Model

Presupuesto 1

EstrategiaAprobacionAutomatica *

AprobacionJuanPerez

AprobacionPedroRamirez

AprobacionErnestoHorangel

Domain logic vs. Aplication logic

Domain logic vs. Aplication logic


Tipos de Lgica de Negocios
Lgica del dominio del problema (domain logic)
Corresponden a calculos, validaciones, etcque ver puramente con el problema

Lgica de la aplicacin (aplication logic)


Corresponde por ejemplo mandar un mail al responsible cuando se produce una determinada accin

Service Layer

Service Layer

Service Layer
Define una capa con los servicios disponibles a ejecutar la aplicacion y corrdina la respuesta a esos servicios.

Scripting

Scripting
Permitir parametrizar en tiempo de ejecucin la logica de la aplicacin (application logic) mediante scripts que se ejecutan ante determinados eventos del sistema.

Lgica de Negocios
Links
http://articles.techrepublic.com.com/5100-22-5107664.html

S-ar putea să vă placă și