lunes, 11 de julio de 2011

Cómo extender la funcionalidad a las operaciones CRUD

Los métodos CRUD (Crear, Leer, Actualizar y Eliminar) son funcionalidad resuelta de manera automática con las herramientas SFS para todas las entidades de negocio o catálogos de la aplicación.

El beneficio más importante de estos métodos es la capacidad que está más allá de la funcionalidad misma: su capacidad de extensibilidad.

image

image

image

Extendiendo la adición de un registro (Método Create)

Métodos de extensibilidad.

OnCreating Antes de crear el registro
Creación del registro
OnCreated Después de crear el registro

Ejemplo:

image

 #region Extending the Create method
partial void OnCreating(object sender, BusinessRulesEventArgs<Product> e) {
// before creating the record
e.Item.Style = "Simple";
// and the process continues
}
partial void OnCreated(object sender, BusinessRulesEventArgs<Product> e) {
//after creating the record
// By example, sending a notification
SFSdotNet.Framework.Net.Mail.SendMail("mail@mail.com",
"The record has been added",
string.Format("The record {0} has been added", e.Item.Name));

}
#endregion

Extendiendo la actualización de un registro (Método Update)


Métodos de extensibilidad.


OnUpdating Antes de actualizar el registro
Actualización del registro
OnUpdated Después de actualizar el registro


Ejemplo:


image

        
//test
#region Extending the Update method
partial void OnUpdating(object sender, BusinessRulesEventArgs<Product> e) {
// before updating the record
e.Item.ModifiedDate = DateTime.Now; // by example
// and te process continues
}

partial void OnUpdated(object sender, BusinessRulesEventArgs<Product> e)
{
// after updating the record
// By example, sending a notification
SFSdotNet.Framework.Net.Mail.SendMail("mail@mail.com",
"The record has been updated",
string.Format("The record {0} has been updated", e.Item.Name));
}

#endregion

Extendiendo la consulta (Método Get)


Métodos de extensibilidad.


OnGetting Antes de consultar
Consulta
OnTaken Después de consultar (Con los resultados)


Ejemplo:


image

 #region Extending the Get method
partial void OnGetting(object sender, BusinessRulesEventArgs<Product> e) {
// before getting the record
e.FilterExpression = p => p.Class == "X"; // setting the lambda expression
e.FilterExpressionString = @"Class = ""X"" "; // setting the string expression
e.StringIncludes = "ProductReviews,ProductVendors"; // include relations (To many) in the select
//
//// If you need replace the original method by other
// e.Items = Get from other method or from linq to entities query
// e.ReplaceResult = true;



}
partial void OnTaken(object sender, BusinessRulesEventArgs<Product> e)
{
// after get items list
// sum 10.00 value to list price for each item
e.Items.ForEach(p=>p.ListPrice += 10.00m);

}
#endregion

Extendiendo la consulta (Método Delete)


Métodos de extensibilidad.


OnDeleting  Antes de eliminar el registro
Eliminación del registro
OnDeleted Después de eliminar el registro


Ejemplo:


image

 #region Extending the Delete method
partial void OnDeleting(object sender, BusinessRulesEventArgs<Product> e) {
// before deleting the record
if (PurchaseOrderDetailsBR.Instance.GetCount(p => p.Product.ProductID == e.Item.ProductID) > 0) {
throw new Exception("Can not delete the record because it is linked with other data");
}

}
partial void OnDeleted(object sender, BusinessRulesEventArgs<Product> e) {
//after deleting the record
// By example, sending a notification
SFSdotNet.Framework.Net.Mail.SendMail("mail@mail.com",
"The record has been added",
string.Format("The record {0} has been deleted", e.Item.Name));
}
#endregion

Usando los servicios WCF (SFS Tools) desde una aplicación cliente

En este ejemplo usaremos los servicios de WCF (Windows Communication Foundation) creados automáticamente con  SFS Tools desde una aplicación de ejemplo. El objetivo en identificar las diferentes formas de interactuar con las reglas de negocio expuestas a través de la capa de servicios totalmente automatizada.

Crear un proyecto de servicios (WCF) con SFS Tools

Agregar una capa de Windows Communication Foundation a una solución puede significar una tarea que consuma horas de trabajo porque para cada método de la capa de servicio habría que exponer un método (Servicio) en la capa de servicios así como su infraestructura correspondiente (Contratos de mensaje, contrato de servicio, métodos del servicio implementado y los endpoints correspondientes). Pero con SFS Tools hacer esto  no implica prácticamente ningún esfuerzo pues es algo totalmente automatizado.

