Автоматизированная бизнес-логика (АБЛ) в OpenXava

ABL - это библиотека, позволяющая вам описать вашу бизнес-логику декларативным способом (используя аннотации). Эта логика будет выполнена автоматически при обновлении сущности в базе данных.
АБЛ включена в OpenXava начиная с версии 4.5. Для того, чтобы включить ее, вам следует добавить следующее свойство в persistence unit в файле persistence.xml:
<persistence-unit name="default">
...
<properties>
...
<property name="hibernate.current_session_context_class"
value="com.autobizlogic.abl.session.LogicThreadLocalSessionContext"/>
</properties>
</persistence-unit>
После этого вы можете добавлять декларативную логику, например, если у вас есть сущность подобная следующей:
package org.openxava.test.model
 
import javax.persistence.*
import org.openxava.annotations.*
 
@Entity
class MiniOrder {
 
@Id
int number
 
@Column(length=40) @Required
String description
 
@Required
BigDecimal productPrice
 
@Required
int qtyOrdered
 
BigDecimal amount
 
}
То вы можете описать расчет значения свойства amount, описанного в классе с суффиксом Logic и АБЛ аннотациями:
package org.openxava.test.businesslogic
 
import com.autobizlogic.abl.annotations.*
 
class MiniOrderLogic {
 
@Formula("productPrice * qtyOrdered") // This is an ABL annotations
public void deriveAmount() { }
 
}
Этот код приводит к тому, что каждый раз, когда запись в базе данных будет обновляться, АБЛ будет пересчитывать значение свойства amount автоматически.

Узнайте больше о том, как использовать АБЛ в OpenXava