30
7. к кортежам из п.5 применяем sql-фильтр, если он определен в процессе,
иначе оставляем без изменений;
8. полученные в п.6 и п.7 кортежи по средствам операции Inner Join образуют
кортежи вида (пользователь, ИС, отображение, ресурс, роль, зона), из
которых формируется ВременнаяТаблица1, описывающая
результирующие политики;
9. генерируем системное событие: «Кластеризация результирующей
политики»;
10. определяем, существуют ли активные правила кластеризации, если да, то
для каждого активного правила применяем следующее (в одной
транзакции):
a) выбираем из ВременнаяТаблица1 записи, удовлетворяющие правилу;
b) если записей нет, то закончить;
c) иначе, в соответствии с правилом создаем таблицу ВременнаяКластер1, в
которую переносим выбранные кортежи;
d) в таблице ВременнаяТаблица1 удаляем кортежи, удовлетворяющие
правилу;
e) если не существует, добавляем ресурс (тип: таблица), иначе получаем его
код;
f) добавляем в ВременнаяТаблица1 строку, которая содержит значения для
тех атрибутов, по которым происходила кластеризация, а для всех
остальных устанавливает значение в null. Для атрибута ресурс
устанавливаем ссылку на код, полученный в п. 10.5.;
g) закрываем транзакцию;
11. генерируем событие: «Замена результирующей политики»;
12. удаляем все существующие таблицы, относящиеся к кластеру
результирующей политики и переименовываем временные;
13. переименовываем временные таблицы в ресурсах;
14. генерируем событие: «Политика обновлена».