image

domingo, 26 de junio de 2011

Convertir una lista desplegable en un LookUp

Ya hemos visto como convertir una lista desplegable en autocomplete. Pero en este caso nos enfocaremos al comúnmente conocido LookUp.

image

Con las herramientas SFS es posible convertir cualquier relación entre entidades (Naturales o personalizadas) en una consulta al catálogo para seleccionar dicha relación. Esto es importante y conveniente cuando un simple “dropdownlist” ya no es útil para mostrar una gran cantidad de datos. Además en un Lookup podemos hacer búsquedas tal y como se hace en el mismo catálogo al que pertenece esa relación.

Convertir una lista desplegable en “autocomplete”

El efecto de búsqueda incremental  a los datos es la mejor opción en relaciones donde la cantidad de datos puede ser grande, con las herramientas SFS esto se hace en unos minutos solo configurando un parámetro.

image

Regenerar código del proyecto de reglas de negocio

La capa de reglas de negocio tiene toda la funcionalidad e las operaciones CRUD resueltas, por lo que cada vez que hay cambios en el estructura del modelo es conveniente (Y a veces muy necesario) regenerar el código.

Basta con seleccionar los archivos SFSTemplate1.tt y SFSTemplate2.tt y seleccionar “Run Custom Tool” del menú contextual.

image

Listo!

Columnas no soportadas por ahora

Por ahora existen algunas columnas que no son soportadas.

Columnas XML

En esta caso vemos el ejemplo de la columna “Instructions” de la tabla “ProductModel” de la aplicación de ejemplo AdventureWorks.

sábado, 25 de junio de 2011

Cómo agregar funcionalidad a la interfaz de usuario (Asp.Net MVC)

Introducción

Una de las grandes limitantes de los generadores de código es la imposibilidad de agregar funcionalidad propia a las cosas generadas automáticamente, y si se hace, generalmente pierden la integración al código generado.

Las herramientas SFS son totalmente diferentes a los demás generadores de código en este sentido, ya que permiten un buena integración entre el código generado y el manual.

En este tutorial agregaremos funcionalidad a la interfaz de usuario apoyándonos del framework de javascript: jquery (http://www.jquery.com ).

Esta es una aplicación de ASP.NET MVC, y ASP.NET MVC es altamente dependiente de javascript para adicionar funcionalidad. Aprender lo básico de jquery es mínimo esfuerzo, y el beneficio es grande.

Cómo configurar y extender una entidad

Introducción.

Inicialmente, todo el código que se genera en la solución esta basado en las entidades nativas de Entity Framework, pero es posible crear entidades totalmente personalizadas  y configurar las entidades de Entity Framework agregando propiedades personalizadas (CustomProperties).

A esto, le llamamos: Configuración del modelo y de las entidades.

image

Cómo ocultar los campos

Introducción

Una de las maneras más simples de hacer invisibles o invisibles ciertos campos es por medio de atributos en el modelo, lo cual afectará directamente el código generado.

Para este ejemplo se trabajará con la entidad “Contact”.

Pre-Requisitos

Haber construido la aplicación de ejemplo

Crear el archivo de extensibilidad de la entidad “Contact”.

Regenerar el código de la interface de usuario

Con las herramientas SFS, esta tarea consiste en generar automáticamente el código de las pantallas de la interface de usuario. Es importante resaltar que con las herramientas SFS es posible regenerar código continuamente y mantener la integración de código que el programador pone manualmente.

La tarea de regeneración de código puede ser muy común a  lo largo de la construcción del proyecto.

Validación con RegularExpression

Introducción

Siempre ha sido fácil agregar reglas de validación basadas en expresiones regulares, con SFS tools lo es aún más ya que genera automáticamente el código necesario con solo configurar la regla como una propiedad personalizada.

viernes, 24 de junio de 2011

Cómo personalizar los textos

Introducción

Con SFS Tools, todos los campos soportan localización, por lo que la manera de cambiarlos es por medio de los archivos de recursos, o cualquier otro proveedor de localización que se utilice.

La generación automática de la solución crea todos los archivos de recursos necesarios para cada objeto de negocio y otro necesario para el módulo. Todos los archivos de recursos se encuentran en una carpeta y son fáciles de modificar.

lunes, 20 de junio de 2011