Introducción
En esta pequeña guía intentaremos dar los pasos a seguir para implementar el EN de cada una de nuestras Entidades de Negocio
ENs
Las ENs están en el proyecto "Negocio", que contiene las ENs y los CADs, y probablemente contendrá también los Componentes de Proceso que se ofrecerán como servicio COM+.
Dentro de este proyecto, tenemos la carpeta "EN", que tiene agrupadas las ENs por las 5 partes principales de la Lógica. Cada una de estas partes tiene su propio Namespace para agrupar cada sección.
Por norma general, los métodos implementados en cada EN devolverán hacia arriba siempre un DTO (o una colección de estos), mientras que las llamadas entre un EN y su CAD si que podrán devolver ENs.
Atributos y Propiedades
Todas los ENs con sus atributos privados y los prototipos de los métodos ya están generados a partir del diagrama de clases de análisis, y ya están subidos al repositorio. Además, cada uno tiene un atributo privado a su CAD correspondiente. Si no lo tiene, habrá que añadírselo.
Siguiendo con el ejemplo de la Entidad Permiso, así quedan sus atributos privados:
#region Atributos
private Int32 id;
private String permiso;
private String descripcion;
private static CADPermiso cadPermiso = new CADPermiso();
#endregionLos pasos a seguir en su implementación son:
- Generar las Propiedades públicas para cada atributo privado.
- Añadimos una propiedad que llamaremos "DTO" que devuelva el DTO correspondiente al EN. De esta manera, nos ahorramos el tener que implementar un conversor EN->DTO, ya que lo hacemos en la misma Propiedad. Hay que tener en cuenta que si tenemos atributos de tipos complejos, tenemos que devolver su DTO, y no el tipo complejo.
Ejemplo:
#region Propiedades
public Int32 Id
{
get { return id; }
set { id = value; }
}
public String Permiso
{
get { return permiso; }
set { permiso = value; }
}
public String Descripcion
{
get { return descripcion; }
set { descripcion = value; }
}
public DTOPermiso DTO
{
get { return new DTOPermiso(id, permiso, descripcion); }
}
#endregionAquí hay que tener cuidado con los atributos de tipo Complejo, ya que hay que comprobar que no sean null antes de acceder a su DTO y pasarlo al constructor del DTO. Por ejemplo, el EN de LOG tiene un atributo "usuario", que es de tipo USUARIO. Al crear la propiedad que devuelve su DTO, hay que devolver el DTO del Usuario, pero si éste es nulo, nos dará un error.
public DTOLOG DTO
{
get
{
if (usuario != null)
return (new DTOLOG(this.id, this.ip, this.infoAdicional, this.tipoOperacion, this.fechaHora, this.usuario.DTO));
else
return (new DTOLOG(this.id, this.ip, this.infoAdicional, this.tipoOperacion, this.fechaHora, null));
}
}Métodos
Los métodos originales se han generado también a partir de los diagramas de clases, con lo que sólo nos queda rellenarlos.
- Los métodos del CRUD (Alta, Baja, Modificación y Load) devuelven un booleano y llaman al CAD para rellenar los propios atributos de la EN.
Ejemplo de un método del CRUD:
public bool alta()
{
bool resultado = false;
try
{
resultado = cadUsuario.alta(this);
}
catch (Exception ex)
{
throw ex;
}
return resultado;
}- Los métodos que devuelven datos, siempre devolverán el DTO de la EN o colecciones de éste. Estós son el método de cargar de datos ("dameUsuario()") y los listados.
Por norma general, siempre tendremos un listado completo, y un listado por cada uno de los tipos complejos que contenga el EN. Por ejemplo, si la clase Usuario tiene un atributo Perfil, tendremos un método "listadoPorPerfil(int perfil)".
Los listados se colocan en la EN del tipo de datos que devuelven. Así, el ejemplo anterior, que devuelve Usuarios, estará en la EN de Usuario.
Ejemplo de métodos que devuelven DTOs:
public static DTOUsuario dameUsuario(String usuario)
{
cUsuario user = null;
user.load(usuario);
return user.DTO;
}
public static List<DTOUsuario> listado()
{
List<DTOUsuario> usuarios = null;
try
{
usuarios = CADUsuario.listado();
}
catch (Exception ex)
{
throw ex;
}
return usuarios;
}