Mar 4, 2011

Интеграция Oracle Identity Manager с БОСС Кадровик / Integration with BOSS HR (trusted mode)


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
Необходимые VIEW для БОСС Кадровик, версия под Oracle: boss_hr_view_v3_oracle.sql
Необходимые VIEW для БОСС Кадровик, версия под MS SQL Server: boss_hr_view_v3_mssql.sql
XML-конфигурация:
-         bosshr_obj_udf.xml
-         bosshr_v1.xml
-         bosshr_upg_v2.xml
-         bosshr_upg_v2.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. все ваши вопросы и комментарии можете оставлять в комментариях в этом посте.

2 comments:

  1. Опечатка:
    >> Last Checked - сремя прохождения последней реконсилиации, если пусто, то выполняется полная
    >> сремя

    ReplyDelete