Бизнес-роли 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();
    }
}