Бизнес-роли DG¶
Для отслеживания изменений состава бизнес-ролей активов необходимо имплементировать интерфейс com.unidata.dg.business.roles.type.data.BusinessRolesLifecycleListener
.
public interface BusinessRolesLifecycleListener {
/**
* Выполняется перед сохранением бизнес-ролей.
* Может быть использовано для отказа в выполнении операции upsert.
*
* @param ctx the context.
*/
default void before(BusinessRolesUpsertContext ctx) {
}
/**
* Запускается после сохранения бизнес-ролей.
* Может быть использовано для выполнения некоторых дополнительных расчетов.
*
* @param ctx the context
*/
default void after(BusinessRolesUpsertContext ctx) {
}
}
Имплементации должны быть зарегистрированы в com.unidata.dg.business.roles.service.BusinessRolesService
метод void listener(BusinessRolesLifecycleListener listener).
Контекст предоставляет информацию о текущем назначении бизнес-ролей на актив и обновленном составе ролей (методы BusinessRolesUpsertContext.currentAssignment() и BusinessRolesUpsertContext.nextAssignment() соответственно).
Пример реализации:
@Component
public class BusinessRolesLifecycleListenerExample implements BusinessRolesLifecycleListener {
@Autowired
public BusinessRolesLifecycleListenerExample(BusinessRolesService businessRolesService) {
businessRolesService.listener(this);
}
@Override
public void after(BusinessRolesUpsertContext ctx) {
// Получить текущее назначение
BusinessRolesAssignment currentAssignment = ctx.currentAssignment();
// Получить карту текущих назначенных бизнес-ролей с пользователями
Map<String, BusinessRole> currentBusinessRoles = currentAssignment.getBusinessRoles();
// Получить следующее назначение.
BusinessRolesAssignment nextAssignment = ctx.nextAssignment();
// Получить карту следующих назначенных бизнес-ролей с пользователями
Map<String, BusinessRole> nextBusinessRoles = nextAssignment.getBusinessRoles();
}
}