Вышло обновление 1.01 IDM Midpoint DEMO EPPL помимо исправления ошибок были добавлены новые функции:
- Ускоренная реконсиляция на нескольких Node
- Стоп лист для генерации логинов
- Бесконечные логины
Схема тоже чуть-чуть изменилась

Код на Github: IDM Midpoint DEMO EPPL
Docker-образ: Docker Compose IDM Midpoint DEMO EPPL
К знакомству с новыми функциями надо приступать на чистом запуске Docker Compose проделав все этапы до демонстрационной части, но без реконсиляций с HR источником, описанные в Docker Demo IDM Midpoint EPPL c трудоустройствами, назначениями, проектами и LDAP
Версия Midpoint все еще 4.9.1 потому что в 4.9.2-3 Evolveum добавило BUG с filter в момент выбора Person of inrerest в GUI Request access - Fatal Error.
Ускоренная реконсиляция на нескольких Node
Они существуют! И не просто подсоединяются, но и делают что-то это видно по скачку использованию CPU на каждой из Node в Docket Desktop, и по сокращению длительности первой реконсиляции, а так же в самом Midpoint если посмотреть статистику в меню Subtasks...но нажимать на меню Subtasks нельзя сразу ошибка 500, но об этом позже.
Замер времени исполнения task реконсиляции

Ускорение от задействования Multi Node было замечено только при первой реконсиляции, и в тех случаях когда идет массированное создание чего-то в Midpoint с обновлением цепочки связанной Links.
Кстати не все можно повесть на Node вот тут описывается что можно: Work Definition (Types of Activities)
Для создания clustera в файл docker-compose.ymp оставляем только код
midpoint_server_A:
image: evolveum/midpoint:4.9.3-alpine
depends_on:
data_init:
condition: service_completed_successfully
midpoint_data:
condition: service_started
command: [ "/opt/midpoint/bin/midpoint.sh", "container" ]
ports:
- 8080:8080
environment:
- MP_SET_midpoint_repository_jdbcUsername=midpoint
- MP_SET_midpoint_repository_jdbcPassword=db.secret.pw.007
- MP_SET_midpoint_repository_jdbcUrl=jdbc:postgresql://midpoint_data:5432/midpoint
- MP_SET_midpoint_repository_database=postgresql
- MP_SET_midpoint_administrator_initialPassword=Test5ecr3t
- MP_UNSET_midpoint_repository_hibernateHbm2ddl=1
- MP_SET_midpoint_taskManager_clustered=true
- MP_SET_midpoint_nodeId=Alpha
- MP_NO_ENV_COMPAT=1
networks:
- net
volumes:
- midpoint_home:/opt/midpoint/var
- ./DATA/EPPL.xsd:/opt/midpoint/var/schema/EPPL.xsd
- ./DATA/EPPL_HR_DATA.csv:/opt/midpoint/var/info/EPPL_HR_DATA.csv
вместе прежнего midpoint_server:
И множим его сколько вам надо, убирая ports: и меняя
midpoint_server_A:
на
midpoint_server_Т:
a
- MP_SET_midpoint_nodeId=Alpha
на
- MP_SET_midpoint_nodeId=Teta
например
Можно и каждой Node прописать ports: тогда на них тоже можно будет заходить в GUI, и даже можно поднять балансировщик GUI на Nginx.
Запускаем Docker Compose и смотрим в ADMINISTRATION\Nodes\All Nodes.

А вот так они выглядят в Docker Desktop.

Теперь стартуем реконсиляционные таски как описывалось ранее, доходим до 04 и 05 и тут запускаем в соответствующих ресурсах:
04 Recon Employment as User [Multi-node]
05 Recon Position User [Multi-node]
Первый раз на нескольких нодах реконсилируется быстрее чем без Node… второй раз на нескольких Node будет медленнее чем на одной, потому что изменений, а по ним действий особых нет, а деление на корзины занимает гораздо больше времени чем просто вторая реконсиляция.
Зайдем в один из тасков ADMINISTRATION\Resources\All Resources\EPPL 03 POSITIONS USER\05 Recon Position User [Multi-node]\ и тут в Activity\Tailoring заполнено

Почему заполнено так, а не иначе...нет объяснения, скажу только что String segmentation единственная bucket которая работает (оказывает осязаемый эффект на процесс реконсиляции). Вот тут написано что и другие bucket должны бы работать Multi-node, partitioned and stateful tasks но не сегодня, на самых свежих примерах в github'e от Evolveum, 4-х годичной давности, может быть да, но сегодня нет.
Midpoint создает 10 корзин — повезло! У нас 3 ноды 10 корзин отлично, атрибут Number of buckets в String segmentation есть но, не оказывает осязаемый эффект на процесс реконсиляции, какие бы цифорки куда бы не были вставлены. Нам в DEMO опять же повезло что у нас есть атрибут number_eppl а там цифорки…
Этот Task создает на каждую ноду Subtask и там можно посмотреть статистику. Сразу после завершения реконсиляции нажать на 05 Recon Position User [Multi-node]\Subtasks нельзя ошибка 500.
Надо выйти в общий список тасков этого ресурса, туда Midpoint кинул таски для нод.

Вот тут уже можно заходить в каждый Worker и смотреть в Performance\Internal performance что да нода нагружена была!
Замечено что и без всяких настроек, task’и которые запускаются по таймеру кидаются на разные ноды!
Стоп лист для генерации логинов
Заходим под админом в ADMINISTRATION\Roles\nickName Roles тут у нас рукотворная роль.

Заполнено Name и Email, роль есть и Midpoint не может сгенерировать логин FArt.
И действительно заходим в GUI Midpoint под начальников:
Url: http://localhost:8080/midpoint/
Login: 600677
Password: Password123
Выбираем всех подчинённых с фамилией Арт и запрашиваем им роль [1] EMP001002 FR: Employment LDAP Account for Position.
Возвращаемся под админом и смотрим(не сразу Server Task еще не отработал) созданные аккаунты.

Смотрим в Full Name и сразу фильтруем по Art.
Сотрудника с логином FArt нет, есть сотрудник со следующим в переборе логином FLArt!
Бесконечные логины
Это тоже видно на предыдущем кадре. У нас 7 сотрудников с одинаковым ФИО, да еще и коротким, да еще и минус неприличный логин. Так что буквенные логины быстро кончается и начинается подставляться цифра. Единственная доступная нам в моменте цифра это количество итерация в переборе, поэтому 4-ому сотруднику дается цифра 5.
Коротко прочие улучшения
Наследование названия головного департамента из роли Компании. Изменена схема, головному департаменту назначена роль Компания и он получает из неё название головного департамента.

В поисковую панель добавлено personalNumber там где этого сильно не хватало, и галка Dep.Managers only в User Positions.

Перекрашена и переписана ошибка «not authorized for operation», чтобы не пугать сотрудников. Но прочие ошибки остались, но из них убраны подробности.
Картинка при удалении участника проекта из проекта
