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