Short introduction: in this article OIM integration with
russian popular HR system BOSS HR is discussed.
В данной статье мы обсудим способы интеграции Oracle Identity Manager с
системой управления кадрами БОСС Кадровик. Разработанный в свое время
коннектор для OIM 9.X и БОСС Кадровик (версий под Oracle
и MS SQL
Server). В данной статье вы найдете описание принципов
интеграции, а также исходный код интеграции. Данный коннектор тестировался на
версии OIM 9.1.X, и потребует незначительных изменений при развертывании на OIM 11g, о которых будет
упомянуто в соответствующих местах.
В статье предполагается, что вы знакомы с
принципами работы и основными объектами Oracle Identity Manager версии 9.Х. Для знакомства
с продуктом вы можете захотеть просмотреть соответствующие тренинги – OIM9.X Adm Workshop и OIM9.X Development Workshop.
1. Основные принципы интеграции.
Принципиальная схема интеграции Oracle Identity Manager и
БОСС Кадровик с версией на Oracle приведена на рис. 1.
Рис. 1.
Принципиальная схема интеграции OIM
и БОСС Кадровик (версия на Oracle)
В случае использования версии БОСС Кадровик на
MS SQL Server, схема интеграции будет похожей, но работа пользователей будет
происходить напрямую с БД MS SQL
Server. Кроме того, на стороне MS SQL Server потребуется
создать дополнительный View, так как названия таблиц, используемых коннектором в версиях БОСС
Кадровик для Oracle и MS SQL Server отличаются. Принципиальная схема интеграции OIM и БОСС Кадровик версии
MS SQL Server показана на рис. 2.
Рис. 2.
Принципиальная схема интеграции OIM
и БОСС Кадровик (версия на MS SQL Server)
На стороне БД БОСС Кадровик в соответствующей
схеме создаются следующие VIEW:
-
UOV_PORTAL_EMP – сотрудники предприятия;
-
UOV_PORTAL_EMP_LEAVE – отпуска
сотрудников;
-
PR_EMP_STAT (только для версии на MS SQL Server) – типы
найма на работу.
Для OIM в БД БОСС Кадровик создается отдельный
пользователь,
ему предоставляются права на ранее созданные представления (View) и некоторые таблицы
(см. далее).
Коннектор на периодической основе (задача по
расписанию) обращается к описанным VIEW,
а также к некоторым таблицам БД БОСС Кадровик, на которые
необходимо предварительно назначить права на Select. На основе полученной информации создаются
события реконсилиации в OIM, в результате которых OIM создает / изменяет / блокирует соответствующих пользователей OIM и всех подключенных
систем.
2. События в БОСС Кадровик.
В рассматриваемом коннекторе к БОСС Кадровик отслеживаются
действия, произведенные в системе БОСС Кадровик и создаются
соответствующие события реконсилиации в OIM.
Поддерживаются следующие события в БОСС
Кадровик:
-
прием сотрудника на работу
-
перевод сотрудника на другую должность
-
дополнительный прием сотрудника на работу
(больше одной позиции в рамках организации)
-
увольнение сотрудника в дополнительных
позиций и с основной позиции (фактически - последней, послу чего сотрудник
переходит в состояние "уволен");
-
уход в отпуск;
-
возвращение из отпуска.
Реконсилиация осуществляется задачами
реконсилиации, работающими как в режиме полной реконсилиации, так и частичной.
Полная реконсилиация - рассматриваются все работники, тогда как при частичной
реконсилиации рассматриваются только изменения с момента прохождения последней
реконсилиации. Также поддерживается дополнительный, пользовательский, фильтр.
Для работы коннектора были созданы следующие
дополнительные атрибуты пользователя OIM:
-
Department - департамент пользователя. Может быть с разделителем "." (если
поддерживается иерархия департаментов) и ";", если департаментов
несколько.
-
Position - должность пользователя, с разделителем ";", если должностей
несколько.
-
Employee ID - ID сотрудника в системе BOSS
HR, с разделителем ";", если человек заведен
более чем на одну позицию.
-
BOSS HR Status - статус работы пользователя по каждой позиции.
-
BOSS HR Card ID -
ID личной карты сотрудника в BOSS HR.
Коннектор поддерживает прием одного человека
на несколько позиций в разные подразделения, в этом случае, соответствующие
поля устанавливаются через ";" в одинаковом порядке.
3. Основные сценарии интеграции.
3.1. Прием сотрудника на работу.
В системе BOSS HR создается новая личная карточка сотрудника,
после чего человек переходит в состояние "Кандидаты". После этого
необходимо принять его на работу - создать новый приказ, подписать его и
выполнить. При этом создается новый пользователь в OIM, с атрибутами из BOSS HR.
Пользователь автоматически добавляется в
группы, указанные в Lookup.bosshr.Groups.Departments, Lookup.bosshr.Groups.Positions,
Lookup.bosshr.Groups.Empstats для соответствующих департаментов, позиций и
типов работы.
3.2. Перевод сотрудника на
другую должность.
В системе BOSS HR формируется приказ о переводе сотрудника на
другую должность, приказ подписывается и выполняется. Коннектор отслеживает это
событие, и изменяет департамент и должность пользователя в пользовательских
атрибутах OIM.
Пользователь автоматически добавляется в
группы, указанные в Lookup.bosshr.Groups.Departments,
Lookup.bosshr.Groups.Positions, Lookup.bosshr.Groups.Empstats для
соответствующих департаментов, позиций и типов работы.
3.3.
Дополнительный прием пользователя на работу.
В системе BOSS HR формируется приказ о дополнительном приеме
пользователя на работу, подписывается и выполняется. Коннектор отслеживает
изменение, и добавляет уже созданному пользователю новый департамент, позицию и
т.д. через ";". При это м пользователь автоматически включается в
группы.
3.4. Увольнение
сотрудника.
В системе BOSS HR формируется. подписывается и выполняется
увольнение сотрудника с определенной позиции. Если у данного сотрудника есть
еще позиции, то он просто исключается из соответствуующих групп OIM. Если больше позиций
нет - пользователь переходит в состояние "DISABLED" после исключения из всех групп
OIM.
3.5. Предоставление отпуска.
В системе BOSS HR необходимо зайти в меню "Предоставить
отпуск", создать приказ и выбрать сотрудника. В меню "приказы" -
подписать и выполнить приказ. Система отследит предоставление отпуска и
сотрудник перейдет в статус "Disabled"
OIM на время отпуска с вызовом соответствующей
функциональности (Disable) в целевых системах.
Для целей оптимизации производительности
происходит выборка только сотрудников, находящихся в отпуске сейчас и
сотрудников, которые вышли из отпуска в течение 30 дней. Кроме того, считается,
что при уходе в отпуск с одной позиции (при наличие совмещения) сотруднику
запрещается доступ ко всем системам, даже если у него есть совмещение и он на
другой должности не в отпуске.
Результат выполнения основных сценариев
приведен в таблице 1.
Таблица
1. Основные сценарии интеграции OIM
и БОСС Кадровик
Действие в БОСС Кадровик
|
Результат в OIM
|
Дополнительно
|
Сотрудник принимается на работу в BOSS HR
|
Создается пользователь OIM
|
Пользователь добавляется в группы OIM, соответствующие
департаменту, позиции и типу приема на работу
|
Сотрудник дополнительно принимается на
работу в BOSS HR (по совмещению)
|
Изменяются атрибуты уже существующего
пользователя OIM - Department, Position,
Employee ID, BOSS HR Status (добавляются через
";" соответствующие значения)
|
Пользователь добавляется в группы OIM, соответствующие
департаменту, позиции и типу приема на работу
|
Сотрудник переводится на другую должность (в
другой департамент, на другой типа работы)
|
Изменяются соответствующие атрибуты уже
созданного пользователя OIM
|
Пользователь исключается из групп,
соответствующих старой записи и включается в новые.
|
Изменяются атрибуты личной карточки
сотрудника в BOSS HR
|
Изменяются соответствующие атрибуты уже
созданного пользователя OIM
|
-
|
Сотрудник увольняется с позиции (при этом у
него еще остаются другие позиции)
|
Изменяются соответствующие атрибуты уже
созданного пользователя OIM
|
Пользователь исключается из соответствующих
групп.
|
Сотрудник увольняется с последней позиции.
|
Изменяются соответствующие атрибуты уже
созданного пользователя OIM, пользователь блокируется.
|
Пользователь исключается из соответствующих
групп.
|
Сотрудник уходит в отпуск.
|
Соответствующая учетная запись в OIM блокируется.
|
Пользователь блокируется во всех подключенных
системах, к которым ему был ранее предоставлен доступ.
|
Сотрудник возвращается из отпуска.
|
Соответствующая учетная запись в OIM разблокируется.
|
Пользователь разблокируется во всех
подключенных системах, к которым ему был ранее предоставлен доступ.
|
4. Задачи
реконсилиации.
4.1. BOSS HR Lookup Recon Task
Автоматически создает группы OIM и наполняет коды Lookup Definition (которые
можно при необходимости изменить) соответствий групп OIM и департаментов,
позиций и типов приема на работу BOSS
HR.
Параметры задачи реконсилиации:
-
Lookup Key - код, где будут находиться типы приема на работу пользователя
(Lookup.bosshr.EmpStats);
-
IT Resource - доступ к системе BOSS HR (BOSS HR);
-
Departments Key -
код, где хранятся соответствия групп OIM и департаментов BOSS HR
(Lookup.bosshr.Groups.Departments);
-
Positions Key - код, где хранятся соответствия групп OIM и позиций BOSS HR (Lookup.bosshr.Groups.Positions);
-
Empstat Key - код, где хранятся соответствия групп OIM и типов приема на работу BOSS HR (Lookup.bosshr.Groups.Empstats);
-
Create Groups
(true, false) - создавать ли группы OIM автоматически по
соответствующим наименованиям в репозитории BOSS HR (true).
4.2. BOSS HR Reconciliation Task
Создает события реконсилиации как для режима
доверенного источника данных (Xellerate
User) так и для режима целевой системы (BOSS HR). Работает как в
режиме запроса всех данных, так и в режиме запроса изменений.
Параметры задачи реконсилиации:
-
IT Resource - доступ к системе BOSS HR
(BOSS HR);
-
Resource Object -
наименование объекта ресурса (BOSS HR);
-
Organization Name
- наименование организации по-умолчанию для создаваемых
пользователей (Xellerate Users);
-
User Type - наименование типа пользователей по-умолчанию для создаваемых
потльзователей (End-User);
-
User Role - наименование роли пользователя в OIM по-умолчанию (Full-Time);
-
Just Test - не производить реконсилицаию (только тестирование соединения и
запросов) (false);
-
Maintain Dept
Hierarchy - поддерживать иерархию департаментов (parent.child) (true).
4.3. BOSS HR Leave Reconciliation Task
Управляет блокировкой пользователей на основе
информации об уходе в отпуск и возврате из отпуска. Предлагаемая версия
коннектора поддерживает управление отпусками только для версии под Oracle. Для версии БОСС
Кадровик под MS SQL Server требуется доработка.
4.4. Конфигурация административного доступа
к БОСС Кадровик (конфигурация IT Resource).
IT Resource:
-
Custom Query - пользовательский фильтр (например, L_NAME LIKE '%Абр%') для сотрудников в системе BOSS HR;
-
Database Name - имя БД (Oracle);
-
Driver - JDBC драйвер (oracle.jdbc.driver.OracleDriver);
-
Firm - наименование организации для сотрудников (например, Безенчук и сын);
-
Last Checked - время прохождения последней реконсилиации, если пусто, то выполняется
полная реконсилиация;
-
Password - пароль пользователя БД;
-
URL - JDBC URL для доступа к репозиторию (jdbc:oracle:thin:@server1:1521:boss)
-
UserID - имя пользователя БД, от имени которого выполняются запросы (пользователь с минимально
необходимыми правами);
Schema - схема данных BOSS HR, к которой выполняются запросы.
5. Порядок установки коннектора.
5.1. Создание дополнительных View
в БД БОСС Кадровик.
Создайте VIEW в БД (boss_hr_view_v3_oracle.sql и boss_hr_view_v3_mssql.sql соответственно)
в схеме пользователя БОСС Кадровик.
Например:
sqlplus hr_demo/password@boss
@c:\bosshrconnector\boss_hr_view_v3_oracle.sql.sql
5.2. Создание пользователя для OIM и предоставление прав.
В системе администрирования БОСС Кадровик заведите
нового пользователя для OIM - oim_user, тип - внешний
пользователь, ограничения на доступ - отсутствуют на чтение, группы доступа к
данным – DEFAULT. Назначьте пользователю права в БД (пример для Oracle):
grant resource, connect to oim_user
grant select on schema.UOV_PORTAL_EMP
to oim_user
grant select on schema.hr_dept to oim_user
grant select on schema.pr_emp_stat to oim_user
grant select on schema.ST_APPOINT to oim_user
grant execute on schema.HR_RLS to oim_user
grant select on schema.UOV_PORTAL_EMP_LEAVE to oim_user
5.3. Копирование исполняемого кода
коннектора.
Скопируйте скомпилированный код коннектора bosshr_v3.jar в каталог %OIM%\JavaTasks\
5.4. Загрузите конфигурацию коннектора.
Загрузите через Deployment Manager -> Import XML-конфигурацию
коннектора в следующем порядке:
-
bosshr_obj_udf.xml
– UDF-поля ресурса, требуемые установщиком коннектора,
коннектором не используются, но требуются при дальнейшем импорте конфигурации;
-
bosshr_v1.xml – ресурс BOSS HR, соответствующий процесс и основные задачи реконсилиации, и некоторая
другая конфигурация;
-
bosshr_upg_v2.xml
– дополнительные задачи реконсилиации для отслеживания
отпусков;
-
bosshr_upg_v2.xml – расширение IT Resource для указания типа поддерживаемой версии БОСС Кадровик – Oracle или MS SQL.
6. Настройте IT Resource и задачи реконсилиации.
Установите значения IT Resource типа BOSS HR и задач
реконсилиации (см. выше).
7. Поддержка MS SQL Server.
Для поддержки MS SQL Server необходимо произвести следующие
действия:
7.1. Скопировать файл sqljdbc.jar
(JDBC-драйвер от Microsoft) в каталог ThirdParty (может потребоваться перезагрузка).
7.1.
В IT-ресурсе
BOSS HR появится новое Database Type (значения: Oracle, SQL Server)
7.2.
Создать
в SQL Server два view (см. файл bosshr_view_v3_mssql.sql)
8. Дистрибутивы и исходные тексты.
Дистрибутивы описанного коннектора и исходные
тексты выкладываются "As
Is" и не поддерживаются при смене версий OIM, БОСС Кадровик и т.д.
Вы можете воспользоваться кодом совершенно бесплатно, и также можете его
изменить при необходимости для реализации нужного вам функционала или взять его
части для использования в собственных разработках.
Скомпилированный код коннектора к БОСС
Кадровик, версия 3: bosshr_v3.jar
XML-конфигурация:
Исходные тексты коннектора к БОСС Кадровик: bosshr_v3_src.rar
9. О поддерживаемых версиях OIM. Поддержка OIM 11g.
Описанный способ интеграции тестировался на OIM версии 9.0.Х и 9.1.Х,
и напрямую не применим в OIM 11g. Чтобы запустить коннектор на версии OIM 11g необходимо:
-
отказаться от Entity-адаптеров на
объекте данных USR и заменить их соответствующими плагинами на POST-PROCESS HANDLER или
генерировать недостающие атрибуты задачей реконсилиации, а не Entity-адаптером;
-
отказаться от использования объекта Xellerate User в качестве
"Trusted Resource
Object", вместо этого указать ресурс BOSS HR как "Trusted", изменить
соответствующие маппинги в процессе, и правила реконсилиации;
-
создать профиль реконсилиации (Reconciliation Profile)
Со временем здесь появится отдельная
статься об интеграции OIM
11g и БОСС Кадровик.
p.s. все ваши вопросы и комментарии можете оставлять в комментариях в этом посте.
Опечатка:
ReplyDelete>> Last Checked - сремя прохождения последней реконсилиации, если пусто, то выполняется полная
>> сремя
спасибо, поправил
Delete