Руководство оператора коннектора Профиль Сотрудника#
Введение#
Коннектор к АС Профиль Сотрудника предназначен для замены получения сведений о сотрудниках из КИС.
Верхнеуровневое описание алгоритма#
Сообщения из АС Профиль Сотрудника поступают в топики Kafka, откуда их получает IDM, используя Kafka коннектор с помощью задач Task employees import, Task divisions import и Task organization import.
Для каждого топика Kafka создается отдельный ресурс (EMPLOYEE PROFILE, DIVISIONS или ORGANIZATIONS, в зависимости от типа сообщений, которые отправляются в этот топик). Согласно маппингам, после получения сообщений из Kafka, IDM создает на основе сообщений shadow объекты ресурсов, а затем создает (или изменяет) связанные с этими shadow объектами объекты IDM.
Для ресурса EMPLOYEE PROFILE создание объектов IDM происходит в рамках работы задачи Task employees import. Для ресурсов DIVISIONS и ORGANIZATION маппинги прописаны в конфигурации самих ресурсов, и обработка shadow и создание/изменение объектов IDM происходит в рамках работы задач Task divisions import и Task organization import.
Ресурс EMPLOYEE PROFILE#
Импорт сообщений для ресурса EMPLOYEE PROFILE#
Загрузка сообщений в IDM для ресурса EMPLOYEE PROFILE происходит по следующему алгоритму:
Обработка сообщений Kafka выполняется задачей Task employees import. Данная задача содержит 3 activity:
Получение сообщений из Kafka - задача вычитывает сообщения из топика Kafka, на который настроен ресурс EMPLOYEE PROFILE. Для настройки в задаче указывается oid ресурса, с которым она работает (подробнее смотрите в руководстве по администрированию коннектора Профиля Сотрудника).
Обработка shadow - в данной activity задача выполняет следующие действия:
Сопоставление с владельцем - задача проверяет, существует ли в IDM объект типа UserType с архетипом
dc899045-66b7-4176-94dd-d2073d18c859(Employees Records), который совпадает с shadow объектом поemployeeNumberиgivenNameиadditionalName(при этом, еслиname.middleNameв shadow объекте пуст - будет применяться фильтрadditionalName == null, а еслиname.middleNameне пуст - то фильтрация будет по равенствуname.middleNameиadditionalName). Если владельца не существует - создается новый объект IDM (Employees Records), к которому привязывается shadow.Обновление данных - задача обновляет значения атрибутов владельца согласно полученным из shadow изменениям.
Обновление токена - задача обновляет токен последнего запуска, чтобы при следующем запуске начать обработку shadow с того сообщения, на котором остановилась. Задача записывает в токен
timestampпоследнего запуска, и потом обрабатывает только те shadow, у которыхmetadata/modifyTimestampпустой или больше токена задачи. Если токен пустой – в начале обработки shadow он заполняетсяtimestampтекущего запуска задачи. Задача вычитывает по 200 сообщений за один запуск.
Структура маппингов EMPLOYEES PROFILE#
Источник маппингов:
task-employee-profile-import.xml→ activity Process shadows (iterativeScripting)
Маппинги при создании владельца (createOwner)#
# |
Source (Shadow/EmployeeRecord) |
Target (IDM Owner) |
Тип |
|---|---|---|---|
1 |
|
|
employeeRecord |
2 |
|
|
shadow |
3 |
|
|
shadow |
4 |
|
|
shadow |
5 |
|
|
shadow |
6 |
|
|
shadow |
7 |
|
|
employeeRecord |
8 |
|
|
employeeRecord |
9 |
|
|
employeeRecord |
10 |
|
|
shadow (script) |
11 |
|
|
employeeRecord |
12 |
|
|
shadow (script) |
13 |
script: |
|
script |
14 |
script: |
|
script |
15 |
script: |
|
script |
16 |
script: |
|
script |
17 |
|
|
shadow |
Дополнительные маппинги при обновлении владельца (updateOwner)#
# |
Source (Shadow/EmployeeRecord) |
Target (IDM Owner) |
Тип |
|---|---|---|---|
18 |
|
|
shadow |
19 |
|
|
employeeRecord |
20 |
|
|
employeeRecord |
21 |
|
|
employeeRecord |
22 |
|
|
employeeRecord |
23 |
|
|
employeeRecord |
24 |
|
|
employeeRecord |
25 |
|
|
employeeRecord |
26 |
|
|
employeeRecord |
27 |
|
|
employeeRecord |
28 |
|
|
employeeRecord |
29 |
|
|
employeeRecord |
30 |
|
|
employeeRecord |
31 |
|
|
employeeRecord |
32 |
|
|
employeeRecord |
33 |
|
|
shadow |
34 |
|
|
shadow |
35 |
|
|
shadow |
36 |
|
|
shadow |
37 |
|
|
shadow |
38 |
|
|
employeeRecord |
39 |
script: |
|
script |
40 |
|
|
owner |
Обработка удаления (profileDelete = true)#
Действие |
Условие |
|---|---|
Устанавливает |
|
Временный пилотный workaround (CB-организации)#
Source |
Target |
Условие |
|---|---|---|
const |
|
|
const |
|
|
const |
|
|
const |
|
|
Фильтрация shadow-объектов#
Условие |
Результат |
|---|---|
|
Обработка удаления (userStatus = 0) |
|
Skip (игнорируется) |
|
Skip (игнорируется) |
Иначе |
|
Ресурс DIVISIONS#
Импорт сообщений для ресурса DIVISIONS#
Загрузка сообщений в IDM для ресурса DIVISIONS происходит по следующему алгоритму:
Обработка сообщений Kafka выполняется задачей Task divisions import. Данная задача содержит 3 activity:
Получение сообщений из Kafka - задача вычитывает сообщения из топика Kafka, на который настроен ресурс DIVISIONS. Для настройки в задаче указывается oid ресурса, с которым она работает (подробнее смотрите в руководстве по администрированию коннектора Профиля Сотрудника).
Обработка сообщений - в данной activity задача выполняет следующие действия:
Импорт shadow - задача производит импорт полученных сообщений Kafka как shadow объектов ресурсы DIVISIONS, которые затем обрабатываются системой IDM, и, на основе маппингов в ресурсе DIVISION, создает или изменяет объекты IDM (организации OrgType).
Обновление токена - задача обновляет токен последнего запуска, чтобы при следующем запуске начать обработку shadow с того сообщения, на котором остановилась. Задача записывает в токен
timestampпоследнего запуска, и потом обрабатывает только те shadow, у которыхmetadata/modifyTimestampпустой или больше токена задачи. Если токен пустой – в начале обработки shadow он заполняетсяtimestampтекущего запуска задачи. Задача вычитывает по 200 сообщений за один запуск.
Структура маппингов DIVISIONS#
При импорте создаются объекты orgType - организации.
Inbound маппинги#
# |
Атрибут ресурса (ref) |
Source (Kafka JSON) |
Target (IDM path) |
Condition |
|---|---|---|---|---|
1 |
|
|
|
|
2 |
|
|
|
|
3 |
|
|
|
— |
4 |
|
|
|
— |
5 |
|
|
|
— |
6 |
|
|
|
— |
7 |
|
|
|
— |
8 |
|
|
|
— |
9 |
|
|
|
— |
10 |
|
|
|
— |
11 |
|
|
|
— |
12 |
|
|
|
— |
13 |
|
|
|
— |
14 |
|
|
|
— |
15 |
|
|
|
— |
16 |
|
|
|
— |
17 |
|
|
|
— |
18 |
|
|
|
— |
19 |
|
|
|
— |
20 |
|
|
|
— |
21 |
|
|
|
— |
22 |
|
|
|
— |
23 |
|
|
|
— |
24 |
|
|
|
— |
25 |
|
|
|
— |
26 |
|
|
|
— |
27 |
|
|
|
— |
28 |
|
|
|
— |
Synchronization#
Ситуация |
Действие |
|---|---|
|
|
|
|
|
|
Ресурс ORGANIZATION#
Импорт сообщений для ресурса ORGANIZATION#
Загрузка сообщений в IDM для ресурса ORGANIZATION происходит по следующему алгоритму:
Обработка сообщений Kafka выполняется задачей Task organization import. Данная задача содержит 3 activity:
Получение сообщений из Kafka - задача вычитывает сообщения из топика Kafka, на который настроен ресурс ORGANIZATION. Для настройки в задаче указывается oid ресурса, с которым она работает (подробнее смотрите в руководстве по администрированию коннектора Профиля Сотрудника).
Обработка сообщений - в данной activity задача выполняет следующие действия:
Импорт shadow - задача производит импорт полученных сообщений Kafka как shadow объектов ресурсы ORGANIZATION, которые затем обрабатываются системой IDM, и, на основе маппингов в ресурсе ORGANIZATION, создает или изменяет объекты IDM (организации OrgType).
Обновление токена - задача обновляет токен последнего запуска, чтобы при следующем запуске начать обработку shadow с того сообщения, на котором остановилась. Задача записывает в токен
timestampпоследнего запуска, и потом обрабатывает только те shadow, у которыхmetadata/modifyTimestampпустой или больше токена задачи. Если токен пустой – в начале обработки shadow он заполняетсяtimestampтекущего запуска задачи. Задача вычитывает по 200 сообщений за один запуск.
Структура маппингов ORGANIZATION#
При импорте создаются объекты orgType - организации.
Inbound маппинги#
# |
Атрибут ресурса (ref) |
Source (Kafka JSON) |
Target (IDM path) |
Condition |
|---|---|---|---|---|
1 |
|
|
|
|
2 |
|
|
|
|
3 |
|
|
|
— |
4 |
|
|
|
— |
5 |
|
|
|
— |
6 |
|
|
|
— |
7 |
|
|
|
— |
8 |
|
|
|
— |
9 |
|
|
|
— |
10 |
|
|
|
— |
11 |
|
|
|
— |
12 |
|
|
|
— |
13 |
|
|
|
— |
Synchronization#
Ситуация |
Действие |
|---|---|
|
|
|
|
|
|
Просмотр событий аудита#
Для отслеживания выполнения операций используется UI IDM. Чтобы найти нужную запись, следуйте инструкции:
В IDM перейдите на вкладку Аудит.
Добавьте фильтр по ресурсу, указав в поле Ресурс имя требуемого ресурса.
Нажмите кнопку Обновить.
В списке отобразятся все события конкретного ресурса.
Если требуется отобразить конкретные операции (например, создание объекта) - укажите соответствующий тип события в поле Тип события.
Просмотр логов#
Все действия, производимые компонентом IDMX (компонент idmx-engine) логируются, логи записываются в файлы на сервере. IDMX создает файлы журнала в директории /app/idmx-engine/var/log.
Основной файл для работы - idm-engine.log. В него вносятся все логи работы IDMX.
В случае, если нужно получить логи интеграции с AD, то необходимо настроить категорию коннектора Профиль сотрудника.
Настроить категорию можно вручную согласно инструкции ниже.
Перейдите в UI IDM > Система > Логирование.
Перейдите в пункт Class loggers.
Нажмите кнопку + и добавьте категорию
ru.sbertech.idmc.connector.kafka.profile, выставив необходимый уровень логирования. В средах разработки и тестирования рекомендуется использование уровняDEBUG. В PROD-среде рекомендуется использование уровня не нижеINFO.
Дополнительные логгеры для более детальной информации:
# |
Полное имя логгера (класс, от имени пишутся логи) |
За что отвечает (что логирует) |
Механизм |
|---|---|---|---|
1 |
|
Точка входа коннектора: |
ICF |
3 |
|
Построение конфигураций Kafka-клиентов: вывод свойств consumer и adminClient, ошибка загрузки файла дополнительных свойств |
ICF |
4 |
|
Валидация конфигурации коннектора: начало процедуры валидации, успешная валидация |
ICF |
5 |
|
Операция |
ICF |
6 |
|
Формирование ICF-схемы ( |
ICF |
7 |
|
Выполнение скриптов/команд ( |
ICF |
8 |
|
Загрузка JSON-схемы из конфигурационного свойства |
ICF |
9 |
|
Маппинг JSON-сообщений в ICF |
ICF |
10 |
|
Валидация входных параметров (ObjectClass, ResultsHandler): вывод сообщения об ошибке перед бросанием |
ICF |
11 |
|
Kafka producer-callback: успешная публикация сообщения (debug) или ошибка публикации (error). |
SLF4J |