openxava / documentación / Automated Business Logic (ABL) con OpenXava

¡Importante!: ABL no se soporta desde OpenXava 5.3. Mira las notas de migración para v5.3.

ABL es un libreria que permite escribir la lógica de negocio declarativamente usando anotaciones, esta lógica se ejecutará automáticamente al confirmar la transacción.
ABL se incluye en OpenXava a partir de v4.5. Para activarlo hay que añadir la siguiente propiedad en el persistence-unit del persistence.xml:
<persistence-unit name="default">
  ...
  <properties>
    ...
    <property name="hibernate.current_session_context_class"
          value="com.autobizlogic.abl.session.LogicThreadLocalSessionContext"/>
  </properties>
</persistence-unit>
Ahora ya podemos usar lógica declarativa, por ejemplo, si tenemos una entidad como esta:
package org.openxava.test.model
 
import javax.persistence.*
import org.openxava.annotations.*
 
@Entity
class Pedido {
 
    @Id
    int numero
 
    @Column(length=40) @Required
    String descripcion
 
    @Required
    BigDecimal precioUnitario
 
    @Required
    int cantidad
 
    BigDecimal importe
 
}
Podemos definir el cálculo para la propiedad importe escribiendo una clase con el sufijo Logic y anotaciones ABL:
package org.openxava.test.businesslogic
 
import com.autobizlogic.abl.annotations.*
 
class PedidoLogic {
 
    @Formula("precioUnitario * cantidad")
    public void deriveImporte() { }
 
}
Sólo con este código cada vez que la base de datos se actualiza ABL recalculará el valor de importe automáticamente.

Aprende más sobre como usar ABL en OpenXava