Dominio

Las reglas de negocio en la plataforma Devprime están aisladas en un proyecto llamado “Domain”, siguiendo los principios del Domain-Driven Design (DDD). Esto da como resultado un mantenimiento, desacoplamiento, reutilización y capacidad de prueba simplificados, además de proporcionar previsibilidad en todos los proyectos.

El Dominio es el lugar donde se definen e implementan las características comerciales de la aplicación, lo que garantiza una organización clara y una base sólida para el desarrollo.

Estas reglas de negocio son desarrolladas por el desarrollador de software utilizando C#/Csharp y siguen las prácticas estandarizadas de Domain Driven Design (DDD).

Dominio Devprime

Estandarización de reglas de negocio

La tecnología de la plataforma Devprime estandariza las reglas de negocio siguiendo los principales conceptos del Domain Driven Design (DDD) como Contexto acotado, Raíces agregadas, Objetos de valor, Entidad, Eventos de dominio, Servicios de dominio, Servicios de aplicación, Manejador basado en Devprime Foundation.

Dominio Devprime

Estrategia basada en Domain Driven Design (DDD)

La estrategia de Devprime Domain, además de estandarizar el desarrollo, simplifica la entrada de nuevos desarrolladores en el proyecto y el cambio a otros proyectos, permitiendo la previsibilidad en el desarrollo de software.

Dominio
Mapa de contexto Un mapa que representa la interacción entre contextos empresariales
Contexto delimitado Agrupar reglas de negocio con responsabilidad común en un contexto.
Raíces agregadas Un contexto principal que agrupa un conjunto de reglas de negocio con todas las implementaciones autónomas dentro de él
Objetos de valor Objeto de negocio inmutable y no tiene identificador
Entidad Objeto de negocio con un identificador y la capacidad de ser modificado.
Eventos de dominio Estrategia para comunicar hechos comerciales
Núcleo
Servicios de dominio Implementación de reglas de negocio entre varios agregados
Servicios de aplicaciones El primer nivel de contacto con los objetivos de negocio (servicios agregados o de dominio).
Manipulador Desempeña el papel de puente de comunicación, reaccionando a eventos de dominio e interactuando con interfaces tecnológicas

Definición de tipos basados en Devprime Foundation

El código fuente de las reglas de negocio basadas en la plataforma Devprime se escribe de forma nativa en Domain-Driven Design (DDD), a través de las clases Devprime Foundation. Esto permite validaciones a través de la CLI de Devprime y la ejecución de aceleradores de plataforma Devprime, que implementan comportamientos estándar como la exposición de API, pruebas, repositorios y otras implementaciones.

**Visualización de una clase “Raíz agregada”

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
namespace Domain.Aggregates.Order;
public class Order : AggRoot
{
    public string CustomerName { get; private set; }
    public string CustomerTaxID { get; private set; }
    public IList<Item> Items { get; private set; }
    public double Total { get; private set; }
    public void AddItem(Item item)
    {
        if (item != null && Items != null)
        {
            var myItems = Items.Where(p => p.SKU == item.SKU).FirstOrDefault();
            if (myItems != null)
                myItems.Sum(item.Amount);
            else
                Items.Add(item);
        }
    }
}

Visualización de una clase de entidad agregada

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
namespace Domain.Aggregates.Order;
public class Item : Entity
{
    public string Description { get; private set; }
    public int Amount { get; private set; }
    public string SKU { get; private set; }
    public double Price { get; private set; }
    public double GetSubTotal()
    {
        return Amount * Price;
    }
    public void Sum(int amount)
    {
        Amount += amount;
    }
}

Última modificación January 10, 2024 (967dcac3)