ontimize LOGIC

 

Lógica de negocio transaccional 

Este módulo tiene como finalidad facilitar la implementación en el servidor, de lógica de negocio transaccional avanzada (multi-tabla, encadenada, recursiva,…), utilizando un enfoque declarativo basado en reglas.

Su utilización permite reducir drásticamente el esfuerzo de desarrollo y mantenimiento de las aplicaciones, así como mejorar significativamente el rendimiento y la escalabilidad de las mismas en entornos de producción con grandes volúmenes de datos.

También permite asegurar la integridad de la información, más allá de las simples relaciones de parentesco, rango y tipo definidas en un esquema de base de datos relacional.

logic

Características de ontimize LOGIC


  1. Restricciones

    Expresiones de comparación multi-atributo (columna) y multi-entidad (tabla) que limitan el valor que puede adoptar un atributo, respecto al valor de otros atributos dentro de la misma tupla (fila) o de los valores de los atributos de entidades relacionadas. Este tipo de lógica asegura la integridad de los datos. Por ejemplo, una restricción sería “el límite de crédito de un cliente tiene que ser mayor o igual que su saldo” [Cliente.limiteCredito >= Cliente.saldo].

  2. Agregados (suma, cuenta, max, min…)

    Expresiones de asignación que permiten calcular el valor de un atributo de una entidad como una función de los valores de un atributo de una entidad hija. Por ejemplo: “el saldo de un cliente es la suma de los importes de las facturas que están pendientes de pago” [Cliente.saldo = SUMA (Factura.total) DONDE Factura.pendiente ES verdadero].

  3. Derivaciones (fórmulas)

    Expresiones de asignación multi-atributo y multi-entidad que permiten calcular el valor de un atributo en función del valor de otros atributos de la misma entidad o de entidades relacionadas. Por ejemplo: “el total de la línea de factura es igual al precio del producto por la cantidad” [LineaFactura.total = LineaFactura.precio * LineaFactura.cantidad].

  4. Otras funcionalidades
    • Acciones: llamada a un código Java cuando se cumpla una determinada condición.
    • Soporte para Hibernate/JPA.
    • Análisis de dependencias: las restricciones, agregados, derivaciones y acciones pueden estar encadenadas (como en una hoja de cálculo) y soportan relaciones de tipo padre-hijo o recursivas.
    • Optimización de los cálculos: el motor se encarga de realizar los cálculos solamente cuando es necesario y de forma óptima.
    • Invocación automática e integridad garantizada: el motor no necesita ser invocado por el programador, sino que los cálculos y verificaciones se realizan de forma automática cuando se produce un evento (insertar, modificar, borrar) en las entidades Hibernate.
    • Arquitectura “plug-in”: como la aplicación se desarrolla sin invocar al motor, es posible desarrollar una aplicación sin lógica y después conectarle el motor de lógica.
    • Entidades y reglas dinámicas: en sus últimas versiones Hibernate/JPA soporta tanto entidades estáticas (POJO: Plain Old Java Objects) como dinámicas (Entity Map Mode).
    • Recálculo: permite recalcular los valores afectados por un cambio en las reglas o en situaciones en las cuales se han insertado datos directamente en la base de datos sin pasar por Hibernate (sin generar eventos que pueda capturar el motor de lógica